diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,7 @@
+# Revision history for ghcjs-dom-javascript
+
+See ghcjs-dom's ChangeLog.md (the ghcjs-dom packages are released together).
+
+## 0.10.0.0
+
+* Regenerated by dom-gen from current specifications; see ghcjs-dom 0.10.0.0.
diff --git a/ghcjs-dom-javascript.cabal b/ghcjs-dom-javascript.cabal
--- a/ghcjs-dom-javascript.cabal
+++ b/ghcjs-dom-javascript.cabal
@@ -1,1237 +1,2927 @@
 cabal-version: 3.6
 name: ghcjs-dom-javascript
-version: 0.9.9.3
-build-type: Simple
-license: MIT
-license-file: LICENSE
-maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
-synopsis: DOM library using JSFFI and GHCJS
-description: Documentent Object Model (DOM) functions that work with
-             GHCJS.
-author: Hamish Mackenzie
-category: Web
-
-Tested-With:
-  GHC == 8.8.1 || == 8.6.5 ||  == 8.4.4 || == 8.2.2 || == 8.0.2 || == 7.10.3,
-  GHCJS == 8.4 || == 8.2
-
-Source-Repository head
-  type:         git
-  location:     https://github.com/ghcjs/ghcjs-dom
-  subdir:       ghcjs-dom-javascript
-
-library
-    build-depends: base <5,
-                   transformers >=0.2 && <0.7,
-                   text >= 0.11.0.6 && < 2.2,
-                   ghcjs-base >=0.8.0.0 && <0.9,
-                   ghc-prim
-
-    default-language: Haskell2010
-
-    if impl(ghcjs)
-        other-extensions: JavaScriptFFI
-        build-depends: ghcjs-prim
-
-    hs-source-dirs: src
-    cpp-options: -DUSE_JAVASCRIPTFFI
-    exposed: True
-    if impl(ghcjs) || arch(javascript)
-        buildable: True
-    else
-        buildable: False
-    js-sources: jsbits/xhr.js
-
-    exposed-modules:
-          GHCJS.DOM
-          GHCJS.DOM.Types
-          GHCJS.DOM.EventM
-          GHCJS.DOM.EventTargetClosures
-          GHCJS.DOM.Internal
-
-          GHCJS.DOM.JSFFI.AudioContext
-          GHCJS.DOM.JSFFI.Database
-          GHCJS.DOM.JSFFI.DOMError
-          GHCJS.DOM.JSFFI.Geolocation
-          GHCJS.DOM.JSFFI.Navigator
-          GHCJS.DOM.JSFFI.NavigatorUserMediaError
-          GHCJS.DOM.JSFFI.PositionError
-          GHCJS.DOM.JSFFI.RTCPeerConnectionError
-          GHCJS.DOM.JSFFI.SpeechGrammar
-          GHCJS.DOM.JSFFI.SpeechRecognition
-          GHCJS.DOM.JSFFI.SpeechRecognitionError
-          GHCJS.DOM.JSFFI.SpeechRecognitionEvent
-          GHCJS.DOM.JSFFI.SQLError
-          GHCJS.DOM.JSFFI.SQLTransaction
-          GHCJS.DOM.JSFFI.Window
-          GHCJS.DOM.JSFFI.XMLHttpRequest
-
-          -- (cd ghcjs-dom-javascript/src/GHCJS/DOM/JSFFI/Generated && ls | sed 's|\(^.*\)\.hs|          GHCJS.DOM.JSFFI.Generated.\1|' | pbcopy)
-          GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
-          GHCJS.DOM.JSFFI.Generated.AbstractWorker
-          GHCJS.DOM.JSFFI.Generated.AnalyserNode
-          GHCJS.DOM.JSFFI.Generated.Animatable
-          GHCJS.DOM.JSFFI.Generated.Animation
-          GHCJS.DOM.JSFFI.Generated.AnimationEvent
-          GHCJS.DOM.JSFFI.Generated.ApplePayError
-          GHCJS.DOM.JSFFI.Generated.ApplePayPaymentAuthorizedEvent
-          GHCJS.DOM.JSFFI.Generated.ApplePayPaymentMethodSelectedEvent
-          GHCJS.DOM.JSFFI.Generated.ApplePaySession
-          GHCJS.DOM.JSFFI.Generated.ApplePayShippingContactSelectedEvent
-          GHCJS.DOM.JSFFI.Generated.ApplePayShippingMethodSelectedEvent
-          GHCJS.DOM.JSFFI.Generated.ApplePayValidateMerchantEvent
-          GHCJS.DOM.JSFFI.Generated.ApplicationCache
-          GHCJS.DOM.JSFFI.Generated.Attr
-          GHCJS.DOM.JSFFI.Generated.AudioBuffer
-          GHCJS.DOM.JSFFI.Generated.AudioBufferCallback
-          GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
-          GHCJS.DOM.JSFFI.Generated.AudioContext
-          GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
-          GHCJS.DOM.JSFFI.Generated.AudioListener
-          GHCJS.DOM.JSFFI.Generated.AudioNode
-          GHCJS.DOM.JSFFI.Generated.AudioParam
-          GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
-          GHCJS.DOM.JSFFI.Generated.AudioTrack
-          GHCJS.DOM.JSFFI.Generated.AudioTrackList
-          GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
-          GHCJS.DOM.JSFFI.Generated.BarProp
-          GHCJS.DOM.JSFFI.Generated.BasicCredential
-          GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
-          GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
-          GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
-          GHCJS.DOM.JSFFI.Generated.Blob
-          GHCJS.DOM.JSFFI.Generated.BlobCallback
-          GHCJS.DOM.JSFFI.Generated.Body
-          GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy
-          GHCJS.DOM.JSFFI.Generated.CSS
-          GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent
-          GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
-          GHCJS.DOM.JSFFI.Generated.CSSImportRule
-          GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
-          GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
-          GHCJS.DOM.JSFFI.Generated.CSSMediaRule
-          GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule
-          GHCJS.DOM.JSFFI.Generated.CSSPageRule
-          GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue
-          GHCJS.DOM.JSFFI.Generated.CSSRule
-          GHCJS.DOM.JSFFI.Generated.CSSRuleList
-          GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
-          GHCJS.DOM.JSFFI.Generated.CSSStyleRule
-          GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
-          GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
-          GHCJS.DOM.JSFFI.Generated.CSSValue
-          GHCJS.DOM.JSFFI.Generated.CSSValueList
-          GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack
-          GHCJS.DOM.JSFFI.Generated.CanvasGradient
-          GHCJS.DOM.JSFFI.Generated.CanvasPath
-          GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
-          GHCJS.DOM.JSFFI.Generated.CharacterData
-          GHCJS.DOM.JSFFI.Generated.ChildNode
-          GHCJS.DOM.JSFFI.Generated.ClipboardEvent
-          GHCJS.DOM.JSFFI.Generated.CloseEvent
-          GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost
-          GHCJS.DOM.JSFFI.Generated.Comment
-          GHCJS.DOM.JSFFI.Generated.CompositionEvent
-          GHCJS.DOM.JSFFI.Generated.ConvolverNode
-          GHCJS.DOM.JSFFI.Generated.Coordinates
-          GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy
-          GHCJS.DOM.JSFFI.Generated.Counter
-          GHCJS.DOM.JSFFI.Generated.Crypto
-          GHCJS.DOM.JSFFI.Generated.CryptoKey
-          GHCJS.DOM.JSFFI.Generated.CustomElementRegistry
-          GHCJS.DOM.JSFFI.Generated.CustomEvent
-          GHCJS.DOM.JSFFI.Generated.DOMError
-          GHCJS.DOM.JSFFI.Generated.DOMException
-          GHCJS.DOM.JSFFI.Generated.DOMImplementation
-          GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
-          GHCJS.DOM.JSFFI.Generated.DOMParser
-          GHCJS.DOM.JSFFI.Generated.DOMPoint
-          GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly
-          GHCJS.DOM.JSFFI.Generated.DOMRect
-          GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly
-          GHCJS.DOM.JSFFI.Generated.DOMStringList
-          GHCJS.DOM.JSFFI.Generated.DOMStringMap
-          GHCJS.DOM.JSFFI.Generated.DOMTokenList
-          GHCJS.DOM.JSFFI.Generated.DataCue
-          GHCJS.DOM.JSFFI.Generated.DataTransfer
-          GHCJS.DOM.JSFFI.Generated.DataTransferItem
-          GHCJS.DOM.JSFFI.Generated.DataTransferItemList
-          GHCJS.DOM.JSFFI.Generated.Database
-          GHCJS.DOM.JSFFI.Generated.DatabaseCallback
-          GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
-          GHCJS.DOM.JSFFI.Generated.DelayNode
-          GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
-          GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
-          GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent
-          GHCJS.DOM.JSFFI.Generated.Document
-          GHCJS.DOM.JSFFI.Generated.DocumentAndElementEventHandlers
-          GHCJS.DOM.JSFFI.Generated.DocumentFragment
-          GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot
-          GHCJS.DOM.JSFFI.Generated.DocumentTimeline
-          GHCJS.DOM.JSFFI.Generated.DocumentType
-          GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
-          GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
-          GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
-          GHCJS.DOM.JSFFI.Generated.EXTsRGB
-          GHCJS.DOM.JSFFI.Generated.Element
-          GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle
-          GHCJS.DOM.JSFFI.Generated.Enums
-          GHCJS.DOM.JSFFI.Generated.ErrorEvent
-          GHCJS.DOM.JSFFI.Generated.Event
-          GHCJS.DOM.JSFFI.Generated.EventListener
-          GHCJS.DOM.JSFFI.Generated.EventSource
-          GHCJS.DOM.JSFFI.Generated.EventTarget
-          GHCJS.DOM.JSFFI.Generated.File
-          GHCJS.DOM.JSFFI.Generated.FileError
-          GHCJS.DOM.JSFFI.Generated.FileException
-          GHCJS.DOM.JSFFI.Generated.FileList
-          GHCJS.DOM.JSFFI.Generated.FileReader
-          GHCJS.DOM.JSFFI.Generated.FileReaderSync
-          GHCJS.DOM.JSFFI.Generated.FocusEvent
-          GHCJS.DOM.JSFFI.Generated.FontFace
-          GHCJS.DOM.JSFFI.Generated.FontFaceSet
-          GHCJS.DOM.JSFFI.Generated.FormData
-          GHCJS.DOM.JSFFI.Generated.GainNode
-          GHCJS.DOM.JSFFI.Generated.Gamepad
-          GHCJS.DOM.JSFFI.Generated.GamepadButton
-          GHCJS.DOM.JSFFI.Generated.GamepadEvent
-          GHCJS.DOM.JSFFI.Generated.Geolocation
-          GHCJS.DOM.JSFFI.Generated.Geoposition
-          GHCJS.DOM.JSFFI.Generated.GlobalCrypto
-          GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers
-          GHCJS.DOM.JSFFI.Generated.GlobalPerformance
-          GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
-          GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
-          GHCJS.DOM.JSFFI.Generated.HTMLAppletElement
-          GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
-          GHCJS.DOM.JSFFI.Generated.HTMLAttachmentElement
-          GHCJS.DOM.JSFFI.Generated.HTMLBRElement
-          GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
-          GHCJS.DOM.JSFFI.Generated.HTMLBodyElement
-          GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
-          GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
-          GHCJS.DOM.JSFFI.Generated.HTMLCollection
-          GHCJS.DOM.JSFFI.Generated.HTMLDListElement
-          GHCJS.DOM.JSFFI.Generated.HTMLDataElement
-          GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
-          GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
-          GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
-          GHCJS.DOM.JSFFI.Generated.HTMLDivElement
-          GHCJS.DOM.JSFFI.Generated.HTMLDocument
-          GHCJS.DOM.JSFFI.Generated.HTMLElement
-          GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
-          GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
-          GHCJS.DOM.JSFFI.Generated.HTMLFontElement
-          GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
-          GHCJS.DOM.JSFFI.Generated.HTMLFormElement
-          GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
-          GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
-          GHCJS.DOM.JSFFI.Generated.HTMLHRElement
-          GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
-          GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
-          GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
-          GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils
-          GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
-          GHCJS.DOM.JSFFI.Generated.HTMLImageElement
-          GHCJS.DOM.JSFFI.Generated.HTMLInputElement
-          GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement
-          GHCJS.DOM.JSFFI.Generated.HTMLLIElement
-          GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
-          GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
-          GHCJS.DOM.JSFFI.Generated.HTMLLinkElement
-          GHCJS.DOM.JSFFI.Generated.HTMLMapElement
-          GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement
-          GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
-          GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
-          GHCJS.DOM.JSFFI.Generated.HTMLMetaElement
-          GHCJS.DOM.JSFFI.Generated.HTMLMeterElement
-          GHCJS.DOM.JSFFI.Generated.HTMLModElement
-          GHCJS.DOM.JSFFI.Generated.HTMLOListElement
-          GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
-          GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
-          GHCJS.DOM.JSFFI.Generated.HTMLOptionElement
-          GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
-          GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
-          GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
-          GHCJS.DOM.JSFFI.Generated.HTMLParamElement
-          GHCJS.DOM.JSFFI.Generated.HTMLPreElement
-          GHCJS.DOM.JSFFI.Generated.HTMLProgressElement
-          GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
-          GHCJS.DOM.JSFFI.Generated.HTMLScriptElement
-          GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
-          GHCJS.DOM.JSFFI.Generated.HTMLSlotElement
-          GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
-          GHCJS.DOM.JSFFI.Generated.HTMLStyleElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTableColElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTableElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTimeElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
-          GHCJS.DOM.JSFFI.Generated.HTMLTrackElement
-          GHCJS.DOM.JSFFI.Generated.HTMLUListElement
-          GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
-          GHCJS.DOM.JSFFI.Generated.HashChangeEvent
-          GHCJS.DOM.JSFFI.Generated.Headers
-          GHCJS.DOM.JSFFI.Generated.History
-          GHCJS.DOM.JSFFI.Generated.IDBCursor
-          GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
-          GHCJS.DOM.JSFFI.Generated.IDBDatabase
-          GHCJS.DOM.JSFFI.Generated.IDBFactory
-          GHCJS.DOM.JSFFI.Generated.IDBIndex
-          GHCJS.DOM.JSFFI.Generated.IDBKeyRange
-          GHCJS.DOM.JSFFI.Generated.IDBObjectStore
-          GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
-          GHCJS.DOM.JSFFI.Generated.IDBRequest
-          GHCJS.DOM.JSFFI.Generated.IDBTransaction
-          GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
-          GHCJS.DOM.JSFFI.Generated.ImageData
-          GHCJS.DOM.JSFFI.Generated.InputEvent
-          GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost
-          GHCJS.DOM.JSFFI.Generated.IntersectionObserver
-          GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback
-          GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry
-          GHCJS.DOM.JSFFI.Generated.KeyboardEvent
-          GHCJS.DOM.JSFFI.Generated.KeyframeEffect
-          GHCJS.DOM.JSFFI.Generated.Location
-          GHCJS.DOM.JSFFI.Generated.MediaController
-          GHCJS.DOM.JSFFI.Generated.MediaControlsHost
-          GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo
-          GHCJS.DOM.JSFFI.Generated.MediaDevices
-          GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
-          GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent
-          GHCJS.DOM.JSFFI.Generated.MediaError
-          GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
-          GHCJS.DOM.JSFFI.Generated.MediaKeySession
-          GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap
-          GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess
-          GHCJS.DOM.JSFFI.Generated.MediaKeys
-          GHCJS.DOM.JSFFI.Generated.MediaList
-          GHCJS.DOM.JSFFI.Generated.MediaQueryList
-          GHCJS.DOM.JSFFI.Generated.MediaQueryListListener
-          GHCJS.DOM.JSFFI.Generated.MediaRemoteControls
-          GHCJS.DOM.JSFFI.Generated.MediaSession
-          GHCJS.DOM.JSFFI.Generated.MediaSource
-          GHCJS.DOM.JSFFI.Generated.MediaStream
-          GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
-          GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
-          GHCJS.DOM.JSFFI.Generated.MediaStreamEvent
-          GHCJS.DOM.JSFFI.Generated.MediaStreamTrack
-          GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
-          GHCJS.DOM.JSFFI.Generated.MessageChannel
-          GHCJS.DOM.JSFFI.Generated.MessageEvent
-          GHCJS.DOM.JSFFI.Generated.MessagePort
-          GHCJS.DOM.JSFFI.Generated.MimeType
-          GHCJS.DOM.JSFFI.Generated.MimeTypeArray
-          GHCJS.DOM.JSFFI.Generated.MouseEvent
-          GHCJS.DOM.JSFFI.Generated.MutationEvent
-          GHCJS.DOM.JSFFI.Generated.MutationObserver
-          GHCJS.DOM.JSFFI.Generated.MutationRecord
-          GHCJS.DOM.JSFFI.Generated.NamedNodeMap
-          GHCJS.DOM.JSFFI.Generated.Navigator
-          GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware
-          GHCJS.DOM.JSFFI.Generated.NavigatorID
-          GHCJS.DOM.JSFFI.Generated.NavigatorLanguage
-          GHCJS.DOM.JSFFI.Generated.NavigatorOnLine
-          GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaError
-          GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback
-          GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback
-          GHCJS.DOM.JSFFI.Generated.Node
-          GHCJS.DOM.JSFFI.Generated.NodeFilter
-          GHCJS.DOM.JSFFI.Generated.NodeIterator
-          GHCJS.DOM.JSFFI.Generated.NodeList
-          GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode
-          GHCJS.DOM.JSFFI.Generated.NonElementParentNode
-          GHCJS.DOM.JSFFI.Generated.Notification
-          GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback
-          GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives
-          GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat
-          GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject
-          GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
-          GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
-          GHCJS.DOM.JSFFI.Generated.OscillatorNode
-          GHCJS.DOM.JSFFI.Generated.OverconstrainedError
-          GHCJS.DOM.JSFFI.Generated.OverconstrainedErrorEvent
-          GHCJS.DOM.JSFFI.Generated.OverflowEvent
-          GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
-          GHCJS.DOM.JSFFI.Generated.PannerNode
-          GHCJS.DOM.JSFFI.Generated.ParentNode
-          GHCJS.DOM.JSFFI.Generated.PasswordCredential
-          GHCJS.DOM.JSFFI.Generated.Path2D
-          GHCJS.DOM.JSFFI.Generated.Performance
-          GHCJS.DOM.JSFFI.Generated.PerformanceEntry
-          GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
-          GHCJS.DOM.JSFFI.Generated.PerformanceObserver
-          GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback
-          GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList
-          GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
-          GHCJS.DOM.JSFFI.Generated.PerformanceTiming
-          GHCJS.DOM.JSFFI.Generated.Plugin
-          GHCJS.DOM.JSFFI.Generated.PluginArray
-          GHCJS.DOM.JSFFI.Generated.PopStateEvent
-          GHCJS.DOM.JSFFI.Generated.PositionCallback
-          GHCJS.DOM.JSFFI.Generated.PositionError
-          GHCJS.DOM.JSFFI.Generated.PositionErrorCallback
-          GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
-          GHCJS.DOM.JSFFI.Generated.ProgressEvent
-          GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent
-          GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement
-          GHCJS.DOM.JSFFI.Generated.RGBColor
-          GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
-          GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
-          GHCJS.DOM.JSFFI.Generated.RTCDataChannel
-          GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
-          GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
-          GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent
-          GHCJS.DOM.JSFFI.Generated.RTCIceTransport
-          GHCJS.DOM.JSFFI.Generated.RTCPeerConnection
-          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent
-          GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver
-          GHCJS.DOM.JSFFI.Generated.RTCRtpSender
-          GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver
-          GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
-          GHCJS.DOM.JSFFI.Generated.RTCTrackEvent
-          GHCJS.DOM.JSFFI.Generated.RadioNodeList
-          GHCJS.DOM.JSFFI.Generated.Range
-          GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController
-          GHCJS.DOM.JSFFI.Generated.ReadableStream
-          GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader
-          GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest
-          GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController
-          GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader
-          GHCJS.DOM.JSFFI.Generated.ReadableStreamSource
-          GHCJS.DOM.JSFFI.Generated.Rect
-          GHCJS.DOM.JSFFI.Generated.Request
-          GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback
-          GHCJS.DOM.JSFFI.Generated.Response
-          GHCJS.DOM.JSFFI.Generated.SQLError
-          GHCJS.DOM.JSFFI.Generated.SQLException
-          GHCJS.DOM.JSFFI.Generated.SQLResultSet
-          GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList
-          GHCJS.DOM.JSFFI.Generated.SQLStatementCallback
-          GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback
-          GHCJS.DOM.JSFFI.Generated.SQLTransaction
-          GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback
-          GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback
-          GHCJS.DOM.JSFFI.Generated.SVGAElement
-          GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement
-          GHCJS.DOM.JSFFI.Generated.SVGAngle
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
-          GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
-          GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
-          GHCJS.DOM.JSFFI.Generated.SVGCircleElement
-          GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
-          GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
-          GHCJS.DOM.JSFFI.Generated.SVGCursorElement
-          GHCJS.DOM.JSFFI.Generated.SVGElement
-          GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
-          GHCJS.DOM.JSFFI.Generated.SVGException
-          GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired
-          GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
-          GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
-          GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
-          GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
-          GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement
-          GHCJS.DOM.JSFFI.Generated.SVGFETileElement
-          GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement
-          GHCJS.DOM.JSFFI.Generated.SVGFilterElement
-          GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
-          GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
-          GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
-          GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement
-          GHCJS.DOM.JSFFI.Generated.SVGGradientElement
-          GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
-          GHCJS.DOM.JSFFI.Generated.SVGImageElement
-          GHCJS.DOM.JSFFI.Generated.SVGLength
-          GHCJS.DOM.JSFFI.Generated.SVGLengthList
-          GHCJS.DOM.JSFFI.Generated.SVGLineElement
-          GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
-          GHCJS.DOM.JSFFI.Generated.SVGMarkerElement
-          GHCJS.DOM.JSFFI.Generated.SVGMaskElement
-          GHCJS.DOM.JSFFI.Generated.SVGMatrix
-          GHCJS.DOM.JSFFI.Generated.SVGNumber
-          GHCJS.DOM.JSFFI.Generated.SVGNumberList
-          GHCJS.DOM.JSFFI.Generated.SVGPathElement
-          GHCJS.DOM.JSFFI.Generated.SVGPathSeg
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegList
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs
-          GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel
-          GHCJS.DOM.JSFFI.Generated.SVGPatternElement
-          GHCJS.DOM.JSFFI.Generated.SVGPoint
-          GHCJS.DOM.JSFFI.Generated.SVGPointList
-          GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
-          GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
-          GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio
-          GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement
-          GHCJS.DOM.JSFFI.Generated.SVGRect
-          GHCJS.DOM.JSFFI.Generated.SVGRectElement
-          GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent
-          GHCJS.DOM.JSFFI.Generated.SVGSVGElement
-          GHCJS.DOM.JSFFI.Generated.SVGScriptElement
-          GHCJS.DOM.JSFFI.Generated.SVGStopElement
-          GHCJS.DOM.JSFFI.Generated.SVGStringList
-          GHCJS.DOM.JSFFI.Generated.SVGStyleElement
-          GHCJS.DOM.JSFFI.Generated.SVGTests
-          GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
-          GHCJS.DOM.JSFFI.Generated.SVGTextPathElement
-          GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
-          GHCJS.DOM.JSFFI.Generated.SVGTransform
-          GHCJS.DOM.JSFFI.Generated.SVGTransformList
-          GHCJS.DOM.JSFFI.Generated.SVGURIReference
-          GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
-          GHCJS.DOM.JSFFI.Generated.SVGUseElement
-          GHCJS.DOM.JSFFI.Generated.SVGViewElement
-          GHCJS.DOM.JSFFI.Generated.SVGViewSpec
-          GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan
-          GHCJS.DOM.JSFFI.Generated.SVGZoomEvent
-          GHCJS.DOM.JSFFI.Generated.Screen
-          GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
-          GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
-          GHCJS.DOM.JSFFI.Generated.Selection
-          GHCJS.DOM.JSFFI.Generated.ShadowRoot
-          GHCJS.DOM.JSFFI.Generated.SiteBoundCredential
-          GHCJS.DOM.JSFFI.Generated.Slotable
-          GHCJS.DOM.JSFFI.Generated.SourceBuffer
-          GHCJS.DOM.JSFFI.Generated.SourceBufferList
-          GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
-          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
-          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
-          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
-          GHCJS.DOM.JSFFI.Generated.StaticRange
-          GHCJS.DOM.JSFFI.Generated.Storage
-          GHCJS.DOM.JSFFI.Generated.StorageErrorCallback
-          GHCJS.DOM.JSFFI.Generated.StorageEvent
-          GHCJS.DOM.JSFFI.Generated.StorageInfo
-          GHCJS.DOM.JSFFI.Generated.StorageQuota
-          GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback
-          GHCJS.DOM.JSFFI.Generated.StorageUsageCallback
-          GHCJS.DOM.JSFFI.Generated.StringCallback
-          GHCJS.DOM.JSFFI.Generated.StyleMedia
-          GHCJS.DOM.JSFFI.Generated.StyleSheet
-          GHCJS.DOM.JSFFI.Generated.StyleSheetList
-          GHCJS.DOM.JSFFI.Generated.SubtleCrypto
-          GHCJS.DOM.JSFFI.Generated.Text
-          GHCJS.DOM.JSFFI.Generated.TextDecoder
-          GHCJS.DOM.JSFFI.Generated.TextEncoder
-          GHCJS.DOM.JSFFI.Generated.TextEvent
-          GHCJS.DOM.JSFFI.Generated.TextMetrics
-          GHCJS.DOM.JSFFI.Generated.TextTrack
-          GHCJS.DOM.JSFFI.Generated.TextTrackCue
-          GHCJS.DOM.JSFFI.Generated.TextTrackCueList
-          GHCJS.DOM.JSFFI.Generated.TextTrackList
-          GHCJS.DOM.JSFFI.Generated.TimeRanges
-          GHCJS.DOM.JSFFI.Generated.Touch
-          GHCJS.DOM.JSFFI.Generated.TouchEvent
-          GHCJS.DOM.JSFFI.Generated.TouchList
-          GHCJS.DOM.JSFFI.Generated.TrackEvent
-          GHCJS.DOM.JSFFI.Generated.TransitionEvent
-          GHCJS.DOM.JSFFI.Generated.TreeWalker
-          GHCJS.DOM.JSFFI.Generated.UIEvent
-          GHCJS.DOM.JSFFI.Generated.URL
-          GHCJS.DOM.JSFFI.Generated.URLSearchParams
-          GHCJS.DOM.JSFFI.Generated.UserMessageHandler
-          GHCJS.DOM.JSFFI.Generated.VTTCue
-          GHCJS.DOM.JSFFI.Generated.VTTRegion
-          GHCJS.DOM.JSFFI.Generated.VTTRegionList
-          GHCJS.DOM.JSFFI.Generated.ValidityState
-          GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
-          GHCJS.DOM.JSFFI.Generated.VideoTrack
-          GHCJS.DOM.JSFFI.Generated.VideoTrackList
-          GHCJS.DOM.JSFFI.Generated.VoidCallback
-          GHCJS.DOM.JSFFI.Generated.WaveShaperNode
-          GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
-          GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
-          GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC
-          GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC
-          GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC
-          GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
-          GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo
-          GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders
-          GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture
-          GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers
-          GHCJS.DOM.JSFFI.Generated.WebGLLoseContext
-          GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
-          GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
-          GHCJS.DOM.JSFFI.Generated.WebGPUBuffer
-          GHCJS.DOM.JSFFI.Generated.WebGPUCommandBuffer
-          GHCJS.DOM.JSFFI.Generated.WebGPUCommandQueue
-          GHCJS.DOM.JSFFI.Generated.WebGPUComputeCommandEncoder
-          GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilState
-          GHCJS.DOM.JSFFI.Generated.WebGPUDrawable
-          GHCJS.DOM.JSFFI.Generated.WebGPUFunction
-          GHCJS.DOM.JSFFI.Generated.WebGPULibrary
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderCommandEncoder
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassAttachmentDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassColorAttachmentDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDepthAttachmentDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineColorAttachmentDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineState
-          GHCJS.DOM.JSFFI.Generated.WebGPURenderingContext
-          GHCJS.DOM.JSFFI.Generated.WebGPUTexture
-          GHCJS.DOM.JSFFI.Generated.WebGPUTextureDescriptor
-          GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent
-          GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
-          GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
-          GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
-          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyError
-          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyMessageEvent
-          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyNeededEvent
-          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeySession
-          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeys
-          GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
-          GHCJS.DOM.JSFFI.Generated.WebKitNamespace
-          GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
-          GHCJS.DOM.JSFFI.Generated.WebKitPoint
-          GHCJS.DOM.JSFFI.Generated.WebKitSubtleCrypto
-          GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
-          GHCJS.DOM.JSFFI.Generated.WebSocket
-          GHCJS.DOM.JSFFI.Generated.WheelEvent
-          GHCJS.DOM.JSFFI.Generated.Window
-          GHCJS.DOM.JSFFI.Generated.WindowEventHandlers
-          GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope
-          GHCJS.DOM.JSFFI.Generated.Worker
-          GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
-          GHCJS.DOM.JSFFI.Generated.WorkerLocation
-          GHCJS.DOM.JSFFI.Generated.WorkerNavigator
-          GHCJS.DOM.JSFFI.Generated.WritableStream
-          GHCJS.DOM.JSFFI.Generated.XMLHttpRequest
-          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget
-          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
-          GHCJS.DOM.JSFFI.Generated.XMLSerializer
-          GHCJS.DOM.JSFFI.Generated.XPathEvaluator
-          GHCJS.DOM.JSFFI.Generated.XPathException
-          GHCJS.DOM.JSFFI.Generated.XPathExpression
-          GHCJS.DOM.JSFFI.Generated.XPathNSResolver
-          GHCJS.DOM.JSFFI.Generated.XPathResult
-          GHCJS.DOM.JSFFI.Generated.XSLTProcessor
-
-    reexported-modules:
-          -- cat ghcjs-dom-javascript/reexported-modules.txt | pbcopy
-          -- Generated by domconv-webkit-jsffi
-            GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays as GHCJS.DOM.ANGLEInstancedArrays
-          , GHCJS.DOM.JSFFI.Generated.AbstractWorker as GHCJS.DOM.AbstractWorker
-          , GHCJS.DOM.JSFFI.Generated.AnalyserNode as GHCJS.DOM.AnalyserNode
-          , GHCJS.DOM.JSFFI.Generated.Animatable as GHCJS.DOM.Animatable
-          , GHCJS.DOM.JSFFI.Generated.Animation as GHCJS.DOM.Animation
-          , GHCJS.DOM.JSFFI.Generated.AnimationEvent as GHCJS.DOM.AnimationEvent
-          , GHCJS.DOM.JSFFI.Generated.ApplePayError as GHCJS.DOM.ApplePayError
-          , GHCJS.DOM.JSFFI.Generated.ApplePayPaymentAuthorizedEvent as GHCJS.DOM.ApplePayPaymentAuthorizedEvent
-          , GHCJS.DOM.JSFFI.Generated.ApplePayPaymentMethodSelectedEvent as GHCJS.DOM.ApplePayPaymentMethodSelectedEvent
-          , GHCJS.DOM.JSFFI.Generated.ApplePaySession as GHCJS.DOM.ApplePaySession
-          , GHCJS.DOM.JSFFI.Generated.ApplePayShippingContactSelectedEvent as GHCJS.DOM.ApplePayShippingContactSelectedEvent
-          , GHCJS.DOM.JSFFI.Generated.ApplePayShippingMethodSelectedEvent as GHCJS.DOM.ApplePayShippingMethodSelectedEvent
-          , GHCJS.DOM.JSFFI.Generated.ApplePayValidateMerchantEvent as GHCJS.DOM.ApplePayValidateMerchantEvent
-          , GHCJS.DOM.JSFFI.Generated.ApplicationCache as GHCJS.DOM.ApplicationCache
-          , GHCJS.DOM.JSFFI.Generated.Attr as GHCJS.DOM.Attr
-          , GHCJS.DOM.JSFFI.Generated.AudioBuffer as GHCJS.DOM.AudioBuffer
-          , GHCJS.DOM.JSFFI.Generated.AudioBufferCallback as GHCJS.DOM.AudioBufferCallback
-          , GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode as GHCJS.DOM.AudioBufferSourceNode
-          , GHCJS.DOM.JSFFI.AudioContext as GHCJS.DOM.AudioContext
-          , GHCJS.DOM.JSFFI.Generated.AudioDestinationNode as GHCJS.DOM.AudioDestinationNode
-          , GHCJS.DOM.JSFFI.Generated.AudioListener as GHCJS.DOM.AudioListener
-          , GHCJS.DOM.JSFFI.Generated.AudioNode as GHCJS.DOM.AudioNode
-          , GHCJS.DOM.JSFFI.Generated.AudioParam as GHCJS.DOM.AudioParam
-          , GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent as GHCJS.DOM.AudioProcessingEvent
-          , GHCJS.DOM.JSFFI.Generated.AudioTrack as GHCJS.DOM.AudioTrack
-          , GHCJS.DOM.JSFFI.Generated.AudioTrackList as GHCJS.DOM.AudioTrackList
-          , GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent as GHCJS.DOM.AutocompleteErrorEvent
-          , GHCJS.DOM.JSFFI.Generated.BarProp as GHCJS.DOM.BarProp
-          , GHCJS.DOM.JSFFI.Generated.BasicCredential as GHCJS.DOM.BasicCredential
-          , GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent as GHCJS.DOM.BeforeLoadEvent
-          , GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent as GHCJS.DOM.BeforeUnloadEvent
-          , GHCJS.DOM.JSFFI.Generated.BiquadFilterNode as GHCJS.DOM.BiquadFilterNode
-          , GHCJS.DOM.JSFFI.Generated.Blob as GHCJS.DOM.Blob
-          , GHCJS.DOM.JSFFI.Generated.BlobCallback as GHCJS.DOM.BlobCallback
-          , GHCJS.DOM.JSFFI.Generated.Body as GHCJS.DOM.Body
-          , GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy as GHCJS.DOM.ByteLengthQueuingStrategy
-          , GHCJS.DOM.JSFFI.Generated.CSS as GHCJS.DOM.CSS
-          , GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent as GHCJS.DOM.CSSFontFaceLoadEvent
-          , GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule as GHCJS.DOM.CSSFontFaceRule
-          , GHCJS.DOM.JSFFI.Generated.CSSImportRule as GHCJS.DOM.CSSImportRule
-          , GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule as GHCJS.DOM.CSSKeyframeRule
-          , GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule as GHCJS.DOM.CSSKeyframesRule
-          , GHCJS.DOM.JSFFI.Generated.CSSMediaRule as GHCJS.DOM.CSSMediaRule
-          , GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule as GHCJS.DOM.CSSNamespaceRule
-          , GHCJS.DOM.JSFFI.Generated.CSSPageRule as GHCJS.DOM.CSSPageRule
-          , GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue as GHCJS.DOM.CSSPrimitiveValue
-          , GHCJS.DOM.JSFFI.Generated.CSSRule as GHCJS.DOM.CSSRule
-          , GHCJS.DOM.JSFFI.Generated.CSSRuleList as GHCJS.DOM.CSSRuleList
-          , GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration as GHCJS.DOM.CSSStyleDeclaration
-          , GHCJS.DOM.JSFFI.Generated.CSSStyleRule as GHCJS.DOM.CSSStyleRule
-          , GHCJS.DOM.JSFFI.Generated.CSSStyleSheet as GHCJS.DOM.CSSStyleSheet
-          , GHCJS.DOM.JSFFI.Generated.CSSSupportsRule as GHCJS.DOM.CSSSupportsRule
-          , GHCJS.DOM.JSFFI.Generated.CSSValue as GHCJS.DOM.CSSValue
-          , GHCJS.DOM.JSFFI.Generated.CSSValueList as GHCJS.DOM.CSSValueList
-          , GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack as GHCJS.DOM.CanvasCaptureMediaStreamTrack
-          , GHCJS.DOM.JSFFI.Generated.CanvasGradient as GHCJS.DOM.CanvasGradient
-          , GHCJS.DOM.JSFFI.Generated.CanvasPath as GHCJS.DOM.CanvasPath
-          , GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D as GHCJS.DOM.CanvasRenderingContext2D
-          , GHCJS.DOM.JSFFI.Generated.CharacterData as GHCJS.DOM.CharacterData
-          , GHCJS.DOM.JSFFI.Generated.ChildNode as GHCJS.DOM.ChildNode
-          , GHCJS.DOM.JSFFI.Generated.ClipboardEvent as GHCJS.DOM.ClipboardEvent
-          , GHCJS.DOM.JSFFI.Generated.CloseEvent as GHCJS.DOM.CloseEvent
-          , GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost as GHCJS.DOM.CommandLineAPIHost
-          , GHCJS.DOM.JSFFI.Generated.Comment as GHCJS.DOM.Comment
-          , GHCJS.DOM.JSFFI.Generated.CompositionEvent as GHCJS.DOM.CompositionEvent
-          , GHCJS.DOM.JSFFI.Generated.ConvolverNode as GHCJS.DOM.ConvolverNode
-          , GHCJS.DOM.JSFFI.Generated.Coordinates as GHCJS.DOM.Coordinates
-          , GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy as GHCJS.DOM.CountQueuingStrategy
-          , GHCJS.DOM.JSFFI.Generated.Counter as GHCJS.DOM.Counter
-          , GHCJS.DOM.JSFFI.Generated.Crypto as GHCJS.DOM.Crypto
-          , GHCJS.DOM.JSFFI.Generated.CryptoKey as GHCJS.DOM.CryptoKey
-          , GHCJS.DOM.JSFFI.Generated.CustomElementRegistry as GHCJS.DOM.CustomElementRegistry
-          , GHCJS.DOM.JSFFI.Generated.CustomEvent as GHCJS.DOM.CustomEvent
-          , GHCJS.DOM.JSFFI.DOMError as GHCJS.DOM.DOMError
-          , GHCJS.DOM.JSFFI.Generated.DOMException as GHCJS.DOM.DOMException
-          , GHCJS.DOM.JSFFI.Generated.DOMImplementation as GHCJS.DOM.DOMImplementation
-          , GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection as GHCJS.DOM.DOMNamedFlowCollection
-          , GHCJS.DOM.JSFFI.Generated.DOMParser as GHCJS.DOM.DOMParser
-          , GHCJS.DOM.JSFFI.Generated.DOMPoint as GHCJS.DOM.DOMPoint
-          , GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly as GHCJS.DOM.DOMPointReadOnly
-          , GHCJS.DOM.JSFFI.Generated.DOMRect as GHCJS.DOM.DOMRect
-          , GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly as GHCJS.DOM.DOMRectReadOnly
-          , GHCJS.DOM.JSFFI.Generated.DOMStringList as GHCJS.DOM.DOMStringList
-          , GHCJS.DOM.JSFFI.Generated.DOMStringMap as GHCJS.DOM.DOMStringMap
-          , GHCJS.DOM.JSFFI.Generated.DOMTokenList as GHCJS.DOM.DOMTokenList
-          , GHCJS.DOM.JSFFI.Generated.DataCue as GHCJS.DOM.DataCue
-          , GHCJS.DOM.JSFFI.Generated.DataTransfer as GHCJS.DOM.DataTransfer
-          , GHCJS.DOM.JSFFI.Generated.DataTransferItem as GHCJS.DOM.DataTransferItem
-          , GHCJS.DOM.JSFFI.Generated.DataTransferItemList as GHCJS.DOM.DataTransferItemList
-          , GHCJS.DOM.JSFFI.Database as GHCJS.DOM.Database
-          , GHCJS.DOM.JSFFI.Generated.DatabaseCallback as GHCJS.DOM.DatabaseCallback
-          , GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope as GHCJS.DOM.DedicatedWorkerGlobalScope
-          , GHCJS.DOM.JSFFI.Generated.DelayNode as GHCJS.DOM.DelayNode
-          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent as GHCJS.DOM.DeviceMotionEvent
-          , GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent as GHCJS.DOM.DeviceOrientationEvent
-          , GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent as GHCJS.DOM.DeviceProximityEvent
-          , GHCJS.DOM.JSFFI.Generated.Document as GHCJS.DOM.Document
-          , GHCJS.DOM.JSFFI.Generated.DocumentAndElementEventHandlers as GHCJS.DOM.DocumentAndElementEventHandlers
-          , GHCJS.DOM.JSFFI.Generated.DocumentFragment as GHCJS.DOM.DocumentFragment
-          , GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot as GHCJS.DOM.DocumentOrShadowRoot
-          , GHCJS.DOM.JSFFI.Generated.DocumentTimeline as GHCJS.DOM.DocumentTimeline
-          , GHCJS.DOM.JSFFI.Generated.DocumentType as GHCJS.DOM.DocumentType
-          , GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode as GHCJS.DOM.DynamicsCompressorNode
-          , GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax as GHCJS.DOM.EXTBlendMinMax
-          , GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic as GHCJS.DOM.EXTTextureFilterAnisotropic
-          , GHCJS.DOM.JSFFI.Generated.EXTsRGB as GHCJS.DOM.EXTsRGB
-          , GHCJS.DOM.JSFFI.Generated.Element as GHCJS.DOM.Element
-          , GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle as GHCJS.DOM.ElementCSSInlineStyle
-          , GHCJS.DOM.JSFFI.Generated.Enums as GHCJS.DOM.Enums
-          , GHCJS.DOM.JSFFI.Generated.ErrorEvent as GHCJS.DOM.ErrorEvent
-          , GHCJS.DOM.JSFFI.Generated.Event as GHCJS.DOM.Event
-          , GHCJS.DOM.JSFFI.Generated.EventListener as GHCJS.DOM.EventListener
-          , GHCJS.DOM.JSFFI.Generated.EventSource as GHCJS.DOM.EventSource
-          , GHCJS.DOM.JSFFI.Generated.EventTarget as GHCJS.DOM.EventTarget
-          , GHCJS.DOM.JSFFI.Generated.File as GHCJS.DOM.File
-          , GHCJS.DOM.JSFFI.Generated.FileError as GHCJS.DOM.FileError
-          , GHCJS.DOM.JSFFI.Generated.FileException as GHCJS.DOM.FileException
-          , GHCJS.DOM.JSFFI.Generated.FileList as GHCJS.DOM.FileList
-          , GHCJS.DOM.JSFFI.Generated.FileReader as GHCJS.DOM.FileReader
-          , GHCJS.DOM.JSFFI.Generated.FileReaderSync as GHCJS.DOM.FileReaderSync
-          , GHCJS.DOM.JSFFI.Generated.FocusEvent as GHCJS.DOM.FocusEvent
-          , GHCJS.DOM.JSFFI.Generated.FontFace as GHCJS.DOM.FontFace
-          , GHCJS.DOM.JSFFI.Generated.FontFaceSet as GHCJS.DOM.FontFaceSet
-          , GHCJS.DOM.JSFFI.Generated.FormData as GHCJS.DOM.FormData
-          , GHCJS.DOM.JSFFI.Generated.GainNode as GHCJS.DOM.GainNode
-          , GHCJS.DOM.JSFFI.Generated.Gamepad as GHCJS.DOM.Gamepad
-          , GHCJS.DOM.JSFFI.Generated.GamepadButton as GHCJS.DOM.GamepadButton
-          , GHCJS.DOM.JSFFI.Generated.GamepadEvent as GHCJS.DOM.GamepadEvent
-          , GHCJS.DOM.JSFFI.Geolocation as GHCJS.DOM.Geolocation
-          , GHCJS.DOM.JSFFI.Generated.Geoposition as GHCJS.DOM.Geoposition
-          , GHCJS.DOM.JSFFI.Generated.GlobalCrypto as GHCJS.DOM.GlobalCrypto
-          , GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers as GHCJS.DOM.GlobalEventHandlers
-          , GHCJS.DOM.JSFFI.Generated.GlobalPerformance as GHCJS.DOM.GlobalPerformance
-          , GHCJS.DOM.JSFFI.Generated.HTMLAllCollection as GHCJS.DOM.HTMLAllCollection
-          , GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement as GHCJS.DOM.HTMLAnchorElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLAppletElement as GHCJS.DOM.HTMLAppletElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLAreaElement as GHCJS.DOM.HTMLAreaElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLAttachmentElement as GHCJS.DOM.HTMLAttachmentElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLBRElement as GHCJS.DOM.HTMLBRElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLBaseElement as GHCJS.DOM.HTMLBaseElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLBodyElement as GHCJS.DOM.HTMLBodyElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLButtonElement as GHCJS.DOM.HTMLButtonElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement as GHCJS.DOM.HTMLCanvasElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLCollection as GHCJS.DOM.HTMLCollection
-          , GHCJS.DOM.JSFFI.Generated.HTMLDListElement as GHCJS.DOM.HTMLDListElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLDataElement as GHCJS.DOM.HTMLDataElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLDataListElement as GHCJS.DOM.HTMLDataListElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement as GHCJS.DOM.HTMLDetailsElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement as GHCJS.DOM.HTMLDirectoryElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLDivElement as GHCJS.DOM.HTMLDivElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLDocument as GHCJS.DOM.HTMLDocument
-          , GHCJS.DOM.JSFFI.Generated.HTMLElement as GHCJS.DOM.HTMLElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement as GHCJS.DOM.HTMLEmbedElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement as GHCJS.DOM.HTMLFieldSetElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLFontElement as GHCJS.DOM.HTMLFontElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection as GHCJS.DOM.HTMLFormControlsCollection
-          , GHCJS.DOM.JSFFI.Generated.HTMLFormElement as GHCJS.DOM.HTMLFormElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLFrameElement as GHCJS.DOM.HTMLFrameElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement as GHCJS.DOM.HTMLFrameSetElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLHRElement as GHCJS.DOM.HTMLHRElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLHeadElement as GHCJS.DOM.HTMLHeadElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement as GHCJS.DOM.HTMLHeadingElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement as GHCJS.DOM.HTMLHtmlElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils as GHCJS.DOM.HTMLHyperlinkElementUtils
-          , GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement as GHCJS.DOM.HTMLIFrameElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLImageElement as GHCJS.DOM.HTMLImageElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLInputElement as GHCJS.DOM.HTMLInputElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement as GHCJS.DOM.HTMLKeygenElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLLIElement as GHCJS.DOM.HTMLLIElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLLabelElement as GHCJS.DOM.HTMLLabelElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLLegendElement as GHCJS.DOM.HTMLLegendElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLLinkElement as GHCJS.DOM.HTMLLinkElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLMapElement as GHCJS.DOM.HTMLMapElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement as GHCJS.DOM.HTMLMarqueeElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLMediaElement as GHCJS.DOM.HTMLMediaElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLMenuElement as GHCJS.DOM.HTMLMenuElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLMetaElement as GHCJS.DOM.HTMLMetaElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLMeterElement as GHCJS.DOM.HTMLMeterElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLModElement as GHCJS.DOM.HTMLModElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLOListElement as GHCJS.DOM.HTMLOListElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLObjectElement as GHCJS.DOM.HTMLObjectElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement as GHCJS.DOM.HTMLOptGroupElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLOptionElement as GHCJS.DOM.HTMLOptionElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection as GHCJS.DOM.HTMLOptionsCollection
-          , GHCJS.DOM.JSFFI.Generated.HTMLOutputElement as GHCJS.DOM.HTMLOutputElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement as GHCJS.DOM.HTMLParagraphElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLParamElement as GHCJS.DOM.HTMLParamElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLPreElement as GHCJS.DOM.HTMLPreElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLProgressElement as GHCJS.DOM.HTMLProgressElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement as GHCJS.DOM.HTMLQuoteElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLScriptElement as GHCJS.DOM.HTMLScriptElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLSelectElement as GHCJS.DOM.HTMLSelectElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLSlotElement as GHCJS.DOM.HTMLSlotElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLSourceElement as GHCJS.DOM.HTMLSourceElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLStyleElement as GHCJS.DOM.HTMLStyleElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement as GHCJS.DOM.HTMLTableCaptionElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement as GHCJS.DOM.HTMLTableCellElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTableColElement as GHCJS.DOM.HTMLTableColElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTableElement as GHCJS.DOM.HTMLTableElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement as GHCJS.DOM.HTMLTableRowElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement as GHCJS.DOM.HTMLTableSectionElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement as GHCJS.DOM.HTMLTemplateElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement as GHCJS.DOM.HTMLTextAreaElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTimeElement as GHCJS.DOM.HTMLTimeElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTitleElement as GHCJS.DOM.HTMLTitleElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLTrackElement as GHCJS.DOM.HTMLTrackElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLUListElement as GHCJS.DOM.HTMLUListElement
-          , GHCJS.DOM.JSFFI.Generated.HTMLVideoElement as GHCJS.DOM.HTMLVideoElement
-          , GHCJS.DOM.JSFFI.Generated.HashChangeEvent as GHCJS.DOM.HashChangeEvent
-          , GHCJS.DOM.JSFFI.Generated.Headers as GHCJS.DOM.Headers
-          , GHCJS.DOM.JSFFI.Generated.History as GHCJS.DOM.History
-          , GHCJS.DOM.JSFFI.Generated.IDBCursor as GHCJS.DOM.IDBCursor
-          , GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue as GHCJS.DOM.IDBCursorWithValue
-          , GHCJS.DOM.JSFFI.Generated.IDBDatabase as GHCJS.DOM.IDBDatabase
-          , GHCJS.DOM.JSFFI.Generated.IDBFactory as GHCJS.DOM.IDBFactory
-          , GHCJS.DOM.JSFFI.Generated.IDBIndex as GHCJS.DOM.IDBIndex
-          , GHCJS.DOM.JSFFI.Generated.IDBKeyRange as GHCJS.DOM.IDBKeyRange
-          , GHCJS.DOM.JSFFI.Generated.IDBObjectStore as GHCJS.DOM.IDBObjectStore
-          , GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest as GHCJS.DOM.IDBOpenDBRequest
-          , GHCJS.DOM.JSFFI.Generated.IDBRequest as GHCJS.DOM.IDBRequest
-          , GHCJS.DOM.JSFFI.Generated.IDBTransaction as GHCJS.DOM.IDBTransaction
-          , GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent as GHCJS.DOM.IDBVersionChangeEvent
-          , GHCJS.DOM.JSFFI.Generated.ImageData as GHCJS.DOM.ImageData
-          , GHCJS.DOM.JSFFI.Generated.InputEvent as GHCJS.DOM.InputEvent
-          , GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost as GHCJS.DOM.InspectorFrontendHost
-          , GHCJS.DOM.JSFFI.Generated.IntersectionObserver as GHCJS.DOM.IntersectionObserver
-          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback as GHCJS.DOM.IntersectionObserverCallback
-          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry as GHCJS.DOM.IntersectionObserverEntry
-          , GHCJS.DOM.JSFFI.Generated.KeyboardEvent as GHCJS.DOM.KeyboardEvent
-          , GHCJS.DOM.JSFFI.Generated.KeyframeEffect as GHCJS.DOM.KeyframeEffect
-          , GHCJS.DOM.JSFFI.Generated.Location as GHCJS.DOM.Location
-          , GHCJS.DOM.JSFFI.Generated.MediaController as GHCJS.DOM.MediaController
-          , GHCJS.DOM.JSFFI.Generated.MediaControlsHost as GHCJS.DOM.MediaControlsHost
-          , GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo as GHCJS.DOM.MediaDeviceInfo
-          , GHCJS.DOM.JSFFI.Generated.MediaDevices as GHCJS.DOM.MediaDevices
-          , GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode as GHCJS.DOM.MediaElementAudioSourceNode
-          , GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent as GHCJS.DOM.MediaEncryptedEvent
-          , GHCJS.DOM.JSFFI.Generated.MediaError as GHCJS.DOM.MediaError
-          , GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent as GHCJS.DOM.MediaKeyMessageEvent
-          , GHCJS.DOM.JSFFI.Generated.MediaKeySession as GHCJS.DOM.MediaKeySession
-          , GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap as GHCJS.DOM.MediaKeyStatusMap
-          , GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess as GHCJS.DOM.MediaKeySystemAccess
-          , GHCJS.DOM.JSFFI.Generated.MediaKeys as GHCJS.DOM.MediaKeys
-          , GHCJS.DOM.JSFFI.Generated.MediaList as GHCJS.DOM.MediaList
-          , GHCJS.DOM.JSFFI.Generated.MediaQueryList as GHCJS.DOM.MediaQueryList
-          , GHCJS.DOM.JSFFI.Generated.MediaQueryListListener as GHCJS.DOM.MediaQueryListListener
-          , GHCJS.DOM.JSFFI.Generated.MediaRemoteControls as GHCJS.DOM.MediaRemoteControls
-          , GHCJS.DOM.JSFFI.Generated.MediaSession as GHCJS.DOM.MediaSession
-          , GHCJS.DOM.JSFFI.Generated.MediaSource as GHCJS.DOM.MediaSource
-          , GHCJS.DOM.JSFFI.Generated.MediaStream as GHCJS.DOM.MediaStream
-          , GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode as GHCJS.DOM.MediaStreamAudioDestinationNode
-          , GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode as GHCJS.DOM.MediaStreamAudioSourceNode
-          , GHCJS.DOM.JSFFI.Generated.MediaStreamEvent as GHCJS.DOM.MediaStreamEvent
-          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrack as GHCJS.DOM.MediaStreamTrack
-          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent as GHCJS.DOM.MediaStreamTrackEvent
-          , GHCJS.DOM.JSFFI.Generated.MessageChannel as GHCJS.DOM.MessageChannel
-          , GHCJS.DOM.JSFFI.Generated.MessageEvent as GHCJS.DOM.MessageEvent
-          , GHCJS.DOM.JSFFI.Generated.MessagePort as GHCJS.DOM.MessagePort
-          , GHCJS.DOM.JSFFI.Generated.MimeType as GHCJS.DOM.MimeType
-          , GHCJS.DOM.JSFFI.Generated.MimeTypeArray as GHCJS.DOM.MimeTypeArray
-          , GHCJS.DOM.JSFFI.Generated.MouseEvent as GHCJS.DOM.MouseEvent
-          , GHCJS.DOM.JSFFI.Generated.MutationEvent as GHCJS.DOM.MutationEvent
-          , GHCJS.DOM.JSFFI.Generated.MutationObserver as GHCJS.DOM.MutationObserver
-          , GHCJS.DOM.JSFFI.Generated.MutationRecord as GHCJS.DOM.MutationRecord
-          , GHCJS.DOM.JSFFI.Generated.NamedNodeMap as GHCJS.DOM.NamedNodeMap
-          , GHCJS.DOM.JSFFI.Navigator as GHCJS.DOM.Navigator
-          , GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware as GHCJS.DOM.NavigatorConcurrentHardware
-          , GHCJS.DOM.JSFFI.Generated.NavigatorID as GHCJS.DOM.NavigatorID
-          , GHCJS.DOM.JSFFI.Generated.NavigatorLanguage as GHCJS.DOM.NavigatorLanguage
-          , GHCJS.DOM.JSFFI.Generated.NavigatorOnLine as GHCJS.DOM.NavigatorOnLine
-          , GHCJS.DOM.JSFFI.NavigatorUserMediaError as GHCJS.DOM.NavigatorUserMediaError
-          , GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback as GHCJS.DOM.NavigatorUserMediaErrorCallback
-          , GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback as GHCJS.DOM.NavigatorUserMediaSuccessCallback
-          , GHCJS.DOM.JSFFI.Generated.Node as GHCJS.DOM.Node
-          , GHCJS.DOM.JSFFI.Generated.NodeFilter as GHCJS.DOM.NodeFilter
-          , GHCJS.DOM.JSFFI.Generated.NodeIterator as GHCJS.DOM.NodeIterator
-          , GHCJS.DOM.JSFFI.Generated.NodeList as GHCJS.DOM.NodeList
-          , GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode as GHCJS.DOM.NonDocumentTypeChildNode
-          , GHCJS.DOM.JSFFI.Generated.NonElementParentNode as GHCJS.DOM.NonElementParentNode
-          , GHCJS.DOM.JSFFI.Generated.Notification as GHCJS.DOM.Notification
-          , GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback as GHCJS.DOM.NotificationPermissionCallback
-          , GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives as GHCJS.DOM.OESStandardDerivatives
-          , GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat as GHCJS.DOM.OESTextureHalfFloat
-          , GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject as GHCJS.DOM.OESVertexArrayObject
-          , GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent as GHCJS.DOM.OfflineAudioCompletionEvent
-          , GHCJS.DOM.JSFFI.Generated.OfflineAudioContext as GHCJS.DOM.OfflineAudioContext
-          , GHCJS.DOM.JSFFI.Generated.OscillatorNode as GHCJS.DOM.OscillatorNode
-          , GHCJS.DOM.JSFFI.Generated.OverconstrainedError as GHCJS.DOM.OverconstrainedError
-          , GHCJS.DOM.JSFFI.Generated.OverconstrainedErrorEvent as GHCJS.DOM.OverconstrainedErrorEvent
-          , GHCJS.DOM.JSFFI.Generated.OverflowEvent as GHCJS.DOM.OverflowEvent
-          , GHCJS.DOM.JSFFI.Generated.PageTransitionEvent as GHCJS.DOM.PageTransitionEvent
-          , GHCJS.DOM.JSFFI.Generated.PannerNode as GHCJS.DOM.PannerNode
-          , GHCJS.DOM.JSFFI.Generated.ParentNode as GHCJS.DOM.ParentNode
-          , GHCJS.DOM.JSFFI.Generated.PasswordCredential as GHCJS.DOM.PasswordCredential
-          , GHCJS.DOM.JSFFI.Generated.Path2D as GHCJS.DOM.Path2D
-          , GHCJS.DOM.JSFFI.Generated.Performance as GHCJS.DOM.Performance
-          , GHCJS.DOM.JSFFI.Generated.PerformanceEntry as GHCJS.DOM.PerformanceEntry
-          , GHCJS.DOM.JSFFI.Generated.PerformanceNavigation as GHCJS.DOM.PerformanceNavigation
-          , GHCJS.DOM.JSFFI.Generated.PerformanceObserver as GHCJS.DOM.PerformanceObserver
-          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback as GHCJS.DOM.PerformanceObserverCallback
-          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList as GHCJS.DOM.PerformanceObserverEntryList
-          , GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming as GHCJS.DOM.PerformanceResourceTiming
-          , GHCJS.DOM.JSFFI.Generated.PerformanceTiming as GHCJS.DOM.PerformanceTiming
-          , GHCJS.DOM.JSFFI.Generated.Plugin as GHCJS.DOM.Plugin
-          , GHCJS.DOM.JSFFI.Generated.PluginArray as GHCJS.DOM.PluginArray
-          , GHCJS.DOM.JSFFI.Generated.PopStateEvent as GHCJS.DOM.PopStateEvent
-          , GHCJS.DOM.JSFFI.Generated.PositionCallback as GHCJS.DOM.PositionCallback
-          , GHCJS.DOM.JSFFI.PositionError as GHCJS.DOM.PositionError
-          , GHCJS.DOM.JSFFI.Generated.PositionErrorCallback as GHCJS.DOM.PositionErrorCallback
-          , GHCJS.DOM.JSFFI.Generated.ProcessingInstruction as GHCJS.DOM.ProcessingInstruction
-          , GHCJS.DOM.JSFFI.Generated.ProgressEvent as GHCJS.DOM.ProgressEvent
-          , GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent as GHCJS.DOM.PromiseRejectionEvent
-          , GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement as GHCJS.DOM.QuickTimePluginReplacement
-          , GHCJS.DOM.JSFFI.Generated.RGBColor as GHCJS.DOM.RGBColor
-          , GHCJS.DOM.JSFFI.Generated.RTCDTMFSender as GHCJS.DOM.RTCDTMFSender
-          , GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent as GHCJS.DOM.RTCDTMFToneChangeEvent
-          , GHCJS.DOM.JSFFI.Generated.RTCDataChannel as GHCJS.DOM.RTCDataChannel
-          , GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent as GHCJS.DOM.RTCDataChannelEvent
-          , GHCJS.DOM.JSFFI.Generated.RTCIceCandidate as GHCJS.DOM.RTCIceCandidate
-          , GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent as GHCJS.DOM.RTCIceCandidateEvent
-          , GHCJS.DOM.JSFFI.Generated.RTCIceTransport as GHCJS.DOM.RTCIceTransport
-          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnection as GHCJS.DOM.RTCPeerConnection
-          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent as GHCJS.DOM.RTCPeerConnectionIceEvent
-          , GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver as GHCJS.DOM.RTCRtpReceiver
-          , GHCJS.DOM.JSFFI.Generated.RTCRtpSender as GHCJS.DOM.RTCRtpSender
-          , GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver as GHCJS.DOM.RTCRtpTransceiver
-          , GHCJS.DOM.JSFFI.Generated.RTCSessionDescription as GHCJS.DOM.RTCSessionDescription
-          , GHCJS.DOM.JSFFI.Generated.RTCTrackEvent as GHCJS.DOM.RTCTrackEvent
-          , GHCJS.DOM.JSFFI.Generated.RadioNodeList as GHCJS.DOM.RadioNodeList
-          , GHCJS.DOM.JSFFI.Generated.Range as GHCJS.DOM.Range
-          , GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController as GHCJS.DOM.ReadableByteStreamController
-          , GHCJS.DOM.JSFFI.Generated.ReadableStream as GHCJS.DOM.ReadableStream
-          , GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader as GHCJS.DOM.ReadableStreamBYOBReader
-          , GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest as GHCJS.DOM.ReadableStreamBYOBRequest
-          , GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController as GHCJS.DOM.ReadableStreamDefaultController
-          , GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader as GHCJS.DOM.ReadableStreamDefaultReader
-          , GHCJS.DOM.JSFFI.Generated.ReadableStreamSource as GHCJS.DOM.ReadableStreamSource
-          , GHCJS.DOM.JSFFI.Generated.Rect as GHCJS.DOM.Rect
-          , GHCJS.DOM.JSFFI.Generated.Request as GHCJS.DOM.Request
-          , GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback as GHCJS.DOM.RequestAnimationFrameCallback
-          , GHCJS.DOM.JSFFI.Generated.Response as GHCJS.DOM.Response
-          , GHCJS.DOM.JSFFI.SQLError as GHCJS.DOM.SQLError
-          , GHCJS.DOM.JSFFI.Generated.SQLException as GHCJS.DOM.SQLException
-          , GHCJS.DOM.JSFFI.Generated.SQLResultSet as GHCJS.DOM.SQLResultSet
-          , GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList as GHCJS.DOM.SQLResultSetRowList
-          , GHCJS.DOM.JSFFI.Generated.SQLStatementCallback as GHCJS.DOM.SQLStatementCallback
-          , GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback as GHCJS.DOM.SQLStatementErrorCallback
-          , GHCJS.DOM.JSFFI.SQLTransaction as GHCJS.DOM.SQLTransaction
-          , GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback as GHCJS.DOM.SQLTransactionCallback
-          , GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback as GHCJS.DOM.SQLTransactionErrorCallback
-          , GHCJS.DOM.JSFFI.Generated.SVGAElement as GHCJS.DOM.SVGAElement
-          , GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement as GHCJS.DOM.SVGAltGlyphElement
-          , GHCJS.DOM.JSFFI.Generated.SVGAngle as GHCJS.DOM.SVGAngle
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle as GHCJS.DOM.SVGAnimatedAngle
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean as GHCJS.DOM.SVGAnimatedBoolean
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration as GHCJS.DOM.SVGAnimatedEnumeration
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger as GHCJS.DOM.SVGAnimatedInteger
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength as GHCJS.DOM.SVGAnimatedLength
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList as GHCJS.DOM.SVGAnimatedLengthList
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber as GHCJS.DOM.SVGAnimatedNumber
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList as GHCJS.DOM.SVGAnimatedNumberList
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio as GHCJS.DOM.SVGAnimatedPreserveAspectRatio
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect as GHCJS.DOM.SVGAnimatedRect
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedString as GHCJS.DOM.SVGAnimatedString
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList as GHCJS.DOM.SVGAnimatedTransformList
-          , GHCJS.DOM.JSFFI.Generated.SVGAnimationElement as GHCJS.DOM.SVGAnimationElement
-          , GHCJS.DOM.JSFFI.Generated.SVGCircleElement as GHCJS.DOM.SVGCircleElement
-          , GHCJS.DOM.JSFFI.Generated.SVGClipPathElement as GHCJS.DOM.SVGClipPathElement
-          , GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement as GHCJS.DOM.SVGComponentTransferFunctionElement
-          , GHCJS.DOM.JSFFI.Generated.SVGCursorElement as GHCJS.DOM.SVGCursorElement
-          , GHCJS.DOM.JSFFI.Generated.SVGElement as GHCJS.DOM.SVGElement
-          , GHCJS.DOM.JSFFI.Generated.SVGEllipseElement as GHCJS.DOM.SVGEllipseElement
-          , GHCJS.DOM.JSFFI.Generated.SVGException as GHCJS.DOM.SVGException
-          , GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired as GHCJS.DOM.SVGExternalResourcesRequired
-          , GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement as GHCJS.DOM.SVGFEBlendElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement as GHCJS.DOM.SVGFEColorMatrixElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement as GHCJS.DOM.SVGFEComponentTransferElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement as GHCJS.DOM.SVGFECompositeElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement as GHCJS.DOM.SVGFEConvolveMatrixElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement as GHCJS.DOM.SVGFEDiffuseLightingElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement as GHCJS.DOM.SVGFEDisplacementMapElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement as GHCJS.DOM.SVGFEDistantLightElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement as GHCJS.DOM.SVGFEDropShadowElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement as GHCJS.DOM.SVGFEGaussianBlurElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEImageElement as GHCJS.DOM.SVGFEImageElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement as GHCJS.DOM.SVGFEMergeNodeElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement as GHCJS.DOM.SVGFEMorphologyElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement as GHCJS.DOM.SVGFEOffsetElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement as GHCJS.DOM.SVGFEPointLightElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement as GHCJS.DOM.SVGFESpecularLightingElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement as GHCJS.DOM.SVGFESpotLightElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFETileElement as GHCJS.DOM.SVGFETileElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement as GHCJS.DOM.SVGFETurbulenceElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFilterElement as GHCJS.DOM.SVGFilterElement
-          , GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes as GHCJS.DOM.SVGFilterPrimitiveStandardAttributes
-          , GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox as GHCJS.DOM.SVGFitToViewBox
-          , GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement as GHCJS.DOM.SVGForeignObjectElement
-          , GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement as GHCJS.DOM.SVGGlyphRefElement
-          , GHCJS.DOM.JSFFI.Generated.SVGGradientElement as GHCJS.DOM.SVGGradientElement
-          , GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement as GHCJS.DOM.SVGGraphicsElement
-          , GHCJS.DOM.JSFFI.Generated.SVGImageElement as GHCJS.DOM.SVGImageElement
-          , GHCJS.DOM.JSFFI.Generated.SVGLength as GHCJS.DOM.SVGLength
-          , GHCJS.DOM.JSFFI.Generated.SVGLengthList as GHCJS.DOM.SVGLengthList
-          , GHCJS.DOM.JSFFI.Generated.SVGLineElement as GHCJS.DOM.SVGLineElement
-          , GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement as GHCJS.DOM.SVGLinearGradientElement
-          , GHCJS.DOM.JSFFI.Generated.SVGMarkerElement as GHCJS.DOM.SVGMarkerElement
-          , GHCJS.DOM.JSFFI.Generated.SVGMaskElement as GHCJS.DOM.SVGMaskElement
-          , GHCJS.DOM.JSFFI.Generated.SVGMatrix as GHCJS.DOM.SVGMatrix
-          , GHCJS.DOM.JSFFI.Generated.SVGNumber as GHCJS.DOM.SVGNumber
-          , GHCJS.DOM.JSFFI.Generated.SVGNumberList as GHCJS.DOM.SVGNumberList
-          , GHCJS.DOM.JSFFI.Generated.SVGPathElement as GHCJS.DOM.SVGPathElement
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSeg as GHCJS.DOM.SVGPathSeg
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs as GHCJS.DOM.SVGPathSegArcAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel as GHCJS.DOM.SVGPathSegArcRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs as GHCJS.DOM.SVGPathSegCurvetoCubicAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel as GHCJS.DOM.SVGPathSegCurvetoCubicRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs as GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel as GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs as GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel as GHCJS.DOM.SVGPathSegCurvetoQuadraticRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs as GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel as GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs as GHCJS.DOM.SVGPathSegLinetoAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs as GHCJS.DOM.SVGPathSegLinetoHorizontalAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel as GHCJS.DOM.SVGPathSegLinetoHorizontalRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel as GHCJS.DOM.SVGPathSegLinetoRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs as GHCJS.DOM.SVGPathSegLinetoVerticalAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel as GHCJS.DOM.SVGPathSegLinetoVerticalRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegList as GHCJS.DOM.SVGPathSegList
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs as GHCJS.DOM.SVGPathSegMovetoAbs
-          , GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel as GHCJS.DOM.SVGPathSegMovetoRel
-          , GHCJS.DOM.JSFFI.Generated.SVGPatternElement as GHCJS.DOM.SVGPatternElement
-          , GHCJS.DOM.JSFFI.Generated.SVGPoint as GHCJS.DOM.SVGPoint
-          , GHCJS.DOM.JSFFI.Generated.SVGPointList as GHCJS.DOM.SVGPointList
-          , GHCJS.DOM.JSFFI.Generated.SVGPolygonElement as GHCJS.DOM.SVGPolygonElement
-          , GHCJS.DOM.JSFFI.Generated.SVGPolylineElement as GHCJS.DOM.SVGPolylineElement
-          , GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio as GHCJS.DOM.SVGPreserveAspectRatio
-          , GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement as GHCJS.DOM.SVGRadialGradientElement
-          , GHCJS.DOM.JSFFI.Generated.SVGRect as GHCJS.DOM.SVGRect
-          , GHCJS.DOM.JSFFI.Generated.SVGRectElement as GHCJS.DOM.SVGRectElement
-          , GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent as GHCJS.DOM.SVGRenderingIntent
-          , GHCJS.DOM.JSFFI.Generated.SVGSVGElement as GHCJS.DOM.SVGSVGElement
-          , GHCJS.DOM.JSFFI.Generated.SVGScriptElement as GHCJS.DOM.SVGScriptElement
-          , GHCJS.DOM.JSFFI.Generated.SVGStopElement as GHCJS.DOM.SVGStopElement
-          , GHCJS.DOM.JSFFI.Generated.SVGStringList as GHCJS.DOM.SVGStringList
-          , GHCJS.DOM.JSFFI.Generated.SVGStyleElement as GHCJS.DOM.SVGStyleElement
-          , GHCJS.DOM.JSFFI.Generated.SVGTests as GHCJS.DOM.SVGTests
-          , GHCJS.DOM.JSFFI.Generated.SVGTextContentElement as GHCJS.DOM.SVGTextContentElement
-          , GHCJS.DOM.JSFFI.Generated.SVGTextPathElement as GHCJS.DOM.SVGTextPathElement
-          , GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement as GHCJS.DOM.SVGTextPositioningElement
-          , GHCJS.DOM.JSFFI.Generated.SVGTransform as GHCJS.DOM.SVGTransform
-          , GHCJS.DOM.JSFFI.Generated.SVGTransformList as GHCJS.DOM.SVGTransformList
-          , GHCJS.DOM.JSFFI.Generated.SVGURIReference as GHCJS.DOM.SVGURIReference
-          , GHCJS.DOM.JSFFI.Generated.SVGUnitTypes as GHCJS.DOM.SVGUnitTypes
-          , GHCJS.DOM.JSFFI.Generated.SVGUseElement as GHCJS.DOM.SVGUseElement
-          , GHCJS.DOM.JSFFI.Generated.SVGViewElement as GHCJS.DOM.SVGViewElement
-          , GHCJS.DOM.JSFFI.Generated.SVGViewSpec as GHCJS.DOM.SVGViewSpec
-          , GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan as GHCJS.DOM.SVGZoomAndPan
-          , GHCJS.DOM.JSFFI.Generated.SVGZoomEvent as GHCJS.DOM.SVGZoomEvent
-          , GHCJS.DOM.JSFFI.Generated.Screen as GHCJS.DOM.Screen
-          , GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode as GHCJS.DOM.ScriptProcessorNode
-          , GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent as GHCJS.DOM.SecurityPolicyViolationEvent
-          , GHCJS.DOM.JSFFI.Generated.Selection as GHCJS.DOM.Selection
-          , GHCJS.DOM.JSFFI.Generated.ShadowRoot as GHCJS.DOM.ShadowRoot
-          , GHCJS.DOM.JSFFI.Generated.SiteBoundCredential as GHCJS.DOM.SiteBoundCredential
-          , GHCJS.DOM.JSFFI.Generated.Slotable as GHCJS.DOM.Slotable
-          , GHCJS.DOM.JSFFI.Generated.SourceBuffer as GHCJS.DOM.SourceBuffer
-          , GHCJS.DOM.JSFFI.Generated.SourceBufferList as GHCJS.DOM.SourceBufferList
-          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesis as GHCJS.DOM.SpeechSynthesis
-          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent as GHCJS.DOM.SpeechSynthesisEvent
-          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance as GHCJS.DOM.SpeechSynthesisUtterance
-          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice as GHCJS.DOM.SpeechSynthesisVoice
-          , GHCJS.DOM.JSFFI.Generated.StaticRange as GHCJS.DOM.StaticRange
-          , GHCJS.DOM.JSFFI.Generated.Storage as GHCJS.DOM.Storage
-          , GHCJS.DOM.JSFFI.Generated.StorageErrorCallback as GHCJS.DOM.StorageErrorCallback
-          , GHCJS.DOM.JSFFI.Generated.StorageEvent as GHCJS.DOM.StorageEvent
-          , GHCJS.DOM.JSFFI.Generated.StorageInfo as GHCJS.DOM.StorageInfo
-          , GHCJS.DOM.JSFFI.Generated.StorageQuota as GHCJS.DOM.StorageQuota
-          , GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback as GHCJS.DOM.StorageQuotaCallback
-          , GHCJS.DOM.JSFFI.Generated.StorageUsageCallback as GHCJS.DOM.StorageUsageCallback
-          , GHCJS.DOM.JSFFI.Generated.StringCallback as GHCJS.DOM.StringCallback
-          , GHCJS.DOM.JSFFI.Generated.StyleMedia as GHCJS.DOM.StyleMedia
-          , GHCJS.DOM.JSFFI.Generated.StyleSheet as GHCJS.DOM.StyleSheet
-          , GHCJS.DOM.JSFFI.Generated.StyleSheetList as GHCJS.DOM.StyleSheetList
-          , GHCJS.DOM.JSFFI.Generated.SubtleCrypto as GHCJS.DOM.SubtleCrypto
-          , GHCJS.DOM.JSFFI.Generated.Text as GHCJS.DOM.Text
-          , GHCJS.DOM.JSFFI.Generated.TextDecoder as GHCJS.DOM.TextDecoder
-          , GHCJS.DOM.JSFFI.Generated.TextEncoder as GHCJS.DOM.TextEncoder
-          , GHCJS.DOM.JSFFI.Generated.TextEvent as GHCJS.DOM.TextEvent
-          , GHCJS.DOM.JSFFI.Generated.TextMetrics as GHCJS.DOM.TextMetrics
-          , GHCJS.DOM.JSFFI.Generated.TextTrack as GHCJS.DOM.TextTrack
-          , GHCJS.DOM.JSFFI.Generated.TextTrackCue as GHCJS.DOM.TextTrackCue
-          , GHCJS.DOM.JSFFI.Generated.TextTrackCueList as GHCJS.DOM.TextTrackCueList
-          , GHCJS.DOM.JSFFI.Generated.TextTrackList as GHCJS.DOM.TextTrackList
-          , GHCJS.DOM.JSFFI.Generated.TimeRanges as GHCJS.DOM.TimeRanges
-          , GHCJS.DOM.JSFFI.Generated.Touch as GHCJS.DOM.Touch
-          , GHCJS.DOM.JSFFI.Generated.TouchEvent as GHCJS.DOM.TouchEvent
-          , GHCJS.DOM.JSFFI.Generated.TouchList as GHCJS.DOM.TouchList
-          , GHCJS.DOM.JSFFI.Generated.TrackEvent as GHCJS.DOM.TrackEvent
-          , GHCJS.DOM.JSFFI.Generated.TransitionEvent as GHCJS.DOM.TransitionEvent
-          , GHCJS.DOM.JSFFI.Generated.TreeWalker as GHCJS.DOM.TreeWalker
-          , GHCJS.DOM.JSFFI.Generated.UIEvent as GHCJS.DOM.UIEvent
-          , GHCJS.DOM.JSFFI.Generated.URL as GHCJS.DOM.URL
-          , GHCJS.DOM.JSFFI.Generated.URLSearchParams as GHCJS.DOM.URLSearchParams
-          , GHCJS.DOM.JSFFI.Generated.UserMessageHandler as GHCJS.DOM.UserMessageHandler
-          , GHCJS.DOM.JSFFI.Generated.VTTCue as GHCJS.DOM.VTTCue
-          , GHCJS.DOM.JSFFI.Generated.VTTRegion as GHCJS.DOM.VTTRegion
-          , GHCJS.DOM.JSFFI.Generated.VTTRegionList as GHCJS.DOM.VTTRegionList
-          , GHCJS.DOM.JSFFI.Generated.ValidityState as GHCJS.DOM.ValidityState
-          , GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality as GHCJS.DOM.VideoPlaybackQuality
-          , GHCJS.DOM.JSFFI.Generated.VideoTrack as GHCJS.DOM.VideoTrack
-          , GHCJS.DOM.JSFFI.Generated.VideoTrackList as GHCJS.DOM.VideoTrackList
-          , GHCJS.DOM.JSFFI.Generated.VoidCallback as GHCJS.DOM.VoidCallback
-          , GHCJS.DOM.JSFFI.Generated.WaveShaperNode as GHCJS.DOM.WaveShaperNode
-          , GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext as GHCJS.DOM.WebGL2RenderingContext
-          , GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo as GHCJS.DOM.WebGLActiveInfo
-          , GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC as GHCJS.DOM.WebGLCompressedTextureATC
-          , GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC as GHCJS.DOM.WebGLCompressedTexturePVRTC
-          , GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC as GHCJS.DOM.WebGLCompressedTextureS3TC
-          , GHCJS.DOM.JSFFI.Generated.WebGLContextEvent as GHCJS.DOM.WebGLContextEvent
-          , GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo as GHCJS.DOM.WebGLDebugRendererInfo
-          , GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders as GHCJS.DOM.WebGLDebugShaders
-          , GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture as GHCJS.DOM.WebGLDepthTexture
-          , GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers as GHCJS.DOM.WebGLDrawBuffers
-          , GHCJS.DOM.JSFFI.Generated.WebGLLoseContext as GHCJS.DOM.WebGLLoseContext
-          , GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase as GHCJS.DOM.WebGLRenderingContextBase
-          , GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat as GHCJS.DOM.WebGLShaderPrecisionFormat
-          , GHCJS.DOM.JSFFI.Generated.WebGPUBuffer as GHCJS.DOM.WebGPUBuffer
-          , GHCJS.DOM.JSFFI.Generated.WebGPUCommandBuffer as GHCJS.DOM.WebGPUCommandBuffer
-          , GHCJS.DOM.JSFFI.Generated.WebGPUCommandQueue as GHCJS.DOM.WebGPUCommandQueue
-          , GHCJS.DOM.JSFFI.Generated.WebGPUComputeCommandEncoder as GHCJS.DOM.WebGPUComputeCommandEncoder
-          , GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilDescriptor as GHCJS.DOM.WebGPUDepthStencilDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilState as GHCJS.DOM.WebGPUDepthStencilState
-          , GHCJS.DOM.JSFFI.Generated.WebGPUDrawable as GHCJS.DOM.WebGPUDrawable
-          , GHCJS.DOM.JSFFI.Generated.WebGPUFunction as GHCJS.DOM.WebGPUFunction
-          , GHCJS.DOM.JSFFI.Generated.WebGPULibrary as GHCJS.DOM.WebGPULibrary
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderCommandEncoder as GHCJS.DOM.WebGPURenderCommandEncoder
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassAttachmentDescriptor as GHCJS.DOM.WebGPURenderPassAttachmentDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassColorAttachmentDescriptor as GHCJS.DOM.WebGPURenderPassColorAttachmentDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDepthAttachmentDescriptor as GHCJS.DOM.WebGPURenderPassDepthAttachmentDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDescriptor as GHCJS.DOM.WebGPURenderPassDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineColorAttachmentDescriptor as GHCJS.DOM.WebGPURenderPipelineColorAttachmentDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineDescriptor as GHCJS.DOM.WebGPURenderPipelineDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineState as GHCJS.DOM.WebGPURenderPipelineState
-          , GHCJS.DOM.JSFFI.Generated.WebGPURenderingContext as GHCJS.DOM.WebGPURenderingContext
-          , GHCJS.DOM.JSFFI.Generated.WebGPUTexture as GHCJS.DOM.WebGPUTexture
-          , GHCJS.DOM.JSFFI.Generated.WebGPUTextureDescriptor as GHCJS.DOM.WebGPUTextureDescriptor
-          , GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent as GHCJS.DOM.WebKitAnimationEvent
-          , GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix as GHCJS.DOM.WebKitCSSMatrix
-          , GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule as GHCJS.DOM.WebKitCSSRegionRule
-          , GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule as GHCJS.DOM.WebKitCSSViewportRule
-          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyError as GHCJS.DOM.WebKitMediaKeyError
-          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyMessageEvent as GHCJS.DOM.WebKitMediaKeyMessageEvent
-          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyNeededEvent as GHCJS.DOM.WebKitMediaKeyNeededEvent
-          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeySession as GHCJS.DOM.WebKitMediaKeySession
-          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeys as GHCJS.DOM.WebKitMediaKeys
-          , GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow as GHCJS.DOM.WebKitNamedFlow
-          , GHCJS.DOM.JSFFI.Generated.WebKitNamespace as GHCJS.DOM.WebKitNamespace
-          , GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent as GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent
-          , GHCJS.DOM.JSFFI.Generated.WebKitPoint as GHCJS.DOM.WebKitPoint
-          , GHCJS.DOM.JSFFI.Generated.WebKitSubtleCrypto as GHCJS.DOM.WebKitSubtleCrypto
-          , GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent as GHCJS.DOM.WebKitTransitionEvent
-          , GHCJS.DOM.JSFFI.Generated.WebSocket as GHCJS.DOM.WebSocket
-          , GHCJS.DOM.JSFFI.Generated.WheelEvent as GHCJS.DOM.WheelEvent
-          , GHCJS.DOM.JSFFI.Window as GHCJS.DOM.Window
-          , GHCJS.DOM.JSFFI.Generated.WindowEventHandlers as GHCJS.DOM.WindowEventHandlers
-          , GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope as GHCJS.DOM.WindowOrWorkerGlobalScope
-          , GHCJS.DOM.JSFFI.Generated.Worker as GHCJS.DOM.Worker
-          , GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope as GHCJS.DOM.WorkerGlobalScope
-          , GHCJS.DOM.JSFFI.Generated.WorkerLocation as GHCJS.DOM.WorkerLocation
-          , GHCJS.DOM.JSFFI.Generated.WorkerNavigator as GHCJS.DOM.WorkerNavigator
-          , GHCJS.DOM.JSFFI.Generated.WritableStream as GHCJS.DOM.WritableStream
-          , GHCJS.DOM.JSFFI.XMLHttpRequest as GHCJS.DOM.XMLHttpRequest
-          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget as GHCJS.DOM.XMLHttpRequestEventTarget
-          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent as GHCJS.DOM.XMLHttpRequestProgressEvent
-          , GHCJS.DOM.JSFFI.Generated.XMLSerializer as GHCJS.DOM.XMLSerializer
-          , GHCJS.DOM.JSFFI.Generated.XPathEvaluator as GHCJS.DOM.XPathEvaluator
-          , GHCJS.DOM.JSFFI.Generated.XPathException as GHCJS.DOM.XPathException
-          , GHCJS.DOM.JSFFI.Generated.XPathExpression as GHCJS.DOM.XPathExpression
-          , GHCJS.DOM.JSFFI.Generated.XPathNSResolver as GHCJS.DOM.XPathNSResolver
-          , GHCJS.DOM.JSFFI.Generated.XPathResult as GHCJS.DOM.XPathResult
-          , GHCJS.DOM.JSFFI.Generated.XSLTProcessor as GHCJS.DOM.XSLTProcessor
+version: 0.10.0.0
+build-type: Simple
+license: MIT
+license-file: LICENSE
+extra-doc-files: ChangeLog.md
+maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
+synopsis: DOM library using JSFFI and GHCJS
+description: Document Object Model (DOM) functions that work with
+             GHCJS.
+author: Hamish Mackenzie
+category: Web
+
+Tested-With:
+  GHC == 8.8.1 || == 8.6.5 ||  == 8.4.4 || == 8.2.2 || == 8.0.2 || == 7.10.3,
+  GHCJS == 8.4 || == 8.2
+
+Source-Repository head
+  type:         git
+  location:     https://github.com/ghcjs/ghcjs-dom
+  subdir:       ghcjs-dom-javascript
+
+library
+    build-depends: base <5,
+                   transformers >=0.2 && <0.7,
+                   text >= 0.11.0.6 && < 2.2,
+                   ghcjs-base >=0.8.1.0 && <0.9,
+                   ghc-prim
+
+    default-language: Haskell2010
+
+    if impl(ghcjs)
+        other-extensions: JavaScriptFFI
+        build-depends: ghcjs-prim
+
+    hs-source-dirs: src
+    cpp-options: -DUSE_JAVASCRIPTFFI
+    exposed: True
+    if impl(ghcjs) || arch(javascript)
+        buildable: True
+    else
+        buildable: False
+    js-sources: jsbits/xhr.js
+
+    exposed-modules:
+          -- The module lists below are generated by dom-gen; do not edit.
+          GHCJS.DOM
+          GHCJS.DOM.Types
+          GHCJS.DOM.EventM
+          GHCJS.DOM.EventTargetClosures
+          GHCJS.DOM.Internal
+          GHCJS.DOM.JSFFI.Geolocation
+          GHCJS.DOM.JSFFI.GeolocationPositionError
+          GHCJS.DOM.JSFFI.XMLHttpRequest
+          GHCJS.DOM.JSFFI.Generated.ANGLE_instanced_arrays
+          GHCJS.DOM.JSFFI.Generated.ARIAMixin
+          GHCJS.DOM.JSFFI.Generated.ARIANotifyMixin
+          GHCJS.DOM.JSFFI.Generated.AacEncoderConfig
+          GHCJS.DOM.JSFFI.Generated.AbortController
+          GHCJS.DOM.JSFFI.Generated.AbortSignal
+          GHCJS.DOM.JSFFI.Generated.AbstractRange
+          GHCJS.DOM.JSFFI.Generated.AbstractWorker
+          GHCJS.DOM.JSFFI.Generated.AddEventListenerOptions
+          GHCJS.DOM.JSFFI.Generated.AddressErrors
+          GHCJS.DOM.JSFFI.Generated.AllAcceptedCredentialsOptions
+          GHCJS.DOM.JSFFI.Generated.AnalyserNode
+          GHCJS.DOM.JSFFI.Generated.AnalyserOptions
+          GHCJS.DOM.JSFFI.Generated.Animatable
+          GHCJS.DOM.JSFFI.Generated.Animation
+          GHCJS.DOM.JSFFI.Generated.AnimationEffect
+          GHCJS.DOM.JSFFI.Generated.AnimationEvent
+          GHCJS.DOM.JSFFI.Generated.AnimationEventInit
+          GHCJS.DOM.JSFFI.Generated.AnimationFrameProvider
+          GHCJS.DOM.JSFFI.Generated.AnimationPlaybackEvent
+          GHCJS.DOM.JSFFI.Generated.AnimationPlaybackEventInit
+          GHCJS.DOM.JSFFI.Generated.AnimationTimeline
+          GHCJS.DOM.JSFFI.Generated.AnimationTrigger
+          GHCJS.DOM.JSFFI.Generated.AriaNotificationOptions
+          GHCJS.DOM.JSFFI.Generated.AssignedNodesOptions
+          GHCJS.DOM.JSFFI.Generated.Attr
+          GHCJS.DOM.JSFFI.Generated.AudioBuffer
+          GHCJS.DOM.JSFFI.Generated.AudioBufferOptions
+          GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
+          GHCJS.DOM.JSFFI.Generated.AudioBufferSourceOptions
+          GHCJS.DOM.JSFFI.Generated.AudioConfiguration
+          GHCJS.DOM.JSFFI.Generated.AudioContext
+          GHCJS.DOM.JSFFI.Generated.AudioContextOptions
+          GHCJS.DOM.JSFFI.Generated.AudioData
+          GHCJS.DOM.JSFFI.Generated.AudioDataCopyToOptions
+          GHCJS.DOM.JSFFI.Generated.AudioDataInit
+          GHCJS.DOM.JSFFI.Generated.AudioDataOutputCallback
+          GHCJS.DOM.JSFFI.Generated.AudioDecoder
+          GHCJS.DOM.JSFFI.Generated.AudioDecoderConfig
+          GHCJS.DOM.JSFFI.Generated.AudioDecoderInit
+          GHCJS.DOM.JSFFI.Generated.AudioDecoderSupport
+          GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
+          GHCJS.DOM.JSFFI.Generated.AudioEncoder
+          GHCJS.DOM.JSFFI.Generated.AudioEncoderConfig
+          GHCJS.DOM.JSFFI.Generated.AudioEncoderInit
+          GHCJS.DOM.JSFFI.Generated.AudioEncoderSupport
+          GHCJS.DOM.JSFFI.Generated.AudioListener
+          GHCJS.DOM.JSFFI.Generated.AudioNode
+          GHCJS.DOM.JSFFI.Generated.AudioNodeOptions
+          GHCJS.DOM.JSFFI.Generated.AudioParam
+          GHCJS.DOM.JSFFI.Generated.AudioParamMap
+          GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
+          GHCJS.DOM.JSFFI.Generated.AudioProcessingEventInit
+          GHCJS.DOM.JSFFI.Generated.AudioScheduledSourceNode
+          GHCJS.DOM.JSFFI.Generated.AudioSinkOptions
+          GHCJS.DOM.JSFFI.Generated.AudioTimestamp
+          GHCJS.DOM.JSFFI.Generated.AudioTrack
+          GHCJS.DOM.JSFFI.Generated.AudioTrackList
+          GHCJS.DOM.JSFFI.Generated.AudioWorklet
+          GHCJS.DOM.JSFFI.Generated.AudioWorkletGlobalScope
+          GHCJS.DOM.JSFFI.Generated.AudioWorkletNode
+          GHCJS.DOM.JSFFI.Generated.AudioWorkletNodeOptions
+          GHCJS.DOM.JSFFI.Generated.AudioWorkletProcessor
+          GHCJS.DOM.JSFFI.Generated.AudioWorkletProcessorConstructor
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientInputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientInputsJSON
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientOutputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobInputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobInputsJSON
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobOutputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFInputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFInputsJSON
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFOutputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFValues
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFValuesJSON
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPaymentInputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPaymentOutputs
+          GHCJS.DOM.JSFFI.Generated.AuthenticatorAssertionResponse
+          GHCJS.DOM.JSFFI.Generated.AuthenticatorAttestationResponse
+          GHCJS.DOM.JSFFI.Generated.AuthenticatorResponse
+          GHCJS.DOM.JSFFI.Generated.AuthenticatorSelectionCriteria
+          GHCJS.DOM.JSFFI.Generated.AutofillEvent
+          GHCJS.DOM.JSFFI.Generated.AvcEncoderConfig
+          GHCJS.DOM.JSFFI.Generated.BackgroundBlur
+          GHCJS.DOM.JSFFI.Generated.BarProp
+          GHCJS.DOM.JSFFI.Generated.BaseAudioContext
+          GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
+          GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
+          GHCJS.DOM.JSFFI.Generated.BiquadFilterOptions
+          GHCJS.DOM.JSFFI.Generated.Blob
+          GHCJS.DOM.JSFFI.Generated.BlobCallback
+          GHCJS.DOM.JSFFI.Generated.BlobEvent
+          GHCJS.DOM.JSFFI.Generated.BlobEventInit
+          GHCJS.DOM.JSFFI.Generated.BlobPropertyBag
+          GHCJS.DOM.JSFFI.Generated.Body
+          GHCJS.DOM.JSFFI.Generated.BroadcastChannel
+          GHCJS.DOM.JSFFI.Generated.BrowserBoundSignature
+          GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy
+          GHCJS.DOM.JSFFI.Generated.CDATASection
+          GHCJS.DOM.JSFFI.Generated.CSS
+          GHCJS.DOM.JSFFI.Generated.CSSAnimation
+          GHCJS.DOM.JSFFI.Generated.CSSConditionRule
+          GHCJS.DOM.JSFFI.Generated.CSSContainerCondition
+          GHCJS.DOM.JSFFI.Generated.CSSContainerRule
+          GHCJS.DOM.JSFFI.Generated.CSSCounterStyleRule
+          GHCJS.DOM.JSFFI.Generated.CSSFontFaceDescriptors
+          GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
+          GHCJS.DOM.JSFFI.Generated.CSSFontFeatureValuesRule
+          GHCJS.DOM.JSFFI.Generated.CSSFontPaletteValuesRule
+          GHCJS.DOM.JSFFI.Generated.CSSGroupingRule
+          GHCJS.DOM.JSFFI.Generated.CSSImageValue
+          GHCJS.DOM.JSFFI.Generated.CSSImportRule
+          GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
+          GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
+          GHCJS.DOM.JSFFI.Generated.CSSKeywordValue
+          GHCJS.DOM.JSFFI.Generated.CSSLayerBlockRule
+          GHCJS.DOM.JSFFI.Generated.CSSLayerStatementRule
+          GHCJS.DOM.JSFFI.Generated.CSSMathClamp
+          GHCJS.DOM.JSFFI.Generated.CSSMathInvert
+          GHCJS.DOM.JSFFI.Generated.CSSMathMax
+          GHCJS.DOM.JSFFI.Generated.CSSMathMin
+          GHCJS.DOM.JSFFI.Generated.CSSMathNegate
+          GHCJS.DOM.JSFFI.Generated.CSSMathProduct
+          GHCJS.DOM.JSFFI.Generated.CSSMathSum
+          GHCJS.DOM.JSFFI.Generated.CSSMathValue
+          GHCJS.DOM.JSFFI.Generated.CSSMatrixComponent
+          GHCJS.DOM.JSFFI.Generated.CSSMatrixComponentOptions
+          GHCJS.DOM.JSFFI.Generated.CSSMediaRule
+          GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule
+          GHCJS.DOM.JSFFI.Generated.CSSNestedDeclarations
+          GHCJS.DOM.JSFFI.Generated.CSSNumericArray
+          GHCJS.DOM.JSFFI.Generated.CSSNumericType
+          GHCJS.DOM.JSFFI.Generated.CSSNumericValue
+          GHCJS.DOM.JSFFI.Generated.CSSPageDescriptors
+          GHCJS.DOM.JSFFI.Generated.CSSPageRule
+          GHCJS.DOM.JSFFI.Generated.CSSPerspective
+          GHCJS.DOM.JSFFI.Generated.CSSPositionTryDescriptors
+          GHCJS.DOM.JSFFI.Generated.CSSPositionTryRule
+          GHCJS.DOM.JSFFI.Generated.CSSPropertyRule
+          GHCJS.DOM.JSFFI.Generated.CSSRotate
+          GHCJS.DOM.JSFFI.Generated.CSSRule
+          GHCJS.DOM.JSFFI.Generated.CSSRuleList
+          GHCJS.DOM.JSFFI.Generated.CSSScale
+          GHCJS.DOM.JSFFI.Generated.CSSScopeRule
+          GHCJS.DOM.JSFFI.Generated.CSSSkew
+          GHCJS.DOM.JSFFI.Generated.CSSSkewX
+          GHCJS.DOM.JSFFI.Generated.CSSSkewY
+          GHCJS.DOM.JSFFI.Generated.CSSStartingStyleRule
+          GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
+          GHCJS.DOM.JSFFI.Generated.CSSStyleProperties
+          GHCJS.DOM.JSFFI.Generated.CSSStyleRule
+          GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
+          GHCJS.DOM.JSFFI.Generated.CSSStyleSheetInit
+          GHCJS.DOM.JSFFI.Generated.CSSStyleValue
+          GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
+          GHCJS.DOM.JSFFI.Generated.CSSTransformComponent
+          GHCJS.DOM.JSFFI.Generated.CSSTransformValue
+          GHCJS.DOM.JSFFI.Generated.CSSTransition
+          GHCJS.DOM.JSFFI.Generated.CSSTranslate
+          GHCJS.DOM.JSFFI.Generated.CSSUnitValue
+          GHCJS.DOM.JSFFI.Generated.CSSUnparsedValue
+          GHCJS.DOM.JSFFI.Generated.CSSVariableReferenceValue
+          GHCJS.DOM.JSFFI.Generated.CSSViewTransitionRule
+          GHCJS.DOM.JSFFI.Generated.Cache
+          GHCJS.DOM.JSFFI.Generated.CacheQueryOptions
+          GHCJS.DOM.JSFFI.Generated.CacheStorage
+          GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack
+          GHCJS.DOM.JSFFI.Generated.CanvasCompositing
+          GHCJS.DOM.JSFFI.Generated.CanvasDrawImage
+          GHCJS.DOM.JSFFI.Generated.CanvasDrawPath
+          GHCJS.DOM.JSFFI.Generated.CanvasFillStrokeStyles
+          GHCJS.DOM.JSFFI.Generated.CanvasFilters
+          GHCJS.DOM.JSFFI.Generated.CanvasGradient
+          GHCJS.DOM.JSFFI.Generated.CanvasImageData
+          GHCJS.DOM.JSFFI.Generated.CanvasImageSmoothing
+          GHCJS.DOM.JSFFI.Generated.CanvasPath
+          GHCJS.DOM.JSFFI.Generated.CanvasPathDrawingStyles
+          GHCJS.DOM.JSFFI.Generated.CanvasPattern
+          GHCJS.DOM.JSFFI.Generated.CanvasRect
+          GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+          GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2DSettings
+          GHCJS.DOM.JSFFI.Generated.CanvasSettings
+          GHCJS.DOM.JSFFI.Generated.CanvasShadowStyles
+          GHCJS.DOM.JSFFI.Generated.CanvasState
+          GHCJS.DOM.JSFFI.Generated.CanvasText
+          GHCJS.DOM.JSFFI.Generated.CanvasTextDrawingStyles
+          GHCJS.DOM.JSFFI.Generated.CanvasTransform
+          GHCJS.DOM.JSFFI.Generated.CanvasUserInterface
+          GHCJS.DOM.JSFFI.Generated.CaptureController
+          GHCJS.DOM.JSFFI.Generated.CaretPosition
+          GHCJS.DOM.JSFFI.Generated.CaretPositionFromPointOptions
+          GHCJS.DOM.JSFFI.Generated.ChannelMergerNode
+          GHCJS.DOM.JSFFI.Generated.ChannelMergerOptions
+          GHCJS.DOM.JSFFI.Generated.ChannelSplitterNode
+          GHCJS.DOM.JSFFI.Generated.ChannelSplitterOptions
+          GHCJS.DOM.JSFFI.Generated.ChapterInformationInit
+          GHCJS.DOM.JSFFI.Generated.CharacterData
+          GHCJS.DOM.JSFFI.Generated.CheckVisibilityOptions
+          GHCJS.DOM.JSFFI.Generated.ChildNode
+          GHCJS.DOM.JSFFI.Generated.Client
+          GHCJS.DOM.JSFFI.Generated.ClientQueryOptions
+          GHCJS.DOM.JSFFI.Generated.Clients
+          GHCJS.DOM.JSFFI.Generated.Clipboard
+          GHCJS.DOM.JSFFI.Generated.ClipboardChangeEvent
+          GHCJS.DOM.JSFFI.Generated.ClipboardEvent
+          GHCJS.DOM.JSFFI.Generated.ClipboardEventInit
+          GHCJS.DOM.JSFFI.Generated.ClipboardItem
+          GHCJS.DOM.JSFFI.Generated.ClipboardItemOptions
+          GHCJS.DOM.JSFFI.Generated.ClipboardUnsanitizedFormats
+          GHCJS.DOM.JSFFI.Generated.CloseEvent
+          GHCJS.DOM.JSFFI.Generated.CloseEventInit
+          GHCJS.DOM.JSFFI.Generated.CloseWatcher
+          GHCJS.DOM.JSFFI.Generated.CloseWatcherOptions
+          GHCJS.DOM.JSFFI.Generated.CommandEvent
+          GHCJS.DOM.JSFFI.Generated.CommandEventInit
+          GHCJS.DOM.JSFFI.Generated.Comment
+          GHCJS.DOM.JSFFI.Generated.CompositionEvent
+          GHCJS.DOM.JSFFI.Generated.CompositionEventInit
+          GHCJS.DOM.JSFFI.Generated.CompressionStream
+          GHCJS.DOM.JSFFI.Generated.ComputedEffectTiming
+          GHCJS.DOM.JSFFI.Generated.Console
+          GHCJS.DOM.JSFFI.Generated.ConstantSourceNode
+          GHCJS.DOM.JSFFI.Generated.ConstantSourceOptions
+          GHCJS.DOM.JSFFI.Generated.ConstrainBooleanOrDOMStringParameters
+          GHCJS.DOM.JSFFI.Generated.ConstrainBooleanParameters
+          GHCJS.DOM.JSFFI.Generated.ConstrainDOMStringParameters
+          GHCJS.DOM.JSFFI.Generated.ConstrainDoubleRange
+          GHCJS.DOM.JSFFI.Generated.ConstrainPoint2DParameters
+          GHCJS.DOM.JSFFI.Generated.ConstrainULongRange
+          GHCJS.DOM.JSFFI.Generated.ContactAddress
+          GHCJS.DOM.JSFFI.Generated.ContentVisibilityAutoStateChangeEvent
+          GHCJS.DOM.JSFFI.Generated.ContentVisibilityAutoStateChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.ConvolverNode
+          GHCJS.DOM.JSFFI.Generated.ConvolverOptions
+          GHCJS.DOM.JSFFI.Generated.CookieChangeEvent
+          GHCJS.DOM.JSFFI.Generated.CookieChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.CookieInit
+          GHCJS.DOM.JSFFI.Generated.CookieListItem
+          GHCJS.DOM.JSFFI.Generated.CookieStore
+          GHCJS.DOM.JSFFI.Generated.CookieStoreDeleteOptions
+          GHCJS.DOM.JSFFI.Generated.CookieStoreGetOptions
+          GHCJS.DOM.JSFFI.Generated.CookieStoreManager
+          GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy
+          GHCJS.DOM.JSFFI.Generated.CreateHTMLCallback
+          GHCJS.DOM.JSFFI.Generated.CreateParserOptionsCallback
+          GHCJS.DOM.JSFFI.Generated.CreateScriptCallback
+          GHCJS.DOM.JSFFI.Generated.CreateScriptURLCallback
+          GHCJS.DOM.JSFFI.Generated.Credential
+          GHCJS.DOM.JSFFI.Generated.CredentialCreationOptions
+          GHCJS.DOM.JSFFI.Generated.CredentialData
+          GHCJS.DOM.JSFFI.Generated.CredentialPropertiesOutput
+          GHCJS.DOM.JSFFI.Generated.CredentialRequestOptions
+          GHCJS.DOM.JSFFI.Generated.CredentialsContainer
+          GHCJS.DOM.JSFFI.Generated.Crypto
+          GHCJS.DOM.JSFFI.Generated.CryptoKey
+          GHCJS.DOM.JSFFI.Generated.CryptoKeyPair
+          GHCJS.DOM.JSFFI.Generated.CurrentUserDetailsOptions
+          GHCJS.DOM.JSFFI.Generated.CustomElementConstructor
+          GHCJS.DOM.JSFFI.Generated.CustomElementRegistry
+          GHCJS.DOM.JSFFI.Generated.CustomEvent
+          GHCJS.DOM.JSFFI.Generated.CustomEventInit
+          GHCJS.DOM.JSFFI.Generated.CustomStateSet
+          GHCJS.DOM.JSFFI.Generated.DOMException
+          GHCJS.DOM.JSFFI.Generated.DOMImplementation
+          GHCJS.DOM.JSFFI.Generated.DOMMatrix
+          GHCJS.DOM.JSFFI.Generated.DOMMatrix2DInit
+          GHCJS.DOM.JSFFI.Generated.DOMMatrixInit
+          GHCJS.DOM.JSFFI.Generated.DOMMatrixReadOnly
+          GHCJS.DOM.JSFFI.Generated.DOMParser
+          GHCJS.DOM.JSFFI.Generated.DOMPoint
+          GHCJS.DOM.JSFFI.Generated.DOMPointInit
+          GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly
+          GHCJS.DOM.JSFFI.Generated.DOMQuad
+          GHCJS.DOM.JSFFI.Generated.DOMQuadInit
+          GHCJS.DOM.JSFFI.Generated.DOMRect
+          GHCJS.DOM.JSFFI.Generated.DOMRectInit
+          GHCJS.DOM.JSFFI.Generated.DOMRectList
+          GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly
+          GHCJS.DOM.JSFFI.Generated.DOMStringList
+          GHCJS.DOM.JSFFI.Generated.DOMStringMap
+          GHCJS.DOM.JSFFI.Generated.DOMTokenList
+          GHCJS.DOM.JSFFI.Generated.DataCue
+          GHCJS.DOM.JSFFI.Generated.DataTransfer
+          GHCJS.DOM.JSFFI.Generated.DataTransferItem
+          GHCJS.DOM.JSFFI.Generated.DataTransferItemList
+          GHCJS.DOM.JSFFI.Generated.DecodeErrorCallback
+          GHCJS.DOM.JSFFI.Generated.DecodeSuccessCallback
+          GHCJS.DOM.JSFFI.Generated.DecompressionStream
+          GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.DelayNode
+          GHCJS.DOM.JSFFI.Generated.DelayOptions
+          GHCJS.DOM.JSFFI.Generated.DeviceChangeEvent
+          GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
+          GHCJS.DOM.JSFFI.Generated.DeviceMotionEventAcceleration
+          GHCJS.DOM.JSFFI.Generated.DeviceMotionEventAccelerationInit
+          GHCJS.DOM.JSFFI.Generated.DeviceMotionEventInit
+          GHCJS.DOM.JSFFI.Generated.DeviceMotionEventRotationRate
+          GHCJS.DOM.JSFFI.Generated.DeviceMotionEventRotationRateInit
+          GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
+          GHCJS.DOM.JSFFI.Generated.DeviceOrientationEventInit
+          GHCJS.DOM.JSFFI.Generated.DigitalCredential
+          GHCJS.DOM.JSFFI.Generated.DigitalCredentialCreateRequest
+          GHCJS.DOM.JSFFI.Generated.DigitalCredentialCreationOptions
+          GHCJS.DOM.JSFFI.Generated.DigitalCredentialGetRequest
+          GHCJS.DOM.JSFFI.Generated.DigitalCredentialRequestOptions
+          GHCJS.DOM.JSFFI.Generated.DisplayMediaStreamOptions
+          GHCJS.DOM.JSFFI.Generated.Document
+          GHCJS.DOM.JSFFI.Generated.DocumentFragment
+          GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot
+          GHCJS.DOM.JSFFI.Generated.DocumentPictureInPicture
+          GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureEvent
+          GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureEventInit
+          GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureOptions
+          GHCJS.DOM.JSFFI.Generated.DocumentTimeline
+          GHCJS.DOM.JSFFI.Generated.DocumentTimelineOptions
+          GHCJS.DOM.JSFFI.Generated.DocumentType
+          GHCJS.DOM.JSFFI.Generated.DoubleRange
+          GHCJS.DOM.JSFFI.Generated.DragEvent
+          GHCJS.DOM.JSFFI.Generated.DragEventInit
+          GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
+          GHCJS.DOM.JSFFI.Generated.DynamicsCompressorOptions
+          GHCJS.DOM.JSFFI.Generated.EXT_blend_minmax
+          GHCJS.DOM.JSFFI.Generated.EXT_clip_control
+          GHCJS.DOM.JSFFI.Generated.EXT_color_buffer_float
+          GHCJS.DOM.JSFFI.Generated.EXT_color_buffer_half_float
+          GHCJS.DOM.JSFFI.Generated.EXT_float_blend
+          GHCJS.DOM.JSFFI.Generated.EXT_frag_depth
+          GHCJS.DOM.JSFFI.Generated.EXT_polygon_offset_clamp
+          GHCJS.DOM.JSFFI.Generated.EXT_sRGB
+          GHCJS.DOM.JSFFI.Generated.EXT_shader_texture_lod
+          GHCJS.DOM.JSFFI.Generated.EXT_texture_compression_bptc
+          GHCJS.DOM.JSFFI.Generated.EXT_texture_compression_rgtc
+          GHCJS.DOM.JSFFI.Generated.EXT_texture_filter_anisotropic
+          GHCJS.DOM.JSFFI.Generated.EXT_texture_mirror_clamp_to_edge
+          GHCJS.DOM.JSFFI.Generated.EXT_texture_norm16
+          GHCJS.DOM.JSFFI.Generated.EffectTiming
+          GHCJS.DOM.JSFFI.Generated.Element
+          GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle
+          GHCJS.DOM.JSFFI.Generated.ElementContentEditable
+          GHCJS.DOM.JSFFI.Generated.ElementCreationOptions
+          GHCJS.DOM.JSFFI.Generated.ElementDefinitionOptions
+          GHCJS.DOM.JSFFI.Generated.ElementInternals
+          GHCJS.DOM.JSFFI.Generated.EncodedAudioChunk
+          GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkInit
+          GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkMetadata
+          GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkOutputCallback
+          GHCJS.DOM.JSFFI.Generated.EncodedVideoChunk
+          GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkInit
+          GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkMetadata
+          GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkOutputCallback
+          GHCJS.DOM.JSFFI.Generated.Enums
+          GHCJS.DOM.JSFFI.Generated.ErrorCallback
+          GHCJS.DOM.JSFFI.Generated.ErrorEvent
+          GHCJS.DOM.JSFFI.Generated.ErrorEventInit
+          GHCJS.DOM.JSFFI.Generated.Event
+          GHCJS.DOM.JSFFI.Generated.EventCounts
+          GHCJS.DOM.JSFFI.Generated.EventInit
+          GHCJS.DOM.JSFFI.Generated.EventListenerOptions
+          GHCJS.DOM.JSFFI.Generated.EventModifierInit
+          GHCJS.DOM.JSFFI.Generated.EventSource
+          GHCJS.DOM.JSFFI.Generated.EventSourceInit
+          GHCJS.DOM.JSFFI.Generated.EventTarget
+          GHCJS.DOM.JSFFI.Generated.ExtendableCookieChangeEvent
+          GHCJS.DOM.JSFFI.Generated.ExtendableCookieChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.ExtendableEvent
+          GHCJS.DOM.JSFFI.Generated.ExtendableEventInit
+          GHCJS.DOM.JSFFI.Generated.ExtendableMessageEvent
+          GHCJS.DOM.JSFFI.Generated.ExtendableMessageEventInit
+          GHCJS.DOM.JSFFI.Generated.External
+          GHCJS.DOM.JSFFI.Generated.FederatedCredentialInit
+          GHCJS.DOM.JSFFI.Generated.FederatedCredentialRequestOptions
+          GHCJS.DOM.JSFFI.Generated.FetchEvent
+          GHCJS.DOM.JSFFI.Generated.FetchEventInit
+          GHCJS.DOM.JSFFI.Generated.File
+          GHCJS.DOM.JSFFI.Generated.FileCallback
+          GHCJS.DOM.JSFFI.Generated.FileList
+          GHCJS.DOM.JSFFI.Generated.FilePropertyBag
+          GHCJS.DOM.JSFFI.Generated.FileReader
+          GHCJS.DOM.JSFFI.Generated.FileReaderSync
+          GHCJS.DOM.JSFFI.Generated.FileSystem
+          GHCJS.DOM.JSFFI.Generated.FileSystemCreateWritableOptions
+          GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryEntry
+          GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryHandle
+          GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryReader
+          GHCJS.DOM.JSFFI.Generated.FileSystemEntriesCallback
+          GHCJS.DOM.JSFFI.Generated.FileSystemEntry
+          GHCJS.DOM.JSFFI.Generated.FileSystemEntryCallback
+          GHCJS.DOM.JSFFI.Generated.FileSystemFileEntry
+          GHCJS.DOM.JSFFI.Generated.FileSystemFileHandle
+          GHCJS.DOM.JSFFI.Generated.FileSystemFlags
+          GHCJS.DOM.JSFFI.Generated.FileSystemGetDirectoryOptions
+          GHCJS.DOM.JSFFI.Generated.FileSystemGetFileOptions
+          GHCJS.DOM.JSFFI.Generated.FileSystemHandle
+          GHCJS.DOM.JSFFI.Generated.FileSystemReadWriteOptions
+          GHCJS.DOM.JSFFI.Generated.FileSystemRemoveOptions
+          GHCJS.DOM.JSFFI.Generated.FileSystemSyncAccessHandle
+          GHCJS.DOM.JSFFI.Generated.FileSystemWritableFileStream
+          GHCJS.DOM.JSFFI.Generated.FlacEncoderConfig
+          GHCJS.DOM.JSFFI.Generated.FocusEvent
+          GHCJS.DOM.JSFFI.Generated.FocusEventInit
+          GHCJS.DOM.JSFFI.Generated.FocusOptions
+          GHCJS.DOM.JSFFI.Generated.FontFace
+          GHCJS.DOM.JSFFI.Generated.FontFaceDescriptors
+          GHCJS.DOM.JSFFI.Generated.FontFaceSet
+          GHCJS.DOM.JSFFI.Generated.FontFaceSetLoadEvent
+          GHCJS.DOM.JSFFI.Generated.FontFaceSetLoadEventInit
+          GHCJS.DOM.JSFFI.Generated.FontFaceSource
+          GHCJS.DOM.JSFFI.Generated.FormData
+          GHCJS.DOM.JSFFI.Generated.FormDataEvent
+          GHCJS.DOM.JSFFI.Generated.FormDataEventInit
+          GHCJS.DOM.JSFFI.Generated.FragmentDirective
+          GHCJS.DOM.JSFFI.Generated.FrameRequestCallback
+          GHCJS.DOM.JSFFI.Generated.FullscreenOptions
+          GHCJS.DOM.JSFFI.Generated.FunctionStringCallback
+          GHCJS.DOM.JSFFI.Generated.GPU
+          GHCJS.DOM.JSFFI.Generated.GPUAdapter
+          GHCJS.DOM.JSFFI.Generated.GPUAdapterInfo
+          GHCJS.DOM.JSFFI.Generated.GPUBindGroup
+          GHCJS.DOM.JSFFI.Generated.GPUBindGroupDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUBindGroupEntry
+          GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayout
+          GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayoutDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayoutEntry
+          GHCJS.DOM.JSFFI.Generated.GPUBindingCommandsMixin
+          GHCJS.DOM.JSFFI.Generated.GPUBlendComponent
+          GHCJS.DOM.JSFFI.Generated.GPUBlendState
+          GHCJS.DOM.JSFFI.Generated.GPUBuffer
+          GHCJS.DOM.JSFFI.Generated.GPUBufferBinding
+          GHCJS.DOM.JSFFI.Generated.GPUBufferBindingLayout
+          GHCJS.DOM.JSFFI.Generated.GPUBufferDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUCanvasConfiguration
+          GHCJS.DOM.JSFFI.Generated.GPUCanvasContext
+          GHCJS.DOM.JSFFI.Generated.GPUCanvasToneMapping
+          GHCJS.DOM.JSFFI.Generated.GPUColorDict
+          GHCJS.DOM.JSFFI.Generated.GPUColorTargetState
+          GHCJS.DOM.JSFFI.Generated.GPUCommandBuffer
+          GHCJS.DOM.JSFFI.Generated.GPUCommandBufferDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUCommandEncoder
+          GHCJS.DOM.JSFFI.Generated.GPUCommandEncoderDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUCompilationInfo
+          GHCJS.DOM.JSFFI.Generated.GPUCompilationMessage
+          GHCJS.DOM.JSFFI.Generated.GPUComputePassDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUComputePassEncoder
+          GHCJS.DOM.JSFFI.Generated.GPUComputePassTimestampWrites
+          GHCJS.DOM.JSFFI.Generated.GPUComputePipeline
+          GHCJS.DOM.JSFFI.Generated.GPUComputePipelineDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUCopyExternalImageDestInfo
+          GHCJS.DOM.JSFFI.Generated.GPUCopyExternalImageSourceInfo
+          GHCJS.DOM.JSFFI.Generated.GPUDebugCommandsMixin
+          GHCJS.DOM.JSFFI.Generated.GPUDepthStencilState
+          GHCJS.DOM.JSFFI.Generated.GPUDevice
+          GHCJS.DOM.JSFFI.Generated.GPUDeviceDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUDeviceLostInfo
+          GHCJS.DOM.JSFFI.Generated.GPUError
+          GHCJS.DOM.JSFFI.Generated.GPUExtent3DDict
+          GHCJS.DOM.JSFFI.Generated.GPUExternalTexture
+          GHCJS.DOM.JSFFI.Generated.GPUExternalTextureBindingLayout
+          GHCJS.DOM.JSFFI.Generated.GPUExternalTextureDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUFragmentState
+          GHCJS.DOM.JSFFI.Generated.GPUInternalError
+          GHCJS.DOM.JSFFI.Generated.GPUMultisampleState
+          GHCJS.DOM.JSFFI.Generated.GPUObjectBase
+          GHCJS.DOM.JSFFI.Generated.GPUObjectDescriptorBase
+          GHCJS.DOM.JSFFI.Generated.GPUOrigin2DDict
+          GHCJS.DOM.JSFFI.Generated.GPUOrigin3DDict
+          GHCJS.DOM.JSFFI.Generated.GPUOutOfMemoryError
+          GHCJS.DOM.JSFFI.Generated.GPUPipelineBase
+          GHCJS.DOM.JSFFI.Generated.GPUPipelineDescriptorBase
+          GHCJS.DOM.JSFFI.Generated.GPUPipelineError
+          GHCJS.DOM.JSFFI.Generated.GPUPipelineErrorInit
+          GHCJS.DOM.JSFFI.Generated.GPUPipelineLayout
+          GHCJS.DOM.JSFFI.Generated.GPUPipelineLayoutDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUPrimitiveState
+          GHCJS.DOM.JSFFI.Generated.GPUProgrammableStage
+          GHCJS.DOM.JSFFI.Generated.GPUQuerySet
+          GHCJS.DOM.JSFFI.Generated.GPUQuerySetDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUQueue
+          GHCJS.DOM.JSFFI.Generated.GPUQueueDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPURenderBundle
+          GHCJS.DOM.JSFFI.Generated.GPURenderBundleDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPURenderBundleEncoder
+          GHCJS.DOM.JSFFI.Generated.GPURenderBundleEncoderDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPURenderCommandsMixin
+          GHCJS.DOM.JSFFI.Generated.GPURenderPassColorAttachment
+          GHCJS.DOM.JSFFI.Generated.GPURenderPassDepthStencilAttachment
+          GHCJS.DOM.JSFFI.Generated.GPURenderPassDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPURenderPassEncoder
+          GHCJS.DOM.JSFFI.Generated.GPURenderPassLayout
+          GHCJS.DOM.JSFFI.Generated.GPURenderPassTimestampWrites
+          GHCJS.DOM.JSFFI.Generated.GPURenderPipeline
+          GHCJS.DOM.JSFFI.Generated.GPURenderPipelineDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPURequestAdapterOptions
+          GHCJS.DOM.JSFFI.Generated.GPUSampler
+          GHCJS.DOM.JSFFI.Generated.GPUSamplerBindingLayout
+          GHCJS.DOM.JSFFI.Generated.GPUSamplerDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUShaderModule
+          GHCJS.DOM.JSFFI.Generated.GPUShaderModuleCompilationHint
+          GHCJS.DOM.JSFFI.Generated.GPUShaderModuleDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUStencilFaceState
+          GHCJS.DOM.JSFFI.Generated.GPUStorageTextureBindingLayout
+          GHCJS.DOM.JSFFI.Generated.GPUSupportedFeatures
+          GHCJS.DOM.JSFFI.Generated.GPUSupportedLimits
+          GHCJS.DOM.JSFFI.Generated.GPUTexelCopyBufferInfo
+          GHCJS.DOM.JSFFI.Generated.GPUTexelCopyBufferLayout
+          GHCJS.DOM.JSFFI.Generated.GPUTexelCopyTextureInfo
+          GHCJS.DOM.JSFFI.Generated.GPUTexture
+          GHCJS.DOM.JSFFI.Generated.GPUTextureBindingLayout
+          GHCJS.DOM.JSFFI.Generated.GPUTextureDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUTextureView
+          GHCJS.DOM.JSFFI.Generated.GPUTextureViewDescriptor
+          GHCJS.DOM.JSFFI.Generated.GPUUncapturedErrorEvent
+          GHCJS.DOM.JSFFI.Generated.GPUUncapturedErrorEventInit
+          GHCJS.DOM.JSFFI.Generated.GPUValidationError
+          GHCJS.DOM.JSFFI.Generated.GPUVertexAttribute
+          GHCJS.DOM.JSFFI.Generated.GPUVertexBufferLayout
+          GHCJS.DOM.JSFFI.Generated.GPUVertexState
+          GHCJS.DOM.JSFFI.Generated.GainNode
+          GHCJS.DOM.JSFFI.Generated.GainOptions
+          GHCJS.DOM.JSFFI.Generated.Gamepad
+          GHCJS.DOM.JSFFI.Generated.GamepadButton
+          GHCJS.DOM.JSFFI.Generated.GamepadEffectParameters
+          GHCJS.DOM.JSFFI.Generated.GamepadEvent
+          GHCJS.DOM.JSFFI.Generated.GamepadEventInit
+          GHCJS.DOM.JSFFI.Generated.GamepadHapticActuator
+          GHCJS.DOM.JSFFI.Generated.GenericTransformStream
+          GHCJS.DOM.JSFFI.Generated.Geolocation
+          GHCJS.DOM.JSFFI.Generated.GeolocationCoordinates
+          GHCJS.DOM.JSFFI.Generated.GeolocationPosition
+          GHCJS.DOM.JSFFI.Generated.GeolocationPositionError
+          GHCJS.DOM.JSFFI.Generated.GetAnimationsOptions
+          GHCJS.DOM.JSFFI.Generated.GetComposedRangesOptions
+          GHCJS.DOM.JSFFI.Generated.GetHTMLOptions
+          GHCJS.DOM.JSFFI.Generated.GetNotificationOptions
+          GHCJS.DOM.JSFFI.Generated.GetRootNodeOptions
+          GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers
+          GHCJS.DOM.JSFFI.Generated.HMACGetSecretInput
+          GHCJS.DOM.JSFFI.Generated.HMACGetSecretOutput
+          GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
+          GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLAudioElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBRElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBodyElement
+          GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
+          GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
+          GHCJS.DOM.JSFFI.Generated.HTMLCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLDListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDataElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDialogElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDivElement
+          GHCJS.DOM.JSFFI.Generated.HTMLElement
+          GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFontElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLFormElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHRElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils
+          GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
+          GHCJS.DOM.JSFFI.Generated.HTMLImageElement
+          GHCJS.DOM.JSFFI.Generated.HTMLInputElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLIElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLinkElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMapElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMetaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMeterElement
+          GHCJS.DOM.JSFFI.Generated.HTMLModElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOptionElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLOrSVGOrMathMLElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
+          GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
+          GHCJS.DOM.JSFFI.Generated.HTMLParamElement
+          GHCJS.DOM.JSFFI.Generated.HTMLPictureElement
+          GHCJS.DOM.JSFFI.Generated.HTMLPreElement
+          GHCJS.DOM.JSFFI.Generated.HTMLProgressElement
+          GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
+          GHCJS.DOM.JSFFI.Generated.HTMLScriptElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSelectedContentElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSlotElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSpanElement
+          GHCJS.DOM.JSFFI.Generated.HTMLStyleElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableColElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTimeElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTrackElement
+          GHCJS.DOM.JSFFI.Generated.HTMLUListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLUnknownElement
+          GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
+          GHCJS.DOM.JSFFI.Generated.HashChangeEvent
+          GHCJS.DOM.JSFFI.Generated.HashChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.Headers
+          GHCJS.DOM.JSFFI.Generated.HevcEncoderConfig
+          GHCJS.DOM.JSFFI.Generated.Highlight
+          GHCJS.DOM.JSFFI.Generated.HighlightHitResult
+          GHCJS.DOM.JSFFI.Generated.HighlightRegistry
+          GHCJS.DOM.JSFFI.Generated.HighlightsFromPointOptions
+          GHCJS.DOM.JSFFI.Generated.History
+          GHCJS.DOM.JSFFI.Generated.HyperlinkElementUtils
+          GHCJS.DOM.JSFFI.Generated.IDBCursor
+          GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
+          GHCJS.DOM.JSFFI.Generated.IDBDatabase
+          GHCJS.DOM.JSFFI.Generated.IDBDatabaseInfo
+          GHCJS.DOM.JSFFI.Generated.IDBFactory
+          GHCJS.DOM.JSFFI.Generated.IDBGetAllOptions
+          GHCJS.DOM.JSFFI.Generated.IDBIndex
+          GHCJS.DOM.JSFFI.Generated.IDBIndexParameters
+          GHCJS.DOM.JSFFI.Generated.IDBKeyRange
+          GHCJS.DOM.JSFFI.Generated.IDBObjectStore
+          GHCJS.DOM.JSFFI.Generated.IDBObjectStoreParameters
+          GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
+          GHCJS.DOM.JSFFI.Generated.IDBRecord
+          GHCJS.DOM.JSFFI.Generated.IDBRequest
+          GHCJS.DOM.JSFFI.Generated.IDBTransaction
+          GHCJS.DOM.JSFFI.Generated.IDBTransactionOptions
+          GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
+          GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.IIRFilterNode
+          GHCJS.DOM.JSFFI.Generated.IIRFilterOptions
+          GHCJS.DOM.JSFFI.Generated.IdentityCredentialRequestOptions
+          GHCJS.DOM.JSFFI.Generated.IdentityProviderConfig
+          GHCJS.DOM.JSFFI.Generated.IdentityProviderRequestOptions
+          GHCJS.DOM.JSFFI.Generated.IdleDeadline
+          GHCJS.DOM.JSFFI.Generated.IdleRequestCallback
+          GHCJS.DOM.JSFFI.Generated.IdleRequestOptions
+          GHCJS.DOM.JSFFI.Generated.ImageBitmap
+          GHCJS.DOM.JSFFI.Generated.ImageBitmapRenderingContext
+          GHCJS.DOM.JSFFI.Generated.ImageCapture
+          GHCJS.DOM.JSFFI.Generated.ImageData
+          GHCJS.DOM.JSFFI.Generated.ImageDataSettings
+          GHCJS.DOM.JSFFI.Generated.ImageDecodeOptions
+          GHCJS.DOM.JSFFI.Generated.ImageDecodeResult
+          GHCJS.DOM.JSFFI.Generated.ImageDecoder
+          GHCJS.DOM.JSFFI.Generated.ImageDecoderInit
+          GHCJS.DOM.JSFFI.Generated.ImageEncodeOptions
+          GHCJS.DOM.JSFFI.Generated.ImageTrack
+          GHCJS.DOM.JSFFI.Generated.ImageTrackList
+          GHCJS.DOM.JSFFI.Generated.ImportNodeOptions
+          GHCJS.DOM.JSFFI.Generated.InputDeviceCapabilities
+          GHCJS.DOM.JSFFI.Generated.InputDeviceInfo
+          GHCJS.DOM.JSFFI.Generated.InputEvent
+          GHCJS.DOM.JSFFI.Generated.InputEventInit
+          GHCJS.DOM.JSFFI.Generated.InstallEvent
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserver
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntryInit
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserverInit
+          GHCJS.DOM.JSFFI.Generated.JsonWebKey
+          GHCJS.DOM.JSFFI.Generated.KHR_parallel_shader_compile
+          GHCJS.DOM.JSFFI.Generated.KeySystemTrackConfiguration
+          GHCJS.DOM.JSFFI.Generated.KeyboardEvent
+          GHCJS.DOM.JSFFI.Generated.KeyboardEventInit
+          GHCJS.DOM.JSFFI.Generated.KeyframeAnimationOptions
+          GHCJS.DOM.JSFFI.Generated.KeyframeEffect
+          GHCJS.DOM.JSFFI.Generated.KeyframeEffectOptions
+          GHCJS.DOM.JSFFI.Generated.LargestContentfulPaint
+          GHCJS.DOM.JSFFI.Generated.LinkStyle
+          GHCJS.DOM.JSFFI.Generated.Location
+          GHCJS.DOM.JSFFI.Generated.Lock
+          GHCJS.DOM.JSFFI.Generated.LockGrantedCallback
+          GHCJS.DOM.JSFFI.Generated.LockInfo
+          GHCJS.DOM.JSFFI.Generated.LockManager
+          GHCJS.DOM.JSFFI.Generated.LockManagerSnapshot
+          GHCJS.DOM.JSFFI.Generated.LockOptions
+          GHCJS.DOM.JSFFI.Generated.MIDIAccess
+          GHCJS.DOM.JSFFI.Generated.MIDIConnectionEvent
+          GHCJS.DOM.JSFFI.Generated.MIDIConnectionEventInit
+          GHCJS.DOM.JSFFI.Generated.MIDIInput
+          GHCJS.DOM.JSFFI.Generated.MIDIInputMap
+          GHCJS.DOM.JSFFI.Generated.MIDIMessageEvent
+          GHCJS.DOM.JSFFI.Generated.MIDIMessageEventInit
+          GHCJS.DOM.JSFFI.Generated.MIDIOptions
+          GHCJS.DOM.JSFFI.Generated.MIDIOutput
+          GHCJS.DOM.JSFFI.Generated.MIDIOutputMap
+          GHCJS.DOM.JSFFI.Generated.MIDIPort
+          GHCJS.DOM.JSFFI.Generated.MathMLElement
+          GHCJS.DOM.JSFFI.Generated.MediaCapabilities
+          GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesDecodingInfo
+          GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesEncodingInfo
+          GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesInfo
+          GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesKeySystemConfiguration
+          GHCJS.DOM.JSFFI.Generated.MediaConfiguration
+          GHCJS.DOM.JSFFI.Generated.MediaDecodingConfiguration
+          GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo
+          GHCJS.DOM.JSFFI.Generated.MediaDevices
+          GHCJS.DOM.JSFFI.Generated.MediaEffectInfo
+          GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
+          GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceOptions
+          GHCJS.DOM.JSFFI.Generated.MediaEncodingConfiguration
+          GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent
+          GHCJS.DOM.JSFFI.Generated.MediaEncryptedEventInit
+          GHCJS.DOM.JSFFI.Generated.MediaError
+          GHCJS.DOM.JSFFI.Generated.MediaImage
+          GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
+          GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEventInit
+          GHCJS.DOM.JSFFI.Generated.MediaKeySession
+          GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap
+          GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess
+          GHCJS.DOM.JSFFI.Generated.MediaKeySystemConfiguration
+          GHCJS.DOM.JSFFI.Generated.MediaKeySystemMediaCapability
+          GHCJS.DOM.JSFFI.Generated.MediaKeys
+          GHCJS.DOM.JSFFI.Generated.MediaKeysPolicy
+          GHCJS.DOM.JSFFI.Generated.MediaList
+          GHCJS.DOM.JSFFI.Generated.MediaMetadata
+          GHCJS.DOM.JSFFI.Generated.MediaMetadataInit
+          GHCJS.DOM.JSFFI.Generated.MediaPositionState
+          GHCJS.DOM.JSFFI.Generated.MediaQueryList
+          GHCJS.DOM.JSFFI.Generated.MediaQueryListEvent
+          GHCJS.DOM.JSFFI.Generated.MediaQueryListEventInit
+          GHCJS.DOM.JSFFI.Generated.MediaRecorder
+          GHCJS.DOM.JSFFI.Generated.MediaRecorderOptions
+          GHCJS.DOM.JSFFI.Generated.MediaSession
+          GHCJS.DOM.JSFFI.Generated.MediaSessionActionDetails
+          GHCJS.DOM.JSFFI.Generated.MediaSessionActionHandler
+          GHCJS.DOM.JSFFI.Generated.MediaSettingsRange
+          GHCJS.DOM.JSFFI.Generated.MediaSource
+          GHCJS.DOM.JSFFI.Generated.MediaSourceHandle
+          GHCJS.DOM.JSFFI.Generated.MediaStream
+          GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
+          GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
+          GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceOptions
+          GHCJS.DOM.JSFFI.Generated.MediaStreamConstraints
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrack
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEventInit
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrackHandle
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrackProcessor
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrackProcessorInit
+          GHCJS.DOM.JSFFI.Generated.MediaTrackCapabilities
+          GHCJS.DOM.JSFFI.Generated.MediaTrackConstraintSet
+          GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints
+          GHCJS.DOM.JSFFI.Generated.MediaTrackSettings
+          GHCJS.DOM.JSFFI.Generated.MediaTrackSupportedConstraints
+          GHCJS.DOM.JSFFI.Generated.MessageChannel
+          GHCJS.DOM.JSFFI.Generated.MessageEvent
+          GHCJS.DOM.JSFFI.Generated.MessageEventInit
+          GHCJS.DOM.JSFFI.Generated.MessageEventTarget
+          GHCJS.DOM.JSFFI.Generated.MessagePort
+          GHCJS.DOM.JSFFI.Generated.MimeType
+          GHCJS.DOM.JSFFI.Generated.MimeTypeArray
+          GHCJS.DOM.JSFFI.Generated.MouseEvent
+          GHCJS.DOM.JSFFI.Generated.MouseEventInit
+          GHCJS.DOM.JSFFI.Generated.MultiCacheQueryOptions
+          GHCJS.DOM.JSFFI.Generated.MutationCallback
+          GHCJS.DOM.JSFFI.Generated.MutationObserver
+          GHCJS.DOM.JSFFI.Generated.MutationObserverInit
+          GHCJS.DOM.JSFFI.Generated.MutationRecord
+          GHCJS.DOM.JSFFI.Generated.NamedNodeMap
+          GHCJS.DOM.JSFFI.Generated.NavigateEvent
+          GHCJS.DOM.JSFFI.Generated.NavigateEventInit
+          GHCJS.DOM.JSFFI.Generated.Navigation
+          GHCJS.DOM.JSFFI.Generated.NavigationActivation
+          GHCJS.DOM.JSFFI.Generated.NavigationCurrentEntryChangeEvent
+          GHCJS.DOM.JSFFI.Generated.NavigationCurrentEntryChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.NavigationDestination
+          GHCJS.DOM.JSFFI.Generated.NavigationEvent
+          GHCJS.DOM.JSFFI.Generated.NavigationHistoryEntry
+          GHCJS.DOM.JSFFI.Generated.NavigationInterceptHandler
+          GHCJS.DOM.JSFFI.Generated.NavigationInterceptOptions
+          GHCJS.DOM.JSFFI.Generated.NavigationNavigateOptions
+          GHCJS.DOM.JSFFI.Generated.NavigationOptions
+          GHCJS.DOM.JSFFI.Generated.NavigationPrecommitController
+          GHCJS.DOM.JSFFI.Generated.NavigationPrecommitHandler
+          GHCJS.DOM.JSFFI.Generated.NavigationPreloadManager
+          GHCJS.DOM.JSFFI.Generated.NavigationPreloadState
+          GHCJS.DOM.JSFFI.Generated.NavigationReloadOptions
+          GHCJS.DOM.JSFFI.Generated.NavigationResult
+          GHCJS.DOM.JSFFI.Generated.NavigationTransition
+          GHCJS.DOM.JSFFI.Generated.NavigationUpdateCurrentEntryOptions
+          GHCJS.DOM.JSFFI.Generated.Navigator
+          GHCJS.DOM.JSFFI.Generated.NavigatorAutomationInformation
+          GHCJS.DOM.JSFFI.Generated.NavigatorBadge
+          GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware
+          GHCJS.DOM.JSFFI.Generated.NavigatorContentUtils
+          GHCJS.DOM.JSFFI.Generated.NavigatorCookies
+          GHCJS.DOM.JSFFI.Generated.NavigatorGPU
+          GHCJS.DOM.JSFFI.Generated.NavigatorID
+          GHCJS.DOM.JSFFI.Generated.NavigatorLanguage
+          GHCJS.DOM.JSFFI.Generated.NavigatorLocks
+          GHCJS.DOM.JSFFI.Generated.NavigatorLogin
+          GHCJS.DOM.JSFFI.Generated.NavigatorOnLine
+          GHCJS.DOM.JSFFI.Generated.NavigatorPlugins
+          GHCJS.DOM.JSFFI.Generated.NavigatorStorage
+          GHCJS.DOM.JSFFI.Generated.Node
+          GHCJS.DOM.JSFFI.Generated.NodeFilter
+          GHCJS.DOM.JSFFI.Generated.NodeIterator
+          GHCJS.DOM.JSFFI.Generated.NodeList
+          GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode
+          GHCJS.DOM.JSFFI.Generated.NonElementParentNode
+          GHCJS.DOM.JSFFI.Generated.Notification
+          GHCJS.DOM.JSFFI.Generated.NotificationAction
+          GHCJS.DOM.JSFFI.Generated.NotificationEvent
+          GHCJS.DOM.JSFFI.Generated.NotificationEventInit
+          GHCJS.DOM.JSFFI.Generated.NotificationOptions
+          GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback
+          GHCJS.DOM.JSFFI.Generated.OES_draw_buffers_indexed
+          GHCJS.DOM.JSFFI.Generated.OES_element_index_uint
+          GHCJS.DOM.JSFFI.Generated.OES_fbo_render_mipmap
+          GHCJS.DOM.JSFFI.Generated.OES_standard_derivatives
+          GHCJS.DOM.JSFFI.Generated.OES_texture_float
+          GHCJS.DOM.JSFFI.Generated.OES_texture_float_linear
+          GHCJS.DOM.JSFFI.Generated.OES_texture_half_float
+          GHCJS.DOM.JSFFI.Generated.OES_texture_half_float_linear
+          GHCJS.DOM.JSFFI.Generated.OES_vertex_array_object
+          GHCJS.DOM.JSFFI.Generated.OTPCredentialRequestOptions
+          GHCJS.DOM.JSFFI.Generated.OVR_multiview2
+          GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
+          GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEventInit
+          GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
+          GHCJS.DOM.JSFFI.Generated.OfflineAudioContextOptions
+          GHCJS.DOM.JSFFI.Generated.OffscreenCanvas
+          GHCJS.DOM.JSFFI.Generated.OffscreenCanvasRenderingContext2D
+          GHCJS.DOM.JSFFI.Generated.OptionalEffectTiming
+          GHCJS.DOM.JSFFI.Generated.OpusEncoderConfig
+          GHCJS.DOM.JSFFI.Generated.Origin
+          GHCJS.DOM.JSFFI.Generated.OscillatorNode
+          GHCJS.DOM.JSFFI.Generated.OscillatorOptions
+          GHCJS.DOM.JSFFI.Generated.OverconstrainedError
+          GHCJS.DOM.JSFFI.Generated.PageRevealEvent
+          GHCJS.DOM.JSFFI.Generated.PageRevealEventInit
+          GHCJS.DOM.JSFFI.Generated.PageSwapEvent
+          GHCJS.DOM.JSFFI.Generated.PageSwapEventInit
+          GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
+          GHCJS.DOM.JSFFI.Generated.PageTransitionEventInit
+          GHCJS.DOM.JSFFI.Generated.PaintTimingMixin
+          GHCJS.DOM.JSFFI.Generated.PannerNode
+          GHCJS.DOM.JSFFI.Generated.PannerOptions
+          GHCJS.DOM.JSFFI.Generated.ParentNode
+          GHCJS.DOM.JSFFI.Generated.ParseHTMLUnsafeOptions
+          GHCJS.DOM.JSFFI.Generated.PasswordCredential
+          GHCJS.DOM.JSFFI.Generated.PasswordCredentialData
+          GHCJS.DOM.JSFFI.Generated.Path2D
+          GHCJS.DOM.JSFFI.Generated.PayerErrors
+          GHCJS.DOM.JSFFI.Generated.PaymentCompleteDetails
+          GHCJS.DOM.JSFFI.Generated.PaymentCredentialInstrument
+          GHCJS.DOM.JSFFI.Generated.PaymentCurrencyAmount
+          GHCJS.DOM.JSFFI.Generated.PaymentDetailsBase
+          GHCJS.DOM.JSFFI.Generated.PaymentDetailsInit
+          GHCJS.DOM.JSFFI.Generated.PaymentDetailsModifier
+          GHCJS.DOM.JSFFI.Generated.PaymentDetailsUpdate
+          GHCJS.DOM.JSFFI.Generated.PaymentEntityLogo
+          GHCJS.DOM.JSFFI.Generated.PaymentItem
+          GHCJS.DOM.JSFFI.Generated.PaymentMethodChangeEvent
+          GHCJS.DOM.JSFFI.Generated.PaymentMethodChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.PaymentMethodData
+          GHCJS.DOM.JSFFI.Generated.PaymentOptions
+          GHCJS.DOM.JSFFI.Generated.PaymentRequest
+          GHCJS.DOM.JSFFI.Generated.PaymentRequestUpdateEvent
+          GHCJS.DOM.JSFFI.Generated.PaymentRequestUpdateEventInit
+          GHCJS.DOM.JSFFI.Generated.PaymentResponse
+          GHCJS.DOM.JSFFI.Generated.PaymentShippingOption
+          GHCJS.DOM.JSFFI.Generated.PaymentValidationErrors
+          GHCJS.DOM.JSFFI.Generated.Performance
+          GHCJS.DOM.JSFFI.Generated.PerformanceEntry
+          GHCJS.DOM.JSFFI.Generated.PerformanceEventTiming
+          GHCJS.DOM.JSFFI.Generated.PerformanceMark
+          GHCJS.DOM.JSFFI.Generated.PerformanceMarkOptions
+          GHCJS.DOM.JSFFI.Generated.PerformanceMeasure
+          GHCJS.DOM.JSFFI.Generated.PerformanceMeasureOptions
+          GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
+          GHCJS.DOM.JSFFI.Generated.PerformanceNavigationTiming
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserver
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallbackOptions
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserverInit
+          GHCJS.DOM.JSFFI.Generated.PerformancePaintTiming
+          GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
+          GHCJS.DOM.JSFFI.Generated.PerformanceServerTiming
+          GHCJS.DOM.JSFFI.Generated.PerformanceTiming
+          GHCJS.DOM.JSFFI.Generated.PeriodicWave
+          GHCJS.DOM.JSFFI.Generated.PeriodicWaveConstraints
+          GHCJS.DOM.JSFFI.Generated.PeriodicWaveOptions
+          GHCJS.DOM.JSFFI.Generated.PermissionStatus
+          GHCJS.DOM.JSFFI.Generated.Permissions
+          GHCJS.DOM.JSFFI.Generated.PhotoCapabilities
+          GHCJS.DOM.JSFFI.Generated.PhotoSettings
+          GHCJS.DOM.JSFFI.Generated.PictureInPictureEvent
+          GHCJS.DOM.JSFFI.Generated.PictureInPictureEventInit
+          GHCJS.DOM.JSFFI.Generated.PictureInPictureWindow
+          GHCJS.DOM.JSFFI.Generated.PlaneLayout
+          GHCJS.DOM.JSFFI.Generated.Plugin
+          GHCJS.DOM.JSFFI.Generated.PluginArray
+          GHCJS.DOM.JSFFI.Generated.Point2D
+          GHCJS.DOM.JSFFI.Generated.PointerEvent
+          GHCJS.DOM.JSFFI.Generated.PointerEventInit
+          GHCJS.DOM.JSFFI.Generated.PointerLockOptions
+          GHCJS.DOM.JSFFI.Generated.PopStateEvent
+          GHCJS.DOM.JSFFI.Generated.PopStateEventInit
+          GHCJS.DOM.JSFFI.Generated.PopoverTargetAttributes
+          GHCJS.DOM.JSFFI.Generated.PositionCallback
+          GHCJS.DOM.JSFFI.Generated.PositionErrorCallback
+          GHCJS.DOM.JSFFI.Generated.PositionOptions
+          GHCJS.DOM.JSFFI.Generated.PrivateToken
+          GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
+          GHCJS.DOM.JSFFI.Generated.ProgressEvent
+          GHCJS.DOM.JSFFI.Generated.ProgressEventInit
+          GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent
+          GHCJS.DOM.JSFFI.Generated.PromiseRejectionEventInit
+          GHCJS.DOM.JSFFI.Generated.PropertyDefinition
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredential
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialCreationOptions
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialCreationOptionsJSON
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialDescriptor
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialDescriptorJSON
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialEntity
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialParameters
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRequestOptions
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRequestOptionsJSON
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRpEntity
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialUserEntity
+          GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialUserEntityJSON
+          GHCJS.DOM.JSFFI.Generated.PushEvent
+          GHCJS.DOM.JSFFI.Generated.PushEventInit
+          GHCJS.DOM.JSFFI.Generated.PushManager
+          GHCJS.DOM.JSFFI.Generated.PushManagerAttribute
+          GHCJS.DOM.JSFFI.Generated.PushMessageData
+          GHCJS.DOM.JSFFI.Generated.PushSubscription
+          GHCJS.DOM.JSFFI.Generated.PushSubscriptionChangeEvent
+          GHCJS.DOM.JSFFI.Generated.PushSubscriptionChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.PushSubscriptionJSON
+          GHCJS.DOM.JSFFI.Generated.PushSubscriptionKeys
+          GHCJS.DOM.JSFFI.Generated.PushSubscriptionOptions
+          GHCJS.DOM.JSFFI.Generated.PushSubscriptionOptionsInit
+          GHCJS.DOM.JSFFI.Generated.QueuingStrategy
+          GHCJS.DOM.JSFFI.Generated.QueuingStrategyInit
+          GHCJS.DOM.JSFFI.Generated.QueuingStrategySize
+          GHCJS.DOM.JSFFI.Generated.RTCAnswerOptions
+          GHCJS.DOM.JSFFI.Generated.RTCCertificate
+          GHCJS.DOM.JSFFI.Generated.RTCConfiguration
+          GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
+          GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
+          GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.RTCDataChannel
+          GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
+          GHCJS.DOM.JSFFI.Generated.RTCDataChannelEventInit
+          GHCJS.DOM.JSFFI.Generated.RTCDataChannelInit
+          GHCJS.DOM.JSFFI.Generated.RTCDtlsFingerprint
+          GHCJS.DOM.JSFFI.Generated.RTCDtlsTransport
+          GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrame
+          GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrameMetadata
+          GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrameOptions
+          GHCJS.DOM.JSFFI.Generated.RTCEncodedFrameMetadata
+          GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrame
+          GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrameMetadata
+          GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrameOptions
+          GHCJS.DOM.JSFFI.Generated.RTCError
+          GHCJS.DOM.JSFFI.Generated.RTCErrorEvent
+          GHCJS.DOM.JSFFI.Generated.RTCErrorEventInit
+          GHCJS.DOM.JSFFI.Generated.RTCErrorInit
+          GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
+          GHCJS.DOM.JSFFI.Generated.RTCIceCandidateInit
+          GHCJS.DOM.JSFFI.Generated.RTCIceCandidatePair
+          GHCJS.DOM.JSFFI.Generated.RTCIceServer
+          GHCJS.DOM.JSFFI.Generated.RTCIceTransport
+          GHCJS.DOM.JSFFI.Generated.RTCLocalIceCandidateInit
+          GHCJS.DOM.JSFFI.Generated.RTCLocalSessionDescriptionInit
+          GHCJS.DOM.JSFFI.Generated.RTCOfferAnswerOptions
+          GHCJS.DOM.JSFFI.Generated.RTCOfferOptions
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnection
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceErrorEvent
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceErrorEventInit
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEventInit
+          GHCJS.DOM.JSFFI.Generated.RTCRtcpParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpCapabilities
+          GHCJS.DOM.JSFFI.Generated.RTCRtpCodec
+          GHCJS.DOM.JSFFI.Generated.RTCRtpCodecParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpCodingParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpContributingSource
+          GHCJS.DOM.JSFFI.Generated.RTCRtpEncodingParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpHeaderExtensionCapability
+          GHCJS.DOM.JSFFI.Generated.RTCRtpHeaderExtensionParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpReceiveParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver
+          GHCJS.DOM.JSFFI.Generated.RTCRtpSFrameDecryptor
+          GHCJS.DOM.JSFFI.Generated.RTCRtpSFrameEncryptor
+          GHCJS.DOM.JSFFI.Generated.RTCRtpScriptTransform
+          GHCJS.DOM.JSFFI.Generated.RTCRtpScriptTransformer
+          GHCJS.DOM.JSFFI.Generated.RTCRtpSendParameters
+          GHCJS.DOM.JSFFI.Generated.RTCRtpSender
+          GHCJS.DOM.JSFFI.Generated.RTCRtpSynchronizationSource
+          GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver
+          GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiverInit
+          GHCJS.DOM.JSFFI.Generated.RTCSctpTransport
+          GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
+          GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback
+          GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionInit
+          GHCJS.DOM.JSFFI.Generated.RTCSetParameterOptions
+          GHCJS.DOM.JSFFI.Generated.RTCStatsReport
+          GHCJS.DOM.JSFFI.Generated.RTCTrackEvent
+          GHCJS.DOM.JSFFI.Generated.RTCTrackEventInit
+          GHCJS.DOM.JSFFI.Generated.RTCTransformEvent
+          GHCJS.DOM.JSFFI.Generated.RadioNodeList
+          GHCJS.DOM.JSFFI.Generated.Range
+          GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController
+          GHCJS.DOM.JSFFI.Generated.ReadableStream
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReaderReadOptions
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamGenericReader
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamGetReaderOptions
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamReadResult
+          GHCJS.DOM.JSFFI.Generated.ReadableWritablePair
+          GHCJS.DOM.JSFFI.Generated.RegistrationOptions
+          GHCJS.DOM.JSFFI.Generated.RemotePlayback
+          GHCJS.DOM.JSFFI.Generated.RemotePlaybackAvailabilityCallback
+          GHCJS.DOM.JSFFI.Generated.Report
+          GHCJS.DOM.JSFFI.Generated.ReportBody
+          GHCJS.DOM.JSFFI.Generated.ReportingObserver
+          GHCJS.DOM.JSFFI.Generated.ReportingObserverCallback
+          GHCJS.DOM.JSFFI.Generated.ReportingObserverOptions
+          GHCJS.DOM.JSFFI.Generated.Request
+          GHCJS.DOM.JSFFI.Generated.RequestInit
+          GHCJS.DOM.JSFFI.Generated.ResizeObserver
+          GHCJS.DOM.JSFFI.Generated.ResizeObserverCallback
+          GHCJS.DOM.JSFFI.Generated.ResizeObserverEntry
+          GHCJS.DOM.JSFFI.Generated.ResizeObserverOptions
+          GHCJS.DOM.JSFFI.Generated.ResizeObserverSize
+          GHCJS.DOM.JSFFI.Generated.Response
+          GHCJS.DOM.JSFFI.Generated.ResponseInit
+          GHCJS.DOM.JSFFI.Generated.RouterCondition
+          GHCJS.DOM.JSFFI.Generated.RouterRule
+          GHCJS.DOM.JSFFI.Generated.RouterSourceDict
+          GHCJS.DOM.JSFFI.Generated.RsaOtherPrimesInfo
+          GHCJS.DOM.JSFFI.Generated.SVGAElement
+          GHCJS.DOM.JSFFI.Generated.SVGAngle
+          GHCJS.DOM.JSFFI.Generated.SVGAnimateElement
+          GHCJS.DOM.JSFFI.Generated.SVGAnimateMotionElement
+          GHCJS.DOM.JSFFI.Generated.SVGAnimateTransformElement
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedPoints
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
+          GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
+          GHCJS.DOM.JSFFI.Generated.SVGBoundingBoxOptions
+          GHCJS.DOM.JSFFI.Generated.SVGCircleElement
+          GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
+          GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
+          GHCJS.DOM.JSFFI.Generated.SVGDefsElement
+          GHCJS.DOM.JSFFI.Generated.SVGDescElement
+          GHCJS.DOM.JSFFI.Generated.SVGElement
+          GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
+          GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEFloodElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEFuncAElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEFuncBElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEFuncGElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEFuncRElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEMergeElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
+          GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
+          GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement
+          GHCJS.DOM.JSFFI.Generated.SVGFETileElement
+          GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement
+          GHCJS.DOM.JSFFI.Generated.SVGFilterElement
+          GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
+          GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
+          GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
+          GHCJS.DOM.JSFFI.Generated.SVGGElement
+          GHCJS.DOM.JSFFI.Generated.SVGGeometryElement
+          GHCJS.DOM.JSFFI.Generated.SVGGradientElement
+          GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
+          GHCJS.DOM.JSFFI.Generated.SVGImageElement
+          GHCJS.DOM.JSFFI.Generated.SVGLength
+          GHCJS.DOM.JSFFI.Generated.SVGLengthList
+          GHCJS.DOM.JSFFI.Generated.SVGLineElement
+          GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
+          GHCJS.DOM.JSFFI.Generated.SVGMPathElement
+          GHCJS.DOM.JSFFI.Generated.SVGMarkerElement
+          GHCJS.DOM.JSFFI.Generated.SVGMaskElement
+          GHCJS.DOM.JSFFI.Generated.SVGMetadataElement
+          GHCJS.DOM.JSFFI.Generated.SVGNumber
+          GHCJS.DOM.JSFFI.Generated.SVGNumberList
+          GHCJS.DOM.JSFFI.Generated.SVGPathElement
+          GHCJS.DOM.JSFFI.Generated.SVGPatternElement
+          GHCJS.DOM.JSFFI.Generated.SVGPointList
+          GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
+          GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
+          GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio
+          GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement
+          GHCJS.DOM.JSFFI.Generated.SVGRectElement
+          GHCJS.DOM.JSFFI.Generated.SVGSVGElement
+          GHCJS.DOM.JSFFI.Generated.SVGScriptElement
+          GHCJS.DOM.JSFFI.Generated.SVGSetElement
+          GHCJS.DOM.JSFFI.Generated.SVGStopElement
+          GHCJS.DOM.JSFFI.Generated.SVGStringList
+          GHCJS.DOM.JSFFI.Generated.SVGStyleElement
+          GHCJS.DOM.JSFFI.Generated.SVGSwitchElement
+          GHCJS.DOM.JSFFI.Generated.SVGSymbolElement
+          GHCJS.DOM.JSFFI.Generated.SVGTSpanElement
+          GHCJS.DOM.JSFFI.Generated.SVGTests
+          GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
+          GHCJS.DOM.JSFFI.Generated.SVGTextElement
+          GHCJS.DOM.JSFFI.Generated.SVGTextPathElement
+          GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
+          GHCJS.DOM.JSFFI.Generated.SVGTitleElement
+          GHCJS.DOM.JSFFI.Generated.SVGTransform
+          GHCJS.DOM.JSFFI.Generated.SVGTransformList
+          GHCJS.DOM.JSFFI.Generated.SVGURIReference
+          GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
+          GHCJS.DOM.JSFFI.Generated.SVGUseElement
+          GHCJS.DOM.JSFFI.Generated.SVGViewElement
+          GHCJS.DOM.JSFFI.Generated.Sanitizer
+          GHCJS.DOM.JSFFI.Generated.SanitizerAttributeNamespace
+          GHCJS.DOM.JSFFI.Generated.SanitizerConfig
+          GHCJS.DOM.JSFFI.Generated.SanitizerElementNamespace
+          GHCJS.DOM.JSFFI.Generated.SanitizerElementNamespaceWithAttributes
+          GHCJS.DOM.JSFFI.Generated.SanitizerProcessingInstruction
+          GHCJS.DOM.JSFFI.Generated.Scheduler
+          GHCJS.DOM.JSFFI.Generated.SchedulerPostTaskCallback
+          GHCJS.DOM.JSFFI.Generated.SchedulerPostTaskOptions
+          GHCJS.DOM.JSFFI.Generated.Screen
+          GHCJS.DOM.JSFFI.Generated.ScreenDetailed
+          GHCJS.DOM.JSFFI.Generated.ScreenOrientation
+          GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
+          GHCJS.DOM.JSFFI.Generated.ScrollIntoViewOptions
+          GHCJS.DOM.JSFFI.Generated.ScrollOptions
+          GHCJS.DOM.JSFFI.Generated.ScrollResult
+          GHCJS.DOM.JSFFI.Generated.ScrollTimeline
+          GHCJS.DOM.JSFFI.Generated.ScrollTimelineOptions
+          GHCJS.DOM.JSFFI.Generated.ScrollToOptions
+          GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
+          GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEventInit
+          GHCJS.DOM.JSFFI.Generated.Segment
+          GHCJS.DOM.JSFFI.Generated.Selection
+          GHCJS.DOM.JSFFI.Generated.Serial
+          GHCJS.DOM.JSFFI.Generated.SerialInputSignals
+          GHCJS.DOM.JSFFI.Generated.SerialOptions
+          GHCJS.DOM.JSFFI.Generated.SerialOutputSignals
+          GHCJS.DOM.JSFFI.Generated.SerialPort
+          GHCJS.DOM.JSFFI.Generated.SerialPortFilter
+          GHCJS.DOM.JSFFI.Generated.SerialPortInfo
+          GHCJS.DOM.JSFFI.Generated.SerialPortRequestOptions
+          GHCJS.DOM.JSFFI.Generated.ServiceWorker
+          GHCJS.DOM.JSFFI.Generated.ServiceWorkerContainer
+          GHCJS.DOM.JSFFI.Generated.ServiceWorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.ServiceWorkerRegistration
+          GHCJS.DOM.JSFFI.Generated.SetHTMLOptions
+          GHCJS.DOM.JSFFI.Generated.SetHTMLUnsafeOptions
+          GHCJS.DOM.JSFFI.Generated.ShadowRoot
+          GHCJS.DOM.JSFFI.Generated.ShadowRootInit
+          GHCJS.DOM.JSFFI.Generated.ShareData
+          GHCJS.DOM.JSFFI.Generated.SharedWorker
+          GHCJS.DOM.JSFFI.Generated.SharedWorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.SharedWorkerOptions
+          GHCJS.DOM.JSFFI.Generated.ShowPopoverOptions
+          GHCJS.DOM.JSFFI.Generated.Slottable
+          GHCJS.DOM.JSFFI.Generated.SourceBuffer
+          GHCJS.DOM.JSFFI.Generated.SourceBufferList
+          GHCJS.DOM.JSFFI.Generated.SpeechGrammar
+          GHCJS.DOM.JSFFI.Generated.SpeechGrammarList
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognition
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionAlternative
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionErrorEvent
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionErrorEventInit
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionEvent
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionEventInit
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionOptions
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionPhrase
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionResult
+          GHCJS.DOM.JSFFI.Generated.SpeechRecognitionResultList
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisErrorEvent
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisErrorEventInit
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEventInit
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
+          GHCJS.DOM.JSFFI.Generated.StartViewTransitionOptions
+          GHCJS.DOM.JSFFI.Generated.StaticRange
+          GHCJS.DOM.JSFFI.Generated.StaticRangeInit
+          GHCJS.DOM.JSFFI.Generated.StereoPannerNode
+          GHCJS.DOM.JSFFI.Generated.StereoPannerOptions
+          GHCJS.DOM.JSFFI.Generated.Storage
+          GHCJS.DOM.JSFFI.Generated.StorageEstimate
+          GHCJS.DOM.JSFFI.Generated.StorageEvent
+          GHCJS.DOM.JSFFI.Generated.StorageEventInit
+          GHCJS.DOM.JSFFI.Generated.StorageManager
+          GHCJS.DOM.JSFFI.Generated.StreamPipeOptions
+          GHCJS.DOM.JSFFI.Generated.StructuredSerializeOptions
+          GHCJS.DOM.JSFFI.Generated.StylePropertyMap
+          GHCJS.DOM.JSFFI.Generated.StylePropertyMapReadOnly
+          GHCJS.DOM.JSFFI.Generated.StyleSheet
+          GHCJS.DOM.JSFFI.Generated.StyleSheetList
+          GHCJS.DOM.JSFFI.Generated.SubmitEvent
+          GHCJS.DOM.JSFFI.Generated.SubmitEventInit
+          GHCJS.DOM.JSFFI.Generated.SubtleCrypto
+          GHCJS.DOM.JSFFI.Generated.SvcOutputMetadata
+          GHCJS.DOM.JSFFI.Generated.TaskController
+          GHCJS.DOM.JSFFI.Generated.TaskControllerInit
+          GHCJS.DOM.JSFFI.Generated.TaskPriorityChangeEvent
+          GHCJS.DOM.JSFFI.Generated.TaskPriorityChangeEventInit
+          GHCJS.DOM.JSFFI.Generated.TaskSignal
+          GHCJS.DOM.JSFFI.Generated.TaskSignalAnyInit
+          GHCJS.DOM.JSFFI.Generated.Text
+          GHCJS.DOM.JSFFI.Generated.TextDecodeOptions
+          GHCJS.DOM.JSFFI.Generated.TextDecoder
+          GHCJS.DOM.JSFFI.Generated.TextDecoderCommon
+          GHCJS.DOM.JSFFI.Generated.TextDecoderOptions
+          GHCJS.DOM.JSFFI.Generated.TextDecoderStream
+          GHCJS.DOM.JSFFI.Generated.TextEncoder
+          GHCJS.DOM.JSFFI.Generated.TextEncoderCommon
+          GHCJS.DOM.JSFFI.Generated.TextEncoderEncodeIntoResult
+          GHCJS.DOM.JSFFI.Generated.TextEncoderStream
+          GHCJS.DOM.JSFFI.Generated.TextEvent
+          GHCJS.DOM.JSFFI.Generated.TextMetrics
+          GHCJS.DOM.JSFFI.Generated.TextTrack
+          GHCJS.DOM.JSFFI.Generated.TextTrackCue
+          GHCJS.DOM.JSFFI.Generated.TextTrackCueList
+          GHCJS.DOM.JSFFI.Generated.TextTrackList
+          GHCJS.DOM.JSFFI.Generated.TimeRanges
+          GHCJS.DOM.JSFFI.Generated.TimelineRangeOffset
+          GHCJS.DOM.JSFFI.Generated.ToggleEvent
+          GHCJS.DOM.JSFFI.Generated.ToggleEventInit
+          GHCJS.DOM.JSFFI.Generated.TogglePopoverOptions
+          GHCJS.DOM.JSFFI.Generated.Touch
+          GHCJS.DOM.JSFFI.Generated.TouchEvent
+          GHCJS.DOM.JSFFI.Generated.TouchEventInit
+          GHCJS.DOM.JSFFI.Generated.TouchInit
+          GHCJS.DOM.JSFFI.Generated.TouchList
+          GHCJS.DOM.JSFFI.Generated.TrackEvent
+          GHCJS.DOM.JSFFI.Generated.TrackEventInit
+          GHCJS.DOM.JSFFI.Generated.TransformStream
+          GHCJS.DOM.JSFFI.Generated.TransformStreamDefaultController
+          GHCJS.DOM.JSFFI.Generated.TransitionEvent
+          GHCJS.DOM.JSFFI.Generated.TransitionEventInit
+          GHCJS.DOM.JSFFI.Generated.TreeWalker
+          GHCJS.DOM.JSFFI.Generated.TrustedHTML
+          GHCJS.DOM.JSFFI.Generated.TrustedHTMLParserOptions
+          GHCJS.DOM.JSFFI.Generated.TrustedScript
+          GHCJS.DOM.JSFFI.Generated.TrustedScriptURL
+          GHCJS.DOM.JSFFI.Generated.TrustedTypePolicy
+          GHCJS.DOM.JSFFI.Generated.TrustedTypePolicyFactory
+          GHCJS.DOM.JSFFI.Generated.TrustedTypePolicyOptions
+          GHCJS.DOM.JSFFI.Generated.UIEvent
+          GHCJS.DOM.JSFFI.Generated.UIEventInit
+          GHCJS.DOM.JSFFI.Generated.ULongRange
+          GHCJS.DOM.JSFFI.Generated.URL
+          GHCJS.DOM.JSFFI.Generated.URLPattern
+          GHCJS.DOM.JSFFI.Generated.URLPatternComponentResult
+          GHCJS.DOM.JSFFI.Generated.URLPatternInit
+          GHCJS.DOM.JSFFI.Generated.URLPatternOptions
+          GHCJS.DOM.JSFFI.Generated.URLPatternResult
+          GHCJS.DOM.JSFFI.Generated.URLSearchParams
+          GHCJS.DOM.JSFFI.Generated.UnknownCredentialOptions
+          GHCJS.DOM.JSFFI.Generated.UserActivation
+          GHCJS.DOM.JSFFI.Generated.VTTCue
+          GHCJS.DOM.JSFFI.Generated.VTTRegion
+          GHCJS.DOM.JSFFI.Generated.ValidityState
+          GHCJS.DOM.JSFFI.Generated.ValidityStateFlags
+          GHCJS.DOM.JSFFI.Generated.VideoColorSpace
+          GHCJS.DOM.JSFFI.Generated.VideoColorSpaceInit
+          GHCJS.DOM.JSFFI.Generated.VideoConfiguration
+          GHCJS.DOM.JSFFI.Generated.VideoDecoder
+          GHCJS.DOM.JSFFI.Generated.VideoDecoderConfig
+          GHCJS.DOM.JSFFI.Generated.VideoDecoderInit
+          GHCJS.DOM.JSFFI.Generated.VideoDecoderSupport
+          GHCJS.DOM.JSFFI.Generated.VideoEncoder
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderConfig
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptions
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForAv1
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForAvc
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForHevc
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForVp9
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderInit
+          GHCJS.DOM.JSFFI.Generated.VideoEncoderSupport
+          GHCJS.DOM.JSFFI.Generated.VideoFrame
+          GHCJS.DOM.JSFFI.Generated.VideoFrameBufferInit
+          GHCJS.DOM.JSFFI.Generated.VideoFrameCallbackMetadata
+          GHCJS.DOM.JSFFI.Generated.VideoFrameCopyToOptions
+          GHCJS.DOM.JSFFI.Generated.VideoFrameInit
+          GHCJS.DOM.JSFFI.Generated.VideoFrameMetadata
+          GHCJS.DOM.JSFFI.Generated.VideoFrameOutputCallback
+          GHCJS.DOM.JSFFI.Generated.VideoFrameRequestCallback
+          GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
+          GHCJS.DOM.JSFFI.Generated.VideoTrack
+          GHCJS.DOM.JSFFI.Generated.VideoTrackList
+          GHCJS.DOM.JSFFI.Generated.ViewTimeline
+          GHCJS.DOM.JSFFI.Generated.ViewTimelineOptions
+          GHCJS.DOM.JSFFI.Generated.ViewTransition
+          GHCJS.DOM.JSFFI.Generated.ViewTransitionTypeSet
+          GHCJS.DOM.JSFFI.Generated.ViewTransitionUpdateCallback
+          GHCJS.DOM.JSFFI.Generated.VisualViewport
+          GHCJS.DOM.JSFFI.Generated.VoidFunction
+          GHCJS.DOM.JSFFI.Generated.WEBGL_color_buffer_float
+          GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_astc
+          GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_etc
+          GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_etc1
+          GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_pvrtc
+          GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_s3tc
+          GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_s3tc_srgb
+          GHCJS.DOM.JSFFI.Generated.WEBGL_debug_renderer_info
+          GHCJS.DOM.JSFFI.Generated.WEBGL_debug_shaders
+          GHCJS.DOM.JSFFI.Generated.WEBGL_depth_texture
+          GHCJS.DOM.JSFFI.Generated.WEBGL_draw_buffers
+          GHCJS.DOM.JSFFI.Generated.WEBGL_lose_context
+          GHCJS.DOM.JSFFI.Generated.WEBGL_multi_draw
+          GHCJS.DOM.JSFFI.Generated.WGSLLanguageFeatures
+          GHCJS.DOM.JSFFI.Generated.WakeLock
+          GHCJS.DOM.JSFFI.Generated.WakeLockSentinel
+          GHCJS.DOM.JSFFI.Generated.WaveShaperNode
+          GHCJS.DOM.JSFFI.Generated.WaveShaperOptions
+          GHCJS.DOM.JSFFI.Generated.WebCodecsErrorCallback
+          GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
+          GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContextBase
+          GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContextOverloads
+          GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
+          GHCJS.DOM.JSFFI.Generated.WebGLBuffer
+          GHCJS.DOM.JSFFI.Generated.WebGLContextAttributes
+          GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
+          GHCJS.DOM.JSFFI.Generated.WebGLContextEventInit
+          GHCJS.DOM.JSFFI.Generated.WebGLFramebuffer
+          GHCJS.DOM.JSFFI.Generated.WebGLObject
+          GHCJS.DOM.JSFFI.Generated.WebGLProgram
+          GHCJS.DOM.JSFFI.Generated.WebGLQuery
+          GHCJS.DOM.JSFFI.Generated.WebGLRenderbuffer
+          GHCJS.DOM.JSFFI.Generated.WebGLRenderingContext
+          GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
+          GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextOverloads
+          GHCJS.DOM.JSFFI.Generated.WebGLSampler
+          GHCJS.DOM.JSFFI.Generated.WebGLShader
+          GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
+          GHCJS.DOM.JSFFI.Generated.WebGLSync
+          GHCJS.DOM.JSFFI.Generated.WebGLTexture
+          GHCJS.DOM.JSFFI.Generated.WebGLTransformFeedback
+          GHCJS.DOM.JSFFI.Generated.WebGLUniformLocation
+          GHCJS.DOM.JSFFI.Generated.WebGLVertexArrayObject
+          GHCJS.DOM.JSFFI.Generated.WebGLVertexArrayObjectOES
+          GHCJS.DOM.JSFFI.Generated.WebSocket
+          GHCJS.DOM.JSFFI.Generated.WebTransport
+          GHCJS.DOM.JSFFI.Generated.WebTransportBidirectionalStream
+          GHCJS.DOM.JSFFI.Generated.WebTransportCloseInfo
+          GHCJS.DOM.JSFFI.Generated.WebTransportConnectionStats
+          GHCJS.DOM.JSFFI.Generated.WebTransportDatagramDuplexStream
+          GHCJS.DOM.JSFFI.Generated.WebTransportDatagramStats
+          GHCJS.DOM.JSFFI.Generated.WebTransportDatagramsWritable
+          GHCJS.DOM.JSFFI.Generated.WebTransportError
+          GHCJS.DOM.JSFFI.Generated.WebTransportErrorOptions
+          GHCJS.DOM.JSFFI.Generated.WebTransportHash
+          GHCJS.DOM.JSFFI.Generated.WebTransportOptions
+          GHCJS.DOM.JSFFI.Generated.WebTransportReceiveStream
+          GHCJS.DOM.JSFFI.Generated.WebTransportReceiveStreamStats
+          GHCJS.DOM.JSFFI.Generated.WebTransportSendGroup
+          GHCJS.DOM.JSFFI.Generated.WebTransportSendOptions
+          GHCJS.DOM.JSFFI.Generated.WebTransportSendStream
+          GHCJS.DOM.JSFFI.Generated.WebTransportSendStreamOptions
+          GHCJS.DOM.JSFFI.Generated.WebTransportSendStreamStats
+          GHCJS.DOM.JSFFI.Generated.WebTransportWriter
+          GHCJS.DOM.JSFFI.Generated.WheelEvent
+          GHCJS.DOM.JSFFI.Generated.WheelEventInit
+          GHCJS.DOM.JSFFI.Generated.Window
+          GHCJS.DOM.JSFFI.Generated.WindowClient
+          GHCJS.DOM.JSFFI.Generated.WindowEventHandlers
+          GHCJS.DOM.JSFFI.Generated.WindowLocalStorage
+          GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.WindowPostMessageOptions
+          GHCJS.DOM.JSFFI.Generated.WindowSessionStorage
+          GHCJS.DOM.JSFFI.Generated.Worker
+          GHCJS.DOM.JSFFI.Generated.WorkerAndParameters
+          GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.WorkerLocation
+          GHCJS.DOM.JSFFI.Generated.WorkerNavigator
+          GHCJS.DOM.JSFFI.Generated.WorkerOptions
+          GHCJS.DOM.JSFFI.Generated.Worklet
+          GHCJS.DOM.JSFFI.Generated.WorkletGlobalScope
+          GHCJS.DOM.JSFFI.Generated.WorkletOptions
+          GHCJS.DOM.JSFFI.Generated.WritableStream
+          GHCJS.DOM.JSFFI.Generated.WritableStreamDefaultController
+          GHCJS.DOM.JSFFI.Generated.WritableStreamDefaultWriter
+          GHCJS.DOM.JSFFI.Generated.WriteParams
+          GHCJS.DOM.JSFFI.Generated.XMLDocument
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequest
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload
+          GHCJS.DOM.JSFFI.Generated.XMLSerializer
+          GHCJS.DOM.JSFFI.Generated.XPathEvaluator
+          GHCJS.DOM.JSFFI.Generated.XPathEvaluatorBase
+          GHCJS.DOM.JSFFI.Generated.XPathExpression
+          GHCJS.DOM.JSFFI.Generated.XPathNSResolver
+          GHCJS.DOM.JSFFI.Generated.XPathResult
+          GHCJS.DOM.JSFFI.Generated.XSLTProcessor
+
+    reexported-modules:
+            GHCJS.DOM.JSFFI.Geolocation as GHCJS.DOM.Geolocation
+          , GHCJS.DOM.JSFFI.GeolocationPositionError as GHCJS.DOM.GeolocationPositionError
+          , GHCJS.DOM.JSFFI.XMLHttpRequest as GHCJS.DOM.XMLHttpRequest
+          , GHCJS.DOM.JSFFI.Generated.ANGLE_instanced_arrays as GHCJS.DOM.ANGLE_instanced_arrays
+          , GHCJS.DOM.JSFFI.Generated.ARIAMixin as GHCJS.DOM.ARIAMixin
+          , GHCJS.DOM.JSFFI.Generated.ARIANotifyMixin as GHCJS.DOM.ARIANotifyMixin
+          , GHCJS.DOM.JSFFI.Generated.AacEncoderConfig as GHCJS.DOM.AacEncoderConfig
+          , GHCJS.DOM.JSFFI.Generated.AbortController as GHCJS.DOM.AbortController
+          , GHCJS.DOM.JSFFI.Generated.AbortSignal as GHCJS.DOM.AbortSignal
+          , GHCJS.DOM.JSFFI.Generated.AbstractRange as GHCJS.DOM.AbstractRange
+          , GHCJS.DOM.JSFFI.Generated.AbstractWorker as GHCJS.DOM.AbstractWorker
+          , GHCJS.DOM.JSFFI.Generated.AddEventListenerOptions as GHCJS.DOM.AddEventListenerOptions
+          , GHCJS.DOM.JSFFI.Generated.AddressErrors as GHCJS.DOM.AddressErrors
+          , GHCJS.DOM.JSFFI.Generated.AllAcceptedCredentialsOptions as GHCJS.DOM.AllAcceptedCredentialsOptions
+          , GHCJS.DOM.JSFFI.Generated.AnalyserNode as GHCJS.DOM.AnalyserNode
+          , GHCJS.DOM.JSFFI.Generated.AnalyserOptions as GHCJS.DOM.AnalyserOptions
+          , GHCJS.DOM.JSFFI.Generated.Animatable as GHCJS.DOM.Animatable
+          , GHCJS.DOM.JSFFI.Generated.Animation as GHCJS.DOM.Animation
+          , GHCJS.DOM.JSFFI.Generated.AnimationEffect as GHCJS.DOM.AnimationEffect
+          , GHCJS.DOM.JSFFI.Generated.AnimationEvent as GHCJS.DOM.AnimationEvent
+          , GHCJS.DOM.JSFFI.Generated.AnimationEventInit as GHCJS.DOM.AnimationEventInit
+          , GHCJS.DOM.JSFFI.Generated.AnimationFrameProvider as GHCJS.DOM.AnimationFrameProvider
+          , GHCJS.DOM.JSFFI.Generated.AnimationPlaybackEvent as GHCJS.DOM.AnimationPlaybackEvent
+          , GHCJS.DOM.JSFFI.Generated.AnimationPlaybackEventInit as GHCJS.DOM.AnimationPlaybackEventInit
+          , GHCJS.DOM.JSFFI.Generated.AnimationTimeline as GHCJS.DOM.AnimationTimeline
+          , GHCJS.DOM.JSFFI.Generated.AnimationTrigger as GHCJS.DOM.AnimationTrigger
+          , GHCJS.DOM.JSFFI.Generated.AriaNotificationOptions as GHCJS.DOM.AriaNotificationOptions
+          , GHCJS.DOM.JSFFI.Generated.AssignedNodesOptions as GHCJS.DOM.AssignedNodesOptions
+          , GHCJS.DOM.JSFFI.Generated.Attr as GHCJS.DOM.Attr
+          , GHCJS.DOM.JSFFI.Generated.AudioBuffer as GHCJS.DOM.AudioBuffer
+          , GHCJS.DOM.JSFFI.Generated.AudioBufferOptions as GHCJS.DOM.AudioBufferOptions
+          , GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode as GHCJS.DOM.AudioBufferSourceNode
+          , GHCJS.DOM.JSFFI.Generated.AudioBufferSourceOptions as GHCJS.DOM.AudioBufferSourceOptions
+          , GHCJS.DOM.JSFFI.Generated.AudioConfiguration as GHCJS.DOM.AudioConfiguration
+          , GHCJS.DOM.JSFFI.Generated.AudioContext as GHCJS.DOM.AudioContext
+          , GHCJS.DOM.JSFFI.Generated.AudioContextOptions as GHCJS.DOM.AudioContextOptions
+          , GHCJS.DOM.JSFFI.Generated.AudioData as GHCJS.DOM.AudioData
+          , GHCJS.DOM.JSFFI.Generated.AudioDataCopyToOptions as GHCJS.DOM.AudioDataCopyToOptions
+          , GHCJS.DOM.JSFFI.Generated.AudioDataInit as GHCJS.DOM.AudioDataInit
+          , GHCJS.DOM.JSFFI.Generated.AudioDataOutputCallback as GHCJS.DOM.AudioDataOutputCallback
+          , GHCJS.DOM.JSFFI.Generated.AudioDecoder as GHCJS.DOM.AudioDecoder
+          , GHCJS.DOM.JSFFI.Generated.AudioDecoderConfig as GHCJS.DOM.AudioDecoderConfig
+          , GHCJS.DOM.JSFFI.Generated.AudioDecoderInit as GHCJS.DOM.AudioDecoderInit
+          , GHCJS.DOM.JSFFI.Generated.AudioDecoderSupport as GHCJS.DOM.AudioDecoderSupport
+          , GHCJS.DOM.JSFFI.Generated.AudioDestinationNode as GHCJS.DOM.AudioDestinationNode
+          , GHCJS.DOM.JSFFI.Generated.AudioEncoder as GHCJS.DOM.AudioEncoder
+          , GHCJS.DOM.JSFFI.Generated.AudioEncoderConfig as GHCJS.DOM.AudioEncoderConfig
+          , GHCJS.DOM.JSFFI.Generated.AudioEncoderInit as GHCJS.DOM.AudioEncoderInit
+          , GHCJS.DOM.JSFFI.Generated.AudioEncoderSupport as GHCJS.DOM.AudioEncoderSupport
+          , GHCJS.DOM.JSFFI.Generated.AudioListener as GHCJS.DOM.AudioListener
+          , GHCJS.DOM.JSFFI.Generated.AudioNode as GHCJS.DOM.AudioNode
+          , GHCJS.DOM.JSFFI.Generated.AudioNodeOptions as GHCJS.DOM.AudioNodeOptions
+          , GHCJS.DOM.JSFFI.Generated.AudioParam as GHCJS.DOM.AudioParam
+          , GHCJS.DOM.JSFFI.Generated.AudioParamMap as GHCJS.DOM.AudioParamMap
+          , GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent as GHCJS.DOM.AudioProcessingEvent
+          , GHCJS.DOM.JSFFI.Generated.AudioProcessingEventInit as GHCJS.DOM.AudioProcessingEventInit
+          , GHCJS.DOM.JSFFI.Generated.AudioScheduledSourceNode as GHCJS.DOM.AudioScheduledSourceNode
+          , GHCJS.DOM.JSFFI.Generated.AudioSinkOptions as GHCJS.DOM.AudioSinkOptions
+          , GHCJS.DOM.JSFFI.Generated.AudioTimestamp as GHCJS.DOM.AudioTimestamp
+          , GHCJS.DOM.JSFFI.Generated.AudioTrack as GHCJS.DOM.AudioTrack
+          , GHCJS.DOM.JSFFI.Generated.AudioTrackList as GHCJS.DOM.AudioTrackList
+          , GHCJS.DOM.JSFFI.Generated.AudioWorklet as GHCJS.DOM.AudioWorklet
+          , GHCJS.DOM.JSFFI.Generated.AudioWorkletGlobalScope as GHCJS.DOM.AudioWorkletGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.AudioWorkletNode as GHCJS.DOM.AudioWorkletNode
+          , GHCJS.DOM.JSFFI.Generated.AudioWorkletNodeOptions as GHCJS.DOM.AudioWorkletNodeOptions
+          , GHCJS.DOM.JSFFI.Generated.AudioWorkletProcessor as GHCJS.DOM.AudioWorkletProcessor
+          , GHCJS.DOM.JSFFI.Generated.AudioWorkletProcessorConstructor as GHCJS.DOM.AudioWorkletProcessorConstructor
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientInputs as GHCJS.DOM.AuthenticationExtensionsClientInputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientInputsJSON as GHCJS.DOM.AuthenticationExtensionsClientInputsJSON
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientOutputs as GHCJS.DOM.AuthenticationExtensionsClientOutputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobInputs as GHCJS.DOM.AuthenticationExtensionsLargeBlobInputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobInputsJSON as GHCJS.DOM.AuthenticationExtensionsLargeBlobInputsJSON
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobOutputs as GHCJS.DOM.AuthenticationExtensionsLargeBlobOutputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFInputs as GHCJS.DOM.AuthenticationExtensionsPRFInputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFInputsJSON as GHCJS.DOM.AuthenticationExtensionsPRFInputsJSON
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFOutputs as GHCJS.DOM.AuthenticationExtensionsPRFOutputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFValues as GHCJS.DOM.AuthenticationExtensionsPRFValues
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFValuesJSON as GHCJS.DOM.AuthenticationExtensionsPRFValuesJSON
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPaymentInputs as GHCJS.DOM.AuthenticationExtensionsPaymentInputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPaymentOutputs as GHCJS.DOM.AuthenticationExtensionsPaymentOutputs
+          , GHCJS.DOM.JSFFI.Generated.AuthenticatorAssertionResponse as GHCJS.DOM.AuthenticatorAssertionResponse
+          , GHCJS.DOM.JSFFI.Generated.AuthenticatorAttestationResponse as GHCJS.DOM.AuthenticatorAttestationResponse
+          , GHCJS.DOM.JSFFI.Generated.AuthenticatorResponse as GHCJS.DOM.AuthenticatorResponse
+          , GHCJS.DOM.JSFFI.Generated.AuthenticatorSelectionCriteria as GHCJS.DOM.AuthenticatorSelectionCriteria
+          , GHCJS.DOM.JSFFI.Generated.AutofillEvent as GHCJS.DOM.AutofillEvent
+          , GHCJS.DOM.JSFFI.Generated.AvcEncoderConfig as GHCJS.DOM.AvcEncoderConfig
+          , GHCJS.DOM.JSFFI.Generated.BackgroundBlur as GHCJS.DOM.BackgroundBlur
+          , GHCJS.DOM.JSFFI.Generated.BarProp as GHCJS.DOM.BarProp
+          , GHCJS.DOM.JSFFI.Generated.BaseAudioContext as GHCJS.DOM.BaseAudioContext
+          , GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent as GHCJS.DOM.BeforeUnloadEvent
+          , GHCJS.DOM.JSFFI.Generated.BiquadFilterNode as GHCJS.DOM.BiquadFilterNode
+          , GHCJS.DOM.JSFFI.Generated.BiquadFilterOptions as GHCJS.DOM.BiquadFilterOptions
+          , GHCJS.DOM.JSFFI.Generated.Blob as GHCJS.DOM.Blob
+          , GHCJS.DOM.JSFFI.Generated.BlobCallback as GHCJS.DOM.BlobCallback
+          , GHCJS.DOM.JSFFI.Generated.BlobEvent as GHCJS.DOM.BlobEvent
+          , GHCJS.DOM.JSFFI.Generated.BlobEventInit as GHCJS.DOM.BlobEventInit
+          , GHCJS.DOM.JSFFI.Generated.BlobPropertyBag as GHCJS.DOM.BlobPropertyBag
+          , GHCJS.DOM.JSFFI.Generated.Body as GHCJS.DOM.Body
+          , GHCJS.DOM.JSFFI.Generated.BroadcastChannel as GHCJS.DOM.BroadcastChannel
+          , GHCJS.DOM.JSFFI.Generated.BrowserBoundSignature as GHCJS.DOM.BrowserBoundSignature
+          , GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy as GHCJS.DOM.ByteLengthQueuingStrategy
+          , GHCJS.DOM.JSFFI.Generated.CDATASection as GHCJS.DOM.CDATASection
+          , GHCJS.DOM.JSFFI.Generated.CSS as GHCJS.DOM.CSS
+          , GHCJS.DOM.JSFFI.Generated.CSSAnimation as GHCJS.DOM.CSSAnimation
+          , GHCJS.DOM.JSFFI.Generated.CSSConditionRule as GHCJS.DOM.CSSConditionRule
+          , GHCJS.DOM.JSFFI.Generated.CSSContainerCondition as GHCJS.DOM.CSSContainerCondition
+          , GHCJS.DOM.JSFFI.Generated.CSSContainerRule as GHCJS.DOM.CSSContainerRule
+          , GHCJS.DOM.JSFFI.Generated.CSSCounterStyleRule as GHCJS.DOM.CSSCounterStyleRule
+          , GHCJS.DOM.JSFFI.Generated.CSSFontFaceDescriptors as GHCJS.DOM.CSSFontFaceDescriptors
+          , GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule as GHCJS.DOM.CSSFontFaceRule
+          , GHCJS.DOM.JSFFI.Generated.CSSFontFeatureValuesRule as GHCJS.DOM.CSSFontFeatureValuesRule
+          , GHCJS.DOM.JSFFI.Generated.CSSFontPaletteValuesRule as GHCJS.DOM.CSSFontPaletteValuesRule
+          , GHCJS.DOM.JSFFI.Generated.CSSGroupingRule as GHCJS.DOM.CSSGroupingRule
+          , GHCJS.DOM.JSFFI.Generated.CSSImageValue as GHCJS.DOM.CSSImageValue
+          , GHCJS.DOM.JSFFI.Generated.CSSImportRule as GHCJS.DOM.CSSImportRule
+          , GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule as GHCJS.DOM.CSSKeyframeRule
+          , GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule as GHCJS.DOM.CSSKeyframesRule
+          , GHCJS.DOM.JSFFI.Generated.CSSKeywordValue as GHCJS.DOM.CSSKeywordValue
+          , GHCJS.DOM.JSFFI.Generated.CSSLayerBlockRule as GHCJS.DOM.CSSLayerBlockRule
+          , GHCJS.DOM.JSFFI.Generated.CSSLayerStatementRule as GHCJS.DOM.CSSLayerStatementRule
+          , GHCJS.DOM.JSFFI.Generated.CSSMathClamp as GHCJS.DOM.CSSMathClamp
+          , GHCJS.DOM.JSFFI.Generated.CSSMathInvert as GHCJS.DOM.CSSMathInvert
+          , GHCJS.DOM.JSFFI.Generated.CSSMathMax as GHCJS.DOM.CSSMathMax
+          , GHCJS.DOM.JSFFI.Generated.CSSMathMin as GHCJS.DOM.CSSMathMin
+          , GHCJS.DOM.JSFFI.Generated.CSSMathNegate as GHCJS.DOM.CSSMathNegate
+          , GHCJS.DOM.JSFFI.Generated.CSSMathProduct as GHCJS.DOM.CSSMathProduct
+          , GHCJS.DOM.JSFFI.Generated.CSSMathSum as GHCJS.DOM.CSSMathSum
+          , GHCJS.DOM.JSFFI.Generated.CSSMathValue as GHCJS.DOM.CSSMathValue
+          , GHCJS.DOM.JSFFI.Generated.CSSMatrixComponent as GHCJS.DOM.CSSMatrixComponent
+          , GHCJS.DOM.JSFFI.Generated.CSSMatrixComponentOptions as GHCJS.DOM.CSSMatrixComponentOptions
+          , GHCJS.DOM.JSFFI.Generated.CSSMediaRule as GHCJS.DOM.CSSMediaRule
+          , GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule as GHCJS.DOM.CSSNamespaceRule
+          , GHCJS.DOM.JSFFI.Generated.CSSNestedDeclarations as GHCJS.DOM.CSSNestedDeclarations
+          , GHCJS.DOM.JSFFI.Generated.CSSNumericArray as GHCJS.DOM.CSSNumericArray
+          , GHCJS.DOM.JSFFI.Generated.CSSNumericType as GHCJS.DOM.CSSNumericType
+          , GHCJS.DOM.JSFFI.Generated.CSSNumericValue as GHCJS.DOM.CSSNumericValue
+          , GHCJS.DOM.JSFFI.Generated.CSSPageDescriptors as GHCJS.DOM.CSSPageDescriptors
+          , GHCJS.DOM.JSFFI.Generated.CSSPageRule as GHCJS.DOM.CSSPageRule
+          , GHCJS.DOM.JSFFI.Generated.CSSPerspective as GHCJS.DOM.CSSPerspective
+          , GHCJS.DOM.JSFFI.Generated.CSSPositionTryDescriptors as GHCJS.DOM.CSSPositionTryDescriptors
+          , GHCJS.DOM.JSFFI.Generated.CSSPositionTryRule as GHCJS.DOM.CSSPositionTryRule
+          , GHCJS.DOM.JSFFI.Generated.CSSPropertyRule as GHCJS.DOM.CSSPropertyRule
+          , GHCJS.DOM.JSFFI.Generated.CSSRotate as GHCJS.DOM.CSSRotate
+          , GHCJS.DOM.JSFFI.Generated.CSSRule as GHCJS.DOM.CSSRule
+          , GHCJS.DOM.JSFFI.Generated.CSSRuleList as GHCJS.DOM.CSSRuleList
+          , GHCJS.DOM.JSFFI.Generated.CSSScale as GHCJS.DOM.CSSScale
+          , GHCJS.DOM.JSFFI.Generated.CSSScopeRule as GHCJS.DOM.CSSScopeRule
+          , GHCJS.DOM.JSFFI.Generated.CSSSkew as GHCJS.DOM.CSSSkew
+          , GHCJS.DOM.JSFFI.Generated.CSSSkewX as GHCJS.DOM.CSSSkewX
+          , GHCJS.DOM.JSFFI.Generated.CSSSkewY as GHCJS.DOM.CSSSkewY
+          , GHCJS.DOM.JSFFI.Generated.CSSStartingStyleRule as GHCJS.DOM.CSSStartingStyleRule
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration as GHCJS.DOM.CSSStyleDeclaration
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleProperties as GHCJS.DOM.CSSStyleProperties
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleRule as GHCJS.DOM.CSSStyleRule
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleSheet as GHCJS.DOM.CSSStyleSheet
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleSheetInit as GHCJS.DOM.CSSStyleSheetInit
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleValue as GHCJS.DOM.CSSStyleValue
+          , GHCJS.DOM.JSFFI.Generated.CSSSupportsRule as GHCJS.DOM.CSSSupportsRule
+          , GHCJS.DOM.JSFFI.Generated.CSSTransformComponent as GHCJS.DOM.CSSTransformComponent
+          , GHCJS.DOM.JSFFI.Generated.CSSTransformValue as GHCJS.DOM.CSSTransformValue
+          , GHCJS.DOM.JSFFI.Generated.CSSTransition as GHCJS.DOM.CSSTransition
+          , GHCJS.DOM.JSFFI.Generated.CSSTranslate as GHCJS.DOM.CSSTranslate
+          , GHCJS.DOM.JSFFI.Generated.CSSUnitValue as GHCJS.DOM.CSSUnitValue
+          , GHCJS.DOM.JSFFI.Generated.CSSUnparsedValue as GHCJS.DOM.CSSUnparsedValue
+          , GHCJS.DOM.JSFFI.Generated.CSSVariableReferenceValue as GHCJS.DOM.CSSVariableReferenceValue
+          , GHCJS.DOM.JSFFI.Generated.CSSViewTransitionRule as GHCJS.DOM.CSSViewTransitionRule
+          , GHCJS.DOM.JSFFI.Generated.Cache as GHCJS.DOM.Cache
+          , GHCJS.DOM.JSFFI.Generated.CacheQueryOptions as GHCJS.DOM.CacheQueryOptions
+          , GHCJS.DOM.JSFFI.Generated.CacheStorage as GHCJS.DOM.CacheStorage
+          , GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack as GHCJS.DOM.CanvasCaptureMediaStreamTrack
+          , GHCJS.DOM.JSFFI.Generated.CanvasCompositing as GHCJS.DOM.CanvasCompositing
+          , GHCJS.DOM.JSFFI.Generated.CanvasDrawImage as GHCJS.DOM.CanvasDrawImage
+          , GHCJS.DOM.JSFFI.Generated.CanvasDrawPath as GHCJS.DOM.CanvasDrawPath
+          , GHCJS.DOM.JSFFI.Generated.CanvasFillStrokeStyles as GHCJS.DOM.CanvasFillStrokeStyles
+          , GHCJS.DOM.JSFFI.Generated.CanvasFilters as GHCJS.DOM.CanvasFilters
+          , GHCJS.DOM.JSFFI.Generated.CanvasGradient as GHCJS.DOM.CanvasGradient
+          , GHCJS.DOM.JSFFI.Generated.CanvasImageData as GHCJS.DOM.CanvasImageData
+          , GHCJS.DOM.JSFFI.Generated.CanvasImageSmoothing as GHCJS.DOM.CanvasImageSmoothing
+          , GHCJS.DOM.JSFFI.Generated.CanvasPath as GHCJS.DOM.CanvasPath
+          , GHCJS.DOM.JSFFI.Generated.CanvasPathDrawingStyles as GHCJS.DOM.CanvasPathDrawingStyles
+          , GHCJS.DOM.JSFFI.Generated.CanvasPattern as GHCJS.DOM.CanvasPattern
+          , GHCJS.DOM.JSFFI.Generated.CanvasRect as GHCJS.DOM.CanvasRect
+          , GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D as GHCJS.DOM.CanvasRenderingContext2D
+          , GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2DSettings as GHCJS.DOM.CanvasRenderingContext2DSettings
+          , GHCJS.DOM.JSFFI.Generated.CanvasSettings as GHCJS.DOM.CanvasSettings
+          , GHCJS.DOM.JSFFI.Generated.CanvasShadowStyles as GHCJS.DOM.CanvasShadowStyles
+          , GHCJS.DOM.JSFFI.Generated.CanvasState as GHCJS.DOM.CanvasState
+          , GHCJS.DOM.JSFFI.Generated.CanvasText as GHCJS.DOM.CanvasText
+          , GHCJS.DOM.JSFFI.Generated.CanvasTextDrawingStyles as GHCJS.DOM.CanvasTextDrawingStyles
+          , GHCJS.DOM.JSFFI.Generated.CanvasTransform as GHCJS.DOM.CanvasTransform
+          , GHCJS.DOM.JSFFI.Generated.CanvasUserInterface as GHCJS.DOM.CanvasUserInterface
+          , GHCJS.DOM.JSFFI.Generated.CaptureController as GHCJS.DOM.CaptureController
+          , GHCJS.DOM.JSFFI.Generated.CaretPosition as GHCJS.DOM.CaretPosition
+          , GHCJS.DOM.JSFFI.Generated.CaretPositionFromPointOptions as GHCJS.DOM.CaretPositionFromPointOptions
+          , GHCJS.DOM.JSFFI.Generated.ChannelMergerNode as GHCJS.DOM.ChannelMergerNode
+          , GHCJS.DOM.JSFFI.Generated.ChannelMergerOptions as GHCJS.DOM.ChannelMergerOptions
+          , GHCJS.DOM.JSFFI.Generated.ChannelSplitterNode as GHCJS.DOM.ChannelSplitterNode
+          , GHCJS.DOM.JSFFI.Generated.ChannelSplitterOptions as GHCJS.DOM.ChannelSplitterOptions
+          , GHCJS.DOM.JSFFI.Generated.ChapterInformationInit as GHCJS.DOM.ChapterInformationInit
+          , GHCJS.DOM.JSFFI.Generated.CharacterData as GHCJS.DOM.CharacterData
+          , GHCJS.DOM.JSFFI.Generated.CheckVisibilityOptions as GHCJS.DOM.CheckVisibilityOptions
+          , GHCJS.DOM.JSFFI.Generated.ChildNode as GHCJS.DOM.ChildNode
+          , GHCJS.DOM.JSFFI.Generated.Client as GHCJS.DOM.Client
+          , GHCJS.DOM.JSFFI.Generated.ClientQueryOptions as GHCJS.DOM.ClientQueryOptions
+          , GHCJS.DOM.JSFFI.Generated.Clients as GHCJS.DOM.Clients
+          , GHCJS.DOM.JSFFI.Generated.Clipboard as GHCJS.DOM.Clipboard
+          , GHCJS.DOM.JSFFI.Generated.ClipboardChangeEvent as GHCJS.DOM.ClipboardChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.ClipboardEvent as GHCJS.DOM.ClipboardEvent
+          , GHCJS.DOM.JSFFI.Generated.ClipboardEventInit as GHCJS.DOM.ClipboardEventInit
+          , GHCJS.DOM.JSFFI.Generated.ClipboardItem as GHCJS.DOM.ClipboardItem
+          , GHCJS.DOM.JSFFI.Generated.ClipboardItemOptions as GHCJS.DOM.ClipboardItemOptions
+          , GHCJS.DOM.JSFFI.Generated.ClipboardUnsanitizedFormats as GHCJS.DOM.ClipboardUnsanitizedFormats
+          , GHCJS.DOM.JSFFI.Generated.CloseEvent as GHCJS.DOM.CloseEvent
+          , GHCJS.DOM.JSFFI.Generated.CloseEventInit as GHCJS.DOM.CloseEventInit
+          , GHCJS.DOM.JSFFI.Generated.CloseWatcher as GHCJS.DOM.CloseWatcher
+          , GHCJS.DOM.JSFFI.Generated.CloseWatcherOptions as GHCJS.DOM.CloseWatcherOptions
+          , GHCJS.DOM.JSFFI.Generated.CommandEvent as GHCJS.DOM.CommandEvent
+          , GHCJS.DOM.JSFFI.Generated.CommandEventInit as GHCJS.DOM.CommandEventInit
+          , GHCJS.DOM.JSFFI.Generated.Comment as GHCJS.DOM.Comment
+          , GHCJS.DOM.JSFFI.Generated.CompositionEvent as GHCJS.DOM.CompositionEvent
+          , GHCJS.DOM.JSFFI.Generated.CompositionEventInit as GHCJS.DOM.CompositionEventInit
+          , GHCJS.DOM.JSFFI.Generated.CompressionStream as GHCJS.DOM.CompressionStream
+          , GHCJS.DOM.JSFFI.Generated.ComputedEffectTiming as GHCJS.DOM.ComputedEffectTiming
+          , GHCJS.DOM.JSFFI.Generated.Console as GHCJS.DOM.Console
+          , GHCJS.DOM.JSFFI.Generated.ConstantSourceNode as GHCJS.DOM.ConstantSourceNode
+          , GHCJS.DOM.JSFFI.Generated.ConstantSourceOptions as GHCJS.DOM.ConstantSourceOptions
+          , GHCJS.DOM.JSFFI.Generated.ConstrainBooleanOrDOMStringParameters as GHCJS.DOM.ConstrainBooleanOrDOMStringParameters
+          , GHCJS.DOM.JSFFI.Generated.ConstrainBooleanParameters as GHCJS.DOM.ConstrainBooleanParameters
+          , GHCJS.DOM.JSFFI.Generated.ConstrainDOMStringParameters as GHCJS.DOM.ConstrainDOMStringParameters
+          , GHCJS.DOM.JSFFI.Generated.ConstrainDoubleRange as GHCJS.DOM.ConstrainDoubleRange
+          , GHCJS.DOM.JSFFI.Generated.ConstrainPoint2DParameters as GHCJS.DOM.ConstrainPoint2DParameters
+          , GHCJS.DOM.JSFFI.Generated.ConstrainULongRange as GHCJS.DOM.ConstrainULongRange
+          , GHCJS.DOM.JSFFI.Generated.ContactAddress as GHCJS.DOM.ContactAddress
+          , GHCJS.DOM.JSFFI.Generated.ContentVisibilityAutoStateChangeEvent as GHCJS.DOM.ContentVisibilityAutoStateChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.ContentVisibilityAutoStateChangeEventInit as GHCJS.DOM.ContentVisibilityAutoStateChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.ConvolverNode as GHCJS.DOM.ConvolverNode
+          , GHCJS.DOM.JSFFI.Generated.ConvolverOptions as GHCJS.DOM.ConvolverOptions
+          , GHCJS.DOM.JSFFI.Generated.CookieChangeEvent as GHCJS.DOM.CookieChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.CookieChangeEventInit as GHCJS.DOM.CookieChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.CookieInit as GHCJS.DOM.CookieInit
+          , GHCJS.DOM.JSFFI.Generated.CookieListItem as GHCJS.DOM.CookieListItem
+          , GHCJS.DOM.JSFFI.Generated.CookieStore as GHCJS.DOM.CookieStore
+          , GHCJS.DOM.JSFFI.Generated.CookieStoreDeleteOptions as GHCJS.DOM.CookieStoreDeleteOptions
+          , GHCJS.DOM.JSFFI.Generated.CookieStoreGetOptions as GHCJS.DOM.CookieStoreGetOptions
+          , GHCJS.DOM.JSFFI.Generated.CookieStoreManager as GHCJS.DOM.CookieStoreManager
+          , GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy as GHCJS.DOM.CountQueuingStrategy
+          , GHCJS.DOM.JSFFI.Generated.CreateHTMLCallback as GHCJS.DOM.CreateHTMLCallback
+          , GHCJS.DOM.JSFFI.Generated.CreateParserOptionsCallback as GHCJS.DOM.CreateParserOptionsCallback
+          , GHCJS.DOM.JSFFI.Generated.CreateScriptCallback as GHCJS.DOM.CreateScriptCallback
+          , GHCJS.DOM.JSFFI.Generated.CreateScriptURLCallback as GHCJS.DOM.CreateScriptURLCallback
+          , GHCJS.DOM.JSFFI.Generated.Credential as GHCJS.DOM.Credential
+          , GHCJS.DOM.JSFFI.Generated.CredentialCreationOptions as GHCJS.DOM.CredentialCreationOptions
+          , GHCJS.DOM.JSFFI.Generated.CredentialData as GHCJS.DOM.CredentialData
+          , GHCJS.DOM.JSFFI.Generated.CredentialPropertiesOutput as GHCJS.DOM.CredentialPropertiesOutput
+          , GHCJS.DOM.JSFFI.Generated.CredentialRequestOptions as GHCJS.DOM.CredentialRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.CredentialsContainer as GHCJS.DOM.CredentialsContainer
+          , GHCJS.DOM.JSFFI.Generated.Crypto as GHCJS.DOM.Crypto
+          , GHCJS.DOM.JSFFI.Generated.CryptoKey as GHCJS.DOM.CryptoKey
+          , GHCJS.DOM.JSFFI.Generated.CryptoKeyPair as GHCJS.DOM.CryptoKeyPair
+          , GHCJS.DOM.JSFFI.Generated.CurrentUserDetailsOptions as GHCJS.DOM.CurrentUserDetailsOptions
+          , GHCJS.DOM.JSFFI.Generated.CustomElementConstructor as GHCJS.DOM.CustomElementConstructor
+          , GHCJS.DOM.JSFFI.Generated.CustomElementRegistry as GHCJS.DOM.CustomElementRegistry
+          , GHCJS.DOM.JSFFI.Generated.CustomEvent as GHCJS.DOM.CustomEvent
+          , GHCJS.DOM.JSFFI.Generated.CustomEventInit as GHCJS.DOM.CustomEventInit
+          , GHCJS.DOM.JSFFI.Generated.CustomStateSet as GHCJS.DOM.CustomStateSet
+          , GHCJS.DOM.JSFFI.Generated.DOMException as GHCJS.DOM.DOMException
+          , GHCJS.DOM.JSFFI.Generated.DOMImplementation as GHCJS.DOM.DOMImplementation
+          , GHCJS.DOM.JSFFI.Generated.DOMMatrix as GHCJS.DOM.DOMMatrix
+          , GHCJS.DOM.JSFFI.Generated.DOMMatrix2DInit as GHCJS.DOM.DOMMatrix2DInit
+          , GHCJS.DOM.JSFFI.Generated.DOMMatrixInit as GHCJS.DOM.DOMMatrixInit
+          , GHCJS.DOM.JSFFI.Generated.DOMMatrixReadOnly as GHCJS.DOM.DOMMatrixReadOnly
+          , GHCJS.DOM.JSFFI.Generated.DOMParser as GHCJS.DOM.DOMParser
+          , GHCJS.DOM.JSFFI.Generated.DOMPoint as GHCJS.DOM.DOMPoint
+          , GHCJS.DOM.JSFFI.Generated.DOMPointInit as GHCJS.DOM.DOMPointInit
+          , GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly as GHCJS.DOM.DOMPointReadOnly
+          , GHCJS.DOM.JSFFI.Generated.DOMQuad as GHCJS.DOM.DOMQuad
+          , GHCJS.DOM.JSFFI.Generated.DOMQuadInit as GHCJS.DOM.DOMQuadInit
+          , GHCJS.DOM.JSFFI.Generated.DOMRect as GHCJS.DOM.DOMRect
+          , GHCJS.DOM.JSFFI.Generated.DOMRectInit as GHCJS.DOM.DOMRectInit
+          , GHCJS.DOM.JSFFI.Generated.DOMRectList as GHCJS.DOM.DOMRectList
+          , GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly as GHCJS.DOM.DOMRectReadOnly
+          , GHCJS.DOM.JSFFI.Generated.DOMStringList as GHCJS.DOM.DOMStringList
+          , GHCJS.DOM.JSFFI.Generated.DOMStringMap as GHCJS.DOM.DOMStringMap
+          , GHCJS.DOM.JSFFI.Generated.DOMTokenList as GHCJS.DOM.DOMTokenList
+          , GHCJS.DOM.JSFFI.Generated.DataCue as GHCJS.DOM.DataCue
+          , GHCJS.DOM.JSFFI.Generated.DataTransfer as GHCJS.DOM.DataTransfer
+          , GHCJS.DOM.JSFFI.Generated.DataTransferItem as GHCJS.DOM.DataTransferItem
+          , GHCJS.DOM.JSFFI.Generated.DataTransferItemList as GHCJS.DOM.DataTransferItemList
+          , GHCJS.DOM.JSFFI.Generated.DecodeErrorCallback as GHCJS.DOM.DecodeErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.DecodeSuccessCallback as GHCJS.DOM.DecodeSuccessCallback
+          , GHCJS.DOM.JSFFI.Generated.DecompressionStream as GHCJS.DOM.DecompressionStream
+          , GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope as GHCJS.DOM.DedicatedWorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.DelayNode as GHCJS.DOM.DelayNode
+          , GHCJS.DOM.JSFFI.Generated.DelayOptions as GHCJS.DOM.DelayOptions
+          , GHCJS.DOM.JSFFI.Generated.DeviceChangeEvent as GHCJS.DOM.DeviceChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent as GHCJS.DOM.DeviceMotionEvent
+          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEventAcceleration as GHCJS.DOM.DeviceMotionEventAcceleration
+          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEventAccelerationInit as GHCJS.DOM.DeviceMotionEventAccelerationInit
+          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEventInit as GHCJS.DOM.DeviceMotionEventInit
+          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEventRotationRate as GHCJS.DOM.DeviceMotionEventRotationRate
+          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEventRotationRateInit as GHCJS.DOM.DeviceMotionEventRotationRateInit
+          , GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent as GHCJS.DOM.DeviceOrientationEvent
+          , GHCJS.DOM.JSFFI.Generated.DeviceOrientationEventInit as GHCJS.DOM.DeviceOrientationEventInit
+          , GHCJS.DOM.JSFFI.Generated.DigitalCredential as GHCJS.DOM.DigitalCredential
+          , GHCJS.DOM.JSFFI.Generated.DigitalCredentialCreateRequest as GHCJS.DOM.DigitalCredentialCreateRequest
+          , GHCJS.DOM.JSFFI.Generated.DigitalCredentialCreationOptions as GHCJS.DOM.DigitalCredentialCreationOptions
+          , GHCJS.DOM.JSFFI.Generated.DigitalCredentialGetRequest as GHCJS.DOM.DigitalCredentialGetRequest
+          , GHCJS.DOM.JSFFI.Generated.DigitalCredentialRequestOptions as GHCJS.DOM.DigitalCredentialRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.DisplayMediaStreamOptions as GHCJS.DOM.DisplayMediaStreamOptions
+          , GHCJS.DOM.JSFFI.Generated.Document as GHCJS.DOM.Document
+          , GHCJS.DOM.JSFFI.Generated.DocumentFragment as GHCJS.DOM.DocumentFragment
+          , GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot as GHCJS.DOM.DocumentOrShadowRoot
+          , GHCJS.DOM.JSFFI.Generated.DocumentPictureInPicture as GHCJS.DOM.DocumentPictureInPicture
+          , GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureEvent as GHCJS.DOM.DocumentPictureInPictureEvent
+          , GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureEventInit as GHCJS.DOM.DocumentPictureInPictureEventInit
+          , GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureOptions as GHCJS.DOM.DocumentPictureInPictureOptions
+          , GHCJS.DOM.JSFFI.Generated.DocumentTimeline as GHCJS.DOM.DocumentTimeline
+          , GHCJS.DOM.JSFFI.Generated.DocumentTimelineOptions as GHCJS.DOM.DocumentTimelineOptions
+          , GHCJS.DOM.JSFFI.Generated.DocumentType as GHCJS.DOM.DocumentType
+          , GHCJS.DOM.JSFFI.Generated.DoubleRange as GHCJS.DOM.DoubleRange
+          , GHCJS.DOM.JSFFI.Generated.DragEvent as GHCJS.DOM.DragEvent
+          , GHCJS.DOM.JSFFI.Generated.DragEventInit as GHCJS.DOM.DragEventInit
+          , GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode as GHCJS.DOM.DynamicsCompressorNode
+          , GHCJS.DOM.JSFFI.Generated.DynamicsCompressorOptions as GHCJS.DOM.DynamicsCompressorOptions
+          , GHCJS.DOM.JSFFI.Generated.EXT_blend_minmax as GHCJS.DOM.EXT_blend_minmax
+          , GHCJS.DOM.JSFFI.Generated.EXT_clip_control as GHCJS.DOM.EXT_clip_control
+          , GHCJS.DOM.JSFFI.Generated.EXT_color_buffer_float as GHCJS.DOM.EXT_color_buffer_float
+          , GHCJS.DOM.JSFFI.Generated.EXT_color_buffer_half_float as GHCJS.DOM.EXT_color_buffer_half_float
+          , GHCJS.DOM.JSFFI.Generated.EXT_float_blend as GHCJS.DOM.EXT_float_blend
+          , GHCJS.DOM.JSFFI.Generated.EXT_frag_depth as GHCJS.DOM.EXT_frag_depth
+          , GHCJS.DOM.JSFFI.Generated.EXT_polygon_offset_clamp as GHCJS.DOM.EXT_polygon_offset_clamp
+          , GHCJS.DOM.JSFFI.Generated.EXT_sRGB as GHCJS.DOM.EXT_sRGB
+          , GHCJS.DOM.JSFFI.Generated.EXT_shader_texture_lod as GHCJS.DOM.EXT_shader_texture_lod
+          , GHCJS.DOM.JSFFI.Generated.EXT_texture_compression_bptc as GHCJS.DOM.EXT_texture_compression_bptc
+          , GHCJS.DOM.JSFFI.Generated.EXT_texture_compression_rgtc as GHCJS.DOM.EXT_texture_compression_rgtc
+          , GHCJS.DOM.JSFFI.Generated.EXT_texture_filter_anisotropic as GHCJS.DOM.EXT_texture_filter_anisotropic
+          , GHCJS.DOM.JSFFI.Generated.EXT_texture_mirror_clamp_to_edge as GHCJS.DOM.EXT_texture_mirror_clamp_to_edge
+          , GHCJS.DOM.JSFFI.Generated.EXT_texture_norm16 as GHCJS.DOM.EXT_texture_norm16
+          , GHCJS.DOM.JSFFI.Generated.EffectTiming as GHCJS.DOM.EffectTiming
+          , GHCJS.DOM.JSFFI.Generated.Element as GHCJS.DOM.Element
+          , GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle as GHCJS.DOM.ElementCSSInlineStyle
+          , GHCJS.DOM.JSFFI.Generated.ElementContentEditable as GHCJS.DOM.ElementContentEditable
+          , GHCJS.DOM.JSFFI.Generated.ElementCreationOptions as GHCJS.DOM.ElementCreationOptions
+          , GHCJS.DOM.JSFFI.Generated.ElementDefinitionOptions as GHCJS.DOM.ElementDefinitionOptions
+          , GHCJS.DOM.JSFFI.Generated.ElementInternals as GHCJS.DOM.ElementInternals
+          , GHCJS.DOM.JSFFI.Generated.EncodedAudioChunk as GHCJS.DOM.EncodedAudioChunk
+          , GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkInit as GHCJS.DOM.EncodedAudioChunkInit
+          , GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkMetadata as GHCJS.DOM.EncodedAudioChunkMetadata
+          , GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkOutputCallback as GHCJS.DOM.EncodedAudioChunkOutputCallback
+          , GHCJS.DOM.JSFFI.Generated.EncodedVideoChunk as GHCJS.DOM.EncodedVideoChunk
+          , GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkInit as GHCJS.DOM.EncodedVideoChunkInit
+          , GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkMetadata as GHCJS.DOM.EncodedVideoChunkMetadata
+          , GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkOutputCallback as GHCJS.DOM.EncodedVideoChunkOutputCallback
+          , GHCJS.DOM.JSFFI.Generated.ErrorCallback as GHCJS.DOM.ErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.ErrorEvent as GHCJS.DOM.ErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.ErrorEventInit as GHCJS.DOM.ErrorEventInit
+          , GHCJS.DOM.JSFFI.Generated.Event as GHCJS.DOM.Event
+          , GHCJS.DOM.JSFFI.Generated.EventCounts as GHCJS.DOM.EventCounts
+          , GHCJS.DOM.JSFFI.Generated.EventInit as GHCJS.DOM.EventInit
+          , GHCJS.DOM.JSFFI.Generated.EventListenerOptions as GHCJS.DOM.EventListenerOptions
+          , GHCJS.DOM.JSFFI.Generated.EventModifierInit as GHCJS.DOM.EventModifierInit
+          , GHCJS.DOM.JSFFI.Generated.EventSource as GHCJS.DOM.EventSource
+          , GHCJS.DOM.JSFFI.Generated.EventSourceInit as GHCJS.DOM.EventSourceInit
+          , GHCJS.DOM.JSFFI.Generated.EventTarget as GHCJS.DOM.EventTarget
+          , GHCJS.DOM.JSFFI.Generated.ExtendableCookieChangeEvent as GHCJS.DOM.ExtendableCookieChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.ExtendableCookieChangeEventInit as GHCJS.DOM.ExtendableCookieChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.ExtendableEvent as GHCJS.DOM.ExtendableEvent
+          , GHCJS.DOM.JSFFI.Generated.ExtendableEventInit as GHCJS.DOM.ExtendableEventInit
+          , GHCJS.DOM.JSFFI.Generated.ExtendableMessageEvent as GHCJS.DOM.ExtendableMessageEvent
+          , GHCJS.DOM.JSFFI.Generated.ExtendableMessageEventInit as GHCJS.DOM.ExtendableMessageEventInit
+          , GHCJS.DOM.JSFFI.Generated.External as GHCJS.DOM.External
+          , GHCJS.DOM.JSFFI.Generated.FederatedCredentialInit as GHCJS.DOM.FederatedCredentialInit
+          , GHCJS.DOM.JSFFI.Generated.FederatedCredentialRequestOptions as GHCJS.DOM.FederatedCredentialRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.FetchEvent as GHCJS.DOM.FetchEvent
+          , GHCJS.DOM.JSFFI.Generated.FetchEventInit as GHCJS.DOM.FetchEventInit
+          , GHCJS.DOM.JSFFI.Generated.File as GHCJS.DOM.File
+          , GHCJS.DOM.JSFFI.Generated.FileCallback as GHCJS.DOM.FileCallback
+          , GHCJS.DOM.JSFFI.Generated.FileList as GHCJS.DOM.FileList
+          , GHCJS.DOM.JSFFI.Generated.FilePropertyBag as GHCJS.DOM.FilePropertyBag
+          , GHCJS.DOM.JSFFI.Generated.FileReader as GHCJS.DOM.FileReader
+          , GHCJS.DOM.JSFFI.Generated.FileReaderSync as GHCJS.DOM.FileReaderSync
+          , GHCJS.DOM.JSFFI.Generated.FileSystem as GHCJS.DOM.FileSystem
+          , GHCJS.DOM.JSFFI.Generated.FileSystemCreateWritableOptions as GHCJS.DOM.FileSystemCreateWritableOptions
+          , GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryEntry as GHCJS.DOM.FileSystemDirectoryEntry
+          , GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryHandle as GHCJS.DOM.FileSystemDirectoryHandle
+          , GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryReader as GHCJS.DOM.FileSystemDirectoryReader
+          , GHCJS.DOM.JSFFI.Generated.FileSystemEntriesCallback as GHCJS.DOM.FileSystemEntriesCallback
+          , GHCJS.DOM.JSFFI.Generated.FileSystemEntry as GHCJS.DOM.FileSystemEntry
+          , GHCJS.DOM.JSFFI.Generated.FileSystemEntryCallback as GHCJS.DOM.FileSystemEntryCallback
+          , GHCJS.DOM.JSFFI.Generated.FileSystemFileEntry as GHCJS.DOM.FileSystemFileEntry
+          , GHCJS.DOM.JSFFI.Generated.FileSystemFileHandle as GHCJS.DOM.FileSystemFileHandle
+          , GHCJS.DOM.JSFFI.Generated.FileSystemFlags as GHCJS.DOM.FileSystemFlags
+          , GHCJS.DOM.JSFFI.Generated.FileSystemGetDirectoryOptions as GHCJS.DOM.FileSystemGetDirectoryOptions
+          , GHCJS.DOM.JSFFI.Generated.FileSystemGetFileOptions as GHCJS.DOM.FileSystemGetFileOptions
+          , GHCJS.DOM.JSFFI.Generated.FileSystemHandle as GHCJS.DOM.FileSystemHandle
+          , GHCJS.DOM.JSFFI.Generated.FileSystemReadWriteOptions as GHCJS.DOM.FileSystemReadWriteOptions
+          , GHCJS.DOM.JSFFI.Generated.FileSystemRemoveOptions as GHCJS.DOM.FileSystemRemoveOptions
+          , GHCJS.DOM.JSFFI.Generated.FileSystemSyncAccessHandle as GHCJS.DOM.FileSystemSyncAccessHandle
+          , GHCJS.DOM.JSFFI.Generated.FileSystemWritableFileStream as GHCJS.DOM.FileSystemWritableFileStream
+          , GHCJS.DOM.JSFFI.Generated.FlacEncoderConfig as GHCJS.DOM.FlacEncoderConfig
+          , GHCJS.DOM.JSFFI.Generated.FocusEvent as GHCJS.DOM.FocusEvent
+          , GHCJS.DOM.JSFFI.Generated.FocusEventInit as GHCJS.DOM.FocusEventInit
+          , GHCJS.DOM.JSFFI.Generated.FocusOptions as GHCJS.DOM.FocusOptions
+          , GHCJS.DOM.JSFFI.Generated.FontFace as GHCJS.DOM.FontFace
+          , GHCJS.DOM.JSFFI.Generated.FontFaceDescriptors as GHCJS.DOM.FontFaceDescriptors
+          , GHCJS.DOM.JSFFI.Generated.FontFaceSet as GHCJS.DOM.FontFaceSet
+          , GHCJS.DOM.JSFFI.Generated.FontFaceSetLoadEvent as GHCJS.DOM.FontFaceSetLoadEvent
+          , GHCJS.DOM.JSFFI.Generated.FontFaceSetLoadEventInit as GHCJS.DOM.FontFaceSetLoadEventInit
+          , GHCJS.DOM.JSFFI.Generated.FontFaceSource as GHCJS.DOM.FontFaceSource
+          , GHCJS.DOM.JSFFI.Generated.FormData as GHCJS.DOM.FormData
+          , GHCJS.DOM.JSFFI.Generated.FormDataEvent as GHCJS.DOM.FormDataEvent
+          , GHCJS.DOM.JSFFI.Generated.FormDataEventInit as GHCJS.DOM.FormDataEventInit
+          , GHCJS.DOM.JSFFI.Generated.FragmentDirective as GHCJS.DOM.FragmentDirective
+          , GHCJS.DOM.JSFFI.Generated.FrameRequestCallback as GHCJS.DOM.FrameRequestCallback
+          , GHCJS.DOM.JSFFI.Generated.FullscreenOptions as GHCJS.DOM.FullscreenOptions
+          , GHCJS.DOM.JSFFI.Generated.FunctionStringCallback as GHCJS.DOM.FunctionStringCallback
+          , GHCJS.DOM.JSFFI.Generated.GPU as GHCJS.DOM.GPU
+          , GHCJS.DOM.JSFFI.Generated.GPUAdapter as GHCJS.DOM.GPUAdapter
+          , GHCJS.DOM.JSFFI.Generated.GPUAdapterInfo as GHCJS.DOM.GPUAdapterInfo
+          , GHCJS.DOM.JSFFI.Generated.GPUBindGroup as GHCJS.DOM.GPUBindGroup
+          , GHCJS.DOM.JSFFI.Generated.GPUBindGroupDescriptor as GHCJS.DOM.GPUBindGroupDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUBindGroupEntry as GHCJS.DOM.GPUBindGroupEntry
+          , GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayout as GHCJS.DOM.GPUBindGroupLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayoutDescriptor as GHCJS.DOM.GPUBindGroupLayoutDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayoutEntry as GHCJS.DOM.GPUBindGroupLayoutEntry
+          , GHCJS.DOM.JSFFI.Generated.GPUBindingCommandsMixin as GHCJS.DOM.GPUBindingCommandsMixin
+          , GHCJS.DOM.JSFFI.Generated.GPUBlendComponent as GHCJS.DOM.GPUBlendComponent
+          , GHCJS.DOM.JSFFI.Generated.GPUBlendState as GHCJS.DOM.GPUBlendState
+          , GHCJS.DOM.JSFFI.Generated.GPUBuffer as GHCJS.DOM.GPUBuffer
+          , GHCJS.DOM.JSFFI.Generated.GPUBufferBinding as GHCJS.DOM.GPUBufferBinding
+          , GHCJS.DOM.JSFFI.Generated.GPUBufferBindingLayout as GHCJS.DOM.GPUBufferBindingLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUBufferDescriptor as GHCJS.DOM.GPUBufferDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUCanvasConfiguration as GHCJS.DOM.GPUCanvasConfiguration
+          , GHCJS.DOM.JSFFI.Generated.GPUCanvasContext as GHCJS.DOM.GPUCanvasContext
+          , GHCJS.DOM.JSFFI.Generated.GPUCanvasToneMapping as GHCJS.DOM.GPUCanvasToneMapping
+          , GHCJS.DOM.JSFFI.Generated.GPUColorDict as GHCJS.DOM.GPUColorDict
+          , GHCJS.DOM.JSFFI.Generated.GPUColorTargetState as GHCJS.DOM.GPUColorTargetState
+          , GHCJS.DOM.JSFFI.Generated.GPUCommandBuffer as GHCJS.DOM.GPUCommandBuffer
+          , GHCJS.DOM.JSFFI.Generated.GPUCommandBufferDescriptor as GHCJS.DOM.GPUCommandBufferDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUCommandEncoder as GHCJS.DOM.GPUCommandEncoder
+          , GHCJS.DOM.JSFFI.Generated.GPUCommandEncoderDescriptor as GHCJS.DOM.GPUCommandEncoderDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUCompilationInfo as GHCJS.DOM.GPUCompilationInfo
+          , GHCJS.DOM.JSFFI.Generated.GPUCompilationMessage as GHCJS.DOM.GPUCompilationMessage
+          , GHCJS.DOM.JSFFI.Generated.GPUComputePassDescriptor as GHCJS.DOM.GPUComputePassDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUComputePassEncoder as GHCJS.DOM.GPUComputePassEncoder
+          , GHCJS.DOM.JSFFI.Generated.GPUComputePassTimestampWrites as GHCJS.DOM.GPUComputePassTimestampWrites
+          , GHCJS.DOM.JSFFI.Generated.GPUComputePipeline as GHCJS.DOM.GPUComputePipeline
+          , GHCJS.DOM.JSFFI.Generated.GPUComputePipelineDescriptor as GHCJS.DOM.GPUComputePipelineDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUCopyExternalImageDestInfo as GHCJS.DOM.GPUCopyExternalImageDestInfo
+          , GHCJS.DOM.JSFFI.Generated.GPUCopyExternalImageSourceInfo as GHCJS.DOM.GPUCopyExternalImageSourceInfo
+          , GHCJS.DOM.JSFFI.Generated.GPUDebugCommandsMixin as GHCJS.DOM.GPUDebugCommandsMixin
+          , GHCJS.DOM.JSFFI.Generated.GPUDepthStencilState as GHCJS.DOM.GPUDepthStencilState
+          , GHCJS.DOM.JSFFI.Generated.GPUDevice as GHCJS.DOM.GPUDevice
+          , GHCJS.DOM.JSFFI.Generated.GPUDeviceDescriptor as GHCJS.DOM.GPUDeviceDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUDeviceLostInfo as GHCJS.DOM.GPUDeviceLostInfo
+          , GHCJS.DOM.JSFFI.Generated.GPUError as GHCJS.DOM.GPUError
+          , GHCJS.DOM.JSFFI.Generated.GPUExtent3DDict as GHCJS.DOM.GPUExtent3DDict
+          , GHCJS.DOM.JSFFI.Generated.GPUExternalTexture as GHCJS.DOM.GPUExternalTexture
+          , GHCJS.DOM.JSFFI.Generated.GPUExternalTextureBindingLayout as GHCJS.DOM.GPUExternalTextureBindingLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUExternalTextureDescriptor as GHCJS.DOM.GPUExternalTextureDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUFragmentState as GHCJS.DOM.GPUFragmentState
+          , GHCJS.DOM.JSFFI.Generated.GPUInternalError as GHCJS.DOM.GPUInternalError
+          , GHCJS.DOM.JSFFI.Generated.GPUMultisampleState as GHCJS.DOM.GPUMultisampleState
+          , GHCJS.DOM.JSFFI.Generated.GPUObjectBase as GHCJS.DOM.GPUObjectBase
+          , GHCJS.DOM.JSFFI.Generated.GPUObjectDescriptorBase as GHCJS.DOM.GPUObjectDescriptorBase
+          , GHCJS.DOM.JSFFI.Generated.GPUOrigin2DDict as GHCJS.DOM.GPUOrigin2DDict
+          , GHCJS.DOM.JSFFI.Generated.GPUOrigin3DDict as GHCJS.DOM.GPUOrigin3DDict
+          , GHCJS.DOM.JSFFI.Generated.GPUOutOfMemoryError as GHCJS.DOM.GPUOutOfMemoryError
+          , GHCJS.DOM.JSFFI.Generated.GPUPipelineBase as GHCJS.DOM.GPUPipelineBase
+          , GHCJS.DOM.JSFFI.Generated.GPUPipelineDescriptorBase as GHCJS.DOM.GPUPipelineDescriptorBase
+          , GHCJS.DOM.JSFFI.Generated.GPUPipelineError as GHCJS.DOM.GPUPipelineError
+          , GHCJS.DOM.JSFFI.Generated.GPUPipelineErrorInit as GHCJS.DOM.GPUPipelineErrorInit
+          , GHCJS.DOM.JSFFI.Generated.GPUPipelineLayout as GHCJS.DOM.GPUPipelineLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUPipelineLayoutDescriptor as GHCJS.DOM.GPUPipelineLayoutDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUPrimitiveState as GHCJS.DOM.GPUPrimitiveState
+          , GHCJS.DOM.JSFFI.Generated.GPUProgrammableStage as GHCJS.DOM.GPUProgrammableStage
+          , GHCJS.DOM.JSFFI.Generated.GPUQuerySet as GHCJS.DOM.GPUQuerySet
+          , GHCJS.DOM.JSFFI.Generated.GPUQuerySetDescriptor as GHCJS.DOM.GPUQuerySetDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUQueue as GHCJS.DOM.GPUQueue
+          , GHCJS.DOM.JSFFI.Generated.GPUQueueDescriptor as GHCJS.DOM.GPUQueueDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPURenderBundle as GHCJS.DOM.GPURenderBundle
+          , GHCJS.DOM.JSFFI.Generated.GPURenderBundleDescriptor as GHCJS.DOM.GPURenderBundleDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPURenderBundleEncoder as GHCJS.DOM.GPURenderBundleEncoder
+          , GHCJS.DOM.JSFFI.Generated.GPURenderBundleEncoderDescriptor as GHCJS.DOM.GPURenderBundleEncoderDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPURenderCommandsMixin as GHCJS.DOM.GPURenderCommandsMixin
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPassColorAttachment as GHCJS.DOM.GPURenderPassColorAttachment
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPassDepthStencilAttachment as GHCJS.DOM.GPURenderPassDepthStencilAttachment
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPassDescriptor as GHCJS.DOM.GPURenderPassDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPassEncoder as GHCJS.DOM.GPURenderPassEncoder
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPassLayout as GHCJS.DOM.GPURenderPassLayout
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPassTimestampWrites as GHCJS.DOM.GPURenderPassTimestampWrites
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPipeline as GHCJS.DOM.GPURenderPipeline
+          , GHCJS.DOM.JSFFI.Generated.GPURenderPipelineDescriptor as GHCJS.DOM.GPURenderPipelineDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPURequestAdapterOptions as GHCJS.DOM.GPURequestAdapterOptions
+          , GHCJS.DOM.JSFFI.Generated.GPUSampler as GHCJS.DOM.GPUSampler
+          , GHCJS.DOM.JSFFI.Generated.GPUSamplerBindingLayout as GHCJS.DOM.GPUSamplerBindingLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUSamplerDescriptor as GHCJS.DOM.GPUSamplerDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUShaderModule as GHCJS.DOM.GPUShaderModule
+          , GHCJS.DOM.JSFFI.Generated.GPUShaderModuleCompilationHint as GHCJS.DOM.GPUShaderModuleCompilationHint
+          , GHCJS.DOM.JSFFI.Generated.GPUShaderModuleDescriptor as GHCJS.DOM.GPUShaderModuleDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUStencilFaceState as GHCJS.DOM.GPUStencilFaceState
+          , GHCJS.DOM.JSFFI.Generated.GPUStorageTextureBindingLayout as GHCJS.DOM.GPUStorageTextureBindingLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUSupportedFeatures as GHCJS.DOM.GPUSupportedFeatures
+          , GHCJS.DOM.JSFFI.Generated.GPUSupportedLimits as GHCJS.DOM.GPUSupportedLimits
+          , GHCJS.DOM.JSFFI.Generated.GPUTexelCopyBufferInfo as GHCJS.DOM.GPUTexelCopyBufferInfo
+          , GHCJS.DOM.JSFFI.Generated.GPUTexelCopyBufferLayout as GHCJS.DOM.GPUTexelCopyBufferLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUTexelCopyTextureInfo as GHCJS.DOM.GPUTexelCopyTextureInfo
+          , GHCJS.DOM.JSFFI.Generated.GPUTexture as GHCJS.DOM.GPUTexture
+          , GHCJS.DOM.JSFFI.Generated.GPUTextureBindingLayout as GHCJS.DOM.GPUTextureBindingLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUTextureDescriptor as GHCJS.DOM.GPUTextureDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUTextureView as GHCJS.DOM.GPUTextureView
+          , GHCJS.DOM.JSFFI.Generated.GPUTextureViewDescriptor as GHCJS.DOM.GPUTextureViewDescriptor
+          , GHCJS.DOM.JSFFI.Generated.GPUUncapturedErrorEvent as GHCJS.DOM.GPUUncapturedErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.GPUUncapturedErrorEventInit as GHCJS.DOM.GPUUncapturedErrorEventInit
+          , GHCJS.DOM.JSFFI.Generated.GPUValidationError as GHCJS.DOM.GPUValidationError
+          , GHCJS.DOM.JSFFI.Generated.GPUVertexAttribute as GHCJS.DOM.GPUVertexAttribute
+          , GHCJS.DOM.JSFFI.Generated.GPUVertexBufferLayout as GHCJS.DOM.GPUVertexBufferLayout
+          , GHCJS.DOM.JSFFI.Generated.GPUVertexState as GHCJS.DOM.GPUVertexState
+          , GHCJS.DOM.JSFFI.Generated.GainNode as GHCJS.DOM.GainNode
+          , GHCJS.DOM.JSFFI.Generated.GainOptions as GHCJS.DOM.GainOptions
+          , GHCJS.DOM.JSFFI.Generated.Gamepad as GHCJS.DOM.Gamepad
+          , GHCJS.DOM.JSFFI.Generated.GamepadButton as GHCJS.DOM.GamepadButton
+          , GHCJS.DOM.JSFFI.Generated.GamepadEffectParameters as GHCJS.DOM.GamepadEffectParameters
+          , GHCJS.DOM.JSFFI.Generated.GamepadEvent as GHCJS.DOM.GamepadEvent
+          , GHCJS.DOM.JSFFI.Generated.GamepadEventInit as GHCJS.DOM.GamepadEventInit
+          , GHCJS.DOM.JSFFI.Generated.GamepadHapticActuator as GHCJS.DOM.GamepadHapticActuator
+          , GHCJS.DOM.JSFFI.Generated.GenericTransformStream as GHCJS.DOM.GenericTransformStream
+          , GHCJS.DOM.JSFFI.Generated.GeolocationCoordinates as GHCJS.DOM.GeolocationCoordinates
+          , GHCJS.DOM.JSFFI.Generated.GeolocationPosition as GHCJS.DOM.GeolocationPosition
+          , GHCJS.DOM.JSFFI.Generated.GetAnimationsOptions as GHCJS.DOM.GetAnimationsOptions
+          , GHCJS.DOM.JSFFI.Generated.GetComposedRangesOptions as GHCJS.DOM.GetComposedRangesOptions
+          , GHCJS.DOM.JSFFI.Generated.GetHTMLOptions as GHCJS.DOM.GetHTMLOptions
+          , GHCJS.DOM.JSFFI.Generated.GetNotificationOptions as GHCJS.DOM.GetNotificationOptions
+          , GHCJS.DOM.JSFFI.Generated.GetRootNodeOptions as GHCJS.DOM.GetRootNodeOptions
+          , GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers as GHCJS.DOM.GlobalEventHandlers
+          , GHCJS.DOM.JSFFI.Generated.HMACGetSecretInput as GHCJS.DOM.HMACGetSecretInput
+          , GHCJS.DOM.JSFFI.Generated.HMACGetSecretOutput as GHCJS.DOM.HMACGetSecretOutput
+          , GHCJS.DOM.JSFFI.Generated.HTMLAllCollection as GHCJS.DOM.HTMLAllCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement as GHCJS.DOM.HTMLAnchorElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLAreaElement as GHCJS.DOM.HTMLAreaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLAudioElement as GHCJS.DOM.HTMLAudioElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBRElement as GHCJS.DOM.HTMLBRElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBaseElement as GHCJS.DOM.HTMLBaseElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBodyElement as GHCJS.DOM.HTMLBodyElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLButtonElement as GHCJS.DOM.HTMLButtonElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement as GHCJS.DOM.HTMLCanvasElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLCollection as GHCJS.DOM.HTMLCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLDListElement as GHCJS.DOM.HTMLDListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDataElement as GHCJS.DOM.HTMLDataElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDataListElement as GHCJS.DOM.HTMLDataListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement as GHCJS.DOM.HTMLDetailsElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDialogElement as GHCJS.DOM.HTMLDialogElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement as GHCJS.DOM.HTMLDirectoryElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDivElement as GHCJS.DOM.HTMLDivElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLElement as GHCJS.DOM.HTMLElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement as GHCJS.DOM.HTMLEmbedElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement as GHCJS.DOM.HTMLFieldSetElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFontElement as GHCJS.DOM.HTMLFontElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection as GHCJS.DOM.HTMLFormControlsCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLFormElement as GHCJS.DOM.HTMLFormElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFrameElement as GHCJS.DOM.HTMLFrameElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement as GHCJS.DOM.HTMLFrameSetElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHRElement as GHCJS.DOM.HTMLHRElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHeadElement as GHCJS.DOM.HTMLHeadElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement as GHCJS.DOM.HTMLHeadingElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement as GHCJS.DOM.HTMLHtmlElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils as GHCJS.DOM.HTMLHyperlinkElementUtils
+          , GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement as GHCJS.DOM.HTMLIFrameElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLImageElement as GHCJS.DOM.HTMLImageElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLInputElement as GHCJS.DOM.HTMLInputElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLIElement as GHCJS.DOM.HTMLLIElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLabelElement as GHCJS.DOM.HTMLLabelElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLegendElement as GHCJS.DOM.HTMLLegendElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLinkElement as GHCJS.DOM.HTMLLinkElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMapElement as GHCJS.DOM.HTMLMapElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement as GHCJS.DOM.HTMLMarqueeElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMediaElement as GHCJS.DOM.HTMLMediaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMenuElement as GHCJS.DOM.HTMLMenuElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMetaElement as GHCJS.DOM.HTMLMetaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMeterElement as GHCJS.DOM.HTMLMeterElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLModElement as GHCJS.DOM.HTMLModElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOListElement as GHCJS.DOM.HTMLOListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLObjectElement as GHCJS.DOM.HTMLObjectElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement as GHCJS.DOM.HTMLOptGroupElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOptionElement as GHCJS.DOM.HTMLOptionElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection as GHCJS.DOM.HTMLOptionsCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLOrSVGOrMathMLElement as GHCJS.DOM.HTMLOrSVGOrMathMLElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOutputElement as GHCJS.DOM.HTMLOutputElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement as GHCJS.DOM.HTMLParagraphElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLParamElement as GHCJS.DOM.HTMLParamElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLPictureElement as GHCJS.DOM.HTMLPictureElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLPreElement as GHCJS.DOM.HTMLPreElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLProgressElement as GHCJS.DOM.HTMLProgressElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement as GHCJS.DOM.HTMLQuoteElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLScriptElement as GHCJS.DOM.HTMLScriptElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSelectElement as GHCJS.DOM.HTMLSelectElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSelectedContentElement as GHCJS.DOM.HTMLSelectedContentElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSlotElement as GHCJS.DOM.HTMLSlotElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSourceElement as GHCJS.DOM.HTMLSourceElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSpanElement as GHCJS.DOM.HTMLSpanElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLStyleElement as GHCJS.DOM.HTMLStyleElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement as GHCJS.DOM.HTMLTableCaptionElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement as GHCJS.DOM.HTMLTableCellElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableColElement as GHCJS.DOM.HTMLTableColElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableElement as GHCJS.DOM.HTMLTableElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement as GHCJS.DOM.HTMLTableRowElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement as GHCJS.DOM.HTMLTableSectionElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement as GHCJS.DOM.HTMLTemplateElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement as GHCJS.DOM.HTMLTextAreaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTimeElement as GHCJS.DOM.HTMLTimeElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTitleElement as GHCJS.DOM.HTMLTitleElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTrackElement as GHCJS.DOM.HTMLTrackElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLUListElement as GHCJS.DOM.HTMLUListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLUnknownElement as GHCJS.DOM.HTMLUnknownElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLVideoElement as GHCJS.DOM.HTMLVideoElement
+          , GHCJS.DOM.JSFFI.Generated.HashChangeEvent as GHCJS.DOM.HashChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.HashChangeEventInit as GHCJS.DOM.HashChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.Headers as GHCJS.DOM.Headers
+          , GHCJS.DOM.JSFFI.Generated.HevcEncoderConfig as GHCJS.DOM.HevcEncoderConfig
+          , GHCJS.DOM.JSFFI.Generated.Highlight as GHCJS.DOM.Highlight
+          , GHCJS.DOM.JSFFI.Generated.HighlightHitResult as GHCJS.DOM.HighlightHitResult
+          , GHCJS.DOM.JSFFI.Generated.HighlightRegistry as GHCJS.DOM.HighlightRegistry
+          , GHCJS.DOM.JSFFI.Generated.HighlightsFromPointOptions as GHCJS.DOM.HighlightsFromPointOptions
+          , GHCJS.DOM.JSFFI.Generated.History as GHCJS.DOM.History
+          , GHCJS.DOM.JSFFI.Generated.HyperlinkElementUtils as GHCJS.DOM.HyperlinkElementUtils
+          , GHCJS.DOM.JSFFI.Generated.IDBCursor as GHCJS.DOM.IDBCursor
+          , GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue as GHCJS.DOM.IDBCursorWithValue
+          , GHCJS.DOM.JSFFI.Generated.IDBDatabase as GHCJS.DOM.IDBDatabase
+          , GHCJS.DOM.JSFFI.Generated.IDBDatabaseInfo as GHCJS.DOM.IDBDatabaseInfo
+          , GHCJS.DOM.JSFFI.Generated.IDBFactory as GHCJS.DOM.IDBFactory
+          , GHCJS.DOM.JSFFI.Generated.IDBGetAllOptions as GHCJS.DOM.IDBGetAllOptions
+          , GHCJS.DOM.JSFFI.Generated.IDBIndex as GHCJS.DOM.IDBIndex
+          , GHCJS.DOM.JSFFI.Generated.IDBIndexParameters as GHCJS.DOM.IDBIndexParameters
+          , GHCJS.DOM.JSFFI.Generated.IDBKeyRange as GHCJS.DOM.IDBKeyRange
+          , GHCJS.DOM.JSFFI.Generated.IDBObjectStore as GHCJS.DOM.IDBObjectStore
+          , GHCJS.DOM.JSFFI.Generated.IDBObjectStoreParameters as GHCJS.DOM.IDBObjectStoreParameters
+          , GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest as GHCJS.DOM.IDBOpenDBRequest
+          , GHCJS.DOM.JSFFI.Generated.IDBRecord as GHCJS.DOM.IDBRecord
+          , GHCJS.DOM.JSFFI.Generated.IDBRequest as GHCJS.DOM.IDBRequest
+          , GHCJS.DOM.JSFFI.Generated.IDBTransaction as GHCJS.DOM.IDBTransaction
+          , GHCJS.DOM.JSFFI.Generated.IDBTransactionOptions as GHCJS.DOM.IDBTransactionOptions
+          , GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent as GHCJS.DOM.IDBVersionChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEventInit as GHCJS.DOM.IDBVersionChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.IIRFilterNode as GHCJS.DOM.IIRFilterNode
+          , GHCJS.DOM.JSFFI.Generated.IIRFilterOptions as GHCJS.DOM.IIRFilterOptions
+          , GHCJS.DOM.JSFFI.Generated.IdentityCredentialRequestOptions as GHCJS.DOM.IdentityCredentialRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.IdentityProviderConfig as GHCJS.DOM.IdentityProviderConfig
+          , GHCJS.DOM.JSFFI.Generated.IdentityProviderRequestOptions as GHCJS.DOM.IdentityProviderRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.IdleDeadline as GHCJS.DOM.IdleDeadline
+          , GHCJS.DOM.JSFFI.Generated.IdleRequestCallback as GHCJS.DOM.IdleRequestCallback
+          , GHCJS.DOM.JSFFI.Generated.IdleRequestOptions as GHCJS.DOM.IdleRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.ImageBitmap as GHCJS.DOM.ImageBitmap
+          , GHCJS.DOM.JSFFI.Generated.ImageBitmapRenderingContext as GHCJS.DOM.ImageBitmapRenderingContext
+          , GHCJS.DOM.JSFFI.Generated.ImageCapture as GHCJS.DOM.ImageCapture
+          , GHCJS.DOM.JSFFI.Generated.ImageData as GHCJS.DOM.ImageData
+          , GHCJS.DOM.JSFFI.Generated.ImageDataSettings as GHCJS.DOM.ImageDataSettings
+          , GHCJS.DOM.JSFFI.Generated.ImageDecodeOptions as GHCJS.DOM.ImageDecodeOptions
+          , GHCJS.DOM.JSFFI.Generated.ImageDecodeResult as GHCJS.DOM.ImageDecodeResult
+          , GHCJS.DOM.JSFFI.Generated.ImageDecoder as GHCJS.DOM.ImageDecoder
+          , GHCJS.DOM.JSFFI.Generated.ImageDecoderInit as GHCJS.DOM.ImageDecoderInit
+          , GHCJS.DOM.JSFFI.Generated.ImageEncodeOptions as GHCJS.DOM.ImageEncodeOptions
+          , GHCJS.DOM.JSFFI.Generated.ImageTrack as GHCJS.DOM.ImageTrack
+          , GHCJS.DOM.JSFFI.Generated.ImageTrackList as GHCJS.DOM.ImageTrackList
+          , GHCJS.DOM.JSFFI.Generated.ImportNodeOptions as GHCJS.DOM.ImportNodeOptions
+          , GHCJS.DOM.JSFFI.Generated.InputDeviceCapabilities as GHCJS.DOM.InputDeviceCapabilities
+          , GHCJS.DOM.JSFFI.Generated.InputDeviceInfo as GHCJS.DOM.InputDeviceInfo
+          , GHCJS.DOM.JSFFI.Generated.InputEvent as GHCJS.DOM.InputEvent
+          , GHCJS.DOM.JSFFI.Generated.InputEventInit as GHCJS.DOM.InputEventInit
+          , GHCJS.DOM.JSFFI.Generated.InstallEvent as GHCJS.DOM.InstallEvent
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserver as GHCJS.DOM.IntersectionObserver
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback as GHCJS.DOM.IntersectionObserverCallback
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry as GHCJS.DOM.IntersectionObserverEntry
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntryInit as GHCJS.DOM.IntersectionObserverEntryInit
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverInit as GHCJS.DOM.IntersectionObserverInit
+          , GHCJS.DOM.JSFFI.Generated.JsonWebKey as GHCJS.DOM.JsonWebKey
+          , GHCJS.DOM.JSFFI.Generated.KHR_parallel_shader_compile as GHCJS.DOM.KHR_parallel_shader_compile
+          , GHCJS.DOM.JSFFI.Generated.KeySystemTrackConfiguration as GHCJS.DOM.KeySystemTrackConfiguration
+          , GHCJS.DOM.JSFFI.Generated.KeyboardEvent as GHCJS.DOM.KeyboardEvent
+          , GHCJS.DOM.JSFFI.Generated.KeyboardEventInit as GHCJS.DOM.KeyboardEventInit
+          , GHCJS.DOM.JSFFI.Generated.KeyframeAnimationOptions as GHCJS.DOM.KeyframeAnimationOptions
+          , GHCJS.DOM.JSFFI.Generated.KeyframeEffect as GHCJS.DOM.KeyframeEffect
+          , GHCJS.DOM.JSFFI.Generated.KeyframeEffectOptions as GHCJS.DOM.KeyframeEffectOptions
+          , GHCJS.DOM.JSFFI.Generated.LargestContentfulPaint as GHCJS.DOM.LargestContentfulPaint
+          , GHCJS.DOM.JSFFI.Generated.LinkStyle as GHCJS.DOM.LinkStyle
+          , GHCJS.DOM.JSFFI.Generated.Location as GHCJS.DOM.Location
+          , GHCJS.DOM.JSFFI.Generated.Lock as GHCJS.DOM.Lock
+          , GHCJS.DOM.JSFFI.Generated.LockGrantedCallback as GHCJS.DOM.LockGrantedCallback
+          , GHCJS.DOM.JSFFI.Generated.LockInfo as GHCJS.DOM.LockInfo
+          , GHCJS.DOM.JSFFI.Generated.LockManager as GHCJS.DOM.LockManager
+          , GHCJS.DOM.JSFFI.Generated.LockManagerSnapshot as GHCJS.DOM.LockManagerSnapshot
+          , GHCJS.DOM.JSFFI.Generated.LockOptions as GHCJS.DOM.LockOptions
+          , GHCJS.DOM.JSFFI.Generated.MIDIAccess as GHCJS.DOM.MIDIAccess
+          , GHCJS.DOM.JSFFI.Generated.MIDIConnectionEvent as GHCJS.DOM.MIDIConnectionEvent
+          , GHCJS.DOM.JSFFI.Generated.MIDIConnectionEventInit as GHCJS.DOM.MIDIConnectionEventInit
+          , GHCJS.DOM.JSFFI.Generated.MIDIInput as GHCJS.DOM.MIDIInput
+          , GHCJS.DOM.JSFFI.Generated.MIDIInputMap as GHCJS.DOM.MIDIInputMap
+          , GHCJS.DOM.JSFFI.Generated.MIDIMessageEvent as GHCJS.DOM.MIDIMessageEvent
+          , GHCJS.DOM.JSFFI.Generated.MIDIMessageEventInit as GHCJS.DOM.MIDIMessageEventInit
+          , GHCJS.DOM.JSFFI.Generated.MIDIOptions as GHCJS.DOM.MIDIOptions
+          , GHCJS.DOM.JSFFI.Generated.MIDIOutput as GHCJS.DOM.MIDIOutput
+          , GHCJS.DOM.JSFFI.Generated.MIDIOutputMap as GHCJS.DOM.MIDIOutputMap
+          , GHCJS.DOM.JSFFI.Generated.MIDIPort as GHCJS.DOM.MIDIPort
+          , GHCJS.DOM.JSFFI.Generated.MathMLElement as GHCJS.DOM.MathMLElement
+          , GHCJS.DOM.JSFFI.Generated.MediaCapabilities as GHCJS.DOM.MediaCapabilities
+          , GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesDecodingInfo as GHCJS.DOM.MediaCapabilitiesDecodingInfo
+          , GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesEncodingInfo as GHCJS.DOM.MediaCapabilitiesEncodingInfo
+          , GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesInfo as GHCJS.DOM.MediaCapabilitiesInfo
+          , GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesKeySystemConfiguration as GHCJS.DOM.MediaCapabilitiesKeySystemConfiguration
+          , GHCJS.DOM.JSFFI.Generated.MediaConfiguration as GHCJS.DOM.MediaConfiguration
+          , GHCJS.DOM.JSFFI.Generated.MediaDecodingConfiguration as GHCJS.DOM.MediaDecodingConfiguration
+          , GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo as GHCJS.DOM.MediaDeviceInfo
+          , GHCJS.DOM.JSFFI.Generated.MediaDevices as GHCJS.DOM.MediaDevices
+          , GHCJS.DOM.JSFFI.Generated.MediaEffectInfo as GHCJS.DOM.MediaEffectInfo
+          , GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode as GHCJS.DOM.MediaElementAudioSourceNode
+          , GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceOptions as GHCJS.DOM.MediaElementAudioSourceOptions
+          , GHCJS.DOM.JSFFI.Generated.MediaEncodingConfiguration as GHCJS.DOM.MediaEncodingConfiguration
+          , GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent as GHCJS.DOM.MediaEncryptedEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaEncryptedEventInit as GHCJS.DOM.MediaEncryptedEventInit
+          , GHCJS.DOM.JSFFI.Generated.MediaError as GHCJS.DOM.MediaError
+          , GHCJS.DOM.JSFFI.Generated.MediaImage as GHCJS.DOM.MediaImage
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent as GHCJS.DOM.MediaKeyMessageEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEventInit as GHCJS.DOM.MediaKeyMessageEventInit
+          , GHCJS.DOM.JSFFI.Generated.MediaKeySession as GHCJS.DOM.MediaKeySession
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap as GHCJS.DOM.MediaKeyStatusMap
+          , GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess as GHCJS.DOM.MediaKeySystemAccess
+          , GHCJS.DOM.JSFFI.Generated.MediaKeySystemConfiguration as GHCJS.DOM.MediaKeySystemConfiguration
+          , GHCJS.DOM.JSFFI.Generated.MediaKeySystemMediaCapability as GHCJS.DOM.MediaKeySystemMediaCapability
+          , GHCJS.DOM.JSFFI.Generated.MediaKeys as GHCJS.DOM.MediaKeys
+          , GHCJS.DOM.JSFFI.Generated.MediaKeysPolicy as GHCJS.DOM.MediaKeysPolicy
+          , GHCJS.DOM.JSFFI.Generated.MediaList as GHCJS.DOM.MediaList
+          , GHCJS.DOM.JSFFI.Generated.MediaMetadata as GHCJS.DOM.MediaMetadata
+          , GHCJS.DOM.JSFFI.Generated.MediaMetadataInit as GHCJS.DOM.MediaMetadataInit
+          , GHCJS.DOM.JSFFI.Generated.MediaPositionState as GHCJS.DOM.MediaPositionState
+          , GHCJS.DOM.JSFFI.Generated.MediaQueryList as GHCJS.DOM.MediaQueryList
+          , GHCJS.DOM.JSFFI.Generated.MediaQueryListEvent as GHCJS.DOM.MediaQueryListEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaQueryListEventInit as GHCJS.DOM.MediaQueryListEventInit
+          , GHCJS.DOM.JSFFI.Generated.MediaRecorder as GHCJS.DOM.MediaRecorder
+          , GHCJS.DOM.JSFFI.Generated.MediaRecorderOptions as GHCJS.DOM.MediaRecorderOptions
+          , GHCJS.DOM.JSFFI.Generated.MediaSession as GHCJS.DOM.MediaSession
+          , GHCJS.DOM.JSFFI.Generated.MediaSessionActionDetails as GHCJS.DOM.MediaSessionActionDetails
+          , GHCJS.DOM.JSFFI.Generated.MediaSessionActionHandler as GHCJS.DOM.MediaSessionActionHandler
+          , GHCJS.DOM.JSFFI.Generated.MediaSettingsRange as GHCJS.DOM.MediaSettingsRange
+          , GHCJS.DOM.JSFFI.Generated.MediaSource as GHCJS.DOM.MediaSource
+          , GHCJS.DOM.JSFFI.Generated.MediaSourceHandle as GHCJS.DOM.MediaSourceHandle
+          , GHCJS.DOM.JSFFI.Generated.MediaStream as GHCJS.DOM.MediaStream
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode as GHCJS.DOM.MediaStreamAudioDestinationNode
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode as GHCJS.DOM.MediaStreamAudioSourceNode
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceOptions as GHCJS.DOM.MediaStreamAudioSourceOptions
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamConstraints as GHCJS.DOM.MediaStreamConstraints
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrack as GHCJS.DOM.MediaStreamTrack
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent as GHCJS.DOM.MediaStreamTrackEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEventInit as GHCJS.DOM.MediaStreamTrackEventInit
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackHandle as GHCJS.DOM.MediaStreamTrackHandle
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackProcessor as GHCJS.DOM.MediaStreamTrackProcessor
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackProcessorInit as GHCJS.DOM.MediaStreamTrackProcessorInit
+          , GHCJS.DOM.JSFFI.Generated.MediaTrackCapabilities as GHCJS.DOM.MediaTrackCapabilities
+          , GHCJS.DOM.JSFFI.Generated.MediaTrackConstraintSet as GHCJS.DOM.MediaTrackConstraintSet
+          , GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints as GHCJS.DOM.MediaTrackConstraints
+          , GHCJS.DOM.JSFFI.Generated.MediaTrackSettings as GHCJS.DOM.MediaTrackSettings
+          , GHCJS.DOM.JSFFI.Generated.MediaTrackSupportedConstraints as GHCJS.DOM.MediaTrackSupportedConstraints
+          , GHCJS.DOM.JSFFI.Generated.MessageChannel as GHCJS.DOM.MessageChannel
+          , GHCJS.DOM.JSFFI.Generated.MessageEvent as GHCJS.DOM.MessageEvent
+          , GHCJS.DOM.JSFFI.Generated.MessageEventInit as GHCJS.DOM.MessageEventInit
+          , GHCJS.DOM.JSFFI.Generated.MessageEventTarget as GHCJS.DOM.MessageEventTarget
+          , GHCJS.DOM.JSFFI.Generated.MessagePort as GHCJS.DOM.MessagePort
+          , GHCJS.DOM.JSFFI.Generated.MimeType as GHCJS.DOM.MimeType
+          , GHCJS.DOM.JSFFI.Generated.MimeTypeArray as GHCJS.DOM.MimeTypeArray
+          , GHCJS.DOM.JSFFI.Generated.MouseEvent as GHCJS.DOM.MouseEvent
+          , GHCJS.DOM.JSFFI.Generated.MouseEventInit as GHCJS.DOM.MouseEventInit
+          , GHCJS.DOM.JSFFI.Generated.MultiCacheQueryOptions as GHCJS.DOM.MultiCacheQueryOptions
+          , GHCJS.DOM.JSFFI.Generated.MutationCallback as GHCJS.DOM.MutationCallback
+          , GHCJS.DOM.JSFFI.Generated.MutationObserver as GHCJS.DOM.MutationObserver
+          , GHCJS.DOM.JSFFI.Generated.MutationObserverInit as GHCJS.DOM.MutationObserverInit
+          , GHCJS.DOM.JSFFI.Generated.MutationRecord as GHCJS.DOM.MutationRecord
+          , GHCJS.DOM.JSFFI.Generated.NamedNodeMap as GHCJS.DOM.NamedNodeMap
+          , GHCJS.DOM.JSFFI.Generated.NavigateEvent as GHCJS.DOM.NavigateEvent
+          , GHCJS.DOM.JSFFI.Generated.NavigateEventInit as GHCJS.DOM.NavigateEventInit
+          , GHCJS.DOM.JSFFI.Generated.Navigation as GHCJS.DOM.Navigation
+          , GHCJS.DOM.JSFFI.Generated.NavigationActivation as GHCJS.DOM.NavigationActivation
+          , GHCJS.DOM.JSFFI.Generated.NavigationCurrentEntryChangeEvent as GHCJS.DOM.NavigationCurrentEntryChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.NavigationCurrentEntryChangeEventInit as GHCJS.DOM.NavigationCurrentEntryChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.NavigationDestination as GHCJS.DOM.NavigationDestination
+          , GHCJS.DOM.JSFFI.Generated.NavigationEvent as GHCJS.DOM.NavigationEvent
+          , GHCJS.DOM.JSFFI.Generated.NavigationHistoryEntry as GHCJS.DOM.NavigationHistoryEntry
+          , GHCJS.DOM.JSFFI.Generated.NavigationInterceptHandler as GHCJS.DOM.NavigationInterceptHandler
+          , GHCJS.DOM.JSFFI.Generated.NavigationInterceptOptions as GHCJS.DOM.NavigationInterceptOptions
+          , GHCJS.DOM.JSFFI.Generated.NavigationNavigateOptions as GHCJS.DOM.NavigationNavigateOptions
+          , GHCJS.DOM.JSFFI.Generated.NavigationOptions as GHCJS.DOM.NavigationOptions
+          , GHCJS.DOM.JSFFI.Generated.NavigationPrecommitController as GHCJS.DOM.NavigationPrecommitController
+          , GHCJS.DOM.JSFFI.Generated.NavigationPrecommitHandler as GHCJS.DOM.NavigationPrecommitHandler
+          , GHCJS.DOM.JSFFI.Generated.NavigationPreloadManager as GHCJS.DOM.NavigationPreloadManager
+          , GHCJS.DOM.JSFFI.Generated.NavigationPreloadState as GHCJS.DOM.NavigationPreloadState
+          , GHCJS.DOM.JSFFI.Generated.NavigationReloadOptions as GHCJS.DOM.NavigationReloadOptions
+          , GHCJS.DOM.JSFFI.Generated.NavigationResult as GHCJS.DOM.NavigationResult
+          , GHCJS.DOM.JSFFI.Generated.NavigationTransition as GHCJS.DOM.NavigationTransition
+          , GHCJS.DOM.JSFFI.Generated.NavigationUpdateCurrentEntryOptions as GHCJS.DOM.NavigationUpdateCurrentEntryOptions
+          , GHCJS.DOM.JSFFI.Generated.Navigator as GHCJS.DOM.Navigator
+          , GHCJS.DOM.JSFFI.Generated.NavigatorAutomationInformation as GHCJS.DOM.NavigatorAutomationInformation
+          , GHCJS.DOM.JSFFI.Generated.NavigatorBadge as GHCJS.DOM.NavigatorBadge
+          , GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware as GHCJS.DOM.NavigatorConcurrentHardware
+          , GHCJS.DOM.JSFFI.Generated.NavigatorContentUtils as GHCJS.DOM.NavigatorContentUtils
+          , GHCJS.DOM.JSFFI.Generated.NavigatorCookies as GHCJS.DOM.NavigatorCookies
+          , GHCJS.DOM.JSFFI.Generated.NavigatorGPU as GHCJS.DOM.NavigatorGPU
+          , GHCJS.DOM.JSFFI.Generated.NavigatorID as GHCJS.DOM.NavigatorID
+          , GHCJS.DOM.JSFFI.Generated.NavigatorLanguage as GHCJS.DOM.NavigatorLanguage
+          , GHCJS.DOM.JSFFI.Generated.NavigatorLocks as GHCJS.DOM.NavigatorLocks
+          , GHCJS.DOM.JSFFI.Generated.NavigatorLogin as GHCJS.DOM.NavigatorLogin
+          , GHCJS.DOM.JSFFI.Generated.NavigatorOnLine as GHCJS.DOM.NavigatorOnLine
+          , GHCJS.DOM.JSFFI.Generated.NavigatorPlugins as GHCJS.DOM.NavigatorPlugins
+          , GHCJS.DOM.JSFFI.Generated.NavigatorStorage as GHCJS.DOM.NavigatorStorage
+          , GHCJS.DOM.JSFFI.Generated.Node as GHCJS.DOM.Node
+          , GHCJS.DOM.JSFFI.Generated.NodeFilter as GHCJS.DOM.NodeFilter
+          , GHCJS.DOM.JSFFI.Generated.NodeIterator as GHCJS.DOM.NodeIterator
+          , GHCJS.DOM.JSFFI.Generated.NodeList as GHCJS.DOM.NodeList
+          , GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode as GHCJS.DOM.NonDocumentTypeChildNode
+          , GHCJS.DOM.JSFFI.Generated.NonElementParentNode as GHCJS.DOM.NonElementParentNode
+          , GHCJS.DOM.JSFFI.Generated.Notification as GHCJS.DOM.Notification
+          , GHCJS.DOM.JSFFI.Generated.NotificationAction as GHCJS.DOM.NotificationAction
+          , GHCJS.DOM.JSFFI.Generated.NotificationEvent as GHCJS.DOM.NotificationEvent
+          , GHCJS.DOM.JSFFI.Generated.NotificationEventInit as GHCJS.DOM.NotificationEventInit
+          , GHCJS.DOM.JSFFI.Generated.NotificationOptions as GHCJS.DOM.NotificationOptions
+          , GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback as GHCJS.DOM.NotificationPermissionCallback
+          , GHCJS.DOM.JSFFI.Generated.OES_draw_buffers_indexed as GHCJS.DOM.OES_draw_buffers_indexed
+          , GHCJS.DOM.JSFFI.Generated.OES_element_index_uint as GHCJS.DOM.OES_element_index_uint
+          , GHCJS.DOM.JSFFI.Generated.OES_fbo_render_mipmap as GHCJS.DOM.OES_fbo_render_mipmap
+          , GHCJS.DOM.JSFFI.Generated.OES_standard_derivatives as GHCJS.DOM.OES_standard_derivatives
+          , GHCJS.DOM.JSFFI.Generated.OES_texture_float as GHCJS.DOM.OES_texture_float
+          , GHCJS.DOM.JSFFI.Generated.OES_texture_float_linear as GHCJS.DOM.OES_texture_float_linear
+          , GHCJS.DOM.JSFFI.Generated.OES_texture_half_float as GHCJS.DOM.OES_texture_half_float
+          , GHCJS.DOM.JSFFI.Generated.OES_texture_half_float_linear as GHCJS.DOM.OES_texture_half_float_linear
+          , GHCJS.DOM.JSFFI.Generated.OES_vertex_array_object as GHCJS.DOM.OES_vertex_array_object
+          , GHCJS.DOM.JSFFI.Generated.OTPCredentialRequestOptions as GHCJS.DOM.OTPCredentialRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.OVR_multiview2 as GHCJS.DOM.OVR_multiview2
+          , GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent as GHCJS.DOM.OfflineAudioCompletionEvent
+          , GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEventInit as GHCJS.DOM.OfflineAudioCompletionEventInit
+          , GHCJS.DOM.JSFFI.Generated.OfflineAudioContext as GHCJS.DOM.OfflineAudioContext
+          , GHCJS.DOM.JSFFI.Generated.OfflineAudioContextOptions as GHCJS.DOM.OfflineAudioContextOptions
+          , GHCJS.DOM.JSFFI.Generated.OffscreenCanvas as GHCJS.DOM.OffscreenCanvas
+          , GHCJS.DOM.JSFFI.Generated.OffscreenCanvasRenderingContext2D as GHCJS.DOM.OffscreenCanvasRenderingContext2D
+          , GHCJS.DOM.JSFFI.Generated.OptionalEffectTiming as GHCJS.DOM.OptionalEffectTiming
+          , GHCJS.DOM.JSFFI.Generated.OpusEncoderConfig as GHCJS.DOM.OpusEncoderConfig
+          , GHCJS.DOM.JSFFI.Generated.Origin as GHCJS.DOM.Origin
+          , GHCJS.DOM.JSFFI.Generated.OscillatorNode as GHCJS.DOM.OscillatorNode
+          , GHCJS.DOM.JSFFI.Generated.OscillatorOptions as GHCJS.DOM.OscillatorOptions
+          , GHCJS.DOM.JSFFI.Generated.OverconstrainedError as GHCJS.DOM.OverconstrainedError
+          , GHCJS.DOM.JSFFI.Generated.PageRevealEvent as GHCJS.DOM.PageRevealEvent
+          , GHCJS.DOM.JSFFI.Generated.PageRevealEventInit as GHCJS.DOM.PageRevealEventInit
+          , GHCJS.DOM.JSFFI.Generated.PageSwapEvent as GHCJS.DOM.PageSwapEvent
+          , GHCJS.DOM.JSFFI.Generated.PageSwapEventInit as GHCJS.DOM.PageSwapEventInit
+          , GHCJS.DOM.JSFFI.Generated.PageTransitionEvent as GHCJS.DOM.PageTransitionEvent
+          , GHCJS.DOM.JSFFI.Generated.PageTransitionEventInit as GHCJS.DOM.PageTransitionEventInit
+          , GHCJS.DOM.JSFFI.Generated.PaintTimingMixin as GHCJS.DOM.PaintTimingMixin
+          , GHCJS.DOM.JSFFI.Generated.PannerNode as GHCJS.DOM.PannerNode
+          , GHCJS.DOM.JSFFI.Generated.PannerOptions as GHCJS.DOM.PannerOptions
+          , GHCJS.DOM.JSFFI.Generated.ParentNode as GHCJS.DOM.ParentNode
+          , GHCJS.DOM.JSFFI.Generated.ParseHTMLUnsafeOptions as GHCJS.DOM.ParseHTMLUnsafeOptions
+          , GHCJS.DOM.JSFFI.Generated.PasswordCredential as GHCJS.DOM.PasswordCredential
+          , GHCJS.DOM.JSFFI.Generated.PasswordCredentialData as GHCJS.DOM.PasswordCredentialData
+          , GHCJS.DOM.JSFFI.Generated.Path2D as GHCJS.DOM.Path2D
+          , GHCJS.DOM.JSFFI.Generated.PayerErrors as GHCJS.DOM.PayerErrors
+          , GHCJS.DOM.JSFFI.Generated.PaymentCompleteDetails as GHCJS.DOM.PaymentCompleteDetails
+          , GHCJS.DOM.JSFFI.Generated.PaymentCredentialInstrument as GHCJS.DOM.PaymentCredentialInstrument
+          , GHCJS.DOM.JSFFI.Generated.PaymentCurrencyAmount as GHCJS.DOM.PaymentCurrencyAmount
+          , GHCJS.DOM.JSFFI.Generated.PaymentDetailsBase as GHCJS.DOM.PaymentDetailsBase
+          , GHCJS.DOM.JSFFI.Generated.PaymentDetailsInit as GHCJS.DOM.PaymentDetailsInit
+          , GHCJS.DOM.JSFFI.Generated.PaymentDetailsModifier as GHCJS.DOM.PaymentDetailsModifier
+          , GHCJS.DOM.JSFFI.Generated.PaymentDetailsUpdate as GHCJS.DOM.PaymentDetailsUpdate
+          , GHCJS.DOM.JSFFI.Generated.PaymentEntityLogo as GHCJS.DOM.PaymentEntityLogo
+          , GHCJS.DOM.JSFFI.Generated.PaymentItem as GHCJS.DOM.PaymentItem
+          , GHCJS.DOM.JSFFI.Generated.PaymentMethodChangeEvent as GHCJS.DOM.PaymentMethodChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.PaymentMethodChangeEventInit as GHCJS.DOM.PaymentMethodChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.PaymentMethodData as GHCJS.DOM.PaymentMethodData
+          , GHCJS.DOM.JSFFI.Generated.PaymentOptions as GHCJS.DOM.PaymentOptions
+          , GHCJS.DOM.JSFFI.Generated.PaymentRequest as GHCJS.DOM.PaymentRequest
+          , GHCJS.DOM.JSFFI.Generated.PaymentRequestUpdateEvent as GHCJS.DOM.PaymentRequestUpdateEvent
+          , GHCJS.DOM.JSFFI.Generated.PaymentRequestUpdateEventInit as GHCJS.DOM.PaymentRequestUpdateEventInit
+          , GHCJS.DOM.JSFFI.Generated.PaymentResponse as GHCJS.DOM.PaymentResponse
+          , GHCJS.DOM.JSFFI.Generated.PaymentShippingOption as GHCJS.DOM.PaymentShippingOption
+          , GHCJS.DOM.JSFFI.Generated.PaymentValidationErrors as GHCJS.DOM.PaymentValidationErrors
+          , GHCJS.DOM.JSFFI.Generated.Performance as GHCJS.DOM.Performance
+          , GHCJS.DOM.JSFFI.Generated.PerformanceEntry as GHCJS.DOM.PerformanceEntry
+          , GHCJS.DOM.JSFFI.Generated.PerformanceEventTiming as GHCJS.DOM.PerformanceEventTiming
+          , GHCJS.DOM.JSFFI.Generated.PerformanceMark as GHCJS.DOM.PerformanceMark
+          , GHCJS.DOM.JSFFI.Generated.PerformanceMarkOptions as GHCJS.DOM.PerformanceMarkOptions
+          , GHCJS.DOM.JSFFI.Generated.PerformanceMeasure as GHCJS.DOM.PerformanceMeasure
+          , GHCJS.DOM.JSFFI.Generated.PerformanceMeasureOptions as GHCJS.DOM.PerformanceMeasureOptions
+          , GHCJS.DOM.JSFFI.Generated.PerformanceNavigation as GHCJS.DOM.PerformanceNavigation
+          , GHCJS.DOM.JSFFI.Generated.PerformanceNavigationTiming as GHCJS.DOM.PerformanceNavigationTiming
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserver as GHCJS.DOM.PerformanceObserver
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback as GHCJS.DOM.PerformanceObserverCallback
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallbackOptions as GHCJS.DOM.PerformanceObserverCallbackOptions
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList as GHCJS.DOM.PerformanceObserverEntryList
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverInit as GHCJS.DOM.PerformanceObserverInit
+          , GHCJS.DOM.JSFFI.Generated.PerformancePaintTiming as GHCJS.DOM.PerformancePaintTiming
+          , GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming as GHCJS.DOM.PerformanceResourceTiming
+          , GHCJS.DOM.JSFFI.Generated.PerformanceServerTiming as GHCJS.DOM.PerformanceServerTiming
+          , GHCJS.DOM.JSFFI.Generated.PerformanceTiming as GHCJS.DOM.PerformanceTiming
+          , GHCJS.DOM.JSFFI.Generated.PeriodicWave as GHCJS.DOM.PeriodicWave
+          , GHCJS.DOM.JSFFI.Generated.PeriodicWaveConstraints as GHCJS.DOM.PeriodicWaveConstraints
+          , GHCJS.DOM.JSFFI.Generated.PeriodicWaveOptions as GHCJS.DOM.PeriodicWaveOptions
+          , GHCJS.DOM.JSFFI.Generated.PermissionStatus as GHCJS.DOM.PermissionStatus
+          , GHCJS.DOM.JSFFI.Generated.Permissions as GHCJS.DOM.Permissions
+          , GHCJS.DOM.JSFFI.Generated.PhotoCapabilities as GHCJS.DOM.PhotoCapabilities
+          , GHCJS.DOM.JSFFI.Generated.PhotoSettings as GHCJS.DOM.PhotoSettings
+          , GHCJS.DOM.JSFFI.Generated.PictureInPictureEvent as GHCJS.DOM.PictureInPictureEvent
+          , GHCJS.DOM.JSFFI.Generated.PictureInPictureEventInit as GHCJS.DOM.PictureInPictureEventInit
+          , GHCJS.DOM.JSFFI.Generated.PictureInPictureWindow as GHCJS.DOM.PictureInPictureWindow
+          , GHCJS.DOM.JSFFI.Generated.PlaneLayout as GHCJS.DOM.PlaneLayout
+          , GHCJS.DOM.JSFFI.Generated.Plugin as GHCJS.DOM.Plugin
+          , GHCJS.DOM.JSFFI.Generated.PluginArray as GHCJS.DOM.PluginArray
+          , GHCJS.DOM.JSFFI.Generated.Point2D as GHCJS.DOM.Point2D
+          , GHCJS.DOM.JSFFI.Generated.PointerEvent as GHCJS.DOM.PointerEvent
+          , GHCJS.DOM.JSFFI.Generated.PointerEventInit as GHCJS.DOM.PointerEventInit
+          , GHCJS.DOM.JSFFI.Generated.PointerLockOptions as GHCJS.DOM.PointerLockOptions
+          , GHCJS.DOM.JSFFI.Generated.PopStateEvent as GHCJS.DOM.PopStateEvent
+          , GHCJS.DOM.JSFFI.Generated.PopStateEventInit as GHCJS.DOM.PopStateEventInit
+          , GHCJS.DOM.JSFFI.Generated.PopoverTargetAttributes as GHCJS.DOM.PopoverTargetAttributes
+          , GHCJS.DOM.JSFFI.Generated.PositionCallback as GHCJS.DOM.PositionCallback
+          , GHCJS.DOM.JSFFI.Generated.PositionErrorCallback as GHCJS.DOM.PositionErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.PositionOptions as GHCJS.DOM.PositionOptions
+          , GHCJS.DOM.JSFFI.Generated.PrivateToken as GHCJS.DOM.PrivateToken
+          , GHCJS.DOM.JSFFI.Generated.ProcessingInstruction as GHCJS.DOM.ProcessingInstruction
+          , GHCJS.DOM.JSFFI.Generated.ProgressEvent as GHCJS.DOM.ProgressEvent
+          , GHCJS.DOM.JSFFI.Generated.ProgressEventInit as GHCJS.DOM.ProgressEventInit
+          , GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent as GHCJS.DOM.PromiseRejectionEvent
+          , GHCJS.DOM.JSFFI.Generated.PromiseRejectionEventInit as GHCJS.DOM.PromiseRejectionEventInit
+          , GHCJS.DOM.JSFFI.Generated.PropertyDefinition as GHCJS.DOM.PropertyDefinition
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredential as GHCJS.DOM.PublicKeyCredential
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialCreationOptions as GHCJS.DOM.PublicKeyCredentialCreationOptions
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialCreationOptionsJSON as GHCJS.DOM.PublicKeyCredentialCreationOptionsJSON
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialDescriptor as GHCJS.DOM.PublicKeyCredentialDescriptor
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialDescriptorJSON as GHCJS.DOM.PublicKeyCredentialDescriptorJSON
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialEntity as GHCJS.DOM.PublicKeyCredentialEntity
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialParameters as GHCJS.DOM.PublicKeyCredentialParameters
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRequestOptions as GHCJS.DOM.PublicKeyCredentialRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRequestOptionsJSON as GHCJS.DOM.PublicKeyCredentialRequestOptionsJSON
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRpEntity as GHCJS.DOM.PublicKeyCredentialRpEntity
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialUserEntity as GHCJS.DOM.PublicKeyCredentialUserEntity
+          , GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialUserEntityJSON as GHCJS.DOM.PublicKeyCredentialUserEntityJSON
+          , GHCJS.DOM.JSFFI.Generated.PushEvent as GHCJS.DOM.PushEvent
+          , GHCJS.DOM.JSFFI.Generated.PushEventInit as GHCJS.DOM.PushEventInit
+          , GHCJS.DOM.JSFFI.Generated.PushManager as GHCJS.DOM.PushManager
+          , GHCJS.DOM.JSFFI.Generated.PushManagerAttribute as GHCJS.DOM.PushManagerAttribute
+          , GHCJS.DOM.JSFFI.Generated.PushMessageData as GHCJS.DOM.PushMessageData
+          , GHCJS.DOM.JSFFI.Generated.PushSubscription as GHCJS.DOM.PushSubscription
+          , GHCJS.DOM.JSFFI.Generated.PushSubscriptionChangeEvent as GHCJS.DOM.PushSubscriptionChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.PushSubscriptionChangeEventInit as GHCJS.DOM.PushSubscriptionChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.PushSubscriptionJSON as GHCJS.DOM.PushSubscriptionJSON
+          , GHCJS.DOM.JSFFI.Generated.PushSubscriptionKeys as GHCJS.DOM.PushSubscriptionKeys
+          , GHCJS.DOM.JSFFI.Generated.PushSubscriptionOptions as GHCJS.DOM.PushSubscriptionOptions
+          , GHCJS.DOM.JSFFI.Generated.PushSubscriptionOptionsInit as GHCJS.DOM.PushSubscriptionOptionsInit
+          , GHCJS.DOM.JSFFI.Generated.QueuingStrategy as GHCJS.DOM.QueuingStrategy
+          , GHCJS.DOM.JSFFI.Generated.QueuingStrategyInit as GHCJS.DOM.QueuingStrategyInit
+          , GHCJS.DOM.JSFFI.Generated.QueuingStrategySize as GHCJS.DOM.QueuingStrategySize
+          , GHCJS.DOM.JSFFI.Generated.RTCAnswerOptions as GHCJS.DOM.RTCAnswerOptions
+          , GHCJS.DOM.JSFFI.Generated.RTCCertificate as GHCJS.DOM.RTCCertificate
+          , GHCJS.DOM.JSFFI.Generated.RTCConfiguration as GHCJS.DOM.RTCConfiguration
+          , GHCJS.DOM.JSFFI.Generated.RTCDTMFSender as GHCJS.DOM.RTCDTMFSender
+          , GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent as GHCJS.DOM.RTCDTMFToneChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEventInit as GHCJS.DOM.RTCDTMFToneChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.RTCDataChannel as GHCJS.DOM.RTCDataChannel
+          , GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent as GHCJS.DOM.RTCDataChannelEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCDataChannelEventInit as GHCJS.DOM.RTCDataChannelEventInit
+          , GHCJS.DOM.JSFFI.Generated.RTCDataChannelInit as GHCJS.DOM.RTCDataChannelInit
+          , GHCJS.DOM.JSFFI.Generated.RTCDtlsFingerprint as GHCJS.DOM.RTCDtlsFingerprint
+          , GHCJS.DOM.JSFFI.Generated.RTCDtlsTransport as GHCJS.DOM.RTCDtlsTransport
+          , GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrame as GHCJS.DOM.RTCEncodedAudioFrame
+          , GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrameMetadata as GHCJS.DOM.RTCEncodedAudioFrameMetadata
+          , GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrameOptions as GHCJS.DOM.RTCEncodedAudioFrameOptions
+          , GHCJS.DOM.JSFFI.Generated.RTCEncodedFrameMetadata as GHCJS.DOM.RTCEncodedFrameMetadata
+          , GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrame as GHCJS.DOM.RTCEncodedVideoFrame
+          , GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrameMetadata as GHCJS.DOM.RTCEncodedVideoFrameMetadata
+          , GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrameOptions as GHCJS.DOM.RTCEncodedVideoFrameOptions
+          , GHCJS.DOM.JSFFI.Generated.RTCError as GHCJS.DOM.RTCError
+          , GHCJS.DOM.JSFFI.Generated.RTCErrorEvent as GHCJS.DOM.RTCErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCErrorEventInit as GHCJS.DOM.RTCErrorEventInit
+          , GHCJS.DOM.JSFFI.Generated.RTCErrorInit as GHCJS.DOM.RTCErrorInit
+          , GHCJS.DOM.JSFFI.Generated.RTCIceCandidate as GHCJS.DOM.RTCIceCandidate
+          , GHCJS.DOM.JSFFI.Generated.RTCIceCandidateInit as GHCJS.DOM.RTCIceCandidateInit
+          , GHCJS.DOM.JSFFI.Generated.RTCIceCandidatePair as GHCJS.DOM.RTCIceCandidatePair
+          , GHCJS.DOM.JSFFI.Generated.RTCIceServer as GHCJS.DOM.RTCIceServer
+          , GHCJS.DOM.JSFFI.Generated.RTCIceTransport as GHCJS.DOM.RTCIceTransport
+          , GHCJS.DOM.JSFFI.Generated.RTCLocalIceCandidateInit as GHCJS.DOM.RTCLocalIceCandidateInit
+          , GHCJS.DOM.JSFFI.Generated.RTCLocalSessionDescriptionInit as GHCJS.DOM.RTCLocalSessionDescriptionInit
+          , GHCJS.DOM.JSFFI.Generated.RTCOfferAnswerOptions as GHCJS.DOM.RTCOfferAnswerOptions
+          , GHCJS.DOM.JSFFI.Generated.RTCOfferOptions as GHCJS.DOM.RTCOfferOptions
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnection as GHCJS.DOM.RTCPeerConnection
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback as GHCJS.DOM.RTCPeerConnectionErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceErrorEvent as GHCJS.DOM.RTCPeerConnectionIceErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceErrorEventInit as GHCJS.DOM.RTCPeerConnectionIceErrorEventInit
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent as GHCJS.DOM.RTCPeerConnectionIceEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEventInit as GHCJS.DOM.RTCPeerConnectionIceEventInit
+          , GHCJS.DOM.JSFFI.Generated.RTCRtcpParameters as GHCJS.DOM.RTCRtcpParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpCapabilities as GHCJS.DOM.RTCRtpCapabilities
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpCodec as GHCJS.DOM.RTCRtpCodec
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpCodecParameters as GHCJS.DOM.RTCRtpCodecParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpCodingParameters as GHCJS.DOM.RTCRtpCodingParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpContributingSource as GHCJS.DOM.RTCRtpContributingSource
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpEncodingParameters as GHCJS.DOM.RTCRtpEncodingParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpHeaderExtensionCapability as GHCJS.DOM.RTCRtpHeaderExtensionCapability
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpHeaderExtensionParameters as GHCJS.DOM.RTCRtpHeaderExtensionParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpParameters as GHCJS.DOM.RTCRtpParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpReceiveParameters as GHCJS.DOM.RTCRtpReceiveParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver as GHCJS.DOM.RTCRtpReceiver
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpSFrameDecryptor as GHCJS.DOM.RTCRtpSFrameDecryptor
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpSFrameEncryptor as GHCJS.DOM.RTCRtpSFrameEncryptor
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpScriptTransform as GHCJS.DOM.RTCRtpScriptTransform
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpScriptTransformer as GHCJS.DOM.RTCRtpScriptTransformer
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpSendParameters as GHCJS.DOM.RTCRtpSendParameters
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpSender as GHCJS.DOM.RTCRtpSender
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpSynchronizationSource as GHCJS.DOM.RTCRtpSynchronizationSource
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver as GHCJS.DOM.RTCRtpTransceiver
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiverInit as GHCJS.DOM.RTCRtpTransceiverInit
+          , GHCJS.DOM.JSFFI.Generated.RTCSctpTransport as GHCJS.DOM.RTCSctpTransport
+          , GHCJS.DOM.JSFFI.Generated.RTCSessionDescription as GHCJS.DOM.RTCSessionDescription
+          , GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback as GHCJS.DOM.RTCSessionDescriptionCallback
+          , GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionInit as GHCJS.DOM.RTCSessionDescriptionInit
+          , GHCJS.DOM.JSFFI.Generated.RTCSetParameterOptions as GHCJS.DOM.RTCSetParameterOptions
+          , GHCJS.DOM.JSFFI.Generated.RTCStatsReport as GHCJS.DOM.RTCStatsReport
+          , GHCJS.DOM.JSFFI.Generated.RTCTrackEvent as GHCJS.DOM.RTCTrackEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCTrackEventInit as GHCJS.DOM.RTCTrackEventInit
+          , GHCJS.DOM.JSFFI.Generated.RTCTransformEvent as GHCJS.DOM.RTCTransformEvent
+          , GHCJS.DOM.JSFFI.Generated.RadioNodeList as GHCJS.DOM.RadioNodeList
+          , GHCJS.DOM.JSFFI.Generated.Range as GHCJS.DOM.Range
+          , GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController as GHCJS.DOM.ReadableByteStreamController
+          , GHCJS.DOM.JSFFI.Generated.ReadableStream as GHCJS.DOM.ReadableStream
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader as GHCJS.DOM.ReadableStreamBYOBReader
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReaderReadOptions as GHCJS.DOM.ReadableStreamBYOBReaderReadOptions
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest as GHCJS.DOM.ReadableStreamBYOBRequest
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController as GHCJS.DOM.ReadableStreamDefaultController
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader as GHCJS.DOM.ReadableStreamDefaultReader
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamGenericReader as GHCJS.DOM.ReadableStreamGenericReader
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamGetReaderOptions as GHCJS.DOM.ReadableStreamGetReaderOptions
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamReadResult as GHCJS.DOM.ReadableStreamReadResult
+          , GHCJS.DOM.JSFFI.Generated.ReadableWritablePair as GHCJS.DOM.ReadableWritablePair
+          , GHCJS.DOM.JSFFI.Generated.RegistrationOptions as GHCJS.DOM.RegistrationOptions
+          , GHCJS.DOM.JSFFI.Generated.RemotePlayback as GHCJS.DOM.RemotePlayback
+          , GHCJS.DOM.JSFFI.Generated.RemotePlaybackAvailabilityCallback as GHCJS.DOM.RemotePlaybackAvailabilityCallback
+          , GHCJS.DOM.JSFFI.Generated.Report as GHCJS.DOM.Report
+          , GHCJS.DOM.JSFFI.Generated.ReportBody as GHCJS.DOM.ReportBody
+          , GHCJS.DOM.JSFFI.Generated.ReportingObserver as GHCJS.DOM.ReportingObserver
+          , GHCJS.DOM.JSFFI.Generated.ReportingObserverCallback as GHCJS.DOM.ReportingObserverCallback
+          , GHCJS.DOM.JSFFI.Generated.ReportingObserverOptions as GHCJS.DOM.ReportingObserverOptions
+          , GHCJS.DOM.JSFFI.Generated.Request as GHCJS.DOM.Request
+          , GHCJS.DOM.JSFFI.Generated.RequestInit as GHCJS.DOM.RequestInit
+          , GHCJS.DOM.JSFFI.Generated.ResizeObserver as GHCJS.DOM.ResizeObserver
+          , GHCJS.DOM.JSFFI.Generated.ResizeObserverCallback as GHCJS.DOM.ResizeObserverCallback
+          , GHCJS.DOM.JSFFI.Generated.ResizeObserverEntry as GHCJS.DOM.ResizeObserverEntry
+          , GHCJS.DOM.JSFFI.Generated.ResizeObserverOptions as GHCJS.DOM.ResizeObserverOptions
+          , GHCJS.DOM.JSFFI.Generated.ResizeObserverSize as GHCJS.DOM.ResizeObserverSize
+          , GHCJS.DOM.JSFFI.Generated.Response as GHCJS.DOM.Response
+          , GHCJS.DOM.JSFFI.Generated.ResponseInit as GHCJS.DOM.ResponseInit
+          , GHCJS.DOM.JSFFI.Generated.RouterCondition as GHCJS.DOM.RouterCondition
+          , GHCJS.DOM.JSFFI.Generated.RouterRule as GHCJS.DOM.RouterRule
+          , GHCJS.DOM.JSFFI.Generated.RouterSourceDict as GHCJS.DOM.RouterSourceDict
+          , GHCJS.DOM.JSFFI.Generated.RsaOtherPrimesInfo as GHCJS.DOM.RsaOtherPrimesInfo
+          , GHCJS.DOM.JSFFI.Generated.SVGAElement as GHCJS.DOM.SVGAElement
+          , GHCJS.DOM.JSFFI.Generated.SVGAngle as GHCJS.DOM.SVGAngle
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimateElement as GHCJS.DOM.SVGAnimateElement
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimateMotionElement as GHCJS.DOM.SVGAnimateMotionElement
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimateTransformElement as GHCJS.DOM.SVGAnimateTransformElement
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle as GHCJS.DOM.SVGAnimatedAngle
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean as GHCJS.DOM.SVGAnimatedBoolean
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration as GHCJS.DOM.SVGAnimatedEnumeration
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger as GHCJS.DOM.SVGAnimatedInteger
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength as GHCJS.DOM.SVGAnimatedLength
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList as GHCJS.DOM.SVGAnimatedLengthList
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber as GHCJS.DOM.SVGAnimatedNumber
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList as GHCJS.DOM.SVGAnimatedNumberList
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedPoints as GHCJS.DOM.SVGAnimatedPoints
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio as GHCJS.DOM.SVGAnimatedPreserveAspectRatio
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect as GHCJS.DOM.SVGAnimatedRect
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedString as GHCJS.DOM.SVGAnimatedString
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList as GHCJS.DOM.SVGAnimatedTransformList
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimationElement as GHCJS.DOM.SVGAnimationElement
+          , GHCJS.DOM.JSFFI.Generated.SVGBoundingBoxOptions as GHCJS.DOM.SVGBoundingBoxOptions
+          , GHCJS.DOM.JSFFI.Generated.SVGCircleElement as GHCJS.DOM.SVGCircleElement
+          , GHCJS.DOM.JSFFI.Generated.SVGClipPathElement as GHCJS.DOM.SVGClipPathElement
+          , GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement as GHCJS.DOM.SVGComponentTransferFunctionElement
+          , GHCJS.DOM.JSFFI.Generated.SVGDefsElement as GHCJS.DOM.SVGDefsElement
+          , GHCJS.DOM.JSFFI.Generated.SVGDescElement as GHCJS.DOM.SVGDescElement
+          , GHCJS.DOM.JSFFI.Generated.SVGElement as GHCJS.DOM.SVGElement
+          , GHCJS.DOM.JSFFI.Generated.SVGEllipseElement as GHCJS.DOM.SVGEllipseElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement as GHCJS.DOM.SVGFEBlendElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement as GHCJS.DOM.SVGFEColorMatrixElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement as GHCJS.DOM.SVGFEComponentTransferElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement as GHCJS.DOM.SVGFECompositeElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement as GHCJS.DOM.SVGFEConvolveMatrixElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement as GHCJS.DOM.SVGFEDiffuseLightingElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement as GHCJS.DOM.SVGFEDisplacementMapElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement as GHCJS.DOM.SVGFEDistantLightElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement as GHCJS.DOM.SVGFEDropShadowElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEFloodElement as GHCJS.DOM.SVGFEFloodElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEFuncAElement as GHCJS.DOM.SVGFEFuncAElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEFuncBElement as GHCJS.DOM.SVGFEFuncBElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEFuncGElement as GHCJS.DOM.SVGFEFuncGElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEFuncRElement as GHCJS.DOM.SVGFEFuncRElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement as GHCJS.DOM.SVGFEGaussianBlurElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEImageElement as GHCJS.DOM.SVGFEImageElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEMergeElement as GHCJS.DOM.SVGFEMergeElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement as GHCJS.DOM.SVGFEMergeNodeElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement as GHCJS.DOM.SVGFEMorphologyElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement as GHCJS.DOM.SVGFEOffsetElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement as GHCJS.DOM.SVGFEPointLightElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement as GHCJS.DOM.SVGFESpecularLightingElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement as GHCJS.DOM.SVGFESpotLightElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFETileElement as GHCJS.DOM.SVGFETileElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement as GHCJS.DOM.SVGFETurbulenceElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFilterElement as GHCJS.DOM.SVGFilterElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes as GHCJS.DOM.SVGFilterPrimitiveStandardAttributes
+          , GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox as GHCJS.DOM.SVGFitToViewBox
+          , GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement as GHCJS.DOM.SVGForeignObjectElement
+          , GHCJS.DOM.JSFFI.Generated.SVGGElement as GHCJS.DOM.SVGGElement
+          , GHCJS.DOM.JSFFI.Generated.SVGGeometryElement as GHCJS.DOM.SVGGeometryElement
+          , GHCJS.DOM.JSFFI.Generated.SVGGradientElement as GHCJS.DOM.SVGGradientElement
+          , GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement as GHCJS.DOM.SVGGraphicsElement
+          , GHCJS.DOM.JSFFI.Generated.SVGImageElement as GHCJS.DOM.SVGImageElement
+          , GHCJS.DOM.JSFFI.Generated.SVGLength as GHCJS.DOM.SVGLength
+          , GHCJS.DOM.JSFFI.Generated.SVGLengthList as GHCJS.DOM.SVGLengthList
+          , GHCJS.DOM.JSFFI.Generated.SVGLineElement as GHCJS.DOM.SVGLineElement
+          , GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement as GHCJS.DOM.SVGLinearGradientElement
+          , GHCJS.DOM.JSFFI.Generated.SVGMPathElement as GHCJS.DOM.SVGMPathElement
+          , GHCJS.DOM.JSFFI.Generated.SVGMarkerElement as GHCJS.DOM.SVGMarkerElement
+          , GHCJS.DOM.JSFFI.Generated.SVGMaskElement as GHCJS.DOM.SVGMaskElement
+          , GHCJS.DOM.JSFFI.Generated.SVGMetadataElement as GHCJS.DOM.SVGMetadataElement
+          , GHCJS.DOM.JSFFI.Generated.SVGNumber as GHCJS.DOM.SVGNumber
+          , GHCJS.DOM.JSFFI.Generated.SVGNumberList as GHCJS.DOM.SVGNumberList
+          , GHCJS.DOM.JSFFI.Generated.SVGPathElement as GHCJS.DOM.SVGPathElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPatternElement as GHCJS.DOM.SVGPatternElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPointList as GHCJS.DOM.SVGPointList
+          , GHCJS.DOM.JSFFI.Generated.SVGPolygonElement as GHCJS.DOM.SVGPolygonElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPolylineElement as GHCJS.DOM.SVGPolylineElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio as GHCJS.DOM.SVGPreserveAspectRatio
+          , GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement as GHCJS.DOM.SVGRadialGradientElement
+          , GHCJS.DOM.JSFFI.Generated.SVGRectElement as GHCJS.DOM.SVGRectElement
+          , GHCJS.DOM.JSFFI.Generated.SVGSVGElement as GHCJS.DOM.SVGSVGElement
+          , GHCJS.DOM.JSFFI.Generated.SVGScriptElement as GHCJS.DOM.SVGScriptElement
+          , GHCJS.DOM.JSFFI.Generated.SVGSetElement as GHCJS.DOM.SVGSetElement
+          , GHCJS.DOM.JSFFI.Generated.SVGStopElement as GHCJS.DOM.SVGStopElement
+          , GHCJS.DOM.JSFFI.Generated.SVGStringList as GHCJS.DOM.SVGStringList
+          , GHCJS.DOM.JSFFI.Generated.SVGStyleElement as GHCJS.DOM.SVGStyleElement
+          , GHCJS.DOM.JSFFI.Generated.SVGSwitchElement as GHCJS.DOM.SVGSwitchElement
+          , GHCJS.DOM.JSFFI.Generated.SVGSymbolElement as GHCJS.DOM.SVGSymbolElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTSpanElement as GHCJS.DOM.SVGTSpanElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTests as GHCJS.DOM.SVGTests
+          , GHCJS.DOM.JSFFI.Generated.SVGTextContentElement as GHCJS.DOM.SVGTextContentElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTextElement as GHCJS.DOM.SVGTextElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTextPathElement as GHCJS.DOM.SVGTextPathElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement as GHCJS.DOM.SVGTextPositioningElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTitleElement as GHCJS.DOM.SVGTitleElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTransform as GHCJS.DOM.SVGTransform
+          , GHCJS.DOM.JSFFI.Generated.SVGTransformList as GHCJS.DOM.SVGTransformList
+          , GHCJS.DOM.JSFFI.Generated.SVGURIReference as GHCJS.DOM.SVGURIReference
+          , GHCJS.DOM.JSFFI.Generated.SVGUnitTypes as GHCJS.DOM.SVGUnitTypes
+          , GHCJS.DOM.JSFFI.Generated.SVGUseElement as GHCJS.DOM.SVGUseElement
+          , GHCJS.DOM.JSFFI.Generated.SVGViewElement as GHCJS.DOM.SVGViewElement
+          , GHCJS.DOM.JSFFI.Generated.Sanitizer as GHCJS.DOM.Sanitizer
+          , GHCJS.DOM.JSFFI.Generated.SanitizerAttributeNamespace as GHCJS.DOM.SanitizerAttributeNamespace
+          , GHCJS.DOM.JSFFI.Generated.SanitizerConfig as GHCJS.DOM.SanitizerConfig
+          , GHCJS.DOM.JSFFI.Generated.SanitizerElementNamespace as GHCJS.DOM.SanitizerElementNamespace
+          , GHCJS.DOM.JSFFI.Generated.SanitizerElementNamespaceWithAttributes as GHCJS.DOM.SanitizerElementNamespaceWithAttributes
+          , GHCJS.DOM.JSFFI.Generated.SanitizerProcessingInstruction as GHCJS.DOM.SanitizerProcessingInstruction
+          , GHCJS.DOM.JSFFI.Generated.Scheduler as GHCJS.DOM.Scheduler
+          , GHCJS.DOM.JSFFI.Generated.SchedulerPostTaskCallback as GHCJS.DOM.SchedulerPostTaskCallback
+          , GHCJS.DOM.JSFFI.Generated.SchedulerPostTaskOptions as GHCJS.DOM.SchedulerPostTaskOptions
+          , GHCJS.DOM.JSFFI.Generated.Screen as GHCJS.DOM.Screen
+          , GHCJS.DOM.JSFFI.Generated.ScreenDetailed as GHCJS.DOM.ScreenDetailed
+          , GHCJS.DOM.JSFFI.Generated.ScreenOrientation as GHCJS.DOM.ScreenOrientation
+          , GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode as GHCJS.DOM.ScriptProcessorNode
+          , GHCJS.DOM.JSFFI.Generated.ScrollIntoViewOptions as GHCJS.DOM.ScrollIntoViewOptions
+          , GHCJS.DOM.JSFFI.Generated.ScrollOptions as GHCJS.DOM.ScrollOptions
+          , GHCJS.DOM.JSFFI.Generated.ScrollResult as GHCJS.DOM.ScrollResult
+          , GHCJS.DOM.JSFFI.Generated.ScrollTimeline as GHCJS.DOM.ScrollTimeline
+          , GHCJS.DOM.JSFFI.Generated.ScrollTimelineOptions as GHCJS.DOM.ScrollTimelineOptions
+          , GHCJS.DOM.JSFFI.Generated.ScrollToOptions as GHCJS.DOM.ScrollToOptions
+          , GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent as GHCJS.DOM.SecurityPolicyViolationEvent
+          , GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEventInit as GHCJS.DOM.SecurityPolicyViolationEventInit
+          , GHCJS.DOM.JSFFI.Generated.Segment as GHCJS.DOM.Segment
+          , GHCJS.DOM.JSFFI.Generated.Selection as GHCJS.DOM.Selection
+          , GHCJS.DOM.JSFFI.Generated.Serial as GHCJS.DOM.Serial
+          , GHCJS.DOM.JSFFI.Generated.SerialInputSignals as GHCJS.DOM.SerialInputSignals
+          , GHCJS.DOM.JSFFI.Generated.SerialOptions as GHCJS.DOM.SerialOptions
+          , GHCJS.DOM.JSFFI.Generated.SerialOutputSignals as GHCJS.DOM.SerialOutputSignals
+          , GHCJS.DOM.JSFFI.Generated.SerialPort as GHCJS.DOM.SerialPort
+          , GHCJS.DOM.JSFFI.Generated.SerialPortFilter as GHCJS.DOM.SerialPortFilter
+          , GHCJS.DOM.JSFFI.Generated.SerialPortInfo as GHCJS.DOM.SerialPortInfo
+          , GHCJS.DOM.JSFFI.Generated.SerialPortRequestOptions as GHCJS.DOM.SerialPortRequestOptions
+          , GHCJS.DOM.JSFFI.Generated.ServiceWorker as GHCJS.DOM.ServiceWorker
+          , GHCJS.DOM.JSFFI.Generated.ServiceWorkerContainer as GHCJS.DOM.ServiceWorkerContainer
+          , GHCJS.DOM.JSFFI.Generated.ServiceWorkerGlobalScope as GHCJS.DOM.ServiceWorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.ServiceWorkerRegistration as GHCJS.DOM.ServiceWorkerRegistration
+          , GHCJS.DOM.JSFFI.Generated.SetHTMLOptions as GHCJS.DOM.SetHTMLOptions
+          , GHCJS.DOM.JSFFI.Generated.SetHTMLUnsafeOptions as GHCJS.DOM.SetHTMLUnsafeOptions
+          , GHCJS.DOM.JSFFI.Generated.ShadowRoot as GHCJS.DOM.ShadowRoot
+          , GHCJS.DOM.JSFFI.Generated.ShadowRootInit as GHCJS.DOM.ShadowRootInit
+          , GHCJS.DOM.JSFFI.Generated.ShareData as GHCJS.DOM.ShareData
+          , GHCJS.DOM.JSFFI.Generated.SharedWorker as GHCJS.DOM.SharedWorker
+          , GHCJS.DOM.JSFFI.Generated.SharedWorkerGlobalScope as GHCJS.DOM.SharedWorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.SharedWorkerOptions as GHCJS.DOM.SharedWorkerOptions
+          , GHCJS.DOM.JSFFI.Generated.ShowPopoverOptions as GHCJS.DOM.ShowPopoverOptions
+          , GHCJS.DOM.JSFFI.Generated.Slottable as GHCJS.DOM.Slottable
+          , GHCJS.DOM.JSFFI.Generated.SourceBuffer as GHCJS.DOM.SourceBuffer
+          , GHCJS.DOM.JSFFI.Generated.SourceBufferList as GHCJS.DOM.SourceBufferList
+          , GHCJS.DOM.JSFFI.Generated.SpeechGrammar as GHCJS.DOM.SpeechGrammar
+          , GHCJS.DOM.JSFFI.Generated.SpeechGrammarList as GHCJS.DOM.SpeechGrammarList
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognition as GHCJS.DOM.SpeechRecognition
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionAlternative as GHCJS.DOM.SpeechRecognitionAlternative
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionErrorEvent as GHCJS.DOM.SpeechRecognitionErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionErrorEventInit as GHCJS.DOM.SpeechRecognitionErrorEventInit
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionEvent as GHCJS.DOM.SpeechRecognitionEvent
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionEventInit as GHCJS.DOM.SpeechRecognitionEventInit
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionOptions as GHCJS.DOM.SpeechRecognitionOptions
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionPhrase as GHCJS.DOM.SpeechRecognitionPhrase
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionResult as GHCJS.DOM.SpeechRecognitionResult
+          , GHCJS.DOM.JSFFI.Generated.SpeechRecognitionResultList as GHCJS.DOM.SpeechRecognitionResultList
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesis as GHCJS.DOM.SpeechSynthesis
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisErrorEvent as GHCJS.DOM.SpeechSynthesisErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisErrorEventInit as GHCJS.DOM.SpeechSynthesisErrorEventInit
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent as GHCJS.DOM.SpeechSynthesisEvent
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEventInit as GHCJS.DOM.SpeechSynthesisEventInit
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance as GHCJS.DOM.SpeechSynthesisUtterance
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice as GHCJS.DOM.SpeechSynthesisVoice
+          , GHCJS.DOM.JSFFI.Generated.StartViewTransitionOptions as GHCJS.DOM.StartViewTransitionOptions
+          , GHCJS.DOM.JSFFI.Generated.StaticRange as GHCJS.DOM.StaticRange
+          , GHCJS.DOM.JSFFI.Generated.StaticRangeInit as GHCJS.DOM.StaticRangeInit
+          , GHCJS.DOM.JSFFI.Generated.StereoPannerNode as GHCJS.DOM.StereoPannerNode
+          , GHCJS.DOM.JSFFI.Generated.StereoPannerOptions as GHCJS.DOM.StereoPannerOptions
+          , GHCJS.DOM.JSFFI.Generated.Storage as GHCJS.DOM.Storage
+          , GHCJS.DOM.JSFFI.Generated.StorageEstimate as GHCJS.DOM.StorageEstimate
+          , GHCJS.DOM.JSFFI.Generated.StorageEvent as GHCJS.DOM.StorageEvent
+          , GHCJS.DOM.JSFFI.Generated.StorageEventInit as GHCJS.DOM.StorageEventInit
+          , GHCJS.DOM.JSFFI.Generated.StorageManager as GHCJS.DOM.StorageManager
+          , GHCJS.DOM.JSFFI.Generated.StreamPipeOptions as GHCJS.DOM.StreamPipeOptions
+          , GHCJS.DOM.JSFFI.Generated.StructuredSerializeOptions as GHCJS.DOM.StructuredSerializeOptions
+          , GHCJS.DOM.JSFFI.Generated.StylePropertyMap as GHCJS.DOM.StylePropertyMap
+          , GHCJS.DOM.JSFFI.Generated.StylePropertyMapReadOnly as GHCJS.DOM.StylePropertyMapReadOnly
+          , GHCJS.DOM.JSFFI.Generated.StyleSheet as GHCJS.DOM.StyleSheet
+          , GHCJS.DOM.JSFFI.Generated.StyleSheetList as GHCJS.DOM.StyleSheetList
+          , GHCJS.DOM.JSFFI.Generated.SubmitEvent as GHCJS.DOM.SubmitEvent
+          , GHCJS.DOM.JSFFI.Generated.SubmitEventInit as GHCJS.DOM.SubmitEventInit
+          , GHCJS.DOM.JSFFI.Generated.SubtleCrypto as GHCJS.DOM.SubtleCrypto
+          , GHCJS.DOM.JSFFI.Generated.SvcOutputMetadata as GHCJS.DOM.SvcOutputMetadata
+          , GHCJS.DOM.JSFFI.Generated.TaskController as GHCJS.DOM.TaskController
+          , GHCJS.DOM.JSFFI.Generated.TaskControllerInit as GHCJS.DOM.TaskControllerInit
+          , GHCJS.DOM.JSFFI.Generated.TaskPriorityChangeEvent as GHCJS.DOM.TaskPriorityChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.TaskPriorityChangeEventInit as GHCJS.DOM.TaskPriorityChangeEventInit
+          , GHCJS.DOM.JSFFI.Generated.TaskSignal as GHCJS.DOM.TaskSignal
+          , GHCJS.DOM.JSFFI.Generated.TaskSignalAnyInit as GHCJS.DOM.TaskSignalAnyInit
+          , GHCJS.DOM.JSFFI.Generated.Text as GHCJS.DOM.Text
+          , GHCJS.DOM.JSFFI.Generated.TextDecodeOptions as GHCJS.DOM.TextDecodeOptions
+          , GHCJS.DOM.JSFFI.Generated.TextDecoder as GHCJS.DOM.TextDecoder
+          , GHCJS.DOM.JSFFI.Generated.TextDecoderCommon as GHCJS.DOM.TextDecoderCommon
+          , GHCJS.DOM.JSFFI.Generated.TextDecoderOptions as GHCJS.DOM.TextDecoderOptions
+          , GHCJS.DOM.JSFFI.Generated.TextDecoderStream as GHCJS.DOM.TextDecoderStream
+          , GHCJS.DOM.JSFFI.Generated.TextEncoder as GHCJS.DOM.TextEncoder
+          , GHCJS.DOM.JSFFI.Generated.TextEncoderCommon as GHCJS.DOM.TextEncoderCommon
+          , GHCJS.DOM.JSFFI.Generated.TextEncoderEncodeIntoResult as GHCJS.DOM.TextEncoderEncodeIntoResult
+          , GHCJS.DOM.JSFFI.Generated.TextEncoderStream as GHCJS.DOM.TextEncoderStream
+          , GHCJS.DOM.JSFFI.Generated.TextEvent as GHCJS.DOM.TextEvent
+          , GHCJS.DOM.JSFFI.Generated.TextMetrics as GHCJS.DOM.TextMetrics
+          , GHCJS.DOM.JSFFI.Generated.TextTrack as GHCJS.DOM.TextTrack
+          , GHCJS.DOM.JSFFI.Generated.TextTrackCue as GHCJS.DOM.TextTrackCue
+          , GHCJS.DOM.JSFFI.Generated.TextTrackCueList as GHCJS.DOM.TextTrackCueList
+          , GHCJS.DOM.JSFFI.Generated.TextTrackList as GHCJS.DOM.TextTrackList
+          , GHCJS.DOM.JSFFI.Generated.TimeRanges as GHCJS.DOM.TimeRanges
+          , GHCJS.DOM.JSFFI.Generated.TimelineRangeOffset as GHCJS.DOM.TimelineRangeOffset
+          , GHCJS.DOM.JSFFI.Generated.ToggleEvent as GHCJS.DOM.ToggleEvent
+          , GHCJS.DOM.JSFFI.Generated.ToggleEventInit as GHCJS.DOM.ToggleEventInit
+          , GHCJS.DOM.JSFFI.Generated.TogglePopoverOptions as GHCJS.DOM.TogglePopoverOptions
+          , GHCJS.DOM.JSFFI.Generated.Touch as GHCJS.DOM.Touch
+          , GHCJS.DOM.JSFFI.Generated.TouchEvent as GHCJS.DOM.TouchEvent
+          , GHCJS.DOM.JSFFI.Generated.TouchEventInit as GHCJS.DOM.TouchEventInit
+          , GHCJS.DOM.JSFFI.Generated.TouchInit as GHCJS.DOM.TouchInit
+          , GHCJS.DOM.JSFFI.Generated.TouchList as GHCJS.DOM.TouchList
+          , GHCJS.DOM.JSFFI.Generated.TrackEvent as GHCJS.DOM.TrackEvent
+          , GHCJS.DOM.JSFFI.Generated.TrackEventInit as GHCJS.DOM.TrackEventInit
+          , GHCJS.DOM.JSFFI.Generated.TransformStream as GHCJS.DOM.TransformStream
+          , GHCJS.DOM.JSFFI.Generated.TransformStreamDefaultController as GHCJS.DOM.TransformStreamDefaultController
+          , GHCJS.DOM.JSFFI.Generated.TransitionEvent as GHCJS.DOM.TransitionEvent
+          , GHCJS.DOM.JSFFI.Generated.TransitionEventInit as GHCJS.DOM.TransitionEventInit
+          , GHCJS.DOM.JSFFI.Generated.TreeWalker as GHCJS.DOM.TreeWalker
+          , GHCJS.DOM.JSFFI.Generated.TrustedHTML as GHCJS.DOM.TrustedHTML
+          , GHCJS.DOM.JSFFI.Generated.TrustedHTMLParserOptions as GHCJS.DOM.TrustedHTMLParserOptions
+          , GHCJS.DOM.JSFFI.Generated.TrustedScript as GHCJS.DOM.TrustedScript
+          , GHCJS.DOM.JSFFI.Generated.TrustedScriptURL as GHCJS.DOM.TrustedScriptURL
+          , GHCJS.DOM.JSFFI.Generated.TrustedTypePolicy as GHCJS.DOM.TrustedTypePolicy
+          , GHCJS.DOM.JSFFI.Generated.TrustedTypePolicyFactory as GHCJS.DOM.TrustedTypePolicyFactory
+          , GHCJS.DOM.JSFFI.Generated.TrustedTypePolicyOptions as GHCJS.DOM.TrustedTypePolicyOptions
+          , GHCJS.DOM.JSFFI.Generated.UIEvent as GHCJS.DOM.UIEvent
+          , GHCJS.DOM.JSFFI.Generated.UIEventInit as GHCJS.DOM.UIEventInit
+          , GHCJS.DOM.JSFFI.Generated.ULongRange as GHCJS.DOM.ULongRange
+          , GHCJS.DOM.JSFFI.Generated.URL as GHCJS.DOM.URL
+          , GHCJS.DOM.JSFFI.Generated.URLPattern as GHCJS.DOM.URLPattern
+          , GHCJS.DOM.JSFFI.Generated.URLPatternComponentResult as GHCJS.DOM.URLPatternComponentResult
+          , GHCJS.DOM.JSFFI.Generated.URLPatternInit as GHCJS.DOM.URLPatternInit
+          , GHCJS.DOM.JSFFI.Generated.URLPatternOptions as GHCJS.DOM.URLPatternOptions
+          , GHCJS.DOM.JSFFI.Generated.URLPatternResult as GHCJS.DOM.URLPatternResult
+          , GHCJS.DOM.JSFFI.Generated.URLSearchParams as GHCJS.DOM.URLSearchParams
+          , GHCJS.DOM.JSFFI.Generated.UnknownCredentialOptions as GHCJS.DOM.UnknownCredentialOptions
+          , GHCJS.DOM.JSFFI.Generated.UserActivation as GHCJS.DOM.UserActivation
+          , GHCJS.DOM.JSFFI.Generated.VTTCue as GHCJS.DOM.VTTCue
+          , GHCJS.DOM.JSFFI.Generated.VTTRegion as GHCJS.DOM.VTTRegion
+          , GHCJS.DOM.JSFFI.Generated.ValidityState as GHCJS.DOM.ValidityState
+          , GHCJS.DOM.JSFFI.Generated.ValidityStateFlags as GHCJS.DOM.ValidityStateFlags
+          , GHCJS.DOM.JSFFI.Generated.VideoColorSpace as GHCJS.DOM.VideoColorSpace
+          , GHCJS.DOM.JSFFI.Generated.VideoColorSpaceInit as GHCJS.DOM.VideoColorSpaceInit
+          , GHCJS.DOM.JSFFI.Generated.VideoConfiguration as GHCJS.DOM.VideoConfiguration
+          , GHCJS.DOM.JSFFI.Generated.VideoDecoder as GHCJS.DOM.VideoDecoder
+          , GHCJS.DOM.JSFFI.Generated.VideoDecoderConfig as GHCJS.DOM.VideoDecoderConfig
+          , GHCJS.DOM.JSFFI.Generated.VideoDecoderInit as GHCJS.DOM.VideoDecoderInit
+          , GHCJS.DOM.JSFFI.Generated.VideoDecoderSupport as GHCJS.DOM.VideoDecoderSupport
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoder as GHCJS.DOM.VideoEncoder
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderConfig as GHCJS.DOM.VideoEncoderConfig
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptions as GHCJS.DOM.VideoEncoderEncodeOptions
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForAv1 as GHCJS.DOM.VideoEncoderEncodeOptionsForAv1
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForAvc as GHCJS.DOM.VideoEncoderEncodeOptionsForAvc
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForHevc as GHCJS.DOM.VideoEncoderEncodeOptionsForHevc
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForVp9 as GHCJS.DOM.VideoEncoderEncodeOptionsForVp9
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderInit as GHCJS.DOM.VideoEncoderInit
+          , GHCJS.DOM.JSFFI.Generated.VideoEncoderSupport as GHCJS.DOM.VideoEncoderSupport
+          , GHCJS.DOM.JSFFI.Generated.VideoFrame as GHCJS.DOM.VideoFrame
+          , GHCJS.DOM.JSFFI.Generated.VideoFrameBufferInit as GHCJS.DOM.VideoFrameBufferInit
+          , GHCJS.DOM.JSFFI.Generated.VideoFrameCallbackMetadata as GHCJS.DOM.VideoFrameCallbackMetadata
+          , GHCJS.DOM.JSFFI.Generated.VideoFrameCopyToOptions as GHCJS.DOM.VideoFrameCopyToOptions
+          , GHCJS.DOM.JSFFI.Generated.VideoFrameInit as GHCJS.DOM.VideoFrameInit
+          , GHCJS.DOM.JSFFI.Generated.VideoFrameMetadata as GHCJS.DOM.VideoFrameMetadata
+          , GHCJS.DOM.JSFFI.Generated.VideoFrameOutputCallback as GHCJS.DOM.VideoFrameOutputCallback
+          , GHCJS.DOM.JSFFI.Generated.VideoFrameRequestCallback as GHCJS.DOM.VideoFrameRequestCallback
+          , GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality as GHCJS.DOM.VideoPlaybackQuality
+          , GHCJS.DOM.JSFFI.Generated.VideoTrack as GHCJS.DOM.VideoTrack
+          , GHCJS.DOM.JSFFI.Generated.VideoTrackList as GHCJS.DOM.VideoTrackList
+          , GHCJS.DOM.JSFFI.Generated.ViewTimeline as GHCJS.DOM.ViewTimeline
+          , GHCJS.DOM.JSFFI.Generated.ViewTimelineOptions as GHCJS.DOM.ViewTimelineOptions
+          , GHCJS.DOM.JSFFI.Generated.ViewTransition as GHCJS.DOM.ViewTransition
+          , GHCJS.DOM.JSFFI.Generated.ViewTransitionTypeSet as GHCJS.DOM.ViewTransitionTypeSet
+          , GHCJS.DOM.JSFFI.Generated.ViewTransitionUpdateCallback as GHCJS.DOM.ViewTransitionUpdateCallback
+          , GHCJS.DOM.JSFFI.Generated.VisualViewport as GHCJS.DOM.VisualViewport
+          , GHCJS.DOM.JSFFI.Generated.VoidFunction as GHCJS.DOM.VoidFunction
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_color_buffer_float as GHCJS.DOM.WEBGL_color_buffer_float
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_astc as GHCJS.DOM.WEBGL_compressed_texture_astc
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_etc as GHCJS.DOM.WEBGL_compressed_texture_etc
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_etc1 as GHCJS.DOM.WEBGL_compressed_texture_etc1
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_pvrtc as GHCJS.DOM.WEBGL_compressed_texture_pvrtc
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_s3tc as GHCJS.DOM.WEBGL_compressed_texture_s3tc
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_s3tc_srgb as GHCJS.DOM.WEBGL_compressed_texture_s3tc_srgb
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_debug_renderer_info as GHCJS.DOM.WEBGL_debug_renderer_info
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_debug_shaders as GHCJS.DOM.WEBGL_debug_shaders
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_depth_texture as GHCJS.DOM.WEBGL_depth_texture
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_draw_buffers as GHCJS.DOM.WEBGL_draw_buffers
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_lose_context as GHCJS.DOM.WEBGL_lose_context
+          , GHCJS.DOM.JSFFI.Generated.WEBGL_multi_draw as GHCJS.DOM.WEBGL_multi_draw
+          , GHCJS.DOM.JSFFI.Generated.WGSLLanguageFeatures as GHCJS.DOM.WGSLLanguageFeatures
+          , GHCJS.DOM.JSFFI.Generated.WakeLock as GHCJS.DOM.WakeLock
+          , GHCJS.DOM.JSFFI.Generated.WakeLockSentinel as GHCJS.DOM.WakeLockSentinel
+          , GHCJS.DOM.JSFFI.Generated.WaveShaperNode as GHCJS.DOM.WaveShaperNode
+          , GHCJS.DOM.JSFFI.Generated.WaveShaperOptions as GHCJS.DOM.WaveShaperOptions
+          , GHCJS.DOM.JSFFI.Generated.WebCodecsErrorCallback as GHCJS.DOM.WebCodecsErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext as GHCJS.DOM.WebGL2RenderingContext
+          , GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContextBase as GHCJS.DOM.WebGL2RenderingContextBase
+          , GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContextOverloads as GHCJS.DOM.WebGL2RenderingContextOverloads
+          , GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo as GHCJS.DOM.WebGLActiveInfo
+          , GHCJS.DOM.JSFFI.Generated.WebGLBuffer as GHCJS.DOM.WebGLBuffer
+          , GHCJS.DOM.JSFFI.Generated.WebGLContextAttributes as GHCJS.DOM.WebGLContextAttributes
+          , GHCJS.DOM.JSFFI.Generated.WebGLContextEvent as GHCJS.DOM.WebGLContextEvent
+          , GHCJS.DOM.JSFFI.Generated.WebGLContextEventInit as GHCJS.DOM.WebGLContextEventInit
+          , GHCJS.DOM.JSFFI.Generated.WebGLFramebuffer as GHCJS.DOM.WebGLFramebuffer
+          , GHCJS.DOM.JSFFI.Generated.WebGLObject as GHCJS.DOM.WebGLObject
+          , GHCJS.DOM.JSFFI.Generated.WebGLProgram as GHCJS.DOM.WebGLProgram
+          , GHCJS.DOM.JSFFI.Generated.WebGLQuery as GHCJS.DOM.WebGLQuery
+          , GHCJS.DOM.JSFFI.Generated.WebGLRenderbuffer as GHCJS.DOM.WebGLRenderbuffer
+          , GHCJS.DOM.JSFFI.Generated.WebGLRenderingContext as GHCJS.DOM.WebGLRenderingContext
+          , GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase as GHCJS.DOM.WebGLRenderingContextBase
+          , GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextOverloads as GHCJS.DOM.WebGLRenderingContextOverloads
+          , GHCJS.DOM.JSFFI.Generated.WebGLSampler as GHCJS.DOM.WebGLSampler
+          , GHCJS.DOM.JSFFI.Generated.WebGLShader as GHCJS.DOM.WebGLShader
+          , GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat as GHCJS.DOM.WebGLShaderPrecisionFormat
+          , GHCJS.DOM.JSFFI.Generated.WebGLSync as GHCJS.DOM.WebGLSync
+          , GHCJS.DOM.JSFFI.Generated.WebGLTexture as GHCJS.DOM.WebGLTexture
+          , GHCJS.DOM.JSFFI.Generated.WebGLTransformFeedback as GHCJS.DOM.WebGLTransformFeedback
+          , GHCJS.DOM.JSFFI.Generated.WebGLUniformLocation as GHCJS.DOM.WebGLUniformLocation
+          , GHCJS.DOM.JSFFI.Generated.WebGLVertexArrayObject as GHCJS.DOM.WebGLVertexArrayObject
+          , GHCJS.DOM.JSFFI.Generated.WebGLVertexArrayObjectOES as GHCJS.DOM.WebGLVertexArrayObjectOES
+          , GHCJS.DOM.JSFFI.Generated.WebSocket as GHCJS.DOM.WebSocket
+          , GHCJS.DOM.JSFFI.Generated.WebTransport as GHCJS.DOM.WebTransport
+          , GHCJS.DOM.JSFFI.Generated.WebTransportBidirectionalStream as GHCJS.DOM.WebTransportBidirectionalStream
+          , GHCJS.DOM.JSFFI.Generated.WebTransportCloseInfo as GHCJS.DOM.WebTransportCloseInfo
+          , GHCJS.DOM.JSFFI.Generated.WebTransportConnectionStats as GHCJS.DOM.WebTransportConnectionStats
+          , GHCJS.DOM.JSFFI.Generated.WebTransportDatagramDuplexStream as GHCJS.DOM.WebTransportDatagramDuplexStream
+          , GHCJS.DOM.JSFFI.Generated.WebTransportDatagramStats as GHCJS.DOM.WebTransportDatagramStats
+          , GHCJS.DOM.JSFFI.Generated.WebTransportDatagramsWritable as GHCJS.DOM.WebTransportDatagramsWritable
+          , GHCJS.DOM.JSFFI.Generated.WebTransportError as GHCJS.DOM.WebTransportError
+          , GHCJS.DOM.JSFFI.Generated.WebTransportErrorOptions as GHCJS.DOM.WebTransportErrorOptions
+          , GHCJS.DOM.JSFFI.Generated.WebTransportHash as GHCJS.DOM.WebTransportHash
+          , GHCJS.DOM.JSFFI.Generated.WebTransportOptions as GHCJS.DOM.WebTransportOptions
+          , GHCJS.DOM.JSFFI.Generated.WebTransportReceiveStream as GHCJS.DOM.WebTransportReceiveStream
+          , GHCJS.DOM.JSFFI.Generated.WebTransportReceiveStreamStats as GHCJS.DOM.WebTransportReceiveStreamStats
+          , GHCJS.DOM.JSFFI.Generated.WebTransportSendGroup as GHCJS.DOM.WebTransportSendGroup
+          , GHCJS.DOM.JSFFI.Generated.WebTransportSendOptions as GHCJS.DOM.WebTransportSendOptions
+          , GHCJS.DOM.JSFFI.Generated.WebTransportSendStream as GHCJS.DOM.WebTransportSendStream
+          , GHCJS.DOM.JSFFI.Generated.WebTransportSendStreamOptions as GHCJS.DOM.WebTransportSendStreamOptions
+          , GHCJS.DOM.JSFFI.Generated.WebTransportSendStreamStats as GHCJS.DOM.WebTransportSendStreamStats
+          , GHCJS.DOM.JSFFI.Generated.WebTransportWriter as GHCJS.DOM.WebTransportWriter
+          , GHCJS.DOM.JSFFI.Generated.WheelEvent as GHCJS.DOM.WheelEvent
+          , GHCJS.DOM.JSFFI.Generated.WheelEventInit as GHCJS.DOM.WheelEventInit
+          , GHCJS.DOM.JSFFI.Generated.Window as GHCJS.DOM.Window
+          , GHCJS.DOM.JSFFI.Generated.WindowClient as GHCJS.DOM.WindowClient
+          , GHCJS.DOM.JSFFI.Generated.WindowEventHandlers as GHCJS.DOM.WindowEventHandlers
+          , GHCJS.DOM.JSFFI.Generated.WindowLocalStorage as GHCJS.DOM.WindowLocalStorage
+          , GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope as GHCJS.DOM.WindowOrWorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.WindowPostMessageOptions as GHCJS.DOM.WindowPostMessageOptions
+          , GHCJS.DOM.JSFFI.Generated.WindowSessionStorage as GHCJS.DOM.WindowSessionStorage
+          , GHCJS.DOM.JSFFI.Generated.Worker as GHCJS.DOM.Worker
+          , GHCJS.DOM.JSFFI.Generated.WorkerAndParameters as GHCJS.DOM.WorkerAndParameters
+          , GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope as GHCJS.DOM.WorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.WorkerLocation as GHCJS.DOM.WorkerLocation
+          , GHCJS.DOM.JSFFI.Generated.WorkerNavigator as GHCJS.DOM.WorkerNavigator
+          , GHCJS.DOM.JSFFI.Generated.WorkerOptions as GHCJS.DOM.WorkerOptions
+          , GHCJS.DOM.JSFFI.Generated.Worklet as GHCJS.DOM.Worklet
+          , GHCJS.DOM.JSFFI.Generated.WorkletGlobalScope as GHCJS.DOM.WorkletGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.WorkletOptions as GHCJS.DOM.WorkletOptions
+          , GHCJS.DOM.JSFFI.Generated.WritableStream as GHCJS.DOM.WritableStream
+          , GHCJS.DOM.JSFFI.Generated.WritableStreamDefaultController as GHCJS.DOM.WritableStreamDefaultController
+          , GHCJS.DOM.JSFFI.Generated.WritableStreamDefaultWriter as GHCJS.DOM.WritableStreamDefaultWriter
+          , GHCJS.DOM.JSFFI.Generated.WriteParams as GHCJS.DOM.WriteParams
+          , GHCJS.DOM.JSFFI.Generated.XMLDocument as GHCJS.DOM.XMLDocument
+          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget as GHCJS.DOM.XMLHttpRequestEventTarget
+          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload as GHCJS.DOM.XMLHttpRequestUpload
+          , GHCJS.DOM.JSFFI.Generated.XMLSerializer as GHCJS.DOM.XMLSerializer
+          , GHCJS.DOM.JSFFI.Generated.XPathEvaluator as GHCJS.DOM.XPathEvaluator
+          , GHCJS.DOM.JSFFI.Generated.XPathEvaluatorBase as GHCJS.DOM.XPathEvaluatorBase
+          , GHCJS.DOM.JSFFI.Generated.XPathExpression as GHCJS.DOM.XPathExpression
+          , GHCJS.DOM.JSFFI.Generated.XPathNSResolver as GHCJS.DOM.XPathNSResolver
+          , GHCJS.DOM.JSFFI.Generated.XPathResult as GHCJS.DOM.XPathResult
+          , GHCJS.DOM.JSFFI.Generated.XSLTProcessor as GHCJS.DOM.XSLTProcessor
+          , GHCJS.DOM.JSFFI.Generated.Enums as GHCJS.DOM.Enums
diff --git a/src/GHCJS/DOM/EventM.hs b/src/GHCJS/DOM/EventM.hs
--- a/src/GHCJS/DOM/EventM.hs
+++ b/src/GHCJS/DOM/EventM.hs
@@ -73,8 +73,6 @@
 , mouseX
 , mouseY
 , mouseXY
-, mouseFromElement
-, mouseToElement
 )
 where
 import           Control.Applicative ((<$>))
@@ -113,12 +111,12 @@
 -- | Add an EventListener to an EventTarget.
 addListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
 addListener target eventName (SaferEventListener l) useCapture =
-    addEventListener target (eventNameString eventName) (Just l) useCapture
+    addEventListener target (eventNameString eventName) (Just l) (Just useCapture)
 
 -- | Remove an EventListener from an EventTarget.
 removeListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
 removeListener target eventName (SaferEventListener l) useCapture =
-    removeEventListener target (eventNameString eventName) (Just l) useCapture
+    removeEventListener target (eventNameString eventName) (Just l) (Just useCapture)
 
 -- | Release the listener (deallocates callbacks).
 releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> IO ()
@@ -193,13 +191,13 @@
 event = ask
 
 eventTarget :: IsEvent e => EventM t e (Maybe EventTarget)
-eventTarget = event >>= Event.getTarget
+eventTarget = event >>= (Event.getTarget)
 
 eventTargetUnsafe :: IsEvent e => EventM t e EventTarget
-eventTargetUnsafe = event >>= Event.getTargetUnsafe
+eventTargetUnsafe = event >>= (Event.getTargetUnsafe)
 
 eventTargetUnchecked :: IsEvent e => EventM t e EventTarget
-eventTargetUnchecked = event >>= Event.getTargetUnchecked
+eventTargetUnchecked = event >>= (Event.getTargetUnchecked)
 
 target :: (IsEvent e, IsGObject t) => EventM t e (Maybe t)
 target = eventTarget >>= mapM (liftJSM . fromJSValUnchecked . coerce)
@@ -211,99 +209,102 @@
 targetUnchecked = eventTargetUnchecked >>= (liftJSM . fromJSValUnchecked . coerce)
 
 eventCurrentTarget :: IsEvent e => EventM t e (Maybe EventTarget)
-eventCurrentTarget = event >>= Event.getCurrentTarget
+eventCurrentTarget = event >>= (Event.getCurrentTarget)
 
 eventCurrentTargetUnsafe :: IsEvent e => EventM t e EventTarget
-eventCurrentTargetUnsafe = event >>= Event.getCurrentTargetUnsafe
+eventCurrentTargetUnsafe = event >>= (Event.getCurrentTargetUnsafe)
 
 eventCurrentTargetUnchecked :: IsEvent e => EventM t e EventTarget
-eventCurrentTargetUnchecked = event >>= Event.getCurrentTargetUnchecked
+eventCurrentTargetUnchecked = event >>= (Event.getCurrentTargetUnchecked)
 
 eventPhase :: IsEvent e => EventM t e Word
-eventPhase = event >>= Event.getEventPhase
+eventPhase = event >>= (Event.getEventPhase)
 
 bubbles :: IsEvent e => EventM t e Bool
-bubbles = event >>= Event.getBubbles
+bubbles = event >>= (Event.getBubbles)
 
 cancelable :: IsEvent e => EventM t e Bool
-cancelable = event >>= Event.getCancelable
+cancelable = event >>= (Event.getCancelable)
 
-timeStamp :: IsEvent e => EventM t e Word
-timeStamp = event >>= Event.getTimeStamp
+timeStamp :: IsEvent e => EventM t e Double
+timeStamp = event >>= (Event.getTimeStamp)
 
 stopPropagation :: IsEvent e => EventM t e ()
-stopPropagation = event >>= Event.stopPropagation
+stopPropagation = event >>= (Event.stopPropagation)
 
 preventDefault :: IsEvent e => EventM t e ()
-preventDefault = event >>= Event.preventDefault
+preventDefault = event >>= (Event.preventDefault)
 
 defaultPrevented :: IsEvent e => EventM t e Bool
-defaultPrevented = event >>= Event.getDefaultPrevented
+defaultPrevented = event >>= (Event.getDefaultPrevented)
 
 stopImmediatePropagation :: IsEvent e => EventM t e ()
-stopImmediatePropagation = event >>= Event.stopImmediatePropagation
+stopImmediatePropagation = event >>= (Event.stopImmediatePropagation)
 
-srcElement :: IsEvent e => EventM t e EventTarget
-srcElement = event >>= Event.getSrcElement
+srcElement :: IsEvent e => EventM t e (Maybe EventTarget)
+srcElement = event >>= (Event.getSrcElement)
 
 getCancelBubble :: IsEvent e => EventM t e Bool
-getCancelBubble = event >>= Event.getCancelBubble
+getCancelBubble = event >>= (Event.getCancelBubble)
 
 cancelBubble :: IsEvent e => Bool -> EventM t e ()
-cancelBubble f = event >>= flip Event.setCancelBubble f
+cancelBubble f = event >>= (flip Event.setCancelBubble f)
 
 getReturnValue :: IsEvent e => EventM t e Bool
-getReturnValue = event >>= Event.getReturnValue
+getReturnValue = event >>= (Event.getReturnValue)
 
 returnValue :: IsEvent e => Bool -> EventM t e ()
-returnValue f = event >>= flip Event.setReturnValue f
+returnValue f = event >>= (flip Event.setReturnValue f)
 
-uiView :: IsUIEvent e => EventM t e Window
-uiView = event >>= UIEvent.getView
+uiView :: IsUIEvent e => EventM t e (Maybe Window)
+uiView = event >>= (UIEvent.getView)
 
 uiDetail :: IsUIEvent e => EventM t e Int
-uiDetail = event >>= UIEvent.getDetail
+uiDetail = event >>= (UIEvent.getDetail)
 
 uiKeyCode :: EventM t KeyboardEvent Word
-uiKeyCode = event >>= KeyboardEvent.getKeyCode
+uiKeyCode = event >>= (KeyboardEvent.getKeyCode)
 
 uiCharCode :: EventM t KeyboardEvent Word
-uiCharCode = event >>= KeyboardEvent.getCharCode
+uiCharCode = event >>= (KeyboardEvent.getCharCode)
 
-uiLayerX :: IsUIEvent e => EventM t e Int
-uiLayerX = event >>= UIEvent.getLayerX
+-- layerX/layerY and pageX/pageY are MouseEvent attributes in current specs
+-- (they were on UIEvent in WebKit).
 
-uiLayerY :: IsUIEvent e => EventM t e Int
-uiLayerY = event >>= UIEvent.getLayerY
+uiLayerX :: IsMouseEvent e => EventM t e Int
+uiLayerX = event >>= (MouseEvent.getLayerX)
 
-uiLayerXY :: IsUIEvent e => EventM t e (Int, Int)
+uiLayerY :: IsMouseEvent e => EventM t e Int
+uiLayerY = event >>= (MouseEvent.getLayerY)
+
+uiLayerXY :: IsMouseEvent e => EventM t e (Int, Int)
 uiLayerXY = do
     e <- event
-    x <- UIEvent.getLayerX e
-    y <- UIEvent.getLayerY e
+    x <- MouseEvent.getLayerX e
+    y <- MouseEvent.getLayerY e
     return (x, y)
 
-uiPageX :: IsUIEvent e => EventM t e Int
-uiPageX = event >>= UIEvent.getPageX
+uiPageX :: IsMouseEvent e => EventM t e Double
+uiPageX = event >>= (MouseEvent.getPageX)
 
-uiPageY :: IsUIEvent e => EventM t e Int
-uiPageY = event >>= UIEvent.getPageY
+uiPageY :: IsMouseEvent e => EventM t e Double
+uiPageY = event >>= (MouseEvent.getPageY)
 
-uiPageXY :: IsUIEvent e => EventM t e (Int, Int)
+uiPageXY :: IsMouseEvent e => EventM t e (Double, Double)
 uiPageXY = do
     e <- event
-    x <- UIEvent.getPageX e
-    y <- UIEvent.getPageY e
+    x <- MouseEvent.getPageX e
+    y <- MouseEvent.getPageY e
     return (x, y)
 
-uiWhich :: IsUIEvent e => EventM t e Int
-uiWhich = event >>= UIEvent.getWhich
+uiWhich :: IsUIEvent e => EventM t e Word
+uiWhich = event >>= (UIEvent.getWhich)
 
 mouseScreenX :: IsMouseEvent e => EventM t e Int
-mouseScreenX = event >>= MouseEvent.getScreenX
+mouseScreenX = event >>= (MouseEvent.getScreenX)
 
 mouseScreenY :: IsMouseEvent e => EventM t e Int
-mouseScreenY = event >>= MouseEvent.getScreenY
+mouseScreenY = event >>= (MouseEvent.getScreenY)
 
 mouseScreenXY :: IsMouseEvent e => EventM t e (Int, Int)
 mouseScreenXY = do
@@ -313,10 +314,10 @@
     return (x, y)
 
 mouseClientX :: IsMouseEvent e => EventM t e Int
-mouseClientX = event >>= MouseEvent.getClientX
+mouseClientX = event >>= (MouseEvent.getClientX)
 
 mouseClientY :: IsMouseEvent e => EventM t e Int
-mouseClientY = event >>= MouseEvent.getClientY
+mouseClientY = event >>= (MouseEvent.getClientY)
 
 mouseClientXY :: IsMouseEvent e => EventM t e (Int, Int)
 mouseClientXY = do
@@ -325,13 +326,13 @@
     y <- MouseEvent.getClientY e
     return (x, y)
 
-mouseMovementX :: IsMouseEvent e => EventM t e Int
-mouseMovementX = event >>= MouseEvent.getMovementX
+mouseMovementX :: IsMouseEvent e => EventM t e Double
+mouseMovementX = event >>= (MouseEvent.getMovementX)
 
-mouseMovementY :: IsMouseEvent e => EventM t e Int
-mouseMovementY = event >>= MouseEvent.getMovementY
+mouseMovementY :: IsMouseEvent e => EventM t e Double
+mouseMovementY = event >>= (MouseEvent.getMovementY)
 
-mouseMovementXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseMovementXY :: IsMouseEvent e => EventM t e (Double, Double)
 mouseMovementXY = do
     e <- event
     x <- MouseEvent.getMovementX e
@@ -339,52 +340,46 @@
     return (x, y)
 
 mouseCtrlKey :: IsMouseEvent e => EventM t e Bool
-mouseCtrlKey = event >>= MouseEvent.getCtrlKey
+mouseCtrlKey = event >>= (MouseEvent.getCtrlKey)
 
 mouseShiftKey :: IsMouseEvent e => EventM t e Bool
-mouseShiftKey = event >>= MouseEvent.getShiftKey
+mouseShiftKey = event >>= (MouseEvent.getShiftKey)
 
 mouseAltKey :: IsMouseEvent e => EventM t e Bool
-mouseAltKey = event >>= MouseEvent.getAltKey
+mouseAltKey = event >>= (MouseEvent.getAltKey)
 
 mouseMetaKey :: IsMouseEvent e => EventM t e Bool
-mouseMetaKey = event >>= MouseEvent.getMetaKey
+mouseMetaKey = event >>= (MouseEvent.getMetaKey)
 
-mouseButton :: IsMouseEvent e => EventM t e Word
-mouseButton = event >>= MouseEvent.getButton
+mouseButton :: IsMouseEvent e => EventM t e Int
+mouseButton = event >>= (MouseEvent.getButton)
 
 mouseRelatedTarget :: IsMouseEvent e => EventM t e (Maybe EventTarget)
-mouseRelatedTarget = event >>= MouseEvent.getRelatedTarget
+mouseRelatedTarget = event >>= (MouseEvent.getRelatedTarget)
 
-mouseOffsetX :: IsMouseEvent e => EventM t e Int
-mouseOffsetX = event >>= MouseEvent.getOffsetX
+mouseOffsetX :: IsMouseEvent e => EventM t e Double
+mouseOffsetX = event >>= (MouseEvent.getOffsetX)
 
-mouseOffsetY :: IsMouseEvent e => EventM t e Int
-mouseOffsetY = event >>= MouseEvent.getOffsetY
+mouseOffsetY :: IsMouseEvent e => EventM t e Double
+mouseOffsetY = event >>= (MouseEvent.getOffsetY)
 
-mouseOffsetXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseOffsetXY :: IsMouseEvent e => EventM t e (Double, Double)
 mouseOffsetXY = do
     e <- event
     x <- MouseEvent.getOffsetX e
     y <- MouseEvent.getOffsetY e
     return (x, y)
 
-mouseX :: IsMouseEvent e => EventM t e Int
-mouseX = event >>= MouseEvent.getX
+mouseX :: IsMouseEvent e => EventM t e Double
+mouseX = event >>= (MouseEvent.getX)
 
-mouseY :: IsMouseEvent e => EventM t e Int
-mouseY = event >>= MouseEvent.getY
+mouseY :: IsMouseEvent e => EventM t e Double
+mouseY = event >>= (MouseEvent.getY)
 
-mouseXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseXY :: IsMouseEvent e => EventM t e (Double, Double)
 mouseXY = do
     e <- event
     x <- MouseEvent.getX e
     y <- MouseEvent.getY e
     return (x, y)
-
-mouseFromElement :: IsMouseEvent e => EventM t e (Maybe Node)
-mouseFromElement = event >>= MouseEvent.getFromElement
-
-mouseToElement :: IsMouseEvent e => EventM t e (Maybe Node)
-mouseToElement = event >>= MouseEvent.getToElement
 
diff --git a/src/GHCJS/DOM/JSFFI/AudioContext.hs b/src/GHCJS/DOM/JSFFI/AudioContext.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/AudioContext.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.JSFFI.AudioContext (
-    module Generated
-  , DecodeAudioError(..)
-  , js_decodeAudioData
-  , decodeAudioData
-) where
-
-import Control.Exception (Exception(..), throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import GHCJS.Types (JSVal)
-import GHCJS.Foreign (jsNull)
-import GHCJS.Marshal (fromJSVal, fromJSValUnchecked)
-import GHC.JS.Foreign.Callback (releaseCallback)
-import GHCJS.DOM.Types
-
-import GHCJS.DOM.JSFFI.Generated.AudioContext as Generated hiding (js_decodeAudioData, decodeAudioData)
-
-data DecodeAudioError = DecodeAudioError deriving (Show, Eq)
-
-instance Exception DecodeAudioError
-
-foreign import javascript interruptible
-        "$1[\"decodeAudioData\"]($2, $c, function() { $c(null); });" js_decodeAudioData ::
-        AudioContext -> ArrayBuffer -> IO (Nullable AudioBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation>
-decodeAudioData :: (MonadIO m, IsAudioContext self, IsArrayBuffer audioData) =>
-                   self -> audioData -> m AudioBuffer
-decodeAudioData self audioData = liftIO $ nullableToMaybe <$> js_decodeAudioData
-        (toAudioContext self)
-        (toArrayBuffer audioData)
-            >>= maybe (throwIO DecodeAudioError) return
-
diff --git a/src/GHCJS/DOM/JSFFI/DOMError.hs b/src/GHCJS/DOM/JSFFI/DOMError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/DOMError.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE RecordWildCards #-}
-module GHCJS.DOM.JSFFI.DOMError (
-    module Generated
-  , DOMErrorException(..)
-  , throwDOMErrorException
-) where
-
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import GHCJS.DOM.JSFFI.Generated.DOMError as Generated
-
-data DOMErrorException = DOMErrorException { domErrorName :: String } deriving (Show, Eq)
-
-instance Exception DOMErrorException
-
-throwDOMErrorException :: MonadIO m => DOMError -> m a
-throwDOMErrorException error = do
-    domErrorName <- getName error
-    liftIO $ throwIO DOMErrorException{..}
diff --git a/src/GHCJS/DOM/JSFFI/Database.hs b/src/GHCJS/DOM/JSFFI/Database.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Database.hs
+++ /dev/null
@@ -1,75 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.JSFFI.Database (
-    module Generated
-  , js_changeVersion
-  , changeVersion'
-  , changeVersion
-  , js_transaction
-  , transaction'
-  , transaction
-  , js_readTransaction
-  , readTransaction'
-  , readTransaction
-) where
-
-import Data.Maybe (fromJust, maybe)
-
-import Control.Monad.IO.Class (MonadIO(..))
-import Control.Exception (Exception, bracket)
-
-import GHCJS.Types (JSVal, JSString)
-import GHCJS.Foreign (jsNull)
-import GHC.JS.Foreign.Callback (OnBlocked(..))
-import GHCJS.Marshal (fromJSVal)
-import GHCJS.Marshal.Pure (pToJSVal)
-import GHC.JS.Foreign.Callback (releaseCallback)
-import GHCJS.DOM.Types
-
-import GHCJS.DOM.JSFFI.SQLError (throwSQLException)
-import GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback (newSQLTransactionCallbackSync)
-import GHCJS.DOM.JSFFI.Generated.Database as Generated hiding (js_changeVersion, changeVersion, js_transaction, transaction, js_readTransaction, readTransaction)
-
-withSQLTransactionCallback :: (SQLTransaction -> IO ()) -> (SQLTransactionCallback -> IO a) -> IO a
-withSQLTransactionCallback f = bracket (newSQLTransactionCallbackSync f) (\(SQLTransactionCallback c) -> releaseCallback c)
-
-foreign import javascript interruptible
-        "$1[\"changeVersion\"]($2, $3, $4, $c, function() { $c(null); });"
-        js_changeVersion :: Database -> JSString -> JSString -> Nullable SQLTransactionCallback -> IO (Nullable SQLError)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation>
-changeVersion' :: (MonadIO m, ToJSString oldVersion, ToJSString newVersion) =>
-                  Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> IO ()) -> m (Maybe SQLError)
-changeVersion' self oldVersion newVersion Nothing = liftIO $ nullableToMaybe <$>
-    js_changeVersion self (toJSString oldVersion) (toJSString newVersion) (Nullable jsNull)
-changeVersion' self oldVersion newVersion (Just callback) = liftIO $ nullableToMaybe <$>
-    withSQLTransactionCallback callback
-        (js_changeVersion self (toJSString oldVersion) (toJSString newVersion) . Nullable . pToJSVal)
-
-changeVersion :: (MonadIO m, ToJSString oldVersion, ToJSString newVersion) =>
-                 Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> IO ()) -> m ()
-changeVersion self oldVersion newVersion callback =
-    changeVersion' self oldVersion newVersion callback >>= maybe (return ()) throwSQLException
-
-foreign import javascript interruptible "$1[\"transaction\"]($2, $c, function() { $c(null); });"
-        js_transaction :: Database -> SQLTransactionCallback -> IO (Nullable SQLError)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation>
-transaction' :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m (Maybe SQLError)
-transaction' self callback = liftIO $ nullableToMaybe <$>
-    withSQLTransactionCallback callback
-        (js_transaction self)
-
-transaction :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m ()
-transaction self callback = transaction' self callback >>= maybe (return ()) throwSQLException
-
-foreign import javascript interruptible
-        "$1[\"readTransaction\"]($2, $c, function() { $c(null); });"
-        js_readTransaction :: Database -> SQLTransactionCallback -> IO (Nullable SQLError)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation>
-readTransaction' :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m (Maybe SQLError)
-readTransaction' self callback = liftIO $ nullableToMaybe <$>
-      withSQLTransactionCallback callback (js_readTransaction self)
-
-readTransaction :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m ()
-readTransaction self callback = readTransaction' self callback >>= maybe (return ()) throwSQLException
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs b/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
+++ /dev/null
@@ -1,71 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
-       (js_drawArraysInstancedANGLE, drawArraysInstancedANGLE,
-        js_drawElementsInstancedANGLE, drawElementsInstancedANGLE,
-        js_vertexAttribDivisorANGLE, vertexAttribDivisorANGLE,
-        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE,
-        ANGLEInstancedArrays(..), gTypeANGLEInstancedArrays)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"drawArraysInstancedANGLE\"]($2,\n$3, $4, $5); })"
-        js_drawArraysInstancedANGLE ::
-        ANGLEInstancedArrays -> Word -> Int -> Int -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawArraysInstancedANGLE Mozilla ANGLEInstancedArrays.drawArraysInstancedANGLE documentation> 
-drawArraysInstancedANGLE ::
-                         (MonadIO m) =>
-                           ANGLEInstancedArrays -> Word -> Int -> Int -> Int -> m ()
-drawArraysInstancedANGLE self mode first count primcount
-  = liftIO
-      (js_drawArraysInstancedANGLE self mode first count primcount)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawElementsInstancedANGLE\"]($2,\n$3, $4, $5, $6); })"
-        js_drawElementsInstancedANGLE ::
-        ANGLEInstancedArrays ->
-          Word -> Int -> Word -> Double -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawElementsInstancedANGLE Mozilla ANGLEInstancedArrays.drawElementsInstancedANGLE documentation> 
-drawElementsInstancedANGLE ::
-                           (MonadIO m) =>
-                             ANGLEInstancedArrays -> Word -> Int -> Word -> Int64 -> Int -> m ()
-drawElementsInstancedANGLE self mode count type' offset primcount
-  = liftIO
-      (js_drawElementsInstancedANGLE self mode count type'
-         (fromIntegral offset)
-         primcount)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"vertexAttribDivisorANGLE\"]($2,\n$3); })"
-        js_vertexAttribDivisorANGLE ::
-        ANGLEInstancedArrays -> Word -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.vertexAttribDivisorANGLE Mozilla ANGLEInstancedArrays.vertexAttribDivisorANGLE documentation> 
-vertexAttribDivisorANGLE ::
-                         (MonadIO m) => ANGLEInstancedArrays -> Word -> Word -> m ()
-vertexAttribDivisorANGLE self index divisor
-  = liftIO (js_vertexAttribDivisorANGLE self index divisor)
-pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 35070
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ANGLE_instanced_arrays.hs b/src/GHCJS/DOM/JSFFI/Generated/ANGLE_instanced_arrays.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ANGLE_instanced_arrays.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from ANGLE_instanced_arrays (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ANGLE_instanced_arrays
+       (js_drawArraysInstancedANGLE, js_drawElementsInstancedANGLE, js_vertexAttribDivisorANGLE, drawArraysInstancedANGLE, drawElementsInstancedANGLE, vertexAttribDivisorANGLE, pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, ANGLE_instanced_arrays(..), gTypeANGLE_instanced_arrays)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"drawArraysInstancedANGLE\"]($2, $3, $4, $5); })"
+        js_drawArraysInstancedANGLE :: ANGLE_instanced_arrays -> Word -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ANGLE_instanced_arrays/drawArraysInstancedANGLE MDN ANGLE_instanced_arrays.drawArraysInstancedANGLE documentation>
+drawArraysInstancedANGLE :: (MonadDOM m) => ANGLE_instanced_arrays -> Word -> Int -> Int -> Int -> m ()
+drawArraysInstancedANGLE self mode first count primcount = liftDOM (void ((js_drawArraysInstancedANGLE (self) (mode) (first) (count) (primcount))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawElementsInstancedANGLE\"]($2, $3, $4, $5, $6); })"
+        js_drawElementsInstancedANGLE :: ANGLE_instanced_arrays -> Word -> Int -> Word -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ANGLE_instanced_arrays/drawElementsInstancedANGLE MDN ANGLE_instanced_arrays.drawElementsInstancedANGLE documentation>
+drawElementsInstancedANGLE :: (MonadDOM m) => ANGLE_instanced_arrays -> Word -> Int -> Word -> Int53 -> Int -> m ()
+drawElementsInstancedANGLE self mode count type' offset primcount = liftDOM (void (((toJSVal offset) >>= \a5' -> js_drawElementsInstancedANGLE (self) (mode) (count) (type') a5' (primcount))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttribDivisorANGLE\"]($2, $3); })"
+        js_vertexAttribDivisorANGLE :: ANGLE_instanced_arrays -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ANGLE_instanced_arrays/vertexAttribDivisorANGLE MDN ANGLE_instanced_arrays.vertexAttribDivisorANGLE documentation>
+vertexAttribDivisorANGLE :: (MonadDOM m) => ANGLE_instanced_arrays -> Word -> Word -> m ()
+vertexAttribDivisorANGLE self index divisor = liftDOM (void ((js_vertexAttribDivisorANGLE (self) (index) (divisor))))
+
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ARIAMixin.hs b/src/GHCJS/DOM/JSFFI/Generated/ARIAMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ARIAMixin.hs
@@ -0,0 +1,1057 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from wai-aria-1.3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ARIAMixin
+       (js_setRole, js_getRole, js_setAriaActiveDescendantElement, js_getAriaActiveDescendantElement, js_setAriaAtomic, js_getAriaAtomic, js_setAriaAutoComplete, js_getAriaAutoComplete, js_setAriaBrailleLabel, js_getAriaBrailleLabel, js_setAriaBrailleRoleDescription, js_getAriaBrailleRoleDescription, js_setAriaBusy, js_getAriaBusy, js_setAriaChecked, js_getAriaChecked, js_setAriaColCount, js_getAriaColCount, js_setAriaColIndex, js_getAriaColIndex, js_setAriaColIndexText, js_getAriaColIndexText, js_setAriaColSpan, js_getAriaColSpan, js_setAriaControlsElements, js_getAriaControlsElements, js_setAriaCurrent, js_getAriaCurrent, js_setAriaDescribedByElements, js_getAriaDescribedByElements, js_setAriaDescription, js_getAriaDescription, js_setAriaDetailsElements, js_getAriaDetailsElements, js_setAriaDisabled, js_getAriaDisabled, js_setAriaErrorMessageElements, js_getAriaErrorMessageElements, js_setAriaExpanded, js_getAriaExpanded, js_setAriaFlowToElements, js_getAriaFlowToElements, js_setAriaHasPopup, js_getAriaHasPopup, js_setAriaHidden, js_getAriaHidden, js_setAriaInvalid, js_getAriaInvalid, js_setAriaKeyShortcuts, js_getAriaKeyShortcuts, js_setAriaLabel, js_getAriaLabel, js_setAriaLabelledByElements, js_getAriaLabelledByElements, js_setAriaLevel, js_getAriaLevel, js_setAriaLive, js_getAriaLive, js_setAriaModal, js_getAriaModal, js_setAriaMultiLine, js_getAriaMultiLine, js_setAriaMultiSelectable, js_getAriaMultiSelectable, js_setAriaOrientation, js_getAriaOrientation, js_setAriaOwnsElements, js_getAriaOwnsElements, js_setAriaPlaceholder, js_getAriaPlaceholder, js_setAriaPosInSet, js_getAriaPosInSet, js_setAriaPressed, js_getAriaPressed, js_setAriaReadOnly, js_getAriaReadOnly, js_setAriaRelevant, js_getAriaRelevant, js_setAriaRequired, js_getAriaRequired, js_setAriaRoleDescription, js_getAriaRoleDescription, js_setAriaRowCount, js_getAriaRowCount, js_setAriaRowIndex, js_getAriaRowIndex, js_setAriaRowIndexText, js_getAriaRowIndexText, js_setAriaRowSpan, js_getAriaRowSpan, js_setAriaSelected, js_getAriaSelected, js_setAriaSetSize, js_getAriaSetSize, js_setAriaSort, js_getAriaSort, js_setAriaValueMax, js_getAriaValueMax, js_setAriaValueMin, js_getAriaValueMin, js_setAriaValueNow, js_getAriaValueNow, js_setAriaValueText, js_getAriaValueText, setRole, getRole, getRoleUnsafe, getRoleUnchecked, setAriaActiveDescendantElement, getAriaActiveDescendantElement, getAriaActiveDescendantElementUnsafe, getAriaActiveDescendantElementUnchecked, setAriaAtomic, getAriaAtomic, getAriaAtomicUnsafe, getAriaAtomicUnchecked, setAriaAutoComplete, getAriaAutoComplete, getAriaAutoCompleteUnsafe, getAriaAutoCompleteUnchecked, setAriaBrailleLabel, getAriaBrailleLabel, getAriaBrailleLabelUnsafe, getAriaBrailleLabelUnchecked, setAriaBrailleRoleDescription, getAriaBrailleRoleDescription, getAriaBrailleRoleDescriptionUnsafe, getAriaBrailleRoleDescriptionUnchecked, setAriaBusy, getAriaBusy, getAriaBusyUnsafe, getAriaBusyUnchecked, setAriaChecked, getAriaChecked, getAriaCheckedUnsafe, getAriaCheckedUnchecked, setAriaColCount, getAriaColCount, getAriaColCountUnsafe, getAriaColCountUnchecked, setAriaColIndex, getAriaColIndex, getAriaColIndexUnsafe, getAriaColIndexUnchecked, setAriaColIndexText, getAriaColIndexText, getAriaColIndexTextUnsafe, getAriaColIndexTextUnchecked, setAriaColSpan, getAriaColSpan, getAriaColSpanUnsafe, getAriaColSpanUnchecked, setAriaControlsElements, getAriaControlsElements, getAriaControlsElementsUnsafe, getAriaControlsElementsUnchecked, setAriaCurrent, getAriaCurrent, getAriaCurrentUnsafe, getAriaCurrentUnchecked, setAriaDescribedByElements, getAriaDescribedByElements, getAriaDescribedByElementsUnsafe, getAriaDescribedByElementsUnchecked, setAriaDescription, getAriaDescription, getAriaDescriptionUnsafe, getAriaDescriptionUnchecked, setAriaDetailsElements, getAriaDetailsElements, getAriaDetailsElementsUnsafe, getAriaDetailsElementsUnchecked, setAriaDisabled, getAriaDisabled, getAriaDisabledUnsafe, getAriaDisabledUnchecked, setAriaErrorMessageElements, getAriaErrorMessageElements, getAriaErrorMessageElementsUnsafe, getAriaErrorMessageElementsUnchecked, setAriaExpanded, getAriaExpanded, getAriaExpandedUnsafe, getAriaExpandedUnchecked, setAriaFlowToElements, getAriaFlowToElements, getAriaFlowToElementsUnsafe, getAriaFlowToElementsUnchecked, setAriaHasPopup, getAriaHasPopup, getAriaHasPopupUnsafe, getAriaHasPopupUnchecked, setAriaHidden, getAriaHidden, getAriaHiddenUnsafe, getAriaHiddenUnchecked, setAriaInvalid, getAriaInvalid, getAriaInvalidUnsafe, getAriaInvalidUnchecked, setAriaKeyShortcuts, getAriaKeyShortcuts, getAriaKeyShortcutsUnsafe, getAriaKeyShortcutsUnchecked, setAriaLabel, getAriaLabel, getAriaLabelUnsafe, getAriaLabelUnchecked, setAriaLabelledByElements, getAriaLabelledByElements, getAriaLabelledByElementsUnsafe, getAriaLabelledByElementsUnchecked, setAriaLevel, getAriaLevel, getAriaLevelUnsafe, getAriaLevelUnchecked, setAriaLive, getAriaLive, getAriaLiveUnsafe, getAriaLiveUnchecked, setAriaModal, getAriaModal, getAriaModalUnsafe, getAriaModalUnchecked, setAriaMultiLine, getAriaMultiLine, getAriaMultiLineUnsafe, getAriaMultiLineUnchecked, setAriaMultiSelectable, getAriaMultiSelectable, getAriaMultiSelectableUnsafe, getAriaMultiSelectableUnchecked, setAriaOrientation, getAriaOrientation, getAriaOrientationUnsafe, getAriaOrientationUnchecked, setAriaOwnsElements, getAriaOwnsElements, getAriaOwnsElementsUnsafe, getAriaOwnsElementsUnchecked, setAriaPlaceholder, getAriaPlaceholder, getAriaPlaceholderUnsafe, getAriaPlaceholderUnchecked, setAriaPosInSet, getAriaPosInSet, getAriaPosInSetUnsafe, getAriaPosInSetUnchecked, setAriaPressed, getAriaPressed, getAriaPressedUnsafe, getAriaPressedUnchecked, setAriaReadOnly, getAriaReadOnly, getAriaReadOnlyUnsafe, getAriaReadOnlyUnchecked, setAriaRelevant, getAriaRelevant, getAriaRelevantUnsafe, getAriaRelevantUnchecked, setAriaRequired, getAriaRequired, getAriaRequiredUnsafe, getAriaRequiredUnchecked, setAriaRoleDescription, getAriaRoleDescription, getAriaRoleDescriptionUnsafe, getAriaRoleDescriptionUnchecked, setAriaRowCount, getAriaRowCount, getAriaRowCountUnsafe, getAriaRowCountUnchecked, setAriaRowIndex, getAriaRowIndex, getAriaRowIndexUnsafe, getAriaRowIndexUnchecked, setAriaRowIndexText, getAriaRowIndexText, getAriaRowIndexTextUnsafe, getAriaRowIndexTextUnchecked, setAriaRowSpan, getAriaRowSpan, getAriaRowSpanUnsafe, getAriaRowSpanUnchecked, setAriaSelected, getAriaSelected, getAriaSelectedUnsafe, getAriaSelectedUnchecked, setAriaSetSize, getAriaSetSize, getAriaSetSizeUnsafe, getAriaSetSizeUnchecked, setAriaSort, getAriaSort, getAriaSortUnsafe, getAriaSortUnchecked, setAriaValueMax, getAriaValueMax, getAriaValueMaxUnsafe, getAriaValueMaxUnchecked, setAriaValueMin, getAriaValueMin, getAriaValueMinUnsafe, getAriaValueMinUnchecked, setAriaValueNow, getAriaValueNow, getAriaValueNowUnsafe, getAriaValueNowUnchecked, setAriaValueText, getAriaValueText, getAriaValueTextUnsafe, getAriaValueTextUnchecked, ARIAMixin(..), gTypeARIAMixin, IsARIAMixin, toARIAMixin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"role\"] = $2; })"
+        js_setRole :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/role MDN ARIAMixin.role documentation>
+setRole :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setRole self val = liftDOM (void ((js_setRole ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"role\"]; })"
+        js_getRole :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/role MDN ARIAMixin.role documentation>
+getRole :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getRole self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRole ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/role MDN ARIAMixin.role documentation>
+getRoleUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getRoleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRole ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/role MDN ARIAMixin.role documentation>
+getRoleUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getRoleUnchecked self = liftDOM ((pFromJSVal <$> (js_getRole ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaActiveDescendantElement\"] = $2; })"
+        js_setAriaActiveDescendantElement :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaActiveDescendantElement MDN ARIAMixin.ariaActiveDescendantElement documentation>
+setAriaActiveDescendantElement :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe val -> m ()
+setAriaActiveDescendantElement self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaActiveDescendantElement ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaActiveDescendantElement\"]; })"
+        js_getAriaActiveDescendantElement :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaActiveDescendantElement MDN ARIAMixin.ariaActiveDescendantElement documentation>
+getAriaActiveDescendantElement :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe Element)
+getAriaActiveDescendantElement self = liftDOM (((js_getAriaActiveDescendantElement ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaActiveDescendantElement MDN ARIAMixin.ariaActiveDescendantElement documentation>
+getAriaActiveDescendantElementUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m Element
+getAriaActiveDescendantElementUnsafe self = liftDOM ((((js_getAriaActiveDescendantElement ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaActiveDescendantElement MDN ARIAMixin.ariaActiveDescendantElement documentation>
+getAriaActiveDescendantElementUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m Element
+getAriaActiveDescendantElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaActiveDescendantElement ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaAtomic\"] = $2; })"
+        js_setAriaAtomic :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAtomic MDN ARIAMixin.ariaAtomic documentation>
+setAriaAtomic :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaAtomic self val = liftDOM (void ((js_setAriaAtomic ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaAtomic\"]; })"
+        js_getAriaAtomic :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAtomic MDN ARIAMixin.ariaAtomic documentation>
+getAriaAtomic :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaAtomic self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaAtomic ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAtomic MDN ARIAMixin.ariaAtomic documentation>
+getAriaAtomicUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaAtomicUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaAtomic ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAtomic MDN ARIAMixin.ariaAtomic documentation>
+getAriaAtomicUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaAtomicUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaAtomic ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaAutoComplete\"] = $2; })"
+        js_setAriaAutoComplete :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAutoComplete MDN ARIAMixin.ariaAutoComplete documentation>
+setAriaAutoComplete :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaAutoComplete self val = liftDOM (void ((js_setAriaAutoComplete ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaAutoComplete\"]; })"
+        js_getAriaAutoComplete :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAutoComplete MDN ARIAMixin.ariaAutoComplete documentation>
+getAriaAutoComplete :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaAutoComplete self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaAutoComplete ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAutoComplete MDN ARIAMixin.ariaAutoComplete documentation>
+getAriaAutoCompleteUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaAutoCompleteUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaAutoComplete ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaAutoComplete MDN ARIAMixin.ariaAutoComplete documentation>
+getAriaAutoCompleteUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaAutoCompleteUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaAutoComplete ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaBrailleLabel\"] = $2; })"
+        js_setAriaBrailleLabel :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleLabel MDN ARIAMixin.ariaBrailleLabel documentation>
+setAriaBrailleLabel :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaBrailleLabel self val = liftDOM (void ((js_setAriaBrailleLabel ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaBrailleLabel\"]; })"
+        js_getAriaBrailleLabel :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleLabel MDN ARIAMixin.ariaBrailleLabel documentation>
+getAriaBrailleLabel :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaBrailleLabel self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaBrailleLabel ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleLabel MDN ARIAMixin.ariaBrailleLabel documentation>
+getAriaBrailleLabelUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaBrailleLabelUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaBrailleLabel ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleLabel MDN ARIAMixin.ariaBrailleLabel documentation>
+getAriaBrailleLabelUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaBrailleLabelUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaBrailleLabel ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaBrailleRoleDescription\"] = $2; })"
+        js_setAriaBrailleRoleDescription :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleRoleDescription MDN ARIAMixin.ariaBrailleRoleDescription documentation>
+setAriaBrailleRoleDescription :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaBrailleRoleDescription self val = liftDOM (void ((js_setAriaBrailleRoleDescription ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaBrailleRoleDescription\"]; })"
+        js_getAriaBrailleRoleDescription :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleRoleDescription MDN ARIAMixin.ariaBrailleRoleDescription documentation>
+getAriaBrailleRoleDescription :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaBrailleRoleDescription self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaBrailleRoleDescription ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleRoleDescription MDN ARIAMixin.ariaBrailleRoleDescription documentation>
+getAriaBrailleRoleDescriptionUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaBrailleRoleDescriptionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaBrailleRoleDescription ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBrailleRoleDescription MDN ARIAMixin.ariaBrailleRoleDescription documentation>
+getAriaBrailleRoleDescriptionUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaBrailleRoleDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaBrailleRoleDescription ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaBusy\"] = $2; })"
+        js_setAriaBusy :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBusy MDN ARIAMixin.ariaBusy documentation>
+setAriaBusy :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaBusy self val = liftDOM (void ((js_setAriaBusy ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaBusy\"]; })"
+        js_getAriaBusy :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBusy MDN ARIAMixin.ariaBusy documentation>
+getAriaBusy :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaBusy self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaBusy ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBusy MDN ARIAMixin.ariaBusy documentation>
+getAriaBusyUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaBusyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaBusy ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaBusy MDN ARIAMixin.ariaBusy documentation>
+getAriaBusyUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaBusyUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaBusy ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaChecked\"] = $2; })"
+        js_setAriaChecked :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaChecked MDN ARIAMixin.ariaChecked documentation>
+setAriaChecked :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaChecked self val = liftDOM (void ((js_setAriaChecked ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaChecked\"]; })"
+        js_getAriaChecked :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaChecked MDN ARIAMixin.ariaChecked documentation>
+getAriaChecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaChecked self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaChecked ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaChecked MDN ARIAMixin.ariaChecked documentation>
+getAriaCheckedUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaCheckedUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaChecked ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaChecked MDN ARIAMixin.ariaChecked documentation>
+getAriaCheckedUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaCheckedUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaChecked ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaColCount\"] = $2; })"
+        js_setAriaColCount :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColCount MDN ARIAMixin.ariaColCount documentation>
+setAriaColCount :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaColCount self val = liftDOM (void ((js_setAriaColCount ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaColCount\"]; })"
+        js_getAriaColCount :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColCount MDN ARIAMixin.ariaColCount documentation>
+getAriaColCount :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaColCount self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaColCount ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColCount MDN ARIAMixin.ariaColCount documentation>
+getAriaColCountUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaColCountUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaColCount ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColCount MDN ARIAMixin.ariaColCount documentation>
+getAriaColCountUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaColCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaColCount ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaColIndex\"] = $2; })"
+        js_setAriaColIndex :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndex MDN ARIAMixin.ariaColIndex documentation>
+setAriaColIndex :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaColIndex self val = liftDOM (void ((js_setAriaColIndex ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaColIndex\"]; })"
+        js_getAriaColIndex :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndex MDN ARIAMixin.ariaColIndex documentation>
+getAriaColIndex :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaColIndex self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaColIndex ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndex MDN ARIAMixin.ariaColIndex documentation>
+getAriaColIndexUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaColIndexUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaColIndex ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndex MDN ARIAMixin.ariaColIndex documentation>
+getAriaColIndexUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaColIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaColIndex ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaColIndexText\"] = $2; })"
+        js_setAriaColIndexText :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndexText MDN ARIAMixin.ariaColIndexText documentation>
+setAriaColIndexText :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaColIndexText self val = liftDOM (void ((js_setAriaColIndexText ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaColIndexText\"]; })"
+        js_getAriaColIndexText :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndexText MDN ARIAMixin.ariaColIndexText documentation>
+getAriaColIndexText :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaColIndexText self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaColIndexText ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndexText MDN ARIAMixin.ariaColIndexText documentation>
+getAriaColIndexTextUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaColIndexTextUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaColIndexText ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColIndexText MDN ARIAMixin.ariaColIndexText documentation>
+getAriaColIndexTextUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaColIndexTextUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaColIndexText ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaColSpan\"] = $2; })"
+        js_setAriaColSpan :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColSpan MDN ARIAMixin.ariaColSpan documentation>
+setAriaColSpan :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaColSpan self val = liftDOM (void ((js_setAriaColSpan ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaColSpan\"]; })"
+        js_getAriaColSpan :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColSpan MDN ARIAMixin.ariaColSpan documentation>
+getAriaColSpan :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaColSpan self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaColSpan ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColSpan MDN ARIAMixin.ariaColSpan documentation>
+getAriaColSpanUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaColSpanUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaColSpan ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaColSpan MDN ARIAMixin.ariaColSpan documentation>
+getAriaColSpanUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaColSpanUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaColSpan ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaControlsElements\"] = $2; })"
+        js_setAriaControlsElements :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaControlsElements MDN ARIAMixin.ariaControlsElements documentation>
+setAriaControlsElements :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe [val] -> m ()
+setAriaControlsElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaControlsElements ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaControlsElements\"]; })"
+        js_getAriaControlsElements :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaControlsElements MDN ARIAMixin.ariaControlsElements documentation>
+getAriaControlsElements :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe [Element])
+getAriaControlsElements self = liftDOM (((js_getAriaControlsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaControlsElements MDN ARIAMixin.ariaControlsElements documentation>
+getAriaControlsElementsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m [Element]
+getAriaControlsElementsUnsafe self = liftDOM ((((js_getAriaControlsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaControlsElements MDN ARIAMixin.ariaControlsElements documentation>
+getAriaControlsElementsUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m [Element]
+getAriaControlsElementsUnchecked self = liftDOM (((js_getAriaControlsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaCurrent\"] = $2; })"
+        js_setAriaCurrent :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaCurrent MDN ARIAMixin.ariaCurrent documentation>
+setAriaCurrent :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaCurrent self val = liftDOM (void ((js_setAriaCurrent ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaCurrent\"]; })"
+        js_getAriaCurrent :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaCurrent MDN ARIAMixin.ariaCurrent documentation>
+getAriaCurrent :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaCurrent self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaCurrent ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaCurrent MDN ARIAMixin.ariaCurrent documentation>
+getAriaCurrentUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaCurrentUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaCurrent ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaCurrent MDN ARIAMixin.ariaCurrent documentation>
+getAriaCurrentUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaCurrentUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaCurrent ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaDescribedByElements\"] = $2; })"
+        js_setAriaDescribedByElements :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescribedByElements MDN ARIAMixin.ariaDescribedByElements documentation>
+setAriaDescribedByElements :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe [val] -> m ()
+setAriaDescribedByElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaDescribedByElements ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaDescribedByElements\"]; })"
+        js_getAriaDescribedByElements :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescribedByElements MDN ARIAMixin.ariaDescribedByElements documentation>
+getAriaDescribedByElements :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe [Element])
+getAriaDescribedByElements self = liftDOM (((js_getAriaDescribedByElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescribedByElements MDN ARIAMixin.ariaDescribedByElements documentation>
+getAriaDescribedByElementsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m [Element]
+getAriaDescribedByElementsUnsafe self = liftDOM ((((js_getAriaDescribedByElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescribedByElements MDN ARIAMixin.ariaDescribedByElements documentation>
+getAriaDescribedByElementsUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m [Element]
+getAriaDescribedByElementsUnchecked self = liftDOM (((js_getAriaDescribedByElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaDescription\"] = $2; })"
+        js_setAriaDescription :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescription MDN ARIAMixin.ariaDescription documentation>
+setAriaDescription :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaDescription self val = liftDOM (void ((js_setAriaDescription ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaDescription\"]; })"
+        js_getAriaDescription :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescription MDN ARIAMixin.ariaDescription documentation>
+getAriaDescription :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaDescription self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaDescription ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescription MDN ARIAMixin.ariaDescription documentation>
+getAriaDescriptionUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaDescriptionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaDescription ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDescription MDN ARIAMixin.ariaDescription documentation>
+getAriaDescriptionUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaDescription ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaDetailsElements\"] = $2; })"
+        js_setAriaDetailsElements :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDetailsElements MDN ARIAMixin.ariaDetailsElements documentation>
+setAriaDetailsElements :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe [val] -> m ()
+setAriaDetailsElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaDetailsElements ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaDetailsElements\"]; })"
+        js_getAriaDetailsElements :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDetailsElements MDN ARIAMixin.ariaDetailsElements documentation>
+getAriaDetailsElements :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe [Element])
+getAriaDetailsElements self = liftDOM (((js_getAriaDetailsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDetailsElements MDN ARIAMixin.ariaDetailsElements documentation>
+getAriaDetailsElementsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m [Element]
+getAriaDetailsElementsUnsafe self = liftDOM ((((js_getAriaDetailsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDetailsElements MDN ARIAMixin.ariaDetailsElements documentation>
+getAriaDetailsElementsUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m [Element]
+getAriaDetailsElementsUnchecked self = liftDOM (((js_getAriaDetailsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaDisabled\"] = $2; })"
+        js_setAriaDisabled :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDisabled MDN ARIAMixin.ariaDisabled documentation>
+setAriaDisabled :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaDisabled self val = liftDOM (void ((js_setAriaDisabled ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaDisabled\"]; })"
+        js_getAriaDisabled :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDisabled MDN ARIAMixin.ariaDisabled documentation>
+getAriaDisabled :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaDisabled self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaDisabled ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDisabled MDN ARIAMixin.ariaDisabled documentation>
+getAriaDisabledUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaDisabledUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaDisabled ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaDisabled MDN ARIAMixin.ariaDisabled documentation>
+getAriaDisabledUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaDisabledUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaDisabled ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaErrorMessageElements\"] = $2; })"
+        js_setAriaErrorMessageElements :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaErrorMessageElements MDN ARIAMixin.ariaErrorMessageElements documentation>
+setAriaErrorMessageElements :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe [val] -> m ()
+setAriaErrorMessageElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaErrorMessageElements ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaErrorMessageElements\"]; })"
+        js_getAriaErrorMessageElements :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaErrorMessageElements MDN ARIAMixin.ariaErrorMessageElements documentation>
+getAriaErrorMessageElements :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe [Element])
+getAriaErrorMessageElements self = liftDOM (((js_getAriaErrorMessageElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaErrorMessageElements MDN ARIAMixin.ariaErrorMessageElements documentation>
+getAriaErrorMessageElementsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m [Element]
+getAriaErrorMessageElementsUnsafe self = liftDOM ((((js_getAriaErrorMessageElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaErrorMessageElements MDN ARIAMixin.ariaErrorMessageElements documentation>
+getAriaErrorMessageElementsUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m [Element]
+getAriaErrorMessageElementsUnchecked self = liftDOM (((js_getAriaErrorMessageElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaExpanded\"] = $2; })"
+        js_setAriaExpanded :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaExpanded MDN ARIAMixin.ariaExpanded documentation>
+setAriaExpanded :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaExpanded self val = liftDOM (void ((js_setAriaExpanded ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaExpanded\"]; })"
+        js_getAriaExpanded :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaExpanded MDN ARIAMixin.ariaExpanded documentation>
+getAriaExpanded :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaExpanded self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaExpanded ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaExpanded MDN ARIAMixin.ariaExpanded documentation>
+getAriaExpandedUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaExpandedUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaExpanded ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaExpanded MDN ARIAMixin.ariaExpanded documentation>
+getAriaExpandedUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaExpandedUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaExpanded ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaFlowToElements\"] = $2; })"
+        js_setAriaFlowToElements :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaFlowToElements MDN ARIAMixin.ariaFlowToElements documentation>
+setAriaFlowToElements :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe [val] -> m ()
+setAriaFlowToElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaFlowToElements ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaFlowToElements\"]; })"
+        js_getAriaFlowToElements :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaFlowToElements MDN ARIAMixin.ariaFlowToElements documentation>
+getAriaFlowToElements :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe [Element])
+getAriaFlowToElements self = liftDOM (((js_getAriaFlowToElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaFlowToElements MDN ARIAMixin.ariaFlowToElements documentation>
+getAriaFlowToElementsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m [Element]
+getAriaFlowToElementsUnsafe self = liftDOM ((((js_getAriaFlowToElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaFlowToElements MDN ARIAMixin.ariaFlowToElements documentation>
+getAriaFlowToElementsUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m [Element]
+getAriaFlowToElementsUnchecked self = liftDOM (((js_getAriaFlowToElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaHasPopup\"] = $2; })"
+        js_setAriaHasPopup :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHasPopup MDN ARIAMixin.ariaHasPopup documentation>
+setAriaHasPopup :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaHasPopup self val = liftDOM (void ((js_setAriaHasPopup ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaHasPopup\"]; })"
+        js_getAriaHasPopup :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHasPopup MDN ARIAMixin.ariaHasPopup documentation>
+getAriaHasPopup :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaHasPopup self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaHasPopup ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHasPopup MDN ARIAMixin.ariaHasPopup documentation>
+getAriaHasPopupUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaHasPopupUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaHasPopup ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHasPopup MDN ARIAMixin.ariaHasPopup documentation>
+getAriaHasPopupUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaHasPopupUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaHasPopup ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaHidden\"] = $2; })"
+        js_setAriaHidden :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHidden MDN ARIAMixin.ariaHidden documentation>
+setAriaHidden :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaHidden self val = liftDOM (void ((js_setAriaHidden ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaHidden\"]; })"
+        js_getAriaHidden :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHidden MDN ARIAMixin.ariaHidden documentation>
+getAriaHidden :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaHidden self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaHidden ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHidden MDN ARIAMixin.ariaHidden documentation>
+getAriaHiddenUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaHiddenUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaHidden ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaHidden MDN ARIAMixin.ariaHidden documentation>
+getAriaHiddenUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaHiddenUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaHidden ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaInvalid\"] = $2; })"
+        js_setAriaInvalid :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaInvalid MDN ARIAMixin.ariaInvalid documentation>
+setAriaInvalid :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaInvalid self val = liftDOM (void ((js_setAriaInvalid ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaInvalid\"]; })"
+        js_getAriaInvalid :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaInvalid MDN ARIAMixin.ariaInvalid documentation>
+getAriaInvalid :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaInvalid self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaInvalid ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaInvalid MDN ARIAMixin.ariaInvalid documentation>
+getAriaInvalidUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaInvalidUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaInvalid ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaInvalid MDN ARIAMixin.ariaInvalid documentation>
+getAriaInvalidUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaInvalidUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaInvalid ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaKeyShortcuts\"] = $2; })"
+        js_setAriaKeyShortcuts :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaKeyShortcuts MDN ARIAMixin.ariaKeyShortcuts documentation>
+setAriaKeyShortcuts :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaKeyShortcuts self val = liftDOM (void ((js_setAriaKeyShortcuts ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaKeyShortcuts\"]; })"
+        js_getAriaKeyShortcuts :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaKeyShortcuts MDN ARIAMixin.ariaKeyShortcuts documentation>
+getAriaKeyShortcuts :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaKeyShortcuts self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaKeyShortcuts ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaKeyShortcuts MDN ARIAMixin.ariaKeyShortcuts documentation>
+getAriaKeyShortcutsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaKeyShortcutsUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaKeyShortcuts ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaKeyShortcuts MDN ARIAMixin.ariaKeyShortcuts documentation>
+getAriaKeyShortcutsUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaKeyShortcutsUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaKeyShortcuts ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaLabel\"] = $2; })"
+        js_setAriaLabel :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabel MDN ARIAMixin.ariaLabel documentation>
+setAriaLabel :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaLabel self val = liftDOM (void ((js_setAriaLabel ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaLabel\"]; })"
+        js_getAriaLabel :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabel MDN ARIAMixin.ariaLabel documentation>
+getAriaLabel :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaLabel self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaLabel ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabel MDN ARIAMixin.ariaLabel documentation>
+getAriaLabelUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaLabelUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaLabel ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabel MDN ARIAMixin.ariaLabel documentation>
+getAriaLabelUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaLabelUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaLabel ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaLabelledByElements\"] = $2; })"
+        js_setAriaLabelledByElements :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabelledByElements MDN ARIAMixin.ariaLabelledByElements documentation>
+setAriaLabelledByElements :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe [val] -> m ()
+setAriaLabelledByElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaLabelledByElements ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaLabelledByElements\"]; })"
+        js_getAriaLabelledByElements :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabelledByElements MDN ARIAMixin.ariaLabelledByElements documentation>
+getAriaLabelledByElements :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe [Element])
+getAriaLabelledByElements self = liftDOM (((js_getAriaLabelledByElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabelledByElements MDN ARIAMixin.ariaLabelledByElements documentation>
+getAriaLabelledByElementsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m [Element]
+getAriaLabelledByElementsUnsafe self = liftDOM ((((js_getAriaLabelledByElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLabelledByElements MDN ARIAMixin.ariaLabelledByElements documentation>
+getAriaLabelledByElementsUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m [Element]
+getAriaLabelledByElementsUnchecked self = liftDOM (((js_getAriaLabelledByElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaLevel\"] = $2; })"
+        js_setAriaLevel :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLevel MDN ARIAMixin.ariaLevel documentation>
+setAriaLevel :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaLevel self val = liftDOM (void ((js_setAriaLevel ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaLevel\"]; })"
+        js_getAriaLevel :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLevel MDN ARIAMixin.ariaLevel documentation>
+getAriaLevel :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaLevel self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaLevel ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLevel MDN ARIAMixin.ariaLevel documentation>
+getAriaLevelUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaLevelUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaLevel ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLevel MDN ARIAMixin.ariaLevel documentation>
+getAriaLevelUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaLevelUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaLevel ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaLive\"] = $2; })"
+        js_setAriaLive :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLive MDN ARIAMixin.ariaLive documentation>
+setAriaLive :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaLive self val = liftDOM (void ((js_setAriaLive ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaLive\"]; })"
+        js_getAriaLive :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLive MDN ARIAMixin.ariaLive documentation>
+getAriaLive :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaLive self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaLive ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLive MDN ARIAMixin.ariaLive documentation>
+getAriaLiveUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaLiveUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaLive ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaLive MDN ARIAMixin.ariaLive documentation>
+getAriaLiveUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaLiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaLive ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaModal\"] = $2; })"
+        js_setAriaModal :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaModal MDN ARIAMixin.ariaModal documentation>
+setAriaModal :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaModal self val = liftDOM (void ((js_setAriaModal ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaModal\"]; })"
+        js_getAriaModal :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaModal MDN ARIAMixin.ariaModal documentation>
+getAriaModal :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaModal self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaModal ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaModal MDN ARIAMixin.ariaModal documentation>
+getAriaModalUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaModalUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaModal ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaModal MDN ARIAMixin.ariaModal documentation>
+getAriaModalUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaModalUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaModal ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaMultiLine\"] = $2; })"
+        js_setAriaMultiLine :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiLine MDN ARIAMixin.ariaMultiLine documentation>
+setAriaMultiLine :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaMultiLine self val = liftDOM (void ((js_setAriaMultiLine ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaMultiLine\"]; })"
+        js_getAriaMultiLine :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiLine MDN ARIAMixin.ariaMultiLine documentation>
+getAriaMultiLine :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaMultiLine self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaMultiLine ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiLine MDN ARIAMixin.ariaMultiLine documentation>
+getAriaMultiLineUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaMultiLineUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaMultiLine ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiLine MDN ARIAMixin.ariaMultiLine documentation>
+getAriaMultiLineUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaMultiLineUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaMultiLine ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaMultiSelectable\"] = $2; })"
+        js_setAriaMultiSelectable :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiSelectable MDN ARIAMixin.ariaMultiSelectable documentation>
+setAriaMultiSelectable :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaMultiSelectable self val = liftDOM (void ((js_setAriaMultiSelectable ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaMultiSelectable\"]; })"
+        js_getAriaMultiSelectable :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiSelectable MDN ARIAMixin.ariaMultiSelectable documentation>
+getAriaMultiSelectable :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaMultiSelectable self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaMultiSelectable ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiSelectable MDN ARIAMixin.ariaMultiSelectable documentation>
+getAriaMultiSelectableUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaMultiSelectableUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaMultiSelectable ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaMultiSelectable MDN ARIAMixin.ariaMultiSelectable documentation>
+getAriaMultiSelectableUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaMultiSelectableUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaMultiSelectable ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaOrientation\"] = $2; })"
+        js_setAriaOrientation :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOrientation MDN ARIAMixin.ariaOrientation documentation>
+setAriaOrientation :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaOrientation self val = liftDOM (void ((js_setAriaOrientation ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaOrientation\"]; })"
+        js_getAriaOrientation :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOrientation MDN ARIAMixin.ariaOrientation documentation>
+getAriaOrientation :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaOrientation self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaOrientation ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOrientation MDN ARIAMixin.ariaOrientation documentation>
+getAriaOrientationUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaOrientationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaOrientation ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOrientation MDN ARIAMixin.ariaOrientation documentation>
+getAriaOrientationUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaOrientationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaOrientation ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaOwnsElements\"] = $2; })"
+        js_setAriaOwnsElements :: ARIAMixin -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOwnsElements MDN ARIAMixin.ariaOwnsElements documentation>
+setAriaOwnsElements :: (MonadDOM m, IsARIAMixin self, IsElement val) => self -> Maybe [val] -> m ()
+setAriaOwnsElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAriaOwnsElements ((Types.toARIAMixin self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaOwnsElements\"]; })"
+        js_getAriaOwnsElements :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOwnsElements MDN ARIAMixin.ariaOwnsElements documentation>
+getAriaOwnsElements :: (MonadDOM m, IsARIAMixin self) => self -> m (Maybe [Element])
+getAriaOwnsElements self = liftDOM (((js_getAriaOwnsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOwnsElements MDN ARIAMixin.ariaOwnsElements documentation>
+getAriaOwnsElementsUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack) => self -> m [Element]
+getAriaOwnsElementsUnsafe self = liftDOM ((((js_getAriaOwnsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaOwnsElements MDN ARIAMixin.ariaOwnsElements documentation>
+getAriaOwnsElementsUnchecked :: (MonadDOM m, IsARIAMixin self) => self -> m [Element]
+getAriaOwnsElementsUnchecked self = liftDOM (((js_getAriaOwnsElements ((Types.toARIAMixin self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaPlaceholder\"] = $2; })"
+        js_setAriaPlaceholder :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPlaceholder MDN ARIAMixin.ariaPlaceholder documentation>
+setAriaPlaceholder :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaPlaceholder self val = liftDOM (void ((js_setAriaPlaceholder ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaPlaceholder\"]; })"
+        js_getAriaPlaceholder :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPlaceholder MDN ARIAMixin.ariaPlaceholder documentation>
+getAriaPlaceholder :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaPlaceholder self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaPlaceholder ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPlaceholder MDN ARIAMixin.ariaPlaceholder documentation>
+getAriaPlaceholderUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaPlaceholderUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaPlaceholder ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPlaceholder MDN ARIAMixin.ariaPlaceholder documentation>
+getAriaPlaceholderUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaPlaceholderUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaPlaceholder ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaPosInSet\"] = $2; })"
+        js_setAriaPosInSet :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPosInSet MDN ARIAMixin.ariaPosInSet documentation>
+setAriaPosInSet :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaPosInSet self val = liftDOM (void ((js_setAriaPosInSet ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaPosInSet\"]; })"
+        js_getAriaPosInSet :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPosInSet MDN ARIAMixin.ariaPosInSet documentation>
+getAriaPosInSet :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaPosInSet self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaPosInSet ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPosInSet MDN ARIAMixin.ariaPosInSet documentation>
+getAriaPosInSetUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaPosInSetUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaPosInSet ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPosInSet MDN ARIAMixin.ariaPosInSet documentation>
+getAriaPosInSetUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaPosInSetUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaPosInSet ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaPressed\"] = $2; })"
+        js_setAriaPressed :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPressed MDN ARIAMixin.ariaPressed documentation>
+setAriaPressed :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaPressed self val = liftDOM (void ((js_setAriaPressed ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaPressed\"]; })"
+        js_getAriaPressed :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPressed MDN ARIAMixin.ariaPressed documentation>
+getAriaPressed :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaPressed self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaPressed ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPressed MDN ARIAMixin.ariaPressed documentation>
+getAriaPressedUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaPressedUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaPressed ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaPressed MDN ARIAMixin.ariaPressed documentation>
+getAriaPressedUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaPressedUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaPressed ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaReadOnly\"] = $2; })"
+        js_setAriaReadOnly :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaReadOnly MDN ARIAMixin.ariaReadOnly documentation>
+setAriaReadOnly :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaReadOnly self val = liftDOM (void ((js_setAriaReadOnly ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaReadOnly\"]; })"
+        js_getAriaReadOnly :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaReadOnly MDN ARIAMixin.ariaReadOnly documentation>
+getAriaReadOnly :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaReadOnly self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaReadOnly ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaReadOnly MDN ARIAMixin.ariaReadOnly documentation>
+getAriaReadOnlyUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaReadOnlyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaReadOnly ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaReadOnly MDN ARIAMixin.ariaReadOnly documentation>
+getAriaReadOnlyUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaReadOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaReadOnly ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaRelevant\"] = $2; })"
+        js_setAriaRelevant :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRelevant MDN ARIAMixin.ariaRelevant documentation>
+setAriaRelevant :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaRelevant self val = liftDOM (void ((js_setAriaRelevant ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaRelevant\"]; })"
+        js_getAriaRelevant :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRelevant MDN ARIAMixin.ariaRelevant documentation>
+getAriaRelevant :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaRelevant self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaRelevant ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRelevant MDN ARIAMixin.ariaRelevant documentation>
+getAriaRelevantUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaRelevantUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaRelevant ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRelevant MDN ARIAMixin.ariaRelevant documentation>
+getAriaRelevantUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaRelevantUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaRelevant ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaRequired\"] = $2; })"
+        js_setAriaRequired :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRequired MDN ARIAMixin.ariaRequired documentation>
+setAriaRequired :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaRequired self val = liftDOM (void ((js_setAriaRequired ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaRequired\"]; })"
+        js_getAriaRequired :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRequired MDN ARIAMixin.ariaRequired documentation>
+getAriaRequired :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaRequired self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaRequired ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRequired MDN ARIAMixin.ariaRequired documentation>
+getAriaRequiredUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaRequiredUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaRequired ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRequired MDN ARIAMixin.ariaRequired documentation>
+getAriaRequiredUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaRequiredUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaRequired ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaRoleDescription\"] = $2; })"
+        js_setAriaRoleDescription :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRoleDescription MDN ARIAMixin.ariaRoleDescription documentation>
+setAriaRoleDescription :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaRoleDescription self val = liftDOM (void ((js_setAriaRoleDescription ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaRoleDescription\"]; })"
+        js_getAriaRoleDescription :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRoleDescription MDN ARIAMixin.ariaRoleDescription documentation>
+getAriaRoleDescription :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaRoleDescription self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaRoleDescription ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRoleDescription MDN ARIAMixin.ariaRoleDescription documentation>
+getAriaRoleDescriptionUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaRoleDescriptionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaRoleDescription ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRoleDescription MDN ARIAMixin.ariaRoleDescription documentation>
+getAriaRoleDescriptionUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaRoleDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaRoleDescription ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaRowCount\"] = $2; })"
+        js_setAriaRowCount :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowCount MDN ARIAMixin.ariaRowCount documentation>
+setAriaRowCount :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaRowCount self val = liftDOM (void ((js_setAriaRowCount ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaRowCount\"]; })"
+        js_getAriaRowCount :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowCount MDN ARIAMixin.ariaRowCount documentation>
+getAriaRowCount :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaRowCount self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaRowCount ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowCount MDN ARIAMixin.ariaRowCount documentation>
+getAriaRowCountUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaRowCountUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaRowCount ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowCount MDN ARIAMixin.ariaRowCount documentation>
+getAriaRowCountUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaRowCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaRowCount ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaRowIndex\"] = $2; })"
+        js_setAriaRowIndex :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndex MDN ARIAMixin.ariaRowIndex documentation>
+setAriaRowIndex :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaRowIndex self val = liftDOM (void ((js_setAriaRowIndex ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaRowIndex\"]; })"
+        js_getAriaRowIndex :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndex MDN ARIAMixin.ariaRowIndex documentation>
+getAriaRowIndex :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaRowIndex self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaRowIndex ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndex MDN ARIAMixin.ariaRowIndex documentation>
+getAriaRowIndexUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaRowIndexUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaRowIndex ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndex MDN ARIAMixin.ariaRowIndex documentation>
+getAriaRowIndexUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaRowIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaRowIndex ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaRowIndexText\"] = $2; })"
+        js_setAriaRowIndexText :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndexText MDN ARIAMixin.ariaRowIndexText documentation>
+setAriaRowIndexText :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaRowIndexText self val = liftDOM (void ((js_setAriaRowIndexText ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaRowIndexText\"]; })"
+        js_getAriaRowIndexText :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndexText MDN ARIAMixin.ariaRowIndexText documentation>
+getAriaRowIndexText :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaRowIndexText self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaRowIndexText ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndexText MDN ARIAMixin.ariaRowIndexText documentation>
+getAriaRowIndexTextUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaRowIndexTextUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaRowIndexText ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndexText MDN ARIAMixin.ariaRowIndexText documentation>
+getAriaRowIndexTextUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaRowIndexTextUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaRowIndexText ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaRowSpan\"] = $2; })"
+        js_setAriaRowSpan :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowSpan MDN ARIAMixin.ariaRowSpan documentation>
+setAriaRowSpan :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaRowSpan self val = liftDOM (void ((js_setAriaRowSpan ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaRowSpan\"]; })"
+        js_getAriaRowSpan :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowSpan MDN ARIAMixin.ariaRowSpan documentation>
+getAriaRowSpan :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaRowSpan self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaRowSpan ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowSpan MDN ARIAMixin.ariaRowSpan documentation>
+getAriaRowSpanUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaRowSpanUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaRowSpan ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaRowSpan MDN ARIAMixin.ariaRowSpan documentation>
+getAriaRowSpanUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaRowSpanUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaRowSpan ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaSelected\"] = $2; })"
+        js_setAriaSelected :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSelected MDN ARIAMixin.ariaSelected documentation>
+setAriaSelected :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaSelected self val = liftDOM (void ((js_setAriaSelected ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaSelected\"]; })"
+        js_getAriaSelected :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSelected MDN ARIAMixin.ariaSelected documentation>
+getAriaSelected :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaSelected self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaSelected ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSelected MDN ARIAMixin.ariaSelected documentation>
+getAriaSelectedUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaSelectedUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaSelected ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSelected MDN ARIAMixin.ariaSelected documentation>
+getAriaSelectedUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaSelectedUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaSelected ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaSetSize\"] = $2; })"
+        js_setAriaSetSize :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSetSize MDN ARIAMixin.ariaSetSize documentation>
+setAriaSetSize :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaSetSize self val = liftDOM (void ((js_setAriaSetSize ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaSetSize\"]; })"
+        js_getAriaSetSize :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSetSize MDN ARIAMixin.ariaSetSize documentation>
+getAriaSetSize :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaSetSize self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaSetSize ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSetSize MDN ARIAMixin.ariaSetSize documentation>
+getAriaSetSizeUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaSetSizeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaSetSize ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSetSize MDN ARIAMixin.ariaSetSize documentation>
+getAriaSetSizeUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaSetSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaSetSize ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaSort\"] = $2; })"
+        js_setAriaSort :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSort MDN ARIAMixin.ariaSort documentation>
+setAriaSort :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaSort self val = liftDOM (void ((js_setAriaSort ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaSort\"]; })"
+        js_getAriaSort :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSort MDN ARIAMixin.ariaSort documentation>
+getAriaSort :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaSort self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaSort ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSort MDN ARIAMixin.ariaSort documentation>
+getAriaSortUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaSortUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaSort ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaSort MDN ARIAMixin.ariaSort documentation>
+getAriaSortUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaSortUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaSort ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaValueMax\"] = $2; })"
+        js_setAriaValueMax :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMax MDN ARIAMixin.ariaValueMax documentation>
+setAriaValueMax :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaValueMax self val = liftDOM (void ((js_setAriaValueMax ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaValueMax\"]; })"
+        js_getAriaValueMax :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMax MDN ARIAMixin.ariaValueMax documentation>
+getAriaValueMax :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaValueMax self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaValueMax ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMax MDN ARIAMixin.ariaValueMax documentation>
+getAriaValueMaxUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaValueMaxUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaValueMax ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMax MDN ARIAMixin.ariaValueMax documentation>
+getAriaValueMaxUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaValueMaxUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaValueMax ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaValueMin\"] = $2; })"
+        js_setAriaValueMin :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMin MDN ARIAMixin.ariaValueMin documentation>
+setAriaValueMin :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaValueMin self val = liftDOM (void ((js_setAriaValueMin ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaValueMin\"]; })"
+        js_getAriaValueMin :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMin MDN ARIAMixin.ariaValueMin documentation>
+getAriaValueMin :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaValueMin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaValueMin ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMin MDN ARIAMixin.ariaValueMin documentation>
+getAriaValueMinUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaValueMinUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaValueMin ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueMin MDN ARIAMixin.ariaValueMin documentation>
+getAriaValueMinUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaValueMinUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaValueMin ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaValueNow\"] = $2; })"
+        js_setAriaValueNow :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueNow MDN ARIAMixin.ariaValueNow documentation>
+setAriaValueNow :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaValueNow self val = liftDOM (void ((js_setAriaValueNow ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaValueNow\"]; })"
+        js_getAriaValueNow :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueNow MDN ARIAMixin.ariaValueNow documentation>
+getAriaValueNow :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaValueNow self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaValueNow ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueNow MDN ARIAMixin.ariaValueNow documentation>
+getAriaValueNowUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaValueNowUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaValueNow ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueNow MDN ARIAMixin.ariaValueNow documentation>
+getAriaValueNowUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaValueNowUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaValueNow ((Types.toARIAMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ariaValueText\"] = $2; })"
+        js_setAriaValueText :: ARIAMixin -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueText MDN ARIAMixin.ariaValueText documentation>
+setAriaValueText :: (MonadDOM m, IsARIAMixin self, ToJSString val) => self -> Maybe val -> m ()
+setAriaValueText self val = liftDOM (void ((js_setAriaValueText ((Types.toARIAMixin self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ariaValueText\"]; })"
+        js_getAriaValueText :: ARIAMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueText MDN ARIAMixin.ariaValueText documentation>
+getAriaValueText :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m (Maybe result)
+getAriaValueText self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAriaValueText ((Types.toARIAMixin self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueText MDN ARIAMixin.ariaValueText documentation>
+getAriaValueTextUnsafe :: (MonadDOM m, IsARIAMixin self, HasCallStack, FromJSString result) => self -> m result
+getAriaValueTextUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAriaValueText ((Types.toARIAMixin self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/ariaValueText MDN ARIAMixin.ariaValueText documentation>
+getAriaValueTextUnchecked :: (MonadDOM m, IsARIAMixin self, FromJSString result) => self -> m result
+getAriaValueTextUnchecked self = liftDOM ((pFromJSVal <$> (js_getAriaValueText ((Types.toARIAMixin self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ARIANotifyMixin.hs b/src/GHCJS/DOM/JSFFI/Generated/ARIANotifyMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ARIANotifyMixin.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from wai-aria-1.3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ARIANotifyMixin
+       (js_ariaNotify, ariaNotify, ARIANotifyMixin(..), gTypeARIANotifyMixin, IsARIANotifyMixin, toARIANotifyMixin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"ariaNotify\"]($2, $3); })"
+        js_ariaNotify :: ARIANotifyMixin -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/ariaNotify MDN ARIANotifyMixin.ariaNotify documentation>
+ariaNotify :: (MonadDOM m, IsARIANotifyMixin self, ToJSString announcement) => self -> announcement -> Maybe AriaNotificationOptions -> m ()
+ariaNotify self announcement options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_ariaNotify ((Types.toARIANotifyMixin self)) (toJSString announcement) a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AacEncoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/AacEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AacEncoderConfig.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-aac-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AacEncoderConfig
+       (js_newAacEncoderConfig, js_setFormat, js_getFormat, newAacEncoderConfig, setFormat, getFormat, getFormatUnsafe, getFormatUnchecked, AacEncoderConfig(..), gTypeAacEncoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAacEncoderConfig :: IO AacEncoderConfig
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dictdef-aacencoderconfig AacEncoderConfig specification>
+newAacEncoderConfig :: (MonadDOM m) => m AacEncoderConfig
+newAacEncoderConfig = liftDOM ((js_newAacEncoderConfig))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: AacEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-aacencoderconfig-format AacEncoderConfig.format specification>
+setFormat :: (MonadDOM m) => AacEncoderConfig -> AacBitstreamFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: AacEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-aacencoderconfig-format AacEncoderConfig.format specification>
+getFormat :: (MonadDOM m) => AacEncoderConfig -> m (Maybe AacBitstreamFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-aacencoderconfig-format AacEncoderConfig.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => AacEncoderConfig -> m AacBitstreamFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-aacencoderconfig-format AacEncoderConfig.format specification>
+getFormatUnchecked :: (MonadDOM m) => AacEncoderConfig -> m AacBitstreamFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AbortController.hs b/src/GHCJS/DOM/JSFFI/Generated/AbortController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AbortController.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AbortController
+       (js_newAbortController, js_abort, js_getSignal, newAbortController, abort, getSignal, AbortController(..), gTypeAbortController, IsAbortController, toAbortController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return new globalThis[\"AbortController\"](); })"
+        js_newAbortController :: IO AbortController
+-- | <https://developer.mozilla.org/docs/Web/API/AbortController/AbortController MDN AbortController. documentation>
+newAbortController :: (MonadDOM m) => m AbortController
+newAbortController = liftDOM ((js_newAbortController))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"abort\"]($2); })"
+        js_abort :: AbortController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AbortController/abort MDN AbortController.abort documentation>
+abort :: (MonadDOM m, IsAbortController self) => self -> JSVal -> m ()
+abort self reason = liftDOM (void ((js_abort ((Types.toAbortController self)) (reason))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: AbortController -> IO AbortSignal
+-- | <https://developer.mozilla.org/docs/Web/API/AbortController/signal MDN AbortController.signal documentation>
+getSignal :: (MonadDOM m, IsAbortController self) => self -> m AbortSignal
+getSignal self = liftDOM ((js_getSignal ((Types.toAbortController self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AbortSignal.hs b/src/GHCJS/DOM/JSFFI/Generated/AbortSignal.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AbortSignal.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AbortSignal
+       (js_throwIfAborted, js_abort, js_any, js_timeout, js_getAborted, js_getReason, throwIfAborted, abort, abort_, any, any_, timeout, timeout_, getAborted, getReason, abortEvent, AbortSignal(..), gTypeAbortSignal, IsAbortSignal, toAbortSignal)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"throwIfAborted\"](); })"
+        js_throwIfAborted :: AbortSignal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted MDN AbortSignal.throwIfAborted documentation>
+throwIfAborted :: (MonadDOM m, IsAbortSignal self) => self -> m ()
+throwIfAborted self = liftDOM (void ((js_throwIfAborted ((Types.toAbortSignal self)))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"AbortSignal\"][\"abort\"]($1); })"
+        js_abort :: JSVal -> IO AbortSignal
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static MDN AbortSignal.abort documentation>
+abort :: (MonadDOM m) => JSVal -> m AbortSignal
+abort reason = liftDOM ((js_abort (reason)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static MDN AbortSignal.abort documentation>
+abort_ :: (MonadDOM m) => JSVal -> m ()
+abort_ reason = liftDOM (void ((js_abort (reason))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"AbortSignal\"][\"any\"]($1); })"
+        js_any :: JSVal -> IO AbortSignal
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/any_static MDN AbortSignal.any documentation>
+any :: (MonadDOM m, IsAbortSignal signals) => [signals] -> m AbortSignal
+any signals = liftDOM (((toJSVal signals) >>= \a1' -> js_any a1'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/any_static MDN AbortSignal.any documentation>
+any_ :: (MonadDOM m, IsAbortSignal signals) => [signals] -> m ()
+any_ signals = liftDOM (void (((toJSVal signals) >>= \a1' -> js_any a1')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"AbortSignal\"][\"timeout\"]($1); })"
+        js_timeout :: JSVal -> IO AbortSignal
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static MDN AbortSignal.timeout documentation>
+timeout :: (MonadDOM m) => Word53 -> m AbortSignal
+timeout milliseconds = liftDOM (((toJSVal milliseconds) >>= \a1' -> js_timeout a1'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static MDN AbortSignal.timeout documentation>
+timeout_ :: (MonadDOM m) => Word53 -> m ()
+timeout_ milliseconds = liftDOM (void (((toJSVal milliseconds) >>= \a1' -> js_timeout a1')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aborted\"]; })"
+        js_getAborted :: AbortSignal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted MDN AbortSignal.aborted documentation>
+getAborted :: (MonadDOM m, IsAbortSignal self) => self -> m Bool
+getAborted self = liftDOM ((js_getAborted ((Types.toAbortSignal self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: AbortSignal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/reason MDN AbortSignal.reason documentation>
+getReason :: (MonadDOM m, IsAbortSignal self) => self -> m JSVal
+getReason self = liftDOM ((js_getReason ((Types.toAbortSignal self))))
+
+-- | <https://dom.spec.whatwg.org/#dom-abortsignal-onabort abort event>
+abortEvent :: (IsAbortSignal self, IsEventTarget self) => EventName self Event
+abortEvent = unsafeEventNameAsync (toJSString "abort")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AbstractRange.hs b/src/GHCJS/DOM/JSFFI/Generated/AbstractRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AbstractRange.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AbstractRange
+       (js_getStartContainer, js_getStartOffset, js_getEndContainer, js_getEndOffset, js_getCollapsed, getStartContainer, getStartOffset, getEndContainer, getEndOffset, getCollapsed, AbstractRange(..), gTypeAbstractRange, IsAbstractRange, toAbstractRange)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"startContainer\"]; })"
+        js_getStartContainer :: AbstractRange -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/startContainer MDN AbstractRange.startContainer documentation>
+getStartContainer :: (MonadDOM m, IsAbstractRange self) => self -> m Node
+getStartContainer self = liftDOM ((js_getStartContainer ((Types.toAbstractRange self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
+        js_getStartOffset :: AbstractRange -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/startOffset MDN AbstractRange.startOffset documentation>
+getStartOffset :: (MonadDOM m, IsAbstractRange self) => self -> m Word
+getStartOffset self = liftDOM ((js_getStartOffset ((Types.toAbstractRange self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endContainer\"]; })"
+        js_getEndContainer :: AbstractRange -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/endContainer MDN AbstractRange.endContainer documentation>
+getEndContainer :: (MonadDOM m, IsAbstractRange self) => self -> m Node
+getEndContainer self = liftDOM ((js_getEndContainer ((Types.toAbstractRange self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endOffset\"]; })"
+        js_getEndOffset :: AbstractRange -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/endOffset MDN AbstractRange.endOffset documentation>
+getEndOffset :: (MonadDOM m, IsAbstractRange self) => self -> m Word
+getEndOffset self = liftDOM ((js_getEndOffset ((Types.toAbstractRange self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"collapsed\"]; })"
+        js_getCollapsed :: AbstractRange -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/collapsed MDN AbstractRange.collapsed documentation>
+getCollapsed :: (MonadDOM m, IsAbstractRange self) => self -> m Bool
+getCollapsed self = liftDOM ((js_getCollapsed ((Types.toAbstractRange self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs b/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
@@ -1,33 +1,21 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AbstractWorker
-       (error, AbstractWorker(..), gTypeAbstractWorker, IsAbstractWorker,
-        toAbstractWorker)
+       (error, AbstractWorker(..), gTypeAbstractWorker, IsAbstractWorker, toAbstractWorker)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker.onerror Mozilla AbstractWorker.onerror documentation> 
-error ::
-      (IsAbstractWorker self, IsEventTarget self) =>
-        EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-abstractworker-onerror error event>
+error :: (IsAbstractWorker self, IsEventTarget self) => EventName self Event
 error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AddEventListenerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AddEventListenerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AddEventListenerOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AddEventListenerOptions
+       (js_newAddEventListenerOptions, js_setPassive, js_getPassive, js_setOnce, js_getOnce, js_setSignal, js_getSignal, newAddEventListenerOptions, setPassive, getPassive, getPassiveUnsafe, getPassiveUnchecked, setOnce, getOnce, getOnceUnsafe, getOnceUnchecked, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, AddEventListenerOptions(..), gTypeAddEventListenerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAddEventListenerOptions :: IO AddEventListenerOptions
+-- | <https://dom.spec.whatwg.org/#dictdef-addeventlisteneroptions AddEventListenerOptions specification>
+newAddEventListenerOptions :: (MonadDOM m) => m AddEventListenerOptions
+newAddEventListenerOptions = liftDOM ((js_newAddEventListenerOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"passive\"] = $2; })"
+        js_setPassive :: AddEventListenerOptions -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive AddEventListenerOptions.passive specification>
+setPassive :: (MonadDOM m) => AddEventListenerOptions -> Bool -> m ()
+setPassive self val = liftDOM (void ((js_setPassive (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"passive\"]; })"
+        js_getPassive :: AddEventListenerOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive AddEventListenerOptions.passive specification>
+getPassive :: (MonadDOM m) => AddEventListenerOptions -> m (Maybe Bool)
+getPassive self = liftDOM (((js_getPassive (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive AddEventListenerOptions.passive specification>
+getPassiveUnsafe :: (MonadDOM m, HasCallStack) => AddEventListenerOptions -> m Bool
+getPassiveUnsafe self = liftDOM ((((js_getPassive (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive AddEventListenerOptions.passive specification>
+getPassiveUnchecked :: (MonadDOM m) => AddEventListenerOptions -> m Bool
+getPassiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getPassive (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"once\"] = $2; })"
+        js_setOnce :: AddEventListenerOptions -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once AddEventListenerOptions.once specification>
+setOnce :: (MonadDOM m) => AddEventListenerOptions -> Bool -> m ()
+setOnce self val = liftDOM (void ((js_setOnce (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"once\"]; })"
+        js_getOnce :: AddEventListenerOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once AddEventListenerOptions.once specification>
+getOnce :: (MonadDOM m) => AddEventListenerOptions -> m (Maybe Bool)
+getOnce self = liftDOM (((js_getOnce (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once AddEventListenerOptions.once specification>
+getOnceUnsafe :: (MonadDOM m, HasCallStack) => AddEventListenerOptions -> m Bool
+getOnceUnsafe self = liftDOM ((((js_getOnce (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once AddEventListenerOptions.once specification>
+getOnceUnchecked :: (MonadDOM m) => AddEventListenerOptions -> m Bool
+getOnceUnchecked self = liftDOM ((pFromJSVal <$> (js_getOnce (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: AddEventListenerOptions -> AbortSignal -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-signal AddEventListenerOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => AddEventListenerOptions -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: AddEventListenerOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-signal AddEventListenerOptions.signal specification>
+getSignal :: (MonadDOM m) => AddEventListenerOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-signal AddEventListenerOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => AddEventListenerOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-signal AddEventListenerOptions.signal specification>
+getSignalUnchecked :: (MonadDOM m) => AddEventListenerOptions -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AddressErrors.hs b/src/GHCJS/DOM/JSFFI/Generated/AddressErrors.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AddressErrors.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AddressErrors
+       (js_newAddressErrors, js_setAddressLine, js_getAddressLine, js_setCity, js_getCity, js_setCountry, js_getCountry, js_setDependentLocality, js_getDependentLocality, js_setOrganization, js_getOrganization, js_setPhone, js_getPhone, js_setPostalCode, js_getPostalCode, js_setRecipient, js_getRecipient, js_setRegion, js_getRegion, js_setSortingCode, js_getSortingCode, newAddressErrors, setAddressLine, getAddressLine, getAddressLineUnsafe, getAddressLineUnchecked, setCity, getCity, getCityUnsafe, getCityUnchecked, setCountry, getCountry, getCountryUnsafe, getCountryUnchecked, setDependentLocality, getDependentLocality, getDependentLocalityUnsafe, getDependentLocalityUnchecked, setOrganization, getOrganization, getOrganizationUnsafe, getOrganizationUnchecked, setPhone, getPhone, getPhoneUnsafe, getPhoneUnchecked, setPostalCode, getPostalCode, getPostalCodeUnsafe, getPostalCodeUnchecked, setRecipient, getRecipient, getRecipientUnsafe, getRecipientUnchecked, setRegion, getRegion, getRegionUnsafe, getRegionUnchecked, setSortingCode, getSortingCode, getSortingCodeUnsafe, getSortingCodeUnchecked, AddressErrors(..), gTypeAddressErrors)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAddressErrors :: IO AddressErrors
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors AddressErrors specification>
+newAddressErrors :: (MonadDOM m) => m AddressErrors
+newAddressErrors = liftDOM ((js_newAddressErrors))
+
+foreign import javascript safe "(($1, $2) => { $1[\"addressLine\"] = $2; })"
+        js_setAddressLine :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-addressline AddressErrors.addressLine specification>
+setAddressLine :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setAddressLine self val = liftDOM (void ((js_setAddressLine (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"addressLine\"]; })"
+        js_getAddressLine :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-addressline AddressErrors.addressLine specification>
+getAddressLine :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getAddressLine self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAddressLine (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-addressline AddressErrors.addressLine specification>
+getAddressLineUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getAddressLineUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAddressLine (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-addressline AddressErrors.addressLine specification>
+getAddressLineUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getAddressLineUnchecked self = liftDOM ((pFromJSVal <$> (js_getAddressLine (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"city\"] = $2; })"
+        js_setCity :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-city AddressErrors.city specification>
+setCity :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setCity self val = liftDOM (void ((js_setCity (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"city\"]; })"
+        js_getCity :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-city AddressErrors.city specification>
+getCity :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getCity self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCity (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-city AddressErrors.city specification>
+getCityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getCityUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCity (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-city AddressErrors.city specification>
+getCityUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getCityUnchecked self = liftDOM ((pFromJSVal <$> (js_getCity (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"country\"] = $2; })"
+        js_setCountry :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-country AddressErrors.country specification>
+setCountry :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setCountry self val = liftDOM (void ((js_setCountry (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"country\"]; })"
+        js_getCountry :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-country AddressErrors.country specification>
+getCountry :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getCountry self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCountry (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-country AddressErrors.country specification>
+getCountryUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getCountryUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCountry (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-country AddressErrors.country specification>
+getCountryUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getCountryUnchecked self = liftDOM ((pFromJSVal <$> (js_getCountry (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dependentLocality\"] = $2; })"
+        js_setDependentLocality :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-dependentlocality AddressErrors.dependentLocality specification>
+setDependentLocality :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setDependentLocality self val = liftDOM (void ((js_setDependentLocality (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dependentLocality\"]; })"
+        js_getDependentLocality :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-dependentlocality AddressErrors.dependentLocality specification>
+getDependentLocality :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getDependentLocality self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDependentLocality (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-dependentlocality AddressErrors.dependentLocality specification>
+getDependentLocalityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getDependentLocalityUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDependentLocality (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-dependentlocality AddressErrors.dependentLocality specification>
+getDependentLocalityUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getDependentLocalityUnchecked self = liftDOM ((pFromJSVal <$> (js_getDependentLocality (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"organization\"] = $2; })"
+        js_setOrganization :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-organization AddressErrors.organization specification>
+setOrganization :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setOrganization self val = liftDOM (void ((js_setOrganization (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"organization\"]; })"
+        js_getOrganization :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-organization AddressErrors.organization specification>
+getOrganization :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getOrganization self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOrganization (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-organization AddressErrors.organization specification>
+getOrganizationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getOrganizationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOrganization (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-organization AddressErrors.organization specification>
+getOrganizationUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getOrganizationUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrganization (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"phone\"] = $2; })"
+        js_setPhone :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-phone AddressErrors.phone specification>
+setPhone :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setPhone self val = liftDOM (void ((js_setPhone (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"phone\"]; })"
+        js_getPhone :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-phone AddressErrors.phone specification>
+getPhone :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getPhone self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPhone (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-phone AddressErrors.phone specification>
+getPhoneUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getPhoneUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPhone (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-phone AddressErrors.phone specification>
+getPhoneUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getPhoneUnchecked self = liftDOM ((pFromJSVal <$> (js_getPhone (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"postalCode\"] = $2; })"
+        js_setPostalCode :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-postalcode AddressErrors.postalCode specification>
+setPostalCode :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setPostalCode self val = liftDOM (void ((js_setPostalCode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"postalCode\"]; })"
+        js_getPostalCode :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-postalcode AddressErrors.postalCode specification>
+getPostalCode :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getPostalCode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPostalCode (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-postalcode AddressErrors.postalCode specification>
+getPostalCodeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getPostalCodeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPostalCode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-postalcode AddressErrors.postalCode specification>
+getPostalCodeUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getPostalCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getPostalCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"recipient\"] = $2; })"
+        js_setRecipient :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-recipient AddressErrors.recipient specification>
+setRecipient :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setRecipient self val = liftDOM (void ((js_setRecipient (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"recipient\"]; })"
+        js_getRecipient :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-recipient AddressErrors.recipient specification>
+getRecipient :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getRecipient self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRecipient (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-recipient AddressErrors.recipient specification>
+getRecipientUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getRecipientUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRecipient (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-recipient AddressErrors.recipient specification>
+getRecipientUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getRecipientUnchecked self = liftDOM ((pFromJSVal <$> (js_getRecipient (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"region\"] = $2; })"
+        js_setRegion :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-region AddressErrors.region specification>
+setRegion :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setRegion self val = liftDOM (void ((js_setRegion (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"region\"]; })"
+        js_getRegion :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-region AddressErrors.region specification>
+getRegion :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getRegion self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRegion (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-region AddressErrors.region specification>
+getRegionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getRegionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRegion (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-region AddressErrors.region specification>
+getRegionUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getRegionUnchecked self = liftDOM ((pFromJSVal <$> (js_getRegion (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sortingCode\"] = $2; })"
+        js_setSortingCode :: AddressErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-sortingcode AddressErrors.sortingCode specification>
+setSortingCode :: (MonadDOM m, ToJSString val) => AddressErrors -> val -> m ()
+setSortingCode self val = liftDOM (void ((js_setSortingCode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sortingCode\"]; })"
+        js_getSortingCode :: AddressErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-sortingcode AddressErrors.sortingCode specification>
+getSortingCode :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getSortingCode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSortingCode (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-sortingcode AddressErrors.sortingCode specification>
+getSortingCodeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getSortingCodeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSortingCode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-sortingcode AddressErrors.sortingCode specification>
+getSortingCodeUnchecked :: (MonadDOM m, FromJSString result) => AddressErrors -> m result
+getSortingCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSortingCode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AllAcceptedCredentialsOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AllAcceptedCredentialsOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AllAcceptedCredentialsOptions.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AllAcceptedCredentialsOptions
+       (js_newAllAcceptedCredentialsOptions, js_setRpId, js_getRpId, js_setUserId, js_getUserId, js_setAllAcceptedCredentialIds, js_getAllAcceptedCredentialIds, newAllAcceptedCredentialsOptions, setRpId, getRpId, setUserId, getUserId, setAllAcceptedCredentialIds, getAllAcceptedCredentialIds, AllAcceptedCredentialsOptions(..), gTypeAllAcceptedCredentialsOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"rpId\": $1, \"userId\": $2, \"allAcceptedCredentialIds\": $3}); })"
+        js_newAllAcceptedCredentialsOptions :: JSString -> JSString -> JSVal -> IO AllAcceptedCredentialsOptions
+-- | <https://w3c.github.io/webauthn/#dictdef-allacceptedcredentialsoptions AllAcceptedCredentialsOptions specification>
+newAllAcceptedCredentialsOptions :: (MonadDOM m, ToJSString rpId, ToJSString userId, ToJSString allAcceptedCredentialIds) => rpId -> userId -> [allAcceptedCredentialIds] -> m AllAcceptedCredentialsOptions
+newAllAcceptedCredentialsOptions rpId userId allAcceptedCredentialIds = liftDOM (((toJSVal allAcceptedCredentialIds) >>= \a3' -> js_newAllAcceptedCredentialsOptions (toJSString rpId) (toJSString userId) a3'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rpId\"] = $2; })"
+        js_setRpId :: AllAcceptedCredentialsOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-rpid AllAcceptedCredentialsOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => AllAcceptedCredentialsOptions -> val -> m ()
+setRpId self val = liftDOM (void ((js_setRpId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rpId\"]; })"
+        js_getRpId :: AllAcceptedCredentialsOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-rpid AllAcceptedCredentialsOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => AllAcceptedCredentialsOptions -> m result
+getRpId self = liftDOM ((fromJSString <$> (js_getRpId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"userId\"] = $2; })"
+        js_setUserId :: AllAcceptedCredentialsOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-userid AllAcceptedCredentialsOptions.userId specification>
+setUserId :: (MonadDOM m, ToJSString val) => AllAcceptedCredentialsOptions -> val -> m ()
+setUserId self val = liftDOM (void ((js_setUserId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userId\"]; })"
+        js_getUserId :: AllAcceptedCredentialsOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-userid AllAcceptedCredentialsOptions.userId specification>
+getUserId :: (MonadDOM m, FromJSString result) => AllAcceptedCredentialsOptions -> m result
+getUserId self = liftDOM ((fromJSString <$> (js_getUserId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"allAcceptedCredentialIds\"] = $2; })"
+        js_setAllAcceptedCredentialIds :: AllAcceptedCredentialsOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-allacceptedcredentialids AllAcceptedCredentialsOptions.allAcceptedCredentialIds specification>
+setAllAcceptedCredentialIds :: (MonadDOM m, ToJSString val) => AllAcceptedCredentialsOptions -> [val] -> m ()
+setAllAcceptedCredentialIds self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAllAcceptedCredentialIds (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"allAcceptedCredentialIds\"]; })"
+        js_getAllAcceptedCredentialIds :: AllAcceptedCredentialsOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-allacceptedcredentialids AllAcceptedCredentialsOptions.allAcceptedCredentialIds specification>
+getAllAcceptedCredentialIds :: (MonadDOM m, FromJSString result) => AllAcceptedCredentialsOptions -> m [result]
+getAllAcceptedCredentialIds self = liftDOM (((js_getAllAcceptedCredentialIds (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
@@ -1,141 +1,101 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AnalyserNode
-       (js_getFloatFrequencyData, getFloatFrequencyData,
-        js_getByteFrequencyData, getByteFrequencyData,
-        js_getByteTimeDomainData, getByteTimeDomainData, js_setFftSize,
-        setFftSize, js_getFftSize, getFftSize, js_getFrequencyBinCount,
-        getFrequencyBinCount, js_setMinDecibels, setMinDecibels,
-        js_getMinDecibels, getMinDecibels, js_setMaxDecibels,
-        setMaxDecibels, js_getMaxDecibels, getMaxDecibels,
-        js_setSmoothingTimeConstant, setSmoothingTimeConstant,
-        js_getSmoothingTimeConstant, getSmoothingTimeConstant,
-        AnalyserNode(..), gTypeAnalyserNode)
+       (js_newAnalyserNode, js_getByteFrequencyData, js_getByteTimeDomainData, js_getFloatFrequencyData, js_getFloatTimeDomainData, js_setFftSize, js_getFftSize, js_getFrequencyBinCount, js_setMinDecibels, js_getMinDecibels, js_setMaxDecibels, js_getMaxDecibels, js_setSmoothingTimeConstant, js_getSmoothingTimeConstant, newAnalyserNode, getByteFrequencyData, getByteTimeDomainData, getFloatFrequencyData, getFloatTimeDomainData, setFftSize, getFftSize, getFrequencyBinCount, setMinDecibels, getMinDecibels, setMaxDecibels, getMaxDecibels, setSmoothingTimeConstant, getSmoothingTimeConstant, AnalyserNode(..), gTypeAnalyserNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"getFloatFrequencyData\"]($2); })" js_getFloatFrequencyData ::
-        AnalyserNode -> Optional Float32Array -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getFloatFrequencyData Mozilla AnalyserNode.getFloatFrequencyData documentation> 
-getFloatFrequencyData ::
-                      (MonadIO m, IsFloat32Array array) =>
-                        AnalyserNode -> Maybe array -> m ()
-getFloatFrequencyData self array
-  = liftIO
-      (js_getFloatFrequencyData self
-         (maybeToOptional (fmap toFloat32Array array)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getByteFrequencyData\"]($2); })"
-        js_getByteFrequencyData ::
-        AnalyserNode -> Optional Uint8Array -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"AnalyserNode\"]($1, $2); })"
+        js_newAnalyserNode :: BaseAudioContext -> JSVal -> IO AnalyserNode
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/AnalyserNode MDN AnalyserNode. documentation>
+newAnalyserNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe AnalyserOptions -> m AnalyserNode
+newAnalyserNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newAnalyserNode (Types.toBaseAudioContext context) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteFrequencyData Mozilla AnalyserNode.getByteFrequencyData documentation> 
-getByteFrequencyData ::
-                     (MonadIO m, IsUint8Array array) =>
-                       AnalyserNode -> Maybe array -> m ()
-getByteFrequencyData self array
-  = liftIO
-      (js_getByteFrequencyData self
-         (maybeToOptional (fmap toUint8Array array)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"getByteTimeDomainData\"]($2); })" js_getByteTimeDomainData ::
-        AnalyserNode -> Optional Uint8Array -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"getByteFrequencyData\"]($2); })"
+        js_getByteFrequencyData :: AnalyserNode -> Uint8Array -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/getByteFrequencyData MDN AnalyserNode.getByteFrequencyData documentation>
+getByteFrequencyData :: (MonadDOM m, IsUint8Array array) => AnalyserNode -> array -> m ()
+getByteFrequencyData self array = liftDOM (void ((js_getByteFrequencyData (self) (Types.toUint8Array array))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteTimeDomainData Mozilla AnalyserNode.getByteTimeDomainData documentation> 
-getByteTimeDomainData ::
-                      (MonadIO m, IsUint8Array array) =>
-                        AnalyserNode -> Maybe array -> m ()
-getByteTimeDomainData self array
-  = liftIO
-      (js_getByteTimeDomainData self
-         (maybeToOptional (fmap toUint8Array array)))
- 
+foreign import javascript safe "(($1, $2) => { return $1[\"getByteTimeDomainData\"]($2); })"
+        js_getByteTimeDomainData :: AnalyserNode -> Uint8Array -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/getByteTimeDomainData MDN AnalyserNode.getByteTimeDomainData documentation>
+getByteTimeDomainData :: (MonadDOM m, IsUint8Array array) => AnalyserNode -> array -> m ()
+getByteTimeDomainData self array = liftDOM (void ((js_getByteTimeDomainData (self) (Types.toUint8Array array))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getFloatFrequencyData\"]($2); })"
+        js_getFloatFrequencyData :: AnalyserNode -> Float32Array -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/getFloatFrequencyData MDN AnalyserNode.getFloatFrequencyData documentation>
+getFloatFrequencyData :: (MonadDOM m, IsFloat32Array array) => AnalyserNode -> array -> m ()
+getFloatFrequencyData self array = liftDOM (void ((js_getFloatFrequencyData (self) (Types.toFloat32Array array))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getFloatTimeDomainData\"]($2); })"
+        js_getFloatTimeDomainData :: AnalyserNode -> Float32Array -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/getFloatTimeDomainData MDN AnalyserNode.getFloatTimeDomainData documentation>
+getFloatTimeDomainData :: (MonadDOM m, IsFloat32Array array) => AnalyserNode -> array -> m ()
+getFloatTimeDomainData self array = liftDOM (void ((js_getFloatTimeDomainData (self) (Types.toFloat32Array array))))
+
 foreign import javascript safe "(($1, $2) => { $1[\"fftSize\"] = $2; })"
         js_setFftSize :: AnalyserNode -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/fftSize MDN AnalyserNode.fftSize documentation>
+setFftSize :: (MonadDOM m) => AnalyserNode -> Word -> m ()
+setFftSize self val = liftDOM (void ((js_setFftSize (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
-setFftSize :: (MonadIO m) => AnalyserNode -> Word -> m ()
-setFftSize self val = liftIO (js_setFftSize self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fftSize\"]; })" js_getFftSize ::
-        AnalyserNode -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"fftSize\"]; })"
+        js_getFftSize :: AnalyserNode -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/fftSize MDN AnalyserNode.fftSize documentation>
+getFftSize :: (MonadDOM m) => AnalyserNode -> m Word
+getFftSize self = liftDOM ((js_getFftSize (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
-getFftSize :: (MonadIO m) => AnalyserNode -> m Word
-getFftSize self = liftIO (js_getFftSize self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"frequencyBinCount\"]; })"
         js_getFrequencyBinCount :: AnalyserNode -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/frequencyBinCount MDN AnalyserNode.frequencyBinCount documentation>
+getFrequencyBinCount :: (MonadDOM m) => AnalyserNode -> m Word
+getFrequencyBinCount self = liftDOM ((js_getFrequencyBinCount (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.frequencyBinCount Mozilla AnalyserNode.frequencyBinCount documentation> 
-getFrequencyBinCount :: (MonadIO m) => AnalyserNode -> m Word
-getFrequencyBinCount self = liftIO (js_getFrequencyBinCount self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"minDecibels\"] = $2; })"
         js_setMinDecibels :: AnalyserNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/minDecibels MDN AnalyserNode.minDecibels documentation>
+setMinDecibels :: (MonadDOM m) => AnalyserNode -> Double -> m ()
+setMinDecibels self val = liftDOM (void ((js_setMinDecibels (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
-setMinDecibels :: (MonadIO m) => AnalyserNode -> Double -> m ()
-setMinDecibels self val = liftIO (js_setMinDecibels self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"minDecibels\"]; })"
         js_getMinDecibels :: AnalyserNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/minDecibels MDN AnalyserNode.minDecibels documentation>
+getMinDecibels :: (MonadDOM m) => AnalyserNode -> m Double
+getMinDecibels self = liftDOM ((js_getMinDecibels (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
-getMinDecibels :: (MonadIO m) => AnalyserNode -> m Double
-getMinDecibels self = liftIO (js_getMinDecibels self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"maxDecibels\"] = $2; })"
         js_setMaxDecibels :: AnalyserNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/maxDecibels MDN AnalyserNode.maxDecibels documentation>
+setMaxDecibels :: (MonadDOM m) => AnalyserNode -> Double -> m ()
+setMaxDecibels self val = liftDOM (void ((js_setMaxDecibels (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
-setMaxDecibels :: (MonadIO m) => AnalyserNode -> Double -> m ()
-setMaxDecibels self val = liftIO (js_setMaxDecibels self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"maxDecibels\"]; })"
         js_getMaxDecibels :: AnalyserNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/maxDecibels MDN AnalyserNode.maxDecibels documentation>
+getMaxDecibels :: (MonadDOM m) => AnalyserNode -> m Double
+getMaxDecibels self = liftDOM ((js_getMaxDecibels (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
-getMaxDecibels :: (MonadIO m) => AnalyserNode -> m Double
-getMaxDecibels self = liftIO (js_getMaxDecibels self)
- 
-foreign import javascript safe
-        "(($1, $2) => { $1[\"smoothingTimeConstant\"] = $2; })" js_setSmoothingTimeConstant
-        :: AnalyserNode -> Double -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"smoothingTimeConstant\"] = $2; })"
+        js_setSmoothingTimeConstant :: AnalyserNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/smoothingTimeConstant MDN AnalyserNode.smoothingTimeConstant documentation>
+setSmoothingTimeConstant :: (MonadDOM m) => AnalyserNode -> Double -> m ()
+setSmoothingTimeConstant self val = liftDOM (void ((js_setSmoothingTimeConstant (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
-setSmoothingTimeConstant ::
-                         (MonadIO m) => AnalyserNode -> Double -> m ()
-setSmoothingTimeConstant self val
-  = liftIO (js_setSmoothingTimeConstant self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"smoothingTimeConstant\"]; })"
         js_getSmoothingTimeConstant :: AnalyserNode -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
-getSmoothingTimeConstant :: (MonadIO m) => AnalyserNode -> m Double
-getSmoothingTimeConstant self
-  = liftIO (js_getSmoothingTimeConstant self)
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/smoothingTimeConstant MDN AnalyserNode.smoothingTimeConstant documentation>
+getSmoothingTimeConstant :: (MonadDOM m) => AnalyserNode -> m Double
+getSmoothingTimeConstant self = liftDOM ((js_getSmoothingTimeConstant (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnalyserOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AnalyserOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnalyserOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnalyserOptions
+       (js_newAnalyserOptions, js_setFftSize, js_getFftSize, js_setMaxDecibels, js_getMaxDecibels, js_setMinDecibels, js_getMinDecibels, js_setSmoothingTimeConstant, js_getSmoothingTimeConstant, newAnalyserOptions, setFftSize, getFftSize, getFftSizeUnsafe, getFftSizeUnchecked, setMaxDecibels, getMaxDecibels, getMaxDecibelsUnsafe, getMaxDecibelsUnchecked, setMinDecibels, getMinDecibels, getMinDecibelsUnsafe, getMinDecibelsUnchecked, setSmoothingTimeConstant, getSmoothingTimeConstant, getSmoothingTimeConstantUnsafe, getSmoothingTimeConstantUnchecked, AnalyserOptions(..), gTypeAnalyserOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAnalyserOptions :: IO AnalyserOptions
+-- | <https://webaudio.github.io/web-audio-api/#AnalyserOptions AnalyserOptions specification>
+newAnalyserOptions :: (MonadDOM m) => m AnalyserOptions
+newAnalyserOptions = liftDOM ((js_newAnalyserOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fftSize\"] = $2; })"
+        js_setFftSize :: AnalyserOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-fftsize AnalyserOptions.fftSize specification>
+setFftSize :: (MonadDOM m) => AnalyserOptions -> Word -> m ()
+setFftSize self val = liftDOM (void ((js_setFftSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fftSize\"]; })"
+        js_getFftSize :: AnalyserOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-fftsize AnalyserOptions.fftSize specification>
+getFftSize :: (MonadDOM m) => AnalyserOptions -> m (Maybe Word)
+getFftSize self = liftDOM (((js_getFftSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-fftsize AnalyserOptions.fftSize specification>
+getFftSizeUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Word
+getFftSizeUnsafe self = liftDOM ((((js_getFftSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-fftsize AnalyserOptions.fftSize specification>
+getFftSizeUnchecked :: (MonadDOM m) => AnalyserOptions -> m Word
+getFftSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFftSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxDecibels\"] = $2; })"
+        js_setMaxDecibels :: AnalyserOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-maxdecibels AnalyserOptions.maxDecibels specification>
+setMaxDecibels :: (MonadDOM m) => AnalyserOptions -> Double -> m ()
+setMaxDecibels self val = liftDOM (void ((js_setMaxDecibels (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxDecibels\"]; })"
+        js_getMaxDecibels :: AnalyserOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-maxdecibels AnalyserOptions.maxDecibels specification>
+getMaxDecibels :: (MonadDOM m) => AnalyserOptions -> m (Maybe Double)
+getMaxDecibels self = liftDOM (((js_getMaxDecibels (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-maxdecibels AnalyserOptions.maxDecibels specification>
+getMaxDecibelsUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Double
+getMaxDecibelsUnsafe self = liftDOM ((((js_getMaxDecibels (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-maxdecibels AnalyserOptions.maxDecibels specification>
+getMaxDecibelsUnchecked :: (MonadDOM m) => AnalyserOptions -> m Double
+getMaxDecibelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxDecibels (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minDecibels\"] = $2; })"
+        js_setMinDecibels :: AnalyserOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-mindecibels AnalyserOptions.minDecibels specification>
+setMinDecibels :: (MonadDOM m) => AnalyserOptions -> Double -> m ()
+setMinDecibels self val = liftDOM (void ((js_setMinDecibels (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minDecibels\"]; })"
+        js_getMinDecibels :: AnalyserOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-mindecibels AnalyserOptions.minDecibels specification>
+getMinDecibels :: (MonadDOM m) => AnalyserOptions -> m (Maybe Double)
+getMinDecibels self = liftDOM (((js_getMinDecibels (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-mindecibels AnalyserOptions.minDecibels specification>
+getMinDecibelsUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Double
+getMinDecibelsUnsafe self = liftDOM ((((js_getMinDecibels (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-mindecibels AnalyserOptions.minDecibels specification>
+getMinDecibelsUnchecked :: (MonadDOM m) => AnalyserOptions -> m Double
+getMinDecibelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getMinDecibels (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"smoothingTimeConstant\"] = $2; })"
+        js_setSmoothingTimeConstant :: AnalyserOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-smoothingtimeconstant AnalyserOptions.smoothingTimeConstant specification>
+setSmoothingTimeConstant :: (MonadDOM m) => AnalyserOptions -> Double -> m ()
+setSmoothingTimeConstant self val = liftDOM (void ((js_setSmoothingTimeConstant (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"smoothingTimeConstant\"]; })"
+        js_getSmoothingTimeConstant :: AnalyserOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-smoothingtimeconstant AnalyserOptions.smoothingTimeConstant specification>
+getSmoothingTimeConstant :: (MonadDOM m) => AnalyserOptions -> m (Maybe Double)
+getSmoothingTimeConstant self = liftDOM (((js_getSmoothingTimeConstant (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-smoothingtimeconstant AnalyserOptions.smoothingTimeConstant specification>
+getSmoothingTimeConstantUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Double
+getSmoothingTimeConstantUnsafe self = liftDOM ((((js_getSmoothingTimeConstant (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-smoothingtimeconstant AnalyserOptions.smoothingTimeConstant specification>
+getSmoothingTimeConstantUnchecked :: (MonadDOM m) => AnalyserOptions -> m Double
+getSmoothingTimeConstantUnchecked self = liftDOM ((pFromJSVal <$> (js_getSmoothingTimeConstant (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs b/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
@@ -1,42 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Animatable
-       (js_getAnimations, getAnimations, getAnimations_, Animatable(..),
-        gTypeAnimatable, IsAnimatable, toAnimatable)
+       (js_animate, js_getAnimations, js_getAnimations', animate, animate_, getAnimations, getAnimations_, getAnimations', getAnimations'_, Animatable(..), gTypeAnimatable, IsAnimatable, toAnimatable)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getAnimations\"](); })"
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"animate\"]($2, $3); })"
+        js_animate :: Animatable -> JSVal -> JSVal -> IO Animation
+-- | <https://developer.mozilla.org/docs/Web/API/Element/animate MDN Animatable.animate documentation>
+animate :: (MonadDOM m, IsAnimatable self, IsDoubleOrKeyframeAnimationOptions options) => self -> Maybe GObject -> Maybe options -> m Animation
+animate self keyframes options = liftDOM (((toJSVal keyframes) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_animate ((Types.toAnimatable self)) a2' a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/animate MDN Animatable.animate documentation>
+animate_ :: (MonadDOM m, IsAnimatable self, IsDoubleOrKeyframeAnimationOptions options) => self -> Maybe GObject -> Maybe options -> m ()
+animate_ self keyframes options = liftDOM (void (((toJSVal keyframes) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_animate ((Types.toAnimatable self)) a2' a3')))
+
+foreign import javascript safe "(($1) => { return $1[\"getAnimations\"](); })"
         js_getAnimations :: Animatable -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAnimations MDN Animatable.getAnimations documentation>
+getAnimations :: (MonadDOM m, IsAnimatable self) => self -> m [Animation]
+getAnimations self = liftDOM (((js_getAnimations ((Types.toAnimatable self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animatable.getAnimations Mozilla Animatable.getAnimations documentation> 
-getAnimations ::
-              (MonadIO m, IsAnimatable self) => self -> m [Animation]
-getAnimations self
-  = liftIO
-      ((js_getAnimations (toAnimatable self)) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAnimations MDN Animatable.getAnimations documentation>
+getAnimations_ :: (MonadDOM m, IsAnimatable self) => self -> m ()
+getAnimations_ self = liftDOM (void ((js_getAnimations ((Types.toAnimatable self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animatable.getAnimations Mozilla Animatable.getAnimations documentation> 
-getAnimations_ :: (MonadIO m, IsAnimatable self) => self -> m ()
-getAnimations_ self
-  = liftIO (void (js_getAnimations (toAnimatable self)))
+foreign import javascript safe "(($1, $2) => { return $1[\"getAnimations\"]($2); })"
+        js_getAnimations' :: Animatable -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAnimations MDN Animatable.getAnimations documentation>
+getAnimations' :: (MonadDOM m, IsAnimatable self) => self -> Maybe GetAnimationsOptions -> m [Animation]
+getAnimations' self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAnimations' ((Types.toAnimatable self)) a2') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAnimations MDN Animatable.getAnimations documentation>
+getAnimations'_ :: (MonadDOM m, IsAnimatable self) => self -> Maybe GetAnimationsOptions -> m ()
+getAnimations'_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAnimations' ((Types.toAnimatable self)) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Animation.hs b/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
@@ -1,87 +1,231 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Animation
-       (js_newAnimation, newAnimation, js_getEffect, getEffect,
-        getEffectUnsafe, getEffectUnchecked, js_getTimeline, getTimeline,
-        getTimelineUnsafe, getTimelineUnchecked, Animation(..),
-        gTypeAnimation)
+       (js_newAnimation, js_cancel, js_commitStyles, js_finish, js_pause, js_persist, js_play, js_reverse, js_updatePlaybackRate, js_setId, js_getId, js_setEffect, js_getEffect, js_setTimeline, js_getTimeline, js_setPlaybackRate, js_getPlaybackRate, js_getPlayState, js_getReplaceState, js_getPending, js_getReady, js_getFinished, js_setStartTime, js_getStartTime, js_setCurrentTime, js_getCurrentTime, js_getOverallProgress, newAnimation, cancel, commitStyles, finish, pause, persist, play, reverse, updatePlaybackRate, setId, getId, setEffect, getEffect, getEffectUnsafe, getEffectUnchecked, setTimeline, getTimeline, getTimelineUnsafe, getTimelineUnchecked, setPlaybackRate, getPlaybackRate, getPlayState, getReplaceState, getPending, getReady, getFinished, setStartTime, getStartTime, getStartTimeUnsafe, getStartTimeUnchecked, setCurrentTime, getCurrentTime, getCurrentTimeUnsafe, getCurrentTimeUnchecked, getOverallProgress, getOverallProgressUnsafe, getOverallProgressUnchecked, finishEvent, cancelEvent, remove, Animation(..), gTypeAnimation, IsAnimation, toAnimation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"Animation\"]($1, $2); })" js_newAnimation ::
-        Optional AnimationEffect ->
-          Optional AnimationTimeline -> IO Animation
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation Mozilla Animation documentation> 
-newAnimation ::
-             (MonadIO m, IsAnimationEffect effect,
-              IsAnimationTimeline timeline) =>
-               Maybe effect -> Maybe timeline -> m Animation
-newAnimation effect timeline
-  = liftIO
-      (js_newAnimation (maybeToOptional (fmap toAnimationEffect effect))
-         (maybeToOptional (fmap toAnimationTimeline timeline)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"effect\"]; })" js_getEffect ::
-        Animation -> IO (Nullable AnimationEffect)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"Animation\"]($1, $2); })"
+        js_newAnimation :: JSVal -> JSVal -> IO Animation
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/Animation MDN Animation. documentation>
+newAnimation :: (MonadDOM m, IsAnimationEffect effect, IsAnimationTimeline timeline) => Maybe effect -> Maybe timeline -> m Animation
+newAnimation effect timeline = liftDOM (((toJSVal effect) >>= \a1' -> (toJSVal timeline) >>= \a2' -> js_newAnimation a1' a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
-getEffect :: (MonadIO m) => Animation -> m (Maybe AnimationEffect)
-getEffect self = liftIO (nullableToMaybe <$> (js_getEffect self))
+foreign import javascript safe "(($1) => { return $1[\"cancel\"](); })"
+        js_cancel :: Animation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/cancel MDN Animation.cancel documentation>
+cancel :: (MonadDOM m, IsAnimation self) => self -> m ()
+cancel self = liftDOM (void ((js_cancel ((Types.toAnimation self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
-getEffectUnsafe ::
-                (MonadIO m, HasCallStack) => Animation -> m AnimationEffect
-getEffectUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getEffect self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1) => { return $1[\"commitStyles\"](); })"
+        js_commitStyles :: Animation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/commitStyles MDN Animation.commitStyles documentation>
+commitStyles :: (MonadDOM m, IsAnimation self) => self -> m ()
+commitStyles self = liftDOM (void ((js_commitStyles ((Types.toAnimation self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
-getEffectUnchecked :: (MonadIO m) => Animation -> m AnimationEffect
-getEffectUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getEffect self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"timeline\"]; })" js_getTimeline
-        :: Animation -> IO (Nullable AnimationTimeline)
+foreign import javascript safe "(($1) => { return $1[\"finish\"](); })"
+        js_finish :: Animation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/finish MDN Animation.finish documentation>
+finish :: (MonadDOM m, IsAnimation self) => self -> m ()
+finish self = liftDOM (void ((js_finish ((Types.toAnimation self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
-getTimeline ::
-            (MonadIO m) => Animation -> m (Maybe AnimationTimeline)
-getTimeline self
-  = liftIO (nullableToMaybe <$> (js_getTimeline self))
+foreign import javascript safe "(($1) => { return $1[\"pause\"](); })"
+        js_pause :: Animation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/pause MDN Animation.pause documentation>
+pause :: (MonadDOM m, IsAnimation self) => self -> m ()
+pause self = liftDOM (void ((js_pause ((Types.toAnimation self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
-getTimelineUnsafe ::
-                  (MonadIO m, HasCallStack) => Animation -> m AnimationTimeline
-getTimelineUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getTimeline self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1) => { return $1[\"persist\"](); })"
+        js_persist :: Animation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/persist MDN Animation.persist documentation>
+persist :: (MonadDOM m, IsAnimation self) => self -> m ()
+persist self = liftDOM (void ((js_persist ((Types.toAnimation self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
-getTimelineUnchecked ::
-                     (MonadIO m) => Animation -> m AnimationTimeline
-getTimelineUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getTimeline self))
+foreign import javascript safe "(($1) => { return $1[\"play\"](); })"
+        js_play :: Animation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/play MDN Animation.play documentation>
+play :: (MonadDOM m, IsAnimation self) => self -> m ()
+play self = liftDOM (void ((js_play ((Types.toAnimation self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"reverse\"](); })"
+        js_reverse :: Animation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/reverse MDN Animation.reverse documentation>
+reverse :: (MonadDOM m, IsAnimation self) => self -> m ()
+reverse self = liftDOM (void ((js_reverse ((Types.toAnimation self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"updatePlaybackRate\"]($2); })"
+        js_updatePlaybackRate :: Animation -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/updatePlaybackRate MDN Animation.updatePlaybackRate documentation>
+updatePlaybackRate :: (MonadDOM m, IsAnimation self) => self -> Double -> m ()
+updatePlaybackRate self playbackRate = liftDOM (void ((js_updatePlaybackRate ((Types.toAnimation self)) (playbackRate))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: Animation -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/id MDN Animation.id documentation>
+setId :: (MonadDOM m, IsAnimation self, ToJSString val) => self -> val -> m ()
+setId self val = liftDOM (void ((js_setId ((Types.toAnimation self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: Animation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/id MDN Animation.id documentation>
+getId :: (MonadDOM m, IsAnimation self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toAnimation self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"effect\"] = $2; })"
+        js_setEffect :: Animation -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/effect MDN Animation.effect documentation>
+setEffect :: (MonadDOM m, IsAnimation self, IsAnimationEffect val) => self -> Maybe val -> m ()
+setEffect self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEffect ((Types.toAnimation self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"effect\"]; })"
+        js_getEffect :: Animation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/effect MDN Animation.effect documentation>
+getEffect :: (MonadDOM m, IsAnimation self) => self -> m (Maybe AnimationEffect)
+getEffect self = liftDOM (((js_getEffect ((Types.toAnimation self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/effect MDN Animation.effect documentation>
+getEffectUnsafe :: (MonadDOM m, IsAnimation self, HasCallStack) => self -> m AnimationEffect
+getEffectUnsafe self = liftDOM ((((js_getEffect ((Types.toAnimation self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/effect MDN Animation.effect documentation>
+getEffectUnchecked :: (MonadDOM m, IsAnimation self) => self -> m AnimationEffect
+getEffectUnchecked self = liftDOM ((pFromJSVal <$> (js_getEffect ((Types.toAnimation self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeline\"] = $2; })"
+        js_setTimeline :: Animation -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/timeline MDN Animation.timeline documentation>
+setTimeline :: (MonadDOM m, IsAnimation self, IsAnimationTimeline val) => self -> Maybe val -> m ()
+setTimeline self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimeline ((Types.toAnimation self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeline\"]; })"
+        js_getTimeline :: Animation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/timeline MDN Animation.timeline documentation>
+getTimeline :: (MonadDOM m, IsAnimation self) => self -> m (Maybe AnimationTimeline)
+getTimeline self = liftDOM (((js_getTimeline ((Types.toAnimation self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/timeline MDN Animation.timeline documentation>
+getTimelineUnsafe :: (MonadDOM m, IsAnimation self, HasCallStack) => self -> m AnimationTimeline
+getTimelineUnsafe self = liftDOM ((((js_getTimeline ((Types.toAnimation self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/timeline MDN Animation.timeline documentation>
+getTimelineUnchecked :: (MonadDOM m, IsAnimation self) => self -> m AnimationTimeline
+getTimelineUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeline ((Types.toAnimation self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: Animation -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/playbackRate MDN Animation.playbackRate documentation>
+setPlaybackRate :: (MonadDOM m, IsAnimation self) => self -> Double -> m ()
+setPlaybackRate self val = liftDOM (void ((js_setPlaybackRate ((Types.toAnimation self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: Animation -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/playbackRate MDN Animation.playbackRate documentation>
+getPlaybackRate :: (MonadDOM m, IsAnimation self) => self -> m Double
+getPlaybackRate self = liftDOM ((js_getPlaybackRate ((Types.toAnimation self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playState\"]; })"
+        js_getPlayState :: Animation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/playState MDN Animation.playState documentation>
+getPlayState :: (MonadDOM m, IsAnimation self) => self -> m AnimationPlayState
+getPlayState self = liftDOM (((js_getPlayState ((Types.toAnimation self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"replaceState\"]; })"
+        js_getReplaceState :: Animation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/replaceState MDN Animation.replaceState documentation>
+getReplaceState :: (MonadDOM m, IsAnimation self) => self -> m AnimationReplaceState
+getReplaceState self = liftDOM (((js_getReplaceState ((Types.toAnimation self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pending\"]; })"
+        js_getPending :: Animation -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/pending MDN Animation.pending documentation>
+getPending :: (MonadDOM m, IsAnimation self) => self -> m Bool
+getPending self = liftDOM ((js_getPending ((Types.toAnimation self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: Animation -> IO (JSVal, Animation)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/ready MDN Animation.ready documentation>
+getReady :: (MonadDOM m, IsAnimation self) => self -> m Animation
+getReady self = liftDOM (((js_getReady ((Types.toAnimation self))) >>= checkPromiseResult))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"finished\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getFinished :: Animation -> IO (JSVal, Animation)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/finished MDN Animation.finished documentation>
+getFinished :: (MonadDOM m, IsAnimation self) => self -> m Animation
+getFinished self = liftDOM (((js_getFinished ((Types.toAnimation self))) >>= checkPromiseResult))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startTime\"] = $2; })"
+        js_setStartTime :: Animation -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/startTime MDN Animation.startTime documentation>
+setStartTime :: (MonadDOM m, IsAnimation self, IsCSSNumberish val) => self -> Maybe val -> m ()
+setStartTime self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStartTime ((Types.toAnimation self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
+        js_getStartTime :: Animation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/startTime MDN Animation.startTime documentation>
+getStartTime :: (MonadDOM m, IsAnimation self) => self -> m (Maybe CSSNumberish)
+getStartTime self = liftDOM (((js_getStartTime ((Types.toAnimation self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/startTime MDN Animation.startTime documentation>
+getStartTimeUnsafe :: (MonadDOM m, IsAnimation self, HasCallStack) => self -> m CSSNumberish
+getStartTimeUnsafe self = liftDOM ((((js_getStartTime ((Types.toAnimation self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/startTime MDN Animation.startTime documentation>
+getStartTimeUnchecked :: (MonadDOM m, IsAnimation self) => self -> m CSSNumberish
+getStartTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStartTime ((Types.toAnimation self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"currentTime\"] = $2; })"
+        js_setCurrentTime :: Animation -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/currentTime MDN Animation.currentTime documentation>
+setCurrentTime :: (MonadDOM m, IsAnimation self, IsCSSNumberish val) => self -> Maybe val -> m ()
+setCurrentTime self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCurrentTime ((Types.toAnimation self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: Animation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/currentTime MDN Animation.currentTime documentation>
+getCurrentTime :: (MonadDOM m, IsAnimation self) => self -> m (Maybe CSSNumberish)
+getCurrentTime self = liftDOM (((js_getCurrentTime ((Types.toAnimation self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/currentTime MDN Animation.currentTime documentation>
+getCurrentTimeUnsafe :: (MonadDOM m, IsAnimation self, HasCallStack) => self -> m CSSNumberish
+getCurrentTimeUnsafe self = liftDOM ((((js_getCurrentTime ((Types.toAnimation self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/currentTime MDN Animation.currentTime documentation>
+getCurrentTimeUnchecked :: (MonadDOM m, IsAnimation self) => self -> m CSSNumberish
+getCurrentTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentTime ((Types.toAnimation self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"overallProgress\"]; })"
+        js_getOverallProgress :: Animation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/overallProgress MDN Animation.overallProgress documentation>
+getOverallProgress :: (MonadDOM m, IsAnimation self) => self -> m (Maybe Double)
+getOverallProgress self = liftDOM (((js_getOverallProgress ((Types.toAnimation self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/overallProgress MDN Animation.overallProgress documentation>
+getOverallProgressUnsafe :: (MonadDOM m, IsAnimation self, HasCallStack) => self -> m Double
+getOverallProgressUnsafe self = liftDOM ((((js_getOverallProgress ((Types.toAnimation self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/overallProgress MDN Animation.overallProgress documentation>
+getOverallProgressUnchecked :: (MonadDOM m, IsAnimation self) => self -> m Double
+getOverallProgressUnchecked self = liftDOM ((pFromJSVal <$> (js_getOverallProgress ((Types.toAnimation self)))))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-animation-onfinish finish event>
+finishEvent :: (IsAnimation self, IsEventTarget self) => EventName self AnimationPlaybackEvent
+finishEvent = unsafeEventName (toJSString "finish")
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-animation-oncancel cancel event>
+cancelEvent :: (IsAnimation self, IsEventTarget self) => EventName self AnimationPlaybackEvent
+cancelEvent = unsafeEventName (toJSString "cancel")
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-animation-onremove remove event>
+remove :: (IsAnimation self, IsEventTarget self) => EventName self AnimationPlaybackEvent
+remove = unsafeEventName (toJSString "remove")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationEffect.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationEffect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationEffect.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnimationEffect
+       (js_getComputedTiming, js_getTiming, js_updateTiming, getComputedTiming, getComputedTiming_, getTiming, getTiming_, updateTiming, AnimationEffect(..), gTypeAnimationEffect, IsAnimationEffect, toAnimationEffect)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getComputedTiming\"](); })"
+        js_getComputedTiming :: AnimationEffect -> IO ComputedEffectTiming
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getComputedTiming MDN AnimationEffect.getComputedTiming documentation>
+getComputedTiming :: (MonadDOM m, IsAnimationEffect self) => self -> m ComputedEffectTiming
+getComputedTiming self = liftDOM ((js_getComputedTiming ((Types.toAnimationEffect self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getComputedTiming MDN AnimationEffect.getComputedTiming documentation>
+getComputedTiming_ :: (MonadDOM m, IsAnimationEffect self) => self -> m ()
+getComputedTiming_ self = liftDOM (void ((js_getComputedTiming ((Types.toAnimationEffect self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"getTiming\"](); })"
+        js_getTiming :: AnimationEffect -> IO EffectTiming
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getTiming MDN AnimationEffect.getTiming documentation>
+getTiming :: (MonadDOM m, IsAnimationEffect self) => self -> m EffectTiming
+getTiming self = liftDOM ((js_getTiming ((Types.toAnimationEffect self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getTiming MDN AnimationEffect.getTiming documentation>
+getTiming_ :: (MonadDOM m, IsAnimationEffect self) => self -> m ()
+getTiming_ self = liftDOM (void ((js_getTiming ((Types.toAnimationEffect self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"updateTiming\"]($2); })"
+        js_updateTiming :: AnimationEffect -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/updateTiming MDN AnimationEffect.updateTiming documentation>
+updateTiming :: (MonadDOM m, IsAnimationEffect self) => self -> Maybe OptionalEffectTiming -> m ()
+updateTiming self timing = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal timing) >>= \a2' -> js_updateTiming ((Types.toAnimationEffect self)) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
@@ -1,57 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AnimationEvent
-       (js_newAnimationEvent, newAnimationEvent, js_getAnimationName,
-        getAnimationName, js_getElapsedTime, getElapsedTime,
-        AnimationEvent(..), gTypeAnimationEvent)
+       (js_newAnimationEvent, js_getAnimationName, js_getElapsedTime, js_getPseudoElement, js_getAnimation, newAnimationEvent, getAnimationName, getElapsedTime, getPseudoElement, getAnimation, getAnimationUnsafe, getAnimationUnchecked, AnimationEvent(..), gTypeAnimationEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"AnimationEvent\"]($1,\n$2); })" js_newAnimationEvent ::
-        JSString -> Optional AnimationEventInit -> IO AnimationEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation> 
-newAnimationEvent ::
-                  (MonadIO m, ToJSString type') =>
-                    type' -> Maybe AnimationEventInit -> m AnimationEvent
-newAnimationEvent type' animationEventInitDict
-  = liftIO
-      (js_newAnimationEvent (toJSString type')
-         (maybeToOptional animationEventInitDict))
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"AnimationEvent\"]($1, $2); })"
+        js_newAnimationEvent :: JSString -> JSVal -> IO AnimationEvent
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/AnimationEvent MDN AnimationEvent. documentation>
+newAnimationEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe AnimationEventInit -> m AnimationEvent
+newAnimationEvent type' animationEventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal animationEventInitDict) >>= \a2' -> js_newAnimationEvent (toJSString type') a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"animationName\"]; })"
         js_getAnimationName :: AnimationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/animationName MDN AnimationEvent.animationName documentation>
+getAnimationName :: (MonadDOM m, FromJSString result) => AnimationEvent -> m result
+getAnimationName self = liftDOM ((fromJSString <$> (js_getAnimationName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.animationName Mozilla AnimationEvent.animationName documentation> 
-getAnimationName ::
-                 (MonadIO m, FromJSString result) => AnimationEvent -> m result
-getAnimationName self
-  = liftIO (fromJSString <$> (js_getAnimationName self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
         js_getElapsedTime :: AnimationEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/elapsedTime MDN AnimationEvent.elapsedTime documentation>
+getElapsedTime :: (MonadDOM m) => AnimationEvent -> m Double
+getElapsedTime self = liftDOM ((js_getElapsedTime (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.elapsedTime Mozilla AnimationEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadIO m) => AnimationEvent -> m Double
-getElapsedTime self = liftIO (js_getElapsedTime self)
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: AnimationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/pseudoElement MDN AnimationEvent.pseudoElement documentation>
+getPseudoElement :: (MonadDOM m, FromJSString result) => AnimationEvent -> m result
+getPseudoElement self = liftDOM ((fromJSString <$> (js_getPseudoElement (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"animation\"]; })"
+        js_getAnimation :: AnimationEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/animation MDN AnimationEvent.animation documentation>
+getAnimation :: (MonadDOM m) => AnimationEvent -> m (Maybe CSSAnimation)
+getAnimation self = liftDOM (((js_getAnimation (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/animation MDN AnimationEvent.animation documentation>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => AnimationEvent -> m CSSAnimation
+getAnimationUnsafe self = liftDOM ((((js_getAnimation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/animation MDN AnimationEvent.animation documentation>
+getAnimationUnchecked :: (MonadDOM m) => AnimationEvent -> m CSSAnimation
+getAnimationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnimation (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationEventInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnimationEventInit
+       (js_newAnimationEventInit, js_setAnimationName, js_getAnimationName, js_setElapsedTime, js_getElapsedTime, js_setPseudoElement, js_getPseudoElement, js_setAnimation, js_getAnimation, newAnimationEventInit, setAnimationName, getAnimationName, getAnimationNameUnsafe, getAnimationNameUnchecked, setElapsedTime, getElapsedTime, getElapsedTimeUnsafe, getElapsedTimeUnchecked, setPseudoElement, getPseudoElement, getPseudoElementUnsafe, getPseudoElementUnchecked, setAnimation, getAnimation, getAnimationUnsafe, getAnimationUnchecked, AnimationEventInit(..), gTypeAnimationEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAnimationEventInit :: IO AnimationEventInit
+-- | <https://drafts.csswg.org/css-animations-1/#dictdef-animationeventinit AnimationEventInit specification>
+newAnimationEventInit :: (MonadDOM m) => m AnimationEventInit
+newAnimationEventInit = liftDOM ((js_newAnimationEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"animationName\"] = $2; })"
+        js_setAnimationName :: AnimationEventInit -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-animationname AnimationEventInit.animationName specification>
+setAnimationName :: (MonadDOM m, ToJSString val) => AnimationEventInit -> val -> m ()
+setAnimationName self val = liftDOM (void ((js_setAnimationName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"animationName\"]; })"
+        js_getAnimationName :: AnimationEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-animationname AnimationEventInit.animationName specification>
+getAnimationName :: (MonadDOM m, FromJSString result) => AnimationEventInit -> m (Maybe result)
+getAnimationName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAnimationName (self))))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-animationname AnimationEventInit.animationName specification>
+getAnimationNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AnimationEventInit -> m result
+getAnimationNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAnimationName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-animationname AnimationEventInit.animationName specification>
+getAnimationNameUnchecked :: (MonadDOM m, FromJSString result) => AnimationEventInit -> m result
+getAnimationNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnimationName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"elapsedTime\"] = $2; })"
+        js_setElapsedTime :: AnimationEventInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-elapsedtime AnimationEventInit.elapsedTime specification>
+setElapsedTime :: (MonadDOM m) => AnimationEventInit -> Double -> m ()
+setElapsedTime self val = liftDOM (void ((js_setElapsedTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: AnimationEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-elapsedtime AnimationEventInit.elapsedTime specification>
+getElapsedTime :: (MonadDOM m) => AnimationEventInit -> m (Maybe Double)
+getElapsedTime self = liftDOM (((js_getElapsedTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-elapsedtime AnimationEventInit.elapsedTime specification>
+getElapsedTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationEventInit -> m Double
+getElapsedTimeUnsafe self = liftDOM ((((js_getElapsedTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-elapsedtime AnimationEventInit.elapsedTime specification>
+getElapsedTimeUnchecked :: (MonadDOM m) => AnimationEventInit -> m Double
+getElapsedTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getElapsedTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pseudoElement\"] = $2; })"
+        js_setPseudoElement :: AnimationEventInit -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-pseudoelement AnimationEventInit.pseudoElement specification>
+setPseudoElement :: (MonadDOM m, ToJSString val) => AnimationEventInit -> val -> m ()
+setPseudoElement self val = liftDOM (void ((js_setPseudoElement (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: AnimationEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-pseudoelement AnimationEventInit.pseudoElement specification>
+getPseudoElement :: (MonadDOM m, FromJSString result) => AnimationEventInit -> m (Maybe result)
+getPseudoElement self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-pseudoelement AnimationEventInit.pseudoElement specification>
+getPseudoElementUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AnimationEventInit -> m result
+getPseudoElementUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-pseudoelement AnimationEventInit.pseudoElement specification>
+getPseudoElementUnchecked :: (MonadDOM m, FromJSString result) => AnimationEventInit -> m result
+getPseudoElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPseudoElement (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"animation\"] = $2; })"
+        js_setAnimation :: AnimationEventInit -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/css-animations-2/#dom-animationeventinit-animation AnimationEventInit.animation specification>
+setAnimation :: (MonadDOM m) => AnimationEventInit -> Maybe CSSAnimation -> m ()
+setAnimation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAnimation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"animation\"]; })"
+        js_getAnimation :: AnimationEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-animations-2/#dom-animationeventinit-animation AnimationEventInit.animation specification>
+getAnimation :: (MonadDOM m) => AnimationEventInit -> m (Maybe CSSAnimation)
+getAnimation self = liftDOM (((js_getAnimation (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-animations-2/#dom-animationeventinit-animation AnimationEventInit.animation specification>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => AnimationEventInit -> m CSSAnimation
+getAnimationUnsafe self = liftDOM ((((js_getAnimation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-animations-2/#dom-animationeventinit-animation AnimationEventInit.animation specification>
+getAnimationUnchecked :: (MonadDOM m) => AnimationEventInit -> m CSSAnimation
+getAnimationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnimation (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationFrameProvider.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationFrameProvider.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationFrameProvider.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnimationFrameProvider
+       (js_cancelAnimationFrame, js_requestAnimationFrame, cancelAnimationFrame, requestAnimationFrame, requestAnimationFrame_, AnimationFrameProvider(..), gTypeAnimationFrameProvider, IsAnimationFrameProvider, toAnimationFrameProvider)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"cancelAnimationFrame\"]($2); })"
+        js_cancelAnimationFrame :: AnimationFrameProvider -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/cancelAnimationFrame MDN AnimationFrameProvider.cancelAnimationFrame documentation>
+cancelAnimationFrame :: (MonadDOM m, IsAnimationFrameProvider self) => self -> Word -> m ()
+cancelAnimationFrame self handle = liftDOM (void ((js_cancelAnimationFrame ((Types.toAnimationFrameProvider self)) (handle))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"requestAnimationFrame\"]($2); })"
+        js_requestAnimationFrame :: AnimationFrameProvider -> JSVal -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/requestAnimationFrame MDN AnimationFrameProvider.requestAnimationFrame documentation>
+requestAnimationFrame :: (MonadDOM m, IsAnimationFrameProvider self) => self -> FrameRequestCallback -> m Word
+requestAnimationFrame self callback' = liftDOM (((toJSVal callback') >>= \a2' -> js_requestAnimationFrame ((Types.toAnimationFrameProvider self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/requestAnimationFrame MDN AnimationFrameProvider.requestAnimationFrame documentation>
+requestAnimationFrame_ :: (MonadDOM m, IsAnimationFrameProvider self) => self -> FrameRequestCallback -> m ()
+requestAnimationFrame_ self callback' = liftDOM (void (((toJSVal callback') >>= \a2' -> js_requestAnimationFrame ((Types.toAnimationFrameProvider self)) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationPlaybackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationPlaybackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationPlaybackEvent.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnimationPlaybackEvent
+       (js_newAnimationPlaybackEvent, js_getCurrentTime, js_getTimelineTime, newAnimationPlaybackEvent, getCurrentTime, getCurrentTimeUnsafe, getCurrentTimeUnchecked, getTimelineTime, getTimelineTimeUnsafe, getTimelineTimeUnchecked, AnimationPlaybackEvent(..), gTypeAnimationPlaybackEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"AnimationPlaybackEvent\"]($1, $2); })"
+        js_newAnimationPlaybackEvent :: JSString -> JSVal -> IO AnimationPlaybackEvent
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/AnimationPlaybackEvent MDN AnimationPlaybackEvent. documentation>
+newAnimationPlaybackEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe AnimationPlaybackEventInit -> m AnimationPlaybackEvent
+newAnimationPlaybackEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newAnimationPlaybackEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: AnimationPlaybackEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/currentTime MDN AnimationPlaybackEvent.currentTime documentation>
+getCurrentTime :: (MonadDOM m) => AnimationPlaybackEvent -> m (Maybe CSSNumberish)
+getCurrentTime self = liftDOM (((js_getCurrentTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/currentTime MDN AnimationPlaybackEvent.currentTime documentation>
+getCurrentTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEvent -> m CSSNumberish
+getCurrentTimeUnsafe self = liftDOM ((((js_getCurrentTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/currentTime MDN AnimationPlaybackEvent.currentTime documentation>
+getCurrentTimeUnchecked :: (MonadDOM m) => AnimationPlaybackEvent -> m CSSNumberish
+getCurrentTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentTime (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timelineTime\"]; })"
+        js_getTimelineTime :: AnimationPlaybackEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/timelineTime MDN AnimationPlaybackEvent.timelineTime documentation>
+getTimelineTime :: (MonadDOM m) => AnimationPlaybackEvent -> m (Maybe CSSNumberish)
+getTimelineTime self = liftDOM (((js_getTimelineTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/timelineTime MDN AnimationPlaybackEvent.timelineTime documentation>
+getTimelineTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEvent -> m CSSNumberish
+getTimelineTimeUnsafe self = liftDOM ((((js_getTimelineTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/timelineTime MDN AnimationPlaybackEvent.timelineTime documentation>
+getTimelineTimeUnchecked :: (MonadDOM m) => AnimationPlaybackEvent -> m CSSNumberish
+getTimelineTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimelineTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationPlaybackEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationPlaybackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationPlaybackEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnimationPlaybackEventInit
+       (js_newAnimationPlaybackEventInit, js_setCurrentTime, js_getCurrentTime, js_setTimelineTime, js_getTimelineTime, newAnimationPlaybackEventInit, setCurrentTime, getCurrentTime, getCurrentTimeUnsafe, getCurrentTimeUnchecked, setTimelineTime, getTimelineTime, getTimelineTimeUnsafe, getTimelineTimeUnchecked, AnimationPlaybackEventInit(..), gTypeAnimationPlaybackEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAnimationPlaybackEventInit :: IO AnimationPlaybackEventInit
+-- | <https://drafts.csswg.org/web-animations-2/#dictdef-animationplaybackeventinit AnimationPlaybackEventInit specification>
+newAnimationPlaybackEventInit :: (MonadDOM m) => m AnimationPlaybackEventInit
+newAnimationPlaybackEventInit = liftDOM ((js_newAnimationPlaybackEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"currentTime\"] = $2; })"
+        js_setCurrentTime :: AnimationPlaybackEventInit -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-currenttime AnimationPlaybackEventInit.currentTime specification>
+setCurrentTime :: (MonadDOM m, IsCSSNumberish val) => AnimationPlaybackEventInit -> Maybe val -> m ()
+setCurrentTime self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCurrentTime (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: AnimationPlaybackEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-currenttime AnimationPlaybackEventInit.currentTime specification>
+getCurrentTime :: (MonadDOM m) => AnimationPlaybackEventInit -> m (Maybe CSSNumberish)
+getCurrentTime self = liftDOM (((js_getCurrentTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-currenttime AnimationPlaybackEventInit.currentTime specification>
+getCurrentTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEventInit -> m CSSNumberish
+getCurrentTimeUnsafe self = liftDOM ((((js_getCurrentTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-currenttime AnimationPlaybackEventInit.currentTime specification>
+getCurrentTimeUnchecked :: (MonadDOM m) => AnimationPlaybackEventInit -> m CSSNumberish
+getCurrentTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timelineTime\"] = $2; })"
+        js_setTimelineTime :: AnimationPlaybackEventInit -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-timelinetime AnimationPlaybackEventInit.timelineTime specification>
+setTimelineTime :: (MonadDOM m, IsCSSNumberish val) => AnimationPlaybackEventInit -> Maybe val -> m ()
+setTimelineTime self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimelineTime (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timelineTime\"]; })"
+        js_getTimelineTime :: AnimationPlaybackEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-timelinetime AnimationPlaybackEventInit.timelineTime specification>
+getTimelineTime :: (MonadDOM m) => AnimationPlaybackEventInit -> m (Maybe CSSNumberish)
+getTimelineTime self = liftDOM (((js_getTimelineTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-timelinetime AnimationPlaybackEventInit.timelineTime specification>
+getTimelineTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEventInit -> m CSSNumberish
+getTimelineTimeUnsafe self = liftDOM ((((js_getTimelineTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-timelinetime AnimationPlaybackEventInit.timelineTime specification>
+getTimelineTimeUnchecked :: (MonadDOM m) => AnimationPlaybackEventInit -> m CSSNumberish
+getTimelineTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimelineTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationTimeline.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationTimeline.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationTimeline.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnimationTimeline
+       (js_getCurrentTime, js_getDuration, getCurrentTime, getCurrentTimeUnsafe, getCurrentTimeUnchecked, getDuration, getDurationUnsafe, getDurationUnchecked, AnimationTimeline(..), gTypeAnimationTimeline, IsAnimationTimeline, toAnimationTimeline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: AnimationTimeline -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationTimeline/currentTime MDN AnimationTimeline.currentTime documentation>
+getCurrentTime :: (MonadDOM m, IsAnimationTimeline self) => self -> m (Maybe CSSNumberish)
+getCurrentTime self = liftDOM (((js_getCurrentTime ((Types.toAnimationTimeline self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationTimeline/currentTime MDN AnimationTimeline.currentTime documentation>
+getCurrentTimeUnsafe :: (MonadDOM m, IsAnimationTimeline self, HasCallStack) => self -> m CSSNumberish
+getCurrentTimeUnsafe self = liftDOM ((((js_getCurrentTime ((Types.toAnimationTimeline self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationTimeline/currentTime MDN AnimationTimeline.currentTime documentation>
+getCurrentTimeUnchecked :: (MonadDOM m, IsAnimationTimeline self) => self -> m CSSNumberish
+getCurrentTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentTime ((Types.toAnimationTimeline self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: AnimationTimeline -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationTimeline/duration MDN AnimationTimeline.duration documentation>
+getDuration :: (MonadDOM m, IsAnimationTimeline self) => self -> m (Maybe CSSNumberish)
+getDuration self = liftDOM (((js_getDuration ((Types.toAnimationTimeline self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationTimeline/duration MDN AnimationTimeline.duration documentation>
+getDurationUnsafe :: (MonadDOM m, IsAnimationTimeline self, HasCallStack) => self -> m CSSNumberish
+getDurationUnsafe self = liftDOM ((((js_getDuration ((Types.toAnimationTimeline self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationTimeline/duration MDN AnimationTimeline.duration documentation>
+getDurationUnchecked :: (MonadDOM m, IsAnimationTimeline self) => self -> m CSSNumberish
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration ((Types.toAnimationTimeline self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationTrigger.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationTrigger.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationTrigger.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from animation-triggers-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AnimationTrigger
+       (AnimationTrigger(..), gTypeAnimationTrigger)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs
+++ /dev/null
@@ -1,114 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplePayError
-       (js_newApplePayError, newApplePayError, js_setCode, setCode,
-        js_getCode, getCode, js_setContactField, setContactField,
-        js_getContactField, getContactField, getContactFieldUnsafe,
-        getContactFieldUnchecked, js_setMessage, setMessage, js_getMessage,
-        getMessage, ApplePayError(..), gTypeApplePayError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return new window[\"ApplePayError\"]($1,\n$2, $3); })" js_newApplePayError ::
-        JSVal ->
-          Optional ApplePayErrorContactField ->
-            Optional JSString -> IO ApplePayError
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError Mozilla ApplePayError documentation> 
-newApplePayError ::
-                 (MonadIO m, ToJSString message) =>
-                   ApplePayErrorCode ->
-                     Maybe ApplePayErrorContactField -> Maybe message -> m ApplePayError
-newApplePayError errorCode contactField message
-  = liftIO
-      (js_newApplePayError (pToJSVal errorCode)
-         (maybeToOptional contactField)
-         (toOptionalJSString message))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"code\"] = $2; })" js_setCode ::
-        ApplePayError -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
-setCode ::
-        (MonadIO m) => ApplePayError -> ApplePayErrorCode -> m ()
-setCode self val = liftIO (js_setCode self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        ApplePayError -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
-getCode :: (MonadIO m) => ApplePayError -> m ApplePayErrorCode
-getCode self = liftIO ((js_getCode self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"contactField\"] = $2; })"
-        js_setContactField ::
-        ApplePayError -> Optional ApplePayErrorContactField -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-setContactField ::
-                (MonadIO m) =>
-                  ApplePayError -> Maybe ApplePayErrorContactField -> m ()
-setContactField self val
-  = liftIO (js_setContactField self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contactField\"]; })"
-        js_getContactField ::
-        ApplePayError -> IO (Nullable ApplePayErrorContactField)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-getContactField ::
-                (MonadIO m) => ApplePayError -> m (Maybe ApplePayErrorContactField)
-getContactField self
-  = liftIO (nullableToMaybe <$> (js_getContactField self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-getContactFieldUnsafe ::
-                      (MonadIO m, HasCallStack) =>
-                        ApplePayError -> m ApplePayErrorContactField
-getContactFieldUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getContactField self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-getContactFieldUnchecked ::
-                         (MonadIO m) => ApplePayError -> m ApplePayErrorContactField
-getContactFieldUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getContactField self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"message\"] = $2; })"
-        js_setMessage :: ApplePayError -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
-setMessage ::
-           (MonadIO m, ToJSString val) => ApplePayError -> val -> m ()
-setMessage self val = liftIO (js_setMessage self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        ApplePayError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => ApplePayError -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplePayPaymentAuthorizedEvent
-       (js_getPayment, getPayment, ApplePayPaymentAuthorizedEvent(..),
-        gTypeApplePayPaymentAuthorizedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"payment\"]; })" js_getPayment ::
-        ApplePayPaymentAuthorizedEvent -> IO ApplePayPayment
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentAuthorizedEvent.payment Mozilla ApplePayPaymentAuthorizedEvent.payment documentation> 
-getPayment ::
-           (MonadIO m) => ApplePayPaymentAuthorizedEvent -> m ApplePayPayment
-getPayment self = liftIO (js_getPayment self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplePayPaymentMethodSelectedEvent
-       (js_getPaymentMethod, getPaymentMethod,
-        ApplePayPaymentMethodSelectedEvent(..),
-        gTypeApplePayPaymentMethodSelectedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"paymentMethod\"]; })"
-        js_getPaymentMethod ::
-        ApplePayPaymentMethodSelectedEvent -> IO ApplePayPaymentMethod
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentMethodSelectedEvent.paymentMethod Mozilla ApplePayPaymentMethodSelectedEvent.paymentMethod documentation> 
-getPaymentMethod ::
-                 (MonadIO m) =>
-                   ApplePayPaymentMethodSelectedEvent -> m ApplePayPaymentMethod
-getPaymentMethod self = liftIO (js_getPaymentMethod self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs
+++ /dev/null
@@ -1,309 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplePaySession
-       (js_newApplePaySession, newApplePaySession, js_supportsVersion,
-        supportsVersion, supportsVersion_, js_canMakePayments,
-        canMakePayments, canMakePayments_,
-        js_canMakePaymentsWithActiveCard, canMakePaymentsWithActiveCard,
-        canMakePaymentsWithActiveCard_, js_openPaymentSetup,
-        openPaymentSetup, openPaymentSetup_, js_begin, begin, js_abort,
-        abort, js_completeMerchantValidation, completeMerchantValidation,
-        js_completeShippingMethodSelectionUpdate,
-        completeShippingMethodSelectionUpdate,
-        js_completeShippingContactSelectionUpdate,
-        completeShippingContactSelectionUpdate,
-        js_completePaymentMethodSelectionUpdate,
-        completePaymentMethodSelectionUpdate, js_completePaymentResult,
-        completePaymentResult, js_completeShippingMethodSelection,
-        completeShippingMethodSelection,
-        js_completeShippingContactSelection,
-        completeShippingContactSelection,
-        js_completePaymentMethodSelection, completePaymentMethodSelection,
-        js_completePayment, completePayment, pattern STATUS_SUCCESS,
-        pattern STATUS_FAILURE,
-        pattern STATUS_INVALID_BILLING_POSTAL_ADDRESS,
-        pattern STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,
-        pattern STATUS_INVALID_SHIPPING_CONTACT,
-        pattern STATUS_PIN_REQUIRED, pattern STATUS_PIN_INCORRECT,
-        pattern STATUS_PIN_LOCKOUT, validatemerchant,
-        paymentmethodselected, paymentauthorized, shippingmethodselected,
-        shippingcontactselected, cancel, ApplePaySession(..),
-        gTypeApplePaySession)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2) => { return new window[\"ApplePaySession\"]($1,\n$2); })" js_newApplePaySession ::
-        Word -> ApplePayPaymentRequest -> IO ApplePaySession
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession Mozilla ApplePaySession documentation> 
-newApplePaySession ::
-                   (MonadIO m) => Word -> ApplePayPaymentRequest -> m ApplePaySession
-newApplePaySession version paymentRequest
-  = liftIO (js_newApplePaySession version paymentRequest)
- 
-foreign import javascript safe
-        "(($1) => { return (window[\"ApplePaySession\"][\"supportsVersion\"]($1) ? 1 : 0); })"
-        js_supportsVersion :: Word -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion :: (MonadIO m) => Word -> m Bool
-supportsVersion version = liftIO (js_supportsVersion version)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion_ :: (MonadIO m) => Word -> m ()
-supportsVersion_ version
-  = liftIO (void (js_supportsVersion version))
- 
-foreign import javascript safe
-        "(() => { return (window[\"ApplePaySession\"][\"canMakePayments\"]() ? 1 : 0); })"
-        js_canMakePayments :: IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments :: (MonadIO m) => m Bool
-canMakePayments = liftIO (js_canMakePayments)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments_ :: (MonadIO m) => m ()
-canMakePayments_ = liftIO (void (js_canMakePayments))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return window[\"ApplePaySession\"][\"canMakePaymentsWithActiveCard\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_canMakePaymentsWithActiveCard :: JSString -> IO (JSVal, Bool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
-canMakePaymentsWithActiveCard ::
-                              (MonadIO m, ToJSString merchantIdentifier) =>
-                                merchantIdentifier -> m Bool
-canMakePaymentsWithActiveCard merchantIdentifier
-  = liftIO
-      ((js_canMakePaymentsWithActiveCard (toJSString merchantIdentifier))
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
-canMakePaymentsWithActiveCard_ ::
-                               (MonadIO m, ToJSString merchantIdentifier) =>
-                                 merchantIdentifier -> m ()
-canMakePaymentsWithActiveCard_ merchantIdentifier
-  = liftIO
-      (void
-         (js_canMakePaymentsWithActiveCard (toJSString merchantIdentifier)))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return window[\"ApplePaySession\"][\"openPaymentSetup\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_openPaymentSetup :: JSString -> IO (JSVal, Bool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
-openPaymentSetup ::
-                 (MonadIO m, ToJSString merchantIdentifier) =>
-                   merchantIdentifier -> m Bool
-openPaymentSetup merchantIdentifier
-  = liftIO
-      ((js_openPaymentSetup (toJSString merchantIdentifier)) >>=
-         checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
-openPaymentSetup_ ::
-                  (MonadIO m, ToJSString merchantIdentifier) =>
-                    merchantIdentifier -> m ()
-openPaymentSetup_ merchantIdentifier
-  = liftIO
-      (void (js_openPaymentSetup (toJSString merchantIdentifier)))
- 
-foreign import javascript safe "(($1) => { return $1[\"begin\"](); })" js_begin ::
-        ApplePaySession -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.begin Mozilla ApplePaySession.begin documentation> 
-begin :: (MonadIO m) => ApplePaySession -> m ()
-begin self = liftIO (js_begin self)
- 
-foreign import javascript safe "(($1) => { return $1[\"abort\"](); })" js_abort ::
-        ApplePaySession -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.abort Mozilla ApplePaySession.abort documentation> 
-abort :: (MonadIO m) => ApplePaySession -> m ()
-abort self = liftIO (js_abort self)
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"completeMerchantValidation\"]($2); })"
-        js_completeMerchantValidation :: ApplePaySession -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeMerchantValidation Mozilla ApplePaySession.completeMerchantValidation documentation> 
-completeMerchantValidation ::
-                           (MonadIO m, ToJSVal merchantSession) =>
-                             ApplePaySession -> merchantSession -> m ()
-completeMerchantValidation self merchantSession
-  = liftIO
-      (toJSVal merchantSession >>=
-         \ merchantSession' ->
-           js_completeMerchantValidation self merchantSession')
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"completeShippingMethodSelection\"]($2); })"
-        js_completeShippingMethodSelectionUpdate ::
-        ApplePaySession -> ApplePayShippingMethodUpdate -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingMethodSelection Mozilla ApplePaySession.completeShippingMethodSelection documentation> 
-completeShippingMethodSelectionUpdate ::
-                                      (MonadIO m) =>
-                                        ApplePaySession -> ApplePayShippingMethodUpdate -> m ()
-completeShippingMethodSelectionUpdate self update
-  = liftIO (js_completeShippingMethodSelectionUpdate self update)
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"completeShippingContactSelection\"]($2); })"
-        js_completeShippingContactSelectionUpdate ::
-        ApplePaySession -> ApplePayShippingContactUpdate -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingContactSelection Mozilla ApplePaySession.completeShippingContactSelection documentation> 
-completeShippingContactSelectionUpdate ::
-                                       (MonadIO m) =>
-                                         ApplePaySession -> ApplePayShippingContactUpdate -> m ()
-completeShippingContactSelectionUpdate self update
-  = liftIO (js_completeShippingContactSelectionUpdate self update)
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"completePaymentMethodSelection\"]($2); })"
-        js_completePaymentMethodSelectionUpdate ::
-        ApplePaySession -> ApplePayPaymentMethodUpdate -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePaymentMethodSelection Mozilla ApplePaySession.completePaymentMethodSelection documentation> 
-completePaymentMethodSelectionUpdate ::
-                                     (MonadIO m) =>
-                                       ApplePaySession -> ApplePayPaymentMethodUpdate -> m ()
-completePaymentMethodSelectionUpdate self update
-  = liftIO (js_completePaymentMethodSelectionUpdate self update)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"completePayment\"]($2); })"
-        js_completePaymentResult ::
-        ApplePaySession -> ApplePayPaymentAuthorizationResult -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePayment Mozilla ApplePaySession.completePayment documentation> 
-completePaymentResult ::
-                      (MonadIO m) =>
-                        ApplePaySession -> ApplePayPaymentAuthorizationResult -> m ()
-completePaymentResult self result
-  = liftIO (js_completePaymentResult self result)
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4) => { return $1[\"completeShippingMethodSelection\"]($2,\n$3, $4); })"
-        js_completeShippingMethodSelection ::
-        ApplePaySession -> Word -> ApplePayLineItem -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingMethodSelection Mozilla ApplePaySession.completeShippingMethodSelection documentation> 
-completeShippingMethodSelection ::
-                                (MonadIO m) =>
-                                  ApplePaySession ->
-                                    Word -> ApplePayLineItem -> [ApplePayLineItem] -> m ()
-completeShippingMethodSelection self status newTotal newLineItems
-  = liftIO
-      (toJSVal newLineItems >>=
-         \ newLineItems' ->
-           js_completeShippingMethodSelection self status newTotal
-             newLineItems')
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5) => { return $1[\"completeShippingContactSelection\"]($2,\n$3, $4, $5); })"
-        js_completeShippingContactSelection ::
-        ApplePaySession ->
-          Word -> JSVal -> ApplePayLineItem -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingContactSelection Mozilla ApplePaySession.completeShippingContactSelection documentation> 
-completeShippingContactSelection ::
-                                 (MonadIO m) =>
-                                   ApplePaySession ->
-                                     Word ->
-                                       [ApplePayShippingMethod] ->
-                                         ApplePayLineItem -> [ApplePayLineItem] -> m ()
-completeShippingContactSelection self status newShippingMethods
-  newTotal newLineItems
-  = liftIO
-      (toJSVal newLineItems >>=
-         \ newLineItems' ->
-           toJSVal newShippingMethods >>=
-             \ newShippingMethods' ->
-               js_completeShippingContactSelection self status newShippingMethods'
-             newTotal
-             newLineItems')
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"completePaymentMethodSelection\"]($2,\n$3); })"
-        js_completePaymentMethodSelection ::
-        ApplePaySession -> ApplePayLineItem -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePaymentMethodSelection Mozilla ApplePaySession.completePaymentMethodSelection documentation> 
-completePaymentMethodSelection ::
-                               (MonadIO m) =>
-                                 ApplePaySession -> ApplePayLineItem -> [ApplePayLineItem] -> m ()
-completePaymentMethodSelection self newTotal newLineItems
-  = liftIO
-      (toJSVal newLineItems >>=
-         \ newLineItems' ->
-           js_completePaymentMethodSelection self newTotal newLineItems')
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"completePayment\"]($2); })"
-        js_completePayment :: ApplePaySession -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePayment Mozilla ApplePaySession.completePayment documentation> 
-completePayment :: (MonadIO m) => ApplePaySession -> Word -> m ()
-completePayment self status
-  = liftIO (js_completePayment self status)
-pattern STATUS_SUCCESS = 0
-pattern STATUS_FAILURE = 1
-pattern STATUS_INVALID_BILLING_POSTAL_ADDRESS = 2
-pattern STATUS_INVALID_SHIPPING_POSTAL_ADDRESS = 3
-pattern STATUS_INVALID_SHIPPING_CONTACT = 4
-pattern STATUS_PIN_REQUIRED = 5
-pattern STATUS_PIN_INCORRECT = 6
-pattern STATUS_PIN_LOCKOUT = 7
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onvalidatemerchant Mozilla ApplePaySession.onvalidatemerchant documentation> 
-validatemerchant :: EventName ApplePaySession onvalidatemerchant
-validatemerchant = unsafeEventName (toJSString "validatemerchant")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onpaymentmethodselected Mozilla ApplePaySession.onpaymentmethodselected documentation> 
-paymentmethodselected ::
-                        EventName ApplePaySession onpaymentmethodselected
-paymentmethodselected
-  = unsafeEventName (toJSString "paymentmethodselected")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onpaymentauthorized Mozilla ApplePaySession.onpaymentauthorized documentation> 
-paymentauthorized :: EventName ApplePaySession onpaymentauthorized
-paymentauthorized
-  = unsafeEventName (toJSString "paymentauthorized")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onshippingmethodselected Mozilla ApplePaySession.onshippingmethodselected documentation> 
-shippingmethodselected ::
-                         EventName ApplePaySession onshippingmethodselected
-shippingmethodselected
-  = unsafeEventName (toJSString "shippingmethodselected")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onshippingcontactselected Mozilla ApplePaySession.onshippingcontactselected documentation> 
-shippingcontactselected ::
-                          EventName ApplePaySession onshippingcontactselected
-shippingcontactselected
-  = unsafeEventName (toJSString "shippingcontactselected")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.oncancel Mozilla ApplePaySession.oncancel documentation> 
-cancel :: EventName ApplePaySession oncancel
-cancel = unsafeEventName (toJSString "cancel")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplePayShippingContactSelectedEvent
-       (js_getShippingContact, getShippingContact,
-        ApplePayShippingContactSelectedEvent(..),
-        gTypeApplePayShippingContactSelectedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shippingContact\"]; })"
-        js_getShippingContact ::
-        ApplePayShippingContactSelectedEvent -> IO ApplePayPaymentContact
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingContactSelectedEvent.shippingContact Mozilla ApplePayShippingContactSelectedEvent.shippingContact documentation> 
-getShippingContact ::
-                   (MonadIO m) =>
-                     ApplePayShippingContactSelectedEvent -> m ApplePayPaymentContact
-getShippingContact self = liftIO (js_getShippingContact self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplePayShippingMethodSelectedEvent
-       (js_getShippingMethod, getShippingMethod,
-        ApplePayShippingMethodSelectedEvent(..),
-        gTypeApplePayShippingMethodSelectedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shippingMethod\"]; })"
-        js_getShippingMethod ::
-        ApplePayShippingMethodSelectedEvent -> IO ApplePayShippingMethod
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingMethodSelectedEvent.shippingMethod Mozilla ApplePayShippingMethodSelectedEvent.shippingMethod documentation> 
-getShippingMethod ::
-                  (MonadIO m) =>
-                    ApplePayShippingMethodSelectedEvent -> m ApplePayShippingMethod
-getShippingMethod self = liftIO (js_getShippingMethod self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplePayValidateMerchantEvent
-       (js_getValidationURL, getValidationURL,
-        ApplePayValidateMerchantEvent(..),
-        gTypeApplePayValidateMerchantEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validationURL\"]; })"
-        js_getValidationURL :: ApplePayValidateMerchantEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayValidateMerchantEvent.validationURL Mozilla ApplePayValidateMerchantEvent.validationURL documentation> 
-getValidationURL ::
-                 (MonadIO m, FromJSString result) =>
-                   ApplePayValidateMerchantEvent -> m result
-getValidationURL self
-  = liftIO (fromJSString <$> (js_getValidationURL self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs
+++ /dev/null
@@ -1,97 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ApplicationCache
-       (js_update, update, js_swapCache, swapCache, js_abort, abort,
-        pattern UNCACHED, pattern IDLE, pattern CHECKING,
-        pattern DOWNLOADING, pattern UPDATEREADY, pattern OBSOLETE,
-        js_getStatus, getStatus, checking, error, noUpdate, downloading,
-        progress, updateReady, cached, obsolete, ApplicationCache(..),
-        gTypeApplicationCache)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"update\"](); })" js_update ::
-        ApplicationCache -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.update Mozilla ApplicationCache.update documentation> 
-update :: (MonadIO m) => ApplicationCache -> m ()
-update self = liftIO (js_update self)
- 
-foreign import javascript safe "(($1) => { return $1[\"swapCache\"](); })" js_swapCache
-        :: ApplicationCache -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.swapCache Mozilla ApplicationCache.swapCache documentation> 
-swapCache :: (MonadIO m) => ApplicationCache -> m ()
-swapCache self = liftIO (js_swapCache self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"abort\"](); })" js_abort ::
-        ApplicationCache -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.abort Mozilla ApplicationCache.abort documentation> 
-abort :: (MonadIO m) => ApplicationCache -> m ()
-abort self = liftIO (js_abort self)
-pattern UNCACHED = 0
-pattern IDLE = 1
-pattern CHECKING = 2
-pattern DOWNLOADING = 3
-pattern UPDATEREADY = 4
-pattern OBSOLETE = 5
- 
-foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
-        ApplicationCache -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.status Mozilla ApplicationCache.status documentation> 
-getStatus :: (MonadIO m) => ApplicationCache -> m Word
-getStatus self = liftIO (js_getStatus self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onchecking Mozilla ApplicationCache.onchecking documentation> 
-checking :: EventName ApplicationCache Event
-checking = unsafeEventName (toJSString "checking")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onerror Mozilla ApplicationCache.onerror documentation> 
-error :: EventName ApplicationCache UIEvent
-error = unsafeEventNameAsync (toJSString "error")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onnoupdate Mozilla ApplicationCache.onnoupdate documentation> 
-noUpdate :: EventName ApplicationCache Event
-noUpdate = unsafeEventName (toJSString "noupdate")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.ondownloading Mozilla ApplicationCache.ondownloading documentation> 
-downloading :: EventName ApplicationCache Event
-downloading = unsafeEventName (toJSString "downloading")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onprogress Mozilla ApplicationCache.onprogress documentation> 
-progress :: EventName ApplicationCache ProgressEvent
-progress = unsafeEventNameAsync (toJSString "progress")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onupdateready Mozilla ApplicationCache.onupdateready documentation> 
-updateReady :: EventName ApplicationCache Event
-updateReady = unsafeEventName (toJSString "updateready")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.oncached Mozilla ApplicationCache.oncached documentation> 
-cached :: EventName ApplicationCache Event
-cached = unsafeEventName (toJSString "cached")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onobsolete Mozilla ApplicationCache.onobsolete documentation> 
-obsolete :: EventName ApplicationCache Event
-obsolete = unsafeEventName (toJSString "obsolete")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AriaNotificationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AriaNotificationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AriaNotificationOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from wai-aria-1.3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AriaNotificationOptions
+       (js_newAriaNotificationOptions, js_setPriority, js_getPriority, newAriaNotificationOptions, setPriority, getPriority, getPriorityUnsafe, getPriorityUnchecked, AriaNotificationOptions(..), gTypeAriaNotificationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAriaNotificationOptions :: IO AriaNotificationOptions
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions AriaNotificationOptions specification>
+newAriaNotificationOptions :: (MonadDOM m) => m AriaNotificationOptions
+newAriaNotificationOptions = liftDOM ((js_newAriaNotificationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: AriaNotificationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions-priority AriaNotificationOptions.priority specification>
+setPriority :: (MonadDOM m) => AriaNotificationOptions -> AriaNotifyPriority -> m ()
+setPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: AriaNotificationOptions -> IO JSVal
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions-priority AriaNotificationOptions.priority specification>
+getPriority :: (MonadDOM m) => AriaNotificationOptions -> m (Maybe AriaNotifyPriority)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions-priority AriaNotificationOptions.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => AriaNotificationOptions -> m AriaNotifyPriority
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions-priority AriaNotificationOptions.priority specification>
+getPriorityUnchecked :: (MonadDOM m) => AriaNotificationOptions -> m AriaNotifyPriority
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AssignedNodesOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AssignedNodesOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AssignedNodesOptions.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AssignedNodesOptions
+       (js_newAssignedNodesOptions, js_setFlatten, js_getFlatten, newAssignedNodesOptions, setFlatten, getFlatten, getFlattenUnsafe, getFlattenUnchecked, AssignedNodesOptions(..), gTypeAssignedNodesOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAssignedNodesOptions :: IO AssignedNodesOptions
+-- | <https://html.spec.whatwg.org/multipage/scripting.html#assignednodesoptions AssignedNodesOptions specification>
+newAssignedNodesOptions :: (MonadDOM m) => m AssignedNodesOptions
+newAssignedNodesOptions = liftDOM ((js_newAssignedNodesOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flatten\"] = $2; })"
+        js_setFlatten :: AssignedNodesOptions -> Bool -> IO ()
+setFlatten :: (MonadDOM m) => AssignedNodesOptions -> Bool -> m ()
+setFlatten self val = liftDOM (void ((js_setFlatten (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flatten\"]; })"
+        js_getFlatten :: AssignedNodesOptions -> IO JSVal
+getFlatten :: (MonadDOM m) => AssignedNodesOptions -> m (Maybe Bool)
+getFlatten self = liftDOM (((js_getFlatten (self)) >>= fromJSValUnchecked))
+
+getFlattenUnsafe :: (MonadDOM m, HasCallStack) => AssignedNodesOptions -> m Bool
+getFlattenUnsafe self = liftDOM ((((js_getFlatten (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getFlattenUnchecked :: (MonadDOM m) => AssignedNodesOptions -> m Bool
+getFlattenUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlatten (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Attr.hs b/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
@@ -1,136 +1,89 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Attr
-       (js_getNamespaceURI, getNamespaceURI, getNamespaceURIUnsafe,
-        getNamespaceURIUnchecked, js_getPrefix, getPrefix, getPrefixUnsafe,
-        getPrefixUnchecked, js_getLocalName, getLocalName, js_getName,
-        getName, js_setValue, setValue, js_getValue, getValue,
-        js_getOwnerElement, getOwnerElement, getOwnerElementUnsafe,
-        getOwnerElementUnchecked, js_getSpecified, getSpecified, Attr(..),
-        gTypeAttr)
+       (js_getNamespaceURI, js_getPrefix, js_getLocalName, js_getName, js_setValue, js_getValue, js_getOwnerElement, js_getSpecified, getNamespaceURI, getNamespaceURIUnsafe, getNamespaceURIUnchecked, getPrefix, getPrefixUnsafe, getPrefixUnchecked, getLocalName, getName, setValue, getValue, getOwnerElement, getOwnerElementUnsafe, getOwnerElementUnchecked, getSpecified, Attr(..), gTypeAttr)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"namespaceURI\"]; })"
-        js_getNamespaceURI :: Attr -> IO (Nullable JSString)
+        js_getNamespaceURI :: Attr -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/namespaceURI MDN Attr.namespaceURI documentation>
+getNamespaceURI :: (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
+getNamespaceURI self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNamespaceURI (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
-getNamespaceURI ::
-                (MonadIO m, FromJSString result) => Attr -> m (Maybe result)
-getNamespaceURI self
-  = liftIO (fromMaybeJSString <$> (js_getNamespaceURI self))
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/namespaceURI MDN Attr.namespaceURI documentation>
+getNamespaceURIUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
+getNamespaceURIUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNamespaceURI (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
-getNamespaceURIUnsafe ::
-                      (MonadIO m, HasCallStack, FromJSString result) => Attr -> m result
-getNamespaceURIUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getNamespaceURI self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/namespaceURI MDN Attr.namespaceURI documentation>
+getNamespaceURIUnchecked :: (MonadDOM m, FromJSString result) => Attr -> m result
+getNamespaceURIUnchecked self = liftDOM ((pFromJSVal <$> (js_getNamespaceURI (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
-getNamespaceURIUnchecked ::
-                         (MonadIO m, FromJSString result) => Attr -> m result
-getNamespaceURIUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getNamespaceURI self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })" js_getPrefix ::
-        Attr -> IO (Nullable JSString)
+foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })"
+        js_getPrefix :: Attr -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/prefix MDN Attr.prefix documentation>
+getPrefix :: (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
+getPrefix self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPrefix (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
-getPrefix ::
-          (MonadIO m, FromJSString result) => Attr -> m (Maybe result)
-getPrefix self = liftIO (fromMaybeJSString <$> (js_getPrefix self))
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/prefix MDN Attr.prefix documentation>
+getPrefixUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
+getPrefixUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPrefix (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
-getPrefixUnsafe ::
-                (MonadIO m, HasCallStack, FromJSString result) => Attr -> m result
-getPrefixUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getPrefix self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/prefix MDN Attr.prefix documentation>
+getPrefixUnchecked :: (MonadDOM m, FromJSString result) => Attr -> m result
+getPrefixUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrefix (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
-getPrefixUnchecked ::
-                   (MonadIO m, FromJSString result) => Attr -> m result
-getPrefixUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getPrefix self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"localName\"]; })"
         js_getLocalName :: Attr -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/localName MDN Attr.localName documentation>
+getLocalName :: (MonadDOM m, FromJSString result) => Attr -> m result
+getLocalName self = liftDOM ((fromJSString <$> (js_getLocalName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.localName Mozilla Attr.localName documentation> 
-getLocalName ::
-             (MonadIO m, FromJSString result) => Attr -> m result
-getLocalName self
-  = liftIO (fromJSString <$> (js_getLocalName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        Attr -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: Attr -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/name MDN Attr.name documentation>
+getName :: (MonadDOM m, FromJSString result) => Attr -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
-getName :: (MonadIO m, FromJSString result) => Attr -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: Attr -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: Attr -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/value MDN Attr.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => Attr -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
-setValue :: (MonadIO m, ToJSString val) => Attr -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        Attr -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: Attr -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/value MDN Attr.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => Attr -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
-getValue :: (MonadIO m, FromJSString result) => Attr -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"ownerElement\"]; })"
-        js_getOwnerElement :: Attr -> IO (Nullable Element)
+        js_getOwnerElement :: Attr -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/ownerElement MDN Attr.ownerElement documentation>
+getOwnerElement :: (MonadDOM m) => Attr -> m (Maybe Element)
+getOwnerElement self = liftDOM (((js_getOwnerElement (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
-getOwnerElement :: (MonadIO m) => Attr -> m (Maybe Element)
-getOwnerElement self
-  = liftIO (nullableToMaybe <$> (js_getOwnerElement self))
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/ownerElement MDN Attr.ownerElement documentation>
+getOwnerElementUnsafe :: (MonadDOM m, HasCallStack) => Attr -> m Element
+getOwnerElementUnsafe self = liftDOM ((((js_getOwnerElement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
-getOwnerElementUnsafe ::
-                      (MonadIO m, HasCallStack) => Attr -> m Element
-getOwnerElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getOwnerElement self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/ownerElement MDN Attr.ownerElement documentation>
+getOwnerElementUnchecked :: (MonadDOM m) => Attr -> m Element
+getOwnerElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getOwnerElement (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
-getOwnerElementUnchecked :: (MonadIO m) => Attr -> m Element
-getOwnerElementUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getOwnerElement self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"specified\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"specified\"]; })"
         js_getSpecified :: Attr -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.specified Mozilla Attr.specified documentation> 
-getSpecified :: (MonadIO m) => Attr -> m Bool
-getSpecified self = liftIO (js_getSpecified self)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/specified MDN Attr.specified documentation>
+getSpecified :: (MonadDOM m) => Attr -> m Bool
+getSpecified self = liftDOM ((js_getSpecified (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
@@ -1,86 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioBuffer
-       (js_getChannelData, getChannelData, getChannelData_, js_getLength,
-        getLength, js_getDuration, getDuration, js_getSampleRate,
-        getSampleRate, js_setGain, setGain, js_getGain, getGain,
-        js_getNumberOfChannels, getNumberOfChannels, AudioBuffer(..),
-        gTypeAudioBuffer)
+       (js_newAudioBuffer, js_copyFromChannel, js_copyToChannel, js_getChannelData, js_getSampleRate, js_getLength, js_getDuration, js_getNumberOfChannels, newAudioBuffer, copyFromChannel, copyToChannel, getChannelData, getChannelData_, getSampleRate, getLength, getDuration, getNumberOfChannels, AudioBuffer(..), gTypeAudioBuffer)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getChannelData\"]($2); })"
-        js_getChannelData :: AudioBuffer -> Word -> IO Float32Array
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
-getChannelData ::
-               (MonadIO m) => AudioBuffer -> Word -> m Float32Array
-getChannelData self channelIndex
-  = liftIO (js_getChannelData self channelIndex)
+foreign import javascript safe "(($1) => { return new globalThis[\"AudioBuffer\"]($1); })"
+        js_newAudioBuffer :: AudioBufferOptions -> IO AudioBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/AudioBuffer MDN AudioBuffer. documentation>
+newAudioBuffer :: (MonadDOM m) => AudioBufferOptions -> m AudioBuffer
+newAudioBuffer options = liftDOM ((js_newAudioBuffer (options)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
-getChannelData_ :: (MonadIO m) => AudioBuffer -> Word -> m ()
-getChannelData_ self channelIndex
-  = liftIO (void (js_getChannelData self channelIndex))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        AudioBuffer -> IO Int
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"copyFromChannel\"]($2, $3, $4); })"
+        js_copyFromChannel :: AudioBuffer -> Float32Array -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/copyFromChannel MDN AudioBuffer.copyFromChannel documentation>
+copyFromChannel :: (MonadDOM m, IsFloat32Array destination) => AudioBuffer -> destination -> Word -> Maybe Word -> m ()
+copyFromChannel self destination channelNumber bufferOffset = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bufferOffset) >>= \a4' -> js_copyFromChannel (self) (Types.toFloat32Array destination) (channelNumber) a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.length Mozilla AudioBuffer.length documentation> 
-getLength :: (MonadIO m) => AudioBuffer -> m Int
-getLength self = liftIO (js_getLength self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
-        :: AudioBuffer -> IO Float
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"copyToChannel\"]($2, $3, $4); })"
+        js_copyToChannel :: AudioBuffer -> Float32Array -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/copyToChannel MDN AudioBuffer.copyToChannel documentation>
+copyToChannel :: (MonadDOM m, IsFloat32Array source) => AudioBuffer -> source -> Word -> Maybe Word -> m ()
+copyToChannel self source channelNumber bufferOffset = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bufferOffset) >>= \a4' -> js_copyToChannel (self) (Types.toFloat32Array source) (channelNumber) a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.duration Mozilla AudioBuffer.duration documentation> 
-getDuration :: (MonadIO m) => AudioBuffer -> m Float
-getDuration self = liftIO (js_getDuration self)
- 
+foreign import javascript safe "(($1, $2) => { return $1[\"getChannelData\"]($2); })"
+        js_getChannelData :: AudioBuffer -> Word -> IO Float32Array
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/getChannelData MDN AudioBuffer.getChannelData documentation>
+getChannelData :: (MonadDOM m) => AudioBuffer -> Word -> m Float32Array
+getChannelData self channel = liftDOM ((js_getChannelData (self) (channel)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/getChannelData MDN AudioBuffer.getChannelData documentation>
+getChannelData_ :: (MonadDOM m) => AudioBuffer -> Word -> m ()
+getChannelData_ self channel = liftDOM (void ((js_getChannelData (self) (channel))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
         js_getSampleRate :: AudioBuffer -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/sampleRate MDN AudioBuffer.sampleRate documentation>
+getSampleRate :: (MonadDOM m) => AudioBuffer -> m Float
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.sampleRate Mozilla AudioBuffer.sampleRate documentation> 
-getSampleRate :: (MonadIO m) => AudioBuffer -> m Float
-getSampleRate self = liftIO (js_getSampleRate self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"gain\"] = $2; })" js_setGain ::
-        AudioBuffer -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: AudioBuffer -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/length MDN AudioBuffer.length documentation>
+getLength :: (MonadDOM m) => AudioBuffer -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
-setGain :: (MonadIO m) => AudioBuffer -> Float -> m ()
-setGain self val = liftIO (js_setGain self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
-        AudioBuffer -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: AudioBuffer -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/duration MDN AudioBuffer.duration documentation>
+getDuration :: (MonadDOM m) => AudioBuffer -> m Double
+getDuration self = liftDOM ((js_getDuration (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
-getGain :: (MonadIO m) => AudioBuffer -> m Float
-getGain self = liftIO (js_getGain self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
         js_getNumberOfChannels :: AudioBuffer -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.numberOfChannels Mozilla AudioBuffer.numberOfChannels documentation> 
-getNumberOfChannels :: (MonadIO m) => AudioBuffer -> m Word
-getNumberOfChannels self = liftIO (js_getNumberOfChannels self)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/numberOfChannels MDN AudioBuffer.numberOfChannels documentation>
+getNumberOfChannels :: (MonadDOM m) => AudioBuffer -> m Word
+getNumberOfChannels self = liftDOM ((js_getNumberOfChannels (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.AudioBufferCallback
-       (newAudioBufferCallback, newAudioBufferCallbackSync,
-        newAudioBufferCallbackAsync, AudioBufferCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
-newAudioBufferCallback ::
-                       (MonadIO m) => (AudioBuffer -> IO ()) -> m AudioBufferCallback
-newAudioBufferCallback callback
-  = liftIO
-      (AudioBufferCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ audioBuffer ->
-              fromJSValUnchecked audioBuffer >>=
-                \ audioBuffer' -> callback audioBuffer'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
-newAudioBufferCallbackSync ::
-                           (MonadIO m) => (AudioBuffer -> IO ()) -> m AudioBufferCallback
-newAudioBufferCallbackSync callback
-  = liftIO
-      (AudioBufferCallback <$>
-         syncCallback1 ContinueAsync
-           (\ audioBuffer ->
-              fromJSValUnchecked audioBuffer >>=
-                \ audioBuffer' -> callback audioBuffer'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
-newAudioBufferCallbackAsync ::
-                            (MonadIO m) => (AudioBuffer -> IO ()) -> m AudioBufferCallback
-newAudioBufferCallbackAsync callback
-  = liftIO
-      (AudioBufferCallback <$>
-         asyncCallback1
-           (\ audioBuffer ->
-              fromJSValUnchecked audioBuffer >>=
-                \ audioBuffer' -> callback audioBuffer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferOptions.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioBufferOptions
+       (js_newAudioBufferOptions, js_setNumberOfChannels, js_getNumberOfChannels, js_setLength, js_getLength, js_setSampleRate, js_getSampleRate, newAudioBufferOptions, setNumberOfChannels, getNumberOfChannels, getNumberOfChannelsUnsafe, getNumberOfChannelsUnchecked, setLength, getLength, setSampleRate, getSampleRate, AudioBufferOptions(..), gTypeAudioBufferOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"length\": $1, \"sampleRate\": $2}); })"
+        js_newAudioBufferOptions :: Word -> Float -> IO AudioBufferOptions
+-- | <https://webaudio.github.io/web-audio-api/#AudioBufferOptions AudioBufferOptions specification>
+newAudioBufferOptions :: (MonadDOM m) => Word -> Float -> m AudioBufferOptions
+newAudioBufferOptions length sampleRate = liftDOM ((js_newAudioBufferOptions (length) (sampleRate)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfChannels\"] = $2; })"
+        js_setNumberOfChannels :: AudioBufferOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioBufferOptions -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void ((js_setNumberOfChannels (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
+        js_getNumberOfChannels :: AudioBufferOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioBufferOptions -> m (Maybe Word)
+getNumberOfChannels self = liftDOM (((js_getNumberOfChannels (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
+getNumberOfChannelsUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferOptions -> m Word
+getNumberOfChannelsUnsafe self = liftDOM ((((js_getNumberOfChannels (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
+getNumberOfChannelsUnchecked :: (MonadDOM m) => AudioBufferOptions -> m Word
+getNumberOfChannelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getNumberOfChannels (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })"
+        js_setLength :: AudioBufferOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-length AudioBufferOptions.length specification>
+setLength :: (MonadDOM m) => AudioBufferOptions -> Word -> m ()
+setLength self val = liftDOM (void ((js_setLength (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: AudioBufferOptions -> IO Word
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-length AudioBufferOptions.length specification>
+getLength :: (MonadDOM m) => AudioBufferOptions -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: AudioBufferOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-samplerate AudioBufferOptions.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioBufferOptions -> Float -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioBufferOptions -> IO Float
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-samplerate AudioBufferOptions.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioBufferOptions -> m Float
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
@@ -1,164 +1,97 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
-       (js_start, start, js_stop, stop, pattern UNSCHEDULED_STATE,
-        pattern SCHEDULED_STATE, pattern PLAYING_STATE,
-        pattern FINISHED_STATE, js_setBuffer, setBuffer, js_getBuffer,
-        getBuffer, getBufferUnsafe, getBufferUnchecked,
-        js_getPlaybackState, getPlaybackState, js_getGain, getGain,
-        js_getPlaybackRate, getPlaybackRate, js_setLoop, setLoop,
-        js_getLoop, getLoop, js_setLoopStart, setLoopStart,
-        js_getLoopStart, getLoopStart, js_setLoopEnd, setLoopEnd,
-        js_getLoopEnd, getLoopEnd, ended, AudioBufferSourceNode(..),
-        gTypeAudioBufferSourceNode)
+       (js_newAudioBufferSourceNode, js_start, js_setBuffer, js_getBuffer, js_getPlaybackRate, js_getDetune, js_setLoop, js_getLoop, js_setLoopStart, js_getLoopStart, js_setLoopEnd, js_getLoopEnd, newAudioBufferSourceNode, start, setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked, getPlaybackRate, getDetune, setLoop, getLoop, setLoopStart, getLoopStart, setLoopEnd, getLoopEnd, AudioBufferSourceNode(..), gTypeAudioBufferSourceNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"start\"]($2, $3, $4); })" js_start
-        ::
-        AudioBufferSourceNode ->
-          Optional Double -> Optional Double -> Optional Double -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.start Mozilla AudioBufferSourceNode.start documentation> 
-start ::
-      (MonadIO m) =>
-        AudioBufferSourceNode ->
-          Maybe Double -> Maybe Double -> Maybe Double -> m ()
-start self when grainOffset grainDuration
-  = liftIO
-      (js_start self (maybeToOptional when) (maybeToOptional grainOffset)
-         (maybeToOptional grainDuration))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"stop\"]($2); })" js_stop ::
-        AudioBufferSourceNode -> Optional Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.stop Mozilla AudioBufferSourceNode.stop documentation> 
-stop ::
-     (MonadIO m) => AudioBufferSourceNode -> Maybe Double -> m ()
-stop self when = liftIO (js_stop self (maybeToOptional when))
-pattern UNSCHEDULED_STATE = 0
-pattern SCHEDULED_STATE = 1
-pattern PLAYING_STATE = 2
-pattern FINISHED_STATE = 3
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"buffer\"] = $2; })"
-        js_setBuffer ::
-        AudioBufferSourceNode -> Optional AudioBuffer -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"AudioBufferSourceNode\"]($1, $2); })"
+        js_newAudioBufferSourceNode :: BaseAudioContext -> JSVal -> IO AudioBufferSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/AudioBufferSourceNode MDN AudioBufferSourceNode. documentation>
+newAudioBufferSourceNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe AudioBufferSourceOptions -> m AudioBufferSourceNode
+newAudioBufferSourceNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newAudioBufferSourceNode (Types.toBaseAudioContext context) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-setBuffer ::
-          (MonadIO m) => AudioBufferSourceNode -> Maybe AudioBuffer -> m ()
-setBuffer self val
-  = liftIO (js_setBuffer self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })" js_getBuffer ::
-        AudioBufferSourceNode -> IO (Nullable AudioBuffer)
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"start\"]($2, $3, $4); })"
+        js_start :: AudioBufferSourceNode -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/start MDN AudioBufferSourceNode.start documentation>
+start :: (MonadDOM m) => AudioBufferSourceNode -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+start self when offset duration = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal when) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal offset) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal duration) >>= \a4' -> js_start (self) a2' a3' a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-getBuffer ::
-          (MonadIO m) => AudioBufferSourceNode -> m (Maybe AudioBuffer)
-getBuffer self = liftIO (nullableToMaybe <$> (js_getBuffer self))
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer :: AudioBufferSourceNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
+setBuffer :: (MonadDOM m) => AudioBufferSourceNode -> Maybe AudioBuffer -> m ()
+setBuffer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBuffer (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-getBufferUnsafe ::
-                (MonadIO m, HasCallStack) => AudioBufferSourceNode -> m AudioBuffer
-getBufferUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getBuffer self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })"
+        js_getBuffer :: AudioBufferSourceNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
+getBuffer :: (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM (((js_getBuffer (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-getBufferUnchecked ::
-                   (MonadIO m) => AudioBufferSourceNode -> m AudioBuffer
-getBufferUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getBuffer self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"playbackState\"]; })"
-        js_getPlaybackState :: AudioBufferSourceNode -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceNode -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((js_getBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackState Mozilla AudioBufferSourceNode.playbackState documentation> 
-getPlaybackState :: (MonadIO m) => AudioBufferSourceNode -> m Word
-getPlaybackState self = liftIO (js_getPlaybackState self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
-        AudioBufferSourceNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
+getBufferUnchecked :: (MonadDOM m) => AudioBufferSourceNode -> m AudioBuffer
+getBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getBuffer (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.gain Mozilla AudioBufferSourceNode.gain documentation> 
-getGain :: (MonadIO m) => AudioBufferSourceNode -> m AudioParam
-getGain self = liftIO (js_getGain self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
         js_getPlaybackRate :: AudioBufferSourceNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/playbackRate MDN AudioBufferSourceNode.playbackRate documentation>
+getPlaybackRate :: (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
+getPlaybackRate self = liftDOM ((js_getPlaybackRate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackRate Mozilla AudioBufferSourceNode.playbackRate documentation> 
-getPlaybackRate ::
-                (MonadIO m) => AudioBufferSourceNode -> m AudioParam
-getPlaybackRate self = liftIO (js_getPlaybackRate self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"loop\"] = $2; })" js_setLoop ::
-        AudioBufferSourceNode -> Bool -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })"
+        js_getDetune :: AudioBufferSourceNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/detune MDN AudioBufferSourceNode.detune documentation>
+getDetune :: (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
+getDetune self = liftDOM ((js_getDetune (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
-setLoop :: (MonadIO m) => AudioBufferSourceNode -> Bool -> m ()
-setLoop self val = liftIO (js_setLoop self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"loop\"] ? 1 : 0); })"
+foreign import javascript safe "(($1, $2) => { $1[\"loop\"] = $2; })"
+        js_setLoop :: AudioBufferSourceNode -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loop MDN AudioBufferSourceNode.loop documentation>
+setLoop :: (MonadDOM m) => AudioBufferSourceNode -> Bool -> m ()
+setLoop self val = liftDOM (void ((js_setLoop (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loop\"]; })"
         js_getLoop :: AudioBufferSourceNode -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loop MDN AudioBufferSourceNode.loop documentation>
+getLoop :: (MonadDOM m) => AudioBufferSourceNode -> m Bool
+getLoop self = liftDOM ((js_getLoop (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
-getLoop :: (MonadIO m) => AudioBufferSourceNode -> m Bool
-getLoop self = liftIO (js_getLoop self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"loopStart\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"loopStart\"] = $2; })"
         js_setLoopStart :: AudioBufferSourceNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopStart MDN AudioBufferSourceNode.loopStart documentation>
+setLoopStart :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+setLoopStart self val = liftDOM (void ((js_setLoopStart (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
-setLoopStart ::
-             (MonadIO m) => AudioBufferSourceNode -> Double -> m ()
-setLoopStart self val = liftIO (js_setLoopStart self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"loopStart\"]; })"
         js_getLoopStart :: AudioBufferSourceNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopStart MDN AudioBufferSourceNode.loopStart documentation>
+getLoopStart :: (MonadDOM m) => AudioBufferSourceNode -> m Double
+getLoopStart self = liftDOM ((js_getLoopStart (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
-getLoopStart :: (MonadIO m) => AudioBufferSourceNode -> m Double
-getLoopStart self = liftIO (js_getLoopStart self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"loopEnd\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"loopEnd\"] = $2; })"
         js_setLoopEnd :: AudioBufferSourceNode -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
-setLoopEnd ::
-           (MonadIO m) => AudioBufferSourceNode -> Double -> m ()
-setLoopEnd self val = liftIO (js_setLoopEnd self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"loopEnd\"]; })" js_getLoopEnd ::
-        AudioBufferSourceNode -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
-getLoopEnd :: (MonadIO m) => AudioBufferSourceNode -> m Double
-getLoopEnd self = liftIO (js_getLoopEnd self)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopEnd MDN AudioBufferSourceNode.loopEnd documentation>
+setLoopEnd :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+setLoopEnd self val = liftDOM (void ((js_setLoopEnd (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.onended Mozilla AudioBufferSourceNode.onended documentation> 
-ended :: EventName AudioBufferSourceNode Event
-ended = unsafeEventName (toJSString "ended")
+foreign import javascript unsafe "(($1) => { return $1[\"loopEnd\"]; })"
+        js_getLoopEnd :: AudioBufferSourceNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopEnd MDN AudioBufferSourceNode.loopEnd documentation>
+getLoopEnd :: (MonadDOM m) => AudioBufferSourceNode -> m Double
+getLoopEnd self = liftDOM ((js_getLoopEnd (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceOptions.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioBufferSourceOptions
+       (js_newAudioBufferSourceOptions, js_setBuffer, js_getBuffer, js_setDetune, js_getDetune, js_setLoop, js_getLoop, js_setLoopEnd, js_getLoopEnd, js_setLoopStart, js_getLoopStart, js_setPlaybackRate, js_getPlaybackRate, newAudioBufferSourceOptions, setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked, setDetune, getDetune, getDetuneUnsafe, getDetuneUnchecked, setLoop, getLoop, getLoopUnsafe, getLoopUnchecked, setLoopEnd, getLoopEnd, getLoopEndUnsafe, getLoopEndUnchecked, setLoopStart, getLoopStart, getLoopStartUnsafe, getLoopStartUnchecked, setPlaybackRate, getPlaybackRate, getPlaybackRateUnsafe, getPlaybackRateUnchecked, AudioBufferSourceOptions(..), gTypeAudioBufferSourceOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAudioBufferSourceOptions :: IO AudioBufferSourceOptions
+-- | <https://webaudio.github.io/web-audio-api/#AudioBufferSourceOptions AudioBufferSourceOptions specification>
+newAudioBufferSourceOptions :: (MonadDOM m) => m AudioBufferSourceOptions
+newAudioBufferSourceOptions = liftDOM ((js_newAudioBufferSourceOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer :: AudioBufferSourceOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-buffer AudioBufferSourceOptions.buffer specification>
+setBuffer :: (MonadDOM m) => AudioBufferSourceOptions -> Maybe AudioBuffer -> m ()
+setBuffer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBuffer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })"
+        js_getBuffer :: AudioBufferSourceOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-buffer AudioBufferSourceOptions.buffer specification>
+getBuffer :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM (((js_getBuffer (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-buffer AudioBufferSourceOptions.buffer specification>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((js_getBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-buffer AudioBufferSourceOptions.buffer specification>
+getBufferUnchecked :: (MonadDOM m) => AudioBufferSourceOptions -> m AudioBuffer
+getBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getBuffer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"detune\"] = $2; })"
+        js_setDetune :: AudioBufferSourceOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-detune AudioBufferSourceOptions.detune specification>
+setDetune :: (MonadDOM m) => AudioBufferSourceOptions -> Float -> m ()
+setDetune self val = liftDOM (void ((js_setDetune (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })"
+        js_getDetune :: AudioBufferSourceOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-detune AudioBufferSourceOptions.detune specification>
+getDetune :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Float)
+getDetune self = liftDOM (((js_getDetune (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-detune AudioBufferSourceOptions.detune specification>
+getDetuneUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Float
+getDetuneUnsafe self = liftDOM ((((js_getDetune (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-detune AudioBufferSourceOptions.detune specification>
+getDetuneUnchecked :: (MonadDOM m) => AudioBufferSourceOptions -> m Float
+getDetuneUnchecked self = liftDOM ((pFromJSVal <$> (js_getDetune (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"loop\"] = $2; })"
+        js_setLoop :: AudioBufferSourceOptions -> Bool -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loop AudioBufferSourceOptions.loop specification>
+setLoop :: (MonadDOM m) => AudioBufferSourceOptions -> Bool -> m ()
+setLoop self val = liftDOM (void ((js_setLoop (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loop\"]; })"
+        js_getLoop :: AudioBufferSourceOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loop AudioBufferSourceOptions.loop specification>
+getLoop :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Bool)
+getLoop self = liftDOM (((js_getLoop (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loop AudioBufferSourceOptions.loop specification>
+getLoopUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Bool
+getLoopUnsafe self = liftDOM ((((js_getLoop (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loop AudioBufferSourceOptions.loop specification>
+getLoopUnchecked :: (MonadDOM m) => AudioBufferSourceOptions -> m Bool
+getLoopUnchecked self = liftDOM ((pFromJSVal <$> (js_getLoop (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"loopEnd\"] = $2; })"
+        js_setLoopEnd :: AudioBufferSourceOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopend AudioBufferSourceOptions.loopEnd specification>
+setLoopEnd :: (MonadDOM m) => AudioBufferSourceOptions -> Double -> m ()
+setLoopEnd self val = liftDOM (void ((js_setLoopEnd (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loopEnd\"]; })"
+        js_getLoopEnd :: AudioBufferSourceOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopend AudioBufferSourceOptions.loopEnd specification>
+getLoopEnd :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Double)
+getLoopEnd self = liftDOM (((js_getLoopEnd (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopend AudioBufferSourceOptions.loopEnd specification>
+getLoopEndUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Double
+getLoopEndUnsafe self = liftDOM ((((js_getLoopEnd (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopend AudioBufferSourceOptions.loopEnd specification>
+getLoopEndUnchecked :: (MonadDOM m) => AudioBufferSourceOptions -> m Double
+getLoopEndUnchecked self = liftDOM ((pFromJSVal <$> (js_getLoopEnd (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"loopStart\"] = $2; })"
+        js_setLoopStart :: AudioBufferSourceOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopstart AudioBufferSourceOptions.loopStart specification>
+setLoopStart :: (MonadDOM m) => AudioBufferSourceOptions -> Double -> m ()
+setLoopStart self val = liftDOM (void ((js_setLoopStart (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loopStart\"]; })"
+        js_getLoopStart :: AudioBufferSourceOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopstart AudioBufferSourceOptions.loopStart specification>
+getLoopStart :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Double)
+getLoopStart self = liftDOM (((js_getLoopStart (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopstart AudioBufferSourceOptions.loopStart specification>
+getLoopStartUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Double
+getLoopStartUnsafe self = liftDOM ((((js_getLoopStart (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopstart AudioBufferSourceOptions.loopStart specification>
+getLoopStartUnchecked :: (MonadDOM m) => AudioBufferSourceOptions -> m Double
+getLoopStartUnchecked self = liftDOM ((pFromJSVal <$> (js_getLoopStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: AudioBufferSourceOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-playbackrate AudioBufferSourceOptions.playbackRate specification>
+setPlaybackRate :: (MonadDOM m) => AudioBufferSourceOptions -> Float -> m ()
+setPlaybackRate self val = liftDOM (void ((js_setPlaybackRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: AudioBufferSourceOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-playbackrate AudioBufferSourceOptions.playbackRate specification>
+getPlaybackRate :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Float)
+getPlaybackRate self = liftDOM (((js_getPlaybackRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-playbackrate AudioBufferSourceOptions.playbackRate specification>
+getPlaybackRateUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Float
+getPlaybackRateUnsafe self = liftDOM ((((js_getPlaybackRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-playbackrate AudioBufferSourceOptions.playbackRate specification>
+getPlaybackRateUnchecked :: (MonadDOM m) => AudioBufferSourceOptions -> m Float
+getPlaybackRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getPlaybackRate (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioConfiguration.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioConfiguration
+       (js_newAudioConfiguration, js_setContentType, js_getContentType, js_setChannels, js_getChannels, js_setBitrate, js_getBitrate, js_setSamplerate, js_getSamplerate, js_setSpatialRendering, js_getSpatialRendering, newAudioConfiguration, setContentType, getContentType, setChannels, getChannels, getChannelsUnsafe, getChannelsUnchecked, setBitrate, getBitrate, getBitrateUnsafe, getBitrateUnchecked, setSamplerate, getSamplerate, getSamplerateUnsafe, getSamplerateUnchecked, setSpatialRendering, getSpatialRendering, getSpatialRenderingUnsafe, getSpatialRenderingUnchecked, AudioConfiguration(..), gTypeAudioConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"contentType\": $1}); })"
+        js_newAudioConfiguration :: JSString -> IO AudioConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dictdef-audioconfiguration AudioConfiguration specification>
+newAudioConfiguration :: (MonadDOM m, ToJSString contentType) => contentType -> m AudioConfiguration
+newAudioConfiguration contentType = liftDOM ((js_newAudioConfiguration (toJSString contentType)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contentType\"] = $2; })"
+        js_setContentType :: AudioConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-contenttype AudioConfiguration.contentType specification>
+setContentType :: (MonadDOM m, ToJSString val) => AudioConfiguration -> val -> m ()
+setContentType self val = liftDOM (void ((js_setContentType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentType\"]; })"
+        js_getContentType :: AudioConfiguration -> IO JSString
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-contenttype AudioConfiguration.contentType specification>
+getContentType :: (MonadDOM m, FromJSString result) => AudioConfiguration -> m result
+getContentType self = liftDOM ((fromJSString <$> (js_getContentType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channels\"] = $2; })"
+        js_setChannels :: AudioConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-channels AudioConfiguration.channels specification>
+setChannels :: (MonadDOM m, ToJSString val) => AudioConfiguration -> val -> m ()
+setChannels self val = liftDOM (void ((js_setChannels (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channels\"]; })"
+        js_getChannels :: AudioConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-channels AudioConfiguration.channels specification>
+getChannels :: (MonadDOM m, FromJSString result) => AudioConfiguration -> m (Maybe result)
+getChannels self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getChannels (self))))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-channels AudioConfiguration.channels specification>
+getChannelsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AudioConfiguration -> m result
+getChannelsUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getChannels (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-channels AudioConfiguration.channels specification>
+getChannelsUnchecked :: (MonadDOM m, FromJSString result) => AudioConfiguration -> m result
+getChannelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannels (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bitrate\"] = $2; })"
+        js_setBitrate :: AudioConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-bitrate AudioConfiguration.bitrate specification>
+setBitrate :: (MonadDOM m) => AudioConfiguration -> Word53 -> m ()
+setBitrate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBitrate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bitrate\"]; })"
+        js_getBitrate :: AudioConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-bitrate AudioConfiguration.bitrate specification>
+getBitrate :: (MonadDOM m) => AudioConfiguration -> m (Maybe Word53)
+getBitrate self = liftDOM (((js_getBitrate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-bitrate AudioConfiguration.bitrate specification>
+getBitrateUnsafe :: (MonadDOM m, HasCallStack) => AudioConfiguration -> m Word53
+getBitrateUnsafe self = liftDOM ((((js_getBitrate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-bitrate AudioConfiguration.bitrate specification>
+getBitrateUnchecked :: (MonadDOM m) => AudioConfiguration -> m Word53
+getBitrateUnchecked self = liftDOM ((pFromJSVal <$> (js_getBitrate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"samplerate\"] = $2; })"
+        js_setSamplerate :: AudioConfiguration -> Word -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-samplerate AudioConfiguration.samplerate specification>
+setSamplerate :: (MonadDOM m) => AudioConfiguration -> Word -> m ()
+setSamplerate self val = liftDOM (void ((js_setSamplerate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"samplerate\"]; })"
+        js_getSamplerate :: AudioConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-samplerate AudioConfiguration.samplerate specification>
+getSamplerate :: (MonadDOM m) => AudioConfiguration -> m (Maybe Word)
+getSamplerate self = liftDOM (((js_getSamplerate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-samplerate AudioConfiguration.samplerate specification>
+getSamplerateUnsafe :: (MonadDOM m, HasCallStack) => AudioConfiguration -> m Word
+getSamplerateUnsafe self = liftDOM ((((js_getSamplerate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-samplerate AudioConfiguration.samplerate specification>
+getSamplerateUnchecked :: (MonadDOM m) => AudioConfiguration -> m Word
+getSamplerateUnchecked self = liftDOM ((pFromJSVal <$> (js_getSamplerate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"spatialRendering\"] = $2; })"
+        js_setSpatialRendering :: AudioConfiguration -> Bool -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-spatialrendering AudioConfiguration.spatialRendering specification>
+setSpatialRendering :: (MonadDOM m) => AudioConfiguration -> Bool -> m ()
+setSpatialRendering self val = liftDOM (void ((js_setSpatialRendering (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"spatialRendering\"]; })"
+        js_getSpatialRendering :: AudioConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-spatialrendering AudioConfiguration.spatialRendering specification>
+getSpatialRendering :: (MonadDOM m) => AudioConfiguration -> m (Maybe Bool)
+getSpatialRendering self = liftDOM (((js_getSpatialRendering (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-spatialrendering AudioConfiguration.spatialRendering specification>
+getSpatialRenderingUnsafe :: (MonadDOM m, HasCallStack) => AudioConfiguration -> m Bool
+getSpatialRenderingUnsafe self = liftDOM ((((js_getSpatialRendering (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-spatialrendering AudioConfiguration.spatialRendering specification>
+getSpatialRenderingUnchecked :: (MonadDOM m) => AudioConfiguration -> m Bool
+getSpatialRenderingUnchecked self = liftDOM ((pFromJSVal <$> (js_getSpatialRendering (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
@@ -1,552 +1,99 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioContext
-       (js_newAudioContext, newAudioContext, js_suspend, suspend,
-        js_resume, resume, js_close, close, js_createBuffer, createBuffer,
-        createBuffer_, js_createBufferFromArrayBuffer,
-        createBufferFromArrayBuffer, createBufferFromArrayBuffer_,
-        js_decodeAudioData, decodeAudioData, js_createBufferSource,
-        createBufferSource, createBufferSource_,
-        js_createMediaElementSource, createMediaElementSource,
-        createMediaElementSource_, js_createMediaStreamSource,
-        createMediaStreamSource, createMediaStreamSource_,
-        js_createMediaStreamDestination, createMediaStreamDestination,
-        createMediaStreamDestination_, js_createGain, createGain,
-        createGain_, js_createDelay, createDelay, createDelay_,
-        js_createBiquadFilter, createBiquadFilter, createBiquadFilter_,
-        js_createWaveShaper, createWaveShaper, createWaveShaper_,
-        js_createPanner, createPanner, createPanner_, js_createConvolver,
-        createConvolver, createConvolver_, js_createDynamicsCompressor,
-        createDynamicsCompressor, createDynamicsCompressor_,
-        js_createAnalyser, createAnalyser, createAnalyser_,
-        js_createScriptProcessor, createScriptProcessor,
-        createScriptProcessor_, js_createOscillator, createOscillator,
-        createOscillator_, js_createPeriodicWave, createPeriodicWave,
-        createPeriodicWave_, js_createChannelSplitter,
-        createChannelSplitter, createChannelSplitter_,
-        js_createChannelMerger, createChannelMerger, createChannelMerger_,
-        js_startRendering, startRendering, js_getDestination,
-        getDestination, js_getCurrentTime, getCurrentTime,
-        js_getSampleRate, getSampleRate, js_getListener, getListener,
-        js_getState, getState, statechange, js_getActiveSourceCount,
-        getActiveSourceCount, complete, AudioContext(..),
-        gTypeAudioContext, IsAudioContext, toAudioContext)
+       (js_newAudioContext, js_newAudioContext', js_close, js_createMediaElementSource, js_createMediaStreamDestination, js_createMediaStreamSource, js_getOutputTimestamp, js_resume, js_suspend, js_getBaseLatency, js_getOutputLatency, newAudioContext, newAudioContext', close, createMediaElementSource, createMediaElementSource_, createMediaStreamDestination, createMediaStreamDestination_, createMediaStreamSource, createMediaStreamSource_, getOutputTimestamp, getOutputTimestamp_, resume, suspend, getBaseLatency, getOutputLatency, AudioContext(..), gTypeAudioContext)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new (window[\"AudioContext\"]\n||\nwindow[\"webkitAudioContext\"])(); })"
-        js_newAudioContext :: IO AudioContext
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
-newAudioContext :: (MonadIO m) => m AudioContext
-newAudioContext = liftIO (js_newAudioContext)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"suspend\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_suspend :: AudioContext -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.suspend Mozilla AudioContext.suspend documentation> 
-suspend :: (MonadIO m, IsAudioContext self) => self -> m ()
-suspend self
-  = liftIO
-      ((js_suspend (toAudioContext self)) >>= maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"resume\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_resume :: AudioContext -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.resume Mozilla AudioContext.resume documentation> 
-resume :: (MonadIO m, IsAudioContext self) => self -> m ()
-resume self
-  = liftIO
-      ((js_resume (toAudioContext self)) >>= maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_close :: AudioContext -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.close Mozilla AudioContext.close documentation> 
-close :: (MonadIO m, IsAudioContext self) => self -> m ()
-close self
-  = liftIO
-      ((js_close (toAudioContext self)) >>= maybeThrowPromiseRejected)
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createBuffer\"]($2, $3, $4); })"
-        js_createBuffer ::
-        AudioContext -> Word -> Word -> Float -> IO AudioBuffer
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBuffer ::
-             (MonadIO m, IsAudioContext self) =>
-               self -> Word -> Word -> Float -> m AudioBuffer
-createBuffer self numberOfChannels numberOfFrames sampleRate
-  = liftIO
-      (js_createBuffer (toAudioContext self) numberOfChannels
-         numberOfFrames
-         sampleRate)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBuffer_ ::
-              (MonadIO m, IsAudioContext self) =>
-                self -> Word -> Word -> Float -> m ()
-createBuffer_ self numberOfChannels numberOfFrames sampleRate
-  = liftIO
-      (void
-         (js_createBuffer (toAudioContext self) numberOfChannels
-            numberOfFrames
-            sampleRate))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createBuffer\"]($2, $3); })"
-        js_createBufferFromArrayBuffer ::
-        AudioContext -> ArrayBuffer -> Bool -> IO AudioBuffer
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBufferFromArrayBuffer ::
-                            (MonadIO m, IsAudioContext self, IsArrayBuffer buffer) =>
-                              self -> buffer -> Bool -> m AudioBuffer
-createBufferFromArrayBuffer self buffer mixToMono
-  = liftIO
-      (js_createBufferFromArrayBuffer (toAudioContext self)
-         (toArrayBuffer buffer)
-         mixToMono)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBufferFromArrayBuffer_ ::
-                             (MonadIO m, IsAudioContext self, IsArrayBuffer buffer) =>
-                               self -> buffer -> Bool -> m ()
-createBufferFromArrayBuffer_ self buffer mixToMono
-  = liftIO
-      (void
-         (js_createBufferFromArrayBuffer (toAudioContext self)
-            (toArrayBuffer buffer)
-            mixToMono))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"decodeAudioData\"]($2, $3,\n$4); })" js_decodeAudioData ::
-        AudioContext ->
-          ArrayBuffer ->
-            Optional AudioBufferCallback ->
-              Optional AudioBufferCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation> 
-decodeAudioData ::
-                (MonadIO m, IsAudioContext self, IsArrayBuffer audioData) =>
-                  self ->
-                    audioData ->
-                      Maybe AudioBufferCallback -> Maybe AudioBufferCallback -> m ()
-decodeAudioData self audioData successCallback errorCallback
-  = liftIO
-      (js_decodeAudioData (toAudioContext self) (toArrayBuffer audioData)
-         (maybeToOptional successCallback)
-         (maybeToOptional errorCallback))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createBufferSource\"](); })"
-        js_createBufferSource :: AudioContext -> IO AudioBufferSourceNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
-createBufferSource ::
-                   (MonadIO m, IsAudioContext self) => self -> m AudioBufferSourceNode
-createBufferSource self
-  = liftIO (js_createBufferSource (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
-createBufferSource_ ::
-                    (MonadIO m, IsAudioContext self) => self -> m ()
-createBufferSource_ self
-  = liftIO (void (js_createBufferSource (toAudioContext self)))
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"createMediaElementSource\"]($2); })" js_createMediaElementSource
-        ::
-        AudioContext -> HTMLMediaElement -> IO MediaElementAudioSourceNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
-createMediaElementSource ::
-                         (MonadIO m, IsAudioContext self,
-                          IsHTMLMediaElement mediaElement) =>
-                           self -> mediaElement -> m MediaElementAudioSourceNode
-createMediaElementSource self mediaElement
-  = liftIO
-      (js_createMediaElementSource (toAudioContext self)
-         (toHTMLMediaElement mediaElement))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
-createMediaElementSource_ ::
-                          (MonadIO m, IsAudioContext self,
-                           IsHTMLMediaElement mediaElement) =>
-                            self -> mediaElement -> m ()
-createMediaElementSource_ self mediaElement
-  = liftIO
-      (void
-         (js_createMediaElementSource (toAudioContext self)
-            (toHTMLMediaElement mediaElement)))
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"createMediaStreamSource\"]($2); })" js_createMediaStreamSource ::
-        AudioContext -> MediaStream -> IO MediaStreamAudioSourceNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
-createMediaStreamSource ::
-                        (MonadIO m, IsAudioContext self) =>
-                          self -> MediaStream -> m MediaStreamAudioSourceNode
-createMediaStreamSource self mediaStream
-  = liftIO
-      (js_createMediaStreamSource (toAudioContext self) mediaStream)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
-createMediaStreamSource_ ::
-                         (MonadIO m, IsAudioContext self) => self -> MediaStream -> m ()
-createMediaStreamSource_ self mediaStream
-  = liftIO
-      (void
-         (js_createMediaStreamSource (toAudioContext self) mediaStream))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"createMediaStreamDestination\"](); })"
-        js_createMediaStreamDestination ::
-        AudioContext -> IO MediaStreamAudioDestinationNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
-createMediaStreamDestination ::
-                             (MonadIO m, IsAudioContext self) =>
-                               self -> m MediaStreamAudioDestinationNode
-createMediaStreamDestination self
-  = liftIO (js_createMediaStreamDestination (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
-createMediaStreamDestination_ ::
-                              (MonadIO m, IsAudioContext self) => self -> m ()
-createMediaStreamDestination_ self
-  = liftIO
-      (void (js_createMediaStreamDestination (toAudioContext self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createGain\"](); })"
-        js_createGain :: AudioContext -> IO GainNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
-createGain ::
-           (MonadIO m, IsAudioContext self) => self -> m GainNode
-createGain self = liftIO (js_createGain (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
-createGain_ :: (MonadIO m, IsAudioContext self) => self -> m ()
-createGain_ self
-  = liftIO (void (js_createGain (toAudioContext self)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createDelay\"]($2); })"
-        js_createDelay :: AudioContext -> Optional Double -> IO DelayNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
-createDelay ::
-            (MonadIO m, IsAudioContext self) =>
-              self -> Maybe Double -> m DelayNode
-createDelay self maxDelayTime
-  = liftIO
-      (js_createDelay (toAudioContext self)
-         (maybeToOptional maxDelayTime))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
-createDelay_ ::
-             (MonadIO m, IsAudioContext self) => self -> Maybe Double -> m ()
-createDelay_ self maxDelayTime
-  = liftIO
-      (void
-         (js_createDelay (toAudioContext self)
-            (maybeToOptional maxDelayTime)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createBiquadFilter\"](); })"
-        js_createBiquadFilter :: AudioContext -> IO BiquadFilterNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
-createBiquadFilter ::
-                   (MonadIO m, IsAudioContext self) => self -> m BiquadFilterNode
-createBiquadFilter self
-  = liftIO (js_createBiquadFilter (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
-createBiquadFilter_ ::
-                    (MonadIO m, IsAudioContext self) => self -> m ()
-createBiquadFilter_ self
-  = liftIO (void (js_createBiquadFilter (toAudioContext self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createWaveShaper\"](); })"
-        js_createWaveShaper :: AudioContext -> IO WaveShaperNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
-createWaveShaper ::
-                 (MonadIO m, IsAudioContext self) => self -> m WaveShaperNode
-createWaveShaper self
-  = liftIO (js_createWaveShaper (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
-createWaveShaper_ ::
-                  (MonadIO m, IsAudioContext self) => self -> m ()
-createWaveShaper_ self
-  = liftIO (void (js_createWaveShaper (toAudioContext self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createPanner\"](); })"
-        js_createPanner :: AudioContext -> IO PannerNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
-createPanner ::
-             (MonadIO m, IsAudioContext self) => self -> m PannerNode
-createPanner self = liftIO (js_createPanner (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
-createPanner_ :: (MonadIO m, IsAudioContext self) => self -> m ()
-createPanner_ self
-  = liftIO (void (js_createPanner (toAudioContext self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createConvolver\"](); })"
-        js_createConvolver :: AudioContext -> IO ConvolverNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
-createConvolver ::
-                (MonadIO m, IsAudioContext self) => self -> m ConvolverNode
-createConvolver self
-  = liftIO (js_createConvolver (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
-createConvolver_ ::
-                 (MonadIO m, IsAudioContext self) => self -> m ()
-createConvolver_ self
-  = liftIO (void (js_createConvolver (toAudioContext self)))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"createDynamicsCompressor\"](); })" js_createDynamicsCompressor ::
-        AudioContext -> IO DynamicsCompressorNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
-createDynamicsCompressor ::
-                         (MonadIO m, IsAudioContext self) =>
-                           self -> m DynamicsCompressorNode
-createDynamicsCompressor self
-  = liftIO (js_createDynamicsCompressor (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
-createDynamicsCompressor_ ::
-                          (MonadIO m, IsAudioContext self) => self -> m ()
-createDynamicsCompressor_ self
-  = liftIO (void (js_createDynamicsCompressor (toAudioContext self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createAnalyser\"](); })"
-        js_createAnalyser :: AudioContext -> IO AnalyserNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
-createAnalyser ::
-               (MonadIO m, IsAudioContext self) => self -> m AnalyserNode
-createAnalyser self
-  = liftIO (js_createAnalyser (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
-createAnalyser_ :: (MonadIO m, IsAudioContext self) => self -> m ()
-createAnalyser_ self
-  = liftIO (void (js_createAnalyser (toAudioContext self)))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4) => { return $1[\"createScriptProcessor\"]($2,\n$3, $4); })"
-        js_createScriptProcessor ::
-        AudioContext ->
-          Word -> Optional Word -> Optional Word -> IO ScriptProcessorNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
-createScriptProcessor ::
-                      (MonadIO m, IsAudioContext self) =>
-                        self -> Word -> Maybe Word -> Maybe Word -> m ScriptProcessorNode
-createScriptProcessor self bufferSize numberOfInputChannels
-  numberOfOutputChannels
-  = liftIO
-      (js_createScriptProcessor (toAudioContext self) bufferSize
-         (maybeToOptional numberOfInputChannels)
-         (maybeToOptional numberOfOutputChannels))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
-createScriptProcessor_ ::
-                       (MonadIO m, IsAudioContext self) =>
-                         self -> Word -> Maybe Word -> Maybe Word -> m ()
-createScriptProcessor_ self bufferSize numberOfInputChannels
-  numberOfOutputChannels
-  = liftIO
-      (void
-         (js_createScriptProcessor (toAudioContext self) bufferSize
-            (maybeToOptional numberOfInputChannels)
-            (maybeToOptional numberOfOutputChannels)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createOscillator\"](); })"
-        js_createOscillator :: AudioContext -> IO OscillatorNode
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
-createOscillator ::
-                 (MonadIO m, IsAudioContext self) => self -> m OscillatorNode
-createOscillator self
-  = liftIO (js_createOscillator (toAudioContext self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
-createOscillator_ ::
-                  (MonadIO m, IsAudioContext self) => self -> m ()
-createOscillator_ self
-  = liftIO (void (js_createOscillator (toAudioContext self)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createPeriodicWave\"]($2, $3); })"
-        js_createPeriodicWave ::
-        AudioContext -> Float32Array -> Float32Array -> IO PeriodicWave
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
-createPeriodicWave ::
-                   (MonadIO m, IsAudioContext self, IsFloat32Array real,
-                    IsFloat32Array imag) =>
-                     self -> real -> imag -> m PeriodicWave
-createPeriodicWave self real imag
-  = liftIO
-      (js_createPeriodicWave (toAudioContext self) (toFloat32Array real)
-         (toFloat32Array imag))
+foreign import javascript safe "(() => { return new globalThis[\"AudioContext\"](); })"
+        js_newAudioContext :: IO AudioContext
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/AudioContext MDN AudioContext. documentation>
+newAudioContext :: (MonadDOM m) => m AudioContext
+newAudioContext = liftDOM ((js_newAudioContext))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
-createPeriodicWave_ ::
-                    (MonadIO m, IsAudioContext self, IsFloat32Array real,
-                     IsFloat32Array imag) =>
-                      self -> real -> imag -> m ()
-createPeriodicWave_ self real imag
-  = liftIO
-      (void
-         (js_createPeriodicWave (toAudioContext self) (toFloat32Array real)
-            (toFloat32Array imag)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createChannelSplitter\"]($2); })"
-        js_createChannelSplitter ::
-        AudioContext -> Optional Word -> IO ChannelSplitterNode
+foreign import javascript safe "(($1) => { return new globalThis[\"AudioContext\"]($1); })"
+        js_newAudioContext' :: JSVal -> IO AudioContext
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/AudioContext MDN AudioContext. documentation>
+newAudioContext' :: (MonadDOM m) => Maybe AudioContextOptions -> m AudioContext
+newAudioContext' contextOptions = liftDOM (((P.maybe (P.return jsUndefined) toJSVal contextOptions) >>= \a1' -> js_newAudioContext' a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
-createChannelSplitter ::
-                      (MonadIO m, IsAudioContext self) =>
-                        self -> Maybe Word -> m ChannelSplitterNode
-createChannelSplitter self numberOfOutputs
-  = liftIO
-      (js_createChannelSplitter (toAudioContext self)
-         (maybeToOptional numberOfOutputs))
+foreign import javascript interruptible "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: AudioContext -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/close MDN AudioContext.close documentation>
+close :: (MonadDOM m) => AudioContext -> m ()
+close self = liftDOM (void (((js_close (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
-createChannelSplitter_ ::
-                       (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m ()
-createChannelSplitter_ self numberOfOutputs
-  = liftIO
-      (void
-         (js_createChannelSplitter (toAudioContext self)
-            (maybeToOptional numberOfOutputs)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createChannelMerger\"]($2); })"
-        js_createChannelMerger ::
-        AudioContext -> Optional Word -> IO ChannelMergerNode
+foreign import javascript safe "(($1, $2) => { return $1[\"createMediaElementSource\"]($2); })"
+        js_createMediaElementSource :: AudioContext -> HTMLMediaElement -> IO MediaElementAudioSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaElementSource MDN AudioContext.createMediaElementSource documentation>
+createMediaElementSource :: (MonadDOM m, IsHTMLMediaElement mediaElement) => AudioContext -> mediaElement -> m MediaElementAudioSourceNode
+createMediaElementSource self mediaElement = liftDOM ((js_createMediaElementSource (self) (Types.toHTMLMediaElement mediaElement)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
-createChannelMerger ::
-                    (MonadIO m, IsAudioContext self) =>
-                      self -> Maybe Word -> m ChannelMergerNode
-createChannelMerger self numberOfInputs
-  = liftIO
-      (js_createChannelMerger (toAudioContext self)
-         (maybeToOptional numberOfInputs))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaElementSource MDN AudioContext.createMediaElementSource documentation>
+createMediaElementSource_ :: (MonadDOM m, IsHTMLMediaElement mediaElement) => AudioContext -> mediaElement -> m ()
+createMediaElementSource_ self mediaElement = liftDOM (void ((js_createMediaElementSource (self) (Types.toHTMLMediaElement mediaElement))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
-createChannelMerger_ ::
-                     (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m ()
-createChannelMerger_ self numberOfInputs
-  = liftIO
-      (void
-         (js_createChannelMerger (toAudioContext self)
-            (maybeToOptional numberOfInputs)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"startRendering\"](); })"
-        js_startRendering :: AudioContext -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"createMediaStreamDestination\"](); })"
+        js_createMediaStreamDestination :: AudioContext -> IO MediaStreamAudioDestinationNode
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamDestination MDN AudioContext.createMediaStreamDestination documentation>
+createMediaStreamDestination :: (MonadDOM m) => AudioContext -> m MediaStreamAudioDestinationNode
+createMediaStreamDestination self = liftDOM ((js_createMediaStreamDestination (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.startRendering Mozilla AudioContext.startRendering documentation> 
-startRendering :: (MonadIO m, IsAudioContext self) => self -> m ()
-startRendering self
-  = liftIO (js_startRendering (toAudioContext self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"destination\"]; })"
-        js_getDestination :: AudioContext -> IO AudioDestinationNode
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamDestination MDN AudioContext.createMediaStreamDestination documentation>
+createMediaStreamDestination_ :: (MonadDOM m) => AudioContext -> m ()
+createMediaStreamDestination_ self = liftDOM (void ((js_createMediaStreamDestination (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
-getDestination ::
-               (MonadIO m, IsAudioContext self) => self -> m AudioDestinationNode
-getDestination self
-  = liftIO (js_getDestination (toAudioContext self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
-        js_getCurrentTime :: AudioContext -> IO Double
+foreign import javascript safe "(($1, $2) => { return $1[\"createMediaStreamSource\"]($2); })"
+        js_createMediaStreamSource :: AudioContext -> MediaStream -> IO MediaStreamAudioSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamSource MDN AudioContext.createMediaStreamSource documentation>
+createMediaStreamSource :: (MonadDOM m) => AudioContext -> MediaStream -> m MediaStreamAudioSourceNode
+createMediaStreamSource self mediaStream = liftDOM ((js_createMediaStreamSource (self) (mediaStream)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.currentTime Mozilla AudioContext.currentTime documentation> 
-getCurrentTime ::
-               (MonadIO m, IsAudioContext self) => self -> m Double
-getCurrentTime self
-  = liftIO (js_getCurrentTime (toAudioContext self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
-        js_getSampleRate :: AudioContext -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamSource MDN AudioContext.createMediaStreamSource documentation>
+createMediaStreamSource_ :: (MonadDOM m) => AudioContext -> MediaStream -> m ()
+createMediaStreamSource_ self mediaStream = liftDOM (void ((js_createMediaStreamSource (self) (mediaStream))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.sampleRate Mozilla AudioContext.sampleRate documentation> 
-getSampleRate ::
-              (MonadIO m, IsAudioContext self) => self -> m Float
-getSampleRate self
-  = liftIO (js_getSampleRate (toAudioContext self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"listener\"]; })" js_getListener
-        :: AudioContext -> IO AudioListener
+foreign import javascript safe "(($1) => { return $1[\"getOutputTimestamp\"](); })"
+        js_getOutputTimestamp :: AudioContext -> IO AudioTimestamp
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/getOutputTimestamp MDN AudioContext.getOutputTimestamp documentation>
+getOutputTimestamp :: (MonadDOM m) => AudioContext -> m AudioTimestamp
+getOutputTimestamp self = liftDOM ((js_getOutputTimestamp (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
-getListener ::
-            (MonadIO m, IsAudioContext self) => self -> m AudioListener
-getListener self = liftIO (js_getListener (toAudioContext self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
-        AudioContext -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/getOutputTimestamp MDN AudioContext.getOutputTimestamp documentation>
+getOutputTimestamp_ :: (MonadDOM m) => AudioContext -> m ()
+getOutputTimestamp_ self = liftDOM (void ((js_getOutputTimestamp (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.state Mozilla AudioContext.state documentation> 
-getState ::
-         (MonadIO m, IsAudioContext self) => self -> m AudioContextState
-getState self
-  = liftIO
-      ((js_getState (toAudioContext self)) >>= fromJSValUnchecked)
+foreign import javascript interruptible "(($1, $c) => { return $1[\"resume\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_resume :: AudioContext -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/resume MDN AudioContext.resume documentation>
+resume :: (MonadDOM m) => AudioContext -> m ()
+resume self = liftDOM (void (((js_resume (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.onstatechange Mozilla AudioContext.onstatechange documentation> 
-statechange ::
-            (IsAudioContext self, IsEventTarget self) =>
-              EventName self onstatechange
-statechange = unsafeEventName (toJSString "statechange")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"activeSourceCount\"]; })"
-        js_getActiveSourceCount :: AudioContext -> IO Word
+foreign import javascript interruptible "(($1, $c) => { return $1[\"suspend\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_suspend :: AudioContext -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/suspend MDN AudioContext.suspend documentation>
+suspend :: (MonadDOM m) => AudioContext -> m ()
+suspend self = liftDOM (void (((js_suspend (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.activeSourceCount Mozilla AudioContext.activeSourceCount documentation> 
-getActiveSourceCount ::
-                     (MonadIO m, IsAudioContext self) => self -> m Word
-getActiveSourceCount self
-  = liftIO (js_getActiveSourceCount (toAudioContext self))
+foreign import javascript unsafe "(($1) => { return $1[\"baseLatency\"]; })"
+        js_getBaseLatency :: AudioContext -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/baseLatency MDN AudioContext.baseLatency documentation>
+getBaseLatency :: (MonadDOM m) => AudioContext -> m Double
+getBaseLatency self = liftDOM ((js_getBaseLatency (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.oncomplete Mozilla AudioContext.oncomplete documentation> 
-complete ::
-         (IsAudioContext self, IsEventTarget self) =>
-           EventName self OfflineAudioCompletionEvent
-complete = unsafeEventName (toJSString "complete")
+foreign import javascript unsafe "(($1) => { return $1[\"outputLatency\"]; })"
+        js_getOutputLatency :: AudioContext -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/outputLatency MDN AudioContext.outputLatency documentation>
+getOutputLatency :: (MonadDOM m) => AudioContext -> m Double
+getOutputLatency self = liftDOM ((js_getOutputLatency (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioContextOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioContextOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioContextOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioContextOptions
+       (js_newAudioContextOptions, js_setLatencyHint, js_getLatencyHint, js_setSampleRate, js_getSampleRate, js_setSinkId, js_getSinkId, js_setRenderSizeHint, js_getRenderSizeHint, newAudioContextOptions, setLatencyHint, getLatencyHint, getLatencyHintUnsafe, getLatencyHintUnchecked, setSampleRate, getSampleRate, getSampleRateUnsafe, getSampleRateUnchecked, setSinkId, getSinkId, getSinkIdUnsafe, getSinkIdUnchecked, setRenderSizeHint, getRenderSizeHint, getRenderSizeHintUnsafe, getRenderSizeHintUnchecked, AudioContextOptions(..), gTypeAudioContextOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAudioContextOptions :: IO AudioContextOptions
+-- | <https://webaudio.github.io/web-audio-api/#AudioContextOptions AudioContextOptions specification>
+newAudioContextOptions :: (MonadDOM m) => m AudioContextOptions
+newAudioContextOptions = liftDOM ((js_newAudioContextOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"latencyHint\"] = $2; })"
+        js_setLatencyHint :: AudioContextOptions -> AudioContextLatencyCategoryOrDouble -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-latencyhint AudioContextOptions.latencyHint specification>
+setLatencyHint :: (MonadDOM m, IsAudioContextLatencyCategoryOrDouble val) => AudioContextOptions -> val -> m ()
+setLatencyHint self val = liftDOM (void ((js_setLatencyHint (self) (Types.toAudioContextLatencyCategoryOrDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"latencyHint\"]; })"
+        js_getLatencyHint :: AudioContextOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-latencyhint AudioContextOptions.latencyHint specification>
+getLatencyHint :: (MonadDOM m) => AudioContextOptions -> m (Maybe AudioContextLatencyCategoryOrDouble)
+getLatencyHint self = liftDOM (((js_getLatencyHint (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-latencyhint AudioContextOptions.latencyHint specification>
+getLatencyHintUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m AudioContextLatencyCategoryOrDouble
+getLatencyHintUnsafe self = liftDOM ((((js_getLatencyHint (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-latencyhint AudioContextOptions.latencyHint specification>
+getLatencyHintUnchecked :: (MonadDOM m) => AudioContextOptions -> m AudioContextLatencyCategoryOrDouble
+getLatencyHintUnchecked self = liftDOM ((pFromJSVal <$> (js_getLatencyHint (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: AudioContextOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-samplerate AudioContextOptions.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioContextOptions -> Float -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioContextOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-samplerate AudioContextOptions.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioContextOptions -> m (Maybe Float)
+getSampleRate self = liftDOM (((js_getSampleRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-samplerate AudioContextOptions.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m Float
+getSampleRateUnsafe self = liftDOM ((((js_getSampleRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-samplerate AudioContextOptions.sampleRate specification>
+getSampleRateUnchecked :: (MonadDOM m) => AudioContextOptions -> m Float
+getSampleRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sinkId\"] = $2; })"
+        js_setSinkId :: AudioContextOptions -> StringOrAudioSinkOptions -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-sinkid AudioContextOptions.sinkId specification>
+setSinkId :: (MonadDOM m, IsStringOrAudioSinkOptions val) => AudioContextOptions -> val -> m ()
+setSinkId self val = liftDOM (void ((js_setSinkId (self) (Types.toStringOrAudioSinkOptions val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sinkId\"]; })"
+        js_getSinkId :: AudioContextOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-sinkid AudioContextOptions.sinkId specification>
+getSinkId :: (MonadDOM m) => AudioContextOptions -> m (Maybe StringOrAudioSinkOptions)
+getSinkId self = liftDOM (((js_getSinkId (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-sinkid AudioContextOptions.sinkId specification>
+getSinkIdUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m StringOrAudioSinkOptions
+getSinkIdUnsafe self = liftDOM ((((js_getSinkId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-sinkid AudioContextOptions.sinkId specification>
+getSinkIdUnchecked :: (MonadDOM m) => AudioContextOptions -> m StringOrAudioSinkOptions
+getSinkIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getSinkId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"renderSizeHint\"] = $2; })"
+        js_setRenderSizeHint :: AudioContextOptions -> AudioContextRenderSizeCategoryOrWord -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint AudioContextOptions.renderSizeHint specification>
+setRenderSizeHint :: (MonadDOM m, IsAudioContextRenderSizeCategoryOrWord val) => AudioContextOptions -> val -> m ()
+setRenderSizeHint self val = liftDOM (void ((js_setRenderSizeHint (self) (Types.toAudioContextRenderSizeCategoryOrWord val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"renderSizeHint\"]; })"
+        js_getRenderSizeHint :: AudioContextOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint AudioContextOptions.renderSizeHint specification>
+getRenderSizeHint :: (MonadDOM m) => AudioContextOptions -> m (Maybe AudioContextRenderSizeCategoryOrWord)
+getRenderSizeHint self = liftDOM (((js_getRenderSizeHint (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint AudioContextOptions.renderSizeHint specification>
+getRenderSizeHintUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m AudioContextRenderSizeCategoryOrWord
+getRenderSizeHintUnsafe self = liftDOM ((((js_getRenderSizeHint (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint AudioContextOptions.renderSizeHint specification>
+getRenderSizeHintUnchecked :: (MonadDOM m) => AudioContextOptions -> m AudioContextRenderSizeCategoryOrWord
+getRenderSizeHintUnchecked self = liftDOM ((pFromJSVal <$> (js_getRenderSizeHint (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioData.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioData.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioData
+       (js_newAudioData, js_allocationSize, js_clone, js_close, js_copyTo, js_getFormat, js_getSampleRate, js_getNumberOfFrames, js_getNumberOfChannels, js_getDuration, js_getTimestamp, newAudioData, allocationSize, allocationSize_, clone, clone_, close, copyTo, getFormat, getFormatUnsafe, getFormatUnchecked, getSampleRate, getNumberOfFrames, getNumberOfChannels, getDuration, getTimestamp, AudioData(..), gTypeAudioData)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"AudioData\"]($1); })"
+        js_newAudioData :: AudioDataInit -> IO AudioData
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/AudioData MDN AudioData. documentation>
+newAudioData :: (MonadDOM m) => AudioDataInit -> m AudioData
+newAudioData init = liftDOM ((js_newAudioData (init)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"allocationSize\"]($2); })"
+        js_allocationSize :: AudioData -> AudioDataCopyToOptions -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/allocationSize MDN AudioData.allocationSize documentation>
+allocationSize :: (MonadDOM m) => AudioData -> AudioDataCopyToOptions -> m Word
+allocationSize self options = liftDOM ((js_allocationSize (self) (options)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/allocationSize MDN AudioData.allocationSize documentation>
+allocationSize_ :: (MonadDOM m) => AudioData -> AudioDataCopyToOptions -> m ()
+allocationSize_ self options = liftDOM (void ((js_allocationSize (self) (options))))
+
+foreign import javascript safe "(($1) => { return $1[\"clone\"](); })"
+        js_clone :: AudioData -> IO AudioData
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/clone MDN AudioData.clone documentation>
+clone :: (MonadDOM m) => AudioData -> m AudioData
+clone self = liftDOM ((js_clone (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/clone MDN AudioData.clone documentation>
+clone_ :: (MonadDOM m) => AudioData -> m ()
+clone_ self = liftDOM (void ((js_clone (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: AudioData -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/close MDN AudioData.close documentation>
+close :: (MonadDOM m) => AudioData -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"copyTo\"]($2, $3); })"
+        js_copyTo :: AudioData -> AllowSharedBufferSource -> AudioDataCopyToOptions -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/copyTo MDN AudioData.copyTo documentation>
+copyTo :: (MonadDOM m, IsAllowSharedBufferSource destination) => AudioData -> destination -> AudioDataCopyToOptions -> m ()
+copyTo self destination options = liftDOM (void ((js_copyTo (self) (Types.toAllowSharedBufferSource destination) (options))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: AudioData -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/format MDN AudioData.format documentation>
+getFormat :: (MonadDOM m) => AudioData -> m (Maybe AudioSampleFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/format MDN AudioData.format documentation>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => AudioData -> m AudioSampleFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/format MDN AudioData.format documentation>
+getFormatUnchecked :: (MonadDOM m) => AudioData -> m AudioSampleFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioData -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/sampleRate MDN AudioData.sampleRate documentation>
+getSampleRate :: (MonadDOM m) => AudioData -> m Float
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfFrames\"]; })"
+        js_getNumberOfFrames :: AudioData -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/numberOfFrames MDN AudioData.numberOfFrames documentation>
+getNumberOfFrames :: (MonadDOM m) => AudioData -> m Word
+getNumberOfFrames self = liftDOM ((js_getNumberOfFrames (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
+        js_getNumberOfChannels :: AudioData -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/numberOfChannels MDN AudioData.numberOfChannels documentation>
+getNumberOfChannels :: (MonadDOM m) => AudioData -> m Word
+getNumberOfChannels self = liftDOM ((js_getNumberOfChannels (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: AudioData -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/duration MDN AudioData.duration documentation>
+getDuration :: (MonadDOM m) => AudioData -> m Word53
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: AudioData -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/timestamp MDN AudioData.timestamp documentation>
+getTimestamp :: (MonadDOM m) => AudioData -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDataCopyToOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDataCopyToOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDataCopyToOptions.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioDataCopyToOptions
+       (js_newAudioDataCopyToOptions, js_setPlaneIndex, js_getPlaneIndex, js_setFrameOffset, js_getFrameOffset, js_setFrameCount, js_getFrameCount, js_setFormat, js_getFormat, newAudioDataCopyToOptions, setPlaneIndex, getPlaneIndex, setFrameOffset, getFrameOffset, getFrameOffsetUnsafe, getFrameOffsetUnchecked, setFrameCount, getFrameCount, getFrameCountUnsafe, getFrameCountUnchecked, setFormat, getFormat, getFormatUnsafe, getFormatUnchecked, AudioDataCopyToOptions(..), gTypeAudioDataCopyToOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"planeIndex\": $1}); })"
+        js_newAudioDataCopyToOptions :: Word -> IO AudioDataCopyToOptions
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodatacopytooptions AudioDataCopyToOptions specification>
+newAudioDataCopyToOptions :: (MonadDOM m) => Word -> m AudioDataCopyToOptions
+newAudioDataCopyToOptions planeIndex = liftDOM ((js_newAudioDataCopyToOptions (planeIndex)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"planeIndex\"] = $2; })"
+        js_setPlaneIndex :: AudioDataCopyToOptions -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-planeindex AudioDataCopyToOptions.planeIndex specification>
+setPlaneIndex :: (MonadDOM m) => AudioDataCopyToOptions -> Word -> m ()
+setPlaneIndex self val = liftDOM (void ((js_setPlaneIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"planeIndex\"]; })"
+        js_getPlaneIndex :: AudioDataCopyToOptions -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-planeindex AudioDataCopyToOptions.planeIndex specification>
+getPlaneIndex :: (MonadDOM m) => AudioDataCopyToOptions -> m Word
+getPlaneIndex self = liftDOM ((js_getPlaneIndex (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameOffset\"] = $2; })"
+        js_setFrameOffset :: AudioDataCopyToOptions -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-frameoffset AudioDataCopyToOptions.frameOffset specification>
+setFrameOffset :: (MonadDOM m) => AudioDataCopyToOptions -> Word -> m ()
+setFrameOffset self val = liftDOM (void ((js_setFrameOffset (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameOffset\"]; })"
+        js_getFrameOffset :: AudioDataCopyToOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-frameoffset AudioDataCopyToOptions.frameOffset specification>
+getFrameOffset :: (MonadDOM m) => AudioDataCopyToOptions -> m (Maybe Word)
+getFrameOffset self = liftDOM (((js_getFrameOffset (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-frameoffset AudioDataCopyToOptions.frameOffset specification>
+getFrameOffsetUnsafe :: (MonadDOM m, HasCallStack) => AudioDataCopyToOptions -> m Word
+getFrameOffsetUnsafe self = liftDOM ((((js_getFrameOffset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-frameoffset AudioDataCopyToOptions.frameOffset specification>
+getFrameOffsetUnchecked :: (MonadDOM m) => AudioDataCopyToOptions -> m Word
+getFrameOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameOffset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameCount\"] = $2; })"
+        js_setFrameCount :: AudioDataCopyToOptions -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-framecount AudioDataCopyToOptions.frameCount specification>
+setFrameCount :: (MonadDOM m) => AudioDataCopyToOptions -> Word -> m ()
+setFrameCount self val = liftDOM (void ((js_setFrameCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameCount\"]; })"
+        js_getFrameCount :: AudioDataCopyToOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-framecount AudioDataCopyToOptions.frameCount specification>
+getFrameCount :: (MonadDOM m) => AudioDataCopyToOptions -> m (Maybe Word)
+getFrameCount self = liftDOM (((js_getFrameCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-framecount AudioDataCopyToOptions.frameCount specification>
+getFrameCountUnsafe :: (MonadDOM m, HasCallStack) => AudioDataCopyToOptions -> m Word
+getFrameCountUnsafe self = liftDOM ((((js_getFrameCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-framecount AudioDataCopyToOptions.frameCount specification>
+getFrameCountUnchecked :: (MonadDOM m) => AudioDataCopyToOptions -> m Word
+getFrameCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: AudioDataCopyToOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-format AudioDataCopyToOptions.format specification>
+setFormat :: (MonadDOM m) => AudioDataCopyToOptions -> AudioSampleFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: AudioDataCopyToOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-format AudioDataCopyToOptions.format specification>
+getFormat :: (MonadDOM m) => AudioDataCopyToOptions -> m (Maybe AudioSampleFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-format AudioDataCopyToOptions.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => AudioDataCopyToOptions -> m AudioSampleFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-format AudioDataCopyToOptions.format specification>
+getFormatUnchecked :: (MonadDOM m) => AudioDataCopyToOptions -> m AudioSampleFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDataInit.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDataInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDataInit.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioDataInit
+       (js_newAudioDataInit, js_setFormat, js_getFormat, js_setSampleRate, js_getSampleRate, js_setNumberOfFrames, js_getNumberOfFrames, js_setNumberOfChannels, js_getNumberOfChannels, js_setTimestamp, js_getTimestamp, js_setData, js_getData, js_setTransfer, js_getTransfer, newAudioDataInit, setFormat, getFormat, setSampleRate, getSampleRate, setNumberOfFrames, getNumberOfFrames, setNumberOfChannels, getNumberOfChannels, setTimestamp, getTimestamp, setData, getData, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, AudioDataInit(..), gTypeAudioDataInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return ({\"format\": $1, \"sampleRate\": $2, \"numberOfFrames\": $3, \"numberOfChannels\": $4, \"timestamp\": $5, \"data\": $6}); })"
+        js_newAudioDataInit :: JSVal -> Float -> Word -> Word -> JSVal -> AllowSharedBufferSource -> IO AudioDataInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodatainit AudioDataInit specification>
+newAudioDataInit :: (MonadDOM m, IsAllowSharedBufferSource data') => AudioSampleFormat -> Float -> Word -> Word -> Int53 -> data' -> m AudioDataInit
+newAudioDataInit format sampleRate numberOfFrames numberOfChannels timestamp data' = liftDOM (((toJSVal format) >>= \a1' -> (toJSVal timestamp) >>= \a5' -> js_newAudioDataInit a1' (sampleRate) (numberOfFrames) (numberOfChannels) a5' (Types.toAllowSharedBufferSource data')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: AudioDataInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-format AudioDataInit.format specification>
+setFormat :: (MonadDOM m) => AudioDataInit -> AudioSampleFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: AudioDataInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-format AudioDataInit.format specification>
+getFormat :: (MonadDOM m) => AudioDataInit -> m AudioSampleFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: AudioDataInit -> Float -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-samplerate AudioDataInit.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioDataInit -> Float -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioDataInit -> IO Float
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-samplerate AudioDataInit.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioDataInit -> m Float
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfFrames\"] = $2; })"
+        js_setNumberOfFrames :: AudioDataInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofframes AudioDataInit.numberOfFrames specification>
+setNumberOfFrames :: (MonadDOM m) => AudioDataInit -> Word -> m ()
+setNumberOfFrames self val = liftDOM (void ((js_setNumberOfFrames (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfFrames\"]; })"
+        js_getNumberOfFrames :: AudioDataInit -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofframes AudioDataInit.numberOfFrames specification>
+getNumberOfFrames :: (MonadDOM m) => AudioDataInit -> m Word
+getNumberOfFrames self = liftDOM ((js_getNumberOfFrames (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfChannels\"] = $2; })"
+        js_setNumberOfChannels :: AudioDataInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofchannels AudioDataInit.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioDataInit -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void ((js_setNumberOfChannels (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
+        js_getNumberOfChannels :: AudioDataInit -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofchannels AudioDataInit.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioDataInit -> m Word
+getNumberOfChannels self = liftDOM ((js_getNumberOfChannels (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: AudioDataInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-timestamp AudioDataInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => AudioDataInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimestamp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: AudioDataInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-timestamp AudioDataInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => AudioDataInit -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: AudioDataInit -> AllowSharedBufferSource -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-data AudioDataInit.data specification>
+setData :: (MonadDOM m, IsAllowSharedBufferSource val) => AudioDataInit -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toAllowSharedBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: AudioDataInit -> IO AllowSharedBufferSource
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-data AudioDataInit.data specification>
+getData :: (MonadDOM m) => AudioDataInit -> m AllowSharedBufferSource
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transfer\"] = $2; })"
+        js_setTransfer :: AudioDataInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => AudioDataInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: AudioDataInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
+getTransfer :: (MonadDOM m) => AudioDataInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => AudioDataInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((js_getTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
+getTransferUnchecked :: (MonadDOM m) => AudioDataInit -> m [ArrayBuffer]
+getTransferUnchecked self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDataOutputCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDataOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDataOutputCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioDataOutputCallback
+       (newAudioDataOutputCallback, newAudioDataOutputCallbackSync, newAudioDataOutputCallbackAsync, AudioDataOutputCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newAudioDataOutputCallback :: (MonadDOM m) => (AudioData -> IO ()) -> m AudioDataOutputCallback
+newAudioDataOutputCallback callback = liftDOM ((AudioDataOutputCallback . coerce) <$> syncCallback1 ContinueAsync (\ output -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newAudioDataOutputCallbackSync :: (MonadDOM m) => (AudioData -> IO ()) -> m AudioDataOutputCallback
+newAudioDataOutputCallbackSync callback = liftDOM ((AudioDataOutputCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ output -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newAudioDataOutputCallbackAsync :: (MonadDOM m) => (AudioData -> IO ()) -> m AudioDataOutputCallback
+newAudioDataOutputCallbackAsync callback = liftDOM ((AudioDataOutputCallback . coerce) <$> asyncCallback1 (\ output -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDecoder.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoder.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioDecoder
+       (js_newAudioDecoder, js_close, js_configure, js_decode, js_flush, js_reset, js_isConfigSupported, js_getState, js_getDecodeQueueSize, newAudioDecoder, close, configure, decode, flush, reset, isConfigSupported, isConfigSupported_, getState, getDecodeQueueSize, dequeue, AudioDecoder(..), gTypeAudioDecoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"AudioDecoder\"]($1); })"
+        js_newAudioDecoder :: AudioDecoderInit -> IO AudioDecoder
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/AudioDecoder MDN AudioDecoder. documentation>
+newAudioDecoder :: (MonadDOM m) => AudioDecoderInit -> m AudioDecoder
+newAudioDecoder init = liftDOM ((js_newAudioDecoder (init)))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: AudioDecoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/close MDN AudioDecoder.close documentation>
+close :: (MonadDOM m) => AudioDecoder -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"configure\"]($2); })"
+        js_configure :: AudioDecoder -> AudioDecoderConfig -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/configure MDN AudioDecoder.configure documentation>
+configure :: (MonadDOM m) => AudioDecoder -> AudioDecoderConfig -> m ()
+configure self config = liftDOM (void ((js_configure (self) (config))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"decode\"]($2); })"
+        js_decode :: AudioDecoder -> EncodedAudioChunk -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/decode MDN AudioDecoder.decode documentation>
+decode :: (MonadDOM m) => AudioDecoder -> EncodedAudioChunk -> m ()
+decode self chunk = liftDOM (void ((js_decode (self) (chunk))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"flush\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_flush :: AudioDecoder -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/flush MDN AudioDecoder.flush documentation>
+flush :: (MonadDOM m) => AudioDecoder -> m ()
+flush self = liftDOM (void (((js_flush (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: AudioDecoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/reset MDN AudioDecoder.reset documentation>
+reset :: (MonadDOM m) => AudioDecoder -> m ()
+reset self = liftDOM (void ((js_reset (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"AudioDecoder\"][\"isConfigSupported\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isConfigSupported :: AudioDecoderConfig -> IO (JSVal, AudioDecoderSupport)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/isConfigSupported_static MDN AudioDecoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => AudioDecoderConfig -> m AudioDecoderSupport
+isConfigSupported config = liftDOM (((js_isConfigSupported (config)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/isConfigSupported_static MDN AudioDecoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => AudioDecoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void (((js_isConfigSupported (config)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: AudioDecoder -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/state MDN AudioDecoder.state documentation>
+getState :: (MonadDOM m) => AudioDecoder -> m CodecState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"decodeQueueSize\"]; })"
+        js_getDecodeQueueSize :: AudioDecoder -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/decodeQueueSize MDN AudioDecoder.decodeQueueSize documentation>
+getDecodeQueueSize :: (MonadDOM m) => AudioDecoder -> m Word
+getDecodeQueueSize self = liftDOM ((js_getDecodeQueueSize (self)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoder-ondequeue dequeue event>
+dequeue :: EventName AudioDecoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderConfig.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioDecoderConfig
+       (js_newAudioDecoderConfig, js_setCodec, js_getCodec, js_setSampleRate, js_getSampleRate, js_setNumberOfChannels, js_getNumberOfChannels, js_setDescription, js_getDescription, newAudioDecoderConfig, setCodec, getCodec, setSampleRate, getSampleRate, setNumberOfChannels, getNumberOfChannels, setDescription, getDescription, getDescriptionUnsafe, getDescriptionUnchecked, AudioDecoderConfig(..), gTypeAudioDecoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"codec\": $1, \"sampleRate\": $2, \"numberOfChannels\": $3}); })"
+        js_newAudioDecoderConfig :: JSString -> Word -> Word -> IO AudioDecoderConfig
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodecoderconfig AudioDecoderConfig specification>
+newAudioDecoderConfig :: (MonadDOM m, ToJSString codec) => codec -> Word -> Word -> m AudioDecoderConfig
+newAudioDecoderConfig codec sampleRate numberOfChannels = liftDOM ((js_newAudioDecoderConfig (toJSString codec) (sampleRate) (numberOfChannels)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codec\"] = $2; })"
+        js_setCodec :: AudioDecoderConfig -> JSString -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-codec AudioDecoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => AudioDecoderConfig -> val -> m ()
+setCodec self val = liftDOM (void ((js_setCodec (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codec\"]; })"
+        js_getCodec :: AudioDecoderConfig -> IO JSString
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-codec AudioDecoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => AudioDecoderConfig -> m result
+getCodec self = liftDOM ((fromJSString <$> (js_getCodec (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: AudioDecoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-samplerate AudioDecoderConfig.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioDecoderConfig -> Word -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioDecoderConfig -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-samplerate AudioDecoderConfig.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioDecoderConfig -> m Word
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfChannels\"] = $2; })"
+        js_setNumberOfChannels :: AudioDecoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-numberofchannels AudioDecoderConfig.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioDecoderConfig -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void ((js_setNumberOfChannels (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
+        js_getNumberOfChannels :: AudioDecoderConfig -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-numberofchannels AudioDecoderConfig.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioDecoderConfig -> m Word
+getNumberOfChannels self = liftDOM ((js_getNumberOfChannels (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"description\"] = $2; })"
+        js_setDescription :: AudioDecoderConfig -> AllowSharedBufferSource -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-description AudioDecoderConfig.description specification>
+setDescription :: (MonadDOM m, IsAllowSharedBufferSource val) => AudioDecoderConfig -> val -> m ()
+setDescription self val = liftDOM (void ((js_setDescription (self) (Types.toAllowSharedBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
+        js_getDescription :: AudioDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-description AudioDecoderConfig.description specification>
+getDescription :: (MonadDOM m) => AudioDecoderConfig -> m (Maybe AllowSharedBufferSource)
+getDescription self = liftDOM (((js_getDescription (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-description AudioDecoderConfig.description specification>
+getDescriptionUnsafe :: (MonadDOM m, HasCallStack) => AudioDecoderConfig -> m AllowSharedBufferSource
+getDescriptionUnsafe self = liftDOM ((((js_getDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-description AudioDecoderConfig.description specification>
+getDescriptionUnchecked :: (MonadDOM m) => AudioDecoderConfig -> m AllowSharedBufferSource
+getDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDescription (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderInit.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioDecoderInit
+       (js_newAudioDecoderInit, js_setOutput, js_setError, newAudioDecoderInit, setOutput, setError, AudioDecoderInit(..), gTypeAudioDecoderInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"output\": $1, \"error\": $2}); })"
+        js_newAudioDecoderInit :: JSVal -> JSVal -> IO AudioDecoderInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodecoderinit AudioDecoderInit specification>
+newAudioDecoderInit :: (MonadDOM m) => AudioDataOutputCallback -> WebCodecsErrorCallback -> m AudioDecoderInit
+newAudioDecoderInit output error = liftDOM (((toJSVal output) >>= \a1' -> (toJSVal error) >>= \a2' -> js_newAudioDecoderInit a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"output\"] = $2; })"
+        js_setOutput :: AudioDecoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderinit-output AudioDecoderInit.output specification>
+setOutput :: (MonadDOM m) => AudioDecoderInit -> AudioDataOutputCallback -> m ()
+setOutput self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOutput (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: AudioDecoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderinit-error AudioDecoderInit.error specification>
+setError :: (MonadDOM m) => AudioDecoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setError (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderSupport.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDecoderSupport.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioDecoderSupport
+       (js_newAudioDecoderSupport, js_setSupported, js_getSupported, js_setConfig, js_getConfig, newAudioDecoderSupport, setSupported, getSupported, getSupportedUnsafe, getSupportedUnchecked, setConfig, getConfig, getConfigUnsafe, getConfigUnchecked, AudioDecoderSupport(..), gTypeAudioDecoderSupport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAudioDecoderSupport :: IO AudioDecoderSupport
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodecodersupport AudioDecoderSupport specification>
+newAudioDecoderSupport :: (MonadDOM m) => m AudioDecoderSupport
+newAudioDecoderSupport = liftDOM ((js_newAudioDecoderSupport))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supported\"] = $2; })"
+        js_setSupported :: AudioDecoderSupport -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-supported AudioDecoderSupport.supported specification>
+setSupported :: (MonadDOM m) => AudioDecoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void ((js_setSupported (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supported\"]; })"
+        js_getSupported :: AudioDecoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-supported AudioDecoderSupport.supported specification>
+getSupported :: (MonadDOM m) => AudioDecoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((js_getSupported (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-supported AudioDecoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => AudioDecoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((js_getSupported (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-supported AudioDecoderSupport.supported specification>
+getSupportedUnchecked :: (MonadDOM m) => AudioDecoderSupport -> m Bool
+getSupportedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupported (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"config\"] = $2; })"
+        js_setConfig :: AudioDecoderSupport -> AudioDecoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-config AudioDecoderSupport.config specification>
+setConfig :: (MonadDOM m) => AudioDecoderSupport -> AudioDecoderConfig -> m ()
+setConfig self val = liftDOM (void ((js_setConfig (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"config\"]; })"
+        js_getConfig :: AudioDecoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-config AudioDecoderSupport.config specification>
+getConfig :: (MonadDOM m) => AudioDecoderSupport -> m (Maybe AudioDecoderConfig)
+getConfig self = liftDOM (((js_getConfig (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-config AudioDecoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => AudioDecoderSupport -> m AudioDecoderConfig
+getConfigUnsafe self = liftDOM ((((js_getConfig (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-config AudioDecoderSupport.config specification>
+getConfigUnchecked :: (MonadDOM m) => AudioDecoderSupport -> m AudioDecoderConfig
+getConfigUnchecked self = liftDOM ((pFromJSVal <$> (js_getConfig (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
@@ -1,34 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
-       (js_getMaxChannelCount, getMaxChannelCount,
-        AudioDestinationNode(..), gTypeAudioDestinationNode)
+       (js_getMaxChannelCount, getMaxChannelCount, AudioDestinationNode(..), gTypeAudioDestinationNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"maxChannelCount\"]; })"
         js_getMaxChannelCount :: AudioDestinationNode -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode.maxChannelCount Mozilla AudioDestinationNode.maxChannelCount documentation> 
-getMaxChannelCount :: (MonadIO m) => AudioDestinationNode -> m Word
-getMaxChannelCount self = liftIO (js_getMaxChannelCount self)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDestinationNode/maxChannelCount MDN AudioDestinationNode.maxChannelCount documentation>
+getMaxChannelCount :: (MonadDOM m) => AudioDestinationNode -> m Word
+getMaxChannelCount self = liftDOM ((js_getMaxChannelCount (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoder.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioEncoder
+       (js_newAudioEncoder, js_close, js_configure, js_encode, js_flush, js_reset, js_isConfigSupported, js_getState, js_getEncodeQueueSize, newAudioEncoder, close, configure, encode, flush, reset, isConfigSupported, isConfigSupported_, getState, getEncodeQueueSize, dequeue, AudioEncoder(..), gTypeAudioEncoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"AudioEncoder\"]($1); })"
+        js_newAudioEncoder :: AudioEncoderInit -> IO AudioEncoder
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/AudioEncoder MDN AudioEncoder. documentation>
+newAudioEncoder :: (MonadDOM m) => AudioEncoderInit -> m AudioEncoder
+newAudioEncoder init = liftDOM ((js_newAudioEncoder (init)))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: AudioEncoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/close MDN AudioEncoder.close documentation>
+close :: (MonadDOM m) => AudioEncoder -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"configure\"]($2); })"
+        js_configure :: AudioEncoder -> AudioEncoderConfig -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/configure MDN AudioEncoder.configure documentation>
+configure :: (MonadDOM m) => AudioEncoder -> AudioEncoderConfig -> m ()
+configure self config = liftDOM (void ((js_configure (self) (config))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"encode\"]($2); })"
+        js_encode :: AudioEncoder -> AudioData -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/encode MDN AudioEncoder.encode documentation>
+encode :: (MonadDOM m) => AudioEncoder -> AudioData -> m ()
+encode self data' = liftDOM (void ((js_encode (self) (data'))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"flush\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_flush :: AudioEncoder -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/flush MDN AudioEncoder.flush documentation>
+flush :: (MonadDOM m) => AudioEncoder -> m ()
+flush self = liftDOM (void (((js_flush (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: AudioEncoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/reset MDN AudioEncoder.reset documentation>
+reset :: (MonadDOM m) => AudioEncoder -> m ()
+reset self = liftDOM (void ((js_reset (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"AudioEncoder\"][\"isConfigSupported\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isConfigSupported :: AudioEncoderConfig -> IO (JSVal, AudioEncoderSupport)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/isConfigSupported_static MDN AudioEncoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => AudioEncoderConfig -> m AudioEncoderSupport
+isConfigSupported config = liftDOM (((js_isConfigSupported (config)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/isConfigSupported_static MDN AudioEncoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => AudioEncoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void (((js_isConfigSupported (config)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: AudioEncoder -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/state MDN AudioEncoder.state documentation>
+getState :: (MonadDOM m) => AudioEncoder -> m CodecState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"encodeQueueSize\"]; })"
+        js_getEncodeQueueSize :: AudioEncoder -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/encodeQueueSize MDN AudioEncoder.encodeQueueSize documentation>
+getEncodeQueueSize :: (MonadDOM m) => AudioEncoder -> m Word
+getEncodeQueueSize self = liftDOM ((js_getEncodeQueueSize (self)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoder-ondequeue dequeue event>
+dequeue :: EventName AudioEncoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderConfig.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioEncoderConfig
+       (js_newAudioEncoderConfig, js_setCodec, js_getCodec, js_setSampleRate, js_getSampleRate, js_setNumberOfChannels, js_getNumberOfChannels, js_setBitrate, js_getBitrate, js_setBitrateMode, js_getBitrateMode, js_setAac, js_getAac, js_setFlac, js_getFlac, js_setOpus, js_getOpus, newAudioEncoderConfig, setCodec, getCodec, setSampleRate, getSampleRate, setNumberOfChannels, getNumberOfChannels, setBitrate, getBitrate, getBitrateUnsafe, getBitrateUnchecked, setBitrateMode, getBitrateMode, getBitrateModeUnsafe, getBitrateModeUnchecked, setAac, getAac, getAacUnsafe, getAacUnchecked, setFlac, getFlac, getFlacUnsafe, getFlacUnchecked, setOpus, getOpus, getOpusUnsafe, getOpusUnchecked, AudioEncoderConfig(..), gTypeAudioEncoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"codec\": $1, \"sampleRate\": $2, \"numberOfChannels\": $3}); })"
+        js_newAudioEncoderConfig :: JSString -> Word -> Word -> IO AudioEncoderConfig
+-- | <https://w3c.github.io/webcodecs/#dictdef-audioencoderconfig AudioEncoderConfig specification>
+newAudioEncoderConfig :: (MonadDOM m, ToJSString codec) => codec -> Word -> Word -> m AudioEncoderConfig
+newAudioEncoderConfig codec sampleRate numberOfChannels = liftDOM ((js_newAudioEncoderConfig (toJSString codec) (sampleRate) (numberOfChannels)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codec\"] = $2; })"
+        js_setCodec :: AudioEncoderConfig -> JSString -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-codec AudioEncoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => AudioEncoderConfig -> val -> m ()
+setCodec self val = liftDOM (void ((js_setCodec (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codec\"]; })"
+        js_getCodec :: AudioEncoderConfig -> IO JSString
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-codec AudioEncoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => AudioEncoderConfig -> m result
+getCodec self = liftDOM ((fromJSString <$> (js_getCodec (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: AudioEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-samplerate AudioEncoderConfig.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioEncoderConfig -> Word -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioEncoderConfig -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-samplerate AudioEncoderConfig.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioEncoderConfig -> m Word
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfChannels\"] = $2; })"
+        js_setNumberOfChannels :: AudioEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-numberofchannels AudioEncoderConfig.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioEncoderConfig -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void ((js_setNumberOfChannels (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
+        js_getNumberOfChannels :: AudioEncoderConfig -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-numberofchannels AudioEncoderConfig.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioEncoderConfig -> m Word
+getNumberOfChannels self = liftDOM ((js_getNumberOfChannels (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bitrate\"] = $2; })"
+        js_setBitrate :: AudioEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitrate AudioEncoderConfig.bitrate specification>
+setBitrate :: (MonadDOM m) => AudioEncoderConfig -> Word53 -> m ()
+setBitrate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBitrate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bitrate\"]; })"
+        js_getBitrate :: AudioEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitrate AudioEncoderConfig.bitrate specification>
+getBitrate :: (MonadDOM m) => AudioEncoderConfig -> m (Maybe Word53)
+getBitrate self = liftDOM (((js_getBitrate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitrate AudioEncoderConfig.bitrate specification>
+getBitrateUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderConfig -> m Word53
+getBitrateUnsafe self = liftDOM ((((js_getBitrate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitrate AudioEncoderConfig.bitrate specification>
+getBitrateUnchecked :: (MonadDOM m) => AudioEncoderConfig -> m Word53
+getBitrateUnchecked self = liftDOM ((pFromJSVal <$> (js_getBitrate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bitrateMode\"] = $2; })"
+        js_setBitrateMode :: AudioEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitratemode AudioEncoderConfig.bitrateMode specification>
+setBitrateMode :: (MonadDOM m) => AudioEncoderConfig -> BitrateMode -> m ()
+setBitrateMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBitrateMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bitrateMode\"]; })"
+        js_getBitrateMode :: AudioEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitratemode AudioEncoderConfig.bitrateMode specification>
+getBitrateMode :: (MonadDOM m) => AudioEncoderConfig -> m (Maybe BitrateMode)
+getBitrateMode self = liftDOM (((js_getBitrateMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitratemode AudioEncoderConfig.bitrateMode specification>
+getBitrateModeUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderConfig -> m BitrateMode
+getBitrateModeUnsafe self = liftDOM ((((js_getBitrateMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitratemode AudioEncoderConfig.bitrateMode specification>
+getBitrateModeUnchecked :: (MonadDOM m) => AudioEncoderConfig -> m BitrateMode
+getBitrateModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getBitrateMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"aac\"] = $2; })"
+        js_setAac :: AudioEncoderConfig -> AacEncoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-audioencoderconfig-aac AudioEncoderConfig.aac specification>
+setAac :: (MonadDOM m) => AudioEncoderConfig -> AacEncoderConfig -> m ()
+setAac self val = liftDOM (void ((js_setAac (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aac\"]; })"
+        js_getAac :: AudioEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-audioencoderconfig-aac AudioEncoderConfig.aac specification>
+getAac :: (MonadDOM m) => AudioEncoderConfig -> m (Maybe AacEncoderConfig)
+getAac self = liftDOM (((js_getAac (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-audioencoderconfig-aac AudioEncoderConfig.aac specification>
+getAacUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderConfig -> m AacEncoderConfig
+getAacUnsafe self = liftDOM ((((js_getAac (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dom-audioencoderconfig-aac AudioEncoderConfig.aac specification>
+getAacUnchecked :: (MonadDOM m) => AudioEncoderConfig -> m AacEncoderConfig
+getAacUnchecked self = liftDOM ((pFromJSVal <$> (js_getAac (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flac\"] = $2; })"
+        js_setFlac :: AudioEncoderConfig -> FlacEncoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-audioencoderconfig-flac AudioEncoderConfig.flac specification>
+setFlac :: (MonadDOM m) => AudioEncoderConfig -> FlacEncoderConfig -> m ()
+setFlac self val = liftDOM (void ((js_setFlac (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flac\"]; })"
+        js_getFlac :: AudioEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-audioencoderconfig-flac AudioEncoderConfig.flac specification>
+getFlac :: (MonadDOM m) => AudioEncoderConfig -> m (Maybe FlacEncoderConfig)
+getFlac self = liftDOM (((js_getFlac (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-audioencoderconfig-flac AudioEncoderConfig.flac specification>
+getFlacUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderConfig -> m FlacEncoderConfig
+getFlacUnsafe self = liftDOM ((((js_getFlac (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-audioencoderconfig-flac AudioEncoderConfig.flac specification>
+getFlacUnchecked :: (MonadDOM m) => AudioEncoderConfig -> m FlacEncoderConfig
+getFlacUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlac (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"opus\"] = $2; })"
+        js_setOpus :: AudioEncoderConfig -> OpusEncoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-audioencoderconfig-opus AudioEncoderConfig.opus specification>
+setOpus :: (MonadDOM m) => AudioEncoderConfig -> OpusEncoderConfig -> m ()
+setOpus self val = liftDOM (void ((js_setOpus (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"opus\"]; })"
+        js_getOpus :: AudioEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-audioencoderconfig-opus AudioEncoderConfig.opus specification>
+getOpus :: (MonadDOM m) => AudioEncoderConfig -> m (Maybe OpusEncoderConfig)
+getOpus self = liftDOM (((js_getOpus (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-audioencoderconfig-opus AudioEncoderConfig.opus specification>
+getOpusUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderConfig -> m OpusEncoderConfig
+getOpusUnsafe self = liftDOM ((((js_getOpus (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-audioencoderconfig-opus AudioEncoderConfig.opus specification>
+getOpusUnchecked :: (MonadDOM m) => AudioEncoderConfig -> m OpusEncoderConfig
+getOpusUnchecked self = liftDOM ((pFromJSVal <$> (js_getOpus (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderInit.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioEncoderInit
+       (js_newAudioEncoderInit, js_setOutput, js_setError, newAudioEncoderInit, setOutput, setError, AudioEncoderInit(..), gTypeAudioEncoderInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"output\": $1, \"error\": $2}); })"
+        js_newAudioEncoderInit :: JSVal -> JSVal -> IO AudioEncoderInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-audioencoderinit AudioEncoderInit specification>
+newAudioEncoderInit :: (MonadDOM m) => EncodedAudioChunkOutputCallback -> WebCodecsErrorCallback -> m AudioEncoderInit
+newAudioEncoderInit output error = liftDOM (((toJSVal output) >>= \a1' -> (toJSVal error) >>= \a2' -> js_newAudioEncoderInit a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"output\"] = $2; })"
+        js_setOutput :: AudioEncoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderinit-output AudioEncoderInit.output specification>
+setOutput :: (MonadDOM m) => AudioEncoderInit -> EncodedAudioChunkOutputCallback -> m ()
+setOutput self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOutput (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: AudioEncoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderinit-error AudioEncoderInit.error specification>
+setError :: (MonadDOM m) => AudioEncoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setError (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderSupport.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioEncoderSupport.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioEncoderSupport
+       (js_newAudioEncoderSupport, js_setSupported, js_getSupported, js_setConfig, js_getConfig, newAudioEncoderSupport, setSupported, getSupported, getSupportedUnsafe, getSupportedUnchecked, setConfig, getConfig, getConfigUnsafe, getConfigUnchecked, AudioEncoderSupport(..), gTypeAudioEncoderSupport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAudioEncoderSupport :: IO AudioEncoderSupport
+-- | <https://w3c.github.io/webcodecs/#dictdef-audioencodersupport AudioEncoderSupport specification>
+newAudioEncoderSupport :: (MonadDOM m) => m AudioEncoderSupport
+newAudioEncoderSupport = liftDOM ((js_newAudioEncoderSupport))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supported\"] = $2; })"
+        js_setSupported :: AudioEncoderSupport -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-supported AudioEncoderSupport.supported specification>
+setSupported :: (MonadDOM m) => AudioEncoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void ((js_setSupported (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supported\"]; })"
+        js_getSupported :: AudioEncoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-supported AudioEncoderSupport.supported specification>
+getSupported :: (MonadDOM m) => AudioEncoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((js_getSupported (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-supported AudioEncoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((js_getSupported (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-supported AudioEncoderSupport.supported specification>
+getSupportedUnchecked :: (MonadDOM m) => AudioEncoderSupport -> m Bool
+getSupportedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupported (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"config\"] = $2; })"
+        js_setConfig :: AudioEncoderSupport -> AudioEncoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-config AudioEncoderSupport.config specification>
+setConfig :: (MonadDOM m) => AudioEncoderSupport -> AudioEncoderConfig -> m ()
+setConfig self val = liftDOM (void ((js_setConfig (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"config\"]; })"
+        js_getConfig :: AudioEncoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-config AudioEncoderSupport.config specification>
+getConfig :: (MonadDOM m) => AudioEncoderSupport -> m (Maybe AudioEncoderConfig)
+getConfig self = liftDOM (((js_getConfig (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-config AudioEncoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderSupport -> m AudioEncoderConfig
+getConfigUnsafe self = liftDOM ((((js_getConfig (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-config AudioEncoderSupport.config specification>
+getConfigUnchecked :: (MonadDOM m) => AudioEncoderSupport -> m AudioEncoderConfig
+getConfigUnchecked self = liftDOM ((pFromJSVal <$> (js_getConfig (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
@@ -1,88 +1,83 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioListener
-       (js_setPosition, setPosition, js_setOrientation, setOrientation,
-        js_setVelocity, setVelocity, js_setDopplerFactor, setDopplerFactor,
-        js_getDopplerFactor, getDopplerFactor, js_setSpeedOfSound,
-        setSpeedOfSound, js_getSpeedOfSound, getSpeedOfSound,
-        AudioListener(..), gTypeAudioListener)
+       (js_setOrientation, js_setPosition, js_getPositionX, js_getPositionY, js_getPositionZ, js_getForwardX, js_getForwardY, js_getForwardZ, js_getUpX, js_getUpY, js_getUpZ, setOrientation, setPosition, getPositionX, getPositionY, getPositionZ, getForwardX, getForwardY, getForwardZ, getUpX, getUpY, getUpZ, AudioListener(..), gTypeAudioListener)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setPosition\"]($2, $3, $4); })"
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"setOrientation\"]($2, $3, $4, $5, $6, $7); })"
+        js_setOrientation :: AudioListener -> Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/setOrientation MDN AudioListener.setOrientation documentation>
+setOrientation :: (MonadDOM m) => AudioListener -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setOrientation self x y z xUp yUp zUp = liftDOM (void ((js_setOrientation (self) (x) (y) (z) (xUp) (yUp) (zUp))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setPosition\"]($2, $3, $4); })"
         js_setPosition :: AudioListener -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/setPosition MDN AudioListener.setPosition documentation>
+setPosition :: (MonadDOM m) => AudioListener -> Float -> Float -> Float -> m ()
+setPosition self x y z = liftDOM (void ((js_setPosition (self) (x) (y) (z))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setPosition Mozilla AudioListener.setPosition documentation> 
-setPosition ::
-            (MonadIO m) => AudioListener -> Float -> Float -> Float -> m ()
-setPosition self x y z = liftIO (js_setPosition self x y z)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"setOrientation\"]($2, $3, $4,\n$5, $6, $7); })" js_setOrientation
-        ::
-        AudioListener ->
-          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"positionX\"]; })"
+        js_getPositionX :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/positionX MDN AudioListener.positionX documentation>
+getPositionX :: (MonadDOM m) => AudioListener -> m AudioParam
+getPositionX self = liftDOM ((js_getPositionX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setOrientation Mozilla AudioListener.setOrientation documentation> 
-setOrientation ::
-               (MonadIO m) =>
-                 AudioListener ->
-                   Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setOrientation self x y z xUp yUp zUp
-  = liftIO (js_setOrientation self x y z xUp yUp zUp)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setVelocity\"]($2, $3, $4); })"
-        js_setVelocity :: AudioListener -> Float -> Float -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"positionY\"]; })"
+        js_getPositionY :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/positionY MDN AudioListener.positionY documentation>
+getPositionY :: (MonadDOM m) => AudioListener -> m AudioParam
+getPositionY self = liftDOM ((js_getPositionY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setVelocity Mozilla AudioListener.setVelocity documentation> 
-setVelocity ::
-            (MonadIO m) => AudioListener -> Float -> Float -> Float -> m ()
-setVelocity self x y z = liftIO (js_setVelocity self x y z)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dopplerFactor\"] = $2; })"
-        js_setDopplerFactor :: AudioListener -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"positionZ\"]; })"
+        js_getPositionZ :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/positionZ MDN AudioListener.positionZ documentation>
+getPositionZ :: (MonadDOM m) => AudioListener -> m AudioParam
+getPositionZ self = liftDOM ((js_getPositionZ (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
-setDopplerFactor :: (MonadIO m) => AudioListener -> Float -> m ()
-setDopplerFactor self val = liftIO (js_setDopplerFactor self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dopplerFactor\"]; })"
-        js_getDopplerFactor :: AudioListener -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"forwardX\"]; })"
+        js_getForwardX :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/forwardX MDN AudioListener.forwardX documentation>
+getForwardX :: (MonadDOM m) => AudioListener -> m AudioParam
+getForwardX self = liftDOM ((js_getForwardX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
-getDopplerFactor :: (MonadIO m) => AudioListener -> m Float
-getDopplerFactor self = liftIO (js_getDopplerFactor self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"speedOfSound\"] = $2; })"
-        js_setSpeedOfSound :: AudioListener -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"forwardY\"]; })"
+        js_getForwardY :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/forwardY MDN AudioListener.forwardY documentation>
+getForwardY :: (MonadDOM m) => AudioListener -> m AudioParam
+getForwardY self = liftDOM ((js_getForwardY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
-setSpeedOfSound :: (MonadIO m) => AudioListener -> Float -> m ()
-setSpeedOfSound self val = liftIO (js_setSpeedOfSound self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"speedOfSound\"]; })"
-        js_getSpeedOfSound :: AudioListener -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"forwardZ\"]; })"
+        js_getForwardZ :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/forwardZ MDN AudioListener.forwardZ documentation>
+getForwardZ :: (MonadDOM m) => AudioListener -> m AudioParam
+getForwardZ self = liftDOM ((js_getForwardZ (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
-getSpeedOfSound :: (MonadIO m) => AudioListener -> m Float
-getSpeedOfSound self = liftIO (js_getSpeedOfSound self)
+foreign import javascript unsafe "(($1) => { return $1[\"upX\"]; })"
+        js_getUpX :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/upX MDN AudioListener.upX documentation>
+getUpX :: (MonadDOM m) => AudioListener -> m AudioParam
+getUpX self = liftDOM ((js_getUpX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"upY\"]; })"
+        js_getUpY :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/upY MDN AudioListener.upY documentation>
+getUpY :: (MonadDOM m) => AudioListener -> m AudioParam
+getUpY self = liftDOM ((js_getUpY (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"upZ\"]; })"
+        js_getUpZ :: AudioListener -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/upZ MDN AudioListener.upZ documentation>
+getUpZ :: (MonadDOM m) => AudioListener -> m AudioParam
+getUpZ self = liftDOM ((js_getUpZ (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
@@ -1,159 +1,129 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioNode
-       (js_connect, connect, js_connectParam, connectParam, js_disconnect,
-        disconnect, js_getContext, getContext, js_getNumberOfInputs,
-        getNumberOfInputs, js_getNumberOfOutputs, getNumberOfOutputs,
-        js_setChannelCount, setChannelCount, js_getChannelCount,
-        getChannelCount, js_setChannelCountMode, setChannelCountMode,
-        js_getChannelCountMode, getChannelCountMode,
-        js_setChannelInterpretation, setChannelInterpretation,
-        js_getChannelInterpretation, getChannelInterpretation,
-        AudioNode(..), gTypeAudioNode, IsAudioNode, toAudioNode)
+       (js_connect, js_connectParam, js_disconnect', js_disconnect, js_disconnectDestinationNode, js_disconnectDestinationNodeOutput, js_disconnectDestinationNodeOutputInput, js_disconnectDestinationParam, js_disconnectDestinationParamOutput, js_getContext, js_getNumberOfInputs, js_getNumberOfOutputs, js_setChannelCount, js_getChannelCount, js_setChannelCountMode, js_getChannelCountMode, js_setChannelInterpretation, js_getChannelInterpretation, connect, connect_, connectParam, disconnect', disconnect, disconnectDestinationNode, disconnectDestinationNodeOutput, disconnectDestinationNodeOutputInput, disconnectDestinationParam, disconnectDestinationParamOutput, getContext, getNumberOfInputs, getNumberOfOutputs, setChannelCount, getChannelCount, setChannelCountMode, getChannelCountMode, setChannelInterpretation, getChannelInterpretation, AudioNode(..), gTypeAudioNode, IsAudioNode, toAudioNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"connect\"]($2, $3, $4); })"
-        js_connect ::
-        AudioNode -> AudioNode -> Optional Word -> Optional Word -> IO ()
+        js_connect :: AudioNode -> AudioNode -> JSVal -> JSVal -> IO AudioNode
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/connect MDN AudioNode.connect documentation>
+connect :: (MonadDOM m, IsAudioNode self, IsAudioNode destinationNode) => self -> destinationNode -> Maybe Word -> Maybe Word -> m AudioNode
+connect self destinationNode output input = liftDOM (((P.maybe (P.return jsUndefined) toJSVal output) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal input) >>= \a4' -> js_connect ((Types.toAudioNode self)) (Types.toAudioNode destinationNode) a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
-connect ::
-        (MonadIO m, IsAudioNode self, IsAudioNode destination) =>
-          self -> destination -> Maybe Word -> Maybe Word -> m ()
-connect self destination output input
-  = liftIO
-      (js_connect (toAudioNode self) (toAudioNode destination)
-         (maybeToOptional output)
-         (maybeToOptional input))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/connect MDN AudioNode.connect documentation>
+connect_ :: (MonadDOM m, IsAudioNode self, IsAudioNode destinationNode) => self -> destinationNode -> Maybe Word -> Maybe Word -> m ()
+connect_ self destinationNode output input = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal output) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal input) >>= \a4' -> js_connect ((Types.toAudioNode self)) (Types.toAudioNode destinationNode) a3' a4')))
+
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"connect\"]($2, $3); })"
-        js_connectParam ::
-        AudioNode -> AudioParam -> Optional Word -> IO ()
+        js_connectParam :: AudioNode -> AudioParam -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/connect MDN AudioNode.connect documentation>
+connectParam :: (MonadDOM m, IsAudioNode self) => self -> AudioParam -> Maybe Word -> m ()
+connectParam self destinationParam output = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal output) >>= \a3' -> js_connectParam ((Types.toAudioNode self)) (destinationParam) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
-connectParam ::
-             (MonadIO m, IsAudioNode self) =>
-               self -> AudioParam -> Maybe Word -> m ()
-connectParam self destination output
-  = liftIO
-      (js_connectParam (toAudioNode self) destination
-         (maybeToOptional output))
- 
+foreign import javascript safe "(($1) => { return $1[\"disconnect\"](); })"
+        js_disconnect' :: AudioNode -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnect' :: (MonadDOM m, IsAudioNode self) => self -> m ()
+disconnect' self = liftDOM (void ((js_disconnect' ((Types.toAudioNode self)))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"disconnect\"]($2); })"
-        js_disconnect :: AudioNode -> Optional Word -> IO ()
+        js_disconnect :: AudioNode -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnect :: (MonadDOM m, IsAudioNode self) => self -> Word -> m ()
+disconnect self output = liftDOM (void ((js_disconnect ((Types.toAudioNode self)) (output))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.disconnect Mozilla AudioNode.disconnect documentation> 
-disconnect ::
-           (MonadIO m, IsAudioNode self) => self -> Maybe Word -> m ()
-disconnect self output
-  = liftIO
-      (js_disconnect (toAudioNode self) (maybeToOptional output))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"context\"]; })" js_getContext ::
-        AudioNode -> IO AudioContext
+foreign import javascript safe "(($1, $2) => { return $1[\"disconnect\"]($2); })"
+        js_disconnectDestinationNode :: AudioNode -> AudioNode -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnectDestinationNode :: (MonadDOM m, IsAudioNode self, IsAudioNode destinationNode) => self -> destinationNode -> m ()
+disconnectDestinationNode self destinationNode = liftDOM (void ((js_disconnectDestinationNode ((Types.toAudioNode self)) (Types.toAudioNode destinationNode))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.context Mozilla AudioNode.context documentation> 
-getContext ::
-           (MonadIO m, IsAudioNode self) => self -> m AudioContext
-getContext self = liftIO (js_getContext (toAudioNode self))
- 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"disconnect\"]($2, $3); })"
+        js_disconnectDestinationNodeOutput :: AudioNode -> AudioNode -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnectDestinationNodeOutput :: (MonadDOM m, IsAudioNode self, IsAudioNode destinationNode) => self -> destinationNode -> Word -> m ()
+disconnectDestinationNodeOutput self destinationNode output = liftDOM (void ((js_disconnectDestinationNodeOutput ((Types.toAudioNode self)) (Types.toAudioNode destinationNode) (output))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"disconnect\"]($2, $3, $4); })"
+        js_disconnectDestinationNodeOutputInput :: AudioNode -> AudioNode -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnectDestinationNodeOutputInput :: (MonadDOM m, IsAudioNode self, IsAudioNode destinationNode) => self -> destinationNode -> Word -> Word -> m ()
+disconnectDestinationNodeOutputInput self destinationNode output input = liftDOM (void ((js_disconnectDestinationNodeOutputInput ((Types.toAudioNode self)) (Types.toAudioNode destinationNode) (output) (input))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"disconnect\"]($2); })"
+        js_disconnectDestinationParam :: AudioNode -> AudioParam -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnectDestinationParam :: (MonadDOM m, IsAudioNode self) => self -> AudioParam -> m ()
+disconnectDestinationParam self destinationParam = liftDOM (void ((js_disconnectDestinationParam ((Types.toAudioNode self)) (destinationParam))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"disconnect\"]($2, $3); })"
+        js_disconnectDestinationParamOutput :: AudioNode -> AudioParam -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnectDestinationParamOutput :: (MonadDOM m, IsAudioNode self) => self -> AudioParam -> Word -> m ()
+disconnectDestinationParamOutput self destinationParam output = liftDOM (void ((js_disconnectDestinationParamOutput ((Types.toAudioNode self)) (destinationParam) (output))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"context\"]; })"
+        js_getContext :: AudioNode -> IO BaseAudioContext
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/context MDN AudioNode.context documentation>
+getContext :: (MonadDOM m, IsAudioNode self) => self -> m BaseAudioContext
+getContext self = liftDOM ((js_getContext ((Types.toAudioNode self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfInputs\"]; })"
         js_getNumberOfInputs :: AudioNode -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfInputs MDN AudioNode.numberOfInputs documentation>
+getNumberOfInputs :: (MonadDOM m, IsAudioNode self) => self -> m Word
+getNumberOfInputs self = liftDOM ((js_getNumberOfInputs ((Types.toAudioNode self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfInputs Mozilla AudioNode.numberOfInputs documentation> 
-getNumberOfInputs ::
-                  (MonadIO m, IsAudioNode self) => self -> m Word
-getNumberOfInputs self
-  = liftIO (js_getNumberOfInputs (toAudioNode self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfOutputs\"]; })"
         js_getNumberOfOutputs :: AudioNode -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfOutputs MDN AudioNode.numberOfOutputs documentation>
+getNumberOfOutputs :: (MonadDOM m, IsAudioNode self) => self -> m Word
+getNumberOfOutputs self = liftDOM ((js_getNumberOfOutputs ((Types.toAudioNode self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfOutputs Mozilla AudioNode.numberOfOutputs documentation> 
-getNumberOfOutputs ::
-                   (MonadIO m, IsAudioNode self) => self -> m Word
-getNumberOfOutputs self
-  = liftIO (js_getNumberOfOutputs (toAudioNode self))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"channelCount\"] = $2; })"
         js_setChannelCount :: AudioNode -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelCount MDN AudioNode.channelCount documentation>
+setChannelCount :: (MonadDOM m, IsAudioNode self) => self -> Word -> m ()
+setChannelCount self val = liftDOM (void ((js_setChannelCount ((Types.toAudioNode self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
-setChannelCount ::
-                (MonadIO m, IsAudioNode self) => self -> Word -> m ()
-setChannelCount self val
-  = liftIO (js_setChannelCount (toAudioNode self) val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"channelCount\"]; })"
         js_getChannelCount :: AudioNode -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelCount MDN AudioNode.channelCount documentation>
+getChannelCount :: (MonadDOM m, IsAudioNode self) => self -> m Word
+getChannelCount self = liftDOM ((js_getChannelCount ((Types.toAudioNode self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
-getChannelCount :: (MonadIO m, IsAudioNode self) => self -> m Word
-getChannelCount self
-  = liftIO (js_getChannelCount (toAudioNode self))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"channelCountMode\"] = $2; })"
-        js_setChannelCountMode :: AudioNode -> JSString -> IO ()
+        js_setChannelCountMode :: AudioNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelCountMode MDN AudioNode.channelCountMode documentation>
+setChannelCountMode :: (MonadDOM m, IsAudioNode self) => self -> ChannelCountMode -> m ()
+setChannelCountMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChannelCountMode ((Types.toAudioNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
-setChannelCountMode ::
-                    (MonadIO m, IsAudioNode self, ToJSString val) =>
-                      self -> val -> m ()
-setChannelCountMode self val
-  = liftIO
-      (js_setChannelCountMode (toAudioNode self) (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"channelCountMode\"]; })"
-        js_getChannelCountMode :: AudioNode -> IO JSString
+        js_getChannelCountMode :: AudioNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelCountMode MDN AudioNode.channelCountMode documentation>
+getChannelCountMode :: (MonadDOM m, IsAudioNode self) => self -> m ChannelCountMode
+getChannelCountMode self = liftDOM (((js_getChannelCountMode ((Types.toAudioNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
-getChannelCountMode ::
-                    (MonadIO m, IsAudioNode self, FromJSString result) =>
-                      self -> m result
-getChannelCountMode self
-  = liftIO
-      (fromJSString <$> (js_getChannelCountMode (toAudioNode self)))
- 
-foreign import javascript safe
-        "(($1, $2) => { $1[\"channelInterpretation\"] = $2; })" js_setChannelInterpretation
-        :: AudioNode -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"channelInterpretation\"] = $2; })"
+        js_setChannelInterpretation :: AudioNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelInterpretation MDN AudioNode.channelInterpretation documentation>
+setChannelInterpretation :: (MonadDOM m, IsAudioNode self) => self -> ChannelInterpretation -> m ()
+setChannelInterpretation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChannelInterpretation ((Types.toAudioNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
-setChannelInterpretation ::
-                         (MonadIO m, IsAudioNode self, ToJSString val) =>
-                           self -> val -> m ()
-setChannelInterpretation self val
-  = liftIO
-      (js_setChannelInterpretation (toAudioNode self) (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"channelInterpretation\"]; })"
-        js_getChannelInterpretation :: AudioNode -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
-getChannelInterpretation ::
-                         (MonadIO m, IsAudioNode self, FromJSString result) =>
-                           self -> m result
-getChannelInterpretation self
-  = liftIO
-      (fromJSString <$> (js_getChannelInterpretation (toAudioNode self)))
+        js_getChannelInterpretation :: AudioNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelInterpretation MDN AudioNode.channelInterpretation documentation>
+getChannelInterpretation :: (MonadDOM m, IsAudioNode self) => self -> m ChannelInterpretation
+getChannelInterpretation self = liftDOM (((js_getChannelInterpretation ((Types.toAudioNode self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioNodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioNodeOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioNodeOptions
+       (js_newAudioNodeOptions, js_setChannelCount, js_getChannelCount, js_setChannelCountMode, js_getChannelCountMode, js_setChannelInterpretation, js_getChannelInterpretation, newAudioNodeOptions, setChannelCount, getChannelCount, getChannelCountUnsafe, getChannelCountUnchecked, setChannelCountMode, getChannelCountMode, getChannelCountModeUnsafe, getChannelCountModeUnchecked, setChannelInterpretation, getChannelInterpretation, getChannelInterpretationUnsafe, getChannelInterpretationUnchecked, AudioNodeOptions(..), gTypeAudioNodeOptions, IsAudioNodeOptions, toAudioNodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAudioNodeOptions :: IO AudioNodeOptions
+-- | <https://webaudio.github.io/web-audio-api/#AudioNodeOptions AudioNodeOptions specification>
+newAudioNodeOptions :: (MonadDOM m) => m AudioNodeOptions
+newAudioNodeOptions = liftDOM ((js_newAudioNodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channelCount\"] = $2; })"
+        js_setChannelCount :: AudioNodeOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcount AudioNodeOptions.channelCount specification>
+setChannelCount :: (MonadDOM m, IsAudioNodeOptions self) => self -> Word -> m ()
+setChannelCount self val = liftDOM (void ((js_setChannelCount ((Types.toAudioNodeOptions self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channelCount\"]; })"
+        js_getChannelCount :: AudioNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcount AudioNodeOptions.channelCount specification>
+getChannelCount :: (MonadDOM m, IsAudioNodeOptions self) => self -> m (Maybe Word)
+getChannelCount self = liftDOM (((js_getChannelCount ((Types.toAudioNodeOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcount AudioNodeOptions.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, IsAudioNodeOptions self, HasCallStack) => self -> m Word
+getChannelCountUnsafe self = liftDOM ((((js_getChannelCount ((Types.toAudioNodeOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcount AudioNodeOptions.channelCount specification>
+getChannelCountUnchecked :: (MonadDOM m, IsAudioNodeOptions self) => self -> m Word
+getChannelCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannelCount ((Types.toAudioNodeOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channelCountMode\"] = $2; })"
+        js_setChannelCountMode :: AudioNodeOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcountmode AudioNodeOptions.channelCountMode specification>
+setChannelCountMode :: (MonadDOM m, IsAudioNodeOptions self) => self -> ChannelCountMode -> m ()
+setChannelCountMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChannelCountMode ((Types.toAudioNodeOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channelCountMode\"]; })"
+        js_getChannelCountMode :: AudioNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcountmode AudioNodeOptions.channelCountMode specification>
+getChannelCountMode :: (MonadDOM m, IsAudioNodeOptions self) => self -> m (Maybe ChannelCountMode)
+getChannelCountMode self = liftDOM (((js_getChannelCountMode ((Types.toAudioNodeOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcountmode AudioNodeOptions.channelCountMode specification>
+getChannelCountModeUnsafe :: (MonadDOM m, IsAudioNodeOptions self, HasCallStack) => self -> m ChannelCountMode
+getChannelCountModeUnsafe self = liftDOM ((((js_getChannelCountMode ((Types.toAudioNodeOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelcountmode AudioNodeOptions.channelCountMode specification>
+getChannelCountModeUnchecked :: (MonadDOM m, IsAudioNodeOptions self) => self -> m ChannelCountMode
+getChannelCountModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannelCountMode ((Types.toAudioNodeOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channelInterpretation\"] = $2; })"
+        js_setChannelInterpretation :: AudioNodeOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelinterpretation AudioNodeOptions.channelInterpretation specification>
+setChannelInterpretation :: (MonadDOM m, IsAudioNodeOptions self) => self -> ChannelInterpretation -> m ()
+setChannelInterpretation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChannelInterpretation ((Types.toAudioNodeOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channelInterpretation\"]; })"
+        js_getChannelInterpretation :: AudioNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelinterpretation AudioNodeOptions.channelInterpretation specification>
+getChannelInterpretation :: (MonadDOM m, IsAudioNodeOptions self) => self -> m (Maybe ChannelInterpretation)
+getChannelInterpretation self = liftDOM (((js_getChannelInterpretation ((Types.toAudioNodeOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelinterpretation AudioNodeOptions.channelInterpretation specification>
+getChannelInterpretationUnsafe :: (MonadDOM m, IsAudioNodeOptions self, HasCallStack) => self -> m ChannelInterpretation
+getChannelInterpretationUnsafe self = liftDOM ((((js_getChannelInterpretation ((Types.toAudioNodeOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audionodeoptions-channelinterpretation AudioNodeOptions.channelInterpretation specification>
+getChannelInterpretationUnchecked :: (MonadDOM m, IsAudioNodeOptions self) => self -> m ChannelInterpretation
+getChannelInterpretationUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannelInterpretation ((Types.toAudioNodeOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
@@ -1,148 +1,129 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioParam
-       (js_setValueAtTime, setValueAtTime, js_linearRampToValueAtTime,
-        linearRampToValueAtTime, js_exponentialRampToValueAtTime,
-        exponentialRampToValueAtTime, js_setTargetAtTime, setTargetAtTime,
-        js_setValueCurveAtTime, setValueCurveAtTime,
-        js_cancelScheduledValues, cancelScheduledValues, js_setValue,
-        setValue, js_getValue, getValue, js_getMinValue, getMinValue,
-        js_getMaxValue, getMaxValue, js_getDefaultValue, getDefaultValue,
-        js_getName, getName, js_getUnits, getUnits, AudioParam(..),
-        gTypeAudioParam)
+       (js_cancelAndHoldAtTime, js_cancelScheduledValues, js_exponentialRampToValueAtTime, js_linearRampToValueAtTime, js_setTargetAtTime, js_setValueAtTime, js_setValueCurveAtTime, js_setValue, js_getValue, js_setAutomationRate, js_getAutomationRate, js_getDefaultValue, js_getMinValue, js_getMaxValue, cancelAndHoldAtTime, cancelAndHoldAtTime_, cancelScheduledValues, cancelScheduledValues_, exponentialRampToValueAtTime, exponentialRampToValueAtTime_, linearRampToValueAtTime, linearRampToValueAtTime_, setTargetAtTime, setTargetAtTime_, setValueAtTime, setValueAtTime_, setValueCurveAtTime, setValueCurveAtTime_, setValue, getValue, setAutomationRate, getAutomationRate, getDefaultValue, getMinValue, getMaxValue, AudioParam(..), gTypeAudioParam)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setValueAtTime\"]($2, $3); })"
-        js_setValueAtTime :: AudioParam -> Float -> Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueAtTime Mozilla AudioParam.setValueAtTime documentation> 
-setValueAtTime ::
-               (MonadIO m) => AudioParam -> Float -> Float -> m ()
-setValueAtTime self value time
-  = liftIO (js_setValueAtTime self value time)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"linearRampToValueAtTime\"]($2,\n$3); })"
-        js_linearRampToValueAtTime :: AudioParam -> Float -> Float -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"cancelAndHoldAtTime\"]($2); })"
+        js_cancelAndHoldAtTime :: AudioParam -> Double -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelAndHoldAtTime MDN AudioParam.cancelAndHoldAtTime documentation>
+cancelAndHoldAtTime :: (MonadDOM m) => AudioParam -> Double -> m AudioParam
+cancelAndHoldAtTime self cancelTime = liftDOM ((js_cancelAndHoldAtTime (self) (cancelTime)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.linearRampToValueAtTime Mozilla AudioParam.linearRampToValueAtTime documentation> 
-linearRampToValueAtTime ::
-                        (MonadIO m) => AudioParam -> Float -> Float -> m ()
-linearRampToValueAtTime self value time
-  = liftIO (js_linearRampToValueAtTime self value time)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"exponentialRampToValueAtTime\"]($2,\n$3); })"
-        js_exponentialRampToValueAtTime ::
-        AudioParam -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelAndHoldAtTime MDN AudioParam.cancelAndHoldAtTime documentation>
+cancelAndHoldAtTime_ :: (MonadDOM m) => AudioParam -> Double -> m ()
+cancelAndHoldAtTime_ self cancelTime = liftDOM (void ((js_cancelAndHoldAtTime (self) (cancelTime))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.exponentialRampToValueAtTime Mozilla AudioParam.exponentialRampToValueAtTime documentation> 
-exponentialRampToValueAtTime ::
-                             (MonadIO m) => AudioParam -> Float -> Float -> m ()
-exponentialRampToValueAtTime self value time
-  = liftIO (js_exponentialRampToValueAtTime self value time)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"setTargetAtTime\"]($2, $3,\n$4); })" js_setTargetAtTime ::
-        AudioParam -> Float -> Float -> Float -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"cancelScheduledValues\"]($2); })"
+        js_cancelScheduledValues :: AudioParam -> Double -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelScheduledValues MDN AudioParam.cancelScheduledValues documentation>
+cancelScheduledValues :: (MonadDOM m) => AudioParam -> Double -> m AudioParam
+cancelScheduledValues self cancelTime = liftDOM ((js_cancelScheduledValues (self) (cancelTime)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setTargetAtTime Mozilla AudioParam.setTargetAtTime documentation> 
-setTargetAtTime ::
-                (MonadIO m) => AudioParam -> Float -> Float -> Float -> m ()
-setTargetAtTime self target time timeConstant
-  = liftIO (js_setTargetAtTime self target time timeConstant)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"setValueCurveAtTime\"]($2,\n$3, $4); })" js_setValueCurveAtTime
-        :: AudioParam -> Optional Float32Array -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelScheduledValues MDN AudioParam.cancelScheduledValues documentation>
+cancelScheduledValues_ :: (MonadDOM m) => AudioParam -> Double -> m ()
+cancelScheduledValues_ self cancelTime = liftDOM (void ((js_cancelScheduledValues (self) (cancelTime))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueCurveAtTime Mozilla AudioParam.setValueCurveAtTime documentation> 
-setValueCurveAtTime ::
-                    (MonadIO m, IsFloat32Array values) =>
-                      AudioParam -> Maybe values -> Float -> Float -> m ()
-setValueCurveAtTime self values time duration
-  = liftIO
-      (js_setValueCurveAtTime self
-         (maybeToOptional (fmap toFloat32Array values))
-         time
-         duration)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"cancelScheduledValues\"]($2); })" js_cancelScheduledValues ::
-        AudioParam -> Float -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"exponentialRampToValueAtTime\"]($2, $3); })"
+        js_exponentialRampToValueAtTime :: AudioParam -> Float -> Double -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/exponentialRampToValueAtTime MDN AudioParam.exponentialRampToValueAtTime documentation>
+exponentialRampToValueAtTime :: (MonadDOM m) => AudioParam -> Float -> Double -> m AudioParam
+exponentialRampToValueAtTime self value endTime = liftDOM ((js_exponentialRampToValueAtTime (self) (value) (endTime)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.cancelScheduledValues Mozilla AudioParam.cancelScheduledValues documentation> 
-cancelScheduledValues :: (MonadIO m) => AudioParam -> Float -> m ()
-cancelScheduledValues self startTime
-  = liftIO (js_cancelScheduledValues self startTime)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: AudioParam -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/exponentialRampToValueAtTime MDN AudioParam.exponentialRampToValueAtTime documentation>
+exponentialRampToValueAtTime_ :: (MonadDOM m) => AudioParam -> Float -> Double -> m ()
+exponentialRampToValueAtTime_ self value endTime = liftDOM (void ((js_exponentialRampToValueAtTime (self) (value) (endTime))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
-setValue :: (MonadIO m) => AudioParam -> Float -> m ()
-setValue self val = liftIO (js_setValue self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        AudioParam -> IO Float
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"linearRampToValueAtTime\"]($2, $3); })"
+        js_linearRampToValueAtTime :: AudioParam -> Float -> Double -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/linearRampToValueAtTime MDN AudioParam.linearRampToValueAtTime documentation>
+linearRampToValueAtTime :: (MonadDOM m) => AudioParam -> Float -> Double -> m AudioParam
+linearRampToValueAtTime self value endTime = liftDOM ((js_linearRampToValueAtTime (self) (value) (endTime)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
-getValue :: (MonadIO m) => AudioParam -> m Float
-getValue self = liftIO (js_getValue self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"minValue\"]; })" js_getMinValue
-        :: AudioParam -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/linearRampToValueAtTime MDN AudioParam.linearRampToValueAtTime documentation>
+linearRampToValueAtTime_ :: (MonadDOM m) => AudioParam -> Float -> Double -> m ()
+linearRampToValueAtTime_ self value endTime = liftDOM (void ((js_linearRampToValueAtTime (self) (value) (endTime))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.minValue Mozilla AudioParam.minValue documentation> 
-getMinValue :: (MonadIO m) => AudioParam -> m Float
-getMinValue self = liftIO (js_getMinValue self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"maxValue\"]; })" js_getMaxValue
-        :: AudioParam -> IO Float
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setTargetAtTime\"]($2, $3, $4); })"
+        js_setTargetAtTime :: AudioParam -> Float -> Double -> Float -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/setTargetAtTime MDN AudioParam.setTargetAtTime documentation>
+setTargetAtTime :: (MonadDOM m) => AudioParam -> Float -> Double -> Float -> m AudioParam
+setTargetAtTime self target startTime timeConstant = liftDOM ((js_setTargetAtTime (self) (target) (startTime) (timeConstant)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.maxValue Mozilla AudioParam.maxValue documentation> 
-getMaxValue :: (MonadIO m) => AudioParam -> m Float
-getMaxValue self = liftIO (js_getMaxValue self)
- 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/setTargetAtTime MDN AudioParam.setTargetAtTime documentation>
+setTargetAtTime_ :: (MonadDOM m) => AudioParam -> Float -> Double -> Float -> m ()
+setTargetAtTime_ self target startTime timeConstant = liftDOM (void ((js_setTargetAtTime (self) (target) (startTime) (timeConstant))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setValueAtTime\"]($2, $3); })"
+        js_setValueAtTime :: AudioParam -> Float -> Double -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/setValueAtTime MDN AudioParam.setValueAtTime documentation>
+setValueAtTime :: (MonadDOM m) => AudioParam -> Float -> Double -> m AudioParam
+setValueAtTime self value startTime = liftDOM ((js_setValueAtTime (self) (value) (startTime)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/setValueAtTime MDN AudioParam.setValueAtTime documentation>
+setValueAtTime_ :: (MonadDOM m) => AudioParam -> Float -> Double -> m ()
+setValueAtTime_ self value startTime = liftDOM (void ((js_setValueAtTime (self) (value) (startTime))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setValueCurveAtTime\"]($2, $3, $4); })"
+        js_setValueCurveAtTime :: AudioParam -> JSVal -> Double -> Double -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/setValueCurveAtTime MDN AudioParam.setValueCurveAtTime documentation>
+setValueCurveAtTime :: (MonadDOM m) => AudioParam -> [Float] -> Double -> Double -> m AudioParam
+setValueCurveAtTime self values startTime duration = liftDOM (((toJSVal values) >>= \a2' -> js_setValueCurveAtTime (self) a2' (startTime) (duration)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/setValueCurveAtTime MDN AudioParam.setValueCurveAtTime documentation>
+setValueCurveAtTime_ :: (MonadDOM m) => AudioParam -> [Float] -> Double -> Double -> m ()
+setValueCurveAtTime_ self values startTime duration = liftDOM (void (((toJSVal values) >>= \a2' -> js_setValueCurveAtTime (self) a2' (startTime) (duration))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: AudioParam -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/value MDN AudioParam.value documentation>
+setValue :: (MonadDOM m) => AudioParam -> Float -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: AudioParam -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/value MDN AudioParam.value documentation>
+getValue :: (MonadDOM m) => AudioParam -> m Float
+getValue self = liftDOM ((js_getValue (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"automationRate\"] = $2; })"
+        js_setAutomationRate :: AudioParam -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioparam-automationrate AudioParam.automationRate specification>
+setAutomationRate :: (MonadDOM m) => AudioParam -> AutomationRate -> m ()
+setAutomationRate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAutomationRate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"automationRate\"]; })"
+        js_getAutomationRate :: AudioParam -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioparam-automationrate AudioParam.automationRate specification>
+getAutomationRate :: (MonadDOM m) => AudioParam -> m AutomationRate
+getAutomationRate self = liftDOM (((js_getAutomationRate (self)) >>= fromJSValUnchecked))
+
 foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
         js_getDefaultValue :: AudioParam -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.defaultValue Mozilla AudioParam.defaultValue documentation> 
-getDefaultValue :: (MonadIO m) => AudioParam -> m Float
-getDefaultValue self = liftIO (js_getDefaultValue self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        AudioParam -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/defaultValue MDN AudioParam.defaultValue documentation>
+getDefaultValue :: (MonadDOM m) => AudioParam -> m Float
+getDefaultValue self = liftDOM ((js_getDefaultValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.name Mozilla AudioParam.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => AudioParam -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"units\"]; })" js_getUnits ::
-        AudioParam -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"minValue\"]; })"
+        js_getMinValue :: AudioParam -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/minValue MDN AudioParam.minValue documentation>
+getMinValue :: (MonadDOM m) => AudioParam -> m Float
+getMinValue self = liftDOM ((js_getMinValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.units Mozilla AudioParam.units documentation> 
-getUnits :: (MonadIO m) => AudioParam -> m Word
-getUnits self = liftIO (js_getUnits self)
+foreign import javascript unsafe "(($1) => { return $1[\"maxValue\"]; })"
+        js_getMaxValue :: AudioParam -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/maxValue MDN AudioParam.maxValue documentation>
+getMaxValue :: (MonadDOM m) => AudioParam -> m Float
+getMaxValue self = liftDOM ((js_getMaxValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioParamMap.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioParamMap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioParamMap.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioParamMap
+       (AudioParamMap(..), gTypeAudioParamMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
@@ -1,51 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
-       (js_getPlaybackTime, getPlaybackTime, js_getInputBuffer,
-        getInputBuffer, js_getOutputBuffer, getOutputBuffer,
-        AudioProcessingEvent(..), gTypeAudioProcessingEvent)
+       (js_newAudioProcessingEvent, js_getPlaybackTime, js_getInputBuffer, js_getOutputBuffer, newAudioProcessingEvent, getPlaybackTime, getInputBuffer, getOutputBuffer, AudioProcessingEvent(..), gTypeAudioProcessingEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"AudioProcessingEvent\"]($1, $2); })"
+        js_newAudioProcessingEvent :: JSString -> AudioProcessingEventInit -> IO AudioProcessingEvent
+-- | <https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/AudioProcessingEvent MDN AudioProcessingEvent. documentation>
+newAudioProcessingEvent :: (MonadDOM m, ToJSString type') => type' -> AudioProcessingEventInit -> m AudioProcessingEvent
+newAudioProcessingEvent type' eventInitDict = liftDOM ((js_newAudioProcessingEvent (toJSString type') (eventInitDict)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"playbackTime\"]; })"
         js_getPlaybackTime :: AudioProcessingEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/playbackTime MDN AudioProcessingEvent.playbackTime documentation>
+getPlaybackTime :: (MonadDOM m) => AudioProcessingEvent -> m Double
+getPlaybackTime self = liftDOM ((js_getPlaybackTime (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.playbackTime Mozilla AudioProcessingEvent.playbackTime documentation> 
-getPlaybackTime :: (MonadIO m) => AudioProcessingEvent -> m Double
-getPlaybackTime self = liftIO (js_getPlaybackTime self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"inputBuffer\"]; })"
         js_getInputBuffer :: AudioProcessingEvent -> IO AudioBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/inputBuffer MDN AudioProcessingEvent.inputBuffer documentation>
+getInputBuffer :: (MonadDOM m) => AudioProcessingEvent -> m AudioBuffer
+getInputBuffer self = liftDOM ((js_getInputBuffer (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.inputBuffer Mozilla AudioProcessingEvent.inputBuffer documentation> 
-getInputBuffer ::
-               (MonadIO m) => AudioProcessingEvent -> m AudioBuffer
-getInputBuffer self = liftIO (js_getInputBuffer self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"outputBuffer\"]; })"
         js_getOutputBuffer :: AudioProcessingEvent -> IO AudioBuffer
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.outputBuffer Mozilla AudioProcessingEvent.outputBuffer documentation> 
-getOutputBuffer ::
-                (MonadIO m) => AudioProcessingEvent -> m AudioBuffer
-getOutputBuffer self = liftIO (js_getOutputBuffer self)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/outputBuffer MDN AudioProcessingEvent.outputBuffer documentation>
+getOutputBuffer :: (MonadDOM m) => AudioProcessingEvent -> m AudioBuffer
+getOutputBuffer self = liftDOM ((js_getOutputBuffer (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEventInit.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioProcessingEventInit
+       (js_newAudioProcessingEventInit, js_setPlaybackTime, js_getPlaybackTime, js_setInputBuffer, js_getInputBuffer, js_setOutputBuffer, js_getOutputBuffer, newAudioProcessingEventInit, setPlaybackTime, getPlaybackTime, setInputBuffer, getInputBuffer, setOutputBuffer, getOutputBuffer, AudioProcessingEventInit(..), gTypeAudioProcessingEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"playbackTime\": $1, \"inputBuffer\": $2, \"outputBuffer\": $3}); })"
+        js_newAudioProcessingEventInit :: Double -> AudioBuffer -> AudioBuffer -> IO AudioProcessingEventInit
+-- | <https://webaudio.github.io/web-audio-api/#AudioProcessingEventInit AudioProcessingEventInit specification>
+newAudioProcessingEventInit :: (MonadDOM m) => Double -> AudioBuffer -> AudioBuffer -> m AudioProcessingEventInit
+newAudioProcessingEventInit playbackTime inputBuffer outputBuffer = liftDOM ((js_newAudioProcessingEventInit (playbackTime) (inputBuffer) (outputBuffer)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackTime\"] = $2; })"
+        js_setPlaybackTime :: AudioProcessingEventInit -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-playbacktime AudioProcessingEventInit.playbackTime specification>
+setPlaybackTime :: (MonadDOM m) => AudioProcessingEventInit -> Double -> m ()
+setPlaybackTime self val = liftDOM (void ((js_setPlaybackTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackTime\"]; })"
+        js_getPlaybackTime :: AudioProcessingEventInit -> IO Double
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-playbacktime AudioProcessingEventInit.playbackTime specification>
+getPlaybackTime :: (MonadDOM m) => AudioProcessingEventInit -> m Double
+getPlaybackTime self = liftDOM ((js_getPlaybackTime (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inputBuffer\"] = $2; })"
+        js_setInputBuffer :: AudioProcessingEventInit -> AudioBuffer -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-inputbuffer AudioProcessingEventInit.inputBuffer specification>
+setInputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> AudioBuffer -> m ()
+setInputBuffer self val = liftDOM (void ((js_setInputBuffer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inputBuffer\"]; })"
+        js_getInputBuffer :: AudioProcessingEventInit -> IO AudioBuffer
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-inputbuffer AudioProcessingEventInit.inputBuffer specification>
+getInputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> m AudioBuffer
+getInputBuffer self = liftDOM ((js_getInputBuffer (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"outputBuffer\"] = $2; })"
+        js_setOutputBuffer :: AudioProcessingEventInit -> AudioBuffer -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-outputbuffer AudioProcessingEventInit.outputBuffer specification>
+setOutputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> AudioBuffer -> m ()
+setOutputBuffer self val = liftDOM (void ((js_setOutputBuffer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outputBuffer\"]; })"
+        js_getOutputBuffer :: AudioProcessingEventInit -> IO AudioBuffer
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-outputbuffer AudioProcessingEventInit.outputBuffer specification>
+getOutputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> m AudioBuffer
+getOutputBuffer self = liftDOM ((js_getOutputBuffer (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioScheduledSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioScheduledSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioScheduledSourceNode.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioScheduledSourceNode
+       (js_start, js_stop, start, stop, ended, AudioScheduledSourceNode(..), gTypeAudioScheduledSourceNode, IsAudioScheduledSourceNode, toAudioScheduledSourceNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })"
+        js_start :: AudioScheduledSourceNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioScheduledSourceNode/start MDN AudioScheduledSourceNode.start documentation>
+start :: (MonadDOM m, IsAudioScheduledSourceNode self) => self -> Maybe Double -> m ()
+start self when = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal when) >>= \a2' -> js_start ((Types.toAudioScheduledSourceNode self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"stop\"]($2); })"
+        js_stop :: AudioScheduledSourceNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioScheduledSourceNode/stop MDN AudioScheduledSourceNode.stop documentation>
+stop :: (MonadDOM m, IsAudioScheduledSourceNode self) => self -> Maybe Double -> m ()
+stop self when = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal when) >>= \a2' -> js_stop ((Types.toAudioScheduledSourceNode self)) a2')))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioscheduledsourcenode-onended ended event>
+ended :: (IsAudioScheduledSourceNode self, IsEventTarget self) => EventName self Event
+ended = unsafeEventName (toJSString "ended")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioSinkOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioSinkOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioSinkOptions.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioSinkOptions
+       (js_newAudioSinkOptions, js_setType, js_getType, newAudioSinkOptions, setType, getType, AudioSinkOptions(..), gTypeAudioSinkOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"type\": $1}); })"
+        js_newAudioSinkOptions :: JSVal -> IO AudioSinkOptions
+-- | <https://webaudio.github.io/web-audio-api/#AudioSinkOptions AudioSinkOptions specification>
+newAudioSinkOptions :: (MonadDOM m) => AudioSinkType -> m AudioSinkOptions
+newAudioSinkOptions type' = liftDOM (((toJSVal type') >>= \a1' -> js_newAudioSinkOptions a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: AudioSinkOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiosinkoptions-type AudioSinkOptions.type specification>
+setType :: (MonadDOM m) => AudioSinkOptions -> AudioSinkType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: AudioSinkOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiosinkoptions-type AudioSinkOptions.type specification>
+getType :: (MonadDOM m) => AudioSinkOptions -> m AudioSinkType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTimestamp.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTimestamp.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTimestamp.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioTimestamp
+       (js_newAudioTimestamp, js_setContextTime, js_getContextTime, js_setPerformanceTime, js_getPerformanceTime, newAudioTimestamp, setContextTime, getContextTime, getContextTimeUnsafe, getContextTimeUnchecked, setPerformanceTime, getPerformanceTime, getPerformanceTimeUnsafe, getPerformanceTimeUnchecked, AudioTimestamp(..), gTypeAudioTimestamp)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAudioTimestamp :: IO AudioTimestamp
+-- | <https://webaudio.github.io/web-audio-api/#AudioTimestamp AudioTimestamp specification>
+newAudioTimestamp :: (MonadDOM m) => m AudioTimestamp
+newAudioTimestamp = liftDOM ((js_newAudioTimestamp))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contextTime\"] = $2; })"
+        js_setContextTime :: AudioTimestamp -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-contexttime AudioTimestamp.contextTime specification>
+setContextTime :: (MonadDOM m) => AudioTimestamp -> Double -> m ()
+setContextTime self val = liftDOM (void ((js_setContextTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contextTime\"]; })"
+        js_getContextTime :: AudioTimestamp -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-contexttime AudioTimestamp.contextTime specification>
+getContextTime :: (MonadDOM m) => AudioTimestamp -> m (Maybe Double)
+getContextTime self = liftDOM (((js_getContextTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-contexttime AudioTimestamp.contextTime specification>
+getContextTimeUnsafe :: (MonadDOM m, HasCallStack) => AudioTimestamp -> m Double
+getContextTimeUnsafe self = liftDOM ((((js_getContextTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-contexttime AudioTimestamp.contextTime specification>
+getContextTimeUnchecked :: (MonadDOM m) => AudioTimestamp -> m Double
+getContextTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getContextTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"performanceTime\"] = $2; })"
+        js_setPerformanceTime :: AudioTimestamp -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-performancetime AudioTimestamp.performanceTime specification>
+setPerformanceTime :: (MonadDOM m) => AudioTimestamp -> Double -> m ()
+setPerformanceTime self val = liftDOM (void ((js_setPerformanceTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"performanceTime\"]; })"
+        js_getPerformanceTime :: AudioTimestamp -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-performancetime AudioTimestamp.performanceTime specification>
+getPerformanceTime :: (MonadDOM m) => AudioTimestamp -> m (Maybe Double)
+getPerformanceTime self = liftDOM (((js_getPerformanceTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-performancetime AudioTimestamp.performanceTime specification>
+getPerformanceTimeUnsafe :: (MonadDOM m, HasCallStack) => AudioTimestamp -> m Double
+getPerformanceTimeUnsafe self = liftDOM ((((js_getPerformanceTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-performancetime AudioTimestamp.performanceTime specification>
+getPerformanceTimeUnchecked :: (MonadDOM m) => AudioTimestamp -> m Double
+getPerformanceTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getPerformanceTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
@@ -1,98 +1,67 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioTrack
-       (js_getId, getId, js_setKind, setKind, js_getKind, getKind,
-        js_getLabel, getLabel, js_setLanguage, setLanguage, js_getLanguage,
-        getLanguage, js_setEnabled, setEnabled, js_getEnabled, getEnabled,
-        js_getSourceBuffer, getSourceBuffer, AudioTrack(..),
-        gTypeAudioTrack)
+       (js_getId, js_getKind, js_getLabel, js_getLanguage, js_setEnabled, js_getEnabled, js_getSourceBuffer, getId, getKind, getLabel, getLanguage, setEnabled, getEnabled, getSourceBuffer, getSourceBufferUnsafe, getSourceBufferUnchecked, AudioTrack(..), gTypeAudioTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        AudioTrack -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.id Mozilla AudioTrack.id documentation> 
-getId :: (MonadIO m, FromJSString result) => AudioTrack -> m result
-getId self = liftIO (fromJSString <$> (js_getId self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
-        AudioTrack -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
-setKind :: (MonadIO m, ToJSString val) => AudioTrack -> val -> m ()
-setKind self val = liftIO (js_setKind self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        AudioTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: AudioTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/id MDN AudioTrack.id documentation>
+getId :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
-getKind ::
-        (MonadIO m, FromJSString result) => AudioTrack -> m result
-getKind self = liftIO (fromJSString <$> (js_getKind self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        AudioTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: AudioTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/kind MDN AudioTrack.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getKind self = liftDOM ((fromJSString <$> (js_getKind (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.label Mozilla AudioTrack.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => AudioTrack -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"language\"] = $2; })"
-        js_setLanguage :: AudioTrack -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: AudioTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/label MDN AudioTrack.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
-setLanguage ::
-            (MonadIO m, ToJSString val) => AudioTrack -> val -> m ()
-setLanguage self val
-  = liftIO (js_setLanguage self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
-        :: AudioTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })"
+        js_getLanguage :: AudioTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/language MDN AudioTrack.language documentation>
+getLanguage :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getLanguage self = liftDOM ((fromJSString <$> (js_getLanguage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
-getLanguage ::
-            (MonadIO m, FromJSString result) => AudioTrack -> m result
-getLanguage self = liftIO (fromJSString <$> (js_getLanguage self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"enabled\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"enabled\"] = $2; })"
         js_setEnabled :: AudioTrack -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/enabled MDN AudioTrack.enabled documentation>
+setEnabled :: (MonadDOM m) => AudioTrack -> Bool -> m ()
+setEnabled self val = liftDOM (void ((js_setEnabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
-setEnabled :: (MonadIO m) => AudioTrack -> Bool -> m ()
-setEnabled self val = liftIO (js_setEnabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"enabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"enabled\"]; })"
         js_getEnabled :: AudioTrack -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/enabled MDN AudioTrack.enabled documentation>
+getEnabled :: (MonadDOM m) => AudioTrack -> m Bool
+getEnabled self = liftDOM ((js_getEnabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
-getEnabled :: (MonadIO m) => AudioTrack -> m Bool
-getEnabled self = liftIO (js_getEnabled self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffer\"]; })"
-        js_getSourceBuffer :: AudioTrack -> IO SourceBuffer
+        js_getSourceBuffer :: AudioTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/sourceBuffer MDN AudioTrack.sourceBuffer documentation>
+getSourceBuffer :: (MonadDOM m) => AudioTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self = liftDOM (((js_getSourceBuffer (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.sourceBuffer Mozilla AudioTrack.sourceBuffer documentation> 
-getSourceBuffer :: (MonadIO m) => AudioTrack -> m SourceBuffer
-getSourceBuffer self = liftIO (js_getSourceBuffer self)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/sourceBuffer MDN AudioTrack.sourceBuffer documentation>
+getSourceBufferUnsafe :: (MonadDOM m, HasCallStack) => AudioTrack -> m SourceBuffer
+getSourceBufferUnsafe self = liftDOM ((((js_getSourceBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/sourceBuffer MDN AudioTrack.sourceBuffer documentation>
+getSourceBufferUnchecked :: (MonadDOM m) => AudioTrack -> m SourceBuffer
+getSourceBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getSourceBuffer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
@@ -1,73 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.AudioTrackList
-       (js_item, item, item_, js_getTrackById, getTrackById,
-        getTrackById_, js_getLength, getLength, change, addTrack,
-        removeTrack, AudioTrackList(..), gTypeAudioTrackList)
+       (js_getTrackById, js_getLength, getTrackById, getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked, getLength, change, addTrack, removeTrack, AudioTrackList(..), gTypeAudioTrackList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        AudioTrackList -> Word -> IO AudioTrack
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
-item :: (MonadIO m) => AudioTrackList -> Word -> m AudioTrack
-item self index = liftIO (js_item self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: AudioTrackList -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrackList/getTrackById MDN AudioTrackList.getTrackById documentation>
+getTrackById :: (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m (Maybe AudioTrack)
+getTrackById self id = liftDOM (((js_getTrackById (self) (toJSString id)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
-item_ :: (MonadIO m) => AudioTrackList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
-        js_getTrackById :: AudioTrackList -> JSString -> IO AudioTrack
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrackList/getTrackById MDN AudioTrackList.getTrackById documentation>
+getTrackById_ :: (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m ()
+getTrackById_ self id = liftDOM (void ((js_getTrackById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
-getTrackById ::
-             (MonadIO m, ToJSString id) => AudioTrackList -> id -> m AudioTrack
-getTrackById self id
-  = liftIO (js_getTrackById self (toJSString id))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrackList/getTrackById MDN AudioTrackList.getTrackById documentation>
+getTrackByIdUnsafe :: (MonadDOM m, ToJSString id, HasCallStack) => AudioTrackList -> id -> m AudioTrack
+getTrackByIdUnsafe self id = liftDOM ((((js_getTrackById (self) (toJSString id)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
-getTrackById_ ::
-              (MonadIO m, ToJSString id) => AudioTrackList -> id -> m ()
-getTrackById_ self id
-  = liftIO (void (js_getTrackById self (toJSString id)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        AudioTrackList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrackList/getTrackById MDN AudioTrackList.getTrackById documentation>
+getTrackByIdUnchecked :: (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m AudioTrack
+getTrackByIdUnchecked self id = liftDOM ((pFromJSVal <$> (js_getTrackById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.length Mozilla AudioTrackList.length documentation> 
-getLength :: (MonadIO m) => AudioTrackList -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: AudioTrackList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrackList/length MDN AudioTrackList.length documentation>
+getLength :: (MonadDOM m) => AudioTrackList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onchange Mozilla AudioTrackList.onchange documentation> 
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-tracklist-onchange change event>
 change :: EventName AudioTrackList Event
 change = unsafeEventName (toJSString "change")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onaddtrack Mozilla AudioTrackList.onaddtrack documentation> 
-addTrack :: EventName AudioTrackList Event
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-tracklist-onaddtrack addtrack event>
+addTrack :: EventName AudioTrackList TrackEvent
 addTrack = unsafeEventName (toJSString "addtrack")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onremovetrack Mozilla AudioTrackList.onremovetrack documentation> 
-removeTrack :: EventName AudioTrackList Event
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-tracklist-onremovetrack removetrack event>
+removeTrack :: EventName AudioTrackList TrackEvent
 removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioWorklet.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioWorklet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioWorklet.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioWorklet
+       (AudioWorklet(..), gTypeAudioWorklet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletGlobalScope.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioWorkletGlobalScope
+       (js_registerProcessor, js_getCurrentFrame, js_getCurrentTime, js_getSampleRate, registerProcessor, getCurrentFrame, getCurrentTime, getSampleRate, AudioWorkletGlobalScope(..), gTypeAudioWorkletGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"registerProcessor\"]($2, $3); })"
+        js_registerProcessor :: AudioWorkletGlobalScope -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletGlobalScope/registerProcessor MDN AudioWorkletGlobalScope.registerProcessor documentation>
+registerProcessor :: (MonadDOM m, ToJSString name) => AudioWorkletGlobalScope -> name -> AudioWorkletProcessorConstructor -> m ()
+registerProcessor self name processorCtor = liftDOM (void (((toJSVal processorCtor) >>= \a3' -> js_registerProcessor (self) (toJSString name) a3')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentFrame\"]; })"
+        js_getCurrentFrame :: AudioWorkletGlobalScope -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletGlobalScope/currentFrame MDN AudioWorkletGlobalScope.currentFrame documentation>
+getCurrentFrame :: (MonadDOM m) => AudioWorkletGlobalScope -> m Word53
+getCurrentFrame self = liftDOM (((js_getCurrentFrame (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: AudioWorkletGlobalScope -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletGlobalScope/currentTime MDN AudioWorkletGlobalScope.currentTime documentation>
+getCurrentTime :: (MonadDOM m) => AudioWorkletGlobalScope -> m Double
+getCurrentTime self = liftDOM ((js_getCurrentTime (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioWorkletGlobalScope -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletGlobalScope/sampleRate MDN AudioWorkletGlobalScope.sampleRate documentation>
+getSampleRate :: (MonadDOM m) => AudioWorkletGlobalScope -> m Float
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletNode.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioWorkletNode
+       (js_newAudioWorkletNode, js_getParameters, js_getPort, newAudioWorkletNode, getParameters, getPort, processorerror, AudioWorkletNode(..), gTypeAudioWorkletNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"AudioWorkletNode\"]($1, $2, $3); })"
+        js_newAudioWorkletNode :: BaseAudioContext -> JSString -> JSVal -> IO AudioWorkletNode
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/AudioWorkletNode MDN AudioWorkletNode. documentation>
+newAudioWorkletNode :: (MonadDOM m, IsBaseAudioContext context, ToJSString name) => context -> name -> Maybe AudioWorkletNodeOptions -> m AudioWorkletNode
+newAudioWorkletNode context name options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_newAudioWorkletNode (Types.toBaseAudioContext context) (toJSString name) a3'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"parameters\"]; })"
+        js_getParameters :: AudioWorkletNode -> IO AudioParamMap
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/parameters MDN AudioWorkletNode.parameters documentation>
+getParameters :: (MonadDOM m) => AudioWorkletNode -> m AudioParamMap
+getParameters self = liftDOM ((js_getParameters (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: AudioWorkletNode -> IO MessagePort
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/port MDN AudioWorkletNode.port documentation>
+getPort :: (MonadDOM m) => AudioWorkletNode -> m MessagePort
+getPort self = liftDOM ((js_getPort (self)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnode-onprocessorerror processorerror event>
+processorerror :: EventName AudioWorkletNode ErrorEvent
+processorerror = unsafeEventName (toJSString "processorerror")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletNodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletNodeOptions.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioWorkletNodeOptions
+       (js_newAudioWorkletNodeOptions, js_setNumberOfInputs, js_getNumberOfInputs, js_setNumberOfOutputs, js_getNumberOfOutputs, js_setOutputChannelCount, js_getOutputChannelCount, js_setParameterData, js_getParameterData, js_setProcessorOptions, js_getProcessorOptions, newAudioWorkletNodeOptions, setNumberOfInputs, getNumberOfInputs, getNumberOfInputsUnsafe, getNumberOfInputsUnchecked, setNumberOfOutputs, getNumberOfOutputs, getNumberOfOutputsUnsafe, getNumberOfOutputsUnchecked, setOutputChannelCount, getOutputChannelCount, getOutputChannelCountUnsafe, getOutputChannelCountUnchecked, setParameterData, getParameterData, getParameterDataUnsafe, getParameterDataUnchecked, setProcessorOptions, getProcessorOptions, getProcessorOptionsUnsafe, getProcessorOptionsUnchecked, AudioWorkletNodeOptions(..), gTypeAudioWorkletNodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAudioWorkletNodeOptions :: IO AudioWorkletNodeOptions
+-- | <https://webaudio.github.io/web-audio-api/#AudioWorkletNodeOptions AudioWorkletNodeOptions specification>
+newAudioWorkletNodeOptions :: (MonadDOM m) => m AudioWorkletNodeOptions
+newAudioWorkletNodeOptions = liftDOM ((js_newAudioWorkletNodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfInputs\"] = $2; })"
+        js_setNumberOfInputs :: AudioWorkletNodeOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofinputs AudioWorkletNodeOptions.numberOfInputs specification>
+setNumberOfInputs :: (MonadDOM m) => AudioWorkletNodeOptions -> Word -> m ()
+setNumberOfInputs self val = liftDOM (void ((js_setNumberOfInputs (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfInputs\"]; })"
+        js_getNumberOfInputs :: AudioWorkletNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofinputs AudioWorkletNodeOptions.numberOfInputs specification>
+getNumberOfInputs :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe Word)
+getNumberOfInputs self = liftDOM (((js_getNumberOfInputs (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofinputs AudioWorkletNodeOptions.numberOfInputs specification>
+getNumberOfInputsUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m Word
+getNumberOfInputsUnsafe self = liftDOM ((((js_getNumberOfInputs (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofinputs AudioWorkletNodeOptions.numberOfInputs specification>
+getNumberOfInputsUnchecked :: (MonadDOM m) => AudioWorkletNodeOptions -> m Word
+getNumberOfInputsUnchecked self = liftDOM ((pFromJSVal <$> (js_getNumberOfInputs (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfOutputs\"] = $2; })"
+        js_setNumberOfOutputs :: AudioWorkletNodeOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofoutputs AudioWorkletNodeOptions.numberOfOutputs specification>
+setNumberOfOutputs :: (MonadDOM m) => AudioWorkletNodeOptions -> Word -> m ()
+setNumberOfOutputs self val = liftDOM (void ((js_setNumberOfOutputs (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfOutputs\"]; })"
+        js_getNumberOfOutputs :: AudioWorkletNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofoutputs AudioWorkletNodeOptions.numberOfOutputs specification>
+getNumberOfOutputs :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe Word)
+getNumberOfOutputs self = liftDOM (((js_getNumberOfOutputs (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofoutputs AudioWorkletNodeOptions.numberOfOutputs specification>
+getNumberOfOutputsUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m Word
+getNumberOfOutputsUnsafe self = liftDOM ((((js_getNumberOfOutputs (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofoutputs AudioWorkletNodeOptions.numberOfOutputs specification>
+getNumberOfOutputsUnchecked :: (MonadDOM m) => AudioWorkletNodeOptions -> m Word
+getNumberOfOutputsUnchecked self = liftDOM ((pFromJSVal <$> (js_getNumberOfOutputs (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"outputChannelCount\"] = $2; })"
+        js_setOutputChannelCount :: AudioWorkletNodeOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-outputchannelcount AudioWorkletNodeOptions.outputChannelCount specification>
+setOutputChannelCount :: (MonadDOM m) => AudioWorkletNodeOptions -> [Word] -> m ()
+setOutputChannelCount self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOutputChannelCount (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outputChannelCount\"]; })"
+        js_getOutputChannelCount :: AudioWorkletNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-outputchannelcount AudioWorkletNodeOptions.outputChannelCount specification>
+getOutputChannelCount :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe [Word])
+getOutputChannelCount self = liftDOM (((js_getOutputChannelCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-outputchannelcount AudioWorkletNodeOptions.outputChannelCount specification>
+getOutputChannelCountUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m [Word]
+getOutputChannelCountUnsafe self = liftDOM ((((js_getOutputChannelCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-outputchannelcount AudioWorkletNodeOptions.outputChannelCount specification>
+getOutputChannelCountUnchecked :: (MonadDOM m) => AudioWorkletNodeOptions -> m [Word]
+getOutputChannelCountUnchecked self = liftDOM (((js_getOutputChannelCount (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"parameterData\"] = $2; })"
+        js_setParameterData :: AudioWorkletNodeOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-parameterdata AudioWorkletNodeOptions.parameterData specification>
+setParameterData :: (MonadDOM m) => AudioWorkletNodeOptions -> (Record JSString JSVal) -> m ()
+setParameterData self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setParameterData (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"parameterData\"]; })"
+        js_getParameterData :: AudioWorkletNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-parameterdata AudioWorkletNodeOptions.parameterData specification>
+getParameterData :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe (Record JSString JSVal))
+getParameterData self = liftDOM (((js_getParameterData (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-parameterdata AudioWorkletNodeOptions.parameterData specification>
+getParameterDataUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m (Record JSString JSVal)
+getParameterDataUnsafe self = liftDOM ((((js_getParameterData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-parameterdata AudioWorkletNodeOptions.parameterData specification>
+getParameterDataUnchecked :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Record JSString JSVal)
+getParameterDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getParameterData (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"processorOptions\"] = $2; })"
+        js_setProcessorOptions :: AudioWorkletNodeOptions -> GObject -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-processoroptions AudioWorkletNodeOptions.processorOptions specification>
+setProcessorOptions :: (MonadDOM m) => AudioWorkletNodeOptions -> GObject -> m ()
+setProcessorOptions self val = liftDOM (void ((js_setProcessorOptions (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"processorOptions\"]; })"
+        js_getProcessorOptions :: AudioWorkletNodeOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-processoroptions AudioWorkletNodeOptions.processorOptions specification>
+getProcessorOptions :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe GObject)
+getProcessorOptions self = liftDOM (((js_getProcessorOptions (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-processoroptions AudioWorkletNodeOptions.processorOptions specification>
+getProcessorOptionsUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m GObject
+getProcessorOptionsUnsafe self = liftDOM ((((js_getProcessorOptions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-processoroptions AudioWorkletNodeOptions.processorOptions specification>
+getProcessorOptionsUnchecked :: (MonadDOM m) => AudioWorkletNodeOptions -> m GObject
+getProcessorOptionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getProcessorOptions (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletProcessor.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletProcessor.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioWorkletProcessor
+       (js_newAudioWorkletProcessor, js_getPort, newAudioWorkletProcessor, getPort, AudioWorkletProcessor(..), gTypeAudioWorkletProcessor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return new globalThis[\"AudioWorkletProcessor\"](); })"
+        js_newAudioWorkletProcessor :: IO AudioWorkletProcessor
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletProcessor/AudioWorkletProcessor MDN AudioWorkletProcessor. documentation>
+newAudioWorkletProcessor :: (MonadDOM m) => m AudioWorkletProcessor
+newAudioWorkletProcessor = liftDOM ((js_newAudioWorkletProcessor))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: AudioWorkletProcessor -> IO MessagePort
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletProcessor/port MDN AudioWorkletProcessor.port documentation>
+getPort :: (MonadDOM m) => AudioWorkletProcessor -> m MessagePort
+getPort self = liftDOM ((js_getPort (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletProcessorConstructor.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletProcessorConstructor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioWorkletProcessorConstructor.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AudioWorkletProcessorConstructor
+       (newAudioWorkletProcessorConstructor, newAudioWorkletProcessorConstructorSync, newAudioWorkletProcessorConstructorAsync, AudioWorkletProcessorConstructor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newAudioWorkletProcessorConstructor :: (MonadDOM m) => (GObject -> IO ()) -> m AudioWorkletProcessorConstructor
+newAudioWorkletProcessorConstructor callback = liftDOM ((AudioWorkletProcessorConstructor . coerce) <$> syncCallback1 ContinueAsync (\ options -> do
+          options' <- fromJSValUnchecked options
+          callback options'))
+
+newAudioWorkletProcessorConstructorSync :: (MonadDOM m) => (GObject -> IO ()) -> m AudioWorkletProcessorConstructor
+newAudioWorkletProcessorConstructorSync callback = liftDOM ((AudioWorkletProcessorConstructor . coerce) <$> syncCallback1 ThrowWouldBlock (\ options -> do
+          options' <- fromJSValUnchecked options
+          callback options'))
+
+newAudioWorkletProcessorConstructorAsync :: (MonadDOM m) => (GObject -> IO ()) -> m AudioWorkletProcessorConstructor
+newAudioWorkletProcessorConstructorAsync callback = liftDOM ((AudioWorkletProcessorConstructor . coerce) <$> asyncCallback1 (\ options -> do
+          options' <- fromJSValUnchecked options
+          callback options'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientInputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientInputs.hs
@@ -0,0 +1,323 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientInputs
+       (js_newAuthenticationExtensionsClientInputs, js_setCredentialProtectionPolicy, js_getCredentialProtectionPolicy, js_setEnforceCredentialProtectionPolicy, js_getEnforceCredentialProtectionPolicy, js_setCredBlob, js_getCredBlob, js_setGetCredBlob, js_getGetCredBlob, js_setMinPinLength, js_getMinPinLength, js_setPinComplexityPolicy, js_getPinComplexityPolicy, js_setHmacCreateSecret, js_getHmacCreateSecret, js_setHmacGetSecret, js_getHmacGetSecret, js_setPayment, js_getPayment, js_setAppid, js_getAppid, js_setAppidExclude, js_getAppidExclude, js_setCredProps, js_getCredProps, js_setPrf, js_getPrf, js_setLargeBlob, js_getLargeBlob, js_setRemoteClientDataJSON, js_getRemoteClientDataJSON, newAuthenticationExtensionsClientInputs, setCredentialProtectionPolicy, getCredentialProtectionPolicy, getCredentialProtectionPolicyUnsafe, getCredentialProtectionPolicyUnchecked, setEnforceCredentialProtectionPolicy, getEnforceCredentialProtectionPolicy, getEnforceCredentialProtectionPolicyUnsafe, getEnforceCredentialProtectionPolicyUnchecked, setCredBlob, getCredBlob, getCredBlobUnsafe, getCredBlobUnchecked, setGetCredBlob, getGetCredBlob, getGetCredBlobUnsafe, getGetCredBlobUnchecked, setMinPinLength, getMinPinLength, getMinPinLengthUnsafe, getMinPinLengthUnchecked, setPinComplexityPolicy, getPinComplexityPolicy, getPinComplexityPolicyUnsafe, getPinComplexityPolicyUnchecked, setHmacCreateSecret, getHmacCreateSecret, getHmacCreateSecretUnsafe, getHmacCreateSecretUnchecked, setHmacGetSecret, getHmacGetSecret, getHmacGetSecretUnsafe, getHmacGetSecretUnchecked, setPayment, getPayment, getPaymentUnsafe, getPaymentUnchecked, setAppid, getAppid, getAppidUnsafe, getAppidUnchecked, setAppidExclude, getAppidExclude, getAppidExcludeUnsafe, getAppidExcludeUnchecked, setCredProps, getCredProps, getCredPropsUnsafe, getCredPropsUnchecked, setPrf, getPrf, getPrfUnsafe, getPrfUnchecked, setLargeBlob, getLargeBlob, getLargeBlobUnsafe, getLargeBlobUnchecked, setRemoteClientDataJSON, getRemoteClientDataJSON, getRemoteClientDataJSONUnsafe, getRemoteClientDataJSONUnchecked, AuthenticationExtensionsClientInputs(..), gTypeAuthenticationExtensionsClientInputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsClientInputs :: IO AuthenticationExtensionsClientInputs
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsclientinputs AuthenticationExtensionsClientInputs specification>
+newAuthenticationExtensionsClientInputs :: (MonadDOM m) => m AuthenticationExtensionsClientInputs
+newAuthenticationExtensionsClientInputs = liftDOM ((js_newAuthenticationExtensionsClientInputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credentialProtectionPolicy\"] = $2; })"
+        js_setCredentialProtectionPolicy :: AuthenticationExtensionsClientInputs -> JSString -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credentialprotectionpolicy AuthenticationExtensionsClientInputs.credentialProtectionPolicy specification>
+setCredentialProtectionPolicy :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setCredentialProtectionPolicy self val = liftDOM (void ((js_setCredentialProtectionPolicy (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credentialProtectionPolicy\"]; })"
+        js_getCredentialProtectionPolicy :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credentialprotectionpolicy AuthenticationExtensionsClientInputs.credentialProtectionPolicy specification>
+getCredentialProtectionPolicy :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m (Maybe result)
+getCredentialProtectionPolicy self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCredentialProtectionPolicy (self))))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credentialprotectionpolicy AuthenticationExtensionsClientInputs.credentialProtectionPolicy specification>
+getCredentialProtectionPolicyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getCredentialProtectionPolicyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCredentialProtectionPolicy (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credentialprotectionpolicy AuthenticationExtensionsClientInputs.credentialProtectionPolicy specification>
+getCredentialProtectionPolicyUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getCredentialProtectionPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredentialProtectionPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"enforceCredentialProtectionPolicy\"] = $2; })"
+        js_setEnforceCredentialProtectionPolicy :: AuthenticationExtensionsClientInputs -> Bool -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-enforcecredentialprotectionpolicy AuthenticationExtensionsClientInputs.enforceCredentialProtectionPolicy specification>
+setEnforceCredentialProtectionPolicy :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setEnforceCredentialProtectionPolicy self val = liftDOM (void ((js_setEnforceCredentialProtectionPolicy (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"enforceCredentialProtectionPolicy\"]; })"
+        js_getEnforceCredentialProtectionPolicy :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-enforcecredentialprotectionpolicy AuthenticationExtensionsClientInputs.enforceCredentialProtectionPolicy specification>
+getEnforceCredentialProtectionPolicy :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe Bool)
+getEnforceCredentialProtectionPolicy self = liftDOM (((js_getEnforceCredentialProtectionPolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-enforcecredentialprotectionpolicy AuthenticationExtensionsClientInputs.enforceCredentialProtectionPolicy specification>
+getEnforceCredentialProtectionPolicyUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m Bool
+getEnforceCredentialProtectionPolicyUnsafe self = liftDOM ((((js_getEnforceCredentialProtectionPolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-enforcecredentialprotectionpolicy AuthenticationExtensionsClientInputs.enforceCredentialProtectionPolicy specification>
+getEnforceCredentialProtectionPolicyUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m Bool
+getEnforceCredentialProtectionPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getEnforceCredentialProtectionPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credBlob\"] = $2; })"
+        js_setCredBlob :: AuthenticationExtensionsClientInputs -> ArrayBuffer -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credblob AuthenticationExtensionsClientInputs.credBlob specification>
+setCredBlob :: (MonadDOM m, IsArrayBuffer val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setCredBlob self val = liftDOM (void ((js_setCredBlob (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credBlob\"]; })"
+        js_getCredBlob :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credblob AuthenticationExtensionsClientInputs.credBlob specification>
+getCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe ArrayBuffer)
+getCredBlob self = liftDOM (((js_getCredBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credblob AuthenticationExtensionsClientInputs.credBlob specification>
+getCredBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m ArrayBuffer
+getCredBlobUnsafe self = liftDOM ((((js_getCredBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-credblob AuthenticationExtensionsClientInputs.credBlob specification>
+getCredBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m ArrayBuffer
+getCredBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"getCredBlob\"] = $2; })"
+        js_setGetCredBlob :: AuthenticationExtensionsClientInputs -> Bool -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-getcredblob AuthenticationExtensionsClientInputs.getCredBlob specification>
+setGetCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setGetCredBlob self val = liftDOM (void ((js_setGetCredBlob (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"getCredBlob\"]; })"
+        js_getGetCredBlob :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-getcredblob AuthenticationExtensionsClientInputs.getCredBlob specification>
+getGetCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe Bool)
+getGetCredBlob self = liftDOM (((js_getGetCredBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-getcredblob AuthenticationExtensionsClientInputs.getCredBlob specification>
+getGetCredBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m Bool
+getGetCredBlobUnsafe self = liftDOM ((((js_getGetCredBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-getcredblob AuthenticationExtensionsClientInputs.getCredBlob specification>
+getGetCredBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m Bool
+getGetCredBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getGetCredBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minPinLength\"] = $2; })"
+        js_setMinPinLength :: AuthenticationExtensionsClientInputs -> Bool -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-minpinlength AuthenticationExtensionsClientInputs.minPinLength specification>
+setMinPinLength :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setMinPinLength self val = liftDOM (void ((js_setMinPinLength (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minPinLength\"]; })"
+        js_getMinPinLength :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-minpinlength AuthenticationExtensionsClientInputs.minPinLength specification>
+getMinPinLength :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe Bool)
+getMinPinLength self = liftDOM (((js_getMinPinLength (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-minpinlength AuthenticationExtensionsClientInputs.minPinLength specification>
+getMinPinLengthUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m Bool
+getMinPinLengthUnsafe self = liftDOM ((((js_getMinPinLength (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-minpinlength AuthenticationExtensionsClientInputs.minPinLength specification>
+getMinPinLengthUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m Bool
+getMinPinLengthUnchecked self = liftDOM ((pFromJSVal <$> (js_getMinPinLength (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pinComplexityPolicy\"] = $2; })"
+        js_setPinComplexityPolicy :: AuthenticationExtensionsClientInputs -> Bool -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-pincomplexitypolicy AuthenticationExtensionsClientInputs.pinComplexityPolicy specification>
+setPinComplexityPolicy :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setPinComplexityPolicy self val = liftDOM (void ((js_setPinComplexityPolicy (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pinComplexityPolicy\"]; })"
+        js_getPinComplexityPolicy :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-pincomplexitypolicy AuthenticationExtensionsClientInputs.pinComplexityPolicy specification>
+getPinComplexityPolicy :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe Bool)
+getPinComplexityPolicy self = liftDOM (((js_getPinComplexityPolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-pincomplexitypolicy AuthenticationExtensionsClientInputs.pinComplexityPolicy specification>
+getPinComplexityPolicyUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m Bool
+getPinComplexityPolicyUnsafe self = liftDOM ((((js_getPinComplexityPolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-pincomplexitypolicy AuthenticationExtensionsClientInputs.pinComplexityPolicy specification>
+getPinComplexityPolicyUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m Bool
+getPinComplexityPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getPinComplexityPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hmacCreateSecret\"] = $2; })"
+        js_setHmacCreateSecret :: AuthenticationExtensionsClientInputs -> Bool -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmaccreatesecret AuthenticationExtensionsClientInputs.hmacCreateSecret specification>
+setHmacCreateSecret :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setHmacCreateSecret self val = liftDOM (void ((js_setHmacCreateSecret (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hmacCreateSecret\"]; })"
+        js_getHmacCreateSecret :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmaccreatesecret AuthenticationExtensionsClientInputs.hmacCreateSecret specification>
+getHmacCreateSecret :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe Bool)
+getHmacCreateSecret self = liftDOM (((js_getHmacCreateSecret (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmaccreatesecret AuthenticationExtensionsClientInputs.hmacCreateSecret specification>
+getHmacCreateSecretUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m Bool
+getHmacCreateSecretUnsafe self = liftDOM ((((js_getHmacCreateSecret (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmaccreatesecret AuthenticationExtensionsClientInputs.hmacCreateSecret specification>
+getHmacCreateSecretUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m Bool
+getHmacCreateSecretUnchecked self = liftDOM ((pFromJSVal <$> (js_getHmacCreateSecret (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hmacGetSecret\"] = $2; })"
+        js_setHmacGetSecret :: AuthenticationExtensionsClientInputs -> HMACGetSecretInput -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmacgetsecret AuthenticationExtensionsClientInputs.hmacGetSecret specification>
+setHmacGetSecret :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> HMACGetSecretInput -> m ()
+setHmacGetSecret self val = liftDOM (void ((js_setHmacGetSecret (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hmacGetSecret\"]; })"
+        js_getHmacGetSecret :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmacgetsecret AuthenticationExtensionsClientInputs.hmacGetSecret specification>
+getHmacGetSecret :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe HMACGetSecretInput)
+getHmacGetSecret self = liftDOM (((js_getHmacGetSecret (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmacgetsecret AuthenticationExtensionsClientInputs.hmacGetSecret specification>
+getHmacGetSecretUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m HMACGetSecretInput
+getHmacGetSecretUnsafe self = liftDOM ((((js_getHmacGetSecret (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientinputs-hmacgetsecret AuthenticationExtensionsClientInputs.hmacGetSecret specification>
+getHmacGetSecretUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m HMACGetSecretInput
+getHmacGetSecretUnchecked self = liftDOM ((pFromJSVal <$> (js_getHmacGetSecret (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payment\"] = $2; })"
+        js_setPayment :: AuthenticationExtensionsClientInputs -> AuthenticationExtensionsPaymentInputs -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientinputs-payment AuthenticationExtensionsClientInputs.payment specification>
+setPayment :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> AuthenticationExtensionsPaymentInputs -> m ()
+setPayment self val = liftDOM (void ((js_setPayment (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payment\"]; })"
+        js_getPayment :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientinputs-payment AuthenticationExtensionsClientInputs.payment specification>
+getPayment :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe AuthenticationExtensionsPaymentInputs)
+getPayment self = liftDOM (((js_getPayment (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientinputs-payment AuthenticationExtensionsClientInputs.payment specification>
+getPaymentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsPaymentInputs
+getPaymentUnsafe self = liftDOM ((((js_getPayment (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientinputs-payment AuthenticationExtensionsClientInputs.payment specification>
+getPaymentUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsPaymentInputs
+getPaymentUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayment (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"appid\"] = $2; })"
+        js_setAppid :: AuthenticationExtensionsClientInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appid AuthenticationExtensionsClientInputs.appid specification>
+setAppid :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setAppid self val = liftDOM (void ((js_setAppid (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"appid\"]; })"
+        js_getAppid :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appid AuthenticationExtensionsClientInputs.appid specification>
+getAppid :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m (Maybe result)
+getAppid self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAppid (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appid AuthenticationExtensionsClientInputs.appid specification>
+getAppidUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getAppidUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAppid (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appid AuthenticationExtensionsClientInputs.appid specification>
+getAppidUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getAppidUnchecked self = liftDOM ((pFromJSVal <$> (js_getAppid (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"appidExclude\"] = $2; })"
+        js_setAppidExclude :: AuthenticationExtensionsClientInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appidexclude AuthenticationExtensionsClientInputs.appidExclude specification>
+setAppidExclude :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setAppidExclude self val = liftDOM (void ((js_setAppidExclude (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"appidExclude\"]; })"
+        js_getAppidExclude :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appidexclude AuthenticationExtensionsClientInputs.appidExclude specification>
+getAppidExclude :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m (Maybe result)
+getAppidExclude self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAppidExclude (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appidexclude AuthenticationExtensionsClientInputs.appidExclude specification>
+getAppidExcludeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getAppidExcludeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAppidExclude (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appidexclude AuthenticationExtensionsClientInputs.appidExclude specification>
+getAppidExcludeUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getAppidExcludeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAppidExclude (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credProps\"] = $2; })"
+        js_setCredProps :: AuthenticationExtensionsClientInputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-credprops AuthenticationExtensionsClientInputs.credProps specification>
+setCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setCredProps self val = liftDOM (void ((js_setCredProps (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credProps\"]; })"
+        js_getCredProps :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-credprops AuthenticationExtensionsClientInputs.credProps specification>
+getCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe Bool)
+getCredProps self = liftDOM (((js_getCredProps (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-credprops AuthenticationExtensionsClientInputs.credProps specification>
+getCredPropsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m Bool
+getCredPropsUnsafe self = liftDOM ((((js_getCredProps (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-credprops AuthenticationExtensionsClientInputs.credProps specification>
+getCredPropsUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m Bool
+getCredPropsUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredProps (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"prf\"] = $2; })"
+        js_setPrf :: AuthenticationExtensionsClientInputs -> AuthenticationExtensionsPRFInputs -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-prf AuthenticationExtensionsClientInputs.prf specification>
+setPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> AuthenticationExtensionsPRFInputs -> m ()
+setPrf self val = liftDOM (void ((js_setPrf (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"prf\"]; })"
+        js_getPrf :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-prf AuthenticationExtensionsClientInputs.prf specification>
+getPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe AuthenticationExtensionsPRFInputs)
+getPrf self = liftDOM (((js_getPrf (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-prf AuthenticationExtensionsClientInputs.prf specification>
+getPrfUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsPRFInputs
+getPrfUnsafe self = liftDOM ((((js_getPrf (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-prf AuthenticationExtensionsClientInputs.prf specification>
+getPrfUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsPRFInputs
+getPrfUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"largeBlob\"] = $2; })"
+        js_setLargeBlob :: AuthenticationExtensionsClientInputs -> AuthenticationExtensionsLargeBlobInputs -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-largeblob AuthenticationExtensionsClientInputs.largeBlob specification>
+setLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> AuthenticationExtensionsLargeBlobInputs -> m ()
+setLargeBlob self val = liftDOM (void ((js_setLargeBlob (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"largeBlob\"]; })"
+        js_getLargeBlob :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-largeblob AuthenticationExtensionsClientInputs.largeBlob specification>
+getLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe AuthenticationExtensionsLargeBlobInputs)
+getLargeBlob self = liftDOM (((js_getLargeBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-largeblob AuthenticationExtensionsClientInputs.largeBlob specification>
+getLargeBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsLargeBlobInputs
+getLargeBlobUnsafe self = liftDOM ((((js_getLargeBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-largeblob AuthenticationExtensionsClientInputs.largeBlob specification>
+getLargeBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsLargeBlobInputs
+getLargeBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getLargeBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"remoteClientDataJSON\"] = $2; })"
+        js_setRemoteClientDataJSON :: AuthenticationExtensionsClientInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-remoteclientdatajson AuthenticationExtensionsClientInputs.remoteClientDataJSON specification>
+setRemoteClientDataJSON :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setRemoteClientDataJSON self val = liftDOM (void ((js_setRemoteClientDataJSON (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"remoteClientDataJSON\"]; })"
+        js_getRemoteClientDataJSON :: AuthenticationExtensionsClientInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-remoteclientdatajson AuthenticationExtensionsClientInputs.remoteClientDataJSON specification>
+getRemoteClientDataJSON :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m (Maybe result)
+getRemoteClientDataJSON self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRemoteClientDataJSON (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-remoteclientdatajson AuthenticationExtensionsClientInputs.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getRemoteClientDataJSONUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRemoteClientDataJSON (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-remoteclientdatajson AuthenticationExtensionsClientInputs.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getRemoteClientDataJSONUnchecked self = liftDOM ((pFromJSVal <$> (js_getRemoteClientDataJSON (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientInputsJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientInputsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientInputsJSON.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientInputsJSON
+       (js_newAuthenticationExtensionsClientInputsJSON, js_setAppid, js_getAppid, js_setAppidExclude, js_getAppidExclude, js_setCredProps, js_getCredProps, js_setPrf, js_getPrf, js_setLargeBlob, js_getLargeBlob, js_setRemoteClientDataJSON, js_getRemoteClientDataJSON, newAuthenticationExtensionsClientInputsJSON, setAppid, getAppid, getAppidUnsafe, getAppidUnchecked, setAppidExclude, getAppidExclude, getAppidExcludeUnsafe, getAppidExcludeUnchecked, setCredProps, getCredProps, getCredPropsUnsafe, getCredPropsUnchecked, setPrf, getPrf, getPrfUnsafe, getPrfUnchecked, setLargeBlob, getLargeBlob, getLargeBlobUnsafe, getLargeBlobUnchecked, setRemoteClientDataJSON, getRemoteClientDataJSON, getRemoteClientDataJSONUnsafe, getRemoteClientDataJSONUnchecked, AuthenticationExtensionsClientInputsJSON(..), gTypeAuthenticationExtensionsClientInputsJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsClientInputsJSON :: IO AuthenticationExtensionsClientInputsJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsclientinputsjson AuthenticationExtensionsClientInputsJSON specification>
+newAuthenticationExtensionsClientInputsJSON :: (MonadDOM m) => m AuthenticationExtensionsClientInputsJSON
+newAuthenticationExtensionsClientInputsJSON = liftDOM ((js_newAuthenticationExtensionsClientInputsJSON))
+
+foreign import javascript safe "(($1, $2) => { $1[\"appid\"] = $2; })"
+        js_setAppid :: AuthenticationExtensionsClientInputsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appid AuthenticationExtensionsClientInputsJSON.appid specification>
+setAppid :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputsJSON -> val -> m ()
+setAppid self val = liftDOM (void ((js_setAppid (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"appid\"]; })"
+        js_getAppid :: AuthenticationExtensionsClientInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appid AuthenticationExtensionsClientInputsJSON.appid specification>
+getAppid :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m (Maybe result)
+getAppid self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAppid (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appid AuthenticationExtensionsClientInputsJSON.appid specification>
+getAppidUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getAppidUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAppid (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appid AuthenticationExtensionsClientInputsJSON.appid specification>
+getAppidUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getAppidUnchecked self = liftDOM ((pFromJSVal <$> (js_getAppid (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"appidExclude\"] = $2; })"
+        js_setAppidExclude :: AuthenticationExtensionsClientInputsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appidexclude AuthenticationExtensionsClientInputsJSON.appidExclude specification>
+setAppidExclude :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputsJSON -> val -> m ()
+setAppidExclude self val = liftDOM (void ((js_setAppidExclude (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"appidExclude\"]; })"
+        js_getAppidExclude :: AuthenticationExtensionsClientInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appidexclude AuthenticationExtensionsClientInputsJSON.appidExclude specification>
+getAppidExclude :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m (Maybe result)
+getAppidExclude self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAppidExclude (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appidexclude AuthenticationExtensionsClientInputsJSON.appidExclude specification>
+getAppidExcludeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getAppidExcludeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAppidExclude (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appidexclude AuthenticationExtensionsClientInputsJSON.appidExclude specification>
+getAppidExcludeUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getAppidExcludeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAppidExclude (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credProps\"] = $2; })"
+        js_setCredProps :: AuthenticationExtensionsClientInputsJSON -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-credprops AuthenticationExtensionsClientInputsJSON.credProps specification>
+setCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> Bool -> m ()
+setCredProps self val = liftDOM (void ((js_setCredProps (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credProps\"]; })"
+        js_getCredProps :: AuthenticationExtensionsClientInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-credprops AuthenticationExtensionsClientInputsJSON.credProps specification>
+getCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m (Maybe Bool)
+getCredProps self = liftDOM (((js_getCredProps (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-credprops AuthenticationExtensionsClientInputsJSON.credProps specification>
+getCredPropsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputsJSON -> m Bool
+getCredPropsUnsafe self = liftDOM ((((js_getCredProps (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-credprops AuthenticationExtensionsClientInputsJSON.credProps specification>
+getCredPropsUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m Bool
+getCredPropsUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredProps (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"prf\"] = $2; })"
+        js_setPrf :: AuthenticationExtensionsClientInputsJSON -> AuthenticationExtensionsPRFInputsJSON -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-prf AuthenticationExtensionsClientInputsJSON.prf specification>
+setPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> AuthenticationExtensionsPRFInputsJSON -> m ()
+setPrf self val = liftDOM (void ((js_setPrf (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"prf\"]; })"
+        js_getPrf :: AuthenticationExtensionsClientInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-prf AuthenticationExtensionsClientInputsJSON.prf specification>
+getPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m (Maybe AuthenticationExtensionsPRFInputsJSON)
+getPrf self = liftDOM (((js_getPrf (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-prf AuthenticationExtensionsClientInputsJSON.prf specification>
+getPrfUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputsJSON -> m AuthenticationExtensionsPRFInputsJSON
+getPrfUnsafe self = liftDOM ((((js_getPrf (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-prf AuthenticationExtensionsClientInputsJSON.prf specification>
+getPrfUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m AuthenticationExtensionsPRFInputsJSON
+getPrfUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"largeBlob\"] = $2; })"
+        js_setLargeBlob :: AuthenticationExtensionsClientInputsJSON -> AuthenticationExtensionsLargeBlobInputsJSON -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-largeblob AuthenticationExtensionsClientInputsJSON.largeBlob specification>
+setLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> AuthenticationExtensionsLargeBlobInputsJSON -> m ()
+setLargeBlob self val = liftDOM (void ((js_setLargeBlob (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"largeBlob\"]; })"
+        js_getLargeBlob :: AuthenticationExtensionsClientInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-largeblob AuthenticationExtensionsClientInputsJSON.largeBlob specification>
+getLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m (Maybe AuthenticationExtensionsLargeBlobInputsJSON)
+getLargeBlob self = liftDOM (((js_getLargeBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-largeblob AuthenticationExtensionsClientInputsJSON.largeBlob specification>
+getLargeBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputsJSON -> m AuthenticationExtensionsLargeBlobInputsJSON
+getLargeBlobUnsafe self = liftDOM ((((js_getLargeBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-largeblob AuthenticationExtensionsClientInputsJSON.largeBlob specification>
+getLargeBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m AuthenticationExtensionsLargeBlobInputsJSON
+getLargeBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getLargeBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"remoteClientDataJSON\"] = $2; })"
+        js_setRemoteClientDataJSON :: AuthenticationExtensionsClientInputsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-remoteclientdatajson AuthenticationExtensionsClientInputsJSON.remoteClientDataJSON specification>
+setRemoteClientDataJSON :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputsJSON -> val -> m ()
+setRemoteClientDataJSON self val = liftDOM (void ((js_setRemoteClientDataJSON (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"remoteClientDataJSON\"]; })"
+        js_getRemoteClientDataJSON :: AuthenticationExtensionsClientInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-remoteclientdatajson AuthenticationExtensionsClientInputsJSON.remoteClientDataJSON specification>
+getRemoteClientDataJSON :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m (Maybe result)
+getRemoteClientDataJSON self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRemoteClientDataJSON (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-remoteclientdatajson AuthenticationExtensionsClientInputsJSON.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getRemoteClientDataJSONUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRemoteClientDataJSON (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-remoteclientdatajson AuthenticationExtensionsClientInputsJSON.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getRemoteClientDataJSONUnchecked self = liftDOM ((pFromJSVal <$> (js_getRemoteClientDataJSON (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientOutputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsClientOutputs.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsClientOutputs
+       (js_newAuthenticationExtensionsClientOutputs, js_setCredBlob, js_getCredBlob, js_setGetCredBlob, js_getGetCredBlob, js_setHmacCreateSecret, js_getHmacCreateSecret, js_setHmacGetSecret, js_getHmacGetSecret, js_setPayment, js_getPayment, js_setAppid, js_getAppid, js_setAppidExclude, js_getAppidExclude, js_setCredProps, js_getCredProps, js_setPrf, js_getPrf, js_setLargeBlob, js_getLargeBlob, js_setRemoteClientDataJSON, js_getRemoteClientDataJSON, newAuthenticationExtensionsClientOutputs, setCredBlob, getCredBlob, getCredBlobUnsafe, getCredBlobUnchecked, setGetCredBlob, getGetCredBlob, getGetCredBlobUnsafe, getGetCredBlobUnchecked, setHmacCreateSecret, getHmacCreateSecret, getHmacCreateSecretUnsafe, getHmacCreateSecretUnchecked, setHmacGetSecret, getHmacGetSecret, getHmacGetSecretUnsafe, getHmacGetSecretUnchecked, setPayment, getPayment, getPaymentUnsafe, getPaymentUnchecked, setAppid, getAppid, getAppidUnsafe, getAppidUnchecked, setAppidExclude, getAppidExclude, getAppidExcludeUnsafe, getAppidExcludeUnchecked, setCredProps, getCredProps, getCredPropsUnsafe, getCredPropsUnchecked, setPrf, getPrf, getPrfUnsafe, getPrfUnchecked, setLargeBlob, getLargeBlob, getLargeBlobUnsafe, getLargeBlobUnchecked, setRemoteClientDataJSON, getRemoteClientDataJSON, getRemoteClientDataJSONUnsafe, getRemoteClientDataJSONUnchecked, AuthenticationExtensionsClientOutputs(..), gTypeAuthenticationExtensionsClientOutputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsClientOutputs :: IO AuthenticationExtensionsClientOutputs
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsclientoutputs AuthenticationExtensionsClientOutputs specification>
+newAuthenticationExtensionsClientOutputs :: (MonadDOM m) => m AuthenticationExtensionsClientOutputs
+newAuthenticationExtensionsClientOutputs = liftDOM ((js_newAuthenticationExtensionsClientOutputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credBlob\"] = $2; })"
+        js_setCredBlob :: AuthenticationExtensionsClientOutputs -> Bool -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-credblob AuthenticationExtensionsClientOutputs.credBlob specification>
+setCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setCredBlob self val = liftDOM (void ((js_setCredBlob (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credBlob\"]; })"
+        js_getCredBlob :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-credblob AuthenticationExtensionsClientOutputs.credBlob specification>
+getCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getCredBlob self = liftDOM (((js_getCredBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-credblob AuthenticationExtensionsClientOutputs.credBlob specification>
+getCredBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getCredBlobUnsafe self = liftDOM ((((js_getCredBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-credblob AuthenticationExtensionsClientOutputs.credBlob specification>
+getCredBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m Bool
+getCredBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"getCredBlob\"] = $2; })"
+        js_setGetCredBlob :: AuthenticationExtensionsClientOutputs -> ArrayBuffer -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-getcredblob AuthenticationExtensionsClientOutputs.getCredBlob specification>
+setGetCredBlob :: (MonadDOM m, IsArrayBuffer val) => AuthenticationExtensionsClientOutputs -> val -> m ()
+setGetCredBlob self val = liftDOM (void ((js_setGetCredBlob (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"getCredBlob\"]; })"
+        js_getGetCredBlob :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-getcredblob AuthenticationExtensionsClientOutputs.getCredBlob specification>
+getGetCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe ArrayBuffer)
+getGetCredBlob self = liftDOM (((js_getGetCredBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-getcredblob AuthenticationExtensionsClientOutputs.getCredBlob specification>
+getGetCredBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m ArrayBuffer
+getGetCredBlobUnsafe self = liftDOM ((((js_getGetCredBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-getcredblob AuthenticationExtensionsClientOutputs.getCredBlob specification>
+getGetCredBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m ArrayBuffer
+getGetCredBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getGetCredBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hmacCreateSecret\"] = $2; })"
+        js_setHmacCreateSecret :: AuthenticationExtensionsClientOutputs -> Bool -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmaccreatesecret AuthenticationExtensionsClientOutputs.hmacCreateSecret specification>
+setHmacCreateSecret :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setHmacCreateSecret self val = liftDOM (void ((js_setHmacCreateSecret (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hmacCreateSecret\"]; })"
+        js_getHmacCreateSecret :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmaccreatesecret AuthenticationExtensionsClientOutputs.hmacCreateSecret specification>
+getHmacCreateSecret :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getHmacCreateSecret self = liftDOM (((js_getHmacCreateSecret (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmaccreatesecret AuthenticationExtensionsClientOutputs.hmacCreateSecret specification>
+getHmacCreateSecretUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getHmacCreateSecretUnsafe self = liftDOM ((((js_getHmacCreateSecret (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmaccreatesecret AuthenticationExtensionsClientOutputs.hmacCreateSecret specification>
+getHmacCreateSecretUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m Bool
+getHmacCreateSecretUnchecked self = liftDOM ((pFromJSVal <$> (js_getHmacCreateSecret (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hmacGetSecret\"] = $2; })"
+        js_setHmacGetSecret :: AuthenticationExtensionsClientOutputs -> HMACGetSecretOutput -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmacgetsecret AuthenticationExtensionsClientOutputs.hmacGetSecret specification>
+setHmacGetSecret :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> HMACGetSecretOutput -> m ()
+setHmacGetSecret self val = liftDOM (void ((js_setHmacGetSecret (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hmacGetSecret\"]; })"
+        js_getHmacGetSecret :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmacgetsecret AuthenticationExtensionsClientOutputs.hmacGetSecret specification>
+getHmacGetSecret :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe HMACGetSecretOutput)
+getHmacGetSecret self = liftDOM (((js_getHmacGetSecret (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmacgetsecret AuthenticationExtensionsClientOutputs.hmacGetSecret specification>
+getHmacGetSecretUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m HMACGetSecretOutput
+getHmacGetSecretUnsafe self = liftDOM ((((js_getHmacGetSecret (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-authenticationextensionsclientoutputs-hmacgetsecret AuthenticationExtensionsClientOutputs.hmacGetSecret specification>
+getHmacGetSecretUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m HMACGetSecretOutput
+getHmacGetSecretUnchecked self = liftDOM ((pFromJSVal <$> (js_getHmacGetSecret (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payment\"] = $2; })"
+        js_setPayment :: AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsPaymentOutputs -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientoutputs-payment AuthenticationExtensionsClientOutputs.payment specification>
+setPayment :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsPaymentOutputs -> m ()
+setPayment self val = liftDOM (void ((js_setPayment (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payment\"]; })"
+        js_getPayment :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientoutputs-payment AuthenticationExtensionsClientOutputs.payment specification>
+getPayment :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe AuthenticationExtensionsPaymentOutputs)
+getPayment self = liftDOM (((js_getPayment (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientoutputs-payment AuthenticationExtensionsClientOutputs.payment specification>
+getPaymentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsPaymentOutputs
+getPaymentUnsafe self = liftDOM ((((js_getPayment (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientoutputs-payment AuthenticationExtensionsClientOutputs.payment specification>
+getPaymentUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsPaymentOutputs
+getPaymentUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayment (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"appid\"] = $2; })"
+        js_setAppid :: AuthenticationExtensionsClientOutputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appid AuthenticationExtensionsClientOutputs.appid specification>
+setAppid :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setAppid self val = liftDOM (void ((js_setAppid (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"appid\"]; })"
+        js_getAppid :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appid AuthenticationExtensionsClientOutputs.appid specification>
+getAppid :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getAppid self = liftDOM (((js_getAppid (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appid AuthenticationExtensionsClientOutputs.appid specification>
+getAppidUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getAppidUnsafe self = liftDOM ((((js_getAppid (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appid AuthenticationExtensionsClientOutputs.appid specification>
+getAppidUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m Bool
+getAppidUnchecked self = liftDOM ((pFromJSVal <$> (js_getAppid (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"appidExclude\"] = $2; })"
+        js_setAppidExclude :: AuthenticationExtensionsClientOutputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appidexclude AuthenticationExtensionsClientOutputs.appidExclude specification>
+setAppidExclude :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setAppidExclude self val = liftDOM (void ((js_setAppidExclude (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"appidExclude\"]; })"
+        js_getAppidExclude :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appidexclude AuthenticationExtensionsClientOutputs.appidExclude specification>
+getAppidExclude :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getAppidExclude self = liftDOM (((js_getAppidExclude (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appidexclude AuthenticationExtensionsClientOutputs.appidExclude specification>
+getAppidExcludeUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getAppidExcludeUnsafe self = liftDOM ((((js_getAppidExclude (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appidexclude AuthenticationExtensionsClientOutputs.appidExclude specification>
+getAppidExcludeUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m Bool
+getAppidExcludeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAppidExclude (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credProps\"] = $2; })"
+        js_setCredProps :: AuthenticationExtensionsClientOutputs -> CredentialPropertiesOutput -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-credprops AuthenticationExtensionsClientOutputs.credProps specification>
+setCredProps :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> CredentialPropertiesOutput -> m ()
+setCredProps self val = liftDOM (void ((js_setCredProps (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credProps\"]; })"
+        js_getCredProps :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-credprops AuthenticationExtensionsClientOutputs.credProps specification>
+getCredProps :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe CredentialPropertiesOutput)
+getCredProps self = liftDOM (((js_getCredProps (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-credprops AuthenticationExtensionsClientOutputs.credProps specification>
+getCredPropsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m CredentialPropertiesOutput
+getCredPropsUnsafe self = liftDOM ((((js_getCredProps (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-credprops AuthenticationExtensionsClientOutputs.credProps specification>
+getCredPropsUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m CredentialPropertiesOutput
+getCredPropsUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredProps (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"prf\"] = $2; })"
+        js_setPrf :: AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsPRFOutputs -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-prf AuthenticationExtensionsClientOutputs.prf specification>
+setPrf :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsPRFOutputs -> m ()
+setPrf self val = liftDOM (void ((js_setPrf (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"prf\"]; })"
+        js_getPrf :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-prf AuthenticationExtensionsClientOutputs.prf specification>
+getPrf :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe AuthenticationExtensionsPRFOutputs)
+getPrf self = liftDOM (((js_getPrf (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-prf AuthenticationExtensionsClientOutputs.prf specification>
+getPrfUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsPRFOutputs
+getPrfUnsafe self = liftDOM ((((js_getPrf (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-prf AuthenticationExtensionsClientOutputs.prf specification>
+getPrfUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsPRFOutputs
+getPrfUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"largeBlob\"] = $2; })"
+        js_setLargeBlob :: AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsLargeBlobOutputs -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-largeblob AuthenticationExtensionsClientOutputs.largeBlob specification>
+setLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsLargeBlobOutputs -> m ()
+setLargeBlob self val = liftDOM (void ((js_setLargeBlob (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"largeBlob\"]; })"
+        js_getLargeBlob :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-largeblob AuthenticationExtensionsClientOutputs.largeBlob specification>
+getLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe AuthenticationExtensionsLargeBlobOutputs)
+getLargeBlob self = liftDOM (((js_getLargeBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-largeblob AuthenticationExtensionsClientOutputs.largeBlob specification>
+getLargeBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsLargeBlobOutputs
+getLargeBlobUnsafe self = liftDOM ((((js_getLargeBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-largeblob AuthenticationExtensionsClientOutputs.largeBlob specification>
+getLargeBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsLargeBlobOutputs
+getLargeBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getLargeBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"remoteClientDataJSON\"] = $2; })"
+        js_setRemoteClientDataJSON :: AuthenticationExtensionsClientOutputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-remoteclientdatajson AuthenticationExtensionsClientOutputs.remoteClientDataJSON specification>
+setRemoteClientDataJSON :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setRemoteClientDataJSON self val = liftDOM (void ((js_setRemoteClientDataJSON (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"remoteClientDataJSON\"]; })"
+        js_getRemoteClientDataJSON :: AuthenticationExtensionsClientOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-remoteclientdatajson AuthenticationExtensionsClientOutputs.remoteClientDataJSON specification>
+getRemoteClientDataJSON :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getRemoteClientDataJSON self = liftDOM (((js_getRemoteClientDataJSON (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-remoteclientdatajson AuthenticationExtensionsClientOutputs.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getRemoteClientDataJSONUnsafe self = liftDOM ((((js_getRemoteClientDataJSON (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-remoteclientdatajson AuthenticationExtensionsClientOutputs.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnchecked :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m Bool
+getRemoteClientDataJSONUnchecked self = liftDOM ((pFromJSVal <$> (js_getRemoteClientDataJSON (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobInputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobInputs.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobInputs
+       (js_newAuthenticationExtensionsLargeBlobInputs, js_setSupport, js_getSupport, js_setRead, js_getRead, js_setWrite, js_getWrite, newAuthenticationExtensionsLargeBlobInputs, setSupport, getSupport, getSupportUnsafe, getSupportUnchecked, setRead, getRead, getReadUnsafe, getReadUnchecked, setWrite, getWrite, getWriteUnsafe, getWriteUnchecked, AuthenticationExtensionsLargeBlobInputs(..), gTypeAuthenticationExtensionsLargeBlobInputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsLargeBlobInputs :: IO AuthenticationExtensionsLargeBlobInputs
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionslargeblobinputs AuthenticationExtensionsLargeBlobInputs specification>
+newAuthenticationExtensionsLargeBlobInputs :: (MonadDOM m) => m AuthenticationExtensionsLargeBlobInputs
+newAuthenticationExtensionsLargeBlobInputs = liftDOM ((js_newAuthenticationExtensionsLargeBlobInputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"support\"] = $2; })"
+        js_setSupport :: AuthenticationExtensionsLargeBlobInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-support AuthenticationExtensionsLargeBlobInputs.support specification>
+setSupport :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsLargeBlobInputs -> val -> m ()
+setSupport self val = liftDOM (void ((js_setSupport (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"support\"]; })"
+        js_getSupport :: AuthenticationExtensionsLargeBlobInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-support AuthenticationExtensionsLargeBlobInputs.support specification>
+getSupport :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputs -> m (Maybe result)
+getSupport self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSupport (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-support AuthenticationExtensionsLargeBlobInputs.support specification>
+getSupportUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsLargeBlobInputs -> m result
+getSupportUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSupport (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-support AuthenticationExtensionsLargeBlobInputs.support specification>
+getSupportUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputs -> m result
+getSupportUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupport (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"read\"] = $2; })"
+        js_setRead :: AuthenticationExtensionsLargeBlobInputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-read AuthenticationExtensionsLargeBlobInputs.read specification>
+setRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> Bool -> m ()
+setRead self val = liftDOM (void ((js_setRead (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"read\"]; })"
+        js_getRead :: AuthenticationExtensionsLargeBlobInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-read AuthenticationExtensionsLargeBlobInputs.read specification>
+getRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> m (Maybe Bool)
+getRead self = liftDOM (((js_getRead (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-read AuthenticationExtensionsLargeBlobInputs.read specification>
+getReadUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobInputs -> m Bool
+getReadUnsafe self = liftDOM ((((js_getRead (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-read AuthenticationExtensionsLargeBlobInputs.read specification>
+getReadUnchecked :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> m Bool
+getReadUnchecked self = liftDOM ((pFromJSVal <$> (js_getRead (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"write\"] = $2; })"
+        js_setWrite :: AuthenticationExtensionsLargeBlobInputs -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-write AuthenticationExtensionsLargeBlobInputs.write specification>
+setWrite :: (MonadDOM m, IsBufferSource val) => AuthenticationExtensionsLargeBlobInputs -> val -> m ()
+setWrite self val = liftDOM (void ((js_setWrite (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"write\"]; })"
+        js_getWrite :: AuthenticationExtensionsLargeBlobInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-write AuthenticationExtensionsLargeBlobInputs.write specification>
+getWrite :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> m (Maybe BufferSource)
+getWrite self = liftDOM (((js_getWrite (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-write AuthenticationExtensionsLargeBlobInputs.write specification>
+getWriteUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobInputs -> m BufferSource
+getWriteUnsafe self = liftDOM ((((js_getWrite (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-write AuthenticationExtensionsLargeBlobInputs.write specification>
+getWriteUnchecked :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> m BufferSource
+getWriteUnchecked self = liftDOM ((pFromJSVal <$> (js_getWrite (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobInputsJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobInputsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobInputsJSON.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobInputsJSON
+       (js_newAuthenticationExtensionsLargeBlobInputsJSON, js_setSupport, js_getSupport, js_setRead, js_getRead, js_setWrite, js_getWrite, newAuthenticationExtensionsLargeBlobInputsJSON, setSupport, getSupport, getSupportUnsafe, getSupportUnchecked, setRead, getRead, getReadUnsafe, getReadUnchecked, setWrite, getWrite, getWriteUnsafe, getWriteUnchecked, AuthenticationExtensionsLargeBlobInputsJSON(..), gTypeAuthenticationExtensionsLargeBlobInputsJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsLargeBlobInputsJSON :: IO AuthenticationExtensionsLargeBlobInputsJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionslargeblobinputsjson AuthenticationExtensionsLargeBlobInputsJSON specification>
+newAuthenticationExtensionsLargeBlobInputsJSON :: (MonadDOM m) => m AuthenticationExtensionsLargeBlobInputsJSON
+newAuthenticationExtensionsLargeBlobInputsJSON = liftDOM ((js_newAuthenticationExtensionsLargeBlobInputsJSON))
+
+foreign import javascript safe "(($1, $2) => { $1[\"support\"] = $2; })"
+        js_setSupport :: AuthenticationExtensionsLargeBlobInputsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-support AuthenticationExtensionsLargeBlobInputsJSON.support specification>
+setSupport :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsLargeBlobInputsJSON -> val -> m ()
+setSupport self val = liftDOM (void ((js_setSupport (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"support\"]; })"
+        js_getSupport :: AuthenticationExtensionsLargeBlobInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-support AuthenticationExtensionsLargeBlobInputsJSON.support specification>
+getSupport :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m (Maybe result)
+getSupport self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSupport (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-support AuthenticationExtensionsLargeBlobInputsJSON.support specification>
+getSupportUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m result
+getSupportUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSupport (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-support AuthenticationExtensionsLargeBlobInputsJSON.support specification>
+getSupportUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m result
+getSupportUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupport (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"read\"] = $2; })"
+        js_setRead :: AuthenticationExtensionsLargeBlobInputsJSON -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-read AuthenticationExtensionsLargeBlobInputsJSON.read specification>
+setRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputsJSON -> Bool -> m ()
+setRead self val = liftDOM (void ((js_setRead (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"read\"]; })"
+        js_getRead :: AuthenticationExtensionsLargeBlobInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-read AuthenticationExtensionsLargeBlobInputsJSON.read specification>
+getRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputsJSON -> m (Maybe Bool)
+getRead self = liftDOM (((js_getRead (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-read AuthenticationExtensionsLargeBlobInputsJSON.read specification>
+getReadUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobInputsJSON -> m Bool
+getReadUnsafe self = liftDOM ((((js_getRead (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-read AuthenticationExtensionsLargeBlobInputsJSON.read specification>
+getReadUnchecked :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputsJSON -> m Bool
+getReadUnchecked self = liftDOM ((pFromJSVal <$> (js_getRead (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"write\"] = $2; })"
+        js_setWrite :: AuthenticationExtensionsLargeBlobInputsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-write AuthenticationExtensionsLargeBlobInputsJSON.write specification>
+setWrite :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsLargeBlobInputsJSON -> val -> m ()
+setWrite self val = liftDOM (void ((js_setWrite (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"write\"]; })"
+        js_getWrite :: AuthenticationExtensionsLargeBlobInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-write AuthenticationExtensionsLargeBlobInputsJSON.write specification>
+getWrite :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m (Maybe result)
+getWrite self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getWrite (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-write AuthenticationExtensionsLargeBlobInputsJSON.write specification>
+getWriteUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m result
+getWriteUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getWrite (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-write AuthenticationExtensionsLargeBlobInputsJSON.write specification>
+getWriteUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m result
+getWriteUnchecked self = liftDOM ((pFromJSVal <$> (js_getWrite (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobOutputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsLargeBlobOutputs.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsLargeBlobOutputs
+       (js_newAuthenticationExtensionsLargeBlobOutputs, js_setSupported, js_getSupported, js_setBlob, js_getBlob, js_setWritten, js_getWritten, newAuthenticationExtensionsLargeBlobOutputs, setSupported, getSupported, getSupportedUnsafe, getSupportedUnchecked, setBlob, getBlob, getBlobUnsafe, getBlobUnchecked, setWritten, getWritten, getWrittenUnsafe, getWrittenUnchecked, AuthenticationExtensionsLargeBlobOutputs(..), gTypeAuthenticationExtensionsLargeBlobOutputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsLargeBlobOutputs :: IO AuthenticationExtensionsLargeBlobOutputs
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionslargebloboutputs AuthenticationExtensionsLargeBlobOutputs specification>
+newAuthenticationExtensionsLargeBlobOutputs :: (MonadDOM m) => m AuthenticationExtensionsLargeBlobOutputs
+newAuthenticationExtensionsLargeBlobOutputs = liftDOM ((js_newAuthenticationExtensionsLargeBlobOutputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supported\"] = $2; })"
+        js_setSupported :: AuthenticationExtensionsLargeBlobOutputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-supported AuthenticationExtensionsLargeBlobOutputs.supported specification>
+setSupported :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> Bool -> m ()
+setSupported self val = liftDOM (void ((js_setSupported (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supported\"]; })"
+        js_getSupported :: AuthenticationExtensionsLargeBlobOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-supported AuthenticationExtensionsLargeBlobOutputs.supported specification>
+getSupported :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m (Maybe Bool)
+getSupported self = liftDOM (((js_getSupported (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-supported AuthenticationExtensionsLargeBlobOutputs.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobOutputs -> m Bool
+getSupportedUnsafe self = liftDOM ((((js_getSupported (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-supported AuthenticationExtensionsLargeBlobOutputs.supported specification>
+getSupportedUnchecked :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m Bool
+getSupportedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupported (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"blob\"] = $2; })"
+        js_setBlob :: AuthenticationExtensionsLargeBlobOutputs -> ArrayBuffer -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-blob AuthenticationExtensionsLargeBlobOutputs.blob specification>
+setBlob :: (MonadDOM m, IsArrayBuffer val) => AuthenticationExtensionsLargeBlobOutputs -> val -> m ()
+setBlob self val = liftDOM (void ((js_setBlob (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"blob\"]; })"
+        js_getBlob :: AuthenticationExtensionsLargeBlobOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-blob AuthenticationExtensionsLargeBlobOutputs.blob specification>
+getBlob :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m (Maybe ArrayBuffer)
+getBlob self = liftDOM (((js_getBlob (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-blob AuthenticationExtensionsLargeBlobOutputs.blob specification>
+getBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobOutputs -> m ArrayBuffer
+getBlobUnsafe self = liftDOM ((((js_getBlob (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-blob AuthenticationExtensionsLargeBlobOutputs.blob specification>
+getBlobUnchecked :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m ArrayBuffer
+getBlobUnchecked self = liftDOM ((pFromJSVal <$> (js_getBlob (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"written\"] = $2; })"
+        js_setWritten :: AuthenticationExtensionsLargeBlobOutputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-written AuthenticationExtensionsLargeBlobOutputs.written specification>
+setWritten :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> Bool -> m ()
+setWritten self val = liftDOM (void ((js_setWritten (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"written\"]; })"
+        js_getWritten :: AuthenticationExtensionsLargeBlobOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-written AuthenticationExtensionsLargeBlobOutputs.written specification>
+getWritten :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m (Maybe Bool)
+getWritten self = liftDOM (((js_getWritten (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-written AuthenticationExtensionsLargeBlobOutputs.written specification>
+getWrittenUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobOutputs -> m Bool
+getWrittenUnsafe self = liftDOM ((((js_getWritten (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-written AuthenticationExtensionsLargeBlobOutputs.written specification>
+getWrittenUnchecked :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m Bool
+getWrittenUnchecked self = liftDOM ((pFromJSVal <$> (js_getWritten (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFInputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFInputs.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFInputs
+       (js_newAuthenticationExtensionsPRFInputs, js_setEval, js_getEval, js_setEvalByCredential, js_getEvalByCredential, newAuthenticationExtensionsPRFInputs, setEval, getEval, getEvalUnsafe, getEvalUnchecked, setEvalByCredential, getEvalByCredential, getEvalByCredentialUnsafe, getEvalByCredentialUnchecked, AuthenticationExtensionsPRFInputs(..), gTypeAuthenticationExtensionsPRFInputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsPRFInputs :: IO AuthenticationExtensionsPRFInputs
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfinputs AuthenticationExtensionsPRFInputs specification>
+newAuthenticationExtensionsPRFInputs :: (MonadDOM m) => m AuthenticationExtensionsPRFInputs
+newAuthenticationExtensionsPRFInputs = liftDOM ((js_newAuthenticationExtensionsPRFInputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"eval\"] = $2; })"
+        js_setEval :: AuthenticationExtensionsPRFInputs -> AuthenticationExtensionsPRFValues -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-eval AuthenticationExtensionsPRFInputs.eval specification>
+setEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> AuthenticationExtensionsPRFValues -> m ()
+setEval self val = liftDOM (void ((js_setEval (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"eval\"]; })"
+        js_getEval :: AuthenticationExtensionsPRFInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-eval AuthenticationExtensionsPRFInputs.eval specification>
+getEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> m (Maybe AuthenticationExtensionsPRFValues)
+getEval self = liftDOM (((js_getEval (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-eval AuthenticationExtensionsPRFInputs.eval specification>
+getEvalUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputs -> m AuthenticationExtensionsPRFValues
+getEvalUnsafe self = liftDOM ((((js_getEval (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-eval AuthenticationExtensionsPRFInputs.eval specification>
+getEvalUnchecked :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> m AuthenticationExtensionsPRFValues
+getEvalUnchecked self = liftDOM ((pFromJSVal <$> (js_getEval (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"evalByCredential\"] = $2; })"
+        js_setEvalByCredential :: AuthenticationExtensionsPRFInputs -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-evalbycredential AuthenticationExtensionsPRFInputs.evalByCredential specification>
+setEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> (Record JSString JSVal) -> m ()
+setEvalByCredential self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEvalByCredential (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"evalByCredential\"]; })"
+        js_getEvalByCredential :: AuthenticationExtensionsPRFInputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-evalbycredential AuthenticationExtensionsPRFInputs.evalByCredential specification>
+getEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> m (Maybe (Record JSString JSVal))
+getEvalByCredential self = liftDOM (((js_getEvalByCredential (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-evalbycredential AuthenticationExtensionsPRFInputs.evalByCredential specification>
+getEvalByCredentialUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputs -> m (Record JSString JSVal)
+getEvalByCredentialUnsafe self = liftDOM ((((js_getEvalByCredential (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-evalbycredential AuthenticationExtensionsPRFInputs.evalByCredential specification>
+getEvalByCredentialUnchecked :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> m (Record JSString JSVal)
+getEvalByCredentialUnchecked self = liftDOM ((pFromJSVal <$> (js_getEvalByCredential (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFInputsJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFInputsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFInputsJSON.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFInputsJSON
+       (js_newAuthenticationExtensionsPRFInputsJSON, js_setEval, js_getEval, js_setEvalByCredential, js_getEvalByCredential, newAuthenticationExtensionsPRFInputsJSON, setEval, getEval, getEvalUnsafe, getEvalUnchecked, setEvalByCredential, getEvalByCredential, getEvalByCredentialUnsafe, getEvalByCredentialUnchecked, AuthenticationExtensionsPRFInputsJSON(..), gTypeAuthenticationExtensionsPRFInputsJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsPRFInputsJSON :: IO AuthenticationExtensionsPRFInputsJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfinputsjson AuthenticationExtensionsPRFInputsJSON specification>
+newAuthenticationExtensionsPRFInputsJSON :: (MonadDOM m) => m AuthenticationExtensionsPRFInputsJSON
+newAuthenticationExtensionsPRFInputsJSON = liftDOM ((js_newAuthenticationExtensionsPRFInputsJSON))
+
+foreign import javascript safe "(($1, $2) => { $1[\"eval\"] = $2; })"
+        js_setEval :: AuthenticationExtensionsPRFInputsJSON -> AuthenticationExtensionsPRFValuesJSON -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-eval AuthenticationExtensionsPRFInputsJSON.eval specification>
+setEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> AuthenticationExtensionsPRFValuesJSON -> m ()
+setEval self val = liftDOM (void ((js_setEval (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"eval\"]; })"
+        js_getEval :: AuthenticationExtensionsPRFInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-eval AuthenticationExtensionsPRFInputsJSON.eval specification>
+getEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> m (Maybe AuthenticationExtensionsPRFValuesJSON)
+getEval self = liftDOM (((js_getEval (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-eval AuthenticationExtensionsPRFInputsJSON.eval specification>
+getEvalUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputsJSON -> m AuthenticationExtensionsPRFValuesJSON
+getEvalUnsafe self = liftDOM ((((js_getEval (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-eval AuthenticationExtensionsPRFInputsJSON.eval specification>
+getEvalUnchecked :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> m AuthenticationExtensionsPRFValuesJSON
+getEvalUnchecked self = liftDOM ((pFromJSVal <$> (js_getEval (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"evalByCredential\"] = $2; })"
+        js_setEvalByCredential :: AuthenticationExtensionsPRFInputsJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-evalbycredential AuthenticationExtensionsPRFInputsJSON.evalByCredential specification>
+setEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> (Record JSString JSVal) -> m ()
+setEvalByCredential self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEvalByCredential (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"evalByCredential\"]; })"
+        js_getEvalByCredential :: AuthenticationExtensionsPRFInputsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-evalbycredential AuthenticationExtensionsPRFInputsJSON.evalByCredential specification>
+getEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> m (Maybe (Record JSString JSVal))
+getEvalByCredential self = liftDOM (((js_getEvalByCredential (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-evalbycredential AuthenticationExtensionsPRFInputsJSON.evalByCredential specification>
+getEvalByCredentialUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputsJSON -> m (Record JSString JSVal)
+getEvalByCredentialUnsafe self = liftDOM ((((js_getEvalByCredential (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-evalbycredential AuthenticationExtensionsPRFInputsJSON.evalByCredential specification>
+getEvalByCredentialUnchecked :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> m (Record JSString JSVal)
+getEvalByCredentialUnchecked self = liftDOM ((pFromJSVal <$> (js_getEvalByCredential (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFOutputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFOutputs.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFOutputs
+       (js_newAuthenticationExtensionsPRFOutputs, js_setEnabled, js_getEnabled, js_setResults, js_getResults, newAuthenticationExtensionsPRFOutputs, setEnabled, getEnabled, getEnabledUnsafe, getEnabledUnchecked, setResults, getResults, getResultsUnsafe, getResultsUnchecked, AuthenticationExtensionsPRFOutputs(..), gTypeAuthenticationExtensionsPRFOutputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsPRFOutputs :: IO AuthenticationExtensionsPRFOutputs
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfoutputs AuthenticationExtensionsPRFOutputs specification>
+newAuthenticationExtensionsPRFOutputs :: (MonadDOM m) => m AuthenticationExtensionsPRFOutputs
+newAuthenticationExtensionsPRFOutputs = liftDOM ((js_newAuthenticationExtensionsPRFOutputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"enabled\"] = $2; })"
+        js_setEnabled :: AuthenticationExtensionsPRFOutputs -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-enabled AuthenticationExtensionsPRFOutputs.enabled specification>
+setEnabled :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> Bool -> m ()
+setEnabled self val = liftDOM (void ((js_setEnabled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"enabled\"]; })"
+        js_getEnabled :: AuthenticationExtensionsPRFOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-enabled AuthenticationExtensionsPRFOutputs.enabled specification>
+getEnabled :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> m (Maybe Bool)
+getEnabled self = liftDOM (((js_getEnabled (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-enabled AuthenticationExtensionsPRFOutputs.enabled specification>
+getEnabledUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFOutputs -> m Bool
+getEnabledUnsafe self = liftDOM ((((js_getEnabled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-enabled AuthenticationExtensionsPRFOutputs.enabled specification>
+getEnabledUnchecked :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> m Bool
+getEnabledUnchecked self = liftDOM ((pFromJSVal <$> (js_getEnabled (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"results\"] = $2; })"
+        js_setResults :: AuthenticationExtensionsPRFOutputs -> AuthenticationExtensionsPRFValues -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-results AuthenticationExtensionsPRFOutputs.results specification>
+setResults :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> AuthenticationExtensionsPRFValues -> m ()
+setResults self val = liftDOM (void ((js_setResults (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"results\"]; })"
+        js_getResults :: AuthenticationExtensionsPRFOutputs -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-results AuthenticationExtensionsPRFOutputs.results specification>
+getResults :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> m (Maybe AuthenticationExtensionsPRFValues)
+getResults self = liftDOM (((js_getResults (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-results AuthenticationExtensionsPRFOutputs.results specification>
+getResultsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFOutputs -> m AuthenticationExtensionsPRFValues
+getResultsUnsafe self = liftDOM ((((js_getResults (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-results AuthenticationExtensionsPRFOutputs.results specification>
+getResultsUnchecked :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> m AuthenticationExtensionsPRFValues
+getResultsUnchecked self = liftDOM ((pFromJSVal <$> (js_getResults (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFValues.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFValues.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFValues.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFValues
+       (js_newAuthenticationExtensionsPRFValues, js_setFirst, js_getFirst, js_setSecond, js_getSecond, newAuthenticationExtensionsPRFValues, setFirst, getFirst, setSecond, getSecond, getSecondUnsafe, getSecondUnchecked, AuthenticationExtensionsPRFValues(..), gTypeAuthenticationExtensionsPRFValues)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"first\": $1}); })"
+        js_newAuthenticationExtensionsPRFValues :: BufferSource -> IO AuthenticationExtensionsPRFValues
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfvalues AuthenticationExtensionsPRFValues specification>
+newAuthenticationExtensionsPRFValues :: (MonadDOM m, IsBufferSource first) => first -> m AuthenticationExtensionsPRFValues
+newAuthenticationExtensionsPRFValues first = liftDOM ((js_newAuthenticationExtensionsPRFValues (Types.toBufferSource first)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"first\"] = $2; })"
+        js_setFirst :: AuthenticationExtensionsPRFValues -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-first AuthenticationExtensionsPRFValues.first specification>
+setFirst :: (MonadDOM m, IsBufferSource val) => AuthenticationExtensionsPRFValues -> val -> m ()
+setFirst self val = liftDOM (void ((js_setFirst (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"first\"]; })"
+        js_getFirst :: AuthenticationExtensionsPRFValues -> IO BufferSource
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-first AuthenticationExtensionsPRFValues.first specification>
+getFirst :: (MonadDOM m) => AuthenticationExtensionsPRFValues -> m BufferSource
+getFirst self = liftDOM ((js_getFirst (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"second\"] = $2; })"
+        js_setSecond :: AuthenticationExtensionsPRFValues -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-second AuthenticationExtensionsPRFValues.second specification>
+setSecond :: (MonadDOM m, IsBufferSource val) => AuthenticationExtensionsPRFValues -> val -> m ()
+setSecond self val = liftDOM (void ((js_setSecond (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"second\"]; })"
+        js_getSecond :: AuthenticationExtensionsPRFValues -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-second AuthenticationExtensionsPRFValues.second specification>
+getSecond :: (MonadDOM m) => AuthenticationExtensionsPRFValues -> m (Maybe BufferSource)
+getSecond self = liftDOM (((js_getSecond (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-second AuthenticationExtensionsPRFValues.second specification>
+getSecondUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFValues -> m BufferSource
+getSecondUnsafe self = liftDOM ((((js_getSecond (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-second AuthenticationExtensionsPRFValues.second specification>
+getSecondUnchecked :: (MonadDOM m) => AuthenticationExtensionsPRFValues -> m BufferSource
+getSecondUnchecked self = liftDOM ((pFromJSVal <$> (js_getSecond (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFValuesJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFValuesJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPRFValuesJSON.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPRFValuesJSON
+       (js_newAuthenticationExtensionsPRFValuesJSON, js_setFirst, js_getFirst, js_setSecond, js_getSecond, newAuthenticationExtensionsPRFValuesJSON, setFirst, getFirst, setSecond, getSecond, getSecondUnsafe, getSecondUnchecked, AuthenticationExtensionsPRFValuesJSON(..), gTypeAuthenticationExtensionsPRFValuesJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"first\": $1}); })"
+        js_newAuthenticationExtensionsPRFValuesJSON :: JSString -> IO AuthenticationExtensionsPRFValuesJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfvaluesjson AuthenticationExtensionsPRFValuesJSON specification>
+newAuthenticationExtensionsPRFValuesJSON :: (MonadDOM m, ToJSString first) => first -> m AuthenticationExtensionsPRFValuesJSON
+newAuthenticationExtensionsPRFValuesJSON first = liftDOM ((js_newAuthenticationExtensionsPRFValuesJSON (toJSString first)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"first\"] = $2; })"
+        js_setFirst :: AuthenticationExtensionsPRFValuesJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-first AuthenticationExtensionsPRFValuesJSON.first specification>
+setFirst :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPRFValuesJSON -> val -> m ()
+setFirst self val = liftDOM (void ((js_setFirst (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"first\"]; })"
+        js_getFirst :: AuthenticationExtensionsPRFValuesJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-first AuthenticationExtensionsPRFValuesJSON.first specification>
+getFirst :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPRFValuesJSON -> m result
+getFirst self = liftDOM ((fromJSString <$> (js_getFirst (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"second\"] = $2; })"
+        js_setSecond :: AuthenticationExtensionsPRFValuesJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-second AuthenticationExtensionsPRFValuesJSON.second specification>
+setSecond :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPRFValuesJSON -> val -> m ()
+setSecond self val = liftDOM (void ((js_setSecond (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"second\"]; })"
+        js_getSecond :: AuthenticationExtensionsPRFValuesJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-second AuthenticationExtensionsPRFValuesJSON.second specification>
+getSecond :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPRFValuesJSON -> m (Maybe result)
+getSecond self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSecond (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-second AuthenticationExtensionsPRFValuesJSON.second specification>
+getSecondUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsPRFValuesJSON -> m result
+getSecondUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSecond (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-second AuthenticationExtensionsPRFValuesJSON.second specification>
+getSecondUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPRFValuesJSON -> m result
+getSecondUnchecked self = liftDOM ((pFromJSVal <$> (js_getSecond (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPaymentInputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPaymentInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPaymentInputs.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPaymentInputs
+       (js_newAuthenticationExtensionsPaymentInputs, js_setIsPayment, js_getIsPayment, js_setBrowserBoundPubKeyCredParams, js_getBrowserBoundPubKeyCredParams, js_setRpId, js_getRpId, js_setTopOrigin, js_getTopOrigin, js_setPayeeName, js_getPayeeName, js_setPayeeOrigin, js_getPayeeOrigin, js_setPaymentEntitiesLogos, js_getPaymentEntitiesLogos, js_setTotal, js_getTotal, js_setInstrument, js_getInstrument, newAuthenticationExtensionsPaymentInputs, setIsPayment, getIsPayment, getIsPaymentUnsafe, getIsPaymentUnchecked, setBrowserBoundPubKeyCredParams, getBrowserBoundPubKeyCredParams, getBrowserBoundPubKeyCredParamsUnsafe, getBrowserBoundPubKeyCredParamsUnchecked, setRpId, getRpId, getRpIdUnsafe, getRpIdUnchecked, setTopOrigin, getTopOrigin, getTopOriginUnsafe, getTopOriginUnchecked, setPayeeName, getPayeeName, getPayeeNameUnsafe, getPayeeNameUnchecked, setPayeeOrigin, getPayeeOrigin, getPayeeOriginUnsafe, getPayeeOriginUnchecked, setPaymentEntitiesLogos, getPaymentEntitiesLogos, getPaymentEntitiesLogosUnsafe, getPaymentEntitiesLogosUnchecked, setTotal, getTotal, getTotalUnsafe, getTotalUnchecked, setInstrument, getInstrument, getInstrumentUnsafe, getInstrumentUnchecked, AuthenticationExtensionsPaymentInputs(..), gTypeAuthenticationExtensionsPaymentInputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsPaymentInputs :: IO AuthenticationExtensionsPaymentInputs
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-authenticationextensionspaymentinputs AuthenticationExtensionsPaymentInputs specification>
+newAuthenticationExtensionsPaymentInputs :: (MonadDOM m) => m AuthenticationExtensionsPaymentInputs
+newAuthenticationExtensionsPaymentInputs = liftDOM ((js_newAuthenticationExtensionsPaymentInputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"isPayment\"] = $2; })"
+        js_setIsPayment :: AuthenticationExtensionsPaymentInputs -> Bool -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-ispayment AuthenticationExtensionsPaymentInputs.isPayment specification>
+setIsPayment :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> Bool -> m ()
+setIsPayment self val = liftDOM (void ((js_setIsPayment (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isPayment\"]; })"
+        js_getIsPayment :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-ispayment AuthenticationExtensionsPaymentInputs.isPayment specification>
+getIsPayment :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe Bool)
+getIsPayment self = liftDOM (((js_getIsPayment (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-ispayment AuthenticationExtensionsPaymentInputs.isPayment specification>
+getIsPaymentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m Bool
+getIsPaymentUnsafe self = liftDOM ((((js_getIsPayment (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-ispayment AuthenticationExtensionsPaymentInputs.isPayment specification>
+getIsPaymentUnchecked :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m Bool
+getIsPaymentUnchecked self = liftDOM ((pFromJSVal <$> (js_getIsPayment (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"browserBoundPubKeyCredParams\"] = $2; })"
+        js_setBrowserBoundPubKeyCredParams :: AuthenticationExtensionsPaymentInputs -> JSVal -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-browserboundpubkeycredparams AuthenticationExtensionsPaymentInputs.browserBoundPubKeyCredParams specification>
+setBrowserBoundPubKeyCredParams :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> [PublicKeyCredentialParameters] -> m ()
+setBrowserBoundPubKeyCredParams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBrowserBoundPubKeyCredParams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"browserBoundPubKeyCredParams\"]; })"
+        js_getBrowserBoundPubKeyCredParams :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-browserboundpubkeycredparams AuthenticationExtensionsPaymentInputs.browserBoundPubKeyCredParams specification>
+getBrowserBoundPubKeyCredParams :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe [PublicKeyCredentialParameters])
+getBrowserBoundPubKeyCredParams self = liftDOM (((js_getBrowserBoundPubKeyCredParams (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-browserboundpubkeycredparams AuthenticationExtensionsPaymentInputs.browserBoundPubKeyCredParams specification>
+getBrowserBoundPubKeyCredParamsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m [PublicKeyCredentialParameters]
+getBrowserBoundPubKeyCredParamsUnsafe self = liftDOM ((((js_getBrowserBoundPubKeyCredParams (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-browserboundpubkeycredparams AuthenticationExtensionsPaymentInputs.browserBoundPubKeyCredParams specification>
+getBrowserBoundPubKeyCredParamsUnchecked :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m [PublicKeyCredentialParameters]
+getBrowserBoundPubKeyCredParamsUnchecked self = liftDOM (((js_getBrowserBoundPubKeyCredParams (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rpId\"] = $2; })"
+        js_setRpId :: AuthenticationExtensionsPaymentInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-rpid AuthenticationExtensionsPaymentInputs.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPaymentInputs -> val -> m ()
+setRpId self val = liftDOM (void ((js_setRpId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rpId\"]; })"
+        js_getRpId :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-rpid AuthenticationExtensionsPaymentInputs.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m (Maybe result)
+getRpId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRpId (self))))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-rpid AuthenticationExtensionsPaymentInputs.rpId specification>
+getRpIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getRpIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRpId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-rpid AuthenticationExtensionsPaymentInputs.rpId specification>
+getRpIdUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getRpIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getRpId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"topOrigin\"] = $2; })"
+        js_setTopOrigin :: AuthenticationExtensionsPaymentInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-toporigin AuthenticationExtensionsPaymentInputs.topOrigin specification>
+setTopOrigin :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPaymentInputs -> val -> m ()
+setTopOrigin self val = liftDOM (void ((js_setTopOrigin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"topOrigin\"]; })"
+        js_getTopOrigin :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-toporigin AuthenticationExtensionsPaymentInputs.topOrigin specification>
+getTopOrigin :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m (Maybe result)
+getTopOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTopOrigin (self))))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-toporigin AuthenticationExtensionsPaymentInputs.topOrigin specification>
+getTopOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getTopOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTopOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-toporigin AuthenticationExtensionsPaymentInputs.topOrigin specification>
+getTopOriginUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getTopOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getTopOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payeeName\"] = $2; })"
+        js_setPayeeName :: AuthenticationExtensionsPaymentInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeename AuthenticationExtensionsPaymentInputs.payeeName specification>
+setPayeeName :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPaymentInputs -> val -> m ()
+setPayeeName self val = liftDOM (void ((js_setPayeeName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payeeName\"]; })"
+        js_getPayeeName :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeename AuthenticationExtensionsPaymentInputs.payeeName specification>
+getPayeeName :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m (Maybe result)
+getPayeeName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPayeeName (self))))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeename AuthenticationExtensionsPaymentInputs.payeeName specification>
+getPayeeNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getPayeeNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPayeeName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeename AuthenticationExtensionsPaymentInputs.payeeName specification>
+getPayeeNameUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getPayeeNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayeeName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payeeOrigin\"] = $2; })"
+        js_setPayeeOrigin :: AuthenticationExtensionsPaymentInputs -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeeorigin AuthenticationExtensionsPaymentInputs.payeeOrigin specification>
+setPayeeOrigin :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPaymentInputs -> val -> m ()
+setPayeeOrigin self val = liftDOM (void ((js_setPayeeOrigin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payeeOrigin\"]; })"
+        js_getPayeeOrigin :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeeorigin AuthenticationExtensionsPaymentInputs.payeeOrigin specification>
+getPayeeOrigin :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m (Maybe result)
+getPayeeOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPayeeOrigin (self))))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeeorigin AuthenticationExtensionsPaymentInputs.payeeOrigin specification>
+getPayeeOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getPayeeOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPayeeOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-payeeorigin AuthenticationExtensionsPaymentInputs.payeeOrigin specification>
+getPayeeOriginUnchecked :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPaymentInputs -> m result
+getPayeeOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayeeOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"paymentEntitiesLogos\"] = $2; })"
+        js_setPaymentEntitiesLogos :: AuthenticationExtensionsPaymentInputs -> JSVal -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-paymententitieslogos AuthenticationExtensionsPaymentInputs.paymentEntitiesLogos specification>
+setPaymentEntitiesLogos :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> [PaymentEntityLogo] -> m ()
+setPaymentEntitiesLogos self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPaymentEntitiesLogos (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"paymentEntitiesLogos\"]; })"
+        js_getPaymentEntitiesLogos :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-paymententitieslogos AuthenticationExtensionsPaymentInputs.paymentEntitiesLogos specification>
+getPaymentEntitiesLogos :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe [PaymentEntityLogo])
+getPaymentEntitiesLogos self = liftDOM (((js_getPaymentEntitiesLogos (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-paymententitieslogos AuthenticationExtensionsPaymentInputs.paymentEntitiesLogos specification>
+getPaymentEntitiesLogosUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m [PaymentEntityLogo]
+getPaymentEntitiesLogosUnsafe self = liftDOM ((((js_getPaymentEntitiesLogos (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-paymententitieslogos AuthenticationExtensionsPaymentInputs.paymentEntitiesLogos specification>
+getPaymentEntitiesLogosUnchecked :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m [PaymentEntityLogo]
+getPaymentEntitiesLogosUnchecked self = liftDOM (((js_getPaymentEntitiesLogos (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"total\"] = $2; })"
+        js_setTotal :: AuthenticationExtensionsPaymentInputs -> PaymentCurrencyAmount -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-total AuthenticationExtensionsPaymentInputs.total specification>
+setTotal :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> PaymentCurrencyAmount -> m ()
+setTotal self val = liftDOM (void ((js_setTotal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })"
+        js_getTotal :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-total AuthenticationExtensionsPaymentInputs.total specification>
+getTotal :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe PaymentCurrencyAmount)
+getTotal self = liftDOM (((js_getTotal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-total AuthenticationExtensionsPaymentInputs.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m PaymentCurrencyAmount
+getTotalUnsafe self = liftDOM ((((js_getTotal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-total AuthenticationExtensionsPaymentInputs.total specification>
+getTotalUnchecked :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m PaymentCurrencyAmount
+getTotalUnchecked self = liftDOM ((pFromJSVal <$> (js_getTotal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"instrument\"] = $2; })"
+        js_setInstrument :: AuthenticationExtensionsPaymentInputs -> PaymentCredentialInstrument -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-instrument AuthenticationExtensionsPaymentInputs.instrument specification>
+setInstrument :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> PaymentCredentialInstrument -> m ()
+setInstrument self val = liftDOM (void ((js_setInstrument (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"instrument\"]; })"
+        js_getInstrument :: AuthenticationExtensionsPaymentInputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-instrument AuthenticationExtensionsPaymentInputs.instrument specification>
+getInstrument :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe PaymentCredentialInstrument)
+getInstrument self = liftDOM (((js_getInstrument (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-instrument AuthenticationExtensionsPaymentInputs.instrument specification>
+getInstrumentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m PaymentCredentialInstrument
+getInstrumentUnsafe self = liftDOM ((((js_getInstrument (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-instrument AuthenticationExtensionsPaymentInputs.instrument specification>
+getInstrumentUnchecked :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m PaymentCredentialInstrument
+getInstrumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getInstrument (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPaymentOutputs.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPaymentOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticationExtensionsPaymentOutputs.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticationExtensionsPaymentOutputs
+       (js_newAuthenticationExtensionsPaymentOutputs, js_setBrowserBoundSignature, js_getBrowserBoundSignature, newAuthenticationExtensionsPaymentOutputs, setBrowserBoundSignature, getBrowserBoundSignature, getBrowserBoundSignatureUnsafe, getBrowserBoundSignatureUnchecked, AuthenticationExtensionsPaymentOutputs(..), gTypeAuthenticationExtensionsPaymentOutputs)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticationExtensionsPaymentOutputs :: IO AuthenticationExtensionsPaymentOutputs
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-authenticationextensionspaymentoutputs AuthenticationExtensionsPaymentOutputs specification>
+newAuthenticationExtensionsPaymentOutputs :: (MonadDOM m) => m AuthenticationExtensionsPaymentOutputs
+newAuthenticationExtensionsPaymentOutputs = liftDOM ((js_newAuthenticationExtensionsPaymentOutputs))
+
+foreign import javascript safe "(($1, $2) => { $1[\"browserBoundSignature\"] = $2; })"
+        js_setBrowserBoundSignature :: AuthenticationExtensionsPaymentOutputs -> BrowserBoundSignature -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentoutputs-browserboundsignature AuthenticationExtensionsPaymentOutputs.browserBoundSignature specification>
+setBrowserBoundSignature :: (MonadDOM m) => AuthenticationExtensionsPaymentOutputs -> BrowserBoundSignature -> m ()
+setBrowserBoundSignature self val = liftDOM (void ((js_setBrowserBoundSignature (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"browserBoundSignature\"]; })"
+        js_getBrowserBoundSignature :: AuthenticationExtensionsPaymentOutputs -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentoutputs-browserboundsignature AuthenticationExtensionsPaymentOutputs.browserBoundSignature specification>
+getBrowserBoundSignature :: (MonadDOM m) => AuthenticationExtensionsPaymentOutputs -> m (Maybe BrowserBoundSignature)
+getBrowserBoundSignature self = liftDOM (((js_getBrowserBoundSignature (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentoutputs-browserboundsignature AuthenticationExtensionsPaymentOutputs.browserBoundSignature specification>
+getBrowserBoundSignatureUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentOutputs -> m BrowserBoundSignature
+getBrowserBoundSignatureUnsafe self = liftDOM ((((js_getBrowserBoundSignature (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentoutputs-browserboundsignature AuthenticationExtensionsPaymentOutputs.browserBoundSignature specification>
+getBrowserBoundSignatureUnchecked :: (MonadDOM m) => AuthenticationExtensionsPaymentOutputs -> m BrowserBoundSignature
+getBrowserBoundSignatureUnchecked self = liftDOM ((pFromJSVal <$> (js_getBrowserBoundSignature (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorAssertionResponse.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorAssertionResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorAssertionResponse.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticatorAssertionResponse
+       (js_getAuthenticatorData, js_getSignature, js_getUserHandle, getAuthenticatorData, getSignature, getUserHandle, getUserHandleUnsafe, getUserHandleUnchecked, AuthenticatorAssertionResponse(..), gTypeAuthenticatorAssertionResponse)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"authenticatorData\"]; })"
+        js_getAuthenticatorData :: AuthenticatorAssertionResponse -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/authenticatorData MDN AuthenticatorAssertionResponse.authenticatorData documentation>
+getAuthenticatorData :: (MonadDOM m) => AuthenticatorAssertionResponse -> m ArrayBuffer
+getAuthenticatorData self = liftDOM ((js_getAuthenticatorData (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signature\"]; })"
+        js_getSignature :: AuthenticatorAssertionResponse -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/signature MDN AuthenticatorAssertionResponse.signature documentation>
+getSignature :: (MonadDOM m) => AuthenticatorAssertionResponse -> m ArrayBuffer
+getSignature self = liftDOM ((js_getSignature (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userHandle\"]; })"
+        js_getUserHandle :: AuthenticatorAssertionResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/userHandle MDN AuthenticatorAssertionResponse.userHandle documentation>
+getUserHandle :: (MonadDOM m) => AuthenticatorAssertionResponse -> m (Maybe ArrayBuffer)
+getUserHandle self = liftDOM (((js_getUserHandle (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/userHandle MDN AuthenticatorAssertionResponse.userHandle documentation>
+getUserHandleUnsafe :: (MonadDOM m, HasCallStack) => AuthenticatorAssertionResponse -> m ArrayBuffer
+getUserHandleUnsafe self = liftDOM ((((js_getUserHandle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/userHandle MDN AuthenticatorAssertionResponse.userHandle documentation>
+getUserHandleUnchecked :: (MonadDOM m) => AuthenticatorAssertionResponse -> m ArrayBuffer
+getUserHandleUnchecked self = liftDOM ((pFromJSVal <$> (js_getUserHandle (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorAttestationResponse.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorAttestationResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorAttestationResponse.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticatorAttestationResponse
+       (js_getAuthenticatorData, js_getPublicKey, js_getPublicKeyAlgorithm, js_getTransports, js_getAttestationObject, getAuthenticatorData, getAuthenticatorData_, getPublicKey, getPublicKey_, getPublicKeyUnsafe, getPublicKeyUnchecked, getPublicKeyAlgorithm, getPublicKeyAlgorithm_, getTransports, getTransports_, getAttestationObject, AuthenticatorAttestationResponse(..), gTypeAuthenticatorAttestationResponse)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getAuthenticatorData\"](); })"
+        js_getAuthenticatorData :: AuthenticatorAttestationResponse -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getAuthenticatorData MDN AuthenticatorAttestationResponse.getAuthenticatorData documentation>
+getAuthenticatorData :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ArrayBuffer
+getAuthenticatorData self = liftDOM ((js_getAuthenticatorData (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getAuthenticatorData MDN AuthenticatorAttestationResponse.getAuthenticatorData documentation>
+getAuthenticatorData_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getAuthenticatorData_ self = liftDOM (void ((js_getAuthenticatorData (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"getPublicKey\"](); })"
+        js_getPublicKey :: AuthenticatorAttestationResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKey MDN AuthenticatorAttestationResponse.getPublicKey documentation>
+getPublicKey :: (MonadDOM m) => AuthenticatorAttestationResponse -> m (Maybe ArrayBuffer)
+getPublicKey self = liftDOM (((js_getPublicKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKey MDN AuthenticatorAttestationResponse.getPublicKey documentation>
+getPublicKey_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getPublicKey_ self = liftDOM (void ((js_getPublicKey (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKey MDN AuthenticatorAttestationResponse.getPublicKey documentation>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => AuthenticatorAttestationResponse -> m ArrayBuffer
+getPublicKeyUnsafe self = liftDOM ((((js_getPublicKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKey MDN AuthenticatorAttestationResponse.getPublicKey documentation>
+getPublicKeyUnchecked :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ArrayBuffer
+getPublicKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getPublicKey (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"getPublicKeyAlgorithm\"](); })"
+        js_getPublicKeyAlgorithm :: AuthenticatorAttestationResponse -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKeyAlgorithm MDN AuthenticatorAttestationResponse.getPublicKeyAlgorithm documentation>
+getPublicKeyAlgorithm :: (MonadDOM m) => AuthenticatorAttestationResponse -> m Int
+getPublicKeyAlgorithm self = liftDOM ((js_getPublicKeyAlgorithm (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKeyAlgorithm MDN AuthenticatorAttestationResponse.getPublicKeyAlgorithm documentation>
+getPublicKeyAlgorithm_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getPublicKeyAlgorithm_ self = liftDOM (void ((js_getPublicKeyAlgorithm (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"getTransports\"](); })"
+        js_getTransports :: AuthenticatorAttestationResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getTransports MDN AuthenticatorAttestationResponse.getTransports documentation>
+getTransports :: (MonadDOM m, FromJSString result) => AuthenticatorAttestationResponse -> m [result]
+getTransports self = liftDOM (((js_getTransports (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getTransports MDN AuthenticatorAttestationResponse.getTransports documentation>
+getTransports_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getTransports_ self = liftDOM (void ((js_getTransports (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attestationObject\"]; })"
+        js_getAttestationObject :: AuthenticatorAttestationResponse -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/attestationObject MDN AuthenticatorAttestationResponse.attestationObject documentation>
+getAttestationObject :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ArrayBuffer
+getAttestationObject self = liftDOM ((js_getAttestationObject (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorResponse.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorResponse.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticatorResponse
+       (js_getClientDataJSON, getClientDataJSON, AuthenticatorResponse(..), gTypeAuthenticatorResponse, IsAuthenticatorResponse, toAuthenticatorResponse)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientDataJSON\"]; })"
+        js_getClientDataJSON :: AuthenticatorResponse -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorResponse/clientDataJSON MDN AuthenticatorResponse.clientDataJSON documentation>
+getClientDataJSON :: (MonadDOM m, IsAuthenticatorResponse self) => self -> m ArrayBuffer
+getClientDataJSON self = liftDOM ((js_getClientDataJSON ((Types.toAuthenticatorResponse self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorSelectionCriteria.hs b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorSelectionCriteria.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AuthenticatorSelectionCriteria.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AuthenticatorSelectionCriteria
+       (js_newAuthenticatorSelectionCriteria, js_setAuthenticatorAttachment, js_getAuthenticatorAttachment, js_setResidentKey, js_getResidentKey, js_setRequireResidentKey, js_getRequireResidentKey, js_setUserVerification, js_getUserVerification, newAuthenticatorSelectionCriteria, setAuthenticatorAttachment, getAuthenticatorAttachment, getAuthenticatorAttachmentUnsafe, getAuthenticatorAttachmentUnchecked, setResidentKey, getResidentKey, getResidentKeyUnsafe, getResidentKeyUnchecked, setRequireResidentKey, getRequireResidentKey, getRequireResidentKeyUnsafe, getRequireResidentKeyUnchecked, setUserVerification, getUserVerification, getUserVerificationUnsafe, getUserVerificationUnchecked, AuthenticatorSelectionCriteria(..), gTypeAuthenticatorSelectionCriteria)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAuthenticatorSelectionCriteria :: IO AuthenticatorSelectionCriteria
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticatorselectioncriteria AuthenticatorSelectionCriteria specification>
+newAuthenticatorSelectionCriteria :: (MonadDOM m) => m AuthenticatorSelectionCriteria
+newAuthenticatorSelectionCriteria = liftDOM ((js_newAuthenticatorSelectionCriteria))
+
+foreign import javascript safe "(($1, $2) => { $1[\"authenticatorAttachment\"] = $2; })"
+        js_setAuthenticatorAttachment :: AuthenticatorSelectionCriteria -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-authenticatorattachment AuthenticatorSelectionCriteria.authenticatorAttachment specification>
+setAuthenticatorAttachment :: (MonadDOM m, ToJSString val) => AuthenticatorSelectionCriteria -> val -> m ()
+setAuthenticatorAttachment self val = liftDOM (void ((js_setAuthenticatorAttachment (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"authenticatorAttachment\"]; })"
+        js_getAuthenticatorAttachment :: AuthenticatorSelectionCriteria -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-authenticatorattachment AuthenticatorSelectionCriteria.authenticatorAttachment specification>
+getAuthenticatorAttachment :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m (Maybe result)
+getAuthenticatorAttachment self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAuthenticatorAttachment (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-authenticatorattachment AuthenticatorSelectionCriteria.authenticatorAttachment specification>
+getAuthenticatorAttachmentUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getAuthenticatorAttachmentUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAuthenticatorAttachment (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-authenticatorattachment AuthenticatorSelectionCriteria.authenticatorAttachment specification>
+getAuthenticatorAttachmentUnchecked :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getAuthenticatorAttachmentUnchecked self = liftDOM ((pFromJSVal <$> (js_getAuthenticatorAttachment (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"residentKey\"] = $2; })"
+        js_setResidentKey :: AuthenticatorSelectionCriteria -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-residentkey AuthenticatorSelectionCriteria.residentKey specification>
+setResidentKey :: (MonadDOM m, ToJSString val) => AuthenticatorSelectionCriteria -> val -> m ()
+setResidentKey self val = liftDOM (void ((js_setResidentKey (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"residentKey\"]; })"
+        js_getResidentKey :: AuthenticatorSelectionCriteria -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-residentkey AuthenticatorSelectionCriteria.residentKey specification>
+getResidentKey :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m (Maybe result)
+getResidentKey self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getResidentKey (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-residentkey AuthenticatorSelectionCriteria.residentKey specification>
+getResidentKeyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getResidentKeyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getResidentKey (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-residentkey AuthenticatorSelectionCriteria.residentKey specification>
+getResidentKeyUnchecked :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getResidentKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getResidentKey (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requireResidentKey\"] = $2; })"
+        js_setRequireResidentKey :: AuthenticatorSelectionCriteria -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey AuthenticatorSelectionCriteria.requireResidentKey specification>
+setRequireResidentKey :: (MonadDOM m) => AuthenticatorSelectionCriteria -> Bool -> m ()
+setRequireResidentKey self val = liftDOM (void ((js_setRequireResidentKey (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requireResidentKey\"]; })"
+        js_getRequireResidentKey :: AuthenticatorSelectionCriteria -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey AuthenticatorSelectionCriteria.requireResidentKey specification>
+getRequireResidentKey :: (MonadDOM m) => AuthenticatorSelectionCriteria -> m (Maybe Bool)
+getRequireResidentKey self = liftDOM (((js_getRequireResidentKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey AuthenticatorSelectionCriteria.requireResidentKey specification>
+getRequireResidentKeyUnsafe :: (MonadDOM m, HasCallStack) => AuthenticatorSelectionCriteria -> m Bool
+getRequireResidentKeyUnsafe self = liftDOM ((((js_getRequireResidentKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey AuthenticatorSelectionCriteria.requireResidentKey specification>
+getRequireResidentKeyUnchecked :: (MonadDOM m) => AuthenticatorSelectionCriteria -> m Bool
+getRequireResidentKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequireResidentKey (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"userVerification\"] = $2; })"
+        js_setUserVerification :: AuthenticatorSelectionCriteria -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-userverification AuthenticatorSelectionCriteria.userVerification specification>
+setUserVerification :: (MonadDOM m, ToJSString val) => AuthenticatorSelectionCriteria -> val -> m ()
+setUserVerification self val = liftDOM (void ((js_setUserVerification (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userVerification\"]; })"
+        js_getUserVerification :: AuthenticatorSelectionCriteria -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-userverification AuthenticatorSelectionCriteria.userVerification specification>
+getUserVerification :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m (Maybe result)
+getUserVerification self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUserVerification (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-userverification AuthenticatorSelectionCriteria.userVerification specification>
+getUserVerificationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getUserVerificationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUserVerification (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-userverification AuthenticatorSelectionCriteria.userVerification specification>
+getUserVerificationUnchecked :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getUserVerificationUnchecked self = liftDOM ((pFromJSVal <$> (js_getUserVerification (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs
+++ /dev/null
@@ -1,53 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
-       (js_newAutocompleteErrorEvent, newAutocompleteErrorEvent,
-        js_getReason, getReason, AutocompleteErrorEvent(..),
-        gTypeAutocompleteErrorEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"AutocompleteErrorEvent\"]($1,\n$2); })"
-        js_newAutocompleteErrorEvent ::
-        JSString ->
-          Optional AutocompleteErrorEventInit -> IO AutocompleteErrorEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation> 
-newAutocompleteErrorEvent ::
-                          (MonadIO m, ToJSString type') =>
-                            type' ->
-                              Maybe AutocompleteErrorEventInit -> m AutocompleteErrorEvent
-newAutocompleteErrorEvent type' eventInitDict
-  = liftIO
-      (js_newAutocompleteErrorEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })" js_getReason ::
-        AutocompleteErrorEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent.reason Mozilla AutocompleteErrorEvent.reason documentation> 
-getReason ::
-          (MonadIO m, FromJSString result) =>
-            AutocompleteErrorEvent -> m result
-getReason self = liftIO (fromJSString <$> (js_getReason self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AutofillEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AutofillEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AutofillEvent.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from autofill-event (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AutofillEvent
+       (AutofillEvent(..), gTypeAutofillEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AvcEncoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/AvcEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AvcEncoderConfig.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-avc-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.AvcEncoderConfig
+       (js_newAvcEncoderConfig, js_setFormat, js_getFormat, newAvcEncoderConfig, setFormat, getFormat, getFormatUnsafe, getFormatUnchecked, AvcEncoderConfig(..), gTypeAvcEncoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newAvcEncoderConfig :: IO AvcEncoderConfig
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dictdef-avcencoderconfig AvcEncoderConfig specification>
+newAvcEncoderConfig :: (MonadDOM m) => m AvcEncoderConfig
+newAvcEncoderConfig = liftDOM ((js_newAvcEncoderConfig))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: AvcEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-avcencoderconfig-format AvcEncoderConfig.format specification>
+setFormat :: (MonadDOM m) => AvcEncoderConfig -> AvcBitstreamFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: AvcEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-avcencoderconfig-format AvcEncoderConfig.format specification>
+getFormat :: (MonadDOM m) => AvcEncoderConfig -> m (Maybe AvcBitstreamFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-avcencoderconfig-format AvcEncoderConfig.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => AvcEncoderConfig -> m AvcBitstreamFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-avcencoderconfig-format AvcEncoderConfig.format specification>
+getFormatUnchecked :: (MonadDOM m) => AvcEncoderConfig -> m AvcBitstreamFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BackgroundBlur.hs b/src/GHCJS/DOM/JSFFI/Generated/BackgroundBlur.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BackgroundBlur.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-extensions (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BackgroundBlur
+       (js_newBackgroundBlur, newBackgroundBlur, BackgroundBlur(..), gTypeBackgroundBlur)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"enabled\": $1}); })"
+        js_newBackgroundBlur :: Bool -> IO BackgroundBlur
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-backgroundblur BackgroundBlur specification>
+newBackgroundBlur :: (MonadDOM m) => Bool -> m BackgroundBlur
+newBackgroundBlur enabled = liftDOM ((js_newBackgroundBlur (enabled)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs b/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
@@ -1,32 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.BarProp
-       (js_getVisible, getVisible, BarProp(..), gTypeBarProp) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+       (js_getVisible, getVisible, BarProp(..), gTypeBarProp)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"visible\"] ? 1 : 0); })"
-        js_getVisible :: BarProp -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BarProp.visible Mozilla BarProp.visible documentation> 
-getVisible :: (MonadIO m) => BarProp -> m Bool
-getVisible self = liftIO (js_getVisible self)
+foreign import javascript unsafe "(($1) => { return $1[\"visible\"]; })"
+        js_getVisible :: BarProp -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/BarProp/visible MDN BarProp.visible documentation>
+getVisible :: (MonadDOM m) => BarProp -> m Bool
+getVisible self = liftDOM ((js_getVisible (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BaseAudioContext.hs b/src/GHCJS/DOM/JSFFI/Generated/BaseAudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BaseAudioContext.hs
@@ -0,0 +1,247 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BaseAudioContext
+       (js_createAnalyser, js_createBiquadFilter, js_createBuffer, js_createBufferSource, js_createChannelMerger, js_createChannelSplitter, js_createConstantSource, js_createConvolver, js_createDelay, js_createDynamicsCompressor, js_createGain, js_createIIRFilter, js_createOscillator, js_createPanner, js_createPeriodicWave, js_createScriptProcessor, js_createStereoPanner, js_createWaveShaper, js_decodeAudioData, js_getDestination, js_getSampleRate, js_getCurrentTime, js_getListener, js_getState, js_getAudioWorklet, createAnalyser, createAnalyser_, createBiquadFilter, createBiquadFilter_, createBuffer, createBuffer_, createBufferSource, createBufferSource_, createChannelMerger, createChannelMerger_, createChannelSplitter, createChannelSplitter_, createConstantSource, createConstantSource_, createConvolver, createConvolver_, createDelay, createDelay_, createDynamicsCompressor, createDynamicsCompressor_, createGain, createGain_, createIIRFilter, createIIRFilter_, createOscillator, createOscillator_, createPanner, createPanner_, createPeriodicWave, createPeriodicWave_, createScriptProcessor, createScriptProcessor_, createStereoPanner, createStereoPanner_, createWaveShaper, createWaveShaper_, decodeAudioData, decodeAudioData_, getDestination, getSampleRate, getCurrentTime, getListener, getState, getAudioWorklet, statechange, BaseAudioContext(..), gTypeBaseAudioContext, IsBaseAudioContext, toBaseAudioContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"createAnalyser\"](); })"
+        js_createAnalyser :: BaseAudioContext -> IO AnalyserNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createAnalyser MDN BaseAudioContext.createAnalyser documentation>
+createAnalyser :: (MonadDOM m, IsBaseAudioContext self) => self -> m AnalyserNode
+createAnalyser self = liftDOM ((js_createAnalyser ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createAnalyser MDN BaseAudioContext.createAnalyser documentation>
+createAnalyser_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createAnalyser_ self = liftDOM (void ((js_createAnalyser ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createBiquadFilter\"](); })"
+        js_createBiquadFilter :: BaseAudioContext -> IO BiquadFilterNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBiquadFilter MDN BaseAudioContext.createBiquadFilter documentation>
+createBiquadFilter :: (MonadDOM m, IsBaseAudioContext self) => self -> m BiquadFilterNode
+createBiquadFilter self = liftDOM ((js_createBiquadFilter ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBiquadFilter MDN BaseAudioContext.createBiquadFilter documentation>
+createBiquadFilter_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createBiquadFilter_ self = liftDOM (void ((js_createBiquadFilter ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createBuffer\"]($2, $3, $4); })"
+        js_createBuffer :: BaseAudioContext -> Word -> Word -> Float -> IO AudioBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBuffer MDN BaseAudioContext.createBuffer documentation>
+createBuffer :: (MonadDOM m, IsBaseAudioContext self) => self -> Word -> Word -> Float -> m AudioBuffer
+createBuffer self numberOfChannels length sampleRate = liftDOM ((js_createBuffer ((Types.toBaseAudioContext self)) (numberOfChannels) (length) (sampleRate)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBuffer MDN BaseAudioContext.createBuffer documentation>
+createBuffer_ :: (MonadDOM m, IsBaseAudioContext self) => self -> Word -> Word -> Float -> m ()
+createBuffer_ self numberOfChannels length sampleRate = liftDOM (void ((js_createBuffer ((Types.toBaseAudioContext self)) (numberOfChannels) (length) (sampleRate))))
+
+foreign import javascript safe "(($1) => { return $1[\"createBufferSource\"](); })"
+        js_createBufferSource :: BaseAudioContext -> IO AudioBufferSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBufferSource MDN BaseAudioContext.createBufferSource documentation>
+createBufferSource :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioBufferSourceNode
+createBufferSource self = liftDOM ((js_createBufferSource ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBufferSource MDN BaseAudioContext.createBufferSource documentation>
+createBufferSource_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createBufferSource_ self = liftDOM (void ((js_createBufferSource ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createChannelMerger\"]($2); })"
+        js_createChannelMerger :: BaseAudioContext -> JSVal -> IO ChannelMergerNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createChannelMerger MDN BaseAudioContext.createChannelMerger documentation>
+createChannelMerger :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Word -> m ChannelMergerNode
+createChannelMerger self numberOfInputs = liftDOM (((P.maybe (P.return jsUndefined) toJSVal numberOfInputs) >>= \a2' -> js_createChannelMerger ((Types.toBaseAudioContext self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createChannelMerger MDN BaseAudioContext.createChannelMerger documentation>
+createChannelMerger_ :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Word -> m ()
+createChannelMerger_ self numberOfInputs = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal numberOfInputs) >>= \a2' -> js_createChannelMerger ((Types.toBaseAudioContext self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createChannelSplitter\"]($2); })"
+        js_createChannelSplitter :: BaseAudioContext -> JSVal -> IO ChannelSplitterNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createChannelSplitter MDN BaseAudioContext.createChannelSplitter documentation>
+createChannelSplitter :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Word -> m ChannelSplitterNode
+createChannelSplitter self numberOfOutputs = liftDOM (((P.maybe (P.return jsUndefined) toJSVal numberOfOutputs) >>= \a2' -> js_createChannelSplitter ((Types.toBaseAudioContext self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createChannelSplitter MDN BaseAudioContext.createChannelSplitter documentation>
+createChannelSplitter_ :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Word -> m ()
+createChannelSplitter_ self numberOfOutputs = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal numberOfOutputs) >>= \a2' -> js_createChannelSplitter ((Types.toBaseAudioContext self)) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"createConstantSource\"](); })"
+        js_createConstantSource :: BaseAudioContext -> IO ConstantSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConstantSource MDN BaseAudioContext.createConstantSource documentation>
+createConstantSource :: (MonadDOM m, IsBaseAudioContext self) => self -> m ConstantSourceNode
+createConstantSource self = liftDOM ((js_createConstantSource ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConstantSource MDN BaseAudioContext.createConstantSource documentation>
+createConstantSource_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createConstantSource_ self = liftDOM (void ((js_createConstantSource ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createConvolver\"](); })"
+        js_createConvolver :: BaseAudioContext -> IO ConvolverNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConvolver MDN BaseAudioContext.createConvolver documentation>
+createConvolver :: (MonadDOM m, IsBaseAudioContext self) => self -> m ConvolverNode
+createConvolver self = liftDOM ((js_createConvolver ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConvolver MDN BaseAudioContext.createConvolver documentation>
+createConvolver_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createConvolver_ self = liftDOM (void ((js_createConvolver ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createDelay\"]($2); })"
+        js_createDelay :: BaseAudioContext -> JSVal -> IO DelayNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDelay MDN BaseAudioContext.createDelay documentation>
+createDelay :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Double -> m DelayNode
+createDelay self maxDelayTime = liftDOM (((P.maybe (P.return jsUndefined) toJSVal maxDelayTime) >>= \a2' -> js_createDelay ((Types.toBaseAudioContext self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDelay MDN BaseAudioContext.createDelay documentation>
+createDelay_ :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Double -> m ()
+createDelay_ self maxDelayTime = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal maxDelayTime) >>= \a2' -> js_createDelay ((Types.toBaseAudioContext self)) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"createDynamicsCompressor\"](); })"
+        js_createDynamicsCompressor :: BaseAudioContext -> IO DynamicsCompressorNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDynamicsCompressor MDN BaseAudioContext.createDynamicsCompressor documentation>
+createDynamicsCompressor :: (MonadDOM m, IsBaseAudioContext self) => self -> m DynamicsCompressorNode
+createDynamicsCompressor self = liftDOM ((js_createDynamicsCompressor ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDynamicsCompressor MDN BaseAudioContext.createDynamicsCompressor documentation>
+createDynamicsCompressor_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createDynamicsCompressor_ self = liftDOM (void ((js_createDynamicsCompressor ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createGain\"](); })"
+        js_createGain :: BaseAudioContext -> IO GainNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createGain MDN BaseAudioContext.createGain documentation>
+createGain :: (MonadDOM m, IsBaseAudioContext self) => self -> m GainNode
+createGain self = liftDOM ((js_createGain ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createGain MDN BaseAudioContext.createGain documentation>
+createGain_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createGain_ self = liftDOM (void ((js_createGain ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createIIRFilter\"]($2, $3); })"
+        js_createIIRFilter :: BaseAudioContext -> JSVal -> JSVal -> IO IIRFilterNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createIIRFilter MDN BaseAudioContext.createIIRFilter documentation>
+createIIRFilter :: (MonadDOM m, IsBaseAudioContext self) => self -> [Double] -> [Double] -> m IIRFilterNode
+createIIRFilter self feedforward feedback = liftDOM (((toJSVal feedforward) >>= \a2' -> (toJSVal feedback) >>= \a3' -> js_createIIRFilter ((Types.toBaseAudioContext self)) a2' a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createIIRFilter MDN BaseAudioContext.createIIRFilter documentation>
+createIIRFilter_ :: (MonadDOM m, IsBaseAudioContext self) => self -> [Double] -> [Double] -> m ()
+createIIRFilter_ self feedforward feedback = liftDOM (void (((toJSVal feedforward) >>= \a2' -> (toJSVal feedback) >>= \a3' -> js_createIIRFilter ((Types.toBaseAudioContext self)) a2' a3')))
+
+foreign import javascript safe "(($1) => { return $1[\"createOscillator\"](); })"
+        js_createOscillator :: BaseAudioContext -> IO OscillatorNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createOscillator MDN BaseAudioContext.createOscillator documentation>
+createOscillator :: (MonadDOM m, IsBaseAudioContext self) => self -> m OscillatorNode
+createOscillator self = liftDOM ((js_createOscillator ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createOscillator MDN BaseAudioContext.createOscillator documentation>
+createOscillator_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createOscillator_ self = liftDOM (void ((js_createOscillator ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createPanner\"](); })"
+        js_createPanner :: BaseAudioContext -> IO PannerNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPanner MDN BaseAudioContext.createPanner documentation>
+createPanner :: (MonadDOM m, IsBaseAudioContext self) => self -> m PannerNode
+createPanner self = liftDOM ((js_createPanner ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPanner MDN BaseAudioContext.createPanner documentation>
+createPanner_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createPanner_ self = liftDOM (void ((js_createPanner ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createPeriodicWave\"]($2, $3, $4); })"
+        js_createPeriodicWave :: BaseAudioContext -> JSVal -> JSVal -> JSVal -> IO PeriodicWave
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPeriodicWave MDN BaseAudioContext.createPeriodicWave documentation>
+createPeriodicWave :: (MonadDOM m, IsBaseAudioContext self, IsPeriodicWaveConstraints constraints) => self -> [Float] -> [Float] -> Maybe constraints -> m PeriodicWave
+createPeriodicWave self real imag constraints = liftDOM (((toJSVal real) >>= \a2' -> (toJSVal imag) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal constraints) >>= \a4' -> js_createPeriodicWave ((Types.toBaseAudioContext self)) a2' a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPeriodicWave MDN BaseAudioContext.createPeriodicWave documentation>
+createPeriodicWave_ :: (MonadDOM m, IsBaseAudioContext self, IsPeriodicWaveConstraints constraints) => self -> [Float] -> [Float] -> Maybe constraints -> m ()
+createPeriodicWave_ self real imag constraints = liftDOM (void (((toJSVal real) >>= \a2' -> (toJSVal imag) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal constraints) >>= \a4' -> js_createPeriodicWave ((Types.toBaseAudioContext self)) a2' a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createScriptProcessor\"]($2, $3, $4); })"
+        js_createScriptProcessor :: BaseAudioContext -> JSVal -> JSVal -> JSVal -> IO ScriptProcessorNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createScriptProcessor MDN BaseAudioContext.createScriptProcessor documentation>
+createScriptProcessor :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Word -> Maybe Word -> Maybe Word -> m ScriptProcessorNode
+createScriptProcessor self bufferSize numberOfInputChannels numberOfOutputChannels = liftDOM (((P.maybe (P.return jsUndefined) toJSVal bufferSize) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal numberOfInputChannels) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal numberOfOutputChannels) >>= \a4' -> js_createScriptProcessor ((Types.toBaseAudioContext self)) a2' a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createScriptProcessor MDN BaseAudioContext.createScriptProcessor documentation>
+createScriptProcessor_ :: (MonadDOM m, IsBaseAudioContext self) => self -> Maybe Word -> Maybe Word -> Maybe Word -> m ()
+createScriptProcessor_ self bufferSize numberOfInputChannels numberOfOutputChannels = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bufferSize) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal numberOfInputChannels) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal numberOfOutputChannels) >>= \a4' -> js_createScriptProcessor ((Types.toBaseAudioContext self)) a2' a3' a4')))
+
+foreign import javascript safe "(($1) => { return $1[\"createStereoPanner\"](); })"
+        js_createStereoPanner :: BaseAudioContext -> IO StereoPannerNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createStereoPanner MDN BaseAudioContext.createStereoPanner documentation>
+createStereoPanner :: (MonadDOM m, IsBaseAudioContext self) => self -> m StereoPannerNode
+createStereoPanner self = liftDOM ((js_createStereoPanner ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createStereoPanner MDN BaseAudioContext.createStereoPanner documentation>
+createStereoPanner_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createStereoPanner_ self = liftDOM (void ((js_createStereoPanner ((Types.toBaseAudioContext self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createWaveShaper\"](); })"
+        js_createWaveShaper :: BaseAudioContext -> IO WaveShaperNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createWaveShaper MDN BaseAudioContext.createWaveShaper documentation>
+createWaveShaper :: (MonadDOM m, IsBaseAudioContext self) => self -> m WaveShaperNode
+createWaveShaper self = liftDOM ((js_createWaveShaper ((Types.toBaseAudioContext self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createWaveShaper MDN BaseAudioContext.createWaveShaper documentation>
+createWaveShaper_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createWaveShaper_ self = liftDOM (void ((js_createWaveShaper ((Types.toBaseAudioContext self)))))
+
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"decodeAudioData\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_decodeAudioData :: BaseAudioContext -> ArrayBuffer -> JSVal -> JSVal -> IO (JSVal, AudioBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/decodeAudioData MDN BaseAudioContext.decodeAudioData documentation>
+decodeAudioData :: (MonadDOM m, IsBaseAudioContext self, IsArrayBuffer audioData) => self -> audioData -> Maybe DecodeSuccessCallback -> Maybe DecodeErrorCallback -> m AudioBuffer
+decodeAudioData self audioData successCallback errorCallback = liftDOM ((((toJSVal successCallback) >>= \a3' -> (toJSVal errorCallback) >>= \a4' -> js_decodeAudioData ((Types.toBaseAudioContext self)) (Types.toArrayBuffer audioData) a3' a4') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/decodeAudioData MDN BaseAudioContext.decodeAudioData documentation>
+decodeAudioData_ :: (MonadDOM m, IsBaseAudioContext self, IsArrayBuffer audioData) => self -> audioData -> Maybe DecodeSuccessCallback -> Maybe DecodeErrorCallback -> m ()
+decodeAudioData_ self audioData successCallback errorCallback = liftDOM (void ((((toJSVal successCallback) >>= \a3' -> (toJSVal errorCallback) >>= \a4' -> js_decodeAudioData ((Types.toBaseAudioContext self)) (Types.toArrayBuffer audioData) a3' a4') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"destination\"]; })"
+        js_getDestination :: BaseAudioContext -> IO AudioDestinationNode
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/destination MDN BaseAudioContext.destination documentation>
+getDestination :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioDestinationNode
+getDestination self = liftDOM ((js_getDestination ((Types.toBaseAudioContext self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: BaseAudioContext -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/sampleRate MDN BaseAudioContext.sampleRate documentation>
+getSampleRate :: (MonadDOM m, IsBaseAudioContext self) => self -> m Float
+getSampleRate self = liftDOM ((js_getSampleRate ((Types.toBaseAudioContext self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: BaseAudioContext -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/currentTime MDN BaseAudioContext.currentTime documentation>
+getCurrentTime :: (MonadDOM m, IsBaseAudioContext self) => self -> m Double
+getCurrentTime self = liftDOM ((js_getCurrentTime ((Types.toBaseAudioContext self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"listener\"]; })"
+        js_getListener :: BaseAudioContext -> IO AudioListener
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/listener MDN BaseAudioContext.listener documentation>
+getListener :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioListener
+getListener self = liftDOM ((js_getListener ((Types.toBaseAudioContext self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: BaseAudioContext -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/state MDN BaseAudioContext.state documentation>
+getState :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioContextState
+getState self = liftDOM (((js_getState ((Types.toBaseAudioContext self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioWorklet\"]; })"
+        js_getAudioWorklet :: BaseAudioContext -> IO AudioWorklet
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/audioWorklet MDN BaseAudioContext.audioWorklet documentation>
+getAudioWorklet :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioWorklet
+getAudioWorklet self = liftDOM ((js_getAudioWorklet ((Types.toBaseAudioContext self))))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-onstatechange statechange event>
+statechange :: (IsBaseAudioContext self, IsEventTarget self) => EventName self Event
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs
+++ /dev/null
@@ -1,47 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.BasicCredential
-       (js_getId, getId, js_getType, getType, BasicCredential(..),
-        gTypeBasicCredential, IsBasicCredential, toBasicCredential)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        BasicCredential -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential.id Mozilla BasicCredential.id documentation> 
-getId ::
-      (MonadIO m, IsBasicCredential self, FromJSString result) =>
-        self -> m result
-getId self
-  = liftIO (fromJSString <$> (js_getId (toBasicCredential self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        BasicCredential -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential.type Mozilla BasicCredential.type documentation> 
-getType ::
-        (MonadIO m, IsBasicCredential self, FromJSString result) =>
-          self -> m result
-getType self
-  = liftIO (fromJSString <$> (js_getType (toBasicCredential self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs
+++ /dev/null
@@ -1,48 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
-       (js_newBeforeLoadEvent, newBeforeLoadEvent, js_getUrl, getUrl,
-        BeforeLoadEvent(..), gTypeBeforeLoadEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"BeforeLoadEvent\"]($1,\n$2); })" js_newBeforeLoadEvent ::
-        JSString -> Optional BeforeLoadEventInit -> IO BeforeLoadEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation> 
-newBeforeLoadEvent ::
-                   (MonadIO m, ToJSString type') =>
-                     type' -> Maybe BeforeLoadEventInit -> m BeforeLoadEvent
-newBeforeLoadEvent type' eventInitDict
-  = liftIO
-      (js_newBeforeLoadEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
-        BeforeLoadEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent.url Mozilla BeforeLoadEvent.url documentation> 
-getUrl ::
-       (MonadIO m, FromJSString result) => BeforeLoadEvent -> m result
-getUrl self = liftIO (fromJSString <$> (js_getUrl self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
@@ -1,45 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
-       (js_setReturnValue, setReturnValue, js_getReturnValue,
-        getReturnValue, BeforeUnloadEvent(..), gTypeBeforeUnloadEvent)
+       (js_setReturnValue, js_getReturnValue, setReturnValue, getReturnValue, BeforeUnloadEvent(..), gTypeBeforeUnloadEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"returnValue\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"returnValue\"] = $2; })"
         js_setReturnValue :: BeforeUnloadEvent -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/BeforeUnloadEvent/returnValue MDN BeforeUnloadEvent.returnValue documentation>
+setReturnValue :: (MonadDOM m, ToJSString val) => BeforeUnloadEvent -> val -> m ()
+setReturnValue self val = liftDOM (void ((js_setReturnValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
-setReturnValue ::
-               (MonadIO m, ToJSString val) => BeforeUnloadEvent -> val -> m ()
-setReturnValue self val
-  = liftIO (js_setReturnValue self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"returnValue\"]; })"
         js_getReturnValue :: BeforeUnloadEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
-getReturnValue ::
-               (MonadIO m, FromJSString result) => BeforeUnloadEvent -> m result
-getReturnValue self
-  = liftIO (fromJSString <$> (js_getReturnValue self))
+-- | <https://developer.mozilla.org/docs/Web/API/BeforeUnloadEvent/returnValue MDN BeforeUnloadEvent.returnValue documentation>
+getReturnValue :: (MonadDOM m, FromJSString result) => BeforeUnloadEvent -> m result
+getReturnValue self = liftDOM ((fromJSString <$> (js_getReturnValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
@@ -1,93 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
-       (js_getFrequencyResponse, getFrequencyResponse, js_setType,
-        setType, js_getType, getType, js_getFrequency, getFrequency,
-        js_getDetune, getDetune, js_getQ, getQ, js_getGain, getGain,
-        BiquadFilterNode(..), gTypeBiquadFilterNode)
+       (js_newBiquadFilterNode, js_getFrequencyResponse, js_setType, js_getType, js_getFrequency, js_getDetune, js_getQ, js_getGain, newBiquadFilterNode, getFrequencyResponse, setType, getType, getFrequency, getDetune, getQ, getGain, BiquadFilterNode(..), gTypeBiquadFilterNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"getFrequencyResponse\"]($2,\n$3, $4); })" js_getFrequencyResponse
-        ::
-        BiquadFilterNode ->
-          Optional Float32Array ->
-            Optional Float32Array -> Optional Float32Array -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.getFrequencyResponse Mozilla BiquadFilterNode.getFrequencyResponse documentation> 
-getFrequencyResponse ::
-                     (MonadIO m, IsFloat32Array frequencyHz, IsFloat32Array magResponse,
-                      IsFloat32Array phaseResponse) =>
-                       BiquadFilterNode ->
-                         Maybe frequencyHz ->
-                           Maybe magResponse -> Maybe phaseResponse -> m ()
-getFrequencyResponse self frequencyHz magResponse phaseResponse
-  = liftIO
-      (js_getFrequencyResponse self
-         (maybeToOptional (fmap toFloat32Array frequencyHz))
-         (maybeToOptional (fmap toFloat32Array magResponse))
-         (maybeToOptional (fmap toFloat32Array phaseResponse)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        BiquadFilterNode -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"BiquadFilterNode\"]($1, $2); })"
+        js_newBiquadFilterNode :: BaseAudioContext -> JSVal -> IO BiquadFilterNode
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/BiquadFilterNode MDN BiquadFilterNode. documentation>
+newBiquadFilterNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe BiquadFilterOptions -> m BiquadFilterNode
+newBiquadFilterNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newBiquadFilterNode (Types.toBaseAudioContext context) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
-setType ::
-        (MonadIO m) => BiquadFilterNode -> BiquadFilterType -> m ()
-setType self val = liftIO (js_setType self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        BiquadFilterNode -> IO JSVal
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getFrequencyResponse\"]($2, $3, $4); })"
+        js_getFrequencyResponse :: BiquadFilterNode -> Float32Array -> Float32Array -> Float32Array -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/getFrequencyResponse MDN BiquadFilterNode.getFrequencyResponse documentation>
+getFrequencyResponse :: (MonadDOM m, IsFloat32Array frequencyHz, IsFloat32Array magResponse, IsFloat32Array phaseResponse) => BiquadFilterNode -> frequencyHz -> magResponse -> phaseResponse -> m ()
+getFrequencyResponse self frequencyHz magResponse phaseResponse = liftDOM (void ((js_getFrequencyResponse (self) (Types.toFloat32Array frequencyHz) (Types.toFloat32Array magResponse) (Types.toFloat32Array phaseResponse))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
-getType :: (MonadIO m) => BiquadFilterNode -> m BiquadFilterType
-getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
- 
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: BiquadFilterNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/type MDN BiquadFilterNode.type documentation>
+setType :: (MonadDOM m) => BiquadFilterNode -> BiquadFilterType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: BiquadFilterNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/type MDN BiquadFilterNode.type documentation>
+getType :: (MonadDOM m) => BiquadFilterNode -> m BiquadFilterType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
 foreign import javascript unsafe "(($1) => { return $1[\"frequency\"]; })"
         js_getFrequency :: BiquadFilterNode -> IO AudioParam
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
-getFrequency :: (MonadIO m) => BiquadFilterNode -> m AudioParam
-getFrequency self = liftIO (js_getFrequency self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })" js_getDetune ::
-        BiquadFilterNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/frequency MDN BiquadFilterNode.frequency documentation>
+getFrequency :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
+getFrequency self = liftDOM ((js_getFrequency (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
-getDetune :: (MonadIO m) => BiquadFilterNode -> m AudioParam
-getDetune self = liftIO (js_getDetune self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"Q\"]; })" js_getQ ::
-        BiquadFilterNode -> IO AudioParam
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })"
+        js_getDetune :: BiquadFilterNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/detune MDN BiquadFilterNode.detune documentation>
+getDetune :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
+getDetune self = liftDOM ((js_getDetune (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
-getQ :: (MonadIO m) => BiquadFilterNode -> m AudioParam
-getQ self = liftIO (js_getQ self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
-        BiquadFilterNode -> IO AudioParam
+foreign import javascript unsafe "(($1) => { return $1[\"Q\"]; })"
+        js_getQ :: BiquadFilterNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/Q MDN BiquadFilterNode.Q documentation>
+getQ :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
+getQ self = liftDOM ((js_getQ (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
-getGain :: (MonadIO m) => BiquadFilterNode -> m AudioParam
-getGain self = liftIO (js_getGain self)
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })"
+        js_getGain :: BiquadFilterNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/gain MDN BiquadFilterNode.gain documentation>
+getGain :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
+getGain self = liftDOM ((js_getGain (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterOptions.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BiquadFilterOptions
+       (js_newBiquadFilterOptions, js_setType, js_getType, js_setQ, js_getQ, js_setDetune, js_getDetune, js_setFrequency, js_getFrequency, js_setGain, js_getGain, newBiquadFilterOptions, setType, getType, getTypeUnsafe, getTypeUnchecked, setQ, getQ, getQUnsafe, getQUnchecked, setDetune, getDetune, getDetuneUnsafe, getDetuneUnchecked, setFrequency, getFrequency, getFrequencyUnsafe, getFrequencyUnchecked, setGain, getGain, getGainUnsafe, getGainUnchecked, BiquadFilterOptions(..), gTypeBiquadFilterOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newBiquadFilterOptions :: IO BiquadFilterOptions
+-- | <https://webaudio.github.io/web-audio-api/#BiquadFilterOptions BiquadFilterOptions specification>
+newBiquadFilterOptions :: (MonadDOM m) => m BiquadFilterOptions
+newBiquadFilterOptions = liftDOM ((js_newBiquadFilterOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: BiquadFilterOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-type BiquadFilterOptions.type specification>
+setType :: (MonadDOM m) => BiquadFilterOptions -> BiquadFilterType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: BiquadFilterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-type BiquadFilterOptions.type specification>
+getType :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe BiquadFilterType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-type BiquadFilterOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m BiquadFilterType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-type BiquadFilterOptions.type specification>
+getTypeUnchecked :: (MonadDOM m) => BiquadFilterOptions -> m BiquadFilterType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"Q\"] = $2; })"
+        js_setQ :: BiquadFilterOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-q BiquadFilterOptions.Q specification>
+setQ :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setQ self val = liftDOM (void ((js_setQ (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"Q\"]; })"
+        js_getQ :: BiquadFilterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-q BiquadFilterOptions.Q specification>
+getQ :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getQ self = liftDOM (((js_getQ (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-q BiquadFilterOptions.Q specification>
+getQUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getQUnsafe self = liftDOM ((((js_getQ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-q BiquadFilterOptions.Q specification>
+getQUnchecked :: (MonadDOM m) => BiquadFilterOptions -> m Float
+getQUnchecked self = liftDOM ((pFromJSVal <$> (js_getQ (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"detune\"] = $2; })"
+        js_setDetune :: BiquadFilterOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-detune BiquadFilterOptions.detune specification>
+setDetune :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setDetune self val = liftDOM (void ((js_setDetune (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })"
+        js_getDetune :: BiquadFilterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-detune BiquadFilterOptions.detune specification>
+getDetune :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getDetune self = liftDOM (((js_getDetune (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-detune BiquadFilterOptions.detune specification>
+getDetuneUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getDetuneUnsafe self = liftDOM ((((js_getDetune (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-detune BiquadFilterOptions.detune specification>
+getDetuneUnchecked :: (MonadDOM m) => BiquadFilterOptions -> m Float
+getDetuneUnchecked self = liftDOM ((pFromJSVal <$> (js_getDetune (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frequency\"] = $2; })"
+        js_setFrequency :: BiquadFilterOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-frequency BiquadFilterOptions.frequency specification>
+setFrequency :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setFrequency self val = liftDOM (void ((js_setFrequency (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frequency\"]; })"
+        js_getFrequency :: BiquadFilterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-frequency BiquadFilterOptions.frequency specification>
+getFrequency :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getFrequency self = liftDOM (((js_getFrequency (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-frequency BiquadFilterOptions.frequency specification>
+getFrequencyUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getFrequencyUnsafe self = liftDOM ((((js_getFrequency (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-frequency BiquadFilterOptions.frequency specification>
+getFrequencyUnchecked :: (MonadDOM m) => BiquadFilterOptions -> m Float
+getFrequencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrequency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gain\"] = $2; })"
+        js_setGain :: BiquadFilterOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-gain BiquadFilterOptions.gain specification>
+setGain :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setGain self val = liftDOM (void ((js_setGain (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })"
+        js_getGain :: BiquadFilterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-gain BiquadFilterOptions.gain specification>
+getGain :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getGain self = liftDOM (((js_getGain (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-gain BiquadFilterOptions.gain specification>
+getGainUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getGainUnsafe self = liftDOM ((((js_getGain (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-gain BiquadFilterOptions.gain specification>
+getGainUnchecked :: (MonadDOM m) => BiquadFilterOptions -> m Float
+getGainUnchecked self = liftDOM ((pFromJSVal <$> (js_getGain (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Blob.hs b/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
@@ -1,80 +1,85 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Blob
-       (js_newBlob, newBlob, js_slice, slice, slice_, js_getSize, getSize,
-        js_getType, getType, Blob(..), gTypeBlob, IsBlob, toBlob)
+       (js_newBlob, js_arrayBuffer, js_bytes, js_slice, js_stream, js_text, js_getSize, js_getType, newBlob, arrayBuffer, arrayBuffer_, bytes, bytes_, slice, slice_, stream, stream_, text, text_, getSize, getType, Blob(..), gTypeBlob, IsBlob, toBlob)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return new window[\"Blob\"]($1, $2); })"
-        js_newBlob :: JSVal -> Optional BlobPropertyBag -> IO Blob
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
-newBlob ::
-        (MonadIO m, IsBlobPart blobParts, IsBlobPropertyBag options) =>
-          [blobParts] -> Maybe options -> m Blob
-newBlob blobParts options
-  = liftIO
-      (toJSVal blobParts >>= \ blobParts' -> js_newBlob blobParts'
-         (maybeToOptional (fmap toBlobPropertyBag options)))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"slice\"]($2, $3, $4); })"
-        js_slice ::
-        Blob ->
-          Optional Double -> Optional Double -> Optional JSString -> IO Blob
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"Blob\"]($1, $2); })"
+        js_newBlob :: JSVal -> JSVal -> IO Blob
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/Blob MDN Blob. documentation>
+newBlob :: (MonadDOM m, IsBlobPart blobParts, IsBlobPropertyBag options) => Maybe [blobParts] -> Maybe options -> m Blob
+newBlob blobParts options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal blobParts) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newBlob a1' a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
-slice ::
-      (MonadIO m, IsBlob self, ToJSString contentType) =>
-        self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m Blob
-slice self start end contentType
-  = liftIO
-      (js_slice (toBlob self) (maybeToOptional (fmap fromIntegral start))
-         (maybeToOptional (fmap fromIntegral end))
-         (toOptionalJSString contentType))
+foreign import javascript interruptible "(($1, $c) => { return $1[\"arrayBuffer\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_arrayBuffer :: Blob -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer MDN Blob.arrayBuffer documentation>
+arrayBuffer :: (MonadDOM m, IsBlob self) => self -> m ArrayBuffer
+arrayBuffer self = liftDOM (((js_arrayBuffer ((Types.toBlob self))) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
-slice_ ::
-       (MonadIO m, IsBlob self, ToJSString contentType) =>
-         self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m ()
-slice_ self start end contentType
-  = liftIO
-      (void
-         (js_slice (toBlob self) (maybeToOptional (fmap fromIntegral start))
-            (maybeToOptional (fmap fromIntegral end))
-            (toOptionalJSString contentType)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        Blob -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer MDN Blob.arrayBuffer documentation>
+arrayBuffer_ :: (MonadDOM m, IsBlob self) => self -> m ()
+arrayBuffer_ self = liftDOM (void (((js_arrayBuffer ((Types.toBlob self))) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.size Mozilla Blob.size documentation> 
-getSize :: (MonadIO m, IsBlob self) => self -> m Word64
-getSize self = liftIO (round <$> (js_getSize (toBlob self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        Blob -> IO JSString
+foreign import javascript interruptible "(($1, $c) => { return $1[\"bytes\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_bytes :: Blob -> IO (JSVal, Uint8Array)
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/bytes MDN Blob.bytes documentation>
+bytes :: (MonadDOM m, IsBlob self) => self -> m Uint8Array
+bytes self = liftDOM (((js_bytes ((Types.toBlob self))) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.type Mozilla Blob.type documentation> 
-getType ::
-        (MonadIO m, IsBlob self, FromJSString result) => self -> m result
-getType self = liftIO (fromJSString <$> (js_getType (toBlob self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/bytes MDN Blob.bytes documentation>
+bytes_ :: (MonadDOM m, IsBlob self) => self -> m ()
+bytes_ self = liftDOM (void (((js_bytes ((Types.toBlob self))) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"slice\"]($2, $3, $4); })"
+        js_slice :: Blob -> JSVal -> JSVal -> (Optional JSString) -> IO Blob
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/slice MDN Blob.slice documentation>
+slice :: (MonadDOM m, IsBlob self, ToJSString contentType) => self -> Maybe Int53 -> Maybe Int53 -> Maybe contentType -> m Blob
+slice self start end contentType = liftDOM (((P.maybe (P.return jsUndefined) toJSVal start) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal end) >>= \a3' -> js_slice ((Types.toBlob self)) a2' a3' (toOptionalJSString contentType)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/slice MDN Blob.slice documentation>
+slice_ :: (MonadDOM m, IsBlob self, ToJSString contentType) => self -> Maybe Int53 -> Maybe Int53 -> Maybe contentType -> m ()
+slice_ self start end contentType = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal start) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal end) >>= \a3' -> js_slice ((Types.toBlob self)) a2' a3' (toOptionalJSString contentType))))
+
+foreign import javascript safe "(($1) => { return $1[\"stream\"](); })"
+        js_stream :: Blob -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/stream MDN Blob.stream documentation>
+stream :: (MonadDOM m, IsBlob self) => self -> m ReadableStream
+stream self = liftDOM ((js_stream ((Types.toBlob self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/stream MDN Blob.stream documentation>
+stream_ :: (MonadDOM m, IsBlob self) => self -> m ()
+stream_ self = liftDOM (void ((js_stream ((Types.toBlob self)))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"text\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_text :: Blob -> IO (JSVal, JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/text MDN Blob.text documentation>
+text :: (MonadDOM m, IsBlob self, FromJSString result) => self -> m result
+text self = liftDOM ((fromJSString <$> ((js_text ((Types.toBlob self))) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/text MDN Blob.text documentation>
+text_ :: (MonadDOM m, IsBlob self) => self -> m ()
+text_ self = liftDOM (void (((js_text ((Types.toBlob self))) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: Blob -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/size MDN Blob.size documentation>
+getSize :: (MonadDOM m, IsBlob self) => self -> m Word53
+getSize self = liftDOM (((js_getSize ((Types.toBlob self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Blob -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/type MDN Blob.type documentation>
+getType :: (MonadDOM m, IsBlob self, FromJSString result) => self -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType ((Types.toBlob self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
@@ -1,54 +1,29 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.BlobCallback
-       (newBlobCallback, newBlobCallbackSync, newBlobCallbackAsync,
-        BlobCallback)
+       (newBlobCallback, newBlobCallbackSync, newBlobCallbackAsync, BlobCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
-newBlobCallback ::
-                (MonadIO m) => (Maybe Blob -> IO ()) -> m BlobCallback
-newBlobCallback callback
-  = liftIO
-      (BlobCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ blob -> fromJSValUnchecked blob >>= \ blob' -> callback blob'))
+newBlobCallback :: (MonadDOM m) => (Maybe Blob -> IO ()) -> m BlobCallback
+newBlobCallback callback = liftDOM ((BlobCallback . coerce) <$> syncCallback1 ContinueAsync (\ blob -> do
+          blob' <- fromJSValUnchecked blob
+          callback blob'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
-newBlobCallbackSync ::
-                    (MonadIO m) => (Maybe Blob -> IO ()) -> m BlobCallback
-newBlobCallbackSync callback
-  = liftIO
-      (BlobCallback <$>
-         syncCallback1 ContinueAsync
-           (\ blob -> fromJSValUnchecked blob >>= \ blob' -> callback blob'))
+newBlobCallbackSync :: (MonadDOM m) => (Maybe Blob -> IO ()) -> m BlobCallback
+newBlobCallbackSync callback = liftDOM ((BlobCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ blob -> do
+          blob' <- fromJSValUnchecked blob
+          callback blob'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
-newBlobCallbackAsync ::
-                     (MonadIO m) => (Maybe Blob -> IO ()) -> m BlobCallback
-newBlobCallbackAsync callback
-  = liftIO
-      (BlobCallback <$>
-         asyncCallback1
-           (\ blob -> fromJSValUnchecked blob >>= \ blob' -> callback blob'))
+newBlobCallbackAsync :: (MonadDOM m) => (Maybe Blob -> IO ()) -> m BlobCallback
+newBlobCallbackAsync callback = liftDOM ((BlobCallback . coerce) <$> asyncCallback1 (\ blob -> do
+          blob' <- fromJSValUnchecked blob
+          callback blob'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BlobEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/BlobEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BlobEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BlobEvent
+       (js_newBlobEvent, js_getData, js_getTimecode, newBlobEvent, getData, getTimecode, BlobEvent(..), gTypeBlobEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"BlobEvent\"]($1, $2); })"
+        js_newBlobEvent :: JSString -> BlobEventInit -> IO BlobEvent
+-- | <https://developer.mozilla.org/docs/Web/API/BlobEvent/BlobEvent MDN BlobEvent. documentation>
+newBlobEvent :: (MonadDOM m, ToJSString type') => type' -> BlobEventInit -> m BlobEvent
+newBlobEvent type' eventInitDict = liftDOM ((js_newBlobEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: BlobEvent -> IO Blob
+-- | <https://developer.mozilla.org/docs/Web/API/BlobEvent/data MDN BlobEvent.data documentation>
+getData :: (MonadDOM m) => BlobEvent -> m Blob
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timecode\"]; })"
+        js_getTimecode :: BlobEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/BlobEvent/timecode MDN BlobEvent.timecode documentation>
+getTimecode :: (MonadDOM m) => BlobEvent -> m Double
+getTimecode self = liftDOM ((js_getTimecode (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BlobEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/BlobEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BlobEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BlobEventInit
+       (js_newBlobEventInit, js_setData, js_getData, js_setTimecode, js_getTimecode, newBlobEventInit, setData, getData, setTimecode, getTimecode, getTimecodeUnsafe, getTimecodeUnchecked, BlobEventInit(..), gTypeBlobEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"data\": $1}); })"
+        js_newBlobEventInit :: Blob -> IO BlobEventInit
+-- | <https://w3c.github.io/mediacapture-record/#dictdef-blobeventinit BlobEventInit specification>
+newBlobEventInit :: (MonadDOM m, IsBlob data') => data' -> m BlobEventInit
+newBlobEventInit data' = liftDOM ((js_newBlobEventInit (Types.toBlob data')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: BlobEventInit -> Blob -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-data BlobEventInit.data specification>
+setData :: (MonadDOM m, IsBlob val) => BlobEventInit -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toBlob val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: BlobEventInit -> IO Blob
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-data BlobEventInit.data specification>
+getData :: (MonadDOM m) => BlobEventInit -> m Blob
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timecode\"] = $2; })"
+        js_setTimecode :: BlobEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-timecode BlobEventInit.timecode specification>
+setTimecode :: (MonadDOM m) => BlobEventInit -> Double -> m ()
+setTimecode self val = liftDOM (void ((js_setTimecode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timecode\"]; })"
+        js_getTimecode :: BlobEventInit -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-timecode BlobEventInit.timecode specification>
+getTimecode :: (MonadDOM m) => BlobEventInit -> m (Maybe Double)
+getTimecode self = liftDOM (((js_getTimecode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-timecode BlobEventInit.timecode specification>
+getTimecodeUnsafe :: (MonadDOM m, HasCallStack) => BlobEventInit -> m Double
+getTimecodeUnsafe self = liftDOM ((((js_getTimecode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-timecode BlobEventInit.timecode specification>
+getTimecodeUnchecked :: (MonadDOM m) => BlobEventInit -> m Double
+getTimecodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimecode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BlobPropertyBag.hs b/src/GHCJS/DOM/JSFFI/Generated/BlobPropertyBag.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BlobPropertyBag.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BlobPropertyBag
+       (js_newBlobPropertyBag, js_setType, js_getType, js_setEndings, js_getEndings, newBlobPropertyBag, setType, getType, getTypeUnsafe, getTypeUnchecked, setEndings, getEndings, getEndingsUnsafe, getEndingsUnchecked, BlobPropertyBag(..), gTypeBlobPropertyBag, IsBlobPropertyBag, toBlobPropertyBag)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newBlobPropertyBag :: IO BlobPropertyBag
+-- | <https://w3c.github.io/FileAPI/#dfn-BlobPropertyBag BlobPropertyBag specification>
+newBlobPropertyBag :: (MonadDOM m) => m BlobPropertyBag
+newBlobPropertyBag = liftDOM ((js_newBlobPropertyBag))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: BlobPropertyBag -> JSString -> IO ()
+-- | <https://w3c.github.io/FileAPI/#dfn-BPtype BlobPropertyBag.type specification>
+setType :: (MonadDOM m, IsBlobPropertyBag self, ToJSString val) => self -> val -> m ()
+setType self val = liftDOM (void ((js_setType ((Types.toBlobPropertyBag self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: BlobPropertyBag -> IO JSVal
+-- | <https://w3c.github.io/FileAPI/#dfn-BPtype BlobPropertyBag.type specification>
+getType :: (MonadDOM m, IsBlobPropertyBag self, FromJSString result) => self -> m (Maybe result)
+getType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getType ((Types.toBlobPropertyBag self)))))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-BPtype BlobPropertyBag.type specification>
+getTypeUnsafe :: (MonadDOM m, IsBlobPropertyBag self, HasCallStack, FromJSString result) => self -> m result
+getTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getType ((Types.toBlobPropertyBag self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-BPtype BlobPropertyBag.type specification>
+getTypeUnchecked :: (MonadDOM m, IsBlobPropertyBag self, FromJSString result) => self -> m result
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType ((Types.toBlobPropertyBag self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endings\"] = $2; })"
+        js_setEndings :: BlobPropertyBag -> JSVal -> IO ()
+-- | <https://w3c.github.io/FileAPI/#dom-blobpropertybag-endings BlobPropertyBag.endings specification>
+setEndings :: (MonadDOM m, IsBlobPropertyBag self) => self -> EndingType -> m ()
+setEndings self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEndings ((Types.toBlobPropertyBag self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endings\"]; })"
+        js_getEndings :: BlobPropertyBag -> IO JSVal
+-- | <https://w3c.github.io/FileAPI/#dom-blobpropertybag-endings BlobPropertyBag.endings specification>
+getEndings :: (MonadDOM m, IsBlobPropertyBag self) => self -> m (Maybe EndingType)
+getEndings self = liftDOM (((js_getEndings ((Types.toBlobPropertyBag self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/FileAPI/#dom-blobpropertybag-endings BlobPropertyBag.endings specification>
+getEndingsUnsafe :: (MonadDOM m, IsBlobPropertyBag self, HasCallStack) => self -> m EndingType
+getEndingsUnsafe self = liftDOM ((((js_getEndings ((Types.toBlobPropertyBag self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/FileAPI/#dom-blobpropertybag-endings BlobPropertyBag.endings specification>
+getEndingsUnchecked :: (MonadDOM m, IsBlobPropertyBag self) => self -> m EndingType
+getEndingsUnchecked self = liftDOM ((pFromJSVal <$> (js_getEndings ((Types.toBlobPropertyBag self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Body.hs b/src/GHCJS/DOM/JSFFI/Generated/Body.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Body.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Body.hs
@@ -1,87 +1,97 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Body
-       (js_arrayBuffer, arrayBuffer, arrayBuffer_, js_blob, blob, blob_,
-        js_json, json, json_, js_text, text, text_, js_getBodyUsed,
-        getBodyUsed, Body(..), gTypeBody, IsBody, toBody)
+       (js_arrayBuffer, js_blob, js_bytes, js_formData, js_json, js_text, js_getBody, js_getBodyUsed, arrayBuffer, arrayBuffer_, blob, blob_, bytes, bytes_, formData, formData_, json, json_, text, text_, getBody, getBodyUnsafe, getBodyUnchecked, getBodyUsed, Body(..), gTypeBody, IsBody, toBody)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"arrayBuffer\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"arrayBuffer\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
         js_arrayBuffer :: Body -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer MDN Body.arrayBuffer documentation>
+arrayBuffer :: (MonadDOM m, IsBody self) => self -> m ArrayBuffer
+arrayBuffer self = liftDOM (((js_arrayBuffer ((Types.toBody self))) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.arrayBuffer Mozilla Body.arrayBuffer documentation> 
-arrayBuffer :: (MonadIO m, IsBody self) => self -> m ArrayBuffer
-arrayBuffer self
-  = liftIO ((js_arrayBuffer (toBody self)) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer MDN Body.arrayBuffer documentation>
+arrayBuffer_ :: (MonadDOM m, IsBody self) => self -> m ()
+arrayBuffer_ self = liftDOM (void (((js_arrayBuffer ((Types.toBody self))) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.arrayBuffer Mozilla Body.arrayBuffer documentation> 
-arrayBuffer_ :: (MonadIO m, IsBody self) => self -> m ()
-arrayBuffer_ self = liftIO (void (js_arrayBuffer (toBody self)))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"blob\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+foreign import javascript interruptible "(($1, $c) => { return $1[\"blob\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
         js_blob :: Body -> IO (JSVal, Blob)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/blob MDN Body.blob documentation>
+blob :: (MonadDOM m, IsBody self) => self -> m Blob
+blob self = liftDOM (((js_blob ((Types.toBody self))) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.blob Mozilla Body.blob documentation> 
-blob :: (MonadIO m, IsBody self) => self -> m Blob
-blob self = liftIO ((js_blob (toBody self)) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/blob MDN Body.blob documentation>
+blob_ :: (MonadDOM m, IsBody self) => self -> m ()
+blob_ self = liftDOM (void (((js_blob ((Types.toBody self))) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.blob Mozilla Body.blob documentation> 
-blob_ :: (MonadIO m, IsBody self) => self -> m ()
-blob_ self = liftIO (void (js_blob (toBody self)))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"json\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+foreign import javascript interruptible "(($1, $c) => { return $1[\"bytes\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_bytes :: Body -> IO (JSVal, Uint8Array)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/bytes MDN Body.bytes documentation>
+bytes :: (MonadDOM m, IsBody self) => self -> m Uint8Array
+bytes self = liftDOM (((js_bytes ((Types.toBody self))) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/bytes MDN Body.bytes documentation>
+bytes_ :: (MonadDOM m, IsBody self) => self -> m ()
+bytes_ self = liftDOM (void (((js_bytes ((Types.toBody self))) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"formData\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_formData :: Body -> IO (JSVal, FormData)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/formData MDN Body.formData documentation>
+formData :: (MonadDOM m, IsBody self) => self -> m FormData
+formData self = liftDOM (((js_formData ((Types.toBody self))) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/formData MDN Body.formData documentation>
+formData_ :: (MonadDOM m, IsBody self) => self -> m ()
+formData_ self = liftDOM (void (((js_formData ((Types.toBody self))) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"json\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
         js_json :: Body -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/json MDN Body.json documentation>
+json :: (MonadDOM m, IsBody self) => self -> m JSVal
+json self = liftDOM (((js_json ((Types.toBody self))) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.json Mozilla Body.json documentation> 
-json :: (MonadIO m, IsBody self) => self -> m JSVal
-json self = liftIO ((js_json (toBody self)) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/json MDN Body.json documentation>
+json_ :: (MonadDOM m, IsBody self) => self -> m ()
+json_ self = liftDOM (void (((js_json ((Types.toBody self))) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.json Mozilla Body.json documentation> 
-json_ :: (MonadIO m, IsBody self) => self -> m ()
-json_ self = liftIO (void (js_json (toBody self)))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"text\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+foreign import javascript interruptible "(($1, $c) => { return $1[\"text\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
         js_text :: Body -> IO (JSVal, JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/text MDN Body.text documentation>
+text :: (MonadDOM m, IsBody self, FromJSString result) => self -> m result
+text self = liftDOM ((fromJSString <$> ((js_text ((Types.toBody self))) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.text Mozilla Body.text documentation> 
-text ::
-     (MonadIO m, IsBody self, FromJSString result) => self -> m result
-text self
-  = liftIO
-      (fromJSString <$> ((js_text (toBody self)) >>= checkPromiseResult))
+-- | <https://developer.mozilla.org/docs/Web/API/Request/text MDN Body.text documentation>
+text_ :: (MonadDOM m, IsBody self) => self -> m ()
+text_ self = liftDOM (void (((js_text ((Types.toBody self))) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.text Mozilla Body.text documentation> 
-text_ :: (MonadIO m, IsBody self) => self -> m ()
-text_ self = liftIO (void (js_text (toBody self)))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"bodyUsed\"] ? 1 : 0); })"
-        js_getBodyUsed :: Body -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })"
+        js_getBody :: Body -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/body MDN Body.body documentation>
+getBody :: (MonadDOM m, IsBody self) => self -> m (Maybe ReadableStream)
+getBody self = liftDOM (((js_getBody ((Types.toBody self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.bodyUsed Mozilla Body.bodyUsed documentation> 
-getBodyUsed :: (MonadIO m, IsBody self) => self -> m Bool
-getBodyUsed self = liftIO (js_getBodyUsed (toBody self))
+-- | <https://developer.mozilla.org/docs/Web/API/Request/body MDN Body.body documentation>
+getBodyUnsafe :: (MonadDOM m, IsBody self, HasCallStack) => self -> m ReadableStream
+getBodyUnsafe self = liftDOM ((((js_getBody ((Types.toBody self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/body MDN Body.body documentation>
+getBodyUnchecked :: (MonadDOM m, IsBody self) => self -> m ReadableStream
+getBodyUnchecked self = liftDOM ((pFromJSVal <$> (js_getBody ((Types.toBody self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bodyUsed\"]; })"
+        js_getBodyUsed :: Body -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Request/bodyUsed MDN Body.bodyUsed documentation>
+getBodyUsed :: (MonadDOM m, IsBody self) => self -> m Bool
+getBodyUsed self = liftDOM ((js_getBodyUsed ((Types.toBody self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BroadcastChannel.hs b/src/GHCJS/DOM/JSFFI/Generated/BroadcastChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BroadcastChannel.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BroadcastChannel
+       (js_newBroadcastChannel, js_close, js_postMessage, js_getName, newBroadcastChannel, close, postMessage, getName, message, messageerror, BroadcastChannel(..), gTypeBroadcastChannel)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"BroadcastChannel\"]($1); })"
+        js_newBroadcastChannel :: JSString -> IO BroadcastChannel
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/BroadcastChannel MDN BroadcastChannel. documentation>
+newBroadcastChannel :: (MonadDOM m, ToJSString name) => name -> m BroadcastChannel
+newBroadcastChannel name = liftDOM ((js_newBroadcastChannel (toJSString name)))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: BroadcastChannel -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/close MDN BroadcastChannel.close documentation>
+close :: (MonadDOM m) => BroadcastChannel -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"postMessage\"]($2); })"
+        js_postMessage :: BroadcastChannel -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/postMessage MDN BroadcastChannel.postMessage documentation>
+postMessage :: (MonadDOM m) => BroadcastChannel -> JSVal -> m ()
+postMessage self message = liftDOM (void ((js_postMessage (self) (message))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: BroadcastChannel -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/name MDN BroadcastChannel.name documentation>
+getName :: (MonadDOM m, FromJSString result) => BroadcastChannel -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#handler-broadcastchannel-onmessage message event>
+message :: EventName BroadcastChannel MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#handler-broadcastchannel-onmessageerror messageerror event>
+messageerror :: EventName BroadcastChannel MessageEvent
+messageerror = unsafeEventName (toJSString "messageerror")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BrowserBoundSignature.hs b/src/GHCJS/DOM/JSFFI/Generated/BrowserBoundSignature.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BrowserBoundSignature.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.BrowserBoundSignature
+       (js_newBrowserBoundSignature, js_setSignature, js_getSignature, newBrowserBoundSignature, setSignature, getSignature, BrowserBoundSignature(..), gTypeBrowserBoundSignature)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"signature\": $1}); })"
+        js_newBrowserBoundSignature :: ArrayBuffer -> IO BrowserBoundSignature
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-browserboundsignature BrowserBoundSignature specification>
+newBrowserBoundSignature :: (MonadDOM m, IsArrayBuffer signature) => signature -> m BrowserBoundSignature
+newBrowserBoundSignature signature = liftDOM ((js_newBrowserBoundSignature (Types.toArrayBuffer signature)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signature\"] = $2; })"
+        js_setSignature :: BrowserBoundSignature -> ArrayBuffer -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-browserboundsignature-signature BrowserBoundSignature.signature specification>
+setSignature :: (MonadDOM m, IsArrayBuffer val) => BrowserBoundSignature -> val -> m ()
+setSignature self val = liftDOM (void ((js_setSignature (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signature\"]; })"
+        js_getSignature :: BrowserBoundSignature -> IO ArrayBuffer
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-browserboundsignature-signature BrowserBoundSignature.signature specification>
+getSignature :: (MonadDOM m) => BrowserBoundSignature -> m ArrayBuffer
+getSignature self = liftDOM ((js_getSignature (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs b/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
@@ -1,49 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy
-       (js_newByteLengthQueuingStrategy, newByteLengthQueuingStrategy,
-        js_size, size, size_, ByteLengthQueuingStrategy(..),
-        gTypeByteLengthQueuingStrategy)
+       (js_newByteLengthQueuingStrategy, js_getHighWaterMark, js_getSize, newByteLengthQueuingStrategy, getHighWaterMark, getSize, ByteLengthQueuingStrategy(..), gTypeByteLengthQueuingStrategy)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"ByteLengthQueuingStrategy\"](); })"
-        js_newByteLengthQueuingStrategy :: IO ByteLengthQueuingStrategy
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy Mozilla ByteLengthQueuingStrategy documentation> 
-newByteLengthQueuingStrategy ::
-                             (MonadIO m) => m ByteLengthQueuingStrategy
-newByteLengthQueuingStrategy
-  = liftIO (js_newByteLengthQueuingStrategy)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"](); })" js_size ::
-        ByteLengthQueuingStrategy -> IO Double
+foreign import javascript safe "(($1) => { return new globalThis[\"ByteLengthQueuingStrategy\"]($1); })"
+        js_newByteLengthQueuingStrategy :: QueuingStrategyInit -> IO ByteLengthQueuingStrategy
+-- | <https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/ByteLengthQueuingStrategy MDN ByteLengthQueuingStrategy. documentation>
+newByteLengthQueuingStrategy :: (MonadDOM m) => QueuingStrategyInit -> m ByteLengthQueuingStrategy
+newByteLengthQueuingStrategy init = liftDOM ((js_newByteLengthQueuingStrategy (init)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy.size Mozilla ByteLengthQueuingStrategy.size documentation> 
-size :: (MonadIO m) => ByteLengthQueuingStrategy -> m Double
-size self = liftIO (js_size self)
+foreign import javascript unsafe "(($1) => { return $1[\"highWaterMark\"]; })"
+        js_getHighWaterMark :: ByteLengthQueuingStrategy -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/highWaterMark MDN ByteLengthQueuingStrategy.highWaterMark documentation>
+getHighWaterMark :: (MonadDOM m) => ByteLengthQueuingStrategy -> m Double
+getHighWaterMark self = liftDOM ((js_getHighWaterMark (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy.size Mozilla ByteLengthQueuingStrategy.size documentation> 
-size_ :: (MonadIO m) => ByteLengthQueuingStrategy -> m ()
-size_ self = liftIO (void (js_size self))
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: ByteLengthQueuingStrategy -> IO Function
+-- | <https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/size MDN ByteLengthQueuingStrategy.size documentation>
+getSize :: (MonadDOM m) => ByteLengthQueuingStrategy -> m Function
+getSize self = liftDOM ((js_getSize (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CDATASection.hs b/src/GHCJS/DOM/JSFFI/Generated/CDATASection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CDATASection.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CDATASection
+       (CDATASection(..), gTypeCDATASection)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSS.hs b/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
@@ -1,76 +1,689 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSS
-       (js_supports2, supports2, supports2_, js_supports, supports,
-        supports_, js_escape, escape, escape_, CSS(..), gTypeCSS)
+       (js_hz, js_q, js_cap, js_ch, js_cm, js_cqb, js_cqh, js_cqi, js_cqmax, js_cqmin, js_cqw, js_deg, js_dpcm, js_dpi, js_dppx, js_dvb, js_dvh, js_dvi, js_dvmax, js_dvmin, js_dvw, js_em, js_escape, js_ex, js_fr, js_grad, js_ic, js_in', js_kHz, js_lh, js_lvb, js_lvh, js_lvi, js_lvmax, js_lvmin, js_lvw, js_mm, js_ms, js_number, js_pc, js_percent, js_pt, js_px, js_rad, js_rcap, js_rch, js_registerProperty, js_rem, js_rex, js_ric, js_rlh, js_s, js_supports2, js_supports, js_svb, js_svh, js_svi, js_svmax, js_svmin, js_svw, js_turn, js_vb, js_vh, js_vi, js_vmax, js_vmin, js_vw, js_getHighlights, hz, hz_, q, q_, cap, cap_, ch, ch_, cm, cm_, cqb, cqb_, cqh, cqh_, cqi, cqi_, cqmax, cqmax_, cqmin, cqmin_, cqw, cqw_, deg, deg_, dpcm, dpcm_, dpi, dpi_, dppx, dppx_, dvb, dvb_, dvh, dvh_, dvi, dvi_, dvmax, dvmax_, dvmin, dvmin_, dvw, dvw_, em, em_, escape, escape_, ex, ex_, fr, fr_, grad, grad_, ic, ic_, in', in'_, kHz, kHz_, lh, lh_, lvb, lvb_, lvh, lvh_, lvi, lvi_, lvmax, lvmax_, lvmin, lvmin_, lvw, lvw_, mm, mm_, ms, ms_, number, number_, pc, pc_, percent, percent_, pt, pt_, px, px_, rad, rad_, rcap, rcap_, rch, rch_, registerProperty, rem, rem_, rex, rex_, ric, ric_, rlh, rlh_, s, s_, supports2, supports2_, supports, supports_, svb, svb_, svh, svh_, svi, svi_, svmax, svmax_, svmin, svmin_, svw, svw_, turn, turn_, vb, vb_, vh, vh_, vi, vi_, vmax, vmax_, vmin, vmin_, vw, vw_, getHighlights)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return (window[\"CSS\"][\"supports\"]($1,\n$2) ? 1 : 0); })" js_supports2 ::
-        JSString -> JSString -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports2 ::
-          (MonadIO m, ToJSString property, ToJSString value) =>
-            property -> value -> m Bool
-supports2 property value
-  = liftIO (js_supports2 (toJSString property) (toJSString value))
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"Hz\"]($1); })"
+        js_hz :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Hz documentation>
+hz :: (MonadDOM m) => Double -> m CSSUnitValue
+hz value = liftDOM ((js_hz (value)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports2_ ::
-           (MonadIO m, ToJSString property, ToJSString value) =>
-             property -> value -> m ()
-supports2_ property value
-  = liftIO
-      (void (js_supports2 (toJSString property) (toJSString value)))
- 
-foreign import javascript unsafe
-        "(($1) => { return (window[\"CSS\"][\"supports\"]($1) ? 1 : 0); })" js_supports ::
-        JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Hz documentation>
+hz_ :: (MonadDOM m) => Double -> m ()
+hz_ value = liftDOM (void ((js_hz (value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports ::
-         (MonadIO m, ToJSString conditionText) => conditionText -> m Bool
-supports conditionText
-  = liftIO (js_supports (toJSString conditionText))
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"Q\"]($1); })"
+        js_q :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Q documentation>
+q :: (MonadDOM m) => Double -> m CSSUnitValue
+q value = liftDOM ((js_q (value)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports_ ::
-          (MonadIO m, ToJSString conditionText) => conditionText -> m ()
-supports_ conditionText
-  = liftIO (void (js_supports (toJSString conditionText)))
- 
-foreign import javascript unsafe "(($1) => { return window[\"CSS\"][\"escape\"]($1); })"
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Q documentation>
+q_ :: (MonadDOM m) => Double -> m ()
+q_ value = liftDOM (void ((js_q (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cap\"]($1); })"
+        js_cap :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cap documentation>
+cap :: (MonadDOM m) => Double -> m CSSUnitValue
+cap value = liftDOM ((js_cap (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cap documentation>
+cap_ :: (MonadDOM m) => Double -> m ()
+cap_ value = liftDOM (void ((js_cap (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"ch\"]($1); })"
+        js_ch :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ch documentation>
+ch :: (MonadDOM m) => Double -> m CSSUnitValue
+ch value = liftDOM ((js_ch (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ch documentation>
+ch_ :: (MonadDOM m) => Double -> m ()
+ch_ value = liftDOM (void ((js_ch (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cm\"]($1); })"
+        js_cm :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cm documentation>
+cm :: (MonadDOM m) => Double -> m CSSUnitValue
+cm value = liftDOM ((js_cm (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cm documentation>
+cm_ :: (MonadDOM m) => Double -> m ()
+cm_ value = liftDOM (void ((js_cm (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cqb\"]($1); })"
+        js_cqb :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqb documentation>
+cqb :: (MonadDOM m) => Double -> m CSSUnitValue
+cqb value = liftDOM ((js_cqb (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqb documentation>
+cqb_ :: (MonadDOM m) => Double -> m ()
+cqb_ value = liftDOM (void ((js_cqb (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cqh\"]($1); })"
+        js_cqh :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqh documentation>
+cqh :: (MonadDOM m) => Double -> m CSSUnitValue
+cqh value = liftDOM ((js_cqh (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqh documentation>
+cqh_ :: (MonadDOM m) => Double -> m ()
+cqh_ value = liftDOM (void ((js_cqh (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cqi\"]($1); })"
+        js_cqi :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqi documentation>
+cqi :: (MonadDOM m) => Double -> m CSSUnitValue
+cqi value = liftDOM ((js_cqi (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqi documentation>
+cqi_ :: (MonadDOM m) => Double -> m ()
+cqi_ value = liftDOM (void ((js_cqi (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cqmax\"]($1); })"
+        js_cqmax :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmax documentation>
+cqmax :: (MonadDOM m) => Double -> m CSSUnitValue
+cqmax value = liftDOM ((js_cqmax (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmax documentation>
+cqmax_ :: (MonadDOM m) => Double -> m ()
+cqmax_ value = liftDOM (void ((js_cqmax (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cqmin\"]($1); })"
+        js_cqmin :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmin documentation>
+cqmin :: (MonadDOM m) => Double -> m CSSUnitValue
+cqmin value = liftDOM ((js_cqmin (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmin documentation>
+cqmin_ :: (MonadDOM m) => Double -> m ()
+cqmin_ value = liftDOM (void ((js_cqmin (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"cqw\"]($1); })"
+        js_cqw :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqw documentation>
+cqw :: (MonadDOM m) => Double -> m CSSUnitValue
+cqw value = liftDOM ((js_cqw (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqw documentation>
+cqw_ :: (MonadDOM m) => Double -> m ()
+cqw_ value = liftDOM (void ((js_cqw (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"deg\"]($1); })"
+        js_deg :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.deg documentation>
+deg :: (MonadDOM m) => Double -> m CSSUnitValue
+deg value = liftDOM ((js_deg (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.deg documentation>
+deg_ :: (MonadDOM m) => Double -> m ()
+deg_ value = liftDOM (void ((js_deg (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dpcm\"]($1); })"
+        js_dpcm :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpcm documentation>
+dpcm :: (MonadDOM m) => Double -> m CSSUnitValue
+dpcm value = liftDOM ((js_dpcm (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpcm documentation>
+dpcm_ :: (MonadDOM m) => Double -> m ()
+dpcm_ value = liftDOM (void ((js_dpcm (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dpi\"]($1); })"
+        js_dpi :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpi documentation>
+dpi :: (MonadDOM m) => Double -> m CSSUnitValue
+dpi value = liftDOM ((js_dpi (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpi documentation>
+dpi_ :: (MonadDOM m) => Double -> m ()
+dpi_ value = liftDOM (void ((js_dpi (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dppx\"]($1); })"
+        js_dppx :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dppx documentation>
+dppx :: (MonadDOM m) => Double -> m CSSUnitValue
+dppx value = liftDOM ((js_dppx (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dppx documentation>
+dppx_ :: (MonadDOM m) => Double -> m ()
+dppx_ value = liftDOM (void ((js_dppx (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dvb\"]($1); })"
+        js_dvb :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvb documentation>
+dvb :: (MonadDOM m) => Double -> m CSSUnitValue
+dvb value = liftDOM ((js_dvb (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvb documentation>
+dvb_ :: (MonadDOM m) => Double -> m ()
+dvb_ value = liftDOM (void ((js_dvb (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dvh\"]($1); })"
+        js_dvh :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvh documentation>
+dvh :: (MonadDOM m) => Double -> m CSSUnitValue
+dvh value = liftDOM ((js_dvh (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvh documentation>
+dvh_ :: (MonadDOM m) => Double -> m ()
+dvh_ value = liftDOM (void ((js_dvh (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dvi\"]($1); })"
+        js_dvi :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvi documentation>
+dvi :: (MonadDOM m) => Double -> m CSSUnitValue
+dvi value = liftDOM ((js_dvi (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvi documentation>
+dvi_ :: (MonadDOM m) => Double -> m ()
+dvi_ value = liftDOM (void ((js_dvi (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dvmax\"]($1); })"
+        js_dvmax :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmax documentation>
+dvmax :: (MonadDOM m) => Double -> m CSSUnitValue
+dvmax value = liftDOM ((js_dvmax (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmax documentation>
+dvmax_ :: (MonadDOM m) => Double -> m ()
+dvmax_ value = liftDOM (void ((js_dvmax (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dvmin\"]($1); })"
+        js_dvmin :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmin documentation>
+dvmin :: (MonadDOM m) => Double -> m CSSUnitValue
+dvmin value = liftDOM ((js_dvmin (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmin documentation>
+dvmin_ :: (MonadDOM m) => Double -> m ()
+dvmin_ value = liftDOM (void ((js_dvmin (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"dvw\"]($1); })"
+        js_dvw :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvw documentation>
+dvw :: (MonadDOM m) => Double -> m CSSUnitValue
+dvw value = liftDOM ((js_dvw (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvw documentation>
+dvw_ :: (MonadDOM m) => Double -> m ()
+dvw_ value = liftDOM (void ((js_dvw (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"em\"]($1); })"
+        js_em :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.em documentation>
+em :: (MonadDOM m) => Double -> m CSSUnitValue
+em value = liftDOM ((js_em (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.em documentation>
+em_ :: (MonadDOM m) => Double -> m ()
+em_ value = liftDOM (void ((js_em (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"escape\"]($1); })"
         js_escape :: JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/escape_static MDN CSS.escape documentation>
+escape :: (MonadDOM m, ToJSString ident, FromJSString result) => ident -> m result
+escape ident = liftDOM ((fromJSString <$> (js_escape (toJSString ident))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
-escape ::
-       (MonadIO m, ToJSString ident, FromJSString result) =>
-         ident -> m result
-escape ident
-  = liftIO (fromJSString <$> (js_escape (toJSString ident)))
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/escape_static MDN CSS.escape documentation>
+escape_ :: (MonadDOM m, ToJSString ident) => ident -> m ()
+escape_ ident = liftDOM (void ((js_escape (toJSString ident))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
-escape_ :: (MonadIO m, ToJSString ident) => ident -> m ()
-escape_ ident = liftIO (void (js_escape (toJSString ident)))
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"ex\"]($1); })"
+        js_ex :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ex documentation>
+ex :: (MonadDOM m) => Double -> m CSSUnitValue
+ex value = liftDOM ((js_ex (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ex documentation>
+ex_ :: (MonadDOM m) => Double -> m ()
+ex_ value = liftDOM (void ((js_ex (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"fr\"]($1); })"
+        js_fr :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.fr documentation>
+fr :: (MonadDOM m) => Double -> m CSSUnitValue
+fr value = liftDOM ((js_fr (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.fr documentation>
+fr_ :: (MonadDOM m) => Double -> m ()
+fr_ value = liftDOM (void ((js_fr (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"grad\"]($1); })"
+        js_grad :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.grad documentation>
+grad :: (MonadDOM m) => Double -> m CSSUnitValue
+grad value = liftDOM ((js_grad (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.grad documentation>
+grad_ :: (MonadDOM m) => Double -> m ()
+grad_ value = liftDOM (void ((js_grad (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"ic\"]($1); })"
+        js_ic :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ic documentation>
+ic :: (MonadDOM m) => Double -> m CSSUnitValue
+ic value = liftDOM ((js_ic (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ic documentation>
+ic_ :: (MonadDOM m) => Double -> m ()
+ic_ value = liftDOM (void ((js_ic (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"in\"]($1); })"
+        js_in' :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.in documentation>
+in' :: (MonadDOM m) => Double -> m CSSUnitValue
+in' value = liftDOM ((js_in' (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.in documentation>
+in'_ :: (MonadDOM m) => Double -> m ()
+in'_ value = liftDOM (void ((js_in' (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"kHz\"]($1); })"
+        js_kHz :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.kHz documentation>
+kHz :: (MonadDOM m) => Double -> m CSSUnitValue
+kHz value = liftDOM ((js_kHz (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.kHz documentation>
+kHz_ :: (MonadDOM m) => Double -> m ()
+kHz_ value = liftDOM (void ((js_kHz (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"lh\"]($1); })"
+        js_lh :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lh documentation>
+lh :: (MonadDOM m) => Double -> m CSSUnitValue
+lh value = liftDOM ((js_lh (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lh documentation>
+lh_ :: (MonadDOM m) => Double -> m ()
+lh_ value = liftDOM (void ((js_lh (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"lvb\"]($1); })"
+        js_lvb :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvb documentation>
+lvb :: (MonadDOM m) => Double -> m CSSUnitValue
+lvb value = liftDOM ((js_lvb (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvb documentation>
+lvb_ :: (MonadDOM m) => Double -> m ()
+lvb_ value = liftDOM (void ((js_lvb (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"lvh\"]($1); })"
+        js_lvh :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvh documentation>
+lvh :: (MonadDOM m) => Double -> m CSSUnitValue
+lvh value = liftDOM ((js_lvh (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvh documentation>
+lvh_ :: (MonadDOM m) => Double -> m ()
+lvh_ value = liftDOM (void ((js_lvh (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"lvi\"]($1); })"
+        js_lvi :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvi documentation>
+lvi :: (MonadDOM m) => Double -> m CSSUnitValue
+lvi value = liftDOM ((js_lvi (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvi documentation>
+lvi_ :: (MonadDOM m) => Double -> m ()
+lvi_ value = liftDOM (void ((js_lvi (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"lvmax\"]($1); })"
+        js_lvmax :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmax documentation>
+lvmax :: (MonadDOM m) => Double -> m CSSUnitValue
+lvmax value = liftDOM ((js_lvmax (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmax documentation>
+lvmax_ :: (MonadDOM m) => Double -> m ()
+lvmax_ value = liftDOM (void ((js_lvmax (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"lvmin\"]($1); })"
+        js_lvmin :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmin documentation>
+lvmin :: (MonadDOM m) => Double -> m CSSUnitValue
+lvmin value = liftDOM ((js_lvmin (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmin documentation>
+lvmin_ :: (MonadDOM m) => Double -> m ()
+lvmin_ value = liftDOM (void ((js_lvmin (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"lvw\"]($1); })"
+        js_lvw :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvw documentation>
+lvw :: (MonadDOM m) => Double -> m CSSUnitValue
+lvw value = liftDOM ((js_lvw (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvw documentation>
+lvw_ :: (MonadDOM m) => Double -> m ()
+lvw_ value = liftDOM (void ((js_lvw (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"mm\"]($1); })"
+        js_mm :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.mm documentation>
+mm :: (MonadDOM m) => Double -> m CSSUnitValue
+mm value = liftDOM ((js_mm (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.mm documentation>
+mm_ :: (MonadDOM m) => Double -> m ()
+mm_ value = liftDOM (void ((js_mm (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"ms\"]($1); })"
+        js_ms :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ms documentation>
+ms :: (MonadDOM m) => Double -> m CSSUnitValue
+ms value = liftDOM ((js_ms (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ms documentation>
+ms_ :: (MonadDOM m) => Double -> m ()
+ms_ value = liftDOM (void ((js_ms (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"number\"]($1); })"
+        js_number :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.number documentation>
+number :: (MonadDOM m) => Double -> m CSSUnitValue
+number value = liftDOM ((js_number (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.number documentation>
+number_ :: (MonadDOM m) => Double -> m ()
+number_ value = liftDOM (void ((js_number (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"pc\"]($1); })"
+        js_pc :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pc documentation>
+pc :: (MonadDOM m) => Double -> m CSSUnitValue
+pc value = liftDOM ((js_pc (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pc documentation>
+pc_ :: (MonadDOM m) => Double -> m ()
+pc_ value = liftDOM (void ((js_pc (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"percent\"]($1); })"
+        js_percent :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.percent documentation>
+percent :: (MonadDOM m) => Double -> m CSSUnitValue
+percent value = liftDOM ((js_percent (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.percent documentation>
+percent_ :: (MonadDOM m) => Double -> m ()
+percent_ value = liftDOM (void ((js_percent (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"pt\"]($1); })"
+        js_pt :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pt documentation>
+pt :: (MonadDOM m) => Double -> m CSSUnitValue
+pt value = liftDOM ((js_pt (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pt documentation>
+pt_ :: (MonadDOM m) => Double -> m ()
+pt_ value = liftDOM (void ((js_pt (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"px\"]($1); })"
+        js_px :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.px documentation>
+px :: (MonadDOM m) => Double -> m CSSUnitValue
+px value = liftDOM ((js_px (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.px documentation>
+px_ :: (MonadDOM m) => Double -> m ()
+px_ value = liftDOM (void ((js_px (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"rad\"]($1); })"
+        js_rad :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rad documentation>
+rad :: (MonadDOM m) => Double -> m CSSUnitValue
+rad value = liftDOM ((js_rad (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rad documentation>
+rad_ :: (MonadDOM m) => Double -> m ()
+rad_ value = liftDOM (void ((js_rad (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"rcap\"]($1); })"
+        js_rcap :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rcap documentation>
+rcap :: (MonadDOM m) => Double -> m CSSUnitValue
+rcap value = liftDOM ((js_rcap (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rcap documentation>
+rcap_ :: (MonadDOM m) => Double -> m ()
+rcap_ value = liftDOM (void ((js_rcap (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"rch\"]($1); })"
+        js_rch :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rch documentation>
+rch :: (MonadDOM m) => Double -> m CSSUnitValue
+rch value = liftDOM ((js_rch (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rch documentation>
+rch_ :: (MonadDOM m) => Double -> m ()
+rch_ value = liftDOM (void ((js_rch (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"registerProperty\"]($1); })"
+        js_registerProperty :: PropertyDefinition -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/registerProperty_static MDN CSS.registerProperty documentation>
+registerProperty :: (MonadDOM m) => PropertyDefinition -> m ()
+registerProperty definition = liftDOM (void ((js_registerProperty (definition))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"rem\"]($1); })"
+        js_rem :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rem documentation>
+rem :: (MonadDOM m) => Double -> m CSSUnitValue
+rem value = liftDOM ((js_rem (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rem documentation>
+rem_ :: (MonadDOM m) => Double -> m ()
+rem_ value = liftDOM (void ((js_rem (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"rex\"]($1); })"
+        js_rex :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rex documentation>
+rex :: (MonadDOM m) => Double -> m CSSUnitValue
+rex value = liftDOM ((js_rex (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rex documentation>
+rex_ :: (MonadDOM m) => Double -> m ()
+rex_ value = liftDOM (void ((js_rex (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"ric\"]($1); })"
+        js_ric :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ric documentation>
+ric :: (MonadDOM m) => Double -> m CSSUnitValue
+ric value = liftDOM ((js_ric (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ric documentation>
+ric_ :: (MonadDOM m) => Double -> m ()
+ric_ value = liftDOM (void ((js_ric (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"rlh\"]($1); })"
+        js_rlh :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rlh documentation>
+rlh :: (MonadDOM m) => Double -> m CSSUnitValue
+rlh value = liftDOM ((js_rlh (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rlh documentation>
+rlh_ :: (MonadDOM m) => Double -> m ()
+rlh_ value = liftDOM (void ((js_rlh (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"s\"]($1); })"
+        js_s :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.s documentation>
+s :: (MonadDOM m) => Double -> m CSSUnitValue
+s value = liftDOM ((js_s (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.s documentation>
+s_ :: (MonadDOM m) => Double -> m ()
+s_ value = liftDOM (void ((js_s (value))))
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"CSS\"][\"supports\"]($1, $2); })"
+        js_supports2 :: JSString -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/supports_static MDN CSS.supports documentation>
+supports2 :: (MonadDOM m, ToJSString property, ToJSString value) => property -> value -> m Bool
+supports2 property value = liftDOM ((js_supports2 (toJSString property) (toJSString value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/supports_static MDN CSS.supports documentation>
+supports2_ :: (MonadDOM m, ToJSString property, ToJSString value) => property -> value -> m ()
+supports2_ property value = liftDOM (void ((js_supports2 (toJSString property) (toJSString value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"supports\"]($1); })"
+        js_supports :: JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/supports_static MDN CSS.supports documentation>
+supports :: (MonadDOM m, ToJSString conditionText) => conditionText -> m Bool
+supports conditionText = liftDOM ((js_supports (toJSString conditionText)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/supports_static MDN CSS.supports documentation>
+supports_ :: (MonadDOM m, ToJSString conditionText) => conditionText -> m ()
+supports_ conditionText = liftDOM (void ((js_supports (toJSString conditionText))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"svb\"]($1); })"
+        js_svb :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svb documentation>
+svb :: (MonadDOM m) => Double -> m CSSUnitValue
+svb value = liftDOM ((js_svb (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svb documentation>
+svb_ :: (MonadDOM m) => Double -> m ()
+svb_ value = liftDOM (void ((js_svb (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"svh\"]($1); })"
+        js_svh :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svh documentation>
+svh :: (MonadDOM m) => Double -> m CSSUnitValue
+svh value = liftDOM ((js_svh (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svh documentation>
+svh_ :: (MonadDOM m) => Double -> m ()
+svh_ value = liftDOM (void ((js_svh (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"svi\"]($1); })"
+        js_svi :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svi documentation>
+svi :: (MonadDOM m) => Double -> m CSSUnitValue
+svi value = liftDOM ((js_svi (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svi documentation>
+svi_ :: (MonadDOM m) => Double -> m ()
+svi_ value = liftDOM (void ((js_svi (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"svmax\"]($1); })"
+        js_svmax :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmax documentation>
+svmax :: (MonadDOM m) => Double -> m CSSUnitValue
+svmax value = liftDOM ((js_svmax (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmax documentation>
+svmax_ :: (MonadDOM m) => Double -> m ()
+svmax_ value = liftDOM (void ((js_svmax (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"svmin\"]($1); })"
+        js_svmin :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmin documentation>
+svmin :: (MonadDOM m) => Double -> m CSSUnitValue
+svmin value = liftDOM ((js_svmin (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmin documentation>
+svmin_ :: (MonadDOM m) => Double -> m ()
+svmin_ value = liftDOM (void ((js_svmin (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"svw\"]($1); })"
+        js_svw :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svw documentation>
+svw :: (MonadDOM m) => Double -> m CSSUnitValue
+svw value = liftDOM ((js_svw (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svw documentation>
+svw_ :: (MonadDOM m) => Double -> m ()
+svw_ value = liftDOM (void ((js_svw (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"turn\"]($1); })"
+        js_turn :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.turn documentation>
+turn :: (MonadDOM m) => Double -> m CSSUnitValue
+turn value = liftDOM ((js_turn (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.turn documentation>
+turn_ :: (MonadDOM m) => Double -> m ()
+turn_ value = liftDOM (void ((js_turn (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"vb\"]($1); })"
+        js_vb :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vb documentation>
+vb :: (MonadDOM m) => Double -> m CSSUnitValue
+vb value = liftDOM ((js_vb (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vb documentation>
+vb_ :: (MonadDOM m) => Double -> m ()
+vb_ value = liftDOM (void ((js_vb (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"vh\"]($1); })"
+        js_vh :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vh documentation>
+vh :: (MonadDOM m) => Double -> m CSSUnitValue
+vh value = liftDOM ((js_vh (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vh documentation>
+vh_ :: (MonadDOM m) => Double -> m ()
+vh_ value = liftDOM (void ((js_vh (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"vi\"]($1); })"
+        js_vi :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vi documentation>
+vi :: (MonadDOM m) => Double -> m CSSUnitValue
+vi value = liftDOM ((js_vi (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vi documentation>
+vi_ :: (MonadDOM m) => Double -> m ()
+vi_ value = liftDOM (void ((js_vi (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"vmax\"]($1); })"
+        js_vmax :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmax documentation>
+vmax :: (MonadDOM m) => Double -> m CSSUnitValue
+vmax value = liftDOM ((js_vmax (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmax documentation>
+vmax_ :: (MonadDOM m) => Double -> m ()
+vmax_ value = liftDOM (void ((js_vmax (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"vmin\"]($1); })"
+        js_vmin :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmin documentation>
+vmin :: (MonadDOM m) => Double -> m CSSUnitValue
+vmin value = liftDOM ((js_vmin (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmin documentation>
+vmin_ :: (MonadDOM m) => Double -> m ()
+vmin_ value = liftDOM (void ((js_vmin (value))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSS\"][\"vw\"]($1); })"
+        js_vw :: Double -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vw documentation>
+vw :: (MonadDOM m) => Double -> m CSSUnitValue
+vw value = liftDOM ((js_vw (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vw documentation>
+vw_ :: (MonadDOM m) => Double -> m ()
+vw_ value = liftDOM (void ((js_vw (value))))
+
+foreign import javascript unsafe "(() => { return globalThis[\"CSS\"][\"highlights\"]; })"
+        js_getHighlights :: IO HighlightRegistry
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/highlights_static MDN CSS.highlights documentation>
+getHighlights :: (MonadDOM m) => m HighlightRegistry
+getHighlights = liftDOM ((js_getHighlights))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSAnimation.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSAnimation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSAnimation.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSAnimation
+       (js_getAnimationName, getAnimationName, CSSAnimation(..), gTypeCSSAnimation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"animationName\"]; })"
+        js_getAnimationName :: CSSAnimation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSAnimation/animationName MDN CSSAnimation.animationName documentation>
+getAnimationName :: (MonadDOM m, FromJSString result) => CSSAnimation -> m result
+getAnimationName self = liftDOM ((fromJSString <$> (js_getAnimationName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSConditionRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSConditionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSConditionRule.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSConditionRule
+       (js_getConditionText, getConditionText, CSSConditionRule(..), gTypeCSSConditionRule, IsCSSConditionRule, toCSSConditionRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"conditionText\"]; })"
+        js_getConditionText :: CSSConditionRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSConditionRule/conditionText MDN CSSConditionRule.conditionText documentation>
+getConditionText :: (MonadDOM m, IsCSSConditionRule self, FromJSString result) => self -> m result
+getConditionText self = liftDOM ((fromJSString <$> (js_getConditionText ((Types.toCSSConditionRule self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSContainerCondition.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSContainerCondition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSContainerCondition.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-5 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSContainerCondition
+       (js_newCSSContainerCondition, js_setName, js_getName, js_setQuery, js_getQuery, newCSSContainerCondition, setName, getName, setQuery, getQuery, CSSContainerCondition(..), gTypeCSSContainerCondition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"name\": $1, \"query\": $2}); })"
+        js_newCSSContainerCondition :: JSString -> JSString -> IO CSSContainerCondition
+-- | <https://drafts.csswg.org/css-conditional-5/#dictdef-csscontainercondition CSSContainerCondition specification>
+newCSSContainerCondition :: (MonadDOM m, ToJSString name, ToJSString query) => name -> query -> m CSSContainerCondition
+newCSSContainerCondition name query = liftDOM ((js_newCSSContainerCondition (toJSString name) (toJSString query)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CSSContainerCondition -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-conditional-5/#dom-csscontainercondition-name CSSContainerCondition.name specification>
+setName :: (MonadDOM m, ToJSString val) => CSSContainerCondition -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CSSContainerCondition -> IO JSString
+-- | <https://drafts.csswg.org/css-conditional-5/#dom-csscontainercondition-name CSSContainerCondition.name specification>
+getName :: (MonadDOM m, FromJSString result) => CSSContainerCondition -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"query\"] = $2; })"
+        js_setQuery :: CSSContainerCondition -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-conditional-5/#dom-csscontainercondition-query CSSContainerCondition.query specification>
+setQuery :: (MonadDOM m, ToJSString val) => CSSContainerCondition -> val -> m ()
+setQuery self val = liftDOM (void ((js_setQuery (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"query\"]; })"
+        js_getQuery :: CSSContainerCondition -> IO JSString
+-- | <https://drafts.csswg.org/css-conditional-5/#dom-csscontainercondition-query CSSContainerCondition.query specification>
+getQuery :: (MonadDOM m, FromJSString result) => CSSContainerCondition -> m result
+getQuery self = liftDOM ((fromJSString <$> (js_getQuery (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSContainerRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSContainerRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSContainerRule.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-5 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSContainerRule
+       (js_getContainerName, js_getContainerQuery, js_getConditions, getContainerName, getContainerQuery, getConditions, CSSContainerRule(..), gTypeCSSContainerRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"containerName\"]; })"
+        js_getContainerName :: CSSContainerRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSContainerRule/containerName MDN CSSContainerRule.containerName documentation>
+getContainerName :: (MonadDOM m, FromJSString result) => CSSContainerRule -> m result
+getContainerName self = liftDOM ((fromJSString <$> (js_getContainerName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"containerQuery\"]; })"
+        js_getContainerQuery :: CSSContainerRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSContainerRule/containerQuery MDN CSSContainerRule.containerQuery documentation>
+getContainerQuery :: (MonadDOM m, FromJSString result) => CSSContainerRule -> m result
+getContainerQuery self = liftDOM ((fromJSString <$> (js_getContainerQuery (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"conditions\"]; })"
+        js_getConditions :: CSSContainerRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSContainerRule/conditions MDN CSSContainerRule.conditions documentation>
+getConditions :: (MonadDOM m) => CSSContainerRule -> m [CSSContainerCondition]
+getConditions self = liftDOM (((js_getConditions (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSCounterStyleRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSCounterStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSCounterStyleRule.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-counter-styles-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSCounterStyleRule
+       (js_setName, js_getName, js_setSystem, js_getSystem, js_setSymbols, js_getSymbols, js_setAdditiveSymbols, js_getAdditiveSymbols, js_setNegative, js_getNegative, js_setPrefix, js_getPrefix, js_setSuffix, js_getSuffix, js_setRange, js_getRange, js_setPad, js_getPad, js_setSpeakAs, js_getSpeakAs, js_setFallback, js_getFallback, setName, getName, setSystem, getSystem, setSymbols, getSymbols, setAdditiveSymbols, getAdditiveSymbols, setNegative, getNegative, setPrefix, getPrefix, setSuffix, getSuffix, setRange, getRange, setPad, getPad, setSpeakAs, getSpeakAs, setFallback, getFallback, CSSCounterStyleRule(..), gTypeCSSCounterStyleRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/name MDN CSSCounterStyleRule.name documentation>
+setName :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/name MDN CSSCounterStyleRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"system\"] = $2; })"
+        js_setSystem :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/system MDN CSSCounterStyleRule.system documentation>
+setSystem :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setSystem self val = liftDOM (void ((js_setSystem (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"system\"]; })"
+        js_getSystem :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/system MDN CSSCounterStyleRule.system documentation>
+getSystem :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSystem self = liftDOM ((fromJSString <$> (js_getSystem (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"symbols\"] = $2; })"
+        js_setSymbols :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/symbols MDN CSSCounterStyleRule.symbols documentation>
+setSymbols :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setSymbols self val = liftDOM (void ((js_setSymbols (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"symbols\"]; })"
+        js_getSymbols :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/symbols MDN CSSCounterStyleRule.symbols documentation>
+getSymbols :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSymbols self = liftDOM ((fromJSString <$> (js_getSymbols (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"additiveSymbols\"] = $2; })"
+        js_setAdditiveSymbols :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/additiveSymbols MDN CSSCounterStyleRule.additiveSymbols documentation>
+setAdditiveSymbols :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setAdditiveSymbols self val = liftDOM (void ((js_setAdditiveSymbols (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"additiveSymbols\"]; })"
+        js_getAdditiveSymbols :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/additiveSymbols MDN CSSCounterStyleRule.additiveSymbols documentation>
+getAdditiveSymbols :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getAdditiveSymbols self = liftDOM ((fromJSString <$> (js_getAdditiveSymbols (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"negative\"] = $2; })"
+        js_setNegative :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/negative MDN CSSCounterStyleRule.negative documentation>
+setNegative :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setNegative self val = liftDOM (void ((js_setNegative (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"negative\"]; })"
+        js_getNegative :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/negative MDN CSSCounterStyleRule.negative documentation>
+getNegative :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getNegative self = liftDOM ((fromJSString <$> (js_getNegative (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"prefix\"] = $2; })"
+        js_setPrefix :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/prefix MDN CSSCounterStyleRule.prefix documentation>
+setPrefix :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setPrefix self val = liftDOM (void ((js_setPrefix (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })"
+        js_getPrefix :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/prefix MDN CSSCounterStyleRule.prefix documentation>
+getPrefix :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getPrefix self = liftDOM ((fromJSString <$> (js_getPrefix (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"suffix\"] = $2; })"
+        js_setSuffix :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/suffix MDN CSSCounterStyleRule.suffix documentation>
+setSuffix :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setSuffix self val = liftDOM (void ((js_setSuffix (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"suffix\"]; })"
+        js_getSuffix :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/suffix MDN CSSCounterStyleRule.suffix documentation>
+getSuffix :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSuffix self = liftDOM ((fromJSString <$> (js_getSuffix (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"range\"] = $2; })"
+        js_setRange :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/range MDN CSSCounterStyleRule.range documentation>
+setRange :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setRange self val = liftDOM (void ((js_setRange (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"range\"]; })"
+        js_getRange :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/range MDN CSSCounterStyleRule.range documentation>
+getRange :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getRange self = liftDOM ((fromJSString <$> (js_getRange (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pad\"] = $2; })"
+        js_setPad :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/pad MDN CSSCounterStyleRule.pad documentation>
+setPad :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setPad self val = liftDOM (void ((js_setPad (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pad\"]; })"
+        js_getPad :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/pad MDN CSSCounterStyleRule.pad documentation>
+getPad :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getPad self = liftDOM ((fromJSString <$> (js_getPad (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"speakAs\"] = $2; })"
+        js_setSpeakAs :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/speakAs MDN CSSCounterStyleRule.speakAs documentation>
+setSpeakAs :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setSpeakAs self val = liftDOM (void ((js_setSpeakAs (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"speakAs\"]; })"
+        js_getSpeakAs :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/speakAs MDN CSSCounterStyleRule.speakAs documentation>
+getSpeakAs :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSpeakAs self = liftDOM ((fromJSString <$> (js_getSpeakAs (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fallback\"] = $2; })"
+        js_setFallback :: CSSCounterStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/fallback MDN CSSCounterStyleRule.fallback documentation>
+setFallback :: (MonadDOM m, ToJSString val) => CSSCounterStyleRule -> val -> m ()
+setFallback self val = liftDOM (void ((js_setFallback (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fallback\"]; })"
+        js_getFallback :: CSSCounterStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/fallback MDN CSSCounterStyleRule.fallback documentation>
+getFallback :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getFallback self = liftDOM ((fromJSString <$> (js_getFallback (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceDescriptors.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceDescriptors.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-5 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSFontFaceDescriptors
+       (js_setSrc, js_getSrc, js_setFontFamily, js_getFontFamily, js_setFontStyle, js_getFontStyle, js_setFontWeight, js_getFontWeight, js_setFontStretch, js_getFontStretch, js_setFontWidth, js_getFontWidth, js_setSizeAdjust, js_getSizeAdjust, js_setUnicodeRange, js_getUnicodeRange, js_setFontFeatureSettings, js_getFontFeatureSettings, js_setFontDisplay, js_getFontDisplay, setSrc, getSrc, setFontFamily, getFontFamily, setFontStyle, getFontStyle, setFontWeight, getFontWeight, setFontStretch, getFontStretch, setFontWidth, getFontWidth, setSizeAdjust, getSizeAdjust, setUnicodeRange, getUnicodeRange, setFontFeatureSettings, getFontFeatureSettings, setFontDisplay, getFontDisplay, CSSFontFaceDescriptors(..), gTypeCSSFontFaceDescriptors)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-src CSSFontFaceDescriptors.src specification>
+setSrc :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-src CSSFontFaceDescriptors.src specification>
+getSrc :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontFamily\"] = $2; })"
+        js_setFontFamily :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontfamily CSSFontFaceDescriptors.fontFamily specification>
+setFontFamily :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setFontFamily self val = liftDOM (void ((js_setFontFamily (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontFamily\"]; })"
+        js_getFontFamily :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontfamily CSSFontFaceDescriptors.fontFamily specification>
+getFontFamily :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontFamily self = liftDOM ((fromJSString <$> (js_getFontFamily (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontStyle\"] = $2; })"
+        js_setFontStyle :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontstyle CSSFontFaceDescriptors.fontStyle specification>
+setFontStyle :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setFontStyle self val = liftDOM (void ((js_setFontStyle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontStyle\"]; })"
+        js_getFontStyle :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontstyle CSSFontFaceDescriptors.fontStyle specification>
+getFontStyle :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontStyle self = liftDOM ((fromJSString <$> (js_getFontStyle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontWeight\"] = $2; })"
+        js_setFontWeight :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontweight CSSFontFaceDescriptors.fontWeight specification>
+setFontWeight :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setFontWeight self val = liftDOM (void ((js_setFontWeight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontWeight\"]; })"
+        js_getFontWeight :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontweight CSSFontFaceDescriptors.fontWeight specification>
+getFontWeight :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontWeight self = liftDOM ((fromJSString <$> (js_getFontWeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontStretch\"] = $2; })"
+        js_setFontStretch :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontstretch CSSFontFaceDescriptors.fontStretch specification>
+setFontStretch :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setFontStretch self val = liftDOM (void ((js_setFontStretch (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontStretch\"]; })"
+        js_getFontStretch :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontstretch CSSFontFaceDescriptors.fontStretch specification>
+getFontStretch :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontStretch self = liftDOM ((fromJSString <$> (js_getFontStretch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontWidth\"] = $2; })"
+        js_setFontWidth :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontwidth CSSFontFaceDescriptors.fontWidth specification>
+setFontWidth :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setFontWidth self val = liftDOM (void ((js_setFontWidth (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontWidth\"]; })"
+        js_getFontWidth :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontwidth CSSFontFaceDescriptors.fontWidth specification>
+getFontWidth :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontWidth self = liftDOM ((fromJSString <$> (js_getFontWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sizeAdjust\"] = $2; })"
+        js_setSizeAdjust :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-sizeadjust CSSFontFaceDescriptors.sizeAdjust specification>
+setSizeAdjust :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setSizeAdjust self val = liftDOM (void ((js_setSizeAdjust (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sizeAdjust\"]; })"
+        js_getSizeAdjust :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-sizeadjust CSSFontFaceDescriptors.sizeAdjust specification>
+getSizeAdjust :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getSizeAdjust self = liftDOM ((fromJSString <$> (js_getSizeAdjust (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unicodeRange\"] = $2; })"
+        js_setUnicodeRange :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-unicoderange CSSFontFaceDescriptors.unicodeRange specification>
+setUnicodeRange :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setUnicodeRange self val = liftDOM (void ((js_setUnicodeRange (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unicodeRange\"]; })"
+        js_getUnicodeRange :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-unicoderange CSSFontFaceDescriptors.unicodeRange specification>
+getUnicodeRange :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getUnicodeRange self = liftDOM ((fromJSString <$> (js_getUnicodeRange (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontFeatureSettings\"] = $2; })"
+        js_setFontFeatureSettings :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontfeaturesettings CSSFontFaceDescriptors.fontFeatureSettings specification>
+setFontFeatureSettings :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setFontFeatureSettings self val = liftDOM (void ((js_setFontFeatureSettings (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontFeatureSettings\"]; })"
+        js_getFontFeatureSettings :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontfeaturesettings CSSFontFaceDescriptors.fontFeatureSettings specification>
+getFontFeatureSettings :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontFeatureSettings self = liftDOM ((fromJSString <$> (js_getFontFeatureSettings (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontDisplay\"] = $2; })"
+        js_setFontDisplay :: CSSFontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontdisplay CSSFontFaceDescriptors.fontDisplay specification>
+setFontDisplay :: (MonadDOM m, ToJSString val) => CSSFontFaceDescriptors -> val -> m ()
+setFontDisplay self val = liftDOM (void ((js_setFontDisplay (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontDisplay\"]; })"
+        js_getFontDisplay :: CSSFontFaceDescriptors -> IO JSString
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontdisplay CSSFontFaceDescriptors.fontDisplay specification>
+getFontDisplay :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontDisplay self = liftDOM ((fromJSString <$> (js_getFontDisplay (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs
+++ /dev/null
@@ -1,91 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent
-       (js_newCSSFontFaceLoadEvent, newCSSFontFaceLoadEvent,
-        js_getFontface, getFontface, getFontfaceUnsafe,
-        getFontfaceUnchecked, js_getError, getError, getErrorUnsafe,
-        getErrorUnchecked, CSSFontFaceLoadEvent(..),
-        gTypeCSSFontFaceLoadEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"CSSFontFaceLoadEvent\"]($1,\n$2); })"
-        js_newCSSFontFaceLoadEvent ::
-        JSString ->
-          Optional CSSFontFaceLoadEventInit -> IO CSSFontFaceLoadEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation> 
-newCSSFontFaceLoadEvent ::
-                        (MonadIO m, ToJSString type') =>
-                          type' -> Maybe CSSFontFaceLoadEventInit -> m CSSFontFaceLoadEvent
-newCSSFontFaceLoadEvent type' eventInit
-  = liftIO
-      (js_newCSSFontFaceLoadEvent (toJSString type')
-         (maybeToOptional eventInit))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fontface\"]; })" js_getFontface
-        :: CSSFontFaceLoadEvent -> IO (Nullable CSSFontFaceRule)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
-getFontface ::
-            (MonadIO m) => CSSFontFaceLoadEvent -> m (Maybe CSSFontFaceRule)
-getFontface self
-  = liftIO (nullableToMaybe <$> (js_getFontface self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
-getFontfaceUnsafe ::
-                  (MonadIO m, HasCallStack) =>
-                    CSSFontFaceLoadEvent -> m CSSFontFaceRule
-getFontfaceUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFontface self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
-getFontfaceUnchecked ::
-                     (MonadIO m) => CSSFontFaceLoadEvent -> m CSSFontFaceRule
-getFontfaceUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getFontface self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        CSSFontFaceLoadEvent -> IO (Nullable DOMError)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
-getError ::
-         (MonadIO m) => CSSFontFaceLoadEvent -> m (Maybe DOMError)
-getError self = liftIO (nullableToMaybe <$> (js_getError self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
-getErrorUnsafe ::
-               (MonadIO m, HasCallStack) => CSSFontFaceLoadEvent -> m DOMError
-getErrorUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getError self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
-getErrorUnchecked ::
-                  (MonadIO m) => CSSFontFaceLoadEvent -> m DOMError
-getErrorUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getError self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
@@ -1,33 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-5 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
        (js_getStyle, getStyle, CSSFontFaceRule(..), gTypeCSSFontFaceRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
-        CSSFontFaceRule -> IO CSSStyleDeclaration
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
-getStyle :: (MonadIO m) => CSSFontFaceRule -> m CSSStyleDeclaration
-getStyle self = liftIO (js_getStyle self)
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: CSSFontFaceRule -> IO CSSFontFaceDescriptors
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontFaceRule/style MDN CSSFontFaceRule.style documentation>
+getStyle :: (MonadDOM m) => CSSFontFaceRule -> m CSSFontFaceDescriptors
+getStyle self = liftDOM ((js_getStyle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFeatureValuesRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFeatureValuesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFeatureValuesRule.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSFontFeatureValuesRule
+       (js_setFontFamily, js_getFontFamily, setFontFamily, getFontFamily, CSSFontFeatureValuesRule(..), gTypeCSSFontFeatureValuesRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontFamily\"] = $2; })"
+        js_setFontFamily :: CSSFontFeatureValuesRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontFeatureValuesRule/fontFamily MDN CSSFontFeatureValuesRule.fontFamily documentation>
+setFontFamily :: (MonadDOM m, ToJSString val) => CSSFontFeatureValuesRule -> val -> m ()
+setFontFamily self val = liftDOM (void ((js_setFontFamily (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontFamily\"]; })"
+        js_getFontFamily :: CSSFontFeatureValuesRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontFeatureValuesRule/fontFamily MDN CSSFontFeatureValuesRule.fontFamily documentation>
+getFontFamily :: (MonadDOM m, FromJSString result) => CSSFontFeatureValuesRule -> m result
+getFontFamily self = liftDOM ((fromJSString <$> (js_getFontFamily (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontPaletteValuesRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontPaletteValuesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontPaletteValuesRule.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSFontPaletteValuesRule
+       (js_getName, js_getFontFamily, js_getBasePalette, js_getOverrideColors, getName, getFontFamily, getBasePalette, getOverrideColors, CSSFontPaletteValuesRule(..), gTypeCSSFontPaletteValuesRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CSSFontPaletteValuesRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/name MDN CSSFontPaletteValuesRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontFamily\"]; })"
+        js_getFontFamily :: CSSFontPaletteValuesRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/fontFamily MDN CSSFontPaletteValuesRule.fontFamily documentation>
+getFontFamily :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getFontFamily self = liftDOM ((fromJSString <$> (js_getFontFamily (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"basePalette\"]; })"
+        js_getBasePalette :: CSSFontPaletteValuesRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/basePalette MDN CSSFontPaletteValuesRule.basePalette documentation>
+getBasePalette :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getBasePalette self = liftDOM ((fromJSString <$> (js_getBasePalette (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"overrideColors\"]; })"
+        js_getOverrideColors :: CSSFontPaletteValuesRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/overrideColors MDN CSSFontPaletteValuesRule.overrideColors documentation>
+getOverrideColors :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getOverrideColors self = liftDOM ((fromJSString <$> (js_getOverrideColors (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSGroupingRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSGroupingRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSGroupingRule.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSGroupingRule
+       (js_deleteRule, js_insertRule, js_getCssRules, deleteRule, insertRule, insertRule_, getCssRules, CSSGroupingRule(..), gTypeCSSGroupingRule, IsCSSGroupingRule, toCSSGroupingRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
+        js_deleteRule :: CSSGroupingRule -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/deleteRule MDN CSSGroupingRule.deleteRule documentation>
+deleteRule :: (MonadDOM m, IsCSSGroupingRule self) => self -> Word -> m ()
+deleteRule self index = liftDOM (void ((js_deleteRule ((Types.toCSSGroupingRule self)) (index))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
+        js_insertRule :: CSSGroupingRule -> JSString -> JSVal -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/insertRule MDN CSSGroupingRule.insertRule documentation>
+insertRule :: (MonadDOM m, IsCSSGroupingRule self, ToJSString rule) => self -> rule -> Maybe Word -> m Word
+insertRule self rule index = liftDOM (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a3' -> js_insertRule ((Types.toCSSGroupingRule self)) (toJSString rule) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/insertRule MDN CSSGroupingRule.insertRule documentation>
+insertRule_ :: (MonadDOM m, IsCSSGroupingRule self, ToJSString rule) => self -> rule -> Maybe Word -> m ()
+insertRule_ self rule index = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a3' -> js_insertRule ((Types.toCSSGroupingRule self)) (toJSString rule) a3')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })"
+        js_getCssRules :: CSSGroupingRule -> IO CSSRuleList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/cssRules MDN CSSGroupingRule.cssRules documentation>
+getCssRules :: (MonadDOM m, IsCSSGroupingRule self) => self -> m CSSRuleList
+getCssRules self = liftDOM ((js_getCssRules ((Types.toCSSGroupingRule self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSImageValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSImageValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSImageValue.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSImageValue
+       (CSSImageValue(..), gTypeCSSImageValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
@@ -1,66 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSImportRule
-       (js_getHref, getHref, getHrefUnsafe, getHrefUnchecked, js_getMedia,
-        getMedia, js_getStyleSheet, getStyleSheet, CSSImportRule(..),
-        gTypeCSSImportRule)
+       (js_getHref, js_getMedia, js_getStyleSheet, js_getLayerName, js_getSupportsText, getHref, getMedia, getStyleSheet, getStyleSheetUnsafe, getStyleSheetUnchecked, getLayerName, getLayerNameUnsafe, getLayerNameUnchecked, getSupportsText, getSupportsTextUnsafe, getSupportsTextUnchecked, CSSImportRule(..), gTypeCSSImportRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        CSSImportRule -> IO (Nullable JSString)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
-getHref ::
-        (MonadIO m, FromJSString result) =>
-          CSSImportRule -> m (Maybe result)
-getHref self = liftIO (fromMaybeJSString <$> (js_getHref self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
-getHrefUnsafe ::
-              (MonadIO m, HasCallStack, FromJSString result) =>
-                CSSImportRule -> m result
-getHrefUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getHref self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: CSSImportRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/href MDN CSSImportRule.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => CSSImportRule -> m result
+getHref self = liftDOM ((fromJSString <$> (js_getHref (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
-getHrefUnchecked ::
-                 (MonadIO m, FromJSString result) => CSSImportRule -> m result
-getHrefUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getHref self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        CSSImportRule -> IO MediaList
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: CSSImportRule -> IO MediaList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/media MDN CSSImportRule.media documentation>
+getMedia :: (MonadDOM m) => CSSImportRule -> m MediaList
+getMedia self = liftDOM ((js_getMedia (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.media Mozilla CSSImportRule.media documentation> 
-getMedia :: (MonadIO m) => CSSImportRule -> m MediaList
-getMedia self = liftIO (js_getMedia self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"styleSheet\"]; })"
-        js_getStyleSheet :: CSSImportRule -> IO CSSStyleSheet
+        js_getStyleSheet :: CSSImportRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/styleSheet MDN CSSImportRule.styleSheet documentation>
+getStyleSheet :: (MonadDOM m) => CSSImportRule -> m (Maybe CSSStyleSheet)
+getStyleSheet self = liftDOM (((js_getStyleSheet (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.styleSheet Mozilla CSSImportRule.styleSheet documentation> 
-getStyleSheet :: (MonadIO m) => CSSImportRule -> m CSSStyleSheet
-getStyleSheet self = liftIO (js_getStyleSheet self)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/styleSheet MDN CSSImportRule.styleSheet documentation>
+getStyleSheetUnsafe :: (MonadDOM m, HasCallStack) => CSSImportRule -> m CSSStyleSheet
+getStyleSheetUnsafe self = liftDOM ((((js_getStyleSheet (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/styleSheet MDN CSSImportRule.styleSheet documentation>
+getStyleSheetUnchecked :: (MonadDOM m) => CSSImportRule -> m CSSStyleSheet
+getStyleSheetUnchecked self = liftDOM ((pFromJSVal <$> (js_getStyleSheet (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"layerName\"]; })"
+        js_getLayerName :: CSSImportRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/layerName MDN CSSImportRule.layerName documentation>
+getLayerName :: (MonadDOM m, FromJSString result) => CSSImportRule -> m (Maybe result)
+getLayerName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLayerName (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/layerName MDN CSSImportRule.layerName documentation>
+getLayerNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CSSImportRule -> m result
+getLayerNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLayerName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/layerName MDN CSSImportRule.layerName documentation>
+getLayerNameUnchecked :: (MonadDOM m, FromJSString result) => CSSImportRule -> m result
+getLayerNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getLayerName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supportsText\"]; })"
+        js_getSupportsText :: CSSImportRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/supportsText MDN CSSImportRule.supportsText documentation>
+getSupportsText :: (MonadDOM m, FromJSString result) => CSSImportRule -> m (Maybe result)
+getSupportsText self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSupportsText (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/supportsText MDN CSSImportRule.supportsText documentation>
+getSupportsTextUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CSSImportRule -> m result
+getSupportsTextUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSupportsText (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/supportsText MDN CSSImportRule.supportsText documentation>
+getSupportsTextUnchecked :: (MonadDOM m, FromJSString result) => CSSImportRule -> m result
+getSupportsTextUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupportsText (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
@@ -1,50 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
-       (js_setKeyText, setKeyText, js_getKeyText, getKeyText, js_getStyle,
-        getStyle, CSSKeyframeRule(..), gTypeCSSKeyframeRule)
+       (js_setKeyText, js_getKeyText, js_getStyle, setKeyText, getKeyText, getStyle, CSSKeyframeRule(..), gTypeCSSKeyframeRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"keyText\"] = $2; })"
-        js_setKeyText :: CSSKeyframeRule -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
-setKeyText ::
-           (MonadIO m, ToJSString val) => CSSKeyframeRule -> val -> m ()
-setKeyText self val = liftIO (js_setKeyText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keyText\"]; })" js_getKeyText ::
-        CSSKeyframeRule -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"keyText\"] = $2; })"
+        js_setKeyText :: CSSKeyframeRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule/keyText MDN CSSKeyframeRule.keyText documentation>
+setKeyText :: (MonadDOM m, ToJSString val) => CSSKeyframeRule -> val -> m ()
+setKeyText self val = liftDOM (void ((js_setKeyText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
-getKeyText ::
-           (MonadIO m, FromJSString result) => CSSKeyframeRule -> m result
-getKeyText self = liftIO (fromJSString <$> (js_getKeyText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
-        CSSKeyframeRule -> IO CSSStyleDeclaration
+foreign import javascript unsafe "(($1) => { return $1[\"keyText\"]; })"
+        js_getKeyText :: CSSKeyframeRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule/keyText MDN CSSKeyframeRule.keyText documentation>
+getKeyText :: (MonadDOM m, FromJSString result) => CSSKeyframeRule -> m result
+getKeyText self = liftDOM ((fromJSString <$> (js_getKeyText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.style Mozilla CSSKeyframeRule.style documentation> 
-getStyle :: (MonadIO m) => CSSKeyframeRule -> m CSSStyleDeclaration
-getStyle self = liftIO (js_getStyle self)
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: CSSKeyframeRule -> IO CSSStyleProperties
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule/style MDN CSSKeyframeRule.style documentation>
+getStyle :: (MonadDOM m) => CSSKeyframeRule -> m CSSStyleProperties
+getStyle self = liftDOM ((js_getStyle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
@@ -1,124 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
-       (js_insertRule, insertRule, js_appendRule, appendRule,
-        js_deleteRule, deleteRule, js_findRule, findRule, findRule_,
-        findRuleUnsafe, findRuleUnchecked, js_get, get, get_, js_setName,
-        setName, js_getName, getName, js_getCssRules, getCssRules,
-        CSSKeyframesRule(..), gTypeCSSKeyframesRule)
+       (js_appendRule, js_deleteRule, js_findRule, js_setName, js_getName, js_getCssRules, js_getLength, appendRule, deleteRule, findRule, findRule_, findRuleUnsafe, findRuleUnchecked, setName, getName, getCssRules, getLength, CSSKeyframesRule(..), gTypeCSSKeyframesRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"insertRule\"]($2); })"
-        js_insertRule :: CSSKeyframesRule -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.insertRule Mozilla CSSKeyframesRule.insertRule documentation> 
-insertRule ::
-           (MonadIO m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
-insertRule self rule
-  = liftIO (js_insertRule self (toJSString rule))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"appendRule\"]($2); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"appendRule\"]($2); })"
         js_appendRule :: CSSKeyframesRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/appendRule MDN CSSKeyframesRule.appendRule documentation>
+appendRule :: (MonadDOM m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
+appendRule self rule = liftDOM (void ((js_appendRule (self) (toJSString rule))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.appendRule Mozilla CSSKeyframesRule.appendRule documentation> 
-appendRule ::
-           (MonadIO m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
-appendRule self rule
-  = liftIO (js_appendRule self (toJSString rule))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
         js_deleteRule :: CSSKeyframesRule -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.deleteRule Mozilla CSSKeyframesRule.deleteRule documentation> 
-deleteRule ::
-           (MonadIO m, ToJSString key) => CSSKeyframesRule -> key -> m ()
-deleteRule self key = liftIO (js_deleteRule self (toJSString key))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"findRule\"]($2); })" js_findRule
-        :: CSSKeyframesRule -> JSString -> IO (Nullable CSSKeyframeRule)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRule ::
-         (MonadIO m, ToJSString key) =>
-           CSSKeyframesRule -> key -> m (Maybe CSSKeyframeRule)
-findRule self key
-  = liftIO (nullableToMaybe <$> (js_findRule self (toJSString key)))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/deleteRule MDN CSSKeyframesRule.deleteRule documentation>
+deleteRule :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m ()
+deleteRule self select = liftDOM (void ((js_deleteRule (self) (toJSString select))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRule_ ::
-          (MonadIO m, ToJSString key) => CSSKeyframesRule -> key -> m ()
-findRule_ self key
-  = liftIO (void (js_findRule self (toJSString key)))
+foreign import javascript safe "(($1, $2) => { return $1[\"findRule\"]($2); })"
+        js_findRule :: CSSKeyframesRule -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/findRule MDN CSSKeyframesRule.findRule documentation>
+findRule :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m (Maybe CSSKeyframeRule)
+findRule self select = liftDOM (((js_findRule (self) (toJSString select)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRuleUnsafe ::
-               (MonadIO m, ToJSString key, HasCallStack) =>
-                 CSSKeyframesRule -> key -> m CSSKeyframeRule
-findRuleUnsafe self key
-  = liftIO
-      ((nullableToMaybe <$> (js_findRule self (toJSString key))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/findRule MDN CSSKeyframesRule.findRule documentation>
+findRule_ :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m ()
+findRule_ self select = liftDOM (void ((js_findRule (self) (toJSString select))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRuleUnchecked ::
-                  (MonadIO m, ToJSString key) =>
-                    CSSKeyframesRule -> key -> m CSSKeyframeRule
-findRuleUnchecked self key
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_findRule self (toJSString key)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
-        CSSKeyframesRule -> Word -> IO CSSKeyframeRule
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/findRule MDN CSSKeyframesRule.findRule documentation>
+findRuleUnsafe :: (MonadDOM m, ToJSString select, HasCallStack) => CSSKeyframesRule -> select -> m CSSKeyframeRule
+findRuleUnsafe self select = liftDOM ((((js_findRule (self) (toJSString select)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.get Mozilla CSSKeyframesRule.get documentation> 
-get :: (MonadIO m) => CSSKeyframesRule -> Word -> m CSSKeyframeRule
-get self index = liftIO (js_get self index)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/findRule MDN CSSKeyframesRule.findRule documentation>
+findRuleUnchecked :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m CSSKeyframeRule
+findRuleUnchecked self select = liftDOM ((pFromJSVal <$> (js_findRule (self) (toJSString select))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.get Mozilla CSSKeyframesRule.get documentation> 
-get_ :: (MonadIO m) => CSSKeyframesRule -> Word -> m ()
-get_ self index = liftIO (void (js_get self index))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        CSSKeyframesRule -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CSSKeyframesRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/name MDN CSSKeyframesRule.name documentation>
+setName :: (MonadDOM m, ToJSString val) => CSSKeyframesRule -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => CSSKeyframesRule -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        CSSKeyframesRule -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CSSKeyframesRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/name MDN CSSKeyframesRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSKeyframesRule -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => CSSKeyframesRule -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
-        :: CSSKeyframesRule -> IO CSSRuleList
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })"
+        js_getCssRules :: CSSKeyframesRule -> IO CSSRuleList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/cssRules MDN CSSKeyframesRule.cssRules documentation>
+getCssRules :: (MonadDOM m) => CSSKeyframesRule -> m CSSRuleList
+getCssRules self = liftDOM ((js_getCssRules (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.cssRules Mozilla CSSKeyframesRule.cssRules documentation> 
-getCssRules :: (MonadIO m) => CSSKeyframesRule -> m CSSRuleList
-getCssRules self = liftIO (js_getCssRules self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSKeyframesRule -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/length MDN CSSKeyframesRule.length documentation>
+getLength :: (MonadDOM m) => CSSKeyframesRule -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSKeywordValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSKeywordValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSKeywordValue.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSKeywordValue
+       (js_newCSSKeywordValue, js_setValue, js_getValue, newCSSKeywordValue, setValue, getValue, CSSKeywordValue(..), gTypeCSSKeywordValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSKeywordValue\"]($1); })"
+        js_newCSSKeywordValue :: JSString -> IO CSSKeywordValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeywordValue/CSSKeywordValue MDN CSSKeywordValue. documentation>
+newCSSKeywordValue :: (MonadDOM m, ToJSString value) => value -> m CSSKeywordValue
+newCSSKeywordValue value = liftDOM ((js_newCSSKeywordValue (toJSString value)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: CSSKeywordValue -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeywordValue/value MDN CSSKeywordValue.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => CSSKeywordValue -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: CSSKeywordValue -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeywordValue/value MDN CSSKeywordValue.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => CSSKeywordValue -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSLayerBlockRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSLayerBlockRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSLayerBlockRule.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-cascade-5 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSLayerBlockRule
+       (js_getName, getName, CSSLayerBlockRule(..), gTypeCSSLayerBlockRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CSSLayerBlockRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSLayerBlockRule/name MDN CSSLayerBlockRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSLayerBlockRule -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSLayerStatementRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSLayerStatementRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSLayerStatementRule.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-cascade-5 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSLayerStatementRule
+       (js_getNameList, getNameList, CSSLayerStatementRule(..), gTypeCSSLayerStatementRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"nameList\"]; })"
+        js_getNameList :: CSSLayerStatementRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSLayerStatementRule/nameList MDN CSSLayerStatementRule.nameList documentation>
+getNameList :: (MonadDOM m, FromJSString result) => CSSLayerStatementRule -> m [result]
+getNameList self = liftDOM (((js_getNameList (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathClamp.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathClamp.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathClamp.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathClamp
+       (js_newCSSMathClamp, js_getLower, js_getValue, js_getUpper, newCSSMathClamp, getLower, getValue, getUpper, CSSMathClamp(..), gTypeCSSMathClamp)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"CSSMathClamp\"]($1, $2, $3); })"
+        js_newCSSMathClamp :: CSSNumberish -> CSSNumberish -> CSSNumberish -> IO CSSMathClamp
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathClamp/CSSMathClamp MDN CSSMathClamp. documentation>
+newCSSMathClamp :: (MonadDOM m, IsCSSNumberish lower, IsCSSNumberish value, IsCSSNumberish upper) => lower -> value -> upper -> m CSSMathClamp
+newCSSMathClamp lower value upper = liftDOM ((js_newCSSMathClamp (Types.toCSSNumberish lower) (Types.toCSSNumberish value) (Types.toCSSNumberish upper)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lower\"]; })"
+        js_getLower :: CSSMathClamp -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathClamp/lower MDN CSSMathClamp.lower documentation>
+getLower :: (MonadDOM m) => CSSMathClamp -> m CSSNumericValue
+getLower self = liftDOM ((js_getLower (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: CSSMathClamp -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathClamp/value MDN CSSMathClamp.value documentation>
+getValue :: (MonadDOM m) => CSSMathClamp -> m CSSNumericValue
+getValue self = liftDOM ((js_getValue (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"upper\"]; })"
+        js_getUpper :: CSSMathClamp -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathClamp/upper MDN CSSMathClamp.upper documentation>
+getUpper :: (MonadDOM m) => CSSMathClamp -> m CSSNumericValue
+getUpper self = liftDOM ((js_getUpper (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathInvert.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathInvert.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathInvert.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathInvert
+       (js_newCSSMathInvert, js_getValue, newCSSMathInvert, getValue, CSSMathInvert(..), gTypeCSSMathInvert)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSMathInvert\"]($1); })"
+        js_newCSSMathInvert :: CSSNumberish -> IO CSSMathInvert
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathInvert/CSSMathInvert MDN CSSMathInvert. documentation>
+newCSSMathInvert :: (MonadDOM m, IsCSSNumberish arg) => arg -> m CSSMathInvert
+newCSSMathInvert arg = liftDOM ((js_newCSSMathInvert (Types.toCSSNumberish arg)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: CSSMathInvert -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathInvert/value MDN CSSMathInvert.value documentation>
+getValue :: (MonadDOM m) => CSSMathInvert -> m CSSNumericValue
+getValue self = liftDOM ((js_getValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathMax.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathMax.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathMax.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathMax
+       (js_getValues, getValues, CSSMathMax(..), gTypeCSSMathMax)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"values\"]; })"
+        js_getValues :: CSSMathMax -> IO CSSNumericArray
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathMax/values MDN CSSMathMax.values documentation>
+getValues :: (MonadDOM m) => CSSMathMax -> m CSSNumericArray
+getValues self = liftDOM ((js_getValues (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathMin.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathMin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathMin.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathMin
+       (js_getValues, getValues, CSSMathMin(..), gTypeCSSMathMin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"values\"]; })"
+        js_getValues :: CSSMathMin -> IO CSSNumericArray
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathMin/values MDN CSSMathMin.values documentation>
+getValues :: (MonadDOM m) => CSSMathMin -> m CSSNumericArray
+getValues self = liftDOM ((js_getValues (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathNegate.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathNegate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathNegate.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathNegate
+       (js_newCSSMathNegate, js_getValue, newCSSMathNegate, getValue, CSSMathNegate(..), gTypeCSSMathNegate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSMathNegate\"]($1); })"
+        js_newCSSMathNegate :: CSSNumberish -> IO CSSMathNegate
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathNegate/CSSMathNegate MDN CSSMathNegate. documentation>
+newCSSMathNegate :: (MonadDOM m, IsCSSNumberish arg) => arg -> m CSSMathNegate
+newCSSMathNegate arg = liftDOM ((js_newCSSMathNegate (Types.toCSSNumberish arg)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: CSSMathNegate -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathNegate/value MDN CSSMathNegate.value documentation>
+getValue :: (MonadDOM m) => CSSMathNegate -> m CSSNumericValue
+getValue self = liftDOM ((js_getValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathProduct.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathProduct.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathProduct.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathProduct
+       (js_getValues, getValues, CSSMathProduct(..), gTypeCSSMathProduct)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"values\"]; })"
+        js_getValues :: CSSMathProduct -> IO CSSNumericArray
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathProduct/values MDN CSSMathProduct.values documentation>
+getValues :: (MonadDOM m) => CSSMathProduct -> m CSSNumericArray
+getValues self = liftDOM ((js_getValues (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathSum.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathSum.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathSum.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathSum
+       (js_getValues, getValues, CSSMathSum(..), gTypeCSSMathSum)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"values\"]; })"
+        js_getValues :: CSSMathSum -> IO CSSNumericArray
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathSum/values MDN CSSMathSum.values documentation>
+getValues :: (MonadDOM m) => CSSMathSum -> m CSSNumericArray
+getValues self = liftDOM ((js_getValues (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMathValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMathValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMathValue.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMathValue
+       (js_getOperator, getOperator, CSSMathValue(..), gTypeCSSMathValue, IsCSSMathValue, toCSSMathValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"operator\"]; })"
+        js_getOperator :: CSSMathValue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathValue/operator MDN CSSMathValue.operator documentation>
+getOperator :: (MonadDOM m, IsCSSMathValue self) => self -> m CSSMathOperator
+getOperator self = liftDOM (((js_getOperator ((Types.toCSSMathValue self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMatrixComponent.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMatrixComponent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMatrixComponent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMatrixComponent
+       (js_newCSSMatrixComponent, js_setMatrix, js_getMatrix, newCSSMatrixComponent, setMatrix, getMatrix, CSSMatrixComponent(..), gTypeCSSMatrixComponent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CSSMatrixComponent\"]($1, $2); })"
+        js_newCSSMatrixComponent :: DOMMatrixReadOnly -> JSVal -> IO CSSMatrixComponent
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMatrixComponent/CSSMatrixComponent MDN CSSMatrixComponent. documentation>
+newCSSMatrixComponent :: (MonadDOM m, IsDOMMatrixReadOnly matrix) => matrix -> Maybe CSSMatrixComponentOptions -> m CSSMatrixComponent
+newCSSMatrixComponent matrix options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newCSSMatrixComponent (Types.toDOMMatrixReadOnly matrix) a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"matrix\"] = $2; })"
+        js_setMatrix :: CSSMatrixComponent -> DOMMatrix -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMatrixComponent/matrix MDN CSSMatrixComponent.matrix documentation>
+setMatrix :: (MonadDOM m) => CSSMatrixComponent -> DOMMatrix -> m ()
+setMatrix self val = liftDOM (void ((js_setMatrix (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"matrix\"]; })"
+        js_getMatrix :: CSSMatrixComponent -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMatrixComponent/matrix MDN CSSMatrixComponent.matrix documentation>
+getMatrix :: (MonadDOM m) => CSSMatrixComponent -> m DOMMatrix
+getMatrix self = liftDOM ((js_getMatrix (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMatrixComponentOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMatrixComponentOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMatrixComponentOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSMatrixComponentOptions
+       (js_newCSSMatrixComponentOptions, js_setIs2D, js_getIs2D, newCSSMatrixComponentOptions, setIs2D, getIs2D, getIs2DUnsafe, getIs2DUnchecked, CSSMatrixComponentOptions(..), gTypeCSSMatrixComponentOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCSSMatrixComponentOptions :: IO CSSMatrixComponentOptions
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dictdef-cssmatrixcomponentoptions CSSMatrixComponentOptions specification>
+newCSSMatrixComponentOptions :: (MonadDOM m) => m CSSMatrixComponentOptions
+newCSSMatrixComponentOptions = liftDOM ((js_newCSSMatrixComponentOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"is2D\"] = $2; })"
+        js_setIs2D :: CSSMatrixComponentOptions -> Bool -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssmatrixcomponentoptions-is2d CSSMatrixComponentOptions.is2D specification>
+setIs2D :: (MonadDOM m) => CSSMatrixComponentOptions -> Bool -> m ()
+setIs2D self val = liftDOM (void ((js_setIs2D (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"is2D\"]; })"
+        js_getIs2D :: CSSMatrixComponentOptions -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssmatrixcomponentoptions-is2d CSSMatrixComponentOptions.is2D specification>
+getIs2D :: (MonadDOM m) => CSSMatrixComponentOptions -> m (Maybe Bool)
+getIs2D self = liftDOM (((js_getIs2D (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssmatrixcomponentoptions-is2d CSSMatrixComponentOptions.is2D specification>
+getIs2DUnsafe :: (MonadDOM m, HasCallStack) => CSSMatrixComponentOptions -> m Bool
+getIs2DUnsafe self = liftDOM ((((js_getIs2D (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssmatrixcomponentoptions-is2d CSSMatrixComponentOptions.is2D specification>
+getIs2DUnchecked :: (MonadDOM m) => CSSMatrixComponentOptions -> m Bool
+getIs2DUnchecked self = liftDOM ((pFromJSVal <$> (js_getIs2D (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
@@ -1,73 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSMediaRule
-       (js_insertRule, insertRule, insertRule_, js_deleteRule, deleteRule,
-        js_getMedia, getMedia, js_getCssRules, getCssRules,
-        CSSMediaRule(..), gTypeCSSMediaRule)
+       (js_getMedia, getMedia, CSSMediaRule(..), gTypeCSSMediaRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
-        js_insertRule ::
-        CSSMediaRule -> Optional JSString -> Optional Word -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
-insertRule ::
-           (MonadIO m, ToJSString rule) =>
-             CSSMediaRule -> Maybe rule -> Maybe Word -> m Word
-insertRule self rule index
-  = liftIO
-      (js_insertRule self (toOptionalJSString rule)
-         (maybeToOptional index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
-insertRule_ ::
-            (MonadIO m, ToJSString rule) =>
-              CSSMediaRule -> Maybe rule -> Maybe Word -> m ()
-insertRule_ self rule index
-  = liftIO
-      (void
-         (js_insertRule self (toOptionalJSString rule)
-            (maybeToOptional index)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
-        js_deleteRule :: CSSMediaRule -> Optional Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.deleteRule Mozilla CSSMediaRule.deleteRule documentation> 
-deleteRule :: (MonadIO m) => CSSMediaRule -> Maybe Word -> m ()
-deleteRule self index
-  = liftIO (js_deleteRule self (maybeToOptional index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        CSSMediaRule -> IO MediaList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.media Mozilla CSSMediaRule.media documentation> 
-getMedia :: (MonadIO m) => CSSMediaRule -> m MediaList
-getMedia self = liftIO (js_getMedia self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
-        :: CSSMediaRule -> IO CSSRuleList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.cssRules Mozilla CSSMediaRule.cssRules documentation> 
-getCssRules :: (MonadIO m) => CSSMediaRule -> m CSSRuleList
-getCssRules self = liftIO (js_getCssRules self)
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: CSSMediaRule -> IO MediaList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMediaRule/media MDN CSSMediaRule.media documentation>
+getMedia :: (MonadDOM m) => CSSMediaRule -> m MediaList
+getMedia self = liftDOM ((js_getMedia (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
@@ -1,44 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule
-       (js_getNamespaceURI, getNamespaceURI, js_getPrefix, getPrefix,
-        CSSNamespaceRule(..), gTypeCSSNamespaceRule)
+       (js_getNamespaceURI, js_getPrefix, getNamespaceURI, getPrefix, CSSNamespaceRule(..), gTypeCSSNamespaceRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"namespaceURI\"]; })"
         js_getNamespaceURI :: CSSNamespaceRule -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule.namespaceURI Mozilla CSSNamespaceRule.namespaceURI documentation> 
-getNamespaceURI ::
-                (MonadIO m, FromJSString result) => CSSNamespaceRule -> m result
-getNamespaceURI self
-  = liftIO (fromJSString <$> (js_getNamespaceURI self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })" js_getPrefix ::
-        CSSNamespaceRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNamespaceRule/namespaceURI MDN CSSNamespaceRule.namespaceURI documentation>
+getNamespaceURI :: (MonadDOM m, FromJSString result) => CSSNamespaceRule -> m result
+getNamespaceURI self = liftDOM ((fromJSString <$> (js_getNamespaceURI (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule.prefix Mozilla CSSNamespaceRule.prefix documentation> 
-getPrefix ::
-          (MonadIO m, FromJSString result) => CSSNamespaceRule -> m result
-getPrefix self = liftIO (fromJSString <$> (js_getPrefix self))
+foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })"
+        js_getPrefix :: CSSNamespaceRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNamespaceRule/prefix MDN CSSNamespaceRule.prefix documentation>
+getPrefix :: (MonadDOM m, FromJSString result) => CSSNamespaceRule -> m result
+getPrefix self = liftDOM ((fromJSString <$> (js_getPrefix (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSNestedDeclarations.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSNestedDeclarations.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSNestedDeclarations.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-nesting-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSNestedDeclarations
+       (js_getStyle, getStyle, CSSNestedDeclarations(..), gTypeCSSNestedDeclarations)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: CSSNestedDeclarations -> IO CSSStyleProperties
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNestedDeclarations/style MDN CSSNestedDeclarations.style documentation>
+getStyle :: (MonadDOM m) => CSSNestedDeclarations -> m CSSStyleProperties
+getStyle self = liftDOM ((js_getStyle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSNumericArray.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSNumericArray.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSNumericArray.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSNumericArray
+       (js_getLength, getLength, CSSNumericArray(..), gTypeCSSNumericArray)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSNumericArray -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericArray/length MDN CSSNumericArray.length documentation>
+getLength :: (MonadDOM m) => CSSNumericArray -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSNumericType.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSNumericType.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSNumericType.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSNumericType
+       (js_newCSSNumericType, js_setLength, js_getLength, js_setAngle, js_getAngle, js_setTime, js_getTime, js_setFrequency, js_getFrequency, js_setResolution, js_getResolution, js_setFlex, js_getFlex, js_setPercent, js_getPercent, js_setPercentHint, js_getPercentHint, newCSSNumericType, setLength, getLength, getLengthUnsafe, getLengthUnchecked, setAngle, getAngle, getAngleUnsafe, getAngleUnchecked, setTime, getTime, getTimeUnsafe, getTimeUnchecked, setFrequency, getFrequency, getFrequencyUnsafe, getFrequencyUnchecked, setResolution, getResolution, getResolutionUnsafe, getResolutionUnchecked, setFlex, getFlex, getFlexUnsafe, getFlexUnchecked, setPercent, getPercent, getPercentUnsafe, getPercentUnchecked, setPercentHint, getPercentHint, getPercentHintUnsafe, getPercentHintUnchecked, CSSNumericType(..), gTypeCSSNumericType)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCSSNumericType :: IO CSSNumericType
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dictdef-cssnumerictype CSSNumericType specification>
+newCSSNumericType :: (MonadDOM m) => m CSSNumericType
+newCSSNumericType = liftDOM ((js_newCSSNumericType))
+
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })"
+        js_setLength :: CSSNumericType -> Int -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-length CSSNumericType.length specification>
+setLength :: (MonadDOM m) => CSSNumericType -> Int -> m ()
+setLength self val = liftDOM (void ((js_setLength (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-length CSSNumericType.length specification>
+getLength :: (MonadDOM m) => CSSNumericType -> m (Maybe Int)
+getLength self = liftDOM (((js_getLength (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-length CSSNumericType.length specification>
+getLengthUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m Int
+getLengthUnsafe self = liftDOM ((((js_getLength (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-length CSSNumericType.length specification>
+getLengthUnchecked :: (MonadDOM m) => CSSNumericType -> m Int
+getLengthUnchecked self = liftDOM ((pFromJSVal <$> (js_getLength (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"angle\"] = $2; })"
+        js_setAngle :: CSSNumericType -> Int -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-angle CSSNumericType.angle specification>
+setAngle :: (MonadDOM m) => CSSNumericType -> Int -> m ()
+setAngle self val = liftDOM (void ((js_setAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })"
+        js_getAngle :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-angle CSSNumericType.angle specification>
+getAngle :: (MonadDOM m) => CSSNumericType -> m (Maybe Int)
+getAngle self = liftDOM (((js_getAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-angle CSSNumericType.angle specification>
+getAngleUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m Int
+getAngleUnsafe self = liftDOM ((((js_getAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-angle CSSNumericType.angle specification>
+getAngleUnchecked :: (MonadDOM m) => CSSNumericType -> m Int
+getAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"time\"] = $2; })"
+        js_setTime :: CSSNumericType -> Int -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-time CSSNumericType.time specification>
+setTime :: (MonadDOM m) => CSSNumericType -> Int -> m ()
+setTime self val = liftDOM (void ((js_setTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"time\"]; })"
+        js_getTime :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-time CSSNumericType.time specification>
+getTime :: (MonadDOM m) => CSSNumericType -> m (Maybe Int)
+getTime self = liftDOM (((js_getTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-time CSSNumericType.time specification>
+getTimeUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m Int
+getTimeUnsafe self = liftDOM ((((js_getTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-time CSSNumericType.time specification>
+getTimeUnchecked :: (MonadDOM m) => CSSNumericType -> m Int
+getTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frequency\"] = $2; })"
+        js_setFrequency :: CSSNumericType -> Int -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-frequency CSSNumericType.frequency specification>
+setFrequency :: (MonadDOM m) => CSSNumericType -> Int -> m ()
+setFrequency self val = liftDOM (void ((js_setFrequency (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frequency\"]; })"
+        js_getFrequency :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-frequency CSSNumericType.frequency specification>
+getFrequency :: (MonadDOM m) => CSSNumericType -> m (Maybe Int)
+getFrequency self = liftDOM (((js_getFrequency (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-frequency CSSNumericType.frequency specification>
+getFrequencyUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m Int
+getFrequencyUnsafe self = liftDOM ((((js_getFrequency (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-frequency CSSNumericType.frequency specification>
+getFrequencyUnchecked :: (MonadDOM m) => CSSNumericType -> m Int
+getFrequencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrequency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resolution\"] = $2; })"
+        js_setResolution :: CSSNumericType -> Int -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-resolution CSSNumericType.resolution specification>
+setResolution :: (MonadDOM m) => CSSNumericType -> Int -> m ()
+setResolution self val = liftDOM (void ((js_setResolution (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resolution\"]; })"
+        js_getResolution :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-resolution CSSNumericType.resolution specification>
+getResolution :: (MonadDOM m) => CSSNumericType -> m (Maybe Int)
+getResolution self = liftDOM (((js_getResolution (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-resolution CSSNumericType.resolution specification>
+getResolutionUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m Int
+getResolutionUnsafe self = liftDOM ((((js_getResolution (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-resolution CSSNumericType.resolution specification>
+getResolutionUnchecked :: (MonadDOM m) => CSSNumericType -> m Int
+getResolutionUnchecked self = liftDOM ((pFromJSVal <$> (js_getResolution (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flex\"] = $2; })"
+        js_setFlex :: CSSNumericType -> Int -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-flex CSSNumericType.flex specification>
+setFlex :: (MonadDOM m) => CSSNumericType -> Int -> m ()
+setFlex self val = liftDOM (void ((js_setFlex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flex\"]; })"
+        js_getFlex :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-flex CSSNumericType.flex specification>
+getFlex :: (MonadDOM m) => CSSNumericType -> m (Maybe Int)
+getFlex self = liftDOM (((js_getFlex (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-flex CSSNumericType.flex specification>
+getFlexUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m Int
+getFlexUnsafe self = liftDOM ((((js_getFlex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-flex CSSNumericType.flex specification>
+getFlexUnchecked :: (MonadDOM m) => CSSNumericType -> m Int
+getFlexUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"percent\"] = $2; })"
+        js_setPercent :: CSSNumericType -> Int -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percent CSSNumericType.percent specification>
+setPercent :: (MonadDOM m) => CSSNumericType -> Int -> m ()
+setPercent self val = liftDOM (void ((js_setPercent (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"percent\"]; })"
+        js_getPercent :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percent CSSNumericType.percent specification>
+getPercent :: (MonadDOM m) => CSSNumericType -> m (Maybe Int)
+getPercent self = liftDOM (((js_getPercent (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percent CSSNumericType.percent specification>
+getPercentUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m Int
+getPercentUnsafe self = liftDOM ((((js_getPercent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percent CSSNumericType.percent specification>
+getPercentUnchecked :: (MonadDOM m) => CSSNumericType -> m Int
+getPercentUnchecked self = liftDOM ((pFromJSVal <$> (js_getPercent (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"percentHint\"] = $2; })"
+        js_setPercentHint :: CSSNumericType -> JSVal -> IO ()
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percenthint CSSNumericType.percentHint specification>
+setPercentHint :: (MonadDOM m) => CSSNumericType -> CSSNumericBaseType -> m ()
+setPercentHint self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPercentHint (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"percentHint\"]; })"
+        js_getPercentHint :: CSSNumericType -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percenthint CSSNumericType.percentHint specification>
+getPercentHint :: (MonadDOM m) => CSSNumericType -> m (Maybe CSSNumericBaseType)
+getPercentHint self = liftDOM (((js_getPercentHint (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percenthint CSSNumericType.percentHint specification>
+getPercentHintUnsafe :: (MonadDOM m, HasCallStack) => CSSNumericType -> m CSSNumericBaseType
+getPercentHintUnsafe self = liftDOM ((((js_getPercentHint (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dom-cssnumerictype-percenthint CSSNumericType.percentHint specification>
+getPercentHintUnchecked :: (MonadDOM m) => CSSNumericType -> m CSSNumericBaseType
+getPercentHintUnchecked self = liftDOM ((pFromJSVal <$> (js_getPercentHint (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSNumericValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSNumericValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSNumericValue.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSNumericValue
+       (js_add, js_div, js_equals, js_max, js_min, js_mul, js_sub, js_to, js_toSum, js_type', js_parse, add, add_, div, div_, equals, equals_, max, max_, min, min_, mul, mul_, sub, sub_, to, to_, toSum, toSum_, type', type'_, parse, parse_, CSSNumericValue(..), gTypeCSSNumericValue, IsCSSNumericValue, toCSSNumericValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"add\"](...$2); })"
+        js_add :: CSSNumericValue -> JSVal -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/add MDN CSSNumericValue.add documentation>
+add :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m CSSNumericValue
+add self values = liftDOM (((toJSVal values) >>= \a2' -> js_add ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/add MDN CSSNumericValue.add documentation>
+add_ :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m ()
+add_ self values = liftDOM (void (((toJSVal values) >>= \a2' -> js_add ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"div\"](...$2); })"
+        js_div :: CSSNumericValue -> JSVal -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/div MDN CSSNumericValue.div documentation>
+div :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m CSSNumericValue
+div self values = liftDOM (((toJSVal values) >>= \a2' -> js_div ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/div MDN CSSNumericValue.div documentation>
+div_ :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m ()
+div_ self values = liftDOM (void (((toJSVal values) >>= \a2' -> js_div ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"equals\"](...$2); })"
+        js_equals :: CSSNumericValue -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/equals MDN CSSNumericValue.equals documentation>
+equals :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish value) => self -> [value] -> m Bool
+equals self value = liftDOM (((toJSVal value) >>= \a2' -> js_equals ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/equals MDN CSSNumericValue.equals documentation>
+equals_ :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish value) => self -> [value] -> m ()
+equals_ self value = liftDOM (void (((toJSVal value) >>= \a2' -> js_equals ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"max\"](...$2); })"
+        js_max :: CSSNumericValue -> JSVal -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/max MDN CSSNumericValue.max documentation>
+max :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m CSSNumericValue
+max self values = liftDOM (((toJSVal values) >>= \a2' -> js_max ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/max MDN CSSNumericValue.max documentation>
+max_ :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m ()
+max_ self values = liftDOM (void (((toJSVal values) >>= \a2' -> js_max ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"min\"](...$2); })"
+        js_min :: CSSNumericValue -> JSVal -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/min MDN CSSNumericValue.min documentation>
+min :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m CSSNumericValue
+min self values = liftDOM (((toJSVal values) >>= \a2' -> js_min ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/min MDN CSSNumericValue.min documentation>
+min_ :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m ()
+min_ self values = liftDOM (void (((toJSVal values) >>= \a2' -> js_min ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"mul\"](...$2); })"
+        js_mul :: CSSNumericValue -> JSVal -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/mul MDN CSSNumericValue.mul documentation>
+mul :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m CSSNumericValue
+mul self values = liftDOM (((toJSVal values) >>= \a2' -> js_mul ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/mul MDN CSSNumericValue.mul documentation>
+mul_ :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m ()
+mul_ self values = liftDOM (void (((toJSVal values) >>= \a2' -> js_mul ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"sub\"](...$2); })"
+        js_sub :: CSSNumericValue -> JSVal -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/sub MDN CSSNumericValue.sub documentation>
+sub :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m CSSNumericValue
+sub self values = liftDOM (((toJSVal values) >>= \a2' -> js_sub ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/sub MDN CSSNumericValue.sub documentation>
+sub_ :: (MonadDOM m, IsCSSNumericValue self, IsCSSNumberish values) => self -> [values] -> m ()
+sub_ self values = liftDOM (void (((toJSVal values) >>= \a2' -> js_sub ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"to\"]($2); })"
+        js_to :: CSSNumericValue -> JSString -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/to MDN CSSNumericValue.to documentation>
+to :: (MonadDOM m, IsCSSNumericValue self, ToJSString unit) => self -> unit -> m CSSUnitValue
+to self unit = liftDOM ((js_to ((Types.toCSSNumericValue self)) (toJSString unit)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/to MDN CSSNumericValue.to documentation>
+to_ :: (MonadDOM m, IsCSSNumericValue self, ToJSString unit) => self -> unit -> m ()
+to_ self unit = liftDOM (void ((js_to ((Types.toCSSNumericValue self)) (toJSString unit))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"toSum\"](...$2); })"
+        js_toSum :: CSSNumericValue -> JSVal -> IO CSSMathSum
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/toSum MDN CSSNumericValue.toSum documentation>
+toSum :: (MonadDOM m, IsCSSNumericValue self, ToJSString units) => self -> [units] -> m CSSMathSum
+toSum self units = liftDOM (((toJSVal units) >>= \a2' -> js_toSum ((Types.toCSSNumericValue self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/toSum MDN CSSNumericValue.toSum documentation>
+toSum_ :: (MonadDOM m, IsCSSNumericValue self, ToJSString units) => self -> [units] -> m ()
+toSum_ self units = liftDOM (void (((toJSVal units) >>= \a2' -> js_toSum ((Types.toCSSNumericValue self)) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"type\"](); })"
+        js_type' :: CSSNumericValue -> IO CSSNumericType
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/type MDN CSSNumericValue.type documentation>
+type' :: (MonadDOM m, IsCSSNumericValue self) => self -> m CSSNumericType
+type' self = liftDOM ((js_type' ((Types.toCSSNumericValue self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/type MDN CSSNumericValue.type documentation>
+type'_ :: (MonadDOM m, IsCSSNumericValue self) => self -> m ()
+type'_ self = liftDOM (void ((js_type' ((Types.toCSSNumericValue self)))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"CSSNumericValue\"][\"parse\"]($1); })"
+        js_parse :: JSString -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/parse_static MDN CSSNumericValue.parse documentation>
+parse :: (MonadDOM m, ToJSString cssText) => cssText -> m CSSNumericValue
+parse cssText = liftDOM ((js_parse (toJSString cssText)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/parse_static MDN CSSNumericValue.parse documentation>
+parse_ :: (MonadDOM m, ToJSString cssText) => cssText -> m ()
+parse_ cssText = liftDOM (void ((js_parse (toJSString cssText))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPageDescriptors.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPageDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPageDescriptors.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSPageDescriptors
+       (js_setMargin, js_getMargin, js_setMarginTop, js_getMarginTop, js_setMarginRight, js_getMarginRight, js_setMarginBottom, js_getMarginBottom, js_setMarginLeft, js_getMarginLeft, js_setSize, js_getSize, setMargin, getMargin, setMarginTop, getMarginTop, setMarginRight, getMarginRight, setMarginBottom, getMarginBottom, setMarginLeft, getMarginLeft, setSize, getSize, CSSPageDescriptors(..), gTypeCSSPageDescriptors)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"margin\"] = $2; })"
+        js_setMargin :: CSSPageDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#margin MDN CSSPageDescriptors.margin documentation>
+setMargin :: (MonadDOM m, ToJSString val) => CSSPageDescriptors -> val -> m ()
+setMargin self val = liftDOM (void ((js_setMargin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"margin\"]; })"
+        js_getMargin :: CSSPageDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#margin MDN CSSPageDescriptors.margin documentation>
+getMargin :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMargin self = liftDOM ((fromJSString <$> (js_getMargin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginTop\"] = $2; })"
+        js_setMarginTop :: CSSPageDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#margintop MDN CSSPageDescriptors.marginTop documentation>
+setMarginTop :: (MonadDOM m, ToJSString val) => CSSPageDescriptors -> val -> m ()
+setMarginTop self val = liftDOM (void ((js_setMarginTop (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginTop\"]; })"
+        js_getMarginTop :: CSSPageDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#margintop MDN CSSPageDescriptors.marginTop documentation>
+getMarginTop :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginTop self = liftDOM ((fromJSString <$> (js_getMarginTop (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginRight\"] = $2; })"
+        js_setMarginRight :: CSSPageDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginright MDN CSSPageDescriptors.marginRight documentation>
+setMarginRight :: (MonadDOM m, ToJSString val) => CSSPageDescriptors -> val -> m ()
+setMarginRight self val = liftDOM (void ((js_setMarginRight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginRight\"]; })"
+        js_getMarginRight :: CSSPageDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginright MDN CSSPageDescriptors.marginRight documentation>
+getMarginRight :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginRight self = liftDOM ((fromJSString <$> (js_getMarginRight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginBottom\"] = $2; })"
+        js_setMarginBottom :: CSSPageDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginbottom MDN CSSPageDescriptors.marginBottom documentation>
+setMarginBottom :: (MonadDOM m, ToJSString val) => CSSPageDescriptors -> val -> m ()
+setMarginBottom self val = liftDOM (void ((js_setMarginBottom (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginBottom\"]; })"
+        js_getMarginBottom :: CSSPageDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginbottom MDN CSSPageDescriptors.marginBottom documentation>
+getMarginBottom :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginBottom self = liftDOM ((fromJSString <$> (js_getMarginBottom (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginLeft\"] = $2; })"
+        js_setMarginLeft :: CSSPageDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginleft MDN CSSPageDescriptors.marginLeft documentation>
+setMarginLeft :: (MonadDOM m, ToJSString val) => CSSPageDescriptors -> val -> m ()
+setMarginLeft self val = liftDOM (void ((js_setMarginLeft (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginLeft\"]; })"
+        js_getMarginLeft :: CSSPageDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginleft MDN CSSPageDescriptors.marginLeft documentation>
+getMarginLeft :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginLeft self = liftDOM ((fromJSString <$> (js_getMarginLeft (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: CSSPageDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#size MDN CSSPageDescriptors.size documentation>
+setSize :: (MonadDOM m, ToJSString val) => CSSPageDescriptors -> val -> m ()
+setSize self val = liftDOM (void ((js_setSize (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: CSSPageDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#size MDN CSSPageDescriptors.size documentation>
+getSize :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getSize self = liftDOM ((fromJSString <$> (js_getSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
@@ -1,69 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSPageRule
-       (js_setSelectorText, setSelectorText, js_getSelectorText,
-        getSelectorText, getSelectorTextUnsafe, getSelectorTextUnchecked,
-        js_getStyle, getStyle, CSSPageRule(..), gTypeCSSPageRule)
+       (js_setSelectorText, js_getSelectorText, js_getStyle, setSelectorText, getSelectorText, getStyle, CSSPageRule(..), gTypeCSSPageRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selectorText\"] = $2; })"
-        js_setSelectorText :: CSSPageRule -> Optional JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-setSelectorText ::
-                (MonadIO m, ToJSString val) => CSSPageRule -> Maybe val -> m ()
-setSelectorText self val
-  = liftIO (js_setSelectorText self (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"selectorText\"]; })"
-        js_getSelectorText :: CSSPageRule -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-getSelectorText ::
-                (MonadIO m, FromJSString result) => CSSPageRule -> m (Maybe result)
-getSelectorText self
-  = liftIO (fromMaybeJSString <$> (js_getSelectorText self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-getSelectorTextUnsafe ::
-                      (MonadIO m, HasCallStack, FromJSString result) =>
-                        CSSPageRule -> m result
-getSelectorTextUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getSelectorText self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { $1[\"selectorText\"] = $2; })"
+        js_setSelectorText :: CSSPageRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageRule/selectorText MDN CSSPageRule.selectorText documentation>
+setSelectorText :: (MonadDOM m, ToJSString val) => CSSPageRule -> val -> m ()
+setSelectorText self val = liftDOM (void ((js_setSelectorText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-getSelectorTextUnchecked ::
-                         (MonadIO m, FromJSString result) => CSSPageRule -> m result
-getSelectorTextUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getSelectorText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
-        CSSPageRule -> IO CSSStyleDeclaration
+foreign import javascript unsafe "(($1) => { return $1[\"selectorText\"]; })"
+        js_getSelectorText :: CSSPageRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageRule/selectorText MDN CSSPageRule.selectorText documentation>
+getSelectorText :: (MonadDOM m, FromJSString result) => CSSPageRule -> m result
+getSelectorText self = liftDOM ((fromJSString <$> (js_getSelectorText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.style Mozilla CSSPageRule.style documentation> 
-getStyle :: (MonadIO m) => CSSPageRule -> m CSSStyleDeclaration
-getStyle self = liftIO (js_getStyle self)
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: CSSPageRule -> IO CSSPageDescriptors
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageRule/style MDN CSSPageRule.style documentation>
+getStyle :: (MonadDOM m) => CSSPageRule -> m CSSPageDescriptors
+getStyle self = liftDOM ((js_getStyle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPerspective.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPerspective.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPerspective.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSPerspective
+       (js_newCSSPerspective, js_setLength, js_getLength, newCSSPerspective, setLength, getLength, CSSPerspective(..), gTypeCSSPerspective)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSPerspective\"]($1); })"
+        js_newCSSPerspective :: CSSPerspectiveValue -> IO CSSPerspective
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPerspective/CSSPerspective MDN CSSPerspective. documentation>
+newCSSPerspective :: (MonadDOM m, IsCSSPerspectiveValue length) => length -> m CSSPerspective
+newCSSPerspective length = liftDOM ((js_newCSSPerspective (Types.toCSSPerspectiveValue length)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })"
+        js_setLength :: CSSPerspective -> CSSPerspectiveValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPerspective/length MDN CSSPerspective.length documentation>
+setLength :: (MonadDOM m, IsCSSPerspectiveValue val) => CSSPerspective -> val -> m ()
+setLength self val = liftDOM (void ((js_setLength (self) (Types.toCSSPerspectiveValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSPerspective -> IO CSSPerspectiveValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPerspective/length MDN CSSPerspective.length documentation>
+getLength :: (MonadDOM m) => CSSPerspective -> m CSSPerspectiveValue
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPositionTryDescriptors.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPositionTryDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPositionTryDescriptors.hs
@@ -0,0 +1,485 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-anchor-position-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSPositionTryDescriptors
+       (js_setMargin, js_getMargin, js_setMarginTop, js_getMarginTop, js_setMarginRight, js_getMarginRight, js_setMarginBottom, js_getMarginBottom, js_setMarginLeft, js_getMarginLeft, js_setMarginBlock, js_getMarginBlock, js_setMarginBlockStart, js_getMarginBlockStart, js_setMarginBlockEnd, js_getMarginBlockEnd, js_setMarginInline, js_getMarginInline, js_setMarginInlineStart, js_getMarginInlineStart, js_setMarginInlineEnd, js_getMarginInlineEnd, js_setInset, js_getInset, js_setInsetBlock, js_getInsetBlock, js_setInsetBlockStart, js_getInsetBlockStart, js_setInsetBlockEnd, js_getInsetBlockEnd, js_setInsetInline, js_getInsetInline, js_setInsetInlineStart, js_getInsetInlineStart, js_setInsetInlineEnd, js_getInsetInlineEnd, js_setTop, js_getTop, js_setLeft, js_getLeft, js_setRight, js_getRight, js_setBottom, js_getBottom, js_setWidth, js_getWidth, js_setMinWidth, js_getMinWidth, js_setMaxWidth, js_getMaxWidth, js_setHeight, js_getHeight, js_setMinHeight, js_getMinHeight, js_setMaxHeight, js_getMaxHeight, js_setBlockSize, js_getBlockSize, js_setMinBlockSize, js_getMinBlockSize, js_setMaxBlockSize, js_getMaxBlockSize, js_setInlineSize, js_getInlineSize, js_setMinInlineSize, js_getMinInlineSize, js_setMaxInlineSize, js_getMaxInlineSize, js_setPlaceSelf, js_getPlaceSelf, js_setAlignSelf, js_getAlignSelf, js_setJustifySelf, js_getJustifySelf, js_setPositionAnchor, js_getPositionAnchor, js_setPositionArea, js_getPositionArea, setMargin, getMargin, setMarginTop, getMarginTop, setMarginRight, getMarginRight, setMarginBottom, getMarginBottom, setMarginLeft, getMarginLeft, setMarginBlock, getMarginBlock, setMarginBlockStart, getMarginBlockStart, setMarginBlockEnd, getMarginBlockEnd, setMarginInline, getMarginInline, setMarginInlineStart, getMarginInlineStart, setMarginInlineEnd, getMarginInlineEnd, setInset, getInset, setInsetBlock, getInsetBlock, setInsetBlockStart, getInsetBlockStart, setInsetBlockEnd, getInsetBlockEnd, setInsetInline, getInsetInline, setInsetInlineStart, getInsetInlineStart, setInsetInlineEnd, getInsetInlineEnd, setTop, getTop, setLeft, getLeft, setRight, getRight, setBottom, getBottom, setWidth, getWidth, setMinWidth, getMinWidth, setMaxWidth, getMaxWidth, setHeight, getHeight, setMinHeight, getMinHeight, setMaxHeight, getMaxHeight, setBlockSize, getBlockSize, setMinBlockSize, getMinBlockSize, setMaxBlockSize, getMaxBlockSize, setInlineSize, getInlineSize, setMinInlineSize, getMinInlineSize, setMaxInlineSize, getMaxInlineSize, setPlaceSelf, getPlaceSelf, setAlignSelf, getAlignSelf, setJustifySelf, getJustifySelf, setPositionAnchor, getPositionAnchor, setPositionArea, getPositionArea, CSSPositionTryDescriptors(..), gTypeCSSPositionTryDescriptors)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"margin\"] = $2; })"
+        js_setMargin :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.margin documentation>
+setMargin :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMargin self val = liftDOM (void ((js_setMargin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"margin\"]; })"
+        js_getMargin :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.margin documentation>
+getMargin :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMargin self = liftDOM ((fromJSString <$> (js_getMargin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginTop\"] = $2; })"
+        js_setMarginTop :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginTop documentation>
+setMarginTop :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginTop self val = liftDOM (void ((js_setMarginTop (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginTop\"]; })"
+        js_getMarginTop :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginTop documentation>
+getMarginTop :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginTop self = liftDOM ((fromJSString <$> (js_getMarginTop (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginRight\"] = $2; })"
+        js_setMarginRight :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginRight documentation>
+setMarginRight :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginRight self val = liftDOM (void ((js_setMarginRight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginRight\"]; })"
+        js_getMarginRight :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginRight documentation>
+getMarginRight :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginRight self = liftDOM ((fromJSString <$> (js_getMarginRight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginBottom\"] = $2; })"
+        js_setMarginBottom :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBottom documentation>
+setMarginBottom :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginBottom self val = liftDOM (void ((js_setMarginBottom (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginBottom\"]; })"
+        js_getMarginBottom :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBottom documentation>
+getMarginBottom :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginBottom self = liftDOM ((fromJSString <$> (js_getMarginBottom (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginLeft\"] = $2; })"
+        js_setMarginLeft :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginLeft documentation>
+setMarginLeft :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginLeft self val = liftDOM (void ((js_setMarginLeft (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginLeft\"]; })"
+        js_getMarginLeft :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginLeft documentation>
+getMarginLeft :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginLeft self = liftDOM ((fromJSString <$> (js_getMarginLeft (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginBlock\"] = $2; })"
+        js_setMarginBlock :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBlock documentation>
+setMarginBlock :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginBlock self val = liftDOM (void ((js_setMarginBlock (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginBlock\"]; })"
+        js_getMarginBlock :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBlock documentation>
+getMarginBlock :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginBlock self = liftDOM ((fromJSString <$> (js_getMarginBlock (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginBlockStart\"] = $2; })"
+        js_setMarginBlockStart :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBlockStart documentation>
+setMarginBlockStart :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginBlockStart self val = liftDOM (void ((js_setMarginBlockStart (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginBlockStart\"]; })"
+        js_getMarginBlockStart :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBlockStart documentation>
+getMarginBlockStart :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginBlockStart self = liftDOM ((fromJSString <$> (js_getMarginBlockStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginBlockEnd\"] = $2; })"
+        js_setMarginBlockEnd :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBlockEnd documentation>
+setMarginBlockEnd :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginBlockEnd self val = liftDOM (void ((js_setMarginBlockEnd (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginBlockEnd\"]; })"
+        js_getMarginBlockEnd :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginBlockEnd documentation>
+getMarginBlockEnd :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginBlockEnd self = liftDOM ((fromJSString <$> (js_getMarginBlockEnd (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginInline\"] = $2; })"
+        js_setMarginInline :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginInline documentation>
+setMarginInline :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginInline self val = liftDOM (void ((js_setMarginInline (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginInline\"]; })"
+        js_getMarginInline :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginInline documentation>
+getMarginInline :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginInline self = liftDOM ((fromJSString <$> (js_getMarginInline (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginInlineStart\"] = $2; })"
+        js_setMarginInlineStart :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginInlineStart documentation>
+setMarginInlineStart :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginInlineStart self val = liftDOM (void ((js_setMarginInlineStart (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginInlineStart\"]; })"
+        js_getMarginInlineStart :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginInlineStart documentation>
+getMarginInlineStart :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginInlineStart self = liftDOM ((fromJSString <$> (js_getMarginInlineStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginInlineEnd\"] = $2; })"
+        js_setMarginInlineEnd :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginInlineEnd documentation>
+setMarginInlineEnd :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMarginInlineEnd self val = liftDOM (void ((js_setMarginInlineEnd (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"marginInlineEnd\"]; })"
+        js_getMarginInlineEnd :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.marginInlineEnd documentation>
+getMarginInlineEnd :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMarginInlineEnd self = liftDOM ((fromJSString <$> (js_getMarginInlineEnd (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inset\"] = $2; })"
+        js_setInset :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.inset documentation>
+setInset :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInset self val = liftDOM (void ((js_setInset (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inset\"]; })"
+        js_getInset :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.inset documentation>
+getInset :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInset self = liftDOM ((fromJSString <$> (js_getInset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"insetBlock\"] = $2; })"
+        js_setInsetBlock :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetBlock documentation>
+setInsetBlock :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInsetBlock self val = liftDOM (void ((js_setInsetBlock (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"insetBlock\"]; })"
+        js_getInsetBlock :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetBlock documentation>
+getInsetBlock :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInsetBlock self = liftDOM ((fromJSString <$> (js_getInsetBlock (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"insetBlockStart\"] = $2; })"
+        js_setInsetBlockStart :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetBlockStart documentation>
+setInsetBlockStart :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInsetBlockStart self val = liftDOM (void ((js_setInsetBlockStart (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"insetBlockStart\"]; })"
+        js_getInsetBlockStart :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetBlockStart documentation>
+getInsetBlockStart :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInsetBlockStart self = liftDOM ((fromJSString <$> (js_getInsetBlockStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"insetBlockEnd\"] = $2; })"
+        js_setInsetBlockEnd :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetBlockEnd documentation>
+setInsetBlockEnd :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInsetBlockEnd self val = liftDOM (void ((js_setInsetBlockEnd (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"insetBlockEnd\"]; })"
+        js_getInsetBlockEnd :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetBlockEnd documentation>
+getInsetBlockEnd :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInsetBlockEnd self = liftDOM ((fromJSString <$> (js_getInsetBlockEnd (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"insetInline\"] = $2; })"
+        js_setInsetInline :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetInline documentation>
+setInsetInline :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInsetInline self val = liftDOM (void ((js_setInsetInline (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"insetInline\"]; })"
+        js_getInsetInline :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetInline documentation>
+getInsetInline :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInsetInline self = liftDOM ((fromJSString <$> (js_getInsetInline (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"insetInlineStart\"] = $2; })"
+        js_setInsetInlineStart :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetInlineStart documentation>
+setInsetInlineStart :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInsetInlineStart self val = liftDOM (void ((js_setInsetInlineStart (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"insetInlineStart\"]; })"
+        js_getInsetInlineStart :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetInlineStart documentation>
+getInsetInlineStart :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInsetInlineStart self = liftDOM ((fromJSString <$> (js_getInsetInlineStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"insetInlineEnd\"] = $2; })"
+        js_setInsetInlineEnd :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetInlineEnd documentation>
+setInsetInlineEnd :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInsetInlineEnd self val = liftDOM (void ((js_setInsetInlineEnd (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"insetInlineEnd\"]; })"
+        js_getInsetInlineEnd :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.insetInlineEnd documentation>
+getInsetInlineEnd :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInsetInlineEnd self = liftDOM ((fromJSString <$> (js_getInsetInlineEnd (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"top\"] = $2; })"
+        js_setTop :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.top documentation>
+setTop :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setTop self val = liftDOM (void ((js_setTop (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })"
+        js_getTop :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.top documentation>
+getTop :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getTop self = liftDOM ((fromJSString <$> (js_getTop (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"left\"] = $2; })"
+        js_setLeft :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.left documentation>
+setLeft :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setLeft self val = liftDOM (void ((js_setLeft (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"left\"]; })"
+        js_getLeft :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.left documentation>
+getLeft :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getLeft self = liftDOM ((fromJSString <$> (js_getLeft (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"right\"] = $2; })"
+        js_setRight :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.right documentation>
+setRight :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setRight self val = liftDOM (void ((js_setRight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"right\"]; })"
+        js_getRight :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.right documentation>
+getRight :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getRight self = liftDOM ((fromJSString <$> (js_getRight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bottom\"] = $2; })"
+        js_setBottom :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.bottom documentation>
+setBottom :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setBottom self val = liftDOM (void ((js_setBottom (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bottom\"]; })"
+        js_getBottom :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.bottom documentation>
+getBottom :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getBottom self = liftDOM ((fromJSString <$> (js_getBottom (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.width documentation>
+setWidth :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minWidth\"] = $2; })"
+        js_setMinWidth :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minWidth documentation>
+setMinWidth :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMinWidth self val = liftDOM (void ((js_setMinWidth (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minWidth\"]; })"
+        js_getMinWidth :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minWidth documentation>
+getMinWidth :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMinWidth self = liftDOM ((fromJSString <$> (js_getMinWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxWidth\"] = $2; })"
+        js_setMaxWidth :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxWidth documentation>
+setMaxWidth :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMaxWidth self val = liftDOM (void ((js_setMaxWidth (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxWidth\"]; })"
+        js_getMaxWidth :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxWidth documentation>
+getMaxWidth :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMaxWidth self = liftDOM ((fromJSString <$> (js_getMaxWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.height documentation>
+setHeight :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.height documentation>
+getHeight :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getHeight self = liftDOM ((fromJSString <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minHeight\"] = $2; })"
+        js_setMinHeight :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minHeight documentation>
+setMinHeight :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMinHeight self val = liftDOM (void ((js_setMinHeight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minHeight\"]; })"
+        js_getMinHeight :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minHeight documentation>
+getMinHeight :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMinHeight self = liftDOM ((fromJSString <$> (js_getMinHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxHeight\"] = $2; })"
+        js_setMaxHeight :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxHeight documentation>
+setMaxHeight :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMaxHeight self val = liftDOM (void ((js_setMaxHeight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxHeight\"]; })"
+        js_getMaxHeight :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxHeight documentation>
+getMaxHeight :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMaxHeight self = liftDOM ((fromJSString <$> (js_getMaxHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"blockSize\"] = $2; })"
+        js_setBlockSize :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.blockSize documentation>
+setBlockSize :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setBlockSize self val = liftDOM (void ((js_setBlockSize (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"blockSize\"]; })"
+        js_getBlockSize :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.blockSize documentation>
+getBlockSize :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getBlockSize self = liftDOM ((fromJSString <$> (js_getBlockSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minBlockSize\"] = $2; })"
+        js_setMinBlockSize :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minBlockSize documentation>
+setMinBlockSize :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMinBlockSize self val = liftDOM (void ((js_setMinBlockSize (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minBlockSize\"]; })"
+        js_getMinBlockSize :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minBlockSize documentation>
+getMinBlockSize :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMinBlockSize self = liftDOM ((fromJSString <$> (js_getMinBlockSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxBlockSize\"] = $2; })"
+        js_setMaxBlockSize :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxBlockSize documentation>
+setMaxBlockSize :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMaxBlockSize self val = liftDOM (void ((js_setMaxBlockSize (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxBlockSize\"]; })"
+        js_getMaxBlockSize :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxBlockSize documentation>
+getMaxBlockSize :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMaxBlockSize self = liftDOM ((fromJSString <$> (js_getMaxBlockSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inlineSize\"] = $2; })"
+        js_setInlineSize :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.inlineSize documentation>
+setInlineSize :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setInlineSize self val = liftDOM (void ((js_setInlineSize (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inlineSize\"]; })"
+        js_getInlineSize :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.inlineSize documentation>
+getInlineSize :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getInlineSize self = liftDOM ((fromJSString <$> (js_getInlineSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minInlineSize\"] = $2; })"
+        js_setMinInlineSize :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minInlineSize documentation>
+setMinInlineSize :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMinInlineSize self val = liftDOM (void ((js_setMinInlineSize (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minInlineSize\"]; })"
+        js_getMinInlineSize :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.minInlineSize documentation>
+getMinInlineSize :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMinInlineSize self = liftDOM ((fromJSString <$> (js_getMinInlineSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxInlineSize\"] = $2; })"
+        js_setMaxInlineSize :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxInlineSize documentation>
+setMaxInlineSize :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setMaxInlineSize self val = liftDOM (void ((js_setMaxInlineSize (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxInlineSize\"]; })"
+        js_getMaxInlineSize :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.maxInlineSize documentation>
+getMaxInlineSize :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getMaxInlineSize self = liftDOM ((fromJSString <$> (js_getMaxInlineSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"placeSelf\"] = $2; })"
+        js_setPlaceSelf :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.placeSelf documentation>
+setPlaceSelf :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setPlaceSelf self val = liftDOM (void ((js_setPlaceSelf (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"placeSelf\"]; })"
+        js_getPlaceSelf :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.placeSelf documentation>
+getPlaceSelf :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getPlaceSelf self = liftDOM ((fromJSString <$> (js_getPlaceSelf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alignSelf\"] = $2; })"
+        js_setAlignSelf :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.alignSelf documentation>
+setAlignSelf :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setAlignSelf self val = liftDOM (void ((js_setAlignSelf (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alignSelf\"]; })"
+        js_getAlignSelf :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.alignSelf documentation>
+getAlignSelf :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getAlignSelf self = liftDOM ((fromJSString <$> (js_getAlignSelf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"justifySelf\"] = $2; })"
+        js_setJustifySelf :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.justifySelf documentation>
+setJustifySelf :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setJustifySelf self val = liftDOM (void ((js_setJustifySelf (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"justifySelf\"]; })"
+        js_getJustifySelf :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.justifySelf documentation>
+getJustifySelf :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getJustifySelf self = liftDOM ((fromJSString <$> (js_getJustifySelf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"positionAnchor\"] = $2; })"
+        js_setPositionAnchor :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.positionAnchor documentation>
+setPositionAnchor :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setPositionAnchor self val = liftDOM (void ((js_setPositionAnchor (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"positionAnchor\"]; })"
+        js_getPositionAnchor :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.positionAnchor documentation>
+getPositionAnchor :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getPositionAnchor self = liftDOM ((fromJSString <$> (js_getPositionAnchor (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"positionArea\"] = $2; })"
+        js_setPositionArea :: CSSPositionTryDescriptors -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.positionArea documentation>
+setPositionArea :: (MonadDOM m, ToJSString val) => CSSPositionTryDescriptors -> val -> m ()
+setPositionArea self val = liftDOM (void ((js_setPositionArea (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"positionArea\"]; })"
+        js_getPositionArea :: CSSPositionTryDescriptors -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryDescriptors#instance_properties MDN CSSPositionTryDescriptors.positionArea documentation>
+getPositionArea :: (MonadDOM m, FromJSString result) => CSSPositionTryDescriptors -> m result
+getPositionArea self = liftDOM ((fromJSString <$> (js_getPositionArea (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPositionTryRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPositionTryRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPositionTryRule.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-anchor-position-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSPositionTryRule
+       (js_getName, js_getStyle, getName, getStyle, CSSPositionTryRule(..), gTypeCSSPositionTryRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CSSPositionTryRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryRule/name MDN CSSPositionTryRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSPositionTryRule -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: CSSPositionTryRule -> IO CSSPositionTryDescriptors
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryRule/style MDN CSSPositionTryRule.style documentation>
+getStyle :: (MonadDOM m) => CSSPositionTryRule -> m CSSPositionTryDescriptors
+getStyle self = liftDOM ((js_getStyle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs
+++ /dev/null
@@ -1,165 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue
-       (js_setFloatValue, setFloatValue, js_getFloatValue, getFloatValue,
-        getFloatValue_, js_setStringValue, setStringValue,
-        js_getStringValue, getStringValue, getStringValue_,
-        js_getCounterValue, getCounterValue, getCounterValue_,
-        js_getRectValue, getRectValue, getRectValue_, js_getRGBColorValue,
-        getRGBColorValue, getRGBColorValue_, pattern CSS_UNKNOWN,
-        pattern CSS_NUMBER, pattern CSS_PERCENTAGE, pattern CSS_EMS,
-        pattern CSS_EXS, pattern CSS_PX, pattern CSS_CM, pattern CSS_MM,
-        pattern CSS_IN, pattern CSS_PT, pattern CSS_PC, pattern CSS_DEG,
-        pattern CSS_RAD, pattern CSS_GRAD, pattern CSS_MS, pattern CSS_S,
-        pattern CSS_HZ, pattern CSS_KHZ, pattern CSS_DIMENSION,
-        pattern CSS_STRING, pattern CSS_URI, pattern CSS_IDENT,
-        pattern CSS_ATTR, pattern CSS_COUNTER, pattern CSS_RECT,
-        pattern CSS_RGBCOLOR, pattern CSS_VW, pattern CSS_VH,
-        pattern CSS_VMIN, pattern CSS_VMAX, js_getPrimitiveType,
-        getPrimitiveType, CSSPrimitiveValue(..), gTypeCSSPrimitiveValue)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setFloatValue\"]($2, $3); })"
-        js_setFloatValue ::
-        CSSPrimitiveValue -> Optional Word -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setFloatValue Mozilla CSSPrimitiveValue.setFloatValue documentation> 
-setFloatValue ::
-              (MonadIO m) =>
-                CSSPrimitiveValue -> Maybe Word -> Maybe Float -> m ()
-setFloatValue self unitType floatValue
-  = liftIO
-      (js_setFloatValue self (maybeToOptional unitType)
-         (maybeToOptional floatValue))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getFloatValue\"]($2); })"
-        js_getFloatValue :: CSSPrimitiveValue -> Optional Word -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
-getFloatValue ::
-              (MonadIO m) => CSSPrimitiveValue -> Maybe Word -> m Float
-getFloatValue self unitType
-  = liftIO (js_getFloatValue self (maybeToOptional unitType))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
-getFloatValue_ ::
-               (MonadIO m) => CSSPrimitiveValue -> Maybe Word -> m ()
-getFloatValue_ self unitType
-  = liftIO (void (js_getFloatValue self (maybeToOptional unitType)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setStringValue\"]($2, $3); })"
-        js_setStringValue ::
-        CSSPrimitiveValue -> Optional Word -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setStringValue Mozilla CSSPrimitiveValue.setStringValue documentation> 
-setStringValue ::
-               (MonadIO m, ToJSString stringValue) =>
-                 CSSPrimitiveValue -> Maybe Word -> Maybe stringValue -> m ()
-setStringValue self stringType stringValue
-  = liftIO
-      (js_setStringValue self (maybeToOptional stringType)
-         (toOptionalJSString stringValue))
- 
-foreign import javascript safe "(($1) => { return $1[\"getStringValue\"](); })"
-        js_getStringValue :: CSSPrimitiveValue -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
-getStringValue ::
-               (MonadIO m, FromJSString result) => CSSPrimitiveValue -> m result
-getStringValue self
-  = liftIO (fromJSString <$> (js_getStringValue self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
-getStringValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
-getStringValue_ self = liftIO (void (js_getStringValue self))
- 
-foreign import javascript safe "(($1) => { return $1[\"getCounterValue\"](); })"
-        js_getCounterValue :: CSSPrimitiveValue -> IO Counter
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
-getCounterValue :: (MonadIO m) => CSSPrimitiveValue -> m Counter
-getCounterValue self = liftIO (js_getCounterValue self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
-getCounterValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
-getCounterValue_ self = liftIO (void (js_getCounterValue self))
- 
-foreign import javascript safe "(($1) => { return $1[\"getRectValue\"](); })"
-        js_getRectValue :: CSSPrimitiveValue -> IO Rect
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
-getRectValue :: (MonadIO m) => CSSPrimitiveValue -> m Rect
-getRectValue self = liftIO (js_getRectValue self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
-getRectValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
-getRectValue_ self = liftIO (void (js_getRectValue self))
- 
-foreign import javascript safe "(($1) => { return $1[\"getRGBColorValue\"](); })"
-        js_getRGBColorValue :: CSSPrimitiveValue -> IO RGBColor
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
-getRGBColorValue :: (MonadIO m) => CSSPrimitiveValue -> m RGBColor
-getRGBColorValue self = liftIO (js_getRGBColorValue self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
-getRGBColorValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
-getRGBColorValue_ self = liftIO (void (js_getRGBColorValue self))
-pattern CSS_UNKNOWN = 0
-pattern CSS_NUMBER = 1
-pattern CSS_PERCENTAGE = 2
-pattern CSS_EMS = 3
-pattern CSS_EXS = 4
-pattern CSS_PX = 5
-pattern CSS_CM = 6
-pattern CSS_MM = 7
-pattern CSS_IN = 8
-pattern CSS_PT = 9
-pattern CSS_PC = 10
-pattern CSS_DEG = 11
-pattern CSS_RAD = 12
-pattern CSS_GRAD = 13
-pattern CSS_MS = 14
-pattern CSS_S = 15
-pattern CSS_HZ = 16
-pattern CSS_KHZ = 17
-pattern CSS_DIMENSION = 18
-pattern CSS_STRING = 19
-pattern CSS_URI = 20
-pattern CSS_IDENT = 21
-pattern CSS_ATTR = 22
-pattern CSS_COUNTER = 23
-pattern CSS_RECT = 24
-pattern CSS_RGBCOLOR = 25
-pattern CSS_VW = 26
-pattern CSS_VH = 27
-pattern CSS_VMIN = 28
-pattern CSS_VMAX = 29
- 
-foreign import javascript unsafe "(($1) => { return $1[\"primitiveType\"]; })"
-        js_getPrimitiveType :: CSSPrimitiveValue -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.primitiveType Mozilla CSSPrimitiveValue.primitiveType documentation> 
-getPrimitiveType :: (MonadIO m) => CSSPrimitiveValue -> m Word
-getPrimitiveType self = liftIO (js_getPrimitiveType self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPropertyRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPropertyRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPropertyRule.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-properties-values-api-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSPropertyRule
+       (js_getName, js_getSyntax, js_getInherits, js_getInitialValue, getName, getSyntax, getInherits, getInitialValue, getInitialValueUnsafe, getInitialValueUnchecked, CSSPropertyRule(..), gTypeCSSPropertyRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CSSPropertyRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/name MDN CSSPropertyRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSPropertyRule -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"syntax\"]; })"
+        js_getSyntax :: CSSPropertyRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/syntax MDN CSSPropertyRule.syntax documentation>
+getSyntax :: (MonadDOM m, FromJSString result) => CSSPropertyRule -> m result
+getSyntax self = liftDOM ((fromJSString <$> (js_getSyntax (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inherits\"]; })"
+        js_getInherits :: CSSPropertyRule -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/inherits MDN CSSPropertyRule.inherits documentation>
+getInherits :: (MonadDOM m) => CSSPropertyRule -> m Bool
+getInherits self = liftDOM ((js_getInherits (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"initialValue\"]; })"
+        js_getInitialValue :: CSSPropertyRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/initialValue MDN CSSPropertyRule.initialValue documentation>
+getInitialValue :: (MonadDOM m, FromJSString result) => CSSPropertyRule -> m (Maybe result)
+getInitialValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getInitialValue (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/initialValue MDN CSSPropertyRule.initialValue documentation>
+getInitialValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CSSPropertyRule -> m result
+getInitialValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getInitialValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/initialValue MDN CSSPropertyRule.initialValue documentation>
+getInitialValueUnchecked :: (MonadDOM m, FromJSString result) => CSSPropertyRule -> m result
+getInitialValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getInitialValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSRotate.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSRotate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSRotate.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSRotate
+       (js_newCSSRotate, js_newCSSRotateXYZ, js_setX, js_getX, js_setY, js_getY, js_setZ, js_getZ, js_setAngle, js_getAngle, newCSSRotate, newCSSRotateXYZ, setX, getX, setY, getY, setZ, getZ, setAngle, getAngle, CSSRotate(..), gTypeCSSRotate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSRotate\"]($1); })"
+        js_newCSSRotate :: CSSNumericValue -> IO CSSRotate
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/CSSRotate MDN CSSRotate. documentation>
+newCSSRotate :: (MonadDOM m, IsCSSNumericValue angle) => angle -> m CSSRotate
+newCSSRotate angle = liftDOM ((js_newCSSRotate (Types.toCSSNumericValue angle)))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"CSSRotate\"]($1, $2, $3, $4); })"
+        js_newCSSRotateXYZ :: CSSNumberish -> CSSNumberish -> CSSNumberish -> CSSNumericValue -> IO CSSRotate
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/CSSRotate MDN CSSRotate. documentation>
+newCSSRotateXYZ :: (MonadDOM m, IsCSSNumberish x, IsCSSNumberish y, IsCSSNumberish z, IsCSSNumericValue angle) => x -> y -> z -> angle -> m CSSRotate
+newCSSRotateXYZ x y z angle = liftDOM ((js_newCSSRotateXYZ (Types.toCSSNumberish x) (Types.toCSSNumberish y) (Types.toCSSNumberish z) (Types.toCSSNumericValue angle)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: CSSRotate -> CSSNumberish -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/x MDN CSSRotate.x documentation>
+setX :: (MonadDOM m, IsCSSNumberish val) => CSSRotate -> val -> m ()
+setX self val = liftDOM (void ((js_setX (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: CSSRotate -> IO CSSNumberish
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/x MDN CSSRotate.x documentation>
+getX :: (MonadDOM m) => CSSRotate -> m CSSNumberish
+getX self = liftDOM ((js_getX (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: CSSRotate -> CSSNumberish -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/y MDN CSSRotate.y documentation>
+setY :: (MonadDOM m, IsCSSNumberish val) => CSSRotate -> val -> m ()
+setY self val = liftDOM (void ((js_setY (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: CSSRotate -> IO CSSNumberish
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/y MDN CSSRotate.y documentation>
+getY :: (MonadDOM m) => CSSRotate -> m CSSNumberish
+getY self = liftDOM ((js_getY (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"z\"] = $2; })"
+        js_setZ :: CSSRotate -> CSSNumberish -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/z MDN CSSRotate.z documentation>
+setZ :: (MonadDOM m, IsCSSNumberish val) => CSSRotate -> val -> m ()
+setZ self val = liftDOM (void ((js_setZ (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: CSSRotate -> IO CSSNumberish
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/z MDN CSSRotate.z documentation>
+getZ :: (MonadDOM m) => CSSRotate -> m CSSNumberish
+getZ self = liftDOM ((js_getZ (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"angle\"] = $2; })"
+        js_setAngle :: CSSRotate -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/angle MDN CSSRotate.angle documentation>
+setAngle :: (MonadDOM m, IsCSSNumericValue val) => CSSRotate -> val -> m ()
+setAngle self val = liftDOM (void ((js_setAngle (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })"
+        js_getAngle :: CSSRotate -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/angle MDN CSSRotate.angle documentation>
+getAngle :: (MonadDOM m) => CSSRotate -> m CSSNumericValue
+getAngle self = liftDOM ((js_getAngle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
@@ -1,149 +1,89 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSRule
-       (pattern UNKNOWN_RULE, pattern STYLE_RULE, pattern CHARSET_RULE,
-        pattern IMPORT_RULE, pattern MEDIA_RULE, pattern FONT_FACE_RULE,
-        pattern PAGE_RULE, pattern KEYFRAMES_RULE, pattern KEYFRAME_RULE,
-        pattern NAMESPACE_RULE, pattern SUPPORTS_RULE,
-        pattern WEBKIT_VIEWPORT_RULE, pattern WEBKIT_REGION_RULE,
-        pattern WEBKIT_KEYFRAMES_RULE, pattern WEBKIT_KEYFRAME_RULE,
-        js_getType, getType, js_setCssText, setCssText, js_getCssText,
-        getCssText, getCssTextUnsafe, getCssTextUnchecked,
-        js_getParentStyleSheet, getParentStyleSheet,
-        getParentStyleSheetUnsafe, getParentStyleSheetUnchecked,
-        js_getParentRule, getParentRule, getParentRuleUnsafe,
-        getParentRuleUnchecked, CSSRule(..), gTypeCSSRule, IsCSSRule,
-        toCSSRule)
+       (js_setCssText, js_getCssText, js_getParentRule, js_getParentStyleSheet, js_getType, setCssText, getCssText, getParentRule, getParentRuleUnsafe, getParentRuleUnchecked, getParentStyleSheet, getParentStyleSheetUnsafe, getParentStyleSheetUnchecked, getType, pattern STYLE_RULE, pattern CHARSET_RULE, pattern IMPORT_RULE, pattern MEDIA_RULE, pattern FONT_FACE_RULE, pattern PAGE_RULE, pattern MARGIN_RULE, pattern NAMESPACE_RULE, pattern KEYFRAMES_RULE, pattern KEYFRAME_RULE, pattern SUPPORTS_RULE, pattern COUNTER_STYLE_RULE, pattern FONT_FEATURE_VALUES_RULE, CSSRule(..), gTypeCSSRule, IsCSSRule, toCSSRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern UNKNOWN_RULE = 0
-pattern STYLE_RULE = 1
-pattern CHARSET_RULE = 2
-pattern IMPORT_RULE = 3
-pattern MEDIA_RULE = 4
-pattern FONT_FACE_RULE = 5
-pattern PAGE_RULE = 6
-pattern KEYFRAMES_RULE = 7
-pattern KEYFRAME_RULE = 8
-pattern NAMESPACE_RULE = 10
-pattern SUPPORTS_RULE = 12
-pattern WEBKIT_VIEWPORT_RULE = 15
-pattern WEBKIT_REGION_RULE = 16
-pattern WEBKIT_KEYFRAMES_RULE = 7
-pattern WEBKIT_KEYFRAME_RULE = 8
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        CSSRule -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.type Mozilla CSSRule.type documentation> 
-getType :: (MonadIO m, IsCSSRule self) => self -> m Word
-getType self = liftIO (js_getType (toCSSRule self))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"cssText\"] = $2; })"
-        js_setCssText :: CSSRule -> Optional JSString -> IO ()
+        js_setCssText :: CSSRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/cssText MDN CSSRule.cssText documentation>
+setCssText :: (MonadDOM m, IsCSSRule self, ToJSString val) => self -> val -> m ()
+setCssText self val = liftDOM (void ((js_setCssText ((Types.toCSSRule self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-setCssText ::
-           (MonadIO m, IsCSSRule self, ToJSString val) =>
-             self -> Maybe val -> m ()
-setCssText self val
-  = liftIO (js_setCssText (toCSSRule self) (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })" js_getCssText ::
-        CSSRule -> IO (Nullable JSString)
+foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })"
+        js_getCssText :: CSSRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/cssText MDN CSSRule.cssText documentation>
+getCssText :: (MonadDOM m, IsCSSRule self, FromJSString result) => self -> m result
+getCssText self = liftDOM ((fromJSString <$> (js_getCssText ((Types.toCSSRule self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-getCssText ::
-           (MonadIO m, IsCSSRule self, FromJSString result) =>
-             self -> m (Maybe result)
-getCssText self
-  = liftIO (fromMaybeJSString <$> (js_getCssText (toCSSRule self)))
+foreign import javascript unsafe "(($1) => { return $1[\"parentRule\"]; })"
+        js_getParentRule :: CSSRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/parentRule MDN CSSRule.parentRule documentation>
+getParentRule :: (MonadDOM m, IsCSSRule self) => self -> m (Maybe CSSRule)
+getParentRule self = liftDOM (((js_getParentRule ((Types.toCSSRule self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-getCssTextUnsafe ::
-                 (MonadIO m, IsCSSRule self, HasCallStack, FromJSString result) =>
-                   self -> m result
-getCssTextUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getCssText (toCSSRule self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/parentRule MDN CSSRule.parentRule documentation>
+getParentRuleUnsafe :: (MonadDOM m, IsCSSRule self, HasCallStack) => self -> m CSSRule
+getParentRuleUnsafe self = liftDOM ((((js_getParentRule ((Types.toCSSRule self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-getCssTextUnchecked ::
-                    (MonadIO m, IsCSSRule self, FromJSString result) =>
-                      self -> m result
-getCssTextUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getCssText (toCSSRule self)))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/parentRule MDN CSSRule.parentRule documentation>
+getParentRuleUnchecked :: (MonadDOM m, IsCSSRule self) => self -> m CSSRule
+getParentRuleUnchecked self = liftDOM ((pFromJSVal <$> (js_getParentRule ((Types.toCSSRule self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"parentStyleSheet\"]; })"
-        js_getParentStyleSheet :: CSSRule -> IO (Nullable CSSStyleSheet)
+        js_getParentStyleSheet :: CSSRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/parentStyleSheet MDN CSSRule.parentStyleSheet documentation>
+getParentStyleSheet :: (MonadDOM m, IsCSSRule self) => self -> m (Maybe CSSStyleSheet)
+getParentStyleSheet self = liftDOM (((js_getParentStyleSheet ((Types.toCSSRule self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
-getParentStyleSheet ::
-                    (MonadIO m, IsCSSRule self) => self -> m (Maybe CSSStyleSheet)
-getParentStyleSheet self
-  = liftIO
-      (nullableToMaybe <$> (js_getParentStyleSheet (toCSSRule self)))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/parentStyleSheet MDN CSSRule.parentStyleSheet documentation>
+getParentStyleSheetUnsafe :: (MonadDOM m, IsCSSRule self, HasCallStack) => self -> m CSSStyleSheet
+getParentStyleSheetUnsafe self = liftDOM ((((js_getParentStyleSheet ((Types.toCSSRule self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
-getParentStyleSheetUnsafe ::
-                          (MonadIO m, IsCSSRule self, HasCallStack) =>
-                            self -> m CSSStyleSheet
-getParentStyleSheetUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getParentStyleSheet (toCSSRule self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/parentStyleSheet MDN CSSRule.parentStyleSheet documentation>
+getParentStyleSheetUnchecked :: (MonadDOM m, IsCSSRule self) => self -> m CSSStyleSheet
+getParentStyleSheetUnchecked self = liftDOM ((pFromJSVal <$> (js_getParentStyleSheet ((Types.toCSSRule self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
-getParentStyleSheetUnchecked ::
-                             (MonadIO m, IsCSSRule self) => self -> m CSSStyleSheet
-getParentStyleSheetUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getParentStyleSheet (toCSSRule self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"parentRule\"]; })"
-        js_getParentRule :: CSSRule -> IO (Nullable CSSRule)
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: CSSRule -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/type MDN CSSRule.type documentation>
+getType :: (MonadDOM m, IsCSSRule self) => self -> m Word
+getType self = liftDOM ((js_getType ((Types.toCSSRule self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
-getParentRule ::
-              (MonadIO m, IsCSSRule self) => self -> m (Maybe CSSRule)
-getParentRule self
-  = liftIO (nullableToMaybe <$> (js_getParentRule (toCSSRule self)))
+pattern STYLE_RULE = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
-getParentRuleUnsafe ::
-                    (MonadIO m, IsCSSRule self, HasCallStack) => self -> m CSSRule
-getParentRuleUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getParentRule (toCSSRule self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern CHARSET_RULE = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
-getParentRuleUnchecked ::
-                       (MonadIO m, IsCSSRule self) => self -> m CSSRule
-getParentRuleUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getParentRule (toCSSRule self)))
+pattern IMPORT_RULE = 3
+
+pattern MEDIA_RULE = 4
+
+pattern FONT_FACE_RULE = 5
+
+pattern PAGE_RULE = 6
+
+pattern MARGIN_RULE = 9
+
+pattern NAMESPACE_RULE = 10
+
+pattern KEYFRAMES_RULE = 7
+
+pattern KEYFRAME_RULE = 8
+
+pattern SUPPORTS_RULE = 12
+
+pattern COUNTER_STYLE_RULE = 11
+
+pattern FONT_FEATURE_VALUES_RULE = 14
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
@@ -1,45 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSRuleList
-       (js_item, item, item_, js_getLength, getLength, CSSRuleList(..),
-        gTypeCSSRuleList)
+       (js_item, js_getLength, item, item_, itemUnsafe, itemUnchecked, getLength, CSSRuleList(..), gTypeCSSRuleList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        CSSRuleList -> Word -> IO CSSRule
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
-item :: (MonadIO m) => CSSRuleList -> Word -> m CSSRule
-item self index = liftIO (js_item self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: CSSRuleList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRuleList/item MDN CSSRuleList.item documentation>
+item :: (MonadDOM m) => CSSRuleList -> Word -> m (Maybe CSSRule)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
-item_ :: (MonadIO m) => CSSRuleList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        CSSRuleList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRuleList/item MDN CSSRuleList.item documentation>
+item_ :: (MonadDOM m) => CSSRuleList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.length Mozilla CSSRuleList.length documentation> 
-getLength :: (MonadIO m) => CSSRuleList -> m Word
-getLength self = liftIO (js_getLength self)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRuleList/item MDN CSSRuleList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => CSSRuleList -> Word -> m CSSRule
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRuleList/item MDN CSSRuleList.item documentation>
+itemUnchecked :: (MonadDOM m) => CSSRuleList -> Word -> m CSSRule
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSRuleList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRuleList/length MDN CSSRuleList.length documentation>
+getLength :: (MonadDOM m) => CSSRuleList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSScale.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSScale.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSScale.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSScale
+       (js_newCSSScale, js_setX, js_getX, js_setY, js_getY, js_setZ, js_getZ, newCSSScale, setX, getX, setY, getY, setZ, getZ, CSSScale(..), gTypeCSSScale)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"CSSScale\"]($1, $2, $3); })"
+        js_newCSSScale :: CSSNumberish -> CSSNumberish -> JSVal -> IO CSSScale
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/CSSScale MDN CSSScale. documentation>
+newCSSScale :: (MonadDOM m, IsCSSNumberish x, IsCSSNumberish y, IsCSSNumberish z) => x -> y -> Maybe z -> m CSSScale
+newCSSScale x y z = liftDOM (((P.maybe (P.return jsUndefined) toJSVal z) >>= \a3' -> js_newCSSScale (Types.toCSSNumberish x) (Types.toCSSNumberish y) a3'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: CSSScale -> CSSNumberish -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/x MDN CSSScale.x documentation>
+setX :: (MonadDOM m, IsCSSNumberish val) => CSSScale -> val -> m ()
+setX self val = liftDOM (void ((js_setX (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: CSSScale -> IO CSSNumberish
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/x MDN CSSScale.x documentation>
+getX :: (MonadDOM m) => CSSScale -> m CSSNumberish
+getX self = liftDOM ((js_getX (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: CSSScale -> CSSNumberish -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/y MDN CSSScale.y documentation>
+setY :: (MonadDOM m, IsCSSNumberish val) => CSSScale -> val -> m ()
+setY self val = liftDOM (void ((js_setY (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: CSSScale -> IO CSSNumberish
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/y MDN CSSScale.y documentation>
+getY :: (MonadDOM m) => CSSScale -> m CSSNumberish
+getY self = liftDOM ((js_getY (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"z\"] = $2; })"
+        js_setZ :: CSSScale -> CSSNumberish -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/z MDN CSSScale.z documentation>
+setZ :: (MonadDOM m, IsCSSNumberish val) => CSSScale -> val -> m ()
+setZ self val = liftDOM (void ((js_setZ (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: CSSScale -> IO CSSNumberish
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/z MDN CSSScale.z documentation>
+getZ :: (MonadDOM m) => CSSScale -> m CSSNumberish
+getZ self = liftDOM ((js_getZ (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSScopeRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSScopeRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSScopeRule.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-cascade-6 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSScopeRule
+       (js_getStart, js_getEnd, getStart, getStartUnsafe, getStartUnchecked, getEnd, getEndUnsafe, getEndUnchecked, CSSScopeRule(..), gTypeCSSScopeRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"start\"]; })"
+        js_getStart :: CSSScopeRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScopeRule/start MDN CSSScopeRule.start documentation>
+getStart :: (MonadDOM m, FromJSString result) => CSSScopeRule -> m (Maybe result)
+getStart self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getStart (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScopeRule/start MDN CSSScopeRule.start documentation>
+getStartUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CSSScopeRule -> m result
+getStartUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getStart (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScopeRule/start MDN CSSScopeRule.start documentation>
+getStartUnchecked :: (MonadDOM m, FromJSString result) => CSSScopeRule -> m result
+getStartUnchecked self = liftDOM ((pFromJSVal <$> (js_getStart (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"end\"]; })"
+        js_getEnd :: CSSScopeRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScopeRule/end MDN CSSScopeRule.end documentation>
+getEnd :: (MonadDOM m, FromJSString result) => CSSScopeRule -> m (Maybe result)
+getEnd self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEnd (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScopeRule/end MDN CSSScopeRule.end documentation>
+getEndUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CSSScopeRule -> m result
+getEndUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEnd (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScopeRule/end MDN CSSScopeRule.end documentation>
+getEndUnchecked :: (MonadDOM m, FromJSString result) => CSSScopeRule -> m result
+getEndUnchecked self = liftDOM ((pFromJSVal <$> (js_getEnd (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSSkew.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSSkew.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSSkew.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSSkew
+       (js_newCSSSkew, js_setAx, js_getAx, js_setAy, js_getAy, newCSSSkew, setAx, getAx, setAy, getAy, CSSSkew(..), gTypeCSSSkew)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CSSSkew\"]($1, $2); })"
+        js_newCSSSkew :: CSSNumericValue -> CSSNumericValue -> IO CSSSkew
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkew/CSSSkew MDN CSSSkew. documentation>
+newCSSSkew :: (MonadDOM m, IsCSSNumericValue ax, IsCSSNumericValue ay) => ax -> ay -> m CSSSkew
+newCSSSkew ax ay = liftDOM ((js_newCSSSkew (Types.toCSSNumericValue ax) (Types.toCSSNumericValue ay)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ax\"] = $2; })"
+        js_setAx :: CSSSkew -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkew/ax MDN CSSSkew.ax documentation>
+setAx :: (MonadDOM m, IsCSSNumericValue val) => CSSSkew -> val -> m ()
+setAx self val = liftDOM (void ((js_setAx (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ax\"]; })"
+        js_getAx :: CSSSkew -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkew/ax MDN CSSSkew.ax documentation>
+getAx :: (MonadDOM m) => CSSSkew -> m CSSNumericValue
+getAx self = liftDOM ((js_getAx (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ay\"] = $2; })"
+        js_setAy :: CSSSkew -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkew/ay MDN CSSSkew.ay documentation>
+setAy :: (MonadDOM m, IsCSSNumericValue val) => CSSSkew -> val -> m ()
+setAy self val = liftDOM (void ((js_setAy (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ay\"]; })"
+        js_getAy :: CSSSkew -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkew/ay MDN CSSSkew.ay documentation>
+getAy :: (MonadDOM m) => CSSSkew -> m CSSNumericValue
+getAy self = liftDOM ((js_getAy (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSSkewX.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSSkewX.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSSkewX.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSSkewX
+       (js_newCSSSkewX, js_setAx, js_getAx, newCSSSkewX, setAx, getAx, CSSSkewX(..), gTypeCSSSkewX)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSSkewX\"]($1); })"
+        js_newCSSSkewX :: CSSNumericValue -> IO CSSSkewX
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewX/CSSSkewX MDN CSSSkewX. documentation>
+newCSSSkewX :: (MonadDOM m, IsCSSNumericValue ax) => ax -> m CSSSkewX
+newCSSSkewX ax = liftDOM ((js_newCSSSkewX (Types.toCSSNumericValue ax)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ax\"] = $2; })"
+        js_setAx :: CSSSkewX -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewX/ax MDN CSSSkewX.ax documentation>
+setAx :: (MonadDOM m, IsCSSNumericValue val) => CSSSkewX -> val -> m ()
+setAx self val = liftDOM (void ((js_setAx (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ax\"]; })"
+        js_getAx :: CSSSkewX -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewX/ax MDN CSSSkewX.ax documentation>
+getAx :: (MonadDOM m) => CSSSkewX -> m CSSNumericValue
+getAx self = liftDOM ((js_getAx (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSSkewY.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSSkewY.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSSkewY.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSSkewY
+       (js_newCSSSkewY, js_setAy, js_getAy, newCSSSkewY, setAy, getAy, CSSSkewY(..), gTypeCSSSkewY)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSSkewY\"]($1); })"
+        js_newCSSSkewY :: CSSNumericValue -> IO CSSSkewY
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewY/CSSSkewY MDN CSSSkewY. documentation>
+newCSSSkewY :: (MonadDOM m, IsCSSNumericValue ay) => ay -> m CSSSkewY
+newCSSSkewY ay = liftDOM ((js_newCSSSkewY (Types.toCSSNumericValue ay)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ay\"] = $2; })"
+        js_setAy :: CSSSkewY -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewY/ay MDN CSSSkewY.ay documentation>
+setAy :: (MonadDOM m, IsCSSNumericValue val) => CSSSkewY -> val -> m ()
+setAy self val = liftDOM (void ((js_setAy (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ay\"]; })"
+        js_getAy :: CSSSkewY -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewY/ay MDN CSSSkewY.ay documentation>
+getAy :: (MonadDOM m) => CSSSkewY -> m CSSNumericValue
+getAy self = liftDOM ((js_getAy (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStartingStyleRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStartingStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStartingStyleRule.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSStartingStyleRule
+       (CSSStartingStyleRule(..), gTypeCSSStartingStyleRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
@@ -1,299 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
-       (js_getPropertyValue, getPropertyValue, getPropertyValue_,
-        js_getPropertyCSSValue, getPropertyCSSValue, getPropertyCSSValue_,
-        getPropertyCSSValueUnsafe, getPropertyCSSValueUnchecked,
-        js_removeProperty, removeProperty, removeProperty_,
-        js_getPropertyPriority, getPropertyPriority, getPropertyPriority_,
-        getPropertyPriorityUnsafe, getPropertyPriorityUnchecked,
-        js_setProperty, setProperty, js_item, item, item_,
-        js_getPropertyShorthand, getPropertyShorthand,
-        getPropertyShorthand_, getPropertyShorthandUnsafe,
-        getPropertyShorthandUnchecked, js_isPropertyImplicit,
-        isPropertyImplicit, isPropertyImplicit_, js_setCssText, setCssText,
-        js_getCssText, getCssText, js_getLength, getLength,
-        js_getParentRule, getParentRule, getParentRuleUnsafe,
-        getParentRuleUnchecked, CSSStyleDeclaration(..),
-        gTypeCSSStyleDeclaration)
+       (js_getPropertyPriority, js_getPropertyValue, js_item, js_removeProperty, js_setProperty, js_setCssText, js_getCssText, js_getLength, js_getParentRule, getPropertyPriority, getPropertyPriority_, getPropertyValue, getPropertyValue_, item, item_, removeProperty, removeProperty_, setProperty, setCssText, getCssText, getLength, getParentRule, getParentRuleUnsafe, getParentRuleUnchecked, CSSStyleDeclaration(..), gTypeCSSStyleDeclaration, IsCSSStyleDeclaration, toCSSStyleDeclaration)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyValue\"]($2); })"
-        js_getPropertyValue ::
-        CSSStyleDeclaration -> JSString -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
-getPropertyValue ::
-                 (MonadIO m, ToJSString propertyName, FromJSString result) =>
-                   CSSStyleDeclaration -> propertyName -> m result
-getPropertyValue self propertyName
-  = liftIO
-      (fromJSString <$>
-         (js_getPropertyValue self (toJSString propertyName)))
+foreign import javascript safe "(($1, $2) => { return $1[\"getPropertyPriority\"]($2); })"
+        js_getPropertyPriority :: CSSStyleDeclaration -> JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/getPropertyPriority MDN CSSStyleDeclaration.getPropertyPriority documentation>
+getPropertyPriority :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, FromJSString result) => self -> property -> m result
+getPropertyPriority self property = liftDOM ((fromJSString <$> (js_getPropertyPriority ((Types.toCSSStyleDeclaration self)) (toJSString property))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
-getPropertyValue_ ::
-                  (MonadIO m, ToJSString propertyName) =>
-                    CSSStyleDeclaration -> propertyName -> m ()
-getPropertyValue_ self propertyName
-  = liftIO
-      (void (js_getPropertyValue self (toJSString propertyName)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyCSSValue\"]($2); })"
-        js_getPropertyCSSValue ::
-        CSSStyleDeclaration -> JSString -> IO (Nullable CSSValue)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/getPropertyPriority MDN CSSStyleDeclaration.getPropertyPriority documentation>
+getPropertyPriority_ :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property) => self -> property -> m ()
+getPropertyPriority_ self property = liftDOM (void ((js_getPropertyPriority ((Types.toCSSStyleDeclaration self)) (toJSString property))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValue ::
-                    (MonadIO m, ToJSString propertyName) =>
-                      CSSStyleDeclaration -> propertyName -> m (Maybe CSSValue)
-getPropertyCSSValue self propertyName
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getPropertyCSSValue self (toJSString propertyName)))
+foreign import javascript safe "(($1, $2) => { return $1[\"getPropertyValue\"]($2); })"
+        js_getPropertyValue :: CSSStyleDeclaration -> JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/getPropertyValue MDN CSSStyleDeclaration.getPropertyValue documentation>
+getPropertyValue :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, FromJSString result) => self -> property -> m result
+getPropertyValue self property = liftDOM ((fromJSString <$> (js_getPropertyValue ((Types.toCSSStyleDeclaration self)) (toJSString property))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValue_ ::
-                     (MonadIO m, ToJSString propertyName) =>
-                       CSSStyleDeclaration -> propertyName -> m ()
-getPropertyCSSValue_ self propertyName
-  = liftIO
-      (void (js_getPropertyCSSValue self (toJSString propertyName)))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/getPropertyValue MDN CSSStyleDeclaration.getPropertyValue documentation>
+getPropertyValue_ :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property) => self -> property -> m ()
+getPropertyValue_ self property = liftDOM (void ((js_getPropertyValue ((Types.toCSSStyleDeclaration self)) (toJSString property))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValueUnsafe ::
-                          (MonadIO m, ToJSString propertyName, HasCallStack) =>
-                            CSSStyleDeclaration -> propertyName -> m CSSValue
-getPropertyCSSValueUnsafe self propertyName
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getPropertyCSSValue self (toJSString propertyName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: CSSStyleDeclaration -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/item MDN CSSStyleDeclaration.item documentation>
+item :: (MonadDOM m, IsCSSStyleDeclaration self, FromJSString result) => self -> Word -> m result
+item self index = liftDOM ((fromJSString <$> (js_item ((Types.toCSSStyleDeclaration self)) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValueUnchecked ::
-                             (MonadIO m, ToJSString propertyName) =>
-                               CSSStyleDeclaration -> propertyName -> m CSSValue
-getPropertyCSSValueUnchecked self propertyName
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getPropertyCSSValue self (toJSString propertyName)))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/item MDN CSSStyleDeclaration.item documentation>
+item_ :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> Word -> m ()
+item_ self index = liftDOM (void ((js_item ((Types.toCSSStyleDeclaration self)) (index))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeProperty\"]($2); })"
         js_removeProperty :: CSSStyleDeclaration -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
-removeProperty ::
-               (MonadIO m, ToJSString propertyName, FromJSString result) =>
-                 CSSStyleDeclaration -> propertyName -> m result
-removeProperty self propertyName
-  = liftIO
-      (fromJSString <$>
-         (js_removeProperty self (toJSString propertyName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
-removeProperty_ ::
-                (MonadIO m, ToJSString propertyName) =>
-                  CSSStyleDeclaration -> propertyName -> m ()
-removeProperty_ self propertyName
-  = liftIO (void (js_removeProperty self (toJSString propertyName)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyPriority\"]($2); })"
-        js_getPropertyPriority ::
-        CSSStyleDeclaration -> JSString -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriority ::
-                    (MonadIO m, ToJSString propertyName, FromJSString result) =>
-                      CSSStyleDeclaration -> propertyName -> m (Maybe result)
-getPropertyPriority self propertyName
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getPropertyPriority self (toJSString propertyName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriority_ ::
-                     (MonadIO m, ToJSString propertyName) =>
-                       CSSStyleDeclaration -> propertyName -> m ()
-getPropertyPriority_ self propertyName
-  = liftIO
-      (void (js_getPropertyPriority self (toJSString propertyName)))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/removeProperty MDN CSSStyleDeclaration.removeProperty documentation>
+removeProperty :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, FromJSString result) => self -> property -> m result
+removeProperty self property = liftDOM ((fromJSString <$> (js_removeProperty ((Types.toCSSStyleDeclaration self)) (toJSString property))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriorityUnsafe ::
-                          (MonadIO m, ToJSString propertyName, HasCallStack,
-                           FromJSString result) =>
-                            CSSStyleDeclaration -> propertyName -> m result
-getPropertyPriorityUnsafe self propertyName
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getPropertyPriority self (toJSString propertyName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/removeProperty MDN CSSStyleDeclaration.removeProperty documentation>
+removeProperty_ :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property) => self -> property -> m ()
+removeProperty_ self property = liftDOM (void ((js_removeProperty ((Types.toCSSStyleDeclaration self)) (toJSString property))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriorityUnchecked ::
-                             (MonadIO m, ToJSString propertyName, FromJSString result) =>
-                               CSSStyleDeclaration -> propertyName -> m result
-getPropertyPriorityUnchecked self propertyName
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getPropertyPriority self (toJSString propertyName)))
- 
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setProperty\"]($2, $3, $4); })"
-        js_setProperty ::
-        CSSStyleDeclaration ->
-          JSString -> JSString -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.setProperty Mozilla CSSStyleDeclaration.setProperty documentation> 
-setProperty ::
-            (MonadIO m, ToJSString propertyName, ToJSString value,
-             ToJSString priority) =>
-              CSSStyleDeclaration ->
-                propertyName -> value -> Maybe priority -> m ()
-setProperty self propertyName value priority
-  = liftIO
-      (js_setProperty self (toJSString propertyName) (toJSString value)
-         (toOptionalJSString priority))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        CSSStyleDeclaration -> Word -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.item Mozilla CSSStyleDeclaration.item documentation> 
-item ::
-     (MonadIO m, FromJSString result) =>
-       CSSStyleDeclaration -> Word -> m result
-item self index = liftIO (fromJSString <$> (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.item Mozilla CSSStyleDeclaration.item documentation> 
-item_ :: (MonadIO m) => CSSStyleDeclaration -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyShorthand\"]($2); })"
-        js_getPropertyShorthand ::
-        CSSStyleDeclaration -> Optional JSString -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthand ::
-                     (MonadIO m, ToJSString propertyName, FromJSString result) =>
-                       CSSStyleDeclaration -> Maybe propertyName -> m (Maybe result)
-getPropertyShorthand self propertyName
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getPropertyShorthand self (toOptionalJSString propertyName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthand_ ::
-                      (MonadIO m, ToJSString propertyName) =>
-                        CSSStyleDeclaration -> Maybe propertyName -> m ()
-getPropertyShorthand_ self propertyName
-  = liftIO
-      (void
-         (js_getPropertyShorthand self (toOptionalJSString propertyName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthandUnsafe ::
-                           (MonadIO m, ToJSString propertyName, HasCallStack,
-                            FromJSString result) =>
-                             CSSStyleDeclaration -> Maybe propertyName -> m result
-getPropertyShorthandUnsafe self propertyName
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getPropertyShorthand self (toOptionalJSString propertyName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthandUnchecked ::
-                              (MonadIO m, ToJSString propertyName, FromJSString result) =>
-                                CSSStyleDeclaration -> Maybe propertyName -> m result
-getPropertyShorthandUnchecked self propertyName
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getPropertyShorthand self (toOptionalJSString propertyName)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"isPropertyImplicit\"]($2) ? 1 : 0); })" js_isPropertyImplicit ::
-        CSSStyleDeclaration -> Optional JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
-isPropertyImplicit ::
-                   (MonadIO m, ToJSString propertyName) =>
-                     CSSStyleDeclaration -> Maybe propertyName -> m Bool
-isPropertyImplicit self propertyName
-  = liftIO
-      (js_isPropertyImplicit self (toOptionalJSString propertyName))
+        js_setProperty :: CSSStyleDeclaration -> JSString -> JSString -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/setProperty MDN CSSStyleDeclaration.setProperty documentation>
+setProperty :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, ToJSString value, ToJSString priority) => self -> property -> value -> Maybe priority -> m ()
+setProperty self property value priority = liftDOM (void ((js_setProperty ((Types.toCSSStyleDeclaration self)) (toJSString property) (toJSString value) (toOptionalJSString priority))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
-isPropertyImplicit_ ::
-                    (MonadIO m, ToJSString propertyName) =>
-                      CSSStyleDeclaration -> Maybe propertyName -> m ()
-isPropertyImplicit_ self propertyName
-  = liftIO
-      (void
-         (js_isPropertyImplicit self (toOptionalJSString propertyName)))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"cssText\"] = $2; })"
         js_setCssText :: CSSStyleDeclaration -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/cssText MDN CSSStyleDeclaration.cssText documentation>
+setCssText :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString val) => self -> val -> m ()
+setCssText self val = liftDOM (void ((js_setCssText ((Types.toCSSStyleDeclaration self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
-setCssText ::
-           (MonadIO m, ToJSString val) => CSSStyleDeclaration -> val -> m ()
-setCssText self val = liftIO (js_setCssText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })" js_getCssText ::
-        CSSStyleDeclaration -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })"
+        js_getCssText :: CSSStyleDeclaration -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/cssText MDN CSSStyleDeclaration.cssText documentation>
+getCssText :: (MonadDOM m, IsCSSStyleDeclaration self, FromJSString result) => self -> m result
+getCssText self = liftDOM ((fromJSString <$> (js_getCssText ((Types.toCSSStyleDeclaration self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
-getCssText ::
-           (MonadIO m, FromJSString result) => CSSStyleDeclaration -> m result
-getCssText self = liftIO (fromJSString <$> (js_getCssText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        CSSStyleDeclaration -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSStyleDeclaration -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/length MDN CSSStyleDeclaration.length documentation>
+getLength :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m Word
+getLength self = liftDOM ((js_getLength ((Types.toCSSStyleDeclaration self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.length Mozilla CSSStyleDeclaration.length documentation> 
-getLength :: (MonadIO m) => CSSStyleDeclaration -> m Word
-getLength self = liftIO (js_getLength self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"parentRule\"]; })"
-        js_getParentRule :: CSSStyleDeclaration -> IO (Nullable CSSRule)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
-getParentRule ::
-              (MonadIO m) => CSSStyleDeclaration -> m (Maybe CSSRule)
-getParentRule self
-  = liftIO (nullableToMaybe <$> (js_getParentRule self))
+        js_getParentRule :: CSSStyleDeclaration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/parentRule MDN CSSStyleDeclaration.parentRule documentation>
+getParentRule :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m (Maybe CSSRule)
+getParentRule self = liftDOM (((js_getParentRule ((Types.toCSSStyleDeclaration self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
-getParentRuleUnsafe ::
-                    (MonadIO m, HasCallStack) => CSSStyleDeclaration -> m CSSRule
-getParentRuleUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getParentRule self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/parentRule MDN CSSStyleDeclaration.parentRule documentation>
+getParentRuleUnsafe :: (MonadDOM m, IsCSSStyleDeclaration self, HasCallStack) => self -> m CSSRule
+getParentRuleUnsafe self = liftDOM ((((js_getParentRule ((Types.toCSSStyleDeclaration self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
-getParentRuleUnchecked ::
-                       (MonadIO m) => CSSStyleDeclaration -> m CSSRule
-getParentRuleUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getParentRule self))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/parentRule MDN CSSStyleDeclaration.parentRule documentation>
+getParentRuleUnchecked :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m CSSRule
+getParentRuleUnchecked self = liftDOM ((pFromJSVal <$> (js_getParentRule ((Types.toCSSStyleDeclaration self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleProperties.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleProperties.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleProperties.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSStyleProperties
+       (js_setCssFloat, js_getCssFloat, setCssFloat, getCssFloat, CSSStyleProperties(..), gTypeCSSStyleProperties)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"cssFloat\"] = $2; })"
+        js_setCssFloat :: CSSStyleProperties -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleProperties/cssFloat MDN CSSStyleProperties.cssFloat documentation>
+setCssFloat :: (MonadDOM m, ToJSString val) => CSSStyleProperties -> val -> m ()
+setCssFloat self val = liftDOM (void ((js_setCssFloat (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cssFloat\"]; })"
+        js_getCssFloat :: CSSStyleProperties -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleProperties/cssFloat MDN CSSStyleProperties.cssFloat documentation>
+getCssFloat :: (MonadDOM m, FromJSString result) => CSSStyleProperties -> m result
+getCssFloat self = liftDOM ((fromJSString <$> (js_getCssFloat (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
@@ -1,70 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSStyleRule
-       (js_setSelectorText, setSelectorText, js_getSelectorText,
-        getSelectorText, getSelectorTextUnsafe, getSelectorTextUnchecked,
-        js_getStyle, getStyle, CSSStyleRule(..), gTypeCSSStyleRule)
+       (js_setSelectorText, js_getSelectorText, js_getStyle, js_getStyleMap, setSelectorText, getSelectorText, getStyle, getStyleMap, CSSStyleRule(..), gTypeCSSStyleRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selectorText\"] = $2; })"
-        js_setSelectorText :: CSSStyleRule -> Optional JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-setSelectorText ::
-                (MonadIO m, ToJSString val) => CSSStyleRule -> Maybe val -> m ()
-setSelectorText self val
-  = liftIO (js_setSelectorText self (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"selectorText\"]; })"
-        js_getSelectorText :: CSSStyleRule -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-getSelectorText ::
-                (MonadIO m, FromJSString result) =>
-                  CSSStyleRule -> m (Maybe result)
-getSelectorText self
-  = liftIO (fromMaybeJSString <$> (js_getSelectorText self))
+foreign import javascript safe "(($1, $2) => { $1[\"selectorText\"] = $2; })"
+        js_setSelectorText :: CSSStyleRule -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleRule/selectorText MDN CSSStyleRule.selectorText documentation>
+setSelectorText :: (MonadDOM m, ToJSString val) => CSSStyleRule -> val -> m ()
+setSelectorText self val = liftDOM (void ((js_setSelectorText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-getSelectorTextUnsafe ::
-                      (MonadIO m, HasCallStack, FromJSString result) =>
-                        CSSStyleRule -> m result
-getSelectorTextUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getSelectorText self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"selectorText\"]; })"
+        js_getSelectorText :: CSSStyleRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleRule/selectorText MDN CSSStyleRule.selectorText documentation>
+getSelectorText :: (MonadDOM m, FromJSString result) => CSSStyleRule -> m result
+getSelectorText self = liftDOM ((fromJSString <$> (js_getSelectorText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-getSelectorTextUnchecked ::
-                         (MonadIO m, FromJSString result) => CSSStyleRule -> m result
-getSelectorTextUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getSelectorText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
-        CSSStyleRule -> IO CSSStyleDeclaration
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: CSSStyleRule -> IO CSSStyleProperties
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleRule/style MDN CSSStyleRule.style documentation>
+getStyle :: (MonadDOM m) => CSSStyleRule -> m CSSStyleProperties
+getStyle self = liftDOM ((js_getStyle (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.style Mozilla CSSStyleRule.style documentation> 
-getStyle :: (MonadIO m) => CSSStyleRule -> m CSSStyleDeclaration
-getStyle self = liftIO (js_getStyle self)
+foreign import javascript unsafe "(($1) => { return $1[\"styleMap\"]; })"
+        js_getStyleMap :: CSSStyleRule -> IO StylePropertyMap
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleRule/styleMap MDN CSSStyleRule.styleMap documentation>
+getStyleMap :: (MonadDOM m) => CSSStyleRule -> m StylePropertyMap
+getStyleMap self = liftDOM ((js_getStyleMap (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
@@ -1,129 +1,107 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
-       (js_insertRuleDeprecated, insertRuleDeprecated,
-        insertRuleDeprecated_, js_insertRule, insertRule, insertRule_,
-        js_deleteRule, deleteRule, js_addRule, addRule, addRule_,
-        js_removeRule, removeRule, js_getOwnerRule, getOwnerRule,
-        js_getCssRules, getCssRules, js_getRules, getRules,
-        CSSStyleSheet(..), gTypeCSSStyleSheet)
+       (js_newCSSStyleSheet, js_addRule, js_deleteRule, js_insertRule, js_insertRule', js_removeRule, js_replace, js_replaceSync, js_getOwnerRule, js_getCssRules, js_getRules, newCSSStyleSheet, addRule, addRule_, deleteRule, insertRule, insertRule_, insertRule', insertRule'_, removeRule, replace, replace_, replaceSync, getOwnerRule, getOwnerRuleUnsafe, getOwnerRuleUnchecked, getCssRules, getRules, CSSStyleSheet(..), gTypeCSSStyleSheet)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
-        js_insertRuleDeprecated ::
-        CSSStyleSheet -> JSString -> Word -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRuleDeprecated ::
-                     (MonadIO m, ToJSString rule) =>
-                       CSSStyleSheet -> rule -> Word -> m Word
-insertRuleDeprecated self rule index
-  = liftIO (js_insertRuleDeprecated self (toJSString rule) index)
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSStyleSheet\"]($1); })"
+        js_newCSSStyleSheet :: JSVal -> IO CSSStyleSheet
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/CSSStyleSheet MDN CSSStyleSheet. documentation>
+newCSSStyleSheet :: (MonadDOM m) => Maybe CSSStyleSheetInit -> m CSSStyleSheet
+newCSSStyleSheet options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a1' -> js_newCSSStyleSheet a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRuleDeprecated_ ::
-                      (MonadIO m, ToJSString rule) =>
-                        CSSStyleSheet -> rule -> Word -> m ()
-insertRuleDeprecated_ self rule index
-  = liftIO
-      (void (js_insertRuleDeprecated self (toJSString rule) index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"insertRule\"]($2); })"
-        js_insertRule :: CSSStyleSheet -> JSString -> IO Word
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"addRule\"]($2, $3, $4); })"
+        js_addRule :: CSSStyleSheet -> (Optional JSString) -> (Optional JSString) -> JSVal -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/addRule MDN CSSStyleSheet.addRule documentation>
+addRule :: (MonadDOM m, ToJSString selector, ToJSString style) => CSSStyleSheet -> Maybe selector -> Maybe style -> Maybe Word -> m Int
+addRule self selector style index = liftDOM (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a4' -> js_addRule (self) (toOptionalJSString selector) (toOptionalJSString style) a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRule ::
-           (MonadIO m, ToJSString rule) => CSSStyleSheet -> rule -> m Word
-insertRule self rule
-  = liftIO (js_insertRule self (toJSString rule))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/addRule MDN CSSStyleSheet.addRule documentation>
+addRule_ :: (MonadDOM m, ToJSString selector, ToJSString style) => CSSStyleSheet -> Maybe selector -> Maybe style -> Maybe Word -> m ()
+addRule_ self selector style index = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a4' -> js_addRule (self) (toOptionalJSString selector) (toOptionalJSString style) a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRule_ ::
-            (MonadIO m, ToJSString rule) => CSSStyleSheet -> rule -> m ()
-insertRule_ self rule
-  = liftIO (void (js_insertRule self (toJSString rule)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
         js_deleteRule :: CSSStyleSheet -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/deleteRule MDN CSSStyleSheet.deleteRule documentation>
+deleteRule :: (MonadDOM m) => CSSStyleSheet -> Word -> m ()
+deleteRule self index = liftDOM (void ((js_deleteRule (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.deleteRule Mozilla CSSStyleSheet.deleteRule documentation> 
-deleteRule :: (MonadIO m) => CSSStyleSheet -> Word -> m ()
-deleteRule self index = liftIO (js_deleteRule self index)
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"addRule\"]($2, $3, $4); })"
-        js_addRule ::
-        CSSStyleSheet ->
-          Optional JSString -> Optional JSString -> Optional Word -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"insertRule\"]($2); })"
+        js_insertRule :: CSSStyleSheet -> JSString -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule MDN CSSStyleSheet.insertRule documentation>
+insertRule :: (MonadDOM m, ToJSString rule) => CSSStyleSheet -> rule -> m Word
+insertRule self rule = liftDOM ((js_insertRule (self) (toJSString rule)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla CSSStyleSheet.addRule documentation> 
-addRule ::
-        (MonadIO m, ToJSString selector, ToJSString style) =>
-          CSSStyleSheet ->
-            Maybe selector -> Maybe style -> Maybe Word -> m Int
-addRule self selector style index
-  = liftIO
-      (js_addRule self (toOptionalJSString selector)
-         (toOptionalJSString style)
-         (maybeToOptional index))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule MDN CSSStyleSheet.insertRule documentation>
+insertRule_ :: (MonadDOM m, ToJSString rule) => CSSStyleSheet -> rule -> m ()
+insertRule_ self rule = liftDOM (void ((js_insertRule (self) (toJSString rule))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla CSSStyleSheet.addRule documentation> 
-addRule_ ::
-         (MonadIO m, ToJSString selector, ToJSString style) =>
-           CSSStyleSheet ->
-             Maybe selector -> Maybe style -> Maybe Word -> m ()
-addRule_ self selector style index
-  = liftIO
-      (void
-         (js_addRule self (toOptionalJSString selector)
-            (toOptionalJSString style)
-            (maybeToOptional index)))
- 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
+        js_insertRule' :: CSSStyleSheet -> JSString -> JSVal -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule MDN CSSStyleSheet.insertRule documentation>
+insertRule' :: (MonadDOM m, ToJSString rule) => CSSStyleSheet -> rule -> Maybe Word -> m Word
+insertRule' self rule index = liftDOM (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a3' -> js_insertRule' (self) (toJSString rule) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule MDN CSSStyleSheet.insertRule documentation>
+insertRule'_ :: (MonadDOM m, ToJSString rule) => CSSStyleSheet -> rule -> Maybe Word -> m ()
+insertRule'_ self rule index = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a3' -> js_insertRule' (self) (toJSString rule) a3')))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeRule\"]($2); })"
-        js_removeRule :: CSSStyleSheet -> Optional Word -> IO ()
+        js_removeRule :: CSSStyleSheet -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/removeRule MDN CSSStyleSheet.removeRule documentation>
+removeRule :: (MonadDOM m) => CSSStyleSheet -> Maybe Word -> m ()
+removeRule self index = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a2' -> js_removeRule (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.removeRule Mozilla CSSStyleSheet.removeRule documentation> 
-removeRule :: (MonadIO m) => CSSStyleSheet -> Maybe Word -> m ()
-removeRule self index
-  = liftIO (js_removeRule self (maybeToOptional index))
- 
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"replace\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_replace :: CSSStyleSheet -> JSString -> IO (JSVal, CSSStyleSheet)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/replace MDN CSSStyleSheet.replace documentation>
+replace :: (MonadDOM m, ToJSString text) => CSSStyleSheet -> text -> m CSSStyleSheet
+replace self text = liftDOM (((js_replace (self) (toJSString text)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/replace MDN CSSStyleSheet.replace documentation>
+replace_ :: (MonadDOM m, ToJSString text) => CSSStyleSheet -> text -> m ()
+replace_ self text = liftDOM (void (((js_replace (self) (toJSString text)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"replaceSync\"]($2); })"
+        js_replaceSync :: CSSStyleSheet -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/replaceSync MDN CSSStyleSheet.replaceSync documentation>
+replaceSync :: (MonadDOM m, ToJSString text) => CSSStyleSheet -> text -> m ()
+replaceSync self text = liftDOM (void ((js_replaceSync (self) (toJSString text))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"ownerRule\"]; })"
-        js_getOwnerRule :: CSSStyleSheet -> IO CSSRule
+        js_getOwnerRule :: CSSStyleSheet -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/ownerRule MDN CSSStyleSheet.ownerRule documentation>
+getOwnerRule :: (MonadDOM m) => CSSStyleSheet -> m (Maybe CSSRule)
+getOwnerRule self = liftDOM (((js_getOwnerRule (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.ownerRule Mozilla CSSStyleSheet.ownerRule documentation> 
-getOwnerRule :: (MonadIO m) => CSSStyleSheet -> m CSSRule
-getOwnerRule self = liftIO (js_getOwnerRule self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
-        :: CSSStyleSheet -> IO CSSRuleList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/ownerRule MDN CSSStyleSheet.ownerRule documentation>
+getOwnerRuleUnsafe :: (MonadDOM m, HasCallStack) => CSSStyleSheet -> m CSSRule
+getOwnerRuleUnsafe self = liftDOM ((((js_getOwnerRule (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.cssRules Mozilla CSSStyleSheet.cssRules documentation> 
-getCssRules :: (MonadIO m) => CSSStyleSheet -> m CSSRuleList
-getCssRules self = liftIO (js_getCssRules self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rules\"]; })" js_getRules ::
-        CSSStyleSheet -> IO CSSRuleList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/ownerRule MDN CSSStyleSheet.ownerRule documentation>
+getOwnerRuleUnchecked :: (MonadDOM m) => CSSStyleSheet -> m CSSRule
+getOwnerRuleUnchecked self = liftDOM ((pFromJSVal <$> (js_getOwnerRule (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
-getRules :: (MonadIO m) => CSSStyleSheet -> m CSSRuleList
-getRules self = liftIO (js_getRules self)
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })"
+        js_getCssRules :: CSSStyleSheet -> IO CSSRuleList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/cssRules MDN CSSStyleSheet.cssRules documentation>
+getCssRules :: (MonadDOM m) => CSSStyleSheet -> m CSSRuleList
+getCssRules self = liftDOM ((js_getCssRules (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rules\"]; })"
+        js_getRules :: CSSStyleSheet -> IO CSSRuleList
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/rules MDN CSSStyleSheet.rules documentation>
+getRules :: (MonadDOM m) => CSSStyleSheet -> m CSSRuleList
+getRules self = liftDOM ((js_getRules (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheetInit.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheetInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheetInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSStyleSheetInit
+       (js_newCSSStyleSheetInit, js_setBaseURL, js_getBaseURL, js_setMedia, js_getMedia, js_setDisabled, js_getDisabled, newCSSStyleSheetInit, setBaseURL, getBaseURL, getBaseURLUnsafe, getBaseURLUnchecked, setMedia, getMedia, getMediaUnsafe, getMediaUnchecked, setDisabled, getDisabled, getDisabledUnsafe, getDisabledUnchecked, CSSStyleSheetInit(..), gTypeCSSStyleSheetInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCSSStyleSheetInit :: IO CSSStyleSheetInit
+-- | <https://drafts.csswg.org/cssom-1/#dictdef-cssstylesheetinit CSSStyleSheetInit specification>
+newCSSStyleSheetInit :: (MonadDOM m) => m CSSStyleSheetInit
+newCSSStyleSheetInit = liftDOM ((js_newCSSStyleSheetInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"baseURL\"] = $2; })"
+        js_setBaseURL :: CSSStyleSheetInit -> (Nullable JSString) -> IO ()
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl CSSStyleSheetInit.baseURL specification>
+setBaseURL :: (MonadDOM m, ToJSString val) => CSSStyleSheetInit -> Maybe val -> m ()
+setBaseURL self val = liftDOM (void ((js_setBaseURL (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"baseURL\"]; })"
+        js_getBaseURL :: CSSStyleSheetInit -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl CSSStyleSheetInit.baseURL specification>
+getBaseURL :: (MonadDOM m, FromJSString result) => CSSStyleSheetInit -> m (Maybe result)
+getBaseURL self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getBaseURL (self))))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl CSSStyleSheetInit.baseURL specification>
+getBaseURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CSSStyleSheetInit -> m result
+getBaseURLUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getBaseURL (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl CSSStyleSheetInit.baseURL specification>
+getBaseURLUnchecked :: (MonadDOM m, FromJSString result) => CSSStyleSheetInit -> m result
+getBaseURLUnchecked self = liftDOM ((pFromJSVal <$> (js_getBaseURL (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"media\"] = $2; })"
+        js_setMedia :: CSSStyleSheetInit -> MediaListOrString -> IO ()
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-media CSSStyleSheetInit.media specification>
+setMedia :: (MonadDOM m, IsMediaListOrString val) => CSSStyleSheetInit -> val -> m ()
+setMedia self val = liftDOM (void ((js_setMedia (self) (Types.toMediaListOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: CSSStyleSheetInit -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-media CSSStyleSheetInit.media specification>
+getMedia :: (MonadDOM m) => CSSStyleSheetInit -> m (Maybe MediaListOrString)
+getMedia self = liftDOM (((js_getMedia (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-media CSSStyleSheetInit.media specification>
+getMediaUnsafe :: (MonadDOM m, HasCallStack) => CSSStyleSheetInit -> m MediaListOrString
+getMediaUnsafe self = liftDOM ((((js_getMedia (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-media CSSStyleSheetInit.media specification>
+getMediaUnchecked :: (MonadDOM m) => CSSStyleSheetInit -> m MediaListOrString
+getMediaUnchecked self = liftDOM ((pFromJSVal <$> (js_getMedia (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: CSSStyleSheetInit -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-disabled CSSStyleSheetInit.disabled specification>
+setDisabled :: (MonadDOM m) => CSSStyleSheetInit -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
+        js_getDisabled :: CSSStyleSheetInit -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-disabled CSSStyleSheetInit.disabled specification>
+getDisabled :: (MonadDOM m) => CSSStyleSheetInit -> m (Maybe Bool)
+getDisabled self = liftDOM (((js_getDisabled (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-disabled CSSStyleSheetInit.disabled specification>
+getDisabledUnsafe :: (MonadDOM m, HasCallStack) => CSSStyleSheetInit -> m Bool
+getDisabledUnsafe self = liftDOM ((((js_getDisabled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-disabled CSSStyleSheetInit.disabled specification>
+getDisabledUnchecked :: (MonadDOM m) => CSSStyleSheetInit -> m Bool
+getDisabledUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisabled (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleValue.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSStyleValue
+       (js_parse, js_parseAll, parse, parse_, parseAll, parseAll_, CSSStyleValue(..), gTypeCSSStyleValue, IsCSSStyleValue, toCSSStyleValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"CSSStyleValue\"][\"parse\"]($1, $2); })"
+        js_parse :: JSString -> JSString -> IO CSSStyleValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleValue/parse_static MDN CSSStyleValue.parse documentation>
+parse :: (MonadDOM m, ToJSString property, ToJSString cssText) => property -> cssText -> m CSSStyleValue
+parse property cssText = liftDOM ((js_parse (toJSString property) (toJSString cssText)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleValue/parse_static MDN CSSStyleValue.parse documentation>
+parse_ :: (MonadDOM m, ToJSString property, ToJSString cssText) => property -> cssText -> m ()
+parse_ property cssText = liftDOM (void ((js_parse (toJSString property) (toJSString cssText))))
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"CSSStyleValue\"][\"parseAll\"]($1, $2); })"
+        js_parseAll :: JSString -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleValue/parseAll_static MDN CSSStyleValue.parseAll documentation>
+parseAll :: (MonadDOM m, ToJSString property, ToJSString cssText) => property -> cssText -> m [CSSStyleValue]
+parseAll property cssText = liftDOM (((js_parseAll (toJSString property) (toJSString cssText)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleValue/parseAll_static MDN CSSStyleValue.parseAll documentation>
+parseAll_ :: (MonadDOM m, ToJSString property, ToJSString cssText) => property -> cssText -> m ()
+parseAll_ property cssText = liftDOM (void ((js_parseAll (toJSString property) (toJSString cssText))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
@@ -1,68 +1,18 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
-       (js_insertRule, insertRule, insertRule_, js_deleteRule, deleteRule,
-        js_getCssRules, getCssRules, js_getConditionText, getConditionText,
-        CSSSupportsRule(..), gTypeCSSSupportsRule)
+       (CSSSupportsRule(..), gTypeCSSSupportsRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
-        js_insertRule :: CSSSupportsRule -> JSString -> Word -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
-insertRule ::
-           (MonadIO m, ToJSString rule) =>
-             CSSSupportsRule -> rule -> Word -> m Word
-insertRule self rule index
-  = liftIO (js_insertRule self (toJSString rule) index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
-insertRule_ ::
-            (MonadIO m, ToJSString rule) =>
-              CSSSupportsRule -> rule -> Word -> m ()
-insertRule_ self rule index
-  = liftIO (void (js_insertRule self (toJSString rule) index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
-        js_deleteRule :: CSSSupportsRule -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.deleteRule Mozilla CSSSupportsRule.deleteRule documentation> 
-deleteRule :: (MonadIO m) => CSSSupportsRule -> Word -> m ()
-deleteRule self index = liftIO (js_deleteRule self index)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
-        :: CSSSupportsRule -> IO CSSRuleList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.cssRules Mozilla CSSSupportsRule.cssRules documentation> 
-getCssRules :: (MonadIO m) => CSSSupportsRule -> m CSSRuleList
-getCssRules self = liftIO (js_getCssRules self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"conditionText\"]; })"
-        js_getConditionText :: CSSSupportsRule -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.conditionText Mozilla CSSSupportsRule.conditionText documentation> 
-getConditionText ::
-                 (MonadIO m, FromJSString result) => CSSSupportsRule -> m result
-getConditionText self
-  = liftIO (fromJSString <$> (js_getConditionText self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSTransformComponent.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSTransformComponent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSTransformComponent.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSTransformComponent
+       (js_toMatrix, js_setIs2D, js_getIs2D, toMatrix, toMatrix_, setIs2D, getIs2D, CSSTransformComponent(..), gTypeCSSTransformComponent, IsCSSTransformComponent, toCSSTransformComponent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toMatrix\"](); })"
+        js_toMatrix :: CSSTransformComponent -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/toMatrix MDN CSSTransformComponent.toMatrix documentation>
+toMatrix :: (MonadDOM m, IsCSSTransformComponent self) => self -> m DOMMatrix
+toMatrix self = liftDOM ((js_toMatrix ((Types.toCSSTransformComponent self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/toMatrix MDN CSSTransformComponent.toMatrix documentation>
+toMatrix_ :: (MonadDOM m, IsCSSTransformComponent self) => self -> m ()
+toMatrix_ self = liftDOM (void ((js_toMatrix ((Types.toCSSTransformComponent self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"is2D\"] = $2; })"
+        js_setIs2D :: CSSTransformComponent -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/is2D MDN CSSTransformComponent.is2D documentation>
+setIs2D :: (MonadDOM m, IsCSSTransformComponent self) => self -> Bool -> m ()
+setIs2D self val = liftDOM (void ((js_setIs2D ((Types.toCSSTransformComponent self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"is2D\"]; })"
+        js_getIs2D :: CSSTransformComponent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/is2D MDN CSSTransformComponent.is2D documentation>
+getIs2D :: (MonadDOM m, IsCSSTransformComponent self) => self -> m Bool
+getIs2D self = liftDOM ((js_getIs2D ((Types.toCSSTransformComponent self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSTransformValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSTransformValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSTransformValue.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSTransformValue
+       (js_newCSSTransformValue, js_toMatrix, js_getLength, js_getIs2D, newCSSTransformValue, toMatrix, toMatrix_, getLength, getIs2D, CSSTransformValue(..), gTypeCSSTransformValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSTransformValue\"]($1); })"
+        js_newCSSTransformValue :: JSVal -> IO CSSTransformValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/CSSTransformValue MDN CSSTransformValue. documentation>
+newCSSTransformValue :: (MonadDOM m, IsCSSTransformComponent transforms) => [transforms] -> m CSSTransformValue
+newCSSTransformValue transforms = liftDOM (((toJSVal transforms) >>= \a1' -> js_newCSSTransformValue a1'))
+
+foreign import javascript safe "(($1) => { return $1[\"toMatrix\"](); })"
+        js_toMatrix :: CSSTransformValue -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/toMatrix MDN CSSTransformValue.toMatrix documentation>
+toMatrix :: (MonadDOM m) => CSSTransformValue -> m DOMMatrix
+toMatrix self = liftDOM ((js_toMatrix (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/toMatrix MDN CSSTransformValue.toMatrix documentation>
+toMatrix_ :: (MonadDOM m) => CSSTransformValue -> m ()
+toMatrix_ self = liftDOM (void ((js_toMatrix (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSTransformValue -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/length MDN CSSTransformValue.length documentation>
+getLength :: (MonadDOM m) => CSSTransformValue -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"is2D\"]; })"
+        js_getIs2D :: CSSTransformValue -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/is2D MDN CSSTransformValue.is2D documentation>
+getIs2D :: (MonadDOM m) => CSSTransformValue -> m Bool
+getIs2D self = liftDOM ((js_getIs2D (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSTransition.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSTransition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSTransition.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSTransition
+       (js_getTransitionProperty, getTransitionProperty, CSSTransition(..), gTypeCSSTransition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"transitionProperty\"]; })"
+        js_getTransitionProperty :: CSSTransition -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransition/transitionProperty MDN CSSTransition.transitionProperty documentation>
+getTransitionProperty :: (MonadDOM m, FromJSString result) => CSSTransition -> m result
+getTransitionProperty self = liftDOM ((fromJSString <$> (js_getTransitionProperty (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSTranslate.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSTranslate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSTranslate.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSTranslate
+       (js_newCSSTranslate, js_setX, js_getX, js_setY, js_getY, js_setZ, js_getZ, newCSSTranslate, setX, getX, setY, getY, setZ, getZ, CSSTranslate(..), gTypeCSSTranslate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"CSSTranslate\"]($1, $2, $3); })"
+        js_newCSSTranslate :: CSSNumericValue -> CSSNumericValue -> JSVal -> IO CSSTranslate
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/CSSTranslate MDN CSSTranslate. documentation>
+newCSSTranslate :: (MonadDOM m, IsCSSNumericValue x, IsCSSNumericValue y, IsCSSNumericValue z) => x -> y -> Maybe z -> m CSSTranslate
+newCSSTranslate x y z = liftDOM (((P.maybe (P.return jsUndefined) toJSVal z) >>= \a3' -> js_newCSSTranslate (Types.toCSSNumericValue x) (Types.toCSSNumericValue y) a3'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: CSSTranslate -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/x MDN CSSTranslate.x documentation>
+setX :: (MonadDOM m, IsCSSNumericValue val) => CSSTranslate -> val -> m ()
+setX self val = liftDOM (void ((js_setX (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: CSSTranslate -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/x MDN CSSTranslate.x documentation>
+getX :: (MonadDOM m) => CSSTranslate -> m CSSNumericValue
+getX self = liftDOM ((js_getX (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: CSSTranslate -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/y MDN CSSTranslate.y documentation>
+setY :: (MonadDOM m, IsCSSNumericValue val) => CSSTranslate -> val -> m ()
+setY self val = liftDOM (void ((js_setY (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: CSSTranslate -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/y MDN CSSTranslate.y documentation>
+getY :: (MonadDOM m) => CSSTranslate -> m CSSNumericValue
+getY self = liftDOM ((js_getY (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"z\"] = $2; })"
+        js_setZ :: CSSTranslate -> CSSNumericValue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/z MDN CSSTranslate.z documentation>
+setZ :: (MonadDOM m, IsCSSNumericValue val) => CSSTranslate -> val -> m ()
+setZ self val = liftDOM (void ((js_setZ (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: CSSTranslate -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/z MDN CSSTranslate.z documentation>
+getZ :: (MonadDOM m) => CSSTranslate -> m CSSNumericValue
+getZ self = liftDOM ((js_getZ (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSUnitValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSUnitValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSUnitValue.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSUnitValue
+       (js_newCSSUnitValue, js_setValue, js_getValue, js_getUnit, newCSSUnitValue, setValue, getValue, getUnit, CSSUnitValue(..), gTypeCSSUnitValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CSSUnitValue\"]($1, $2); })"
+        js_newCSSUnitValue :: Double -> JSString -> IO CSSUnitValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnitValue/CSSUnitValue MDN CSSUnitValue. documentation>
+newCSSUnitValue :: (MonadDOM m, ToJSString unit) => Double -> unit -> m CSSUnitValue
+newCSSUnitValue value unit = liftDOM ((js_newCSSUnitValue (value) (toJSString unit)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: CSSUnitValue -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnitValue/value MDN CSSUnitValue.value documentation>
+setValue :: (MonadDOM m) => CSSUnitValue -> Double -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: CSSUnitValue -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnitValue/value MDN CSSUnitValue.value documentation>
+getValue :: (MonadDOM m) => CSSUnitValue -> m Double
+getValue self = liftDOM ((js_getValue (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unit\"]; })"
+        js_getUnit :: CSSUnitValue -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnitValue/unit MDN CSSUnitValue.unit documentation>
+getUnit :: (MonadDOM m, FromJSString result) => CSSUnitValue -> m result
+getUnit self = liftDOM ((fromJSString <$> (js_getUnit (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSUnparsedValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSUnparsedValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSUnparsedValue.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSUnparsedValue
+       (js_newCSSUnparsedValue, js_getLength, newCSSUnparsedValue, getLength, CSSUnparsedValue(..), gTypeCSSUnparsedValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CSSUnparsedValue\"]($1); })"
+        js_newCSSUnparsedValue :: JSVal -> IO CSSUnparsedValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnparsedValue/CSSUnparsedValue MDN CSSUnparsedValue. documentation>
+newCSSUnparsedValue :: (MonadDOM m, IsCSSUnparsedSegment members) => [members] -> m CSSUnparsedValue
+newCSSUnparsedValue members = liftDOM (((toJSVal members) >>= \a1' -> js_newCSSUnparsedValue a1'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CSSUnparsedValue -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnparsedValue/length MDN CSSUnparsedValue.length documentation>
+getLength :: (MonadDOM m) => CSSUnparsedValue -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs
+++ /dev/null
@@ -1,80 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.CSSValue
-       (pattern CSS_INHERIT, pattern CSS_PRIMITIVE_VALUE,
-        pattern CSS_VALUE_LIST, pattern CSS_CUSTOM, js_setCssText,
-        setCssText, js_getCssText, getCssText, getCssTextUnsafe,
-        getCssTextUnchecked, js_getCssValueType, getCssValueType,
-        CSSValue(..), gTypeCSSValue, IsCSSValue, toCSSValue)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern CSS_INHERIT = 0
-pattern CSS_PRIMITIVE_VALUE = 1
-pattern CSS_VALUE_LIST = 2
-pattern CSS_CUSTOM = 3
- 
-foreign import javascript safe "(($1, $2) => { $1[\"cssText\"] = $2; })"
-        js_setCssText :: CSSValue -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-setCssText ::
-           (MonadIO m, IsCSSValue self, ToJSString val) =>
-             self -> Maybe val -> m ()
-setCssText self val
-  = liftIO (js_setCssText (toCSSValue self) (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })" js_getCssText ::
-        CSSValue -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-getCssText ::
-           (MonadIO m, IsCSSValue self, FromJSString result) =>
-             self -> m (Maybe result)
-getCssText self
-  = liftIO (fromMaybeJSString <$> (js_getCssText (toCSSValue self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-getCssTextUnsafe ::
-                 (MonadIO m, IsCSSValue self, HasCallStack, FromJSString result) =>
-                   self -> m result
-getCssTextUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getCssText (toCSSValue self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-getCssTextUnchecked ::
-                    (MonadIO m, IsCSSValue self, FromJSString result) =>
-                      self -> m result
-getCssTextUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getCssText (toCSSValue self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssValueType\"]; })"
-        js_getCssValueType :: CSSValue -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssValueType Mozilla CSSValue.cssValueType documentation> 
-getCssValueType :: (MonadIO m, IsCSSValue self) => self -> m Word
-getCssValueType self
-  = liftIO (js_getCssValueType (toCSSValue self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.CSSValueList
-       (js_item, item, item_, js_getLength, getLength, CSSValueList(..),
-        gTypeCSSValueList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        CSSValueList -> Word -> IO CSSValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
-item :: (MonadIO m) => CSSValueList -> Word -> m CSSValue
-item self index = liftIO (js_item self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
-item_ :: (MonadIO m) => CSSValueList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        CSSValueList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.length Mozilla CSSValueList.length documentation> 
-getLength :: (MonadIO m) => CSSValueList -> m Word
-getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSVariableReferenceValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSVariableReferenceValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSVariableReferenceValue.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSVariableReferenceValue
+       (js_newCSSVariableReferenceValue, js_setVariable, js_getVariable, js_getFallback, newCSSVariableReferenceValue, setVariable, getVariable, getFallback, getFallbackUnsafe, getFallbackUnchecked, CSSVariableReferenceValue(..), gTypeCSSVariableReferenceValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CSSVariableReferenceValue\"]($1, $2); })"
+        js_newCSSVariableReferenceValue :: JSString -> JSVal -> IO CSSVariableReferenceValue
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/CSSVariableReferenceValue MDN CSSVariableReferenceValue. documentation>
+newCSSVariableReferenceValue :: (MonadDOM m, ToJSString variable) => variable -> Maybe CSSUnparsedValue -> m CSSVariableReferenceValue
+newCSSVariableReferenceValue variable fallback = liftDOM (((toJSVal fallback) >>= \a2' -> js_newCSSVariableReferenceValue (toJSString variable) a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"variable\"] = $2; })"
+        js_setVariable :: CSSVariableReferenceValue -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/variable MDN CSSVariableReferenceValue.variable documentation>
+setVariable :: (MonadDOM m, ToJSString val) => CSSVariableReferenceValue -> val -> m ()
+setVariable self val = liftDOM (void ((js_setVariable (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"variable\"]; })"
+        js_getVariable :: CSSVariableReferenceValue -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/variable MDN CSSVariableReferenceValue.variable documentation>
+getVariable :: (MonadDOM m, FromJSString result) => CSSVariableReferenceValue -> m result
+getVariable self = liftDOM ((fromJSString <$> (js_getVariable (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fallback\"]; })"
+        js_getFallback :: CSSVariableReferenceValue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/fallback MDN CSSVariableReferenceValue.fallback documentation>
+getFallback :: (MonadDOM m) => CSSVariableReferenceValue -> m (Maybe CSSUnparsedValue)
+getFallback self = liftDOM (((js_getFallback (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/fallback MDN CSSVariableReferenceValue.fallback documentation>
+getFallbackUnsafe :: (MonadDOM m, HasCallStack) => CSSVariableReferenceValue -> m CSSUnparsedValue
+getFallbackUnsafe self = liftDOM ((((js_getFallback (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/fallback MDN CSSVariableReferenceValue.fallback documentation>
+getFallbackUnchecked :: (MonadDOM m) => CSSVariableReferenceValue -> m CSSUnparsedValue
+getFallbackUnchecked self = liftDOM ((pFromJSVal <$> (js_getFallback (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSViewTransitionRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSViewTransitionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSViewTransitionRule.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CSSViewTransitionRule
+       (js_getNavigation, js_getTypes, getNavigation, getTypes, CSSViewTransitionRule(..), gTypeCSSViewTransitionRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigation\"]; })"
+        js_getNavigation :: CSSViewTransitionRule -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CSSViewTransitionRule/navigation MDN CSSViewTransitionRule.navigation documentation>
+getNavigation :: (MonadDOM m, FromJSString result) => CSSViewTransitionRule -> m result
+getNavigation self = liftDOM ((fromJSString <$> (js_getNavigation (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })"
+        js_getTypes :: CSSViewTransitionRule -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CSSViewTransitionRule/types MDN CSSViewTransitionRule.types documentation>
+getTypes :: (MonadDOM m, FromJSString result) => CSSViewTransitionRule -> m [result]
+getTypes self = liftDOM (((js_getTypes (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Cache.hs b/src/GHCJS/DOM/JSFFI/Generated/Cache.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Cache.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Cache
+       (js_add, js_addAll, js_delete, js_keys, js_match, js_matchAll, js_put, add, addAll, delete, delete_, keys, keys_, match, match_, matchAll, matchAll_, put, Cache(..), gTypeCache)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"add\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_add :: Cache -> RequestInfo -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/add MDN Cache.add documentation>
+add :: (MonadDOM m, IsRequestInfo request) => Cache -> request -> m ()
+add self request = liftDOM (void (((js_add (self) (Types.toRequestInfo request)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"addAll\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_addAll :: Cache -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/addAll MDN Cache.addAll documentation>
+addAll :: (MonadDOM m, IsRequestInfo requests) => Cache -> [requests] -> m ()
+addAll self requests = liftDOM (void ((((toJSVal requests) >>= \a2' -> js_addAll (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"delete\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_delete :: Cache -> RequestInfo -> JSVal -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/delete MDN Cache.delete documentation>
+delete :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> request -> Maybe options -> m Bool
+delete self request options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_delete (self) (Types.toRequestInfo request) a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/delete MDN Cache.delete documentation>
+delete_ :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> request -> Maybe options -> m ()
+delete_ self request options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_delete (self) (Types.toRequestInfo request) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"keys\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_keys :: Cache -> JSVal -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/keys MDN Cache.keys documentation>
+keys :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> Maybe request -> Maybe options -> m [Request]
+keys self request options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal request) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_keys (self) a2' a3') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/keys MDN Cache.keys documentation>
+keys_ :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> Maybe request -> Maybe options -> m ()
+keys_ self request options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal request) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_keys (self) a2' a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"match\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_match :: Cache -> RequestInfo -> JSVal -> IO (JSVal, ResponseOrUndefined)
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/match MDN Cache.match documentation>
+match :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> request -> Maybe options -> m ResponseOrUndefined
+match self request options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_match (self) (Types.toRequestInfo request) a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/match MDN Cache.match documentation>
+match_ :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> request -> Maybe options -> m ()
+match_ self request options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_match (self) (Types.toRequestInfo request) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"matchAll\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_matchAll :: Cache -> JSVal -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/matchAll MDN Cache.matchAll documentation>
+matchAll :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> Maybe request -> Maybe options -> m [Response]
+matchAll self request options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal request) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_matchAll (self) a2' a3') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/matchAll MDN Cache.matchAll documentation>
+matchAll_ :: (MonadDOM m, IsRequestInfo request, IsCacheQueryOptions options) => Cache -> Maybe request -> Maybe options -> m ()
+matchAll_ self request options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal request) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_matchAll (self) a2' a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"put\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_put :: Cache -> RequestInfo -> Response -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Cache/put MDN Cache.put documentation>
+put :: (MonadDOM m, IsRequestInfo request) => Cache -> request -> Response -> m ()
+put self request response = liftDOM (void (((js_put (self) (Types.toRequestInfo request) (response)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CacheQueryOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CacheQueryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CacheQueryOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CacheQueryOptions
+       (js_newCacheQueryOptions, js_setIgnoreSearch, js_getIgnoreSearch, js_setIgnoreMethod, js_getIgnoreMethod, js_setIgnoreVary, js_getIgnoreVary, newCacheQueryOptions, setIgnoreSearch, getIgnoreSearch, getIgnoreSearchUnsafe, getIgnoreSearchUnchecked, setIgnoreMethod, getIgnoreMethod, getIgnoreMethodUnsafe, getIgnoreMethodUnchecked, setIgnoreVary, getIgnoreVary, getIgnoreVaryUnsafe, getIgnoreVaryUnchecked, CacheQueryOptions(..), gTypeCacheQueryOptions, IsCacheQueryOptions, toCacheQueryOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCacheQueryOptions :: IO CacheQueryOptions
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions CacheQueryOptions specification>
+newCacheQueryOptions :: (MonadDOM m) => m CacheQueryOptions
+newCacheQueryOptions = liftDOM ((js_newCacheQueryOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ignoreSearch\"] = $2; })"
+        js_setIgnoreSearch :: CacheQueryOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoresearch CacheQueryOptions.ignoreSearch specification>
+setIgnoreSearch :: (MonadDOM m, IsCacheQueryOptions self) => self -> Bool -> m ()
+setIgnoreSearch self val = liftDOM (void ((js_setIgnoreSearch ((Types.toCacheQueryOptions self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ignoreSearch\"]; })"
+        js_getIgnoreSearch :: CacheQueryOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoresearch CacheQueryOptions.ignoreSearch specification>
+getIgnoreSearch :: (MonadDOM m, IsCacheQueryOptions self) => self -> m (Maybe Bool)
+getIgnoreSearch self = liftDOM (((js_getIgnoreSearch ((Types.toCacheQueryOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoresearch CacheQueryOptions.ignoreSearch specification>
+getIgnoreSearchUnsafe :: (MonadDOM m, IsCacheQueryOptions self, HasCallStack) => self -> m Bool
+getIgnoreSearchUnsafe self = liftDOM ((((js_getIgnoreSearch ((Types.toCacheQueryOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoresearch CacheQueryOptions.ignoreSearch specification>
+getIgnoreSearchUnchecked :: (MonadDOM m, IsCacheQueryOptions self) => self -> m Bool
+getIgnoreSearchUnchecked self = liftDOM ((pFromJSVal <$> (js_getIgnoreSearch ((Types.toCacheQueryOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ignoreMethod\"] = $2; })"
+        js_setIgnoreMethod :: CacheQueryOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoremethod CacheQueryOptions.ignoreMethod specification>
+setIgnoreMethod :: (MonadDOM m, IsCacheQueryOptions self) => self -> Bool -> m ()
+setIgnoreMethod self val = liftDOM (void ((js_setIgnoreMethod ((Types.toCacheQueryOptions self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ignoreMethod\"]; })"
+        js_getIgnoreMethod :: CacheQueryOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoremethod CacheQueryOptions.ignoreMethod specification>
+getIgnoreMethod :: (MonadDOM m, IsCacheQueryOptions self) => self -> m (Maybe Bool)
+getIgnoreMethod self = liftDOM (((js_getIgnoreMethod ((Types.toCacheQueryOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoremethod CacheQueryOptions.ignoreMethod specification>
+getIgnoreMethodUnsafe :: (MonadDOM m, IsCacheQueryOptions self, HasCallStack) => self -> m Bool
+getIgnoreMethodUnsafe self = liftDOM ((((js_getIgnoreMethod ((Types.toCacheQueryOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoremethod CacheQueryOptions.ignoreMethod specification>
+getIgnoreMethodUnchecked :: (MonadDOM m, IsCacheQueryOptions self) => self -> m Bool
+getIgnoreMethodUnchecked self = liftDOM ((pFromJSVal <$> (js_getIgnoreMethod ((Types.toCacheQueryOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ignoreVary\"] = $2; })"
+        js_setIgnoreVary :: CacheQueryOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignorevary CacheQueryOptions.ignoreVary specification>
+setIgnoreVary :: (MonadDOM m, IsCacheQueryOptions self) => self -> Bool -> m ()
+setIgnoreVary self val = liftDOM (void ((js_setIgnoreVary ((Types.toCacheQueryOptions self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ignoreVary\"]; })"
+        js_getIgnoreVary :: CacheQueryOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignorevary CacheQueryOptions.ignoreVary specification>
+getIgnoreVary :: (MonadDOM m, IsCacheQueryOptions self) => self -> m (Maybe Bool)
+getIgnoreVary self = liftDOM (((js_getIgnoreVary ((Types.toCacheQueryOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignorevary CacheQueryOptions.ignoreVary specification>
+getIgnoreVaryUnsafe :: (MonadDOM m, IsCacheQueryOptions self, HasCallStack) => self -> m Bool
+getIgnoreVaryUnsafe self = liftDOM ((((js_getIgnoreVary ((Types.toCacheQueryOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignorevary CacheQueryOptions.ignoreVary specification>
+getIgnoreVaryUnchecked :: (MonadDOM m, IsCacheQueryOptions self) => self -> m Bool
+getIgnoreVaryUnchecked self = liftDOM ((pFromJSVal <$> (js_getIgnoreVary ((Types.toCacheQueryOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CacheStorage.hs b/src/GHCJS/DOM/JSFFI/Generated/CacheStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CacheStorage.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CacheStorage
+       (js_delete, js_has, js_keys, js_match, js_open, delete, delete_, has, has_, keys, keys_, match, match_, open, open_, CacheStorage(..), gTypeCacheStorage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"delete\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_delete :: CacheStorage -> JSString -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/delete MDN CacheStorage.delete documentation>
+delete :: (MonadDOM m, ToJSString cacheName) => CacheStorage -> cacheName -> m Bool
+delete self cacheName = liftDOM (((js_delete (self) (toJSString cacheName)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/delete MDN CacheStorage.delete documentation>
+delete_ :: (MonadDOM m, ToJSString cacheName) => CacheStorage -> cacheName -> m ()
+delete_ self cacheName = liftDOM (void (((js_delete (self) (toJSString cacheName)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"has\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_has :: CacheStorage -> JSString -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/has MDN CacheStorage.has documentation>
+has :: (MonadDOM m, ToJSString cacheName) => CacheStorage -> cacheName -> m Bool
+has self cacheName = liftDOM (((js_has (self) (toJSString cacheName)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/has MDN CacheStorage.has documentation>
+has_ :: (MonadDOM m, ToJSString cacheName) => CacheStorage -> cacheName -> m ()
+has_ self cacheName = liftDOM (void (((js_has (self) (toJSString cacheName)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"keys\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_keys :: CacheStorage -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/keys MDN CacheStorage.keys documentation>
+keys :: (MonadDOM m, FromJSString result) => CacheStorage -> m [result]
+keys self = liftDOM ((((js_keys (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/keys MDN CacheStorage.keys documentation>
+keys_ :: (MonadDOM m) => CacheStorage -> m ()
+keys_ self = liftDOM (void (((js_keys (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"match\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_match :: CacheStorage -> RequestInfo -> JSVal -> IO (JSVal, ResponseOrUndefined)
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/match MDN CacheStorage.match documentation>
+match :: (MonadDOM m, IsRequestInfo request) => CacheStorage -> request -> Maybe MultiCacheQueryOptions -> m ResponseOrUndefined
+match self request options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_match (self) (Types.toRequestInfo request) a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/match MDN CacheStorage.match documentation>
+match_ :: (MonadDOM m, IsRequestInfo request) => CacheStorage -> request -> Maybe MultiCacheQueryOptions -> m ()
+match_ self request options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_match (self) (Types.toRequestInfo request) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"open\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_open :: CacheStorage -> JSString -> IO (JSVal, Cache)
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/open MDN CacheStorage.open documentation>
+open :: (MonadDOM m, ToJSString cacheName) => CacheStorage -> cacheName -> m Cache
+open self cacheName = liftDOM (((js_open (self) (toJSString cacheName)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/open MDN CacheStorage.open documentation>
+open_ :: (MonadDOM m, ToJSString cacheName) => CacheStorage -> cacheName -> m ()
+open_ self cacheName = liftDOM (void (((js_open (self) (toJSString cacheName)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
@@ -1,44 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-fromelement (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack
-       (js_requestFrame, requestFrame, js_getCanvas, getCanvas,
-        CanvasCaptureMediaStreamTrack(..),
-        gTypeCanvasCaptureMediaStreamTrack)
+       (js_requestFrame, js_getCanvas, requestFrame, getCanvas, CanvasCaptureMediaStreamTrack(..), gTypeCanvasCaptureMediaStreamTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"requestFrame\"](); })"
-        js_requestFrame :: CanvasCaptureMediaStreamTrack -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack.requestFrame Mozilla CanvasCaptureMediaStreamTrack.requestFrame documentation> 
-requestFrame ::
-             (MonadIO m) => CanvasCaptureMediaStreamTrack -> m ()
-requestFrame self = liftIO (js_requestFrame self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })" js_getCanvas ::
-        CanvasCaptureMediaStreamTrack -> IO HTMLCanvasElement
+foreign import javascript safe "(($1) => { return $1[\"requestFrame\"](); })"
+        js_requestFrame :: CanvasCaptureMediaStreamTrack -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasCaptureMediaStreamTrack/requestFrame MDN CanvasCaptureMediaStreamTrack.requestFrame documentation>
+requestFrame :: (MonadDOM m) => CanvasCaptureMediaStreamTrack -> m ()
+requestFrame self = liftDOM (void ((js_requestFrame (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack.canvas Mozilla CanvasCaptureMediaStreamTrack.canvas documentation> 
-getCanvas ::
-          (MonadIO m) => CanvasCaptureMediaStreamTrack -> m HTMLCanvasElement
-getCanvas self = liftIO (js_getCanvas self)
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })"
+        js_getCanvas :: CanvasCaptureMediaStreamTrack -> IO HTMLCanvasElement
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasCaptureMediaStreamTrack/canvas MDN CanvasCaptureMediaStreamTrack.canvas documentation>
+getCanvas :: (MonadDOM m) => CanvasCaptureMediaStreamTrack -> m HTMLCanvasElement
+getCanvas self = liftDOM ((js_getCanvas (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasCompositing.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasCompositing.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasCompositing.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasCompositing
+       (js_setGlobalAlpha, js_getGlobalAlpha, js_setGlobalCompositeOperation, js_getGlobalCompositeOperation, setGlobalAlpha, getGlobalAlpha, setGlobalCompositeOperation, getGlobalCompositeOperation, CanvasCompositing(..), gTypeCanvasCompositing, IsCanvasCompositing, toCanvasCompositing)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"globalAlpha\"] = $2; })"
+        js_setGlobalAlpha :: CanvasCompositing -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalAlpha MDN CanvasCompositing.globalAlpha documentation>
+setGlobalAlpha :: (MonadDOM m, IsCanvasCompositing self) => self -> Double -> m ()
+setGlobalAlpha self val = liftDOM (void ((js_setGlobalAlpha ((Types.toCanvasCompositing self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"globalAlpha\"]; })"
+        js_getGlobalAlpha :: CanvasCompositing -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalAlpha MDN CanvasCompositing.globalAlpha documentation>
+getGlobalAlpha :: (MonadDOM m, IsCanvasCompositing self) => self -> m Double
+getGlobalAlpha self = liftDOM ((js_getGlobalAlpha ((Types.toCanvasCompositing self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"globalCompositeOperation\"] = $2; })"
+        js_setGlobalCompositeOperation :: CanvasCompositing -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation MDN CanvasCompositing.globalCompositeOperation documentation>
+setGlobalCompositeOperation :: (MonadDOM m, IsCanvasCompositing self, ToJSString val) => self -> val -> m ()
+setGlobalCompositeOperation self val = liftDOM (void ((js_setGlobalCompositeOperation ((Types.toCanvasCompositing self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"globalCompositeOperation\"]; })"
+        js_getGlobalCompositeOperation :: CanvasCompositing -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation MDN CanvasCompositing.globalCompositeOperation documentation>
+getGlobalCompositeOperation :: (MonadDOM m, IsCanvasCompositing self, FromJSString result) => self -> m result
+getGlobalCompositeOperation self = liftDOM ((fromJSString <$> (js_getGlobalCompositeOperation ((Types.toCanvasCompositing self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasDrawImage.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasDrawImage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasDrawImage.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasDrawImage
+       (js_drawImage, js_drawImageScaled, js_drawImagePart, drawImage, drawImageScaled, drawImagePart, CanvasDrawImage(..), gTypeCanvasDrawImage, IsCanvasDrawImage, toCanvasDrawImage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"drawImage\"]($2, $3, $4); })"
+        js_drawImage :: CanvasDrawImage -> CanvasImageSource -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/drawImage MDN CanvasDrawImage.drawImage documentation>
+drawImage :: (MonadDOM m, IsCanvasDrawImage self, IsCanvasImageSource image) => self -> image -> Double -> Double -> m ()
+drawImage self image dx dy = liftDOM (void ((js_drawImage ((Types.toCanvasDrawImage self)) (Types.toCanvasImageSource image) (dx) (dy))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawImage\"]($2, $3, $4, $5, $6); })"
+        js_drawImageScaled :: CanvasDrawImage -> CanvasImageSource -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/drawImage MDN CanvasDrawImage.drawImage documentation>
+drawImageScaled :: (MonadDOM m, IsCanvasDrawImage self, IsCanvasImageSource image) => self -> image -> Double -> Double -> Double -> Double -> m ()
+drawImageScaled self image dx dy dw dh = liftDOM (void ((js_drawImageScaled ((Types.toCanvasDrawImage self)) (Types.toCanvasImageSource image) (dx) (dy) (dw) (dh))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"drawImage\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_drawImagePart :: CanvasDrawImage -> CanvasImageSource -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/drawImage MDN CanvasDrawImage.drawImage documentation>
+drawImagePart :: (MonadDOM m, IsCanvasDrawImage self, IsCanvasImageSource image) => self -> image -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> m ()
+drawImagePart self image sx sy sw sh dx dy dw dh = liftDOM (void ((js_drawImagePart ((Types.toCanvasDrawImage self)) (Types.toCanvasImageSource image) (sx) (sy) (sw) (sh) (dx) (dy) (dw) (dh))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasDrawPath.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasDrawPath.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasDrawPath.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasDrawPath
+       (js_beginPath, js_clip, js_clipPath, js_fill, js_fillPath, js_isPointInPath, js_isPointInPathPath, js_isPointInStroke, js_isPointInStrokePath, js_stroke, js_strokePath, beginPath, clip, clipPath, fill, fillPath, isPointInPath, isPointInPath_, isPointInPathPath, isPointInPathPath_, isPointInStroke, isPointInStroke_, isPointInStrokePath, isPointInStrokePath_, stroke, strokePath, CanvasDrawPath(..), gTypeCanvasDrawPath, IsCanvasDrawPath, toCanvasDrawPath)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"beginPath\"](); })"
+        js_beginPath :: CanvasDrawPath -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/beginPath MDN CanvasDrawPath.beginPath documentation>
+beginPath :: (MonadDOM m, IsCanvasDrawPath self) => self -> m ()
+beginPath self = liftDOM (void ((js_beginPath ((Types.toCanvasDrawPath self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"clip\"]($2); })"
+        js_clip :: CanvasDrawPath -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clip MDN CanvasDrawPath.clip documentation>
+clip :: (MonadDOM m, IsCanvasDrawPath self) => self -> Maybe CanvasFillRule -> m ()
+clip self fillRule = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a2' -> js_clip ((Types.toCanvasDrawPath self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"clip\"]($2, $3); })"
+        js_clipPath :: CanvasDrawPath -> Path2D -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clip MDN CanvasDrawPath.clip documentation>
+clipPath :: (MonadDOM m, IsCanvasDrawPath self) => self -> Path2D -> Maybe CanvasFillRule -> m ()
+clipPath self path fillRule = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a3' -> js_clipPath ((Types.toCanvasDrawPath self)) (path) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"fill\"]($2); })"
+        js_fill :: CanvasDrawPath -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fill MDN CanvasDrawPath.fill documentation>
+fill :: (MonadDOM m, IsCanvasDrawPath self) => self -> Maybe CanvasFillRule -> m ()
+fill self fillRule = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a2' -> js_fill ((Types.toCanvasDrawPath self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"fill\"]($2, $3); })"
+        js_fillPath :: CanvasDrawPath -> Path2D -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fill MDN CanvasDrawPath.fill documentation>
+fillPath :: (MonadDOM m, IsCanvasDrawPath self) => self -> Path2D -> Maybe CanvasFillRule -> m ()
+fillPath self path fillRule = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a3' -> js_fillPath ((Types.toCanvasDrawPath self)) (path) a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"isPointInPath\"]($2, $3, $4); })"
+        js_isPointInPath :: CanvasDrawPath -> Double -> Double -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInPath MDN CanvasDrawPath.isPointInPath documentation>
+isPointInPath :: (MonadDOM m, IsCanvasDrawPath self) => self -> Double -> Double -> Maybe CanvasFillRule -> m Bool
+isPointInPath self x y fillRule = liftDOM (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a4' -> js_isPointInPath ((Types.toCanvasDrawPath self)) (x) (y) a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInPath MDN CanvasDrawPath.isPointInPath documentation>
+isPointInPath_ :: (MonadDOM m, IsCanvasDrawPath self) => self -> Double -> Double -> Maybe CanvasFillRule -> m ()
+isPointInPath_ self x y fillRule = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a4' -> js_isPointInPath ((Types.toCanvasDrawPath self)) (x) (y) a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"isPointInPath\"]($2, $3, $4, $5); })"
+        js_isPointInPathPath :: CanvasDrawPath -> Path2D -> Double -> Double -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInPath MDN CanvasDrawPath.isPointInPath documentation>
+isPointInPathPath :: (MonadDOM m, IsCanvasDrawPath self) => self -> Path2D -> Double -> Double -> Maybe CanvasFillRule -> m Bool
+isPointInPathPath self path x y fillRule = liftDOM (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a5' -> js_isPointInPathPath ((Types.toCanvasDrawPath self)) (path) (x) (y) a5'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInPath MDN CanvasDrawPath.isPointInPath documentation>
+isPointInPathPath_ :: (MonadDOM m, IsCanvasDrawPath self) => self -> Path2D -> Double -> Double -> Maybe CanvasFillRule -> m ()
+isPointInPathPath_ self path x y fillRule = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal fillRule) >>= \a5' -> js_isPointInPathPath ((Types.toCanvasDrawPath self)) (path) (x) (y) a5')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"isPointInStroke\"]($2, $3); })"
+        js_isPointInStroke :: CanvasDrawPath -> Double -> Double -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInStroke MDN CanvasDrawPath.isPointInStroke documentation>
+isPointInStroke :: (MonadDOM m, IsCanvasDrawPath self) => self -> Double -> Double -> m Bool
+isPointInStroke self x y = liftDOM ((js_isPointInStroke ((Types.toCanvasDrawPath self)) (x) (y)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInStroke MDN CanvasDrawPath.isPointInStroke documentation>
+isPointInStroke_ :: (MonadDOM m, IsCanvasDrawPath self) => self -> Double -> Double -> m ()
+isPointInStroke_ self x y = liftDOM (void ((js_isPointInStroke ((Types.toCanvasDrawPath self)) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"isPointInStroke\"]($2, $3, $4); })"
+        js_isPointInStrokePath :: CanvasDrawPath -> Path2D -> Double -> Double -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInStroke MDN CanvasDrawPath.isPointInStroke documentation>
+isPointInStrokePath :: (MonadDOM m, IsCanvasDrawPath self) => self -> Path2D -> Double -> Double -> m Bool
+isPointInStrokePath self path x y = liftDOM ((js_isPointInStrokePath ((Types.toCanvasDrawPath self)) (path) (x) (y)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInStroke MDN CanvasDrawPath.isPointInStroke documentation>
+isPointInStrokePath_ :: (MonadDOM m, IsCanvasDrawPath self) => self -> Path2D -> Double -> Double -> m ()
+isPointInStrokePath_ self path x y = liftDOM (void ((js_isPointInStrokePath ((Types.toCanvasDrawPath self)) (path) (x) (y))))
+
+foreign import javascript safe "(($1) => { return $1[\"stroke\"](); })"
+        js_stroke :: CanvasDrawPath -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/stroke MDN CanvasDrawPath.stroke documentation>
+stroke :: (MonadDOM m, IsCanvasDrawPath self) => self -> m ()
+stroke self = liftDOM (void ((js_stroke ((Types.toCanvasDrawPath self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"stroke\"]($2); })"
+        js_strokePath :: CanvasDrawPath -> Path2D -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/stroke MDN CanvasDrawPath.stroke documentation>
+strokePath :: (MonadDOM m, IsCanvasDrawPath self) => self -> Path2D -> m ()
+strokePath self path = liftDOM (void ((js_strokePath ((Types.toCanvasDrawPath self)) (path))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasFillStrokeStyles.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasFillStrokeStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasFillStrokeStyles.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasFillStrokeStyles
+       (js_createConicGradient, js_createLinearGradient, js_createPattern, js_createRadialGradient, js_setStrokeStyle, js_getStrokeStyle, js_setFillStyle, js_getFillStyle, createConicGradient, createConicGradient_, createLinearGradient, createLinearGradient_, createPattern, createPattern_, createPatternUnsafe, createPatternUnchecked, createRadialGradient, createRadialGradient_, setStrokeStyle, getStrokeStyle, setFillStyle, getFillStyle, CanvasFillStrokeStyles(..), gTypeCanvasFillStrokeStyles, IsCanvasFillStrokeStyles, toCanvasFillStrokeStyles)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createConicGradient\"]($2, $3, $4); })"
+        js_createConicGradient :: CanvasFillStrokeStyles -> Double -> Double -> Double -> IO CanvasGradient
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createConicGradient MDN CanvasFillStrokeStyles.createConicGradient documentation>
+createConicGradient :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> Double -> Double -> Double -> m CanvasGradient
+createConicGradient self startAngle x y = liftDOM ((js_createConicGradient ((Types.toCanvasFillStrokeStyles self)) (startAngle) (x) (y)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createConicGradient MDN CanvasFillStrokeStyles.createConicGradient documentation>
+createConicGradient_ :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> Double -> Double -> Double -> m ()
+createConicGradient_ self startAngle x y = liftDOM (void ((js_createConicGradient ((Types.toCanvasFillStrokeStyles self)) (startAngle) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"createLinearGradient\"]($2, $3, $4, $5); })"
+        js_createLinearGradient :: CanvasFillStrokeStyles -> Double -> Double -> Double -> Double -> IO CanvasGradient
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createLinearGradient MDN CanvasFillStrokeStyles.createLinearGradient documentation>
+createLinearGradient :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> Double -> Double -> Double -> Double -> m CanvasGradient
+createLinearGradient self x0 y0 x1 y1 = liftDOM ((js_createLinearGradient ((Types.toCanvasFillStrokeStyles self)) (x0) (y0) (x1) (y1)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createLinearGradient MDN CanvasFillStrokeStyles.createLinearGradient documentation>
+createLinearGradient_ :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> Double -> Double -> Double -> Double -> m ()
+createLinearGradient_ self x0 y0 x1 y1 = liftDOM (void ((js_createLinearGradient ((Types.toCanvasFillStrokeStyles self)) (x0) (y0) (x1) (y1))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createPattern\"]($2, $3); })"
+        js_createPattern :: CanvasFillStrokeStyles -> CanvasImageSource -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createPattern MDN CanvasFillStrokeStyles.createPattern documentation>
+createPattern :: (MonadDOM m, IsCanvasFillStrokeStyles self, IsCanvasImageSource image, ToJSString repetition) => self -> image -> repetition -> m (Maybe CanvasPattern)
+createPattern self image repetition = liftDOM (((js_createPattern ((Types.toCanvasFillStrokeStyles self)) (Types.toCanvasImageSource image) (toJSString repetition)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createPattern MDN CanvasFillStrokeStyles.createPattern documentation>
+createPattern_ :: (MonadDOM m, IsCanvasFillStrokeStyles self, IsCanvasImageSource image, ToJSString repetition) => self -> image -> repetition -> m ()
+createPattern_ self image repetition = liftDOM (void ((js_createPattern ((Types.toCanvasFillStrokeStyles self)) (Types.toCanvasImageSource image) (toJSString repetition))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createPattern MDN CanvasFillStrokeStyles.createPattern documentation>
+createPatternUnsafe :: (MonadDOM m, IsCanvasFillStrokeStyles self, IsCanvasImageSource image, ToJSString repetition, HasCallStack) => self -> image -> repetition -> m CanvasPattern
+createPatternUnsafe self image repetition = liftDOM ((((js_createPattern ((Types.toCanvasFillStrokeStyles self)) (Types.toCanvasImageSource image) (toJSString repetition)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createPattern MDN CanvasFillStrokeStyles.createPattern documentation>
+createPatternUnchecked :: (MonadDOM m, IsCanvasFillStrokeStyles self, IsCanvasImageSource image, ToJSString repetition) => self -> image -> repetition -> m CanvasPattern
+createPatternUnchecked self image repetition = liftDOM ((pFromJSVal <$> (js_createPattern ((Types.toCanvasFillStrokeStyles self)) (Types.toCanvasImageSource image) (toJSString repetition))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"createRadialGradient\"]($2, $3, $4, $5, $6, $7); })"
+        js_createRadialGradient :: CanvasFillStrokeStyles -> Double -> Double -> Double -> Double -> Double -> Double -> IO CanvasGradient
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createRadialGradient MDN CanvasFillStrokeStyles.createRadialGradient documentation>
+createRadialGradient :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> m CanvasGradient
+createRadialGradient self x0 y0 r0 x1 y1 r1 = liftDOM ((js_createRadialGradient ((Types.toCanvasFillStrokeStyles self)) (x0) (y0) (r0) (x1) (y1) (r1)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createRadialGradient MDN CanvasFillStrokeStyles.createRadialGradient documentation>
+createRadialGradient_ :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> m ()
+createRadialGradient_ self x0 y0 r0 x1 y1 r1 = liftDOM (void ((js_createRadialGradient ((Types.toCanvasFillStrokeStyles self)) (x0) (y0) (r0) (x1) (y1) (r1))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"strokeStyle\"] = $2; })"
+        js_setStrokeStyle :: CanvasFillStrokeStyles -> StringOrCanvasGradientOrCanvasPattern -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeStyle MDN CanvasFillStrokeStyles.strokeStyle documentation>
+setStrokeStyle :: (MonadDOM m, IsCanvasFillStrokeStyles self, IsStringOrCanvasGradientOrCanvasPattern val) => self -> val -> m ()
+setStrokeStyle self val = liftDOM (void ((js_setStrokeStyle ((Types.toCanvasFillStrokeStyles self)) (Types.toStringOrCanvasGradientOrCanvasPattern val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"strokeStyle\"]; })"
+        js_getStrokeStyle :: CanvasFillStrokeStyles -> IO StringOrCanvasGradientOrCanvasPattern
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeStyle MDN CanvasFillStrokeStyles.strokeStyle documentation>
+getStrokeStyle :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> m StringOrCanvasGradientOrCanvasPattern
+getStrokeStyle self = liftDOM ((js_getStrokeStyle ((Types.toCanvasFillStrokeStyles self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fillStyle\"] = $2; })"
+        js_setFillStyle :: CanvasFillStrokeStyles -> StringOrCanvasGradientOrCanvasPattern -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillStyle MDN CanvasFillStrokeStyles.fillStyle documentation>
+setFillStyle :: (MonadDOM m, IsCanvasFillStrokeStyles self, IsStringOrCanvasGradientOrCanvasPattern val) => self -> val -> m ()
+setFillStyle self val = liftDOM (void ((js_setFillStyle ((Types.toCanvasFillStrokeStyles self)) (Types.toStringOrCanvasGradientOrCanvasPattern val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fillStyle\"]; })"
+        js_getFillStyle :: CanvasFillStrokeStyles -> IO StringOrCanvasGradientOrCanvasPattern
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillStyle MDN CanvasFillStrokeStyles.fillStyle documentation>
+getFillStyle :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> m StringOrCanvasGradientOrCanvasPattern
+getFillStyle self = liftDOM ((js_getFillStyle ((Types.toCanvasFillStrokeStyles self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasFilters.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasFilters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasFilters.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasFilters
+       (js_setFilter, js_getFilter, setFilter, getFilter, CanvasFilters(..), gTypeCanvasFilters, IsCanvasFilters, toCanvasFilters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"filter\"] = $2; })"
+        js_setFilter :: CanvasFilters -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/filter MDN CanvasFilters.filter documentation>
+setFilter :: (MonadDOM m, IsCanvasFilters self, ToJSString val) => self -> val -> m ()
+setFilter self val = liftDOM (void ((js_setFilter ((Types.toCanvasFilters self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"filter\"]; })"
+        js_getFilter :: CanvasFilters -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/filter MDN CanvasFilters.filter documentation>
+getFilter :: (MonadDOM m, IsCanvasFilters self, FromJSString result) => self -> m result
+getFilter self = liftDOM ((fromJSString <$> (js_getFilter ((Types.toCanvasFilters self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
@@ -1,37 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CanvasGradient
-       (js_addColorStop, addColorStop, CanvasGradient(..),
-        gTypeCanvasGradient)
+       (js_addColorStop, addColorStop, CanvasGradient(..), gTypeCanvasGradient)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"addColorStop\"]($2, $3); })"
-        js_addColorStop :: CanvasGradient -> Float -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient.addColorStop Mozilla CanvasGradient.addColorStop documentation> 
-addColorStop ::
-             (MonadIO m, ToJSString color) =>
-               CanvasGradient -> Float -> color -> m ()
-addColorStop self offset color
-  = liftIO (js_addColorStop self offset (toJSString color))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addColorStop\"]($2, $3); })"
+        js_addColorStop :: CanvasGradient -> Double -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasGradient/addColorStop MDN CanvasGradient.addColorStop documentation>
+addColorStop :: (MonadDOM m, ToJSString color) => CanvasGradient -> Double -> color -> m ()
+addColorStop self offset color = liftDOM (void ((js_addColorStop (self) (offset) (toJSString color))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasImageData.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasImageData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasImageData.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasImageData
+       (js_createImageData', js_createImageData, js_getImageData, js_getImageData', js_putImageData, js_putImageDataDirtyXDirtyYDirtyWidthDirtyHeight, createImageData', createImageData'_, createImageData, createImageData_, getImageData, getImageData_, getImageData', getImageData'_, putImageData, putImageDataDirtyXDirtyYDirtyWidthDirtyHeight, CanvasImageData(..), gTypeCanvasImageData, IsCanvasImageData, toCanvasImageData)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createImageData\"]($2, $3, $4); })"
+        js_createImageData' :: CanvasImageData -> Int -> Int -> JSVal -> IO ImageData
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createImageData MDN CanvasImageData.createImageData documentation>
+createImageData' :: (MonadDOM m, IsCanvasImageData self) => self -> Int -> Int -> Maybe ImageDataSettings -> m ImageData
+createImageData' self sw sh settings = liftDOM (((P.maybe (P.return jsUndefined) toJSVal settings) >>= \a4' -> js_createImageData' ((Types.toCanvasImageData self)) (sw) (sh) a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createImageData MDN CanvasImageData.createImageData documentation>
+createImageData'_ :: (MonadDOM m, IsCanvasImageData self) => self -> Int -> Int -> Maybe ImageDataSettings -> m ()
+createImageData'_ self sw sh settings = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal settings) >>= \a4' -> js_createImageData' ((Types.toCanvasImageData self)) (sw) (sh) a4')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createImageData\"]($2); })"
+        js_createImageData :: CanvasImageData -> ImageData -> IO ImageData
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createImageData MDN CanvasImageData.createImageData documentation>
+createImageData :: (MonadDOM m, IsCanvasImageData self) => self -> ImageData -> m ImageData
+createImageData self imageData = liftDOM ((js_createImageData ((Types.toCanvasImageData self)) (imageData)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createImageData MDN CanvasImageData.createImageData documentation>
+createImageData_ :: (MonadDOM m, IsCanvasImageData self) => self -> ImageData -> m ()
+createImageData_ self imageData = liftDOM (void ((js_createImageData ((Types.toCanvasImageData self)) (imageData))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"getImageData\"]($2, $3, $4, $5); })"
+        js_getImageData :: CanvasImageData -> Int -> Int -> Int -> Int -> IO ImageData
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getImageData MDN CanvasImageData.getImageData documentation>
+getImageData :: (MonadDOM m, IsCanvasImageData self) => self -> Int -> Int -> Int -> Int -> m ImageData
+getImageData self sx sy sw sh = liftDOM ((js_getImageData ((Types.toCanvasImageData self)) (sx) (sy) (sw) (sh)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getImageData MDN CanvasImageData.getImageData documentation>
+getImageData_ :: (MonadDOM m, IsCanvasImageData self) => self -> Int -> Int -> Int -> Int -> m ()
+getImageData_ self sx sy sw sh = liftDOM (void ((js_getImageData ((Types.toCanvasImageData self)) (sx) (sy) (sw) (sh))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"getImageData\"]($2, $3, $4, $5, $6); })"
+        js_getImageData' :: CanvasImageData -> Int -> Int -> Int -> Int -> JSVal -> IO ImageData
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getImageData MDN CanvasImageData.getImageData documentation>
+getImageData' :: (MonadDOM m, IsCanvasImageData self) => self -> Int -> Int -> Int -> Int -> Maybe ImageDataSettings -> m ImageData
+getImageData' self sx sy sw sh settings = liftDOM (((P.maybe (P.return jsUndefined) toJSVal settings) >>= \a6' -> js_getImageData' ((Types.toCanvasImageData self)) (sx) (sy) (sw) (sh) a6'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getImageData MDN CanvasImageData.getImageData documentation>
+getImageData'_ :: (MonadDOM m, IsCanvasImageData self) => self -> Int -> Int -> Int -> Int -> Maybe ImageDataSettings -> m ()
+getImageData'_ self sx sy sw sh settings = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal settings) >>= \a6' -> js_getImageData' ((Types.toCanvasImageData self)) (sx) (sy) (sw) (sh) a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"putImageData\"]($2, $3, $4); })"
+        js_putImageData :: CanvasImageData -> ImageData -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/putImageData MDN CanvasImageData.putImageData documentation>
+putImageData :: (MonadDOM m, IsCanvasImageData self) => self -> ImageData -> Int -> Int -> m ()
+putImageData self imageData dx dy = liftDOM (void ((js_putImageData ((Types.toCanvasImageData self)) (imageData) (dx) (dy))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"putImageData\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_putImageDataDirtyXDirtyYDirtyWidthDirtyHeight :: CanvasImageData -> ImageData -> Int -> Int -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/putImageData MDN CanvasImageData.putImageData documentation>
+putImageDataDirtyXDirtyYDirtyWidthDirtyHeight :: (MonadDOM m, IsCanvasImageData self) => self -> ImageData -> Int -> Int -> Int -> Int -> Int -> Int -> m ()
+putImageDataDirtyXDirtyYDirtyWidthDirtyHeight self imageData dx dy dirtyX dirtyY dirtyWidth dirtyHeight = liftDOM (void ((js_putImageDataDirtyXDirtyYDirtyWidthDirtyHeight ((Types.toCanvasImageData self)) (imageData) (dx) (dy) (dirtyX) (dirtyY) (dirtyWidth) (dirtyHeight))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasImageSmoothing.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasImageSmoothing.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasImageSmoothing.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasImageSmoothing
+       (js_setImageSmoothingEnabled, js_getImageSmoothingEnabled, js_setImageSmoothingQuality, js_getImageSmoothingQuality, setImageSmoothingEnabled, getImageSmoothingEnabled, setImageSmoothingQuality, getImageSmoothingQuality, CanvasImageSmoothing(..), gTypeCanvasImageSmoothing, IsCanvasImageSmoothing, toCanvasImageSmoothing)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"imageSmoothingEnabled\"] = $2; })"
+        js_setImageSmoothingEnabled :: CanvasImageSmoothing -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled MDN CanvasImageSmoothing.imageSmoothingEnabled documentation>
+setImageSmoothingEnabled :: (MonadDOM m, IsCanvasImageSmoothing self) => self -> Bool -> m ()
+setImageSmoothingEnabled self val = liftDOM (void ((js_setImageSmoothingEnabled ((Types.toCanvasImageSmoothing self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"imageSmoothingEnabled\"]; })"
+        js_getImageSmoothingEnabled :: CanvasImageSmoothing -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled MDN CanvasImageSmoothing.imageSmoothingEnabled documentation>
+getImageSmoothingEnabled :: (MonadDOM m, IsCanvasImageSmoothing self) => self -> m Bool
+getImageSmoothingEnabled self = liftDOM ((js_getImageSmoothingEnabled ((Types.toCanvasImageSmoothing self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"imageSmoothingQuality\"] = $2; })"
+        js_setImageSmoothingQuality :: CanvasImageSmoothing -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality MDN CanvasImageSmoothing.imageSmoothingQuality documentation>
+setImageSmoothingQuality :: (MonadDOM m, IsCanvasImageSmoothing self) => self -> ImageSmoothingQuality -> m ()
+setImageSmoothingQuality self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setImageSmoothingQuality ((Types.toCanvasImageSmoothing self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"imageSmoothingQuality\"]; })"
+        js_getImageSmoothingQuality :: CanvasImageSmoothing -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality MDN CanvasImageSmoothing.imageSmoothingQuality documentation>
+getImageSmoothingQuality :: (MonadDOM m, IsCanvasImageSmoothing self) => self -> m ImageSmoothingQuality
+getImageSmoothingQuality self = liftDOM (((js_getImageSmoothingQuality ((Types.toCanvasImageSmoothing self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
@@ -1,138 +1,77 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CanvasPath
-       (js_closePath, closePath, js_moveTo, moveTo, js_lineTo, lineTo,
-        js_quadraticCurveTo, quadraticCurveTo, js_bezierCurveTo,
-        bezierCurveTo, js_arcTo, arcTo, js_rect, rect, js_arc, arc,
-        js_ellipse, ellipse, CanvasPath(..), gTypeCanvasPath, IsCanvasPath,
-        toCanvasPath)
+       (js_arc, js_arcTo, js_bezierCurveTo, js_closePath, js_ellipse, js_lineTo, js_moveTo, js_quadraticCurveTo, js_rect, js_roundRect, arc, arcTo, bezierCurveTo, closePath, ellipse, lineTo, moveTo, quadraticCurveTo, rect, roundRect, CanvasPath(..), gTypeCanvasPath, IsCanvasPath, toCanvasPath)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"closePath\"](); })" js_closePath
-        :: CanvasPath -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.closePath Mozilla CanvasPath.closePath documentation> 
-closePath :: (MonadIO m, IsCanvasPath self) => self -> m ()
-closePath self = liftIO (js_closePath (toCanvasPath self))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveTo\"]($2, $3); })" js_moveTo
-        :: CanvasPath -> Double -> Double -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"arc\"]($2, $3, $4, $5, $6, $7); })"
+        js_arc :: CanvasPath -> Double -> Double -> Double -> Double -> Double -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/arc MDN CanvasPath.arc documentation>
+arc :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> Maybe Bool -> m ()
+arc self x y radius startAngle endAngle counterclockwise = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal counterclockwise) >>= \a7' -> js_arc ((Types.toCanvasPath self)) (x) (y) (radius) (startAngle) (endAngle) a7')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.moveTo Mozilla CanvasPath.moveTo documentation> 
-moveTo ::
-       (MonadIO m, IsCanvasPath self) => self -> Double -> Double -> m ()
-moveTo self x y = liftIO (js_moveTo (toCanvasPath self) x y)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"lineTo\"]($2, $3); })" js_lineTo
-        :: CanvasPath -> Double -> Double -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"arcTo\"]($2, $3, $4, $5, $6); })"
+        js_arcTo :: CanvasPath -> Double -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/arcTo MDN CanvasPath.arcTo documentation>
+arcTo :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> m ()
+arcTo self x1 y1 x2 y2 radius = liftDOM (void ((js_arcTo ((Types.toCanvasPath self)) (x1) (y1) (x2) (y2) (radius))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.lineTo Mozilla CanvasPath.lineTo documentation> 
-lineTo ::
-       (MonadIO m, IsCanvasPath self) => self -> Double -> Double -> m ()
-lineTo self x y = liftIO (js_lineTo (toCanvasPath self) x y)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"quadraticCurveTo\"]($2, $3,\n$4, $5); })" js_quadraticCurveTo ::
-        CanvasPath -> Double -> Double -> Double -> Double -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"bezierCurveTo\"]($2, $3, $4, $5, $6, $7); })"
+        js_bezierCurveTo :: CanvasPath -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/bezierCurveTo MDN CanvasPath.bezierCurveTo documentation>
+bezierCurveTo :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> m ()
+bezierCurveTo self cp1x cp1y cp2x cp2y x y = liftDOM (void ((js_bezierCurveTo ((Types.toCanvasPath self)) (cp1x) (cp1y) (cp2x) (cp2y) (x) (y))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.quadraticCurveTo Mozilla CanvasPath.quadraticCurveTo documentation> 
-quadraticCurveTo ::
-                 (MonadIO m, IsCanvasPath self) =>
-                   self -> Double -> Double -> Double -> Double -> m ()
-quadraticCurveTo self cpx cpy x y
-  = liftIO (js_quadraticCurveTo (toCanvasPath self) cpx cpy x y)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"bezierCurveTo\"]($2, $3, $4,\n$5, $6, $7); })" js_bezierCurveTo
-        ::
-        CanvasPath ->
-          Double -> Double -> Double -> Double -> Double -> Double -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"closePath\"](); })"
+        js_closePath :: CanvasPath -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/closePath MDN CanvasPath.closePath documentation>
+closePath :: (MonadDOM m, IsCanvasPath self) => self -> m ()
+closePath self = liftDOM (void ((js_closePath ((Types.toCanvasPath self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.bezierCurveTo Mozilla CanvasPath.bezierCurveTo documentation> 
-bezierCurveTo ::
-              (MonadIO m, IsCanvasPath self) =>
-                self ->
-                  Double -> Double -> Double -> Double -> Double -> Double -> m ()
-bezierCurveTo self cp1x cp1y cp2x cp2y x y
-  = liftIO
-      (js_bezierCurveTo (toCanvasPath self) cp1x cp1y cp2x cp2y x y)
- 
-foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"arcTo\"]($2, $3, $4, $5, $6); })"
-        js_arcTo ::
-        CanvasPath ->
-          Double -> Double -> Double -> Double -> Double -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"ellipse\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_ellipse :: CanvasPath -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/ellipse MDN CanvasPath.ellipse documentation>
+ellipse :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Maybe Bool -> m ()
+ellipse self x y radiusX radiusY rotation startAngle endAngle counterclockwise = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal counterclockwise) >>= \a9' -> js_ellipse ((Types.toCanvasPath self)) (x) (y) (radiusX) (radiusY) (rotation) (startAngle) (endAngle) a9')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arcTo Mozilla CanvasPath.arcTo documentation> 
-arcTo ::
-      (MonadIO m, IsCanvasPath self) =>
-        self -> Double -> Double -> Double -> Double -> Double -> m ()
-arcTo self x1 y1 x2 y2 radius
-  = liftIO (js_arcTo (toCanvasPath self) x1 y1 x2 y2 radius)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"rect\"]($2, $3, $4, $5); })"
-        js_rect ::
-        CanvasPath -> Double -> Double -> Double -> Double -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"lineTo\"]($2, $3); })"
+        js_lineTo :: CanvasPath -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineTo MDN CanvasPath.lineTo documentation>
+lineTo :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> m ()
+lineTo self x y = liftDOM (void ((js_lineTo ((Types.toCanvasPath self)) (x) (y))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.rect Mozilla CanvasPath.rect documentation> 
-rect ::
-     (MonadIO m, IsCanvasPath self) =>
-       self -> Double -> Double -> Double -> Double -> m ()
-rect self x y w h = liftIO (js_rect (toCanvasPath self) x y w h)
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"arc\"]($2, $3, $4, $5, $6,\n$7); })" js_arc ::
-        CanvasPath ->
-          Double -> Double -> Double -> Double -> Double -> Bool -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"moveTo\"]($2, $3); })"
+        js_moveTo :: CanvasPath -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/moveTo MDN CanvasPath.moveTo documentation>
+moveTo :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> m ()
+moveTo self x y = liftDOM (void ((js_moveTo ((Types.toCanvasPath self)) (x) (y))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arc Mozilla CanvasPath.arc documentation> 
-arc ::
-    (MonadIO m, IsCanvasPath self) =>
-      self ->
-        Double -> Double -> Double -> Double -> Double -> Bool -> m ()
-arc self x y radius startAngle endAngle anticlockwise
-  = liftIO
-      (js_arc (toCanvasPath self) x y radius startAngle endAngle
-         anticlockwise)
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"ellipse\"]($2, $3, $4, $5,\n$6, $7, $8, $9); })" js_ellipse ::
-        CanvasPath ->
-          Double ->
-            Double ->
-              Double -> Double -> Double -> Double -> Double -> Bool -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"quadraticCurveTo\"]($2, $3, $4, $5); })"
+        js_quadraticCurveTo :: CanvasPath -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/quadraticCurveTo MDN CanvasPath.quadraticCurveTo documentation>
+quadraticCurveTo :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> m ()
+quadraticCurveTo self cpx cpy x y = liftDOM (void ((js_quadraticCurveTo ((Types.toCanvasPath self)) (cpx) (cpy) (x) (y))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.ellipse Mozilla CanvasPath.ellipse documentation> 
-ellipse ::
-        (MonadIO m, IsCanvasPath self) =>
-          self ->
-            Double ->
-              Double ->
-                Double -> Double -> Double -> Double -> Double -> Bool -> m ()
-ellipse self x y radiusX radiusY rotation startAngle endAngle
-  anticlockwise
-  = liftIO
-      (js_ellipse (toCanvasPath self) x y radiusX radiusY rotation
-         startAngle
-         endAngle
-         anticlockwise)
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"rect\"]($2, $3, $4, $5); })"
+        js_rect :: CanvasPath -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/rect MDN CanvasPath.rect documentation>
+rect :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> m ()
+rect self x y w h = liftDOM (void ((js_rect ((Types.toCanvasPath self)) (x) (y) (w) (h))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"roundRect\"]($2, $3, $4, $5, $6); })"
+        js_roundRect :: CanvasPath -> Double -> Double -> Double -> Double -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/roundRect MDN CanvasPath.roundRect documentation>
+roundRect :: (MonadDOM m, IsCanvasPath self, IsDoubleOrDOMPointInitOrSequenceDoubleOrDOMPointInit radii) => self -> Double -> Double -> Double -> Double -> Maybe radii -> m ()
+roundRect self x y w h radii = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal radii) >>= \a6' -> js_roundRect ((Types.toCanvasPath self)) (x) (y) (w) (h) a6')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasPathDrawingStyles.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasPathDrawingStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasPathDrawingStyles.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasPathDrawingStyles
+       (js_getLineDash, js_setLineDash, js_setLineWidth, js_getLineWidth, js_setLineCap, js_getLineCap, js_setLineJoin, js_getLineJoin, js_setMiterLimit, js_getMiterLimit, js_setLineDashOffset, js_getLineDashOffset, getLineDash, getLineDash_, setLineDash, setLineWidth, getLineWidth, setLineCap, getLineCap, setLineJoin, getLineJoin, setMiterLimit, getMiterLimit, setLineDashOffset, getLineDashOffset, CanvasPathDrawingStyles(..), gTypeCanvasPathDrawingStyles, IsCanvasPathDrawingStyles, toCanvasPathDrawingStyles)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getLineDash\"](); })"
+        js_getLineDash :: CanvasPathDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getLineDash MDN CanvasPathDrawingStyles.getLineDash documentation>
+getLineDash :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m [Double]
+getLineDash self = liftDOM (((js_getLineDash ((Types.toCanvasPathDrawingStyles self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getLineDash MDN CanvasPathDrawingStyles.getLineDash documentation>
+getLineDash_ :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m ()
+getLineDash_ self = liftDOM (void ((js_getLineDash ((Types.toCanvasPathDrawingStyles self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setLineDash\"]($2); })"
+        js_setLineDash :: CanvasPathDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash MDN CanvasPathDrawingStyles.setLineDash documentation>
+setLineDash :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> [Double] -> m ()
+setLineDash self segments = liftDOM (void (((toJSVal segments) >>= \a2' -> js_setLineDash ((Types.toCanvasPathDrawingStyles self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineWidth\"] = $2; })"
+        js_setLineWidth :: CanvasPathDrawingStyles -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineWidth MDN CanvasPathDrawingStyles.lineWidth documentation>
+setLineWidth :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> Double -> m ()
+setLineWidth self val = liftDOM (void ((js_setLineWidth ((Types.toCanvasPathDrawingStyles self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineWidth\"]; })"
+        js_getLineWidth :: CanvasPathDrawingStyles -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineWidth MDN CanvasPathDrawingStyles.lineWidth documentation>
+getLineWidth :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m Double
+getLineWidth self = liftDOM ((js_getLineWidth ((Types.toCanvasPathDrawingStyles self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineCap\"] = $2; })"
+        js_setLineCap :: CanvasPathDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineCap MDN CanvasPathDrawingStyles.lineCap documentation>
+setLineCap :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> CanvasLineCap -> m ()
+setLineCap self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLineCap ((Types.toCanvasPathDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineCap\"]; })"
+        js_getLineCap :: CanvasPathDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineCap MDN CanvasPathDrawingStyles.lineCap documentation>
+getLineCap :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m CanvasLineCap
+getLineCap self = liftDOM (((js_getLineCap ((Types.toCanvasPathDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineJoin\"] = $2; })"
+        js_setLineJoin :: CanvasPathDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineJoin MDN CanvasPathDrawingStyles.lineJoin documentation>
+setLineJoin :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> CanvasLineJoin -> m ()
+setLineJoin self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLineJoin ((Types.toCanvasPathDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineJoin\"]; })"
+        js_getLineJoin :: CanvasPathDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineJoin MDN CanvasPathDrawingStyles.lineJoin documentation>
+getLineJoin :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m CanvasLineJoin
+getLineJoin self = liftDOM (((js_getLineJoin ((Types.toCanvasPathDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"miterLimit\"] = $2; })"
+        js_setMiterLimit :: CanvasPathDrawingStyles -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/miterLimit MDN CanvasPathDrawingStyles.miterLimit documentation>
+setMiterLimit :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> Double -> m ()
+setMiterLimit self val = liftDOM (void ((js_setMiterLimit ((Types.toCanvasPathDrawingStyles self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"miterLimit\"]; })"
+        js_getMiterLimit :: CanvasPathDrawingStyles -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/miterLimit MDN CanvasPathDrawingStyles.miterLimit documentation>
+getMiterLimit :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m Double
+getMiterLimit self = liftDOM ((js_getMiterLimit ((Types.toCanvasPathDrawingStyles self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineDashOffset\"] = $2; })"
+        js_setLineDashOffset :: CanvasPathDrawingStyles -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineDashOffset MDN CanvasPathDrawingStyles.lineDashOffset documentation>
+setLineDashOffset :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> Double -> m ()
+setLineDashOffset self val = liftDOM (void ((js_setLineDashOffset ((Types.toCanvasPathDrawingStyles self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineDashOffset\"]; })"
+        js_getLineDashOffset :: CanvasPathDrawingStyles -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineDashOffset MDN CanvasPathDrawingStyles.lineDashOffset documentation>
+getLineDashOffset :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m Double
+getLineDashOffset self = liftDOM ((js_getLineDashOffset ((Types.toCanvasPathDrawingStyles self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasPattern.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasPattern.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasPattern.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasPattern
+       (js_setTransform, setTransform, CanvasPattern(..), gTypeCanvasPattern)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setTransform\"]($2); })"
+        js_setTransform :: CanvasPattern -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasPattern/setTransform MDN CanvasPattern.setTransform documentation>
+setTransform :: (MonadDOM m, IsDOMMatrix2DInit transform) => CanvasPattern -> Maybe transform -> m ()
+setTransform self transform = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal transform) >>= \a2' -> js_setTransform (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasRect.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasRect.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasRect
+       (js_clearRect, js_fillRect, js_strokeRect, clearRect, fillRect, strokeRect, CanvasRect(..), gTypeCanvasRect, IsCanvasRect, toCanvasRect)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"clearRect\"]($2, $3, $4, $5); })"
+        js_clearRect :: CanvasRect -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clearRect MDN CanvasRect.clearRect documentation>
+clearRect :: (MonadDOM m, IsCanvasRect self) => self -> Double -> Double -> Double -> Double -> m ()
+clearRect self x y w h = liftDOM (void ((js_clearRect ((Types.toCanvasRect self)) (x) (y) (w) (h))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"fillRect\"]($2, $3, $4, $5); })"
+        js_fillRect :: CanvasRect -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillRect MDN CanvasRect.fillRect documentation>
+fillRect :: (MonadDOM m, IsCanvasRect self) => self -> Double -> Double -> Double -> Double -> m ()
+fillRect self x y w h = liftDOM (void ((js_fillRect ((Types.toCanvasRect self)) (x) (y) (w) (h))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"strokeRect\"]($2, $3, $4, $5); })"
+        js_strokeRect :: CanvasRect -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeRect MDN CanvasRect.strokeRect documentation>
+strokeRect :: (MonadDOM m, IsCanvasRect self) => self -> Double -> Double -> Double -> Double -> m ()
+strokeRect self x y w h = liftDOM (void ((js_strokeRect ((Types.toCanvasRect self)) (x) (y) (w) (h))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
@@ -1,1432 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
-       (js_save, save, js_restore, restore, js_commit, commit, js_scale,
-        scale, js_rotate, rotate, js_translate, translate, js_transform,
-        transform, js_setTransform, setTransform, js_resetTransform,
-        resetTransform, js_setLineDash, setLineDash, js_getLineDash,
-        getLineDash, getLineDash_, js_clearRect, clearRect, js_fillRect,
-        fillRect, js_beginPath, beginPath, js_fillPath, fillPath,
-        js_strokePath, strokePath, js_clipPath, clipPath, js_fill, fill,
-        js_stroke, stroke, js_clip, clip, js_isPointInPathPath,
-        isPointInPathPath, isPointInPathPath_, js_isPointInStrokePath,
-        isPointInStrokePath, isPointInStrokePath_, js_isPointInPath,
-        isPointInPath, isPointInPath_, js_isPointInStroke, isPointInStroke,
-        isPointInStroke_, js_measureText, measureText, measureText_,
-        js_setAlpha, setAlpha, js_setCompositeOperation,
-        setCompositeOperation, js_setLineWidthFunction,
-        setLineWidthFunction, js_setLineCapFunction, setLineCapFunction,
-        js_setLineJoinFunction, setLineJoinFunction,
-        js_setMiterLimitFunction, setMiterLimitFunction, js_clearShadow,
-        clearShadow, js_fillText, fillText, js_strokeText, strokeText,
-        js_setStrokeColor, setStrokeColor, js_setStrokeColorGray,
-        setStrokeColorGray, js_setStrokeColorRGB, setStrokeColorRGB,
-        js_setStrokeColorCYMK, setStrokeColorCYMK, js_setFillColor,
-        setFillColor, js_setFillColorGray, setFillColorGray,
-        js_setFillColorRGB, setFillColorRGB, js_setFillColorCYMK,
-        setFillColorCYMK, js_strokeRect, strokeRect, js_drawImage,
-        drawImage, js_drawImageScaled, drawImageScaled, js_drawImagePart,
-        drawImagePart, js_drawImageFromRect, drawImageFromRect,
-        js_setShadow, setShadow, js_setShadowGray, setShadowGray,
-        js_setShadowRGB, setShadowRGB, js_setShadowCYMK, setShadowCYMK,
-        js_putImageData, putImageData, js_putImageDataDirty,
-        putImageDataDirty, js_webkitPutImageDataHD, webkitPutImageDataHD,
-        js_webkitPutImageDataHDDirty, webkitPutImageDataHDDirty,
-        js_createImageData, createImageData, createImageData_,
-        js_createImageDataSize, createImageDataSize, createImageDataSize_,
-        js_createLinearGradient, createLinearGradient,
-        createLinearGradient_, js_createRadialGradient,
-        createRadialGradient, createRadialGradient_, js_createPattern,
-        createPattern, createPattern_, createPatternUnsafe,
-        createPatternUnchecked, js_getImageData, getImageData,
-        getImageData_, js_webkitGetImageDataHD, webkitGetImageDataHD,
-        webkitGetImageDataHD_, js_drawFocusIfNeeded, drawFocusIfNeeded,
-        js_drawFocusIfNeededPath, drawFocusIfNeededPath, js_getCanvas,
-        getCanvas, js_setGlobalAlpha, setGlobalAlpha, js_getGlobalAlpha,
-        getGlobalAlpha, js_setGlobalCompositeOperation,
-        setGlobalCompositeOperation, js_getGlobalCompositeOperation,
-        getGlobalCompositeOperation, js_setLineWidth, setLineWidth,
-        js_getLineWidth, getLineWidth, js_setLineCap, setLineCap,
-        js_getLineCap, getLineCap, js_setLineJoin, setLineJoin,
-        js_getLineJoin, getLineJoin, js_setMiterLimit, setMiterLimit,
-        js_getMiterLimit, getMiterLimit, js_setShadowOffsetX,
-        setShadowOffsetX, js_getShadowOffsetX, getShadowOffsetX,
-        js_setShadowOffsetY, setShadowOffsetY, js_getShadowOffsetY,
-        getShadowOffsetY, js_setShadowBlur, setShadowBlur,
-        js_getShadowBlur, getShadowBlur, js_setShadowColor, setShadowColor,
-        js_getShadowColor, getShadowColor, js_setLineDashOffset,
-        setLineDashOffset, js_getLineDashOffset, getLineDashOffset,
-        js_setWebkitLineDash, setWebkitLineDash, js_getWebkitLineDash,
-        getWebkitLineDash, js_setWebkitLineDashOffset,
-        setWebkitLineDashOffset, js_getWebkitLineDashOffset,
-        getWebkitLineDashOffset, js_setFont, setFont, js_getFont, getFont,
-        js_setTextAlign, setTextAlign, js_getTextAlign, getTextAlign,
-        js_setTextBaseline, setTextBaseline, js_getTextBaseline,
-        getTextBaseline, js_setDirection, setDirection, js_getDirection,
-        getDirection, js_setStrokeStyle, setStrokeStyle, js_getStrokeStyle,
-        getStrokeStyle, js_setFillStyle, setFillStyle, js_getFillStyle,
-        getFillStyle, js_getWebkitBackingStorePixelRatio,
-        getWebkitBackingStorePixelRatio, js_setImageSmoothingEnabled,
-        setImageSmoothingEnabled, js_getImageSmoothingEnabled,
-        getImageSmoothingEnabled, js_setWebkitImageSmoothingEnabled,
-        setWebkitImageSmoothingEnabled, js_getWebkitImageSmoothingEnabled,
-        getWebkitImageSmoothingEnabled, js_setImageSmoothingQuality,
-        setImageSmoothingQuality, js_getImageSmoothingQuality,
-        getImageSmoothingQuality, CanvasRenderingContext2D(..),
-        gTypeCanvasRenderingContext2D)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"save\"](); })" js_save ::
-        CanvasRenderingContext2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.save Mozilla CanvasRenderingContext2D.save documentation> 
-save :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-save self = liftIO (js_save self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"restore\"](); })" js_restore ::
-        CanvasRenderingContext2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.restore Mozilla CanvasRenderingContext2D.restore documentation> 
-restore :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-restore self = liftIO (js_restore self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"commit\"](); })" js_commit ::
-        CanvasRenderingContext2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.commit Mozilla CanvasRenderingContext2D.commit documentation> 
-commit :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-commit self = liftIO (js_commit self)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scale\"]($2, $3); })" js_scale
-        :: CanvasRenderingContext2D -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.scale Mozilla CanvasRenderingContext2D.scale documentation> 
-scale ::
-      (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-scale self sx sy = liftIO (js_scale self sx sy)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"rotate\"]($2); })" js_rotate ::
-        CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rotate Mozilla CanvasRenderingContext2D.rotate documentation> 
-rotate :: (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-rotate self angle = liftIO (js_rotate self angle)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"translate\"]($2, $3); })"
-        js_translate :: CanvasRenderingContext2D -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.translate Mozilla CanvasRenderingContext2D.translate documentation> 
-translate ::
-          (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-translate self tx ty = liftIO (js_translate self tx ty)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"transform\"]($2, $3, $4, $5,\n$6, $7); })" js_transform ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.transform Mozilla CanvasRenderingContext2D.transform documentation> 
-transform ::
-          (MonadIO m) =>
-            CanvasRenderingContext2D ->
-              Float -> Float -> Float -> Float -> Float -> Float -> m ()
-transform self m11 m12 m21 m22 dx dy
-  = liftIO (js_transform self m11 m12 m21 m22 dx dy)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"setTransform\"]($2, $3, $4,\n$5, $6, $7); })" js_setTransform ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setTransform Mozilla CanvasRenderingContext2D.setTransform documentation> 
-setTransform ::
-             (MonadIO m) =>
-               CanvasRenderingContext2D ->
-                 Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setTransform self m11 m12 m21 m22 dx dy
-  = liftIO (js_setTransform self m11 m12 m21 m22 dx dy)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"resetTransform\"](); })"
-        js_resetTransform :: CanvasRenderingContext2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.resetTransform Mozilla CanvasRenderingContext2D.resetTransform documentation> 
-resetTransform :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-resetTransform self = liftIO (js_resetTransform self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineDash\"]($2); })"
-        js_setLineDash :: CanvasRenderingContext2D -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineDash Mozilla CanvasRenderingContext2D.setLineDash documentation> 
-setLineDash ::
-            (MonadIO m) => CanvasRenderingContext2D -> [Float] -> m ()
-setLineDash self dash
-  = liftIO (toJSVal dash >>= \ dash' -> js_setLineDash self dash')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getLineDash\"](); })"
-        js_getLineDash :: CanvasRenderingContext2D -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getLineDash Mozilla CanvasRenderingContext2D.getLineDash documentation> 
-getLineDash :: (MonadIO m) => CanvasRenderingContext2D -> m [Float]
-getLineDash self
-  = liftIO ((js_getLineDash self) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getLineDash Mozilla CanvasRenderingContext2D.getLineDash documentation> 
-getLineDash_ :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-getLineDash_ self = liftIO (void (js_getLineDash self))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"clearRect\"]($2, $3, $4, $5); })" js_clearRect ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearRect Mozilla CanvasRenderingContext2D.clearRect documentation> 
-clearRect ::
-          (MonadIO m) =>
-            CanvasRenderingContext2D ->
-              Float -> Float -> Float -> Float -> m ()
-clearRect self x y width height
-  = liftIO (js_clearRect self x y width height)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"fillRect\"]($2, $3, $4, $5); })"
-        js_fillRect ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillRect Mozilla CanvasRenderingContext2D.fillRect documentation> 
-fillRect ::
-         (MonadIO m) =>
-           CanvasRenderingContext2D ->
-             Float -> Float -> Float -> Float -> m ()
-fillRect self x y width height
-  = liftIO (js_fillRect self x y width height)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"beginPath\"](); })" js_beginPath
-        :: CanvasRenderingContext2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.beginPath Mozilla CanvasRenderingContext2D.beginPath documentation> 
-beginPath :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-beginPath self = liftIO (js_beginPath self)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"fill\"]($2, $3); })" js_fillPath
-        ::
-        CanvasRenderingContext2D ->
-          Path2D -> Optional CanvasWindingRule -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
-fillPath ::
-         (MonadIO m) =>
-           CanvasRenderingContext2D ->
-             Path2D -> Maybe CanvasWindingRule -> m ()
-fillPath self path winding
-  = liftIO (js_fillPath self path (maybeToOptional winding))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"stroke\"]($2); })" js_strokePath
-        :: CanvasRenderingContext2D -> Path2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
-strokePath ::
-           (MonadIO m) => CanvasRenderingContext2D -> Path2D -> m ()
-strokePath self path = liftIO (js_strokePath self path)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"clip\"]($2, $3); })" js_clipPath
-        ::
-        CanvasRenderingContext2D ->
-          Path2D -> Optional CanvasWindingRule -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
-clipPath ::
-         (MonadIO m) =>
-           CanvasRenderingContext2D ->
-             Path2D -> Maybe CanvasWindingRule -> m ()
-clipPath self path winding
-  = liftIO (js_clipPath self path (maybeToOptional winding))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"fill\"]($2); })" js_fill ::
-        CanvasRenderingContext2D -> Optional CanvasWindingRule -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
-fill ::
-     (MonadIO m) =>
-       CanvasRenderingContext2D -> Maybe CanvasWindingRule -> m ()
-fill self winding = liftIO (js_fill self (maybeToOptional winding))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stroke\"](); })" js_stroke ::
-        CanvasRenderingContext2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
-stroke :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-stroke self = liftIO (js_stroke self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clip\"]($2); })" js_clip ::
-        CanvasRenderingContext2D -> Optional CanvasWindingRule -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
-clip ::
-     (MonadIO m) =>
-       CanvasRenderingContext2D -> Maybe CanvasWindingRule -> m ()
-clip self winding = liftIO (js_clip self (maybeToOptional winding))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return ($1[\"isPointInPath\"]($2, $3, $4,\n$5) ? 1 : 0); })"
-        js_isPointInPathPath ::
-        CanvasRenderingContext2D ->
-          Path2D -> Float -> Float -> Optional CanvasWindingRule -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPathPath ::
-                  (MonadIO m) =>
-                    CanvasRenderingContext2D ->
-                      Path2D -> Float -> Float -> Maybe CanvasWindingRule -> m Bool
-isPointInPathPath self path x y winding
-  = liftIO
-      (js_isPointInPathPath self path x y (maybeToOptional winding))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPathPath_ ::
-                   (MonadIO m) =>
-                     CanvasRenderingContext2D ->
-                       Path2D -> Float -> Float -> Maybe CanvasWindingRule -> m ()
-isPointInPathPath_ self path x y winding
-  = liftIO
-      (void
-         (js_isPointInPathPath self path x y (maybeToOptional winding)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return ($1[\"isPointInStroke\"]($2, $3,\n$4) ? 1 : 0); })"
-        js_isPointInStrokePath ::
-        CanvasRenderingContext2D -> Path2D -> Float -> Float -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStrokePath ::
-                    (MonadIO m) =>
-                      CanvasRenderingContext2D -> Path2D -> Float -> Float -> m Bool
-isPointInStrokePath self path x y
-  = liftIO (js_isPointInStrokePath self path x y)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStrokePath_ ::
-                     (MonadIO m) =>
-                       CanvasRenderingContext2D -> Path2D -> Float -> Float -> m ()
-isPointInStrokePath_ self path x y
-  = liftIO (void (js_isPointInStrokePath self path x y))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return ($1[\"isPointInPath\"]($2, $3,\n$4) ? 1 : 0); })" js_isPointInPath ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Optional CanvasWindingRule -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPath ::
-              (MonadIO m) =>
-                CanvasRenderingContext2D ->
-                  Float -> Float -> Maybe CanvasWindingRule -> m Bool
-isPointInPath self x y winding
-  = liftIO (js_isPointInPath self x y (maybeToOptional winding))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPath_ ::
-               (MonadIO m) =>
-                 CanvasRenderingContext2D ->
-                   Float -> Float -> Maybe CanvasWindingRule -> m ()
-isPointInPath_ self x y winding
-  = liftIO
-      (void (js_isPointInPath self x y (maybeToOptional winding)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return ($1[\"isPointInStroke\"]($2,\n$3) ? 1 : 0); })" js_isPointInStroke ::
-        CanvasRenderingContext2D -> Float -> Float -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStroke ::
-                (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m Bool
-isPointInStroke self x y = liftIO (js_isPointInStroke self x y)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStroke_ ::
-                 (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-isPointInStroke_ self x y
-  = liftIO (void (js_isPointInStroke self x y))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"measureText\"]($2); })"
-        js_measureText ::
-        CanvasRenderingContext2D -> JSString -> IO TextMetrics
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
-measureText ::
-            (MonadIO m, ToJSString text) =>
-              CanvasRenderingContext2D -> text -> m TextMetrics
-measureText self text
-  = liftIO (js_measureText self (toJSString text))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
-measureText_ ::
-             (MonadIO m, ToJSString text) =>
-               CanvasRenderingContext2D -> text -> m ()
-measureText_ self text
-  = liftIO (void (js_measureText self (toJSString text)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setAlpha\"]($2); })" js_setAlpha
-        :: CanvasRenderingContext2D -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setAlpha Mozilla CanvasRenderingContext2D.setAlpha documentation> 
-setAlpha ::
-         (MonadIO m) => CanvasRenderingContext2D -> Maybe Float -> m ()
-setAlpha self alpha
-  = liftIO (js_setAlpha self (maybeToOptional alpha))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"setCompositeOperation\"]($2); })" js_setCompositeOperation ::
-        CanvasRenderingContext2D -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setCompositeOperation Mozilla CanvasRenderingContext2D.setCompositeOperation documentation> 
-setCompositeOperation ::
-                      (MonadIO m, ToJSString compositeOperation) =>
-                        CanvasRenderingContext2D -> Maybe compositeOperation -> m ()
-setCompositeOperation self compositeOperation
-  = liftIO
-      (js_setCompositeOperation self
-         (toOptionalJSString compositeOperation))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineWidth\"]($2); })"
-        js_setLineWidthFunction ::
-        CanvasRenderingContext2D -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineWidth Mozilla CanvasRenderingContext2D.setLineWidth documentation> 
-setLineWidthFunction ::
-                     (MonadIO m) => CanvasRenderingContext2D -> Maybe Float -> m ()
-setLineWidthFunction self width
-  = liftIO (js_setLineWidthFunction self (maybeToOptional width))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineCap\"]($2); })"
-        js_setLineCapFunction ::
-        CanvasRenderingContext2D -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineCap Mozilla CanvasRenderingContext2D.setLineCap documentation> 
-setLineCapFunction ::
-                   (MonadIO m, ToJSString cap) =>
-                     CanvasRenderingContext2D -> Maybe cap -> m ()
-setLineCapFunction self cap
-  = liftIO (js_setLineCapFunction self (toOptionalJSString cap))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineJoin\"]($2); })"
-        js_setLineJoinFunction ::
-        CanvasRenderingContext2D -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineJoin Mozilla CanvasRenderingContext2D.setLineJoin documentation> 
-setLineJoinFunction ::
-                    (MonadIO m, ToJSString join) =>
-                      CanvasRenderingContext2D -> Maybe join -> m ()
-setLineJoinFunction self join
-  = liftIO (js_setLineJoinFunction self (toOptionalJSString join))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setMiterLimit\"]($2); })"
-        js_setMiterLimitFunction ::
-        CanvasRenderingContext2D -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setMiterLimit Mozilla CanvasRenderingContext2D.setMiterLimit documentation> 
-setMiterLimitFunction ::
-                      (MonadIO m) => CanvasRenderingContext2D -> Maybe Float -> m ()
-setMiterLimitFunction self limit
-  = liftIO (js_setMiterLimitFunction self (maybeToOptional limit))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clearShadow\"](); })"
-        js_clearShadow :: CanvasRenderingContext2D -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearShadow Mozilla CanvasRenderingContext2D.clearShadow documentation> 
-clearShadow :: (MonadIO m) => CanvasRenderingContext2D -> m ()
-clearShadow self = liftIO (js_clearShadow self)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"fillText\"]($2, $3, $4, $5); })"
-        js_fillText ::
-        CanvasRenderingContext2D ->
-          JSString -> Float -> Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillText Mozilla CanvasRenderingContext2D.fillText documentation> 
-fillText ::
-         (MonadIO m, ToJSString text) =>
-           CanvasRenderingContext2D ->
-             text -> Float -> Float -> Maybe Float -> m ()
-fillText self text x y maxWidth
-  = liftIO
-      (js_fillText self (toJSString text) x y (maybeToOptional maxWidth))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"strokeText\"]($2, $3, $4, $5); })" js_strokeText ::
-        CanvasRenderingContext2D ->
-          JSString -> Float -> Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeText Mozilla CanvasRenderingContext2D.strokeText documentation> 
-strokeText ::
-           (MonadIO m, ToJSString text) =>
-             CanvasRenderingContext2D ->
-               text -> Float -> Float -> Maybe Float -> m ()
-strokeText self text x y maxWidth
-  = liftIO
-      (js_strokeText self (toJSString text) x y
-         (maybeToOptional maxWidth))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStrokeColor\"]($2, $3); })"
-        js_setStrokeColor ::
-        CanvasRenderingContext2D -> JSString -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColor ::
-               (MonadIO m, ToJSString color) =>
-                 CanvasRenderingContext2D -> color -> Maybe Float -> m ()
-setStrokeColor self color alpha
-  = liftIO
-      (js_setStrokeColor self (toJSString color) (maybeToOptional alpha))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStrokeColor\"]($2, $3); })"
-        js_setStrokeColorGray ::
-        CanvasRenderingContext2D -> Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColorGray ::
-                   (MonadIO m) =>
-                     CanvasRenderingContext2D -> Float -> Maybe Float -> m ()
-setStrokeColorGray self grayLevel alpha
-  = liftIO
-      (js_setStrokeColorGray self grayLevel (maybeToOptional alpha))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"setStrokeColor\"]($2, $3, $4,\n$5); })" js_setStrokeColorRGB ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColorRGB ::
-                  (MonadIO m) =>
-                    CanvasRenderingContext2D ->
-                      Float -> Float -> Float -> Float -> m ()
-setStrokeColorRGB self r g b a
-  = liftIO (js_setStrokeColorRGB self r g b a)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setStrokeColor\"]($2, $3, $4,\n$5, $6); })" js_setStrokeColorCYMK
-        ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColorCYMK ::
-                   (MonadIO m) =>
-                     CanvasRenderingContext2D ->
-                       Float -> Float -> Float -> Float -> Float -> m ()
-setStrokeColorCYMK self c m y k a
-  = liftIO (js_setStrokeColorCYMK self c m y k a)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setFillColor\"]($2, $3); })"
-        js_setFillColor ::
-        CanvasRenderingContext2D -> JSString -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColor ::
-             (MonadIO m, ToJSString color) =>
-               CanvasRenderingContext2D -> color -> Maybe Float -> m ()
-setFillColor self color alpha
-  = liftIO
-      (js_setFillColor self (toJSString color) (maybeToOptional alpha))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setFillColor\"]($2, $3); })"
-        js_setFillColorGray ::
-        CanvasRenderingContext2D -> Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColorGray ::
-                 (MonadIO m) =>
-                   CanvasRenderingContext2D -> Float -> Maybe Float -> m ()
-setFillColorGray self grayLevel alpha
-  = liftIO
-      (js_setFillColorGray self grayLevel (maybeToOptional alpha))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"setFillColor\"]($2, $3, $4,\n$5); })" js_setFillColorRGB ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColorRGB ::
-                (MonadIO m) =>
-                  CanvasRenderingContext2D ->
-                    Float -> Float -> Float -> Float -> m ()
-setFillColorRGB self r g b a
-  = liftIO (js_setFillColorRGB self r g b a)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setFillColor\"]($2, $3, $4,\n$5, $6); })" js_setFillColorCYMK ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColorCYMK ::
-                 (MonadIO m) =>
-                   CanvasRenderingContext2D ->
-                     Float -> Float -> Float -> Float -> Float -> m ()
-setFillColorCYMK self c m y k a
-  = liftIO (js_setFillColorCYMK self c m y k a)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"strokeRect\"]($2, $3, $4, $5); })" js_strokeRect ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeRect Mozilla CanvasRenderingContext2D.strokeRect documentation> 
-strokeRect ::
-           (MonadIO m) =>
-             CanvasRenderingContext2D ->
-               Float -> Float -> Float -> Float -> m ()
-strokeRect self x y width height
-  = liftIO (js_strokeRect self x y width height)
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"drawImage\"]($2, $3, $4); })"
-        js_drawImage ::
-        CanvasRenderingContext2D ->
-          CanvasImageSource -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
-drawImage ::
-          (MonadIO m, IsCanvasImageSource image) =>
-            CanvasRenderingContext2D -> image -> Float -> Float -> m ()
-drawImage self image x y
-  = liftIO (js_drawImage self (toCanvasImageSource image) x y)
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawImage\"]($2, $3, $4, $5,\n$6); })" js_drawImageScaled ::
-        CanvasRenderingContext2D ->
-          CanvasImageSource -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
-drawImageScaled ::
-                (MonadIO m, IsCanvasImageSource image) =>
-                  CanvasRenderingContext2D ->
-                    image -> Float -> Float -> Float -> Float -> m ()
-drawImageScaled self image x y width height
-  = liftIO
-      (js_drawImageScaled self (toCanvasImageSource image) x y width
-         height)
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10); })"
-        js_drawImagePart ::
-        CanvasRenderingContext2D ->
-          CanvasImageSource ->
-            Float ->
-              Float ->
-                Float -> Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
-drawImagePart ::
-              (MonadIO m, IsCanvasImageSource image) =>
-                CanvasRenderingContext2D ->
-                  image ->
-                    Float ->
-                      Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
-drawImagePart self image sx sy sw sh dx dy dw dh
-  = liftIO
-      (js_drawImagePart self (toCanvasImageSource image) sx sy sw sh dx
-         dy
-         dw
-         dh)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"drawImageFromRect\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11); })"
-        js_drawImageFromRect ::
-        CanvasRenderingContext2D ->
-          HTMLImageElement ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float ->
-                  Optional Float ->
-                    Optional Float ->
-                      Optional Float ->
-                        Optional Float -> Optional Float -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImageFromRect Mozilla CanvasRenderingContext2D.drawImageFromRect documentation> 
-drawImageFromRect ::
-                  (MonadIO m, ToJSString compositeOperation) =>
-                    CanvasRenderingContext2D ->
-                      HTMLImageElement ->
-                        Maybe Float ->
-                          Maybe Float ->
-                            Maybe Float ->
-                              Maybe Float ->
-                                Maybe Float ->
-                                  Maybe Float ->
-                                    Maybe Float -> Maybe Float -> Maybe compositeOperation -> m ()
-drawImageFromRect self image sx sy sw sh dx dy dw dh
-  compositeOperation
-  = liftIO
-      (js_drawImageFromRect self image (maybeToOptional sx)
-         (maybeToOptional sy)
-         (maybeToOptional sw)
-         (maybeToOptional sh)
-         (maybeToOptional dx)
-         (maybeToOptional dy)
-         (maybeToOptional dw)
-         (maybeToOptional dh)
-         (toOptionalJSString compositeOperation))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6); })" js_setShadow ::
-        CanvasRenderingContext2D ->
-          Float ->
-            Float -> Float -> Optional JSString -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadow ::
-          (MonadIO m, ToJSString color) =>
-            CanvasRenderingContext2D ->
-              Float -> Float -> Float -> Maybe color -> Maybe Float -> m ()
-setShadow self width height blur color alpha
-  = liftIO
-      (js_setShadow self width height blur (toOptionalJSString color)
-         (maybeToOptional alpha))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6); })" js_setShadowGray ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadowGray ::
-              (MonadIO m) =>
-                CanvasRenderingContext2D ->
-                  Float -> Float -> Float -> Float -> Maybe Float -> m ()
-setShadowGray self width height blur grayLevel alpha
-  = liftIO
-      (js_setShadowGray self width height blur grayLevel
-         (maybeToOptional alpha))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6, $7, $8); })" js_setShadowRGB ::
-        CanvasRenderingContext2D ->
-          Float ->
-            Float -> Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadowRGB ::
-             (MonadIO m) =>
-               CanvasRenderingContext2D ->
-                 Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setShadowRGB self width height blur r g b a
-  = liftIO (js_setShadowRGB self width height blur r g b a)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6, $7, $8, $9); })"
-        js_setShadowCYMK ::
-        CanvasRenderingContext2D ->
-          Float ->
-            Float ->
-              Float -> Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadowCYMK ::
-              (MonadIO m) =>
-                CanvasRenderingContext2D ->
-                  Float ->
-                    Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setShadowCYMK self width height blur c m y k a
-  = liftIO (js_setShadowCYMK self width height blur c m y k a)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"putImageData\"]($2, $3, $4); })"
-        js_putImageData ::
-        CanvasRenderingContext2D -> ImageData -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
-putImageData ::
-             (MonadIO m) =>
-               CanvasRenderingContext2D -> ImageData -> Float -> Float -> m ()
-putImageData self imagedata dx dy
-  = liftIO (js_putImageData self imagedata dx dy)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"putImageData\"]($2, $3, $4,\n$5, $6, $7, $8); })"
-        js_putImageDataDirty ::
-        CanvasRenderingContext2D ->
-          ImageData ->
-            Float -> Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
-putImageDataDirty ::
-                  (MonadIO m) =>
-                    CanvasRenderingContext2D ->
-                      ImageData ->
-                        Float -> Float -> Float -> Float -> Float -> Float -> m ()
-putImageDataDirty self imagedata dx dy dirtyX dirtyY dirtyWidth
-  dirtyHeight
-  = liftIO
-      (js_putImageDataDirty self imagedata dx dy dirtyX dirtyY dirtyWidth
-         dirtyHeight)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"webkitPutImageDataHD\"]($2,\n$3, $4); })" js_webkitPutImageDataHD
-        :: CanvasRenderingContext2D -> ImageData -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
-webkitPutImageDataHD ::
-                     (MonadIO m) =>
-                       CanvasRenderingContext2D -> ImageData -> Float -> Float -> m ()
-webkitPutImageDataHD self imagedata dx dy
-  = liftIO (js_webkitPutImageDataHD self imagedata dx dy)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"webkitPutImageDataHD\"]($2,\n$3, $4, $5, $6, $7, $8); })"
-        js_webkitPutImageDataHDDirty ::
-        CanvasRenderingContext2D ->
-          ImageData ->
-            Float -> Float -> Float -> Float -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
-webkitPutImageDataHDDirty ::
-                          (MonadIO m) =>
-                            CanvasRenderingContext2D ->
-                              ImageData ->
-                                Float -> Float -> Float -> Float -> Float -> Float -> m ()
-webkitPutImageDataHDDirty self imagedata dx dy dirtyX dirtyY
-  dirtyWidth dirtyHeight
-  = liftIO
-      (js_webkitPutImageDataHDDirty self imagedata dx dy dirtyX dirtyY
-         dirtyWidth
-         dirtyHeight)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createImageData\"]($2); })"
-        js_createImageData ::
-        CanvasRenderingContext2D -> Optional ImageData -> IO ImageData
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageData ::
-                (MonadIO m) =>
-                  CanvasRenderingContext2D -> Maybe ImageData -> m ImageData
-createImageData self imagedata
-  = liftIO (js_createImageData self (maybeToOptional imagedata))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageData_ ::
-                 (MonadIO m) => CanvasRenderingContext2D -> Maybe ImageData -> m ()
-createImageData_ self imagedata
-  = liftIO
-      (void (js_createImageData self (maybeToOptional imagedata)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createImageData\"]($2, $3); })"
-        js_createImageDataSize ::
-        CanvasRenderingContext2D -> Float -> Float -> IO ImageData
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageDataSize ::
-                    (MonadIO m) =>
-                      CanvasRenderingContext2D -> Float -> Float -> m ImageData
-createImageDataSize self sw sh
-  = liftIO (js_createImageDataSize self sw sh)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageDataSize_ ::
-                     (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-createImageDataSize_ self sw sh
-  = liftIO (void (js_createImageDataSize self sw sh))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5) => { return $1[\"createLinearGradient\"]($2,\n$3, $4, $5); })"
-        js_createLinearGradient ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO CanvasGradient
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
-createLinearGradient ::
-                     (MonadIO m) =>
-                       CanvasRenderingContext2D ->
-                         Float -> Float -> Float -> Float -> m CanvasGradient
-createLinearGradient self x0 y0 x1 y1
-  = liftIO (js_createLinearGradient self x0 y0 x1 y1)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
-createLinearGradient_ ::
-                      (MonadIO m) =>
-                        CanvasRenderingContext2D ->
-                          Float -> Float -> Float -> Float -> m ()
-createLinearGradient_ self x0 y0 x1 y1
-  = liftIO (void (js_createLinearGradient self x0 y0 x1 y1))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"createRadialGradient\"]($2,\n$3, $4, $5, $6, $7); })"
-        js_createRadialGradient ::
-        CanvasRenderingContext2D ->
-          Float ->
-            Float -> Float -> Float -> Float -> Float -> IO CanvasGradient
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
-createRadialGradient ::
-                     (MonadIO m) =>
-                       CanvasRenderingContext2D ->
-                         Float ->
-                           Float -> Float -> Float -> Float -> Float -> m CanvasGradient
-createRadialGradient self x0 y0 r0 x1 y1 r1
-  = liftIO (js_createRadialGradient self x0 y0 r0 x1 y1 r1)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
-createRadialGradient_ ::
-                      (MonadIO m) =>
-                        CanvasRenderingContext2D ->
-                          Float -> Float -> Float -> Float -> Float -> Float -> m ()
-createRadialGradient_ self x0 y0 r0 x1 y1 r1
-  = liftIO (void (js_createRadialGradient self x0 y0 r0 x1 y1 r1))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createPattern\"]($2, $3); })"
-        js_createPattern ::
-        CanvasRenderingContext2D ->
-          CanvasImageSource -> JSString -> IO (Nullable CanvasPattern)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPattern ::
-              (MonadIO m, IsCanvasImageSource image, ToJSString repetition) =>
-                CanvasRenderingContext2D ->
-                  image -> repetition -> m (Maybe CanvasPattern)
-createPattern self image repetition
-  = liftIO
-      (nullableToMaybe <$>
-         (js_createPattern self (toCanvasImageSource image)
-            (toJSString repetition)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPattern_ ::
-               (MonadIO m, IsCanvasImageSource image, ToJSString repetition) =>
-                 CanvasRenderingContext2D -> image -> repetition -> m ()
-createPattern_ self image repetition
-  = liftIO
-      (void
-         (js_createPattern self (toCanvasImageSource image)
-            (toJSString repetition)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPatternUnsafe ::
-                    (MonadIO m, IsCanvasImageSource image, ToJSString repetition,
-                     HasCallStack) =>
-                      CanvasRenderingContext2D -> image -> repetition -> m CanvasPattern
-createPatternUnsafe self image repetition
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_createPattern self (toCanvasImageSource image)
-             (toJSString repetition)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPatternUnchecked ::
-                       (MonadIO m, IsCanvasImageSource image, ToJSString repetition) =>
-                         CanvasRenderingContext2D -> image -> repetition -> m CanvasPattern
-createPatternUnchecked self image repetition
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_createPattern self (toCanvasImageSource image)
-            (toJSString repetition)))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5) => { return $1[\"getImageData\"]($2, $3, $4,\n$5); })" js_getImageData ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO ImageData
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
-getImageData ::
-             (MonadIO m) =>
-               CanvasRenderingContext2D ->
-                 Float -> Float -> Float -> Float -> m ImageData
-getImageData self sx sy sw sh
-  = liftIO (js_getImageData self sx sy sw sh)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
-getImageData_ ::
-              (MonadIO m) =>
-                CanvasRenderingContext2D ->
-                  Float -> Float -> Float -> Float -> m ()
-getImageData_ self sx sy sw sh
-  = liftIO (void (js_getImageData self sx sy sw sh))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5) => { return $1[\"webkitGetImageDataHD\"]($2,\n$3, $4, $5); })"
-        js_webkitGetImageDataHD ::
-        CanvasRenderingContext2D ->
-          Float -> Float -> Float -> Float -> IO ImageData
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
-webkitGetImageDataHD ::
-                     (MonadIO m) =>
-                       CanvasRenderingContext2D ->
-                         Float -> Float -> Float -> Float -> m ImageData
-webkitGetImageDataHD self sx sy sw sh
-  = liftIO (js_webkitGetImageDataHD self sx sy sw sh)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
-webkitGetImageDataHD_ ::
-                      (MonadIO m) =>
-                        CanvasRenderingContext2D ->
-                          Float -> Float -> Float -> Float -> m ()
-webkitGetImageDataHD_ self sx sy sw sh
-  = liftIO (void (js_webkitGetImageDataHD self sx sy sw sh))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"drawFocusIfNeeded\"]($2); })"
-        js_drawFocusIfNeeded ::
-        CanvasRenderingContext2D -> Element -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
-drawFocusIfNeeded ::
-                  (MonadIO m, IsElement element) =>
-                    CanvasRenderingContext2D -> element -> m ()
-drawFocusIfNeeded self element
-  = liftIO (js_drawFocusIfNeeded self (toElement element))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"drawFocusIfNeeded\"]($2, $3); })" js_drawFocusIfNeededPath ::
-        CanvasRenderingContext2D -> Path2D -> Element -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
-drawFocusIfNeededPath ::
-                      (MonadIO m, IsElement element) =>
-                        CanvasRenderingContext2D -> Path2D -> element -> m ()
-drawFocusIfNeededPath self path element
-  = liftIO (js_drawFocusIfNeededPath self path (toElement element))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })" js_getCanvas ::
-        CanvasRenderingContext2D -> IO HTMLCanvasElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.canvas Mozilla CanvasRenderingContext2D.canvas documentation> 
-getCanvas ::
-          (MonadIO m) => CanvasRenderingContext2D -> m HTMLCanvasElement
-getCanvas self = liftIO (js_getCanvas self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"globalAlpha\"] = $2; })"
-        js_setGlobalAlpha :: CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
-setGlobalAlpha ::
-               (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setGlobalAlpha self val = liftIO (js_setGlobalAlpha self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"globalAlpha\"]; })"
-        js_getGlobalAlpha :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
-getGlobalAlpha ::
-               (MonadIO m) => CanvasRenderingContext2D -> m Float
-getGlobalAlpha self = liftIO (js_getGlobalAlpha self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"globalCompositeOperation\"] = $2; })"
-        js_setGlobalCompositeOperation ::
-        CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
-setGlobalCompositeOperation ::
-                            (MonadIO m, ToJSString val) =>
-                              CanvasRenderingContext2D -> val -> m ()
-setGlobalCompositeOperation self val
-  = liftIO (js_setGlobalCompositeOperation self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"globalCompositeOperation\"]; })"
-        js_getGlobalCompositeOperation ::
-        CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
-getGlobalCompositeOperation ::
-                            (MonadIO m, FromJSString result) =>
-                              CanvasRenderingContext2D -> m result
-getGlobalCompositeOperation self
-  = liftIO (fromJSString <$> (js_getGlobalCompositeOperation self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"lineWidth\"] = $2; })"
-        js_setLineWidth :: CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
-setLineWidth ::
-             (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setLineWidth self val = liftIO (js_setLineWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lineWidth\"]; })"
-        js_getLineWidth :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
-getLineWidth :: (MonadIO m) => CanvasRenderingContext2D -> m Float
-getLineWidth self = liftIO (js_getLineWidth self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"lineCap\"] = $2; })"
-        js_setLineCap :: CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
-setLineCap ::
-           (MonadIO m, ToJSString val) =>
-             CanvasRenderingContext2D -> val -> m ()
-setLineCap self val = liftIO (js_setLineCap self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lineCap\"]; })" js_getLineCap ::
-        CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
-getLineCap ::
-           (MonadIO m, FromJSString result) =>
-             CanvasRenderingContext2D -> m result
-getLineCap self = liftIO (fromJSString <$> (js_getLineCap self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"lineJoin\"] = $2; })"
-        js_setLineJoin :: CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
-setLineJoin ::
-            (MonadIO m, ToJSString val) =>
-              CanvasRenderingContext2D -> val -> m ()
-setLineJoin self val
-  = liftIO (js_setLineJoin self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lineJoin\"]; })" js_getLineJoin
-        :: CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
-getLineJoin ::
-            (MonadIO m, FromJSString result) =>
-              CanvasRenderingContext2D -> m result
-getLineJoin self = liftIO (fromJSString <$> (js_getLineJoin self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"miterLimit\"] = $2; })"
-        js_setMiterLimit :: CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
-setMiterLimit ::
-              (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setMiterLimit self val = liftIO (js_setMiterLimit self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"miterLimit\"]; })"
-        js_getMiterLimit :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
-getMiterLimit :: (MonadIO m) => CanvasRenderingContext2D -> m Float
-getMiterLimit self = liftIO (js_getMiterLimit self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"shadowOffsetX\"] = $2; })"
-        js_setShadowOffsetX :: CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
-setShadowOffsetX ::
-                 (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setShadowOffsetX self val = liftIO (js_setShadowOffsetX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shadowOffsetX\"]; })"
-        js_getShadowOffsetX :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
-getShadowOffsetX ::
-                 (MonadIO m) => CanvasRenderingContext2D -> m Float
-getShadowOffsetX self = liftIO (js_getShadowOffsetX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"shadowOffsetY\"] = $2; })"
-        js_setShadowOffsetY :: CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
-setShadowOffsetY ::
-                 (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setShadowOffsetY self val = liftIO (js_setShadowOffsetY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shadowOffsetY\"]; })"
-        js_getShadowOffsetY :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
-getShadowOffsetY ::
-                 (MonadIO m) => CanvasRenderingContext2D -> m Float
-getShadowOffsetY self = liftIO (js_getShadowOffsetY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"shadowBlur\"] = $2; })"
-        js_setShadowBlur :: CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
-setShadowBlur ::
-              (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setShadowBlur self val = liftIO (js_setShadowBlur self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shadowBlur\"]; })"
-        js_getShadowBlur :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
-getShadowBlur :: (MonadIO m) => CanvasRenderingContext2D -> m Float
-getShadowBlur self = liftIO (js_getShadowBlur self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"shadowColor\"] = $2; })"
-        js_setShadowColor :: CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
-setShadowColor ::
-               (MonadIO m, ToJSString val) =>
-                 CanvasRenderingContext2D -> val -> m ()
-setShadowColor self val
-  = liftIO (js_setShadowColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shadowColor\"]; })"
-        js_getShadowColor :: CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
-getShadowColor ::
-               (MonadIO m, FromJSString result) =>
-                 CanvasRenderingContext2D -> m result
-getShadowColor self
-  = liftIO (fromJSString <$> (js_getShadowColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"lineDashOffset\"] = $2; })"
-        js_setLineDashOffset :: CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
-setLineDashOffset ::
-                  (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setLineDashOffset self val = liftIO (js_setLineDashOffset self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lineDashOffset\"]; })"
-        js_getLineDashOffset :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
-getLineDashOffset ::
-                  (MonadIO m) => CanvasRenderingContext2D -> m Float
-getLineDashOffset self = liftIO (js_getLineDashOffset self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"webkitLineDash\"] = $2; })"
-        js_setWebkitLineDash :: CanvasRenderingContext2D -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
-setWebkitLineDash ::
-                  (MonadIO m) => CanvasRenderingContext2D -> [Float] -> m ()
-setWebkitLineDash self val
-  = liftIO (toJSVal val >>= \ val' -> js_setWebkitLineDash self val')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitLineDash\"]; })"
-        js_getWebkitLineDash :: CanvasRenderingContext2D -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
-getWebkitLineDash ::
-                  (MonadIO m) => CanvasRenderingContext2D -> m [Float]
-getWebkitLineDash self
-  = liftIO ((js_getWebkitLineDash self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"webkitLineDashOffset\"] = $2; })" js_setWebkitLineDashOffset ::
-        CanvasRenderingContext2D -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
-setWebkitLineDashOffset ::
-                        (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
-setWebkitLineDashOffset self val
-  = liftIO (js_setWebkitLineDashOffset self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitLineDashOffset\"]; })"
-        js_getWebkitLineDashOffset :: CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
-getWebkitLineDashOffset ::
-                        (MonadIO m) => CanvasRenderingContext2D -> m Float
-getWebkitLineDashOffset self
-  = liftIO (js_getWebkitLineDashOffset self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"font\"] = $2; })" js_setFont ::
-        CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
-setFont ::
-        (MonadIO m, ToJSString val) =>
-          CanvasRenderingContext2D -> val -> m ()
-setFont self val = liftIO (js_setFont self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"font\"]; })" js_getFont ::
-        CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
-getFont ::
-        (MonadIO m, FromJSString result) =>
-          CanvasRenderingContext2D -> m result
-getFont self = liftIO (fromJSString <$> (js_getFont self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"textAlign\"] = $2; })"
-        js_setTextAlign :: CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
-setTextAlign ::
-             (MonadIO m, ToJSString val) =>
-               CanvasRenderingContext2D -> val -> m ()
-setTextAlign self val
-  = liftIO (js_setTextAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"textAlign\"]; })"
-        js_getTextAlign :: CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
-getTextAlign ::
-             (MonadIO m, FromJSString result) =>
-               CanvasRenderingContext2D -> m result
-getTextAlign self
-  = liftIO (fromJSString <$> (js_getTextAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"textBaseline\"] = $2; })"
-        js_setTextBaseline :: CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
-setTextBaseline ::
-                (MonadIO m, ToJSString val) =>
-                  CanvasRenderingContext2D -> val -> m ()
-setTextBaseline self val
-  = liftIO (js_setTextBaseline self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"textBaseline\"]; })"
-        js_getTextBaseline :: CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
-getTextBaseline ::
-                (MonadIO m, FromJSString result) =>
-                  CanvasRenderingContext2D -> m result
-getTextBaseline self
-  = liftIO (fromJSString <$> (js_getTextBaseline self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"direction\"] = $2; })"
-        js_setDirection :: CanvasRenderingContext2D -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
-setDirection ::
-             (MonadIO m, ToJSString val) =>
-               CanvasRenderingContext2D -> val -> m ()
-setDirection self val
-  = liftIO (js_setDirection self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
-        js_getDirection :: CanvasRenderingContext2D -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
-getDirection ::
-             (MonadIO m, FromJSString result) =>
-               CanvasRenderingContext2D -> m result
-getDirection self
-  = liftIO (fromJSString <$> (js_getDirection self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"strokeStyle\"] = $2; })"
-        js_setStrokeStyle ::
-        CanvasRenderingContext2D -> CanvasStyle -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
-setStrokeStyle ::
-               (MonadIO m, IsCanvasStyle val) =>
-                 CanvasRenderingContext2D -> val -> m ()
-setStrokeStyle self val
-  = liftIO
-      (toJSVal val >>=
-         \ val' -> js_setStrokeStyle self (CanvasStyle val'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"strokeStyle\"]; })"
-        js_getStrokeStyle :: CanvasRenderingContext2D -> IO CanvasStyle
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
-getStrokeStyle ::
-               (MonadIO m) => CanvasRenderingContext2D -> m CanvasStyle
-getStrokeStyle self = liftIO (js_getStrokeStyle self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"fillStyle\"] = $2; })"
-        js_setFillStyle :: CanvasRenderingContext2D -> CanvasStyle -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
-setFillStyle ::
-             (MonadIO m, IsCanvasStyle val) =>
-               CanvasRenderingContext2D -> val -> m ()
-setFillStyle self val
-  = liftIO
-      (toJSVal val >>= \ val' -> js_setFillStyle self (CanvasStyle val'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fillStyle\"]; })"
-        js_getFillStyle :: CanvasRenderingContext2D -> IO CanvasStyle
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
-getFillStyle ::
-             (MonadIO m) => CanvasRenderingContext2D -> m CanvasStyle
-getFillStyle self = liftIO (js_getFillStyle self)
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitBackingStorePixelRatio\"]; })"
-        js_getWebkitBackingStorePixelRatio ::
-        CanvasRenderingContext2D -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitBackingStorePixelRatio Mozilla CanvasRenderingContext2D.webkitBackingStorePixelRatio documentation> 
-getWebkitBackingStorePixelRatio ::
-                                (MonadIO m) => CanvasRenderingContext2D -> m Float
-getWebkitBackingStorePixelRatio self
-  = liftIO (js_getWebkitBackingStorePixelRatio self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"imageSmoothingEnabled\"] = $2; })" js_setImageSmoothingEnabled
-        :: CanvasRenderingContext2D -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingEnabled Mozilla CanvasRenderingContext2D.imageSmoothingEnabled documentation> 
-setImageSmoothingEnabled ::
-                         (MonadIO m) => CanvasRenderingContext2D -> Bool -> m ()
-setImageSmoothingEnabled self val
-  = liftIO (js_setImageSmoothingEnabled self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"imageSmoothingEnabled\"] ? 1 : 0); })"
-        js_getImageSmoothingEnabled :: CanvasRenderingContext2D -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingEnabled Mozilla CanvasRenderingContext2D.imageSmoothingEnabled documentation> 
-getImageSmoothingEnabled ::
-                         (MonadIO m) => CanvasRenderingContext2D -> m Bool
-getImageSmoothingEnabled self
-  = liftIO (js_getImageSmoothingEnabled self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"webkitImageSmoothingEnabled\"] = $2; })"
-        js_setWebkitImageSmoothingEnabled ::
-        CanvasRenderingContext2D -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
-setWebkitImageSmoothingEnabled ::
-                               (MonadIO m) => CanvasRenderingContext2D -> Bool -> m ()
-setWebkitImageSmoothingEnabled self val
-  = liftIO (js_setWebkitImageSmoothingEnabled self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitImageSmoothingEnabled\"] ? 1 : 0); })"
-        js_getWebkitImageSmoothingEnabled ::
-        CanvasRenderingContext2D -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
-getWebkitImageSmoothingEnabled ::
-                               (MonadIO m) => CanvasRenderingContext2D -> m Bool
-getWebkitImageSmoothingEnabled self
-  = liftIO (js_getWebkitImageSmoothingEnabled self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"imageSmoothingQuality\"] = $2; })" js_setImageSmoothingQuality
-        :: CanvasRenderingContext2D -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingQuality Mozilla CanvasRenderingContext2D.imageSmoothingQuality documentation> 
-setImageSmoothingQuality ::
-                         (MonadIO m) =>
-                           CanvasRenderingContext2D -> ImageSmoothingQuality -> m ()
-setImageSmoothingQuality self val
-  = liftIO (js_setImageSmoothingQuality self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"imageSmoothingQuality\"]; })"
-        js_getImageSmoothingQuality :: CanvasRenderingContext2D -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingQuality Mozilla CanvasRenderingContext2D.imageSmoothingQuality documentation> 
-getImageSmoothingQuality ::
-                         (MonadIO m) => CanvasRenderingContext2D -> m ImageSmoothingQuality
-getImageSmoothingQuality self
-  = liftIO
-      ((js_getImageSmoothingQuality self) >>= fromJSValUnchecked)
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+       (js_getCanvas, getCanvas, CanvasRenderingContext2D(..), gTypeCanvasRenderingContext2D)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })"
+        js_getCanvas :: CanvasRenderingContext2D -> IO HTMLCanvasElement
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/canvas MDN CanvasRenderingContext2D.canvas documentation>
+getCanvas :: (MonadDOM m) => CanvasRenderingContext2D -> m HTMLCanvasElement
+getCanvas self = liftDOM ((js_getCanvas (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2DSettings.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2DSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2DSettings.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2DSettings
+       (js_newCanvasRenderingContext2DSettings, js_setAlpha, js_getAlpha, js_setDesynchronized, js_getDesynchronized, js_setColorSpace, js_getColorSpace, js_setColorType, js_getColorType, js_setWillReadFrequently, js_getWillReadFrequently, newCanvasRenderingContext2DSettings, setAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked, setDesynchronized, getDesynchronized, getDesynchronizedUnsafe, getDesynchronizedUnchecked, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, setColorType, getColorType, getColorTypeUnsafe, getColorTypeUnchecked, setWillReadFrequently, getWillReadFrequently, getWillReadFrequentlyUnsafe, getWillReadFrequentlyUnchecked, CanvasRenderingContext2DSettings(..), gTypeCanvasRenderingContext2DSettings)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCanvasRenderingContext2DSettings :: IO CanvasRenderingContext2DSettings
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#canvasrenderingcontext2dsettings CanvasRenderingContext2DSettings specification>
+newCanvasRenderingContext2DSettings :: (MonadDOM m) => m CanvasRenderingContext2DSettings
+newCanvasRenderingContext2DSettings = liftDOM ((js_newCanvasRenderingContext2DSettings))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alpha\"] = $2; })"
+        js_setAlpha :: CanvasRenderingContext2DSettings -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-alpha CanvasRenderingContext2DSettings.alpha specification>
+setAlpha :: (MonadDOM m) => CanvasRenderingContext2DSettings -> Bool -> m ()
+setAlpha self val = liftDOM (void ((js_setAlpha (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: CanvasRenderingContext2DSettings -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-alpha CanvasRenderingContext2DSettings.alpha specification>
+getAlpha :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe Bool)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-alpha CanvasRenderingContext2DSettings.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => CanvasRenderingContext2DSettings -> m Bool
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-alpha CanvasRenderingContext2DSettings.alpha specification>
+getAlphaUnchecked :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m Bool
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"desynchronized\"] = $2; })"
+        js_setDesynchronized :: CanvasRenderingContext2DSettings -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-desynchronized CanvasRenderingContext2DSettings.desynchronized specification>
+setDesynchronized :: (MonadDOM m) => CanvasRenderingContext2DSettings -> Bool -> m ()
+setDesynchronized self val = liftDOM (void ((js_setDesynchronized (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"desynchronized\"]; })"
+        js_getDesynchronized :: CanvasRenderingContext2DSettings -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-desynchronized CanvasRenderingContext2DSettings.desynchronized specification>
+getDesynchronized :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe Bool)
+getDesynchronized self = liftDOM (((js_getDesynchronized (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-desynchronized CanvasRenderingContext2DSettings.desynchronized specification>
+getDesynchronizedUnsafe :: (MonadDOM m, HasCallStack) => CanvasRenderingContext2DSettings -> m Bool
+getDesynchronizedUnsafe self = liftDOM ((((js_getDesynchronized (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-desynchronized CanvasRenderingContext2DSettings.desynchronized specification>
+getDesynchronizedUnchecked :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m Bool
+getDesynchronizedUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesynchronized (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: CanvasRenderingContext2DSettings -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colorspace CanvasRenderingContext2DSettings.colorSpace specification>
+setColorSpace :: (MonadDOM m) => CanvasRenderingContext2DSettings -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorSpace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: CanvasRenderingContext2DSettings -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colorspace CanvasRenderingContext2DSettings.colorSpace specification>
+getColorSpace :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colorspace CanvasRenderingContext2DSettings.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => CanvasRenderingContext2DSettings -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colorspace CanvasRenderingContext2DSettings.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m PredefinedColorSpace
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorType\"] = $2; })"
+        js_setColorType :: CanvasRenderingContext2DSettings -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colortype CanvasRenderingContext2DSettings.colorType specification>
+setColorType :: (MonadDOM m) => CanvasRenderingContext2DSettings -> CanvasColorType -> m ()
+setColorType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorType\"]; })"
+        js_getColorType :: CanvasRenderingContext2DSettings -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colortype CanvasRenderingContext2DSettings.colorType specification>
+getColorType :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe CanvasColorType)
+getColorType self = liftDOM (((js_getColorType (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colortype CanvasRenderingContext2DSettings.colorType specification>
+getColorTypeUnsafe :: (MonadDOM m, HasCallStack) => CanvasRenderingContext2DSettings -> m CanvasColorType
+getColorTypeUnsafe self = liftDOM ((((js_getColorType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colortype CanvasRenderingContext2DSettings.colorType specification>
+getColorTypeUnchecked :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m CanvasColorType
+getColorTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"willReadFrequently\"] = $2; })"
+        js_setWillReadFrequently :: CanvasRenderingContext2DSettings -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-willreadfrequently CanvasRenderingContext2DSettings.willReadFrequently specification>
+setWillReadFrequently :: (MonadDOM m) => CanvasRenderingContext2DSettings -> Bool -> m ()
+setWillReadFrequently self val = liftDOM (void ((js_setWillReadFrequently (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"willReadFrequently\"]; })"
+        js_getWillReadFrequently :: CanvasRenderingContext2DSettings -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-willreadfrequently CanvasRenderingContext2DSettings.willReadFrequently specification>
+getWillReadFrequently :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe Bool)
+getWillReadFrequently self = liftDOM (((js_getWillReadFrequently (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-willreadfrequently CanvasRenderingContext2DSettings.willReadFrequently specification>
+getWillReadFrequentlyUnsafe :: (MonadDOM m, HasCallStack) => CanvasRenderingContext2DSettings -> m Bool
+getWillReadFrequentlyUnsafe self = liftDOM ((((js_getWillReadFrequently (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-willreadfrequently CanvasRenderingContext2DSettings.willReadFrequently specification>
+getWillReadFrequentlyUnchecked :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m Bool
+getWillReadFrequentlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getWillReadFrequently (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasSettings.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasSettings.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasSettings
+       (js_getContextAttributes, getContextAttributes, getContextAttributes_, CanvasSettings(..), gTypeCanvasSettings, IsCanvasSettings, toCanvasSettings)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getContextAttributes\"](); })"
+        js_getContextAttributes :: CanvasSettings -> IO CanvasRenderingContext2DSettings
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getContextAttributes MDN CanvasSettings.getContextAttributes documentation>
+getContextAttributes :: (MonadDOM m, IsCanvasSettings self) => self -> m CanvasRenderingContext2DSettings
+getContextAttributes self = liftDOM ((js_getContextAttributes ((Types.toCanvasSettings self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getContextAttributes MDN CanvasSettings.getContextAttributes documentation>
+getContextAttributes_ :: (MonadDOM m, IsCanvasSettings self) => self -> m ()
+getContextAttributes_ self = liftDOM (void ((js_getContextAttributes ((Types.toCanvasSettings self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasShadowStyles.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasShadowStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasShadowStyles.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasShadowStyles
+       (js_setShadowOffsetX, js_getShadowOffsetX, js_setShadowOffsetY, js_getShadowOffsetY, js_setShadowBlur, js_getShadowBlur, js_setShadowColor, js_getShadowColor, setShadowOffsetX, getShadowOffsetX, setShadowOffsetY, getShadowOffsetY, setShadowBlur, getShadowBlur, setShadowColor, getShadowColor, CanvasShadowStyles(..), gTypeCanvasShadowStyles, IsCanvasShadowStyles, toCanvasShadowStyles)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowOffsetX\"] = $2; })"
+        js_setShadowOffsetX :: CanvasShadowStyles -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX MDN CanvasShadowStyles.shadowOffsetX documentation>
+setShadowOffsetX :: (MonadDOM m, IsCanvasShadowStyles self) => self -> Double -> m ()
+setShadowOffsetX self val = liftDOM (void ((js_setShadowOffsetX ((Types.toCanvasShadowStyles self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowOffsetX\"]; })"
+        js_getShadowOffsetX :: CanvasShadowStyles -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX MDN CanvasShadowStyles.shadowOffsetX documentation>
+getShadowOffsetX :: (MonadDOM m, IsCanvasShadowStyles self) => self -> m Double
+getShadowOffsetX self = liftDOM ((js_getShadowOffsetX ((Types.toCanvasShadowStyles self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowOffsetY\"] = $2; })"
+        js_setShadowOffsetY :: CanvasShadowStyles -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY MDN CanvasShadowStyles.shadowOffsetY documentation>
+setShadowOffsetY :: (MonadDOM m, IsCanvasShadowStyles self) => self -> Double -> m ()
+setShadowOffsetY self val = liftDOM (void ((js_setShadowOffsetY ((Types.toCanvasShadowStyles self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowOffsetY\"]; })"
+        js_getShadowOffsetY :: CanvasShadowStyles -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY MDN CanvasShadowStyles.shadowOffsetY documentation>
+getShadowOffsetY :: (MonadDOM m, IsCanvasShadowStyles self) => self -> m Double
+getShadowOffsetY self = liftDOM ((js_getShadowOffsetY ((Types.toCanvasShadowStyles self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowBlur\"] = $2; })"
+        js_setShadowBlur :: CanvasShadowStyles -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowBlur MDN CanvasShadowStyles.shadowBlur documentation>
+setShadowBlur :: (MonadDOM m, IsCanvasShadowStyles self) => self -> Double -> m ()
+setShadowBlur self val = liftDOM (void ((js_setShadowBlur ((Types.toCanvasShadowStyles self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowBlur\"]; })"
+        js_getShadowBlur :: CanvasShadowStyles -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowBlur MDN CanvasShadowStyles.shadowBlur documentation>
+getShadowBlur :: (MonadDOM m, IsCanvasShadowStyles self) => self -> m Double
+getShadowBlur self = liftDOM ((js_getShadowBlur ((Types.toCanvasShadowStyles self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowColor\"] = $2; })"
+        js_setShadowColor :: CanvasShadowStyles -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowColor MDN CanvasShadowStyles.shadowColor documentation>
+setShadowColor :: (MonadDOM m, IsCanvasShadowStyles self, ToJSString val) => self -> val -> m ()
+setShadowColor self val = liftDOM (void ((js_setShadowColor ((Types.toCanvasShadowStyles self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowColor\"]; })"
+        js_getShadowColor :: CanvasShadowStyles -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowColor MDN CanvasShadowStyles.shadowColor documentation>
+getShadowColor :: (MonadDOM m, IsCanvasShadowStyles self, FromJSString result) => self -> m result
+getShadowColor self = liftDOM ((fromJSString <$> (js_getShadowColor ((Types.toCanvasShadowStyles self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasState.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasState.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasState
+       (js_isContextLost, js_reset, js_restore, js_save, isContextLost, isContextLost_, reset, restore, save, CanvasState(..), gTypeCanvasState, IsCanvasState, toCanvasState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"isContextLost\"](); })"
+        js_isContextLost :: CanvasState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isContextLost MDN CanvasState.isContextLost documentation>
+isContextLost :: (MonadDOM m, IsCanvasState self) => self -> m Bool
+isContextLost self = liftDOM ((js_isContextLost ((Types.toCanvasState self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isContextLost MDN CanvasState.isContextLost documentation>
+isContextLost_ :: (MonadDOM m, IsCanvasState self) => self -> m ()
+isContextLost_ self = liftDOM (void ((js_isContextLost ((Types.toCanvasState self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: CanvasState -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/reset MDN CanvasState.reset documentation>
+reset :: (MonadDOM m, IsCanvasState self) => self -> m ()
+reset self = liftDOM (void ((js_reset ((Types.toCanvasState self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"restore\"](); })"
+        js_restore :: CanvasState -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/restore MDN CanvasState.restore documentation>
+restore :: (MonadDOM m, IsCanvasState self) => self -> m ()
+restore self = liftDOM (void ((js_restore ((Types.toCanvasState self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"save\"](); })"
+        js_save :: CanvasState -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/save MDN CanvasState.save documentation>
+save :: (MonadDOM m, IsCanvasState self) => self -> m ()
+save self = liftDOM (void ((js_save ((Types.toCanvasState self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasText.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasText.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasText.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasText
+       (js_fillText, js_measureText, js_strokeText, fillText, measureText, measureText_, strokeText, CanvasText(..), gTypeCanvasText, IsCanvasText, toCanvasText)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"fillText\"]($2, $3, $4, $5); })"
+        js_fillText :: CanvasText -> JSString -> Double -> Double -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillText MDN CanvasText.fillText documentation>
+fillText :: (MonadDOM m, IsCanvasText self, ToJSString text) => self -> text -> Double -> Double -> Maybe Double -> m ()
+fillText self text x y maxWidth = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal maxWidth) >>= \a5' -> js_fillText ((Types.toCanvasText self)) (toJSString text) (x) (y) a5')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"measureText\"]($2); })"
+        js_measureText :: CanvasText -> JSString -> IO TextMetrics
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/measureText MDN CanvasText.measureText documentation>
+measureText :: (MonadDOM m, IsCanvasText self, ToJSString text) => self -> text -> m TextMetrics
+measureText self text = liftDOM ((js_measureText ((Types.toCanvasText self)) (toJSString text)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/measureText MDN CanvasText.measureText documentation>
+measureText_ :: (MonadDOM m, IsCanvasText self, ToJSString text) => self -> text -> m ()
+measureText_ self text = liftDOM (void ((js_measureText ((Types.toCanvasText self)) (toJSString text))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"strokeText\"]($2, $3, $4, $5); })"
+        js_strokeText :: CanvasText -> JSString -> Double -> Double -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeText MDN CanvasText.strokeText documentation>
+strokeText :: (MonadDOM m, IsCanvasText self, ToJSString text) => self -> text -> Double -> Double -> Maybe Double -> m ()
+strokeText self text x y maxWidth = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal maxWidth) >>= \a5' -> js_strokeText ((Types.toCanvasText self)) (toJSString text) (x) (y) a5')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasTextDrawingStyles.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasTextDrawingStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasTextDrawingStyles.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasTextDrawingStyles
+       (js_setLang, js_getLang, js_setFont, js_getFont, js_setTextAlign, js_getTextAlign, js_setTextBaseline, js_getTextBaseline, js_setDirection, js_getDirection, js_setLetterSpacing, js_getLetterSpacing, js_setFontKerning, js_getFontKerning, js_setFontStretch, js_getFontStretch, js_setFontVariantCaps, js_getFontVariantCaps, js_setTextRendering, js_getTextRendering, js_setWordSpacing, js_getWordSpacing, setLang, getLang, setFont, getFont, setTextAlign, getTextAlign, setTextBaseline, getTextBaseline, setDirection, getDirection, setLetterSpacing, getLetterSpacing, setFontKerning, getFontKerning, setFontStretch, getFontStretch, setFontVariantCaps, getFontVariantCaps, setTextRendering, getTextRendering, setWordSpacing, getWordSpacing, CanvasTextDrawingStyles(..), gTypeCanvasTextDrawingStyles, IsCanvasTextDrawingStyles, toCanvasTextDrawingStyles)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"lang\"] = $2; })"
+        js_setLang :: CanvasTextDrawingStyles -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lang MDN CanvasTextDrawingStyles.lang documentation>
+setLang :: (MonadDOM m, IsCanvasTextDrawingStyles self, ToJSString val) => self -> val -> m ()
+setLang self val = liftDOM (void ((js_setLang ((Types.toCanvasTextDrawingStyles self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })"
+        js_getLang :: CanvasTextDrawingStyles -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lang MDN CanvasTextDrawingStyles.lang documentation>
+getLang :: (MonadDOM m, IsCanvasTextDrawingStyles self, FromJSString result) => self -> m result
+getLang self = liftDOM ((fromJSString <$> (js_getLang ((Types.toCanvasTextDrawingStyles self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"font\"] = $2; })"
+        js_setFont :: CanvasTextDrawingStyles -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/font MDN CanvasTextDrawingStyles.font documentation>
+setFont :: (MonadDOM m, IsCanvasTextDrawingStyles self, ToJSString val) => self -> val -> m ()
+setFont self val = liftDOM (void ((js_setFont ((Types.toCanvasTextDrawingStyles self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"font\"]; })"
+        js_getFont :: CanvasTextDrawingStyles -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/font MDN CanvasTextDrawingStyles.font documentation>
+getFont :: (MonadDOM m, IsCanvasTextDrawingStyles self, FromJSString result) => self -> m result
+getFont self = liftDOM ((fromJSString <$> (js_getFont ((Types.toCanvasTextDrawingStyles self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"textAlign\"] = $2; })"
+        js_setTextAlign :: CanvasTextDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textAlign MDN CanvasTextDrawingStyles.textAlign documentation>
+setTextAlign :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> CanvasTextAlign -> m ()
+setTextAlign self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTextAlign ((Types.toCanvasTextDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"textAlign\"]; })"
+        js_getTextAlign :: CanvasTextDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textAlign MDN CanvasTextDrawingStyles.textAlign documentation>
+getTextAlign :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasTextAlign
+getTextAlign self = liftDOM (((js_getTextAlign ((Types.toCanvasTextDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"textBaseline\"] = $2; })"
+        js_setTextBaseline :: CanvasTextDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textBaseline MDN CanvasTextDrawingStyles.textBaseline documentation>
+setTextBaseline :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> CanvasTextBaseline -> m ()
+setTextBaseline self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTextBaseline ((Types.toCanvasTextDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"textBaseline\"]; })"
+        js_getTextBaseline :: CanvasTextDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textBaseline MDN CanvasTextDrawingStyles.textBaseline documentation>
+getTextBaseline :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasTextBaseline
+getTextBaseline self = liftDOM (((js_getTextBaseline ((Types.toCanvasTextDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: CanvasTextDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/direction MDN CanvasTextDrawingStyles.direction documentation>
+setDirection :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> CanvasDirection -> m ()
+setDirection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDirection ((Types.toCanvasTextDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: CanvasTextDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/direction MDN CanvasTextDrawingStyles.direction documentation>
+getDirection :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasDirection
+getDirection self = liftDOM (((js_getDirection ((Types.toCanvasTextDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"letterSpacing\"] = $2; })"
+        js_setLetterSpacing :: CanvasTextDrawingStyles -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/letterSpacing MDN CanvasTextDrawingStyles.letterSpacing documentation>
+setLetterSpacing :: (MonadDOM m, IsCanvasTextDrawingStyles self, ToJSString val) => self -> val -> m ()
+setLetterSpacing self val = liftDOM (void ((js_setLetterSpacing ((Types.toCanvasTextDrawingStyles self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"letterSpacing\"]; })"
+        js_getLetterSpacing :: CanvasTextDrawingStyles -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/letterSpacing MDN CanvasTextDrawingStyles.letterSpacing documentation>
+getLetterSpacing :: (MonadDOM m, IsCanvasTextDrawingStyles self, FromJSString result) => self -> m result
+getLetterSpacing self = liftDOM ((fromJSString <$> (js_getLetterSpacing ((Types.toCanvasTextDrawingStyles self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontKerning\"] = $2; })"
+        js_setFontKerning :: CanvasTextDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontKerning MDN CanvasTextDrawingStyles.fontKerning documentation>
+setFontKerning :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> CanvasFontKerning -> m ()
+setFontKerning self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFontKerning ((Types.toCanvasTextDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontKerning\"]; })"
+        js_getFontKerning :: CanvasTextDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontKerning MDN CanvasTextDrawingStyles.fontKerning documentation>
+getFontKerning :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasFontKerning
+getFontKerning self = liftDOM (((js_getFontKerning ((Types.toCanvasTextDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontStretch\"] = $2; })"
+        js_setFontStretch :: CanvasTextDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontStretch MDN CanvasTextDrawingStyles.fontStretch documentation>
+setFontStretch :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> CanvasFontStretch -> m ()
+setFontStretch self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFontStretch ((Types.toCanvasTextDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontStretch\"]; })"
+        js_getFontStretch :: CanvasTextDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontStretch MDN CanvasTextDrawingStyles.fontStretch documentation>
+getFontStretch :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasFontStretch
+getFontStretch self = liftDOM (((js_getFontStretch ((Types.toCanvasTextDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontVariantCaps\"] = $2; })"
+        js_setFontVariantCaps :: CanvasTextDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontVariantCaps MDN CanvasTextDrawingStyles.fontVariantCaps documentation>
+setFontVariantCaps :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> CanvasFontVariantCaps -> m ()
+setFontVariantCaps self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFontVariantCaps ((Types.toCanvasTextDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontVariantCaps\"]; })"
+        js_getFontVariantCaps :: CanvasTextDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontVariantCaps MDN CanvasTextDrawingStyles.fontVariantCaps documentation>
+getFontVariantCaps :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasFontVariantCaps
+getFontVariantCaps self = liftDOM (((js_getFontVariantCaps ((Types.toCanvasTextDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"textRendering\"] = $2; })"
+        js_setTextRendering :: CanvasTextDrawingStyles -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textRendering MDN CanvasTextDrawingStyles.textRendering documentation>
+setTextRendering :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> CanvasTextRendering -> m ()
+setTextRendering self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTextRendering ((Types.toCanvasTextDrawingStyles self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"textRendering\"]; })"
+        js_getTextRendering :: CanvasTextDrawingStyles -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textRendering MDN CanvasTextDrawingStyles.textRendering documentation>
+getTextRendering :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasTextRendering
+getTextRendering self = liftDOM (((js_getTextRendering ((Types.toCanvasTextDrawingStyles self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"wordSpacing\"] = $2; })"
+        js_setWordSpacing :: CanvasTextDrawingStyles -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/wordSpacing MDN CanvasTextDrawingStyles.wordSpacing documentation>
+setWordSpacing :: (MonadDOM m, IsCanvasTextDrawingStyles self, ToJSString val) => self -> val -> m ()
+setWordSpacing self val = liftDOM (void ((js_setWordSpacing ((Types.toCanvasTextDrawingStyles self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"wordSpacing\"]; })"
+        js_getWordSpacing :: CanvasTextDrawingStyles -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/wordSpacing MDN CanvasTextDrawingStyles.wordSpacing documentation>
+getWordSpacing :: (MonadDOM m, IsCanvasTextDrawingStyles self, FromJSString result) => self -> m result
+getWordSpacing self = liftDOM ((fromJSString <$> (js_getWordSpacing ((Types.toCanvasTextDrawingStyles self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasTransform.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasTransform.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasTransform
+       (js_getTransform, js_resetTransform, js_rotate, js_scale, js_setTransform, js_setTransformTransform, js_transform, js_translate, getTransform, getTransform_, resetTransform, rotate, scale, setTransform, setTransformTransform, transform, translate, CanvasTransform(..), gTypeCanvasTransform, IsCanvasTransform, toCanvasTransform)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getTransform\"](); })"
+        js_getTransform :: CanvasTransform -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getTransform MDN CanvasTransform.getTransform documentation>
+getTransform :: (MonadDOM m, IsCanvasTransform self) => self -> m DOMMatrix
+getTransform self = liftDOM ((js_getTransform ((Types.toCanvasTransform self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getTransform MDN CanvasTransform.getTransform documentation>
+getTransform_ :: (MonadDOM m, IsCanvasTransform self) => self -> m ()
+getTransform_ self = liftDOM (void ((js_getTransform ((Types.toCanvasTransform self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"resetTransform\"](); })"
+        js_resetTransform :: CanvasTransform -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/resetTransform MDN CanvasTransform.resetTransform documentation>
+resetTransform :: (MonadDOM m, IsCanvasTransform self) => self -> m ()
+resetTransform self = liftDOM (void ((js_resetTransform ((Types.toCanvasTransform self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"rotate\"]($2); })"
+        js_rotate :: CanvasTransform -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/rotate MDN CanvasTransform.rotate documentation>
+rotate :: (MonadDOM m, IsCanvasTransform self) => self -> Double -> m ()
+rotate self angle = liftDOM (void ((js_rotate ((Types.toCanvasTransform self)) (angle))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"scale\"]($2, $3); })"
+        js_scale :: CanvasTransform -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/scale MDN CanvasTransform.scale documentation>
+scale :: (MonadDOM m, IsCanvasTransform self) => self -> Double -> Double -> m ()
+scale self x y = liftDOM (void ((js_scale ((Types.toCanvasTransform self)) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"setTransform\"]($2, $3, $4, $5, $6, $7); })"
+        js_setTransform :: CanvasTransform -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setTransform MDN CanvasTransform.setTransform documentation>
+setTransform :: (MonadDOM m, IsCanvasTransform self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> m ()
+setTransform self a b c d e f = liftDOM (void ((js_setTransform ((Types.toCanvasTransform self)) (a) (b) (c) (d) (e) (f))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setTransform\"]($2); })"
+        js_setTransformTransform :: CanvasTransform -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setTransform MDN CanvasTransform.setTransform documentation>
+setTransformTransform :: (MonadDOM m, IsCanvasTransform self, IsDOMMatrix2DInit transform) => self -> Maybe transform -> m ()
+setTransformTransform self transform = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal transform) >>= \a2' -> js_setTransformTransform ((Types.toCanvasTransform self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"transform\"]($2, $3, $4, $5, $6, $7); })"
+        js_transform :: CanvasTransform -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/transform MDN CanvasTransform.transform documentation>
+transform :: (MonadDOM m, IsCanvasTransform self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> m ()
+transform self a b c d e f = liftDOM (void ((js_transform ((Types.toCanvasTransform self)) (a) (b) (c) (d) (e) (f))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"translate\"]($2, $3); })"
+        js_translate :: CanvasTransform -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/translate MDN CanvasTransform.translate documentation>
+translate :: (MonadDOM m, IsCanvasTransform self) => self -> Double -> Double -> m ()
+translate self x y = liftDOM (void ((js_translate ((Types.toCanvasTransform self)) (x) (y))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasUserInterface.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasUserInterface.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasUserInterface.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CanvasUserInterface
+       (js_drawFocusIfNeeded, js_drawFocusIfNeededPath, drawFocusIfNeeded, drawFocusIfNeededPath, CanvasUserInterface(..), gTypeCanvasUserInterface, IsCanvasUserInterface, toCanvasUserInterface)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"drawFocusIfNeeded\"]($2); })"
+        js_drawFocusIfNeeded :: CanvasUserInterface -> Element -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/drawFocusIfNeeded MDN CanvasUserInterface.drawFocusIfNeeded documentation>
+drawFocusIfNeeded :: (MonadDOM m, IsCanvasUserInterface self, IsElement element) => self -> element -> m ()
+drawFocusIfNeeded self element = liftDOM (void ((js_drawFocusIfNeeded ((Types.toCanvasUserInterface self)) (Types.toElement element))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"drawFocusIfNeeded\"]($2, $3); })"
+        js_drawFocusIfNeededPath :: CanvasUserInterface -> Path2D -> Element -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/drawFocusIfNeeded MDN CanvasUserInterface.drawFocusIfNeeded documentation>
+drawFocusIfNeededPath :: (MonadDOM m, IsCanvasUserInterface self, IsElement element) => self -> Path2D -> element -> m ()
+drawFocusIfNeededPath self path element = liftDOM (void ((js_drawFocusIfNeededPath ((Types.toCanvasUserInterface self)) (path) (Types.toElement element))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CaptureController.hs b/src/GHCJS/DOM/JSFFI/Generated/CaptureController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CaptureController.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CaptureController
+       (CaptureController(..), gTypeCaptureController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CaretPosition.hs b/src/GHCJS/DOM/JSFFI/Generated/CaretPosition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CaretPosition.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CaretPosition
+       (js_getClientRect, js_getOffsetNode, js_getOffset, getClientRect, getClientRect_, getClientRectUnsafe, getClientRectUnchecked, getOffsetNode, getOffset, CaretPosition(..), gTypeCaretPosition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getClientRect\"](); })"
+        js_getClientRect :: CaretPosition -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/getClientRect MDN CaretPosition.getClientRect documentation>
+getClientRect :: (MonadDOM m) => CaretPosition -> m (Maybe DOMRect)
+getClientRect self = liftDOM (((js_getClientRect (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/getClientRect MDN CaretPosition.getClientRect documentation>
+getClientRect_ :: (MonadDOM m) => CaretPosition -> m ()
+getClientRect_ self = liftDOM (void ((js_getClientRect (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/getClientRect MDN CaretPosition.getClientRect documentation>
+getClientRectUnsafe :: (MonadDOM m, HasCallStack) => CaretPosition -> m DOMRect
+getClientRectUnsafe self = liftDOM ((((js_getClientRect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/getClientRect MDN CaretPosition.getClientRect documentation>
+getClientRectUnchecked :: (MonadDOM m) => CaretPosition -> m DOMRect
+getClientRectUnchecked self = liftDOM ((pFromJSVal <$> (js_getClientRect (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offsetNode\"]; })"
+        js_getOffsetNode :: CaretPosition -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/offsetNode MDN CaretPosition.offsetNode documentation>
+getOffsetNode :: (MonadDOM m) => CaretPosition -> m Node
+getOffsetNode self = liftDOM ((js_getOffsetNode (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: CaretPosition -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/offset MDN CaretPosition.offset documentation>
+getOffset :: (MonadDOM m) => CaretPosition -> m Word
+getOffset self = liftDOM ((js_getOffset (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CaretPositionFromPointOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CaretPositionFromPointOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CaretPositionFromPointOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CaretPositionFromPointOptions
+       (js_newCaretPositionFromPointOptions, js_setShadowRoots, js_getShadowRoots, newCaretPositionFromPointOptions, setShadowRoots, getShadowRoots, getShadowRootsUnsafe, getShadowRootsUnchecked, CaretPositionFromPointOptions(..), gTypeCaretPositionFromPointOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCaretPositionFromPointOptions :: IO CaretPositionFromPointOptions
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-caretpositionfrompointoptions CaretPositionFromPointOptions specification>
+newCaretPositionFromPointOptions :: (MonadDOM m) => m CaretPositionFromPointOptions
+newCaretPositionFromPointOptions = liftDOM ((js_newCaretPositionFromPointOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRoots\"] = $2; })"
+        js_setShadowRoots :: CaretPositionFromPointOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-caretpositionfrompointoptions-shadowroots CaretPositionFromPointOptions.shadowRoots specification>
+setShadowRoots :: (MonadDOM m) => CaretPositionFromPointOptions -> [ShadowRoot] -> m ()
+setShadowRoots self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setShadowRoots (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRoots\"]; })"
+        js_getShadowRoots :: CaretPositionFromPointOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-caretpositionfrompointoptions-shadowroots CaretPositionFromPointOptions.shadowRoots specification>
+getShadowRoots :: (MonadDOM m) => CaretPositionFromPointOptions -> m (Maybe [ShadowRoot])
+getShadowRoots self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-caretpositionfrompointoptions-shadowroots CaretPositionFromPointOptions.shadowRoots specification>
+getShadowRootsUnsafe :: (MonadDOM m, HasCallStack) => CaretPositionFromPointOptions -> m [ShadowRoot]
+getShadowRootsUnsafe self = liftDOM ((((js_getShadowRoots (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-caretpositionfrompointoptions-shadowroots CaretPositionFromPointOptions.shadowRoots specification>
+getShadowRootsUnchecked :: (MonadDOM m) => CaretPositionFromPointOptions -> m [ShadowRoot]
+getShadowRootsUnchecked self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChannelMergerNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ChannelMergerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChannelMergerNode.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ChannelMergerNode
+       (js_newChannelMergerNode, newChannelMergerNode, ChannelMergerNode(..), gTypeChannelMergerNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ChannelMergerNode\"]($1, $2); })"
+        js_newChannelMergerNode :: BaseAudioContext -> JSVal -> IO ChannelMergerNode
+-- | <https://developer.mozilla.org/docs/Web/API/ChannelMergerNode/ChannelMergerNode MDN ChannelMergerNode. documentation>
+newChannelMergerNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe ChannelMergerOptions -> m ChannelMergerNode
+newChannelMergerNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newChannelMergerNode (Types.toBaseAudioContext context) a2'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChannelMergerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ChannelMergerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChannelMergerOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ChannelMergerOptions
+       (js_newChannelMergerOptions, js_setNumberOfInputs, js_getNumberOfInputs, newChannelMergerOptions, setNumberOfInputs, getNumberOfInputs, getNumberOfInputsUnsafe, getNumberOfInputsUnchecked, ChannelMergerOptions(..), gTypeChannelMergerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newChannelMergerOptions :: IO ChannelMergerOptions
+-- | <https://webaudio.github.io/web-audio-api/#ChannelMergerOptions ChannelMergerOptions specification>
+newChannelMergerOptions :: (MonadDOM m) => m ChannelMergerOptions
+newChannelMergerOptions = liftDOM ((js_newChannelMergerOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfInputs\"] = $2; })"
+        js_setNumberOfInputs :: ChannelMergerOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelmergeroptions-numberofinputs ChannelMergerOptions.numberOfInputs specification>
+setNumberOfInputs :: (MonadDOM m) => ChannelMergerOptions -> Word -> m ()
+setNumberOfInputs self val = liftDOM (void ((js_setNumberOfInputs (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfInputs\"]; })"
+        js_getNumberOfInputs :: ChannelMergerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelmergeroptions-numberofinputs ChannelMergerOptions.numberOfInputs specification>
+getNumberOfInputs :: (MonadDOM m) => ChannelMergerOptions -> m (Maybe Word)
+getNumberOfInputs self = liftDOM (((js_getNumberOfInputs (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelmergeroptions-numberofinputs ChannelMergerOptions.numberOfInputs specification>
+getNumberOfInputsUnsafe :: (MonadDOM m, HasCallStack) => ChannelMergerOptions -> m Word
+getNumberOfInputsUnsafe self = liftDOM ((((js_getNumberOfInputs (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelmergeroptions-numberofinputs ChannelMergerOptions.numberOfInputs specification>
+getNumberOfInputsUnchecked :: (MonadDOM m) => ChannelMergerOptions -> m Word
+getNumberOfInputsUnchecked self = liftDOM ((pFromJSVal <$> (js_getNumberOfInputs (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChannelSplitterNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ChannelSplitterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChannelSplitterNode.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ChannelSplitterNode
+       (js_newChannelSplitterNode, newChannelSplitterNode, ChannelSplitterNode(..), gTypeChannelSplitterNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ChannelSplitterNode\"]($1, $2); })"
+        js_newChannelSplitterNode :: BaseAudioContext -> JSVal -> IO ChannelSplitterNode
+-- | <https://developer.mozilla.org/docs/Web/API/ChannelSplitterNode/ChannelSplitterNode MDN ChannelSplitterNode. documentation>
+newChannelSplitterNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe ChannelSplitterOptions -> m ChannelSplitterNode
+newChannelSplitterNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newChannelSplitterNode (Types.toBaseAudioContext context) a2'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChannelSplitterOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ChannelSplitterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChannelSplitterOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ChannelSplitterOptions
+       (js_newChannelSplitterOptions, js_setNumberOfOutputs, js_getNumberOfOutputs, newChannelSplitterOptions, setNumberOfOutputs, getNumberOfOutputs, getNumberOfOutputsUnsafe, getNumberOfOutputsUnchecked, ChannelSplitterOptions(..), gTypeChannelSplitterOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newChannelSplitterOptions :: IO ChannelSplitterOptions
+-- | <https://webaudio.github.io/web-audio-api/#ChannelSplitterOptions ChannelSplitterOptions specification>
+newChannelSplitterOptions :: (MonadDOM m) => m ChannelSplitterOptions
+newChannelSplitterOptions = liftDOM ((js_newChannelSplitterOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfOutputs\"] = $2; })"
+        js_setNumberOfOutputs :: ChannelSplitterOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelsplitteroptions-numberofoutputs ChannelSplitterOptions.numberOfOutputs specification>
+setNumberOfOutputs :: (MonadDOM m) => ChannelSplitterOptions -> Word -> m ()
+setNumberOfOutputs self val = liftDOM (void ((js_setNumberOfOutputs (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfOutputs\"]; })"
+        js_getNumberOfOutputs :: ChannelSplitterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelsplitteroptions-numberofoutputs ChannelSplitterOptions.numberOfOutputs specification>
+getNumberOfOutputs :: (MonadDOM m) => ChannelSplitterOptions -> m (Maybe Word)
+getNumberOfOutputs self = liftDOM (((js_getNumberOfOutputs (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelsplitteroptions-numberofoutputs ChannelSplitterOptions.numberOfOutputs specification>
+getNumberOfOutputsUnsafe :: (MonadDOM m, HasCallStack) => ChannelSplitterOptions -> m Word
+getNumberOfOutputsUnsafe self = liftDOM ((((js_getNumberOfOutputs (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelsplitteroptions-numberofoutputs ChannelSplitterOptions.numberOfOutputs specification>
+getNumberOfOutputsUnchecked :: (MonadDOM m) => ChannelSplitterOptions -> m Word
+getNumberOfOutputsUnchecked self = liftDOM ((pFromJSVal <$> (js_getNumberOfOutputs (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChapterInformationInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ChapterInformationInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChapterInformationInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ChapterInformationInit
+       (js_newChapterInformationInit, js_setTitle, js_getTitle, js_setStartTime, js_getStartTime, js_setArtwork, js_getArtwork, newChapterInformationInit, setTitle, getTitle, getTitleUnsafe, getTitleUnchecked, setStartTime, getStartTime, getStartTimeUnsafe, getStartTimeUnchecked, setArtwork, getArtwork, getArtworkUnsafe, getArtworkUnchecked, ChapterInformationInit(..), gTypeChapterInformationInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newChapterInformationInit :: IO ChapterInformationInit
+-- | <https://w3c.github.io/mediasession/#dictdef-chapterinformationinit ChapterInformationInit specification>
+newChapterInformationInit :: (MonadDOM m) => m ChapterInformationInit
+newChapterInformationInit = liftDOM ((js_newChapterInformationInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: ChapterInformationInit -> JSString -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-title ChapterInformationInit.title specification>
+setTitle :: (MonadDOM m, ToJSString val) => ChapterInformationInit -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: ChapterInformationInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-title ChapterInformationInit.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => ChapterInformationInit -> m (Maybe result)
+getTitle self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTitle (self))))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-title ChapterInformationInit.title specification>
+getTitleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ChapterInformationInit -> m result
+getTitleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTitle (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-title ChapterInformationInit.title specification>
+getTitleUnchecked :: (MonadDOM m, FromJSString result) => ChapterInformationInit -> m result
+getTitleUnchecked self = liftDOM ((pFromJSVal <$> (js_getTitle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startTime\"] = $2; })"
+        js_setStartTime :: ChapterInformationInit -> Double -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-starttime ChapterInformationInit.startTime specification>
+setStartTime :: (MonadDOM m) => ChapterInformationInit -> Double -> m ()
+setStartTime self val = liftDOM (void ((js_setStartTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
+        js_getStartTime :: ChapterInformationInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-starttime ChapterInformationInit.startTime specification>
+getStartTime :: (MonadDOM m) => ChapterInformationInit -> m (Maybe Double)
+getStartTime self = liftDOM (((js_getStartTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-starttime ChapterInformationInit.startTime specification>
+getStartTimeUnsafe :: (MonadDOM m, HasCallStack) => ChapterInformationInit -> m Double
+getStartTimeUnsafe self = liftDOM ((((js_getStartTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-starttime ChapterInformationInit.startTime specification>
+getStartTimeUnchecked :: (MonadDOM m) => ChapterInformationInit -> m Double
+getStartTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStartTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"artwork\"] = $2; })"
+        js_setArtwork :: ChapterInformationInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-artwork ChapterInformationInit.artwork specification>
+setArtwork :: (MonadDOM m) => ChapterInformationInit -> [MediaImage] -> m ()
+setArtwork self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setArtwork (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"artwork\"]; })"
+        js_getArtwork :: ChapterInformationInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-artwork ChapterInformationInit.artwork specification>
+getArtwork :: (MonadDOM m) => ChapterInformationInit -> m (Maybe [MediaImage])
+getArtwork self = liftDOM (((js_getArtwork (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-artwork ChapterInformationInit.artwork specification>
+getArtworkUnsafe :: (MonadDOM m, HasCallStack) => ChapterInformationInit -> m [MediaImage]
+getArtworkUnsafe self = liftDOM ((((js_getArtwork (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-artwork ChapterInformationInit.artwork specification>
+getArtworkUnchecked :: (MonadDOM m) => ChapterInformationInit -> m [MediaImage]
+getArtworkUnchecked self = liftDOM (((js_getArtwork (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs b/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
@@ -1,119 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CharacterData
-       (js_substringData, substringData, substringData_, js_appendData,
-        appendData, js_insertData, insertData, js_deleteData, deleteData,
-        js_replaceData, replaceData, js_setData, setData, js_getData,
-        getData, js_getLength, getLength, CharacterData(..),
-        gTypeCharacterData, IsCharacterData, toCharacterData)
+       (js_appendData, js_deleteData, js_insertData, js_replaceData, js_substringData, js_setData, js_getData, js_getLength, appendData, deleteData, insertData, replaceData, substringData, substringData_, setData, getData, getLength, CharacterData(..), gTypeCharacterData, IsCharacterData, toCharacterData)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"substringData\"]($2, $3); })"
-        js_substringData :: CharacterData -> Word -> Word -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
-substringData ::
-              (MonadIO m, IsCharacterData self, FromJSString result) =>
-                self -> Word -> Word -> m result
-substringData self offset count
-  = liftIO
-      (fromJSString <$>
-         (js_substringData (toCharacterData self) offset count))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
-substringData_ ::
-               (MonadIO m, IsCharacterData self) => self -> Word -> Word -> m ()
-substringData_ self offset count
-  = liftIO
-      (void (js_substringData (toCharacterData self) offset count))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"appendData\"]($2); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"appendData\"]($2); })"
         js_appendData :: CharacterData -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.appendData Mozilla CharacterData.appendData documentation> 
-appendData ::
-           (MonadIO m, IsCharacterData self, ToJSString data') =>
-             self -> data' -> m ()
-appendData self data'
-  = liftIO (js_appendData (toCharacterData self) (toJSString data'))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertData\"]($2, $3); })"
-        js_insertData :: CharacterData -> Word -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/appendData MDN CharacterData.appendData documentation>
+appendData :: (MonadDOM m, IsCharacterData self, ToJSString data') => self -> data' -> m ()
+appendData self data' = liftDOM (void ((js_appendData ((Types.toCharacterData self)) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.insertData Mozilla CharacterData.insertData documentation> 
-insertData ::
-           (MonadIO m, IsCharacterData self, ToJSString data') =>
-             self -> Word -> data' -> m ()
-insertData self offset data'
-  = liftIO
-      (js_insertData (toCharacterData self) offset (toJSString data'))
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"deleteData\"]($2, $3); })"
         js_deleteData :: CharacterData -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/deleteData MDN CharacterData.deleteData documentation>
+deleteData :: (MonadDOM m, IsCharacterData self) => self -> Word -> Word -> m ()
+deleteData self offset count = liftDOM (void ((js_deleteData ((Types.toCharacterData self)) (offset) (count))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.deleteData Mozilla CharacterData.deleteData documentation> 
-deleteData ::
-           (MonadIO m, IsCharacterData self) => self -> Word -> Word -> m ()
-deleteData self offset count
-  = liftIO (js_deleteData (toCharacterData self) offset count)
- 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertData\"]($2, $3); })"
+        js_insertData :: CharacterData -> Word -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/insertData MDN CharacterData.insertData documentation>
+insertData :: (MonadDOM m, IsCharacterData self, ToJSString data') => self -> Word -> data' -> m ()
+insertData self offset data' = liftDOM (void ((js_insertData ((Types.toCharacterData self)) (offset) (toJSString data'))))
+
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"replaceData\"]($2, $3, $4); })"
-        js_replaceData ::
-        CharacterData -> Word -> Word -> JSString -> IO ()
+        js_replaceData :: CharacterData -> Word -> Word -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/replaceData MDN CharacterData.replaceData documentation>
+replaceData :: (MonadDOM m, IsCharacterData self, ToJSString data') => self -> Word -> Word -> data' -> m ()
+replaceData self offset count data' = liftDOM (void ((js_replaceData ((Types.toCharacterData self)) (offset) (count) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.replaceData Mozilla CharacterData.replaceData documentation> 
-replaceData ::
-            (MonadIO m, IsCharacterData self, ToJSString data') =>
-              self -> Word -> Word -> data' -> m ()
-replaceData self offset count data'
-  = liftIO
-      (js_replaceData (toCharacterData self) offset count
-         (toJSString data'))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"data\"] = $2; })" js_setData ::
-        CharacterData -> JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"substringData\"]($2, $3); })"
+        js_substringData :: CharacterData -> Word -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/substringData MDN CharacterData.substringData documentation>
+substringData :: (MonadDOM m, IsCharacterData self, FromJSString result) => self -> Word -> Word -> m result
+substringData self offset count = liftDOM ((fromJSString <$> (js_substringData ((Types.toCharacterData self)) (offset) (count))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
-setData ::
-        (MonadIO m, IsCharacterData self, ToJSString val) =>
-          self -> val -> m ()
-setData self val
-  = liftIO (js_setData (toCharacterData self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        CharacterData -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/substringData MDN CharacterData.substringData documentation>
+substringData_ :: (MonadDOM m, IsCharacterData self) => self -> Word -> Word -> m ()
+substringData_ self offset count = liftDOM (void ((js_substringData ((Types.toCharacterData self)) (offset) (count))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
-getData ::
-        (MonadIO m, IsCharacterData self, FromJSString result) =>
-          self -> m result
-getData self
-  = liftIO (fromJSString <$> (js_getData (toCharacterData self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        CharacterData -> IO Word
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: CharacterData -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/data MDN CharacterData.data documentation>
+setData :: (MonadDOM m, IsCharacterData self, ToJSString val) => self -> val -> m ()
+setData self val = liftDOM (void ((js_setData ((Types.toCharacterData self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.length Mozilla CharacterData.length documentation> 
-getLength :: (MonadIO m, IsCharacterData self) => self -> m Word
-getLength self = liftIO (js_getLength (toCharacterData self))
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: CharacterData -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/data MDN CharacterData.data documentation>
+getData :: (MonadDOM m, IsCharacterData self, FromJSString result) => self -> m result
+getData self = liftDOM ((fromJSString <$> (js_getData ((Types.toCharacterData self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: CharacterData -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/length MDN CharacterData.length documentation>
+getLength :: (MonadDOM m, IsCharacterData self) => self -> m Word
+getLength self = liftDOM ((js_getLength ((Types.toCharacterData self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CheckVisibilityOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CheckVisibilityOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CheckVisibilityOptions.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CheckVisibilityOptions
+       (js_newCheckVisibilityOptions, js_setCheckOpacity, js_getCheckOpacity, js_setCheckVisibilityCSS, js_getCheckVisibilityCSS, js_setContentVisibilityAuto, js_getContentVisibilityAuto, js_setOpacityProperty, js_getOpacityProperty, js_setVisibilityProperty, js_getVisibilityProperty, newCheckVisibilityOptions, setCheckOpacity, getCheckOpacity, getCheckOpacityUnsafe, getCheckOpacityUnchecked, setCheckVisibilityCSS, getCheckVisibilityCSS, getCheckVisibilityCSSUnsafe, getCheckVisibilityCSSUnchecked, setContentVisibilityAuto, getContentVisibilityAuto, getContentVisibilityAutoUnsafe, getContentVisibilityAutoUnchecked, setOpacityProperty, getOpacityProperty, getOpacityPropertyUnsafe, getOpacityPropertyUnchecked, setVisibilityProperty, getVisibilityProperty, getVisibilityPropertyUnsafe, getVisibilityPropertyUnchecked, CheckVisibilityOptions(..), gTypeCheckVisibilityOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCheckVisibilityOptions :: IO CheckVisibilityOptions
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-checkvisibilityoptions CheckVisibilityOptions specification>
+newCheckVisibilityOptions :: (MonadDOM m) => m CheckVisibilityOptions
+newCheckVisibilityOptions = liftDOM ((js_newCheckVisibilityOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"checkOpacity\"] = $2; })"
+        js_setCheckOpacity :: CheckVisibilityOptions -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkopacity CheckVisibilityOptions.checkOpacity specification>
+setCheckOpacity :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setCheckOpacity self val = liftDOM (void ((js_setCheckOpacity (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"checkOpacity\"]; })"
+        js_getCheckOpacity :: CheckVisibilityOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkopacity CheckVisibilityOptions.checkOpacity specification>
+getCheckOpacity :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getCheckOpacity self = liftDOM (((js_getCheckOpacity (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkopacity CheckVisibilityOptions.checkOpacity specification>
+getCheckOpacityUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getCheckOpacityUnsafe self = liftDOM ((((js_getCheckOpacity (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkopacity CheckVisibilityOptions.checkOpacity specification>
+getCheckOpacityUnchecked :: (MonadDOM m) => CheckVisibilityOptions -> m Bool
+getCheckOpacityUnchecked self = liftDOM ((pFromJSVal <$> (js_getCheckOpacity (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"checkVisibilityCSS\"] = $2; })"
+        js_setCheckVisibilityCSS :: CheckVisibilityOptions -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkvisibilitycss CheckVisibilityOptions.checkVisibilityCSS specification>
+setCheckVisibilityCSS :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setCheckVisibilityCSS self val = liftDOM (void ((js_setCheckVisibilityCSS (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"checkVisibilityCSS\"]; })"
+        js_getCheckVisibilityCSS :: CheckVisibilityOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkvisibilitycss CheckVisibilityOptions.checkVisibilityCSS specification>
+getCheckVisibilityCSS :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getCheckVisibilityCSS self = liftDOM (((js_getCheckVisibilityCSS (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkvisibilitycss CheckVisibilityOptions.checkVisibilityCSS specification>
+getCheckVisibilityCSSUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getCheckVisibilityCSSUnsafe self = liftDOM ((((js_getCheckVisibilityCSS (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkvisibilitycss CheckVisibilityOptions.checkVisibilityCSS specification>
+getCheckVisibilityCSSUnchecked :: (MonadDOM m) => CheckVisibilityOptions -> m Bool
+getCheckVisibilityCSSUnchecked self = liftDOM ((pFromJSVal <$> (js_getCheckVisibilityCSS (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contentVisibilityAuto\"] = $2; })"
+        js_setContentVisibilityAuto :: CheckVisibilityOptions -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-contentvisibilityauto CheckVisibilityOptions.contentVisibilityAuto specification>
+setContentVisibilityAuto :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setContentVisibilityAuto self val = liftDOM (void ((js_setContentVisibilityAuto (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentVisibilityAuto\"]; })"
+        js_getContentVisibilityAuto :: CheckVisibilityOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-contentvisibilityauto CheckVisibilityOptions.contentVisibilityAuto specification>
+getContentVisibilityAuto :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getContentVisibilityAuto self = liftDOM (((js_getContentVisibilityAuto (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-contentvisibilityauto CheckVisibilityOptions.contentVisibilityAuto specification>
+getContentVisibilityAutoUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getContentVisibilityAutoUnsafe self = liftDOM ((((js_getContentVisibilityAuto (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-contentvisibilityauto CheckVisibilityOptions.contentVisibilityAuto specification>
+getContentVisibilityAutoUnchecked :: (MonadDOM m) => CheckVisibilityOptions -> m Bool
+getContentVisibilityAutoUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentVisibilityAuto (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"opacityProperty\"] = $2; })"
+        js_setOpacityProperty :: CheckVisibilityOptions -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-opacityproperty CheckVisibilityOptions.opacityProperty specification>
+setOpacityProperty :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setOpacityProperty self val = liftDOM (void ((js_setOpacityProperty (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"opacityProperty\"]; })"
+        js_getOpacityProperty :: CheckVisibilityOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-opacityproperty CheckVisibilityOptions.opacityProperty specification>
+getOpacityProperty :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getOpacityProperty self = liftDOM (((js_getOpacityProperty (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-opacityproperty CheckVisibilityOptions.opacityProperty specification>
+getOpacityPropertyUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getOpacityPropertyUnsafe self = liftDOM ((((js_getOpacityProperty (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-opacityproperty CheckVisibilityOptions.opacityProperty specification>
+getOpacityPropertyUnchecked :: (MonadDOM m) => CheckVisibilityOptions -> m Bool
+getOpacityPropertyUnchecked self = liftDOM ((pFromJSVal <$> (js_getOpacityProperty (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"visibilityProperty\"] = $2; })"
+        js_setVisibilityProperty :: CheckVisibilityOptions -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-visibilityproperty CheckVisibilityOptions.visibilityProperty specification>
+setVisibilityProperty :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setVisibilityProperty self val = liftDOM (void ((js_setVisibilityProperty (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visibilityProperty\"]; })"
+        js_getVisibilityProperty :: CheckVisibilityOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-visibilityproperty CheckVisibilityOptions.visibilityProperty specification>
+getVisibilityProperty :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getVisibilityProperty self = liftDOM (((js_getVisibilityProperty (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-visibilityproperty CheckVisibilityOptions.visibilityProperty specification>
+getVisibilityPropertyUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getVisibilityPropertyUnsafe self = liftDOM ((((js_getVisibilityProperty (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-visibilityproperty CheckVisibilityOptions.visibilityProperty specification>
+getVisibilityPropertyUnchecked :: (MonadDOM m) => CheckVisibilityOptions -> m Bool
+getVisibilityPropertyUnchecked self = liftDOM ((pFromJSVal <$> (js_getVisibilityProperty (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
@@ -1,69 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ChildNode
-       (js_before, before, js_after, after, js_replaceWith, replaceWith,
-        js_remove, remove, ChildNode(..), gTypeChildNode, IsChildNode,
-        toChildNode)
+       (js_after, js_before, js_remove, js_replaceWith, after, before, remove, replaceWith, ChildNode(..), gTypeChildNode, IsChildNode, toChildNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"before\"]($2); })" js_before ::
-        ChildNode -> JSVal -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.before Mozilla ChildNode.before documentation> 
-before ::
-       (MonadIO m, IsChildNode self, IsNodeOrString nodes) =>
-         self -> [nodes] -> m ()
-before self nodes
-  = liftIO
-      (toJSVal nodes >>= \ nodes' -> js_before (toChildNode self) nodes')
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"after\"]($2); })" js_after ::
-        ChildNode -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"after\"](...$2); })"
+        js_after :: ChildNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/after MDN ChildNode.after documentation>
+after :: (MonadDOM m, IsChildNode self, IsNodeOrString nodes) => self -> [nodes] -> m ()
+after self nodes = liftDOM (void (((toJSVal nodes) >>= \a2' -> js_after ((Types.toChildNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.after Mozilla ChildNode.after documentation> 
-after ::
-      (MonadIO m, IsChildNode self, IsNodeOrString nodes) =>
-        self -> [nodes] -> m ()
-after self nodes
-  = liftIO
-      (toJSVal nodes >>= \ nodes' -> js_after (toChildNode self) nodes')
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"replaceWith\"]($2); })"
-        js_replaceWith :: ChildNode -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"before\"](...$2); })"
+        js_before :: ChildNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/before MDN ChildNode.before documentation>
+before :: (MonadDOM m, IsChildNode self, IsNodeOrString nodes) => self -> [nodes] -> m ()
+before self nodes = liftDOM (void (((toJSVal nodes) >>= \a2' -> js_before ((Types.toChildNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.replaceWith Mozilla ChildNode.replaceWith documentation> 
-replaceWith ::
-            (MonadIO m, IsChildNode self, IsNodeOrString nodes) =>
-              self -> [nodes] -> m ()
-replaceWith self nodes
-  = liftIO
-      (toJSVal nodes >>=
-         \ nodes' -> js_replaceWith (toChildNode self) nodes')
- 
-foreign import javascript safe "(($1) => { return $1[\"remove\"](); })" js_remove ::
-        ChildNode -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"remove\"](); })"
+        js_remove :: ChildNode -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/remove MDN ChildNode.remove documentation>
+remove :: (MonadDOM m, IsChildNode self) => self -> m ()
+remove self = liftDOM (void ((js_remove ((Types.toChildNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
-remove :: (MonadIO m, IsChildNode self) => self -> m ()
-remove self = liftIO (js_remove (toChildNode self))
+foreign import javascript safe "(($1, $2) => { return $1[\"replaceWith\"](...$2); })"
+        js_replaceWith :: ChildNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/replaceWith MDN ChildNode.replaceWith documentation>
+replaceWith :: (MonadDOM m, IsChildNode self, IsNodeOrString nodes) => self -> [nodes] -> m ()
+replaceWith self nodes = liftDOM (void (((toJSVal nodes) >>= \a2' -> js_replaceWith ((Types.toChildNode self)) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Client.hs b/src/GHCJS/DOM/JSFFI/Generated/Client.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Client.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Client
+       (js_postMessage, js_postMessageOptions, js_getUrl, js_getFrameType, js_getId, js_getType, postMessage, postMessageOptions, getUrl, getFrameType, getId, getType, Client(..), gTypeClient, IsClient, toClient)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessage :: Client -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Client/postMessage MDN Client.postMessage documentation>
+postMessage :: (MonadDOM m, IsClient self) => self -> JSVal -> [GObject] -> m ()
+postMessage self message transfer = liftDOM (void (((toJSVal transfer) >>= \a3' -> js_postMessage ((Types.toClient self)) (message) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessageOptions :: Client -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Client/postMessage MDN Client.postMessage documentation>
+postMessageOptions :: (MonadDOM m, IsClient self, IsStructuredSerializeOptions options) => self -> JSVal -> Maybe options -> m ()
+postMessageOptions self message options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postMessageOptions ((Types.toClient self)) (message) a3')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: Client -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Client/url MDN Client.url documentation>
+getUrl :: (MonadDOM m, IsClient self, FromJSString result) => self -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl ((Types.toClient self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameType\"]; })"
+        js_getFrameType :: Client -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Client/frameType MDN Client.frameType documentation>
+getFrameType :: (MonadDOM m, IsClient self) => self -> m FrameType
+getFrameType self = liftDOM (((js_getFrameType ((Types.toClient self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: Client -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Client/id MDN Client.id documentation>
+getId :: (MonadDOM m, IsClient self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toClient self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Client -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Client/type MDN Client.type documentation>
+getType :: (MonadDOM m, IsClient self) => self -> m ClientType
+getType self = liftDOM (((js_getType ((Types.toClient self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClientQueryOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ClientQueryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClientQueryOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ClientQueryOptions
+       (js_newClientQueryOptions, js_setIncludeUncontrolled, js_getIncludeUncontrolled, js_setType, js_getType, newClientQueryOptions, setIncludeUncontrolled, getIncludeUncontrolled, getIncludeUncontrolledUnsafe, getIncludeUncontrolledUnchecked, setType, getType, getTypeUnsafe, getTypeUnchecked, ClientQueryOptions(..), gTypeClientQueryOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newClientQueryOptions :: IO ClientQueryOptions
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-clientqueryoptions ClientQueryOptions specification>
+newClientQueryOptions :: (MonadDOM m) => m ClientQueryOptions
+newClientQueryOptions = liftDOM ((js_newClientQueryOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"includeUncontrolled\"] = $2; })"
+        js_setIncludeUncontrolled :: ClientQueryOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-includeuncontrolled ClientQueryOptions.includeUncontrolled specification>
+setIncludeUncontrolled :: (MonadDOM m) => ClientQueryOptions -> Bool -> m ()
+setIncludeUncontrolled self val = liftDOM (void ((js_setIncludeUncontrolled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"includeUncontrolled\"]; })"
+        js_getIncludeUncontrolled :: ClientQueryOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-includeuncontrolled ClientQueryOptions.includeUncontrolled specification>
+getIncludeUncontrolled :: (MonadDOM m) => ClientQueryOptions -> m (Maybe Bool)
+getIncludeUncontrolled self = liftDOM (((js_getIncludeUncontrolled (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-includeuncontrolled ClientQueryOptions.includeUncontrolled specification>
+getIncludeUncontrolledUnsafe :: (MonadDOM m, HasCallStack) => ClientQueryOptions -> m Bool
+getIncludeUncontrolledUnsafe self = liftDOM ((((js_getIncludeUncontrolled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-includeuncontrolled ClientQueryOptions.includeUncontrolled specification>
+getIncludeUncontrolledUnchecked :: (MonadDOM m) => ClientQueryOptions -> m Bool
+getIncludeUncontrolledUnchecked self = liftDOM ((pFromJSVal <$> (js_getIncludeUncontrolled (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: ClientQueryOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-type ClientQueryOptions.type specification>
+setType :: (MonadDOM m) => ClientQueryOptions -> ClientType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: ClientQueryOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-type ClientQueryOptions.type specification>
+getType :: (MonadDOM m) => ClientQueryOptions -> m (Maybe ClientType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-type ClientQueryOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => ClientQueryOptions -> m ClientType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-type ClientQueryOptions.type specification>
+getTypeUnchecked :: (MonadDOM m) => ClientQueryOptions -> m ClientType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Clients.hs b/src/GHCJS/DOM/JSFFI/Generated/Clients.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Clients.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Clients
+       (js_claim, js_get, js_matchAll, js_openWindow, claim, get, get_, matchAll, matchAll_, openWindow, openWindow_, openWindowUnsafe, openWindowUnchecked, Clients(..), gTypeClients)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"claim\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_claim :: Clients -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/claim MDN Clients.claim documentation>
+claim :: (MonadDOM m) => Clients -> m ()
+claim self = liftDOM (void (((js_claim (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"get\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_get :: Clients -> JSString -> IO (JSVal, ClientOrUndefined)
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/get MDN Clients.get documentation>
+get :: (MonadDOM m, ToJSString id) => Clients -> id -> m ClientOrUndefined
+get self id = liftDOM (((js_get (self) (toJSString id)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/get MDN Clients.get documentation>
+get_ :: (MonadDOM m, ToJSString id) => Clients -> id -> m ()
+get_ self id = liftDOM (void (((js_get (self) (toJSString id)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"matchAll\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_matchAll :: Clients -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/matchAll MDN Clients.matchAll documentation>
+matchAll :: (MonadDOM m) => Clients -> Maybe ClientQueryOptions -> m [Client]
+matchAll self options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_matchAll (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/matchAll MDN Clients.matchAll documentation>
+matchAll_ :: (MonadDOM m) => Clients -> Maybe ClientQueryOptions -> m ()
+matchAll_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_matchAll (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"openWindow\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_openWindow :: Clients -> JSString -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/openWindow MDN Clients.openWindow documentation>
+openWindow :: (MonadDOM m, ToJSString url) => Clients -> url -> m (Maybe WindowClient)
+openWindow self url = liftDOM ((((js_openWindow (self) (toJSString url)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/openWindow MDN Clients.openWindow documentation>
+openWindow_ :: (MonadDOM m, ToJSString url) => Clients -> url -> m ()
+openWindow_ self url = liftDOM (void (((js_openWindow (self) (toJSString url)) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/openWindow MDN Clients.openWindow documentation>
+openWindowUnsafe :: (MonadDOM m, ToJSString url, HasCallStack) => Clients -> url -> m WindowClient
+openWindowUnsafe self url = liftDOM (((((js_openWindow (self) (toJSString url)) >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/openWindow MDN Clients.openWindow documentation>
+openWindowUnchecked :: (MonadDOM m, ToJSString url) => Clients -> url -> m WindowClient
+openWindowUnchecked self url = liftDOM ((pFromJSVal <$> ((js_openWindow (self) (toJSString url)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Clipboard.hs b/src/GHCJS/DOM/JSFFI/Generated/Clipboard.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Clipboard.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Clipboard
+       (js_read, js_readText, js_write, js_writeText, read, read_, readText, readText_, write, writeText, Clipboard(..), gTypeClipboard)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"read\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_read :: Clipboard -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/read MDN Clipboard.read documentation>
+read :: (MonadDOM m) => Clipboard -> Maybe ClipboardUnsanitizedFormats -> m [ClipboardItem]
+read self formats = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal formats) >>= \a2' -> js_read (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/read MDN Clipboard.read documentation>
+read_ :: (MonadDOM m) => Clipboard -> Maybe ClipboardUnsanitizedFormats -> m ()
+read_ self formats = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal formats) >>= \a2' -> js_read (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"readText\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_readText :: Clipboard -> IO (JSVal, JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/readText MDN Clipboard.readText documentation>
+readText :: (MonadDOM m, FromJSString result) => Clipboard -> m result
+readText self = liftDOM ((fromJSString <$> ((js_readText (self)) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/readText MDN Clipboard.readText documentation>
+readText_ :: (MonadDOM m) => Clipboard -> m ()
+readText_ self = liftDOM (void (((js_readText (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"write\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_write :: Clipboard -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/write MDN Clipboard.write documentation>
+write :: (MonadDOM m) => Clipboard -> [ClipboardItem] -> m ()
+write self data' = liftDOM (void ((((toJSVal data') >>= \a2' -> js_write (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"writeText\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_writeText :: Clipboard -> JSString -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/writeText MDN Clipboard.writeText documentation>
+writeText :: (MonadDOM m, ToJSString data') => Clipboard -> data' -> m ()
+writeText self data' = liftDOM (void (((js_writeText (self) (toJSString data')) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardChangeEvent.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ClipboardChangeEvent
+       (ClipboardChangeEvent(..), gTypeClipboardChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
@@ -1,65 +1,37 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ClipboardEvent
-       (js_newClipboardEvent, newClipboardEvent, js_getClipboardData,
-        getClipboardData, getClipboardDataUnsafe,
-        getClipboardDataUnchecked, ClipboardEvent(..), gTypeClipboardEvent)
+       (js_newClipboardEvent, js_getClipboardData, newClipboardEvent, getClipboardData, getClipboardDataUnsafe, getClipboardDataUnchecked, ClipboardEvent(..), gTypeClipboardEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"ClipboardEvent\"]($1,\n$2); })" js_newClipboardEvent ::
-        JSString -> Optional ClipboardEventInit -> IO ClipboardEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent Mozilla ClipboardEvent documentation> 
-newClipboardEvent ::
-                  (MonadIO m, ToJSString type') =>
-                    type' -> Maybe ClipboardEventInit -> m ClipboardEvent
-newClipboardEvent type' eventInitDict
-  = liftIO
-      (js_newClipboardEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clipboardData\"]; })"
-        js_getClipboardData :: ClipboardEvent -> IO (Nullable DataTransfer)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ClipboardEvent\"]($1, $2); })"
+        js_newClipboardEvent :: JSString -> JSVal -> IO ClipboardEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardEvent/ClipboardEvent MDN ClipboardEvent. documentation>
+newClipboardEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe ClipboardEventInit -> m ClipboardEvent
+newClipboardEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newClipboardEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
-getClipboardData ::
-                 (MonadIO m) => ClipboardEvent -> m (Maybe DataTransfer)
-getClipboardData self
-  = liftIO (nullableToMaybe <$> (js_getClipboardData self))
+foreign import javascript unsafe "(($1) => { return $1[\"clipboardData\"]; })"
+        js_getClipboardData :: ClipboardEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardEvent/clipboardData MDN ClipboardEvent.clipboardData documentation>
+getClipboardData :: (MonadDOM m) => ClipboardEvent -> m (Maybe DataTransfer)
+getClipboardData self = liftDOM (((js_getClipboardData (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
-getClipboardDataUnsafe ::
-                       (MonadIO m, HasCallStack) => ClipboardEvent -> m DataTransfer
-getClipboardDataUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getClipboardData self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardEvent/clipboardData MDN ClipboardEvent.clipboardData documentation>
+getClipboardDataUnsafe :: (MonadDOM m, HasCallStack) => ClipboardEvent -> m DataTransfer
+getClipboardDataUnsafe self = liftDOM ((((js_getClipboardData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
-getClipboardDataUnchecked ::
-                          (MonadIO m) => ClipboardEvent -> m DataTransfer
-getClipboardDataUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getClipboardData self))
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardEvent/clipboardData MDN ClipboardEvent.clipboardData documentation>
+getClipboardDataUnchecked :: (MonadDOM m) => ClipboardEvent -> m DataTransfer
+getClipboardDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getClipboardData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ClipboardEventInit
+       (js_newClipboardEventInit, js_setClipboardData, js_getClipboardData, newClipboardEventInit, setClipboardData, getClipboardData, getClipboardDataUnsafe, getClipboardDataUnchecked, ClipboardEventInit(..), gTypeClipboardEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newClipboardEventInit :: IO ClipboardEventInit
+-- | <https://w3c.github.io/clipboard-apis/#dictdef-clipboardeventinit ClipboardEventInit specification>
+newClipboardEventInit :: (MonadDOM m) => m ClipboardEventInit
+newClipboardEventInit = liftDOM ((js_newClipboardEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clipboardData\"] = $2; })"
+        js_setClipboardData :: ClipboardEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardeventinit-clipboarddata ClipboardEventInit.clipboardData specification>
+setClipboardData :: (MonadDOM m) => ClipboardEventInit -> Maybe DataTransfer -> m ()
+setClipboardData self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setClipboardData (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clipboardData\"]; })"
+        js_getClipboardData :: ClipboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardeventinit-clipboarddata ClipboardEventInit.clipboardData specification>
+getClipboardData :: (MonadDOM m) => ClipboardEventInit -> m (Maybe DataTransfer)
+getClipboardData self = liftDOM (((js_getClipboardData (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardeventinit-clipboarddata ClipboardEventInit.clipboardData specification>
+getClipboardDataUnsafe :: (MonadDOM m, HasCallStack) => ClipboardEventInit -> m DataTransfer
+getClipboardDataUnsafe self = liftDOM ((((js_getClipboardData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardeventinit-clipboarddata ClipboardEventInit.clipboardData specification>
+getClipboardDataUnchecked :: (MonadDOM m) => ClipboardEventInit -> m DataTransfer
+getClipboardDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getClipboardData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardItem.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardItem.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardItem.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ClipboardItem
+       (js_newClipboardItem, js_getType, js_supports, js_getPresentationStyle, js_getTypes, newClipboardItem, getType, getType_, supports, supports_, getPresentationStyle, getTypes, ClipboardItem(..), gTypeClipboardItem)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ClipboardItem\"]($1, $2); })"
+        js_newClipboardItem :: JSVal -> JSVal -> IO ClipboardItem
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/ClipboardItem MDN ClipboardItem. documentation>
+newClipboardItem :: (MonadDOM m) => (Record JSString JSVal) -> Maybe ClipboardItemOptions -> m ClipboardItem
+newClipboardItem items options = liftDOM (((toJSVal items) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newClipboardItem a1' a2'))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getType\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getType :: ClipboardItem -> JSString -> IO (JSVal, Blob)
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/getType MDN ClipboardItem.getType documentation>
+getType :: (MonadDOM m, ToJSString type') => ClipboardItem -> type' -> m Blob
+getType self type' = liftDOM (((js_getType (self) (toJSString type')) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/getType MDN ClipboardItem.getType documentation>
+getType_ :: (MonadDOM m, ToJSString type') => ClipboardItem -> type' -> m ()
+getType_ self type' = liftDOM (void (((js_getType (self) (toJSString type')) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return globalThis[\"ClipboardItem\"][\"supports\"]($1); })"
+        js_supports :: JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/supports_static MDN ClipboardItem.supports documentation>
+supports :: (MonadDOM m, ToJSString type') => type' -> m Bool
+supports type' = liftDOM ((js_supports (toJSString type')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/supports_static MDN ClipboardItem.supports documentation>
+supports_ :: (MonadDOM m, ToJSString type') => type' -> m ()
+supports_ type' = liftDOM (void ((js_supports (toJSString type'))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"presentationStyle\"]; })"
+        js_getPresentationStyle :: ClipboardItem -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/presentationStyle MDN ClipboardItem.presentationStyle documentation>
+getPresentationStyle :: (MonadDOM m) => ClipboardItem -> m PresentationStyle
+getPresentationStyle self = liftDOM (((js_getPresentationStyle (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })"
+        js_getTypes :: ClipboardItem -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/types MDN ClipboardItem.types documentation>
+getTypes :: (MonadDOM m, FromJSString result) => ClipboardItem -> m [result]
+getTypes self = liftDOM (((js_getTypes (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardItemOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardItemOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardItemOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ClipboardItemOptions
+       (js_newClipboardItemOptions, js_setPresentationStyle, js_getPresentationStyle, newClipboardItemOptions, setPresentationStyle, getPresentationStyle, getPresentationStyleUnsafe, getPresentationStyleUnchecked, ClipboardItemOptions(..), gTypeClipboardItemOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newClipboardItemOptions :: IO ClipboardItemOptions
+-- | <https://w3c.github.io/clipboard-apis/#dictdef-clipboarditemoptions ClipboardItemOptions specification>
+newClipboardItemOptions :: (MonadDOM m) => m ClipboardItemOptions
+newClipboardItemOptions = liftDOM ((js_newClipboardItemOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"presentationStyle\"] = $2; })"
+        js_setPresentationStyle :: ClipboardItemOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboarditemoptions-presentationstyle ClipboardItemOptions.presentationStyle specification>
+setPresentationStyle :: (MonadDOM m) => ClipboardItemOptions -> PresentationStyle -> m ()
+setPresentationStyle self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPresentationStyle (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"presentationStyle\"]; })"
+        js_getPresentationStyle :: ClipboardItemOptions -> IO JSVal
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboarditemoptions-presentationstyle ClipboardItemOptions.presentationStyle specification>
+getPresentationStyle :: (MonadDOM m) => ClipboardItemOptions -> m (Maybe PresentationStyle)
+getPresentationStyle self = liftDOM (((js_getPresentationStyle (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboarditemoptions-presentationstyle ClipboardItemOptions.presentationStyle specification>
+getPresentationStyleUnsafe :: (MonadDOM m, HasCallStack) => ClipboardItemOptions -> m PresentationStyle
+getPresentationStyleUnsafe self = liftDOM ((((js_getPresentationStyle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboarditemoptions-presentationstyle ClipboardItemOptions.presentationStyle specification>
+getPresentationStyleUnchecked :: (MonadDOM m) => ClipboardItemOptions -> m PresentationStyle
+getPresentationStyleUnchecked self = liftDOM ((pFromJSVal <$> (js_getPresentationStyle (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardUnsanitizedFormats.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardUnsanitizedFormats.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardUnsanitizedFormats.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ClipboardUnsanitizedFormats
+       (js_newClipboardUnsanitizedFormats, js_setUnsanitized, js_getUnsanitized, newClipboardUnsanitizedFormats, setUnsanitized, getUnsanitized, getUnsanitizedUnsafe, getUnsanitizedUnchecked, ClipboardUnsanitizedFormats(..), gTypeClipboardUnsanitizedFormats)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newClipboardUnsanitizedFormats :: IO ClipboardUnsanitizedFormats
+-- | <https://w3c.github.io/clipboard-apis/#dictdef-clipboardunsanitizedformats ClipboardUnsanitizedFormats specification>
+newClipboardUnsanitizedFormats :: (MonadDOM m) => m ClipboardUnsanitizedFormats
+newClipboardUnsanitizedFormats = liftDOM ((js_newClipboardUnsanitizedFormats))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unsanitized\"] = $2; })"
+        js_setUnsanitized :: ClipboardUnsanitizedFormats -> JSVal -> IO ()
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardunsanitizedformats-unsanitized ClipboardUnsanitizedFormats.unsanitized specification>
+setUnsanitized :: (MonadDOM m, ToJSString val) => ClipboardUnsanitizedFormats -> [val] -> m ()
+setUnsanitized self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setUnsanitized (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unsanitized\"]; })"
+        js_getUnsanitized :: ClipboardUnsanitizedFormats -> IO JSVal
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardunsanitizedformats-unsanitized ClipboardUnsanitizedFormats.unsanitized specification>
+getUnsanitized :: (MonadDOM m, FromJSString result) => ClipboardUnsanitizedFormats -> m (Maybe [result])
+getUnsanitized self = liftDOM (((js_getUnsanitized (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardunsanitizedformats-unsanitized ClipboardUnsanitizedFormats.unsanitized specification>
+getUnsanitizedUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ClipboardUnsanitizedFormats -> m [result]
+getUnsanitizedUnsafe self = liftDOM ((((js_getUnsanitized (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardunsanitizedformats-unsanitized ClipboardUnsanitizedFormats.unsanitized specification>
+getUnsanitizedUnchecked :: (MonadDOM m, FromJSString result) => ClipboardUnsanitizedFormats -> m [result]
+getUnsanitizedUnchecked self = liftDOM (((js_getUnsanitized (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
@@ -1,63 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from websockets (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CloseEvent
-       (js_newCloseEvent, newCloseEvent, js_getWasClean, getWasClean,
-        js_getCode, getCode, js_getReason, getReason, CloseEvent(..),
-        gTypeCloseEvent)
+       (js_newCloseEvent, js_getWasClean, js_getCode, js_getReason, newCloseEvent, getWasClean, getCode, getReason, CloseEvent(..), gTypeCloseEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"CloseEvent\"]($1, $2); })" js_newCloseEvent ::
-        JSString -> Optional CloseEventInit -> IO CloseEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation> 
-newCloseEvent ::
-              (MonadIO m, ToJSString type') =>
-                type' -> Maybe CloseEventInit -> m CloseEvent
-newCloseEvent type' eventInitDict
-  = liftIO
-      (js_newCloseEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"wasClean\"] ? 1 : 0); })"
-        js_getWasClean :: CloseEvent -> IO Bool
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CloseEvent\"]($1, $2); })"
+        js_newCloseEvent :: JSString -> JSVal -> IO CloseEvent
+-- | <https://developer.mozilla.org/docs/Web/API/CloseEvent/CloseEvent MDN CloseEvent. documentation>
+newCloseEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe CloseEventInit -> m CloseEvent
+newCloseEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newCloseEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.wasClean Mozilla CloseEvent.wasClean documentation> 
-getWasClean :: (MonadIO m) => CloseEvent -> m Bool
-getWasClean self = liftIO (js_getWasClean self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        CloseEvent -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"wasClean\"]; })"
+        js_getWasClean :: CloseEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean MDN CloseEvent.wasClean documentation>
+getWasClean :: (MonadDOM m) => CloseEvent -> m Bool
+getWasClean self = liftDOM ((js_getWasClean (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.code Mozilla CloseEvent.code documentation> 
-getCode :: (MonadIO m) => CloseEvent -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })" js_getReason ::
-        CloseEvent -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: CloseEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/CloseEvent/code MDN CloseEvent.code documentation>
+getCode :: (MonadDOM m) => CloseEvent -> m Word
+getCode self = liftDOM ((js_getCode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.reason Mozilla CloseEvent.reason documentation> 
-getReason ::
-          (MonadIO m, FromJSString result) => CloseEvent -> m result
-getReason self = liftIO (fromJSString <$> (js_getReason self))
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: CloseEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CloseEvent/reason MDN CloseEvent.reason documentation>
+getReason :: (MonadDOM m, FromJSString result) => CloseEvent -> m result
+getReason self = liftDOM ((fromJSString <$> (js_getReason (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CloseEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/CloseEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CloseEventInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from websockets (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CloseEventInit
+       (js_newCloseEventInit, js_setWasClean, js_getWasClean, js_setCode, js_getCode, js_setReason, js_getReason, newCloseEventInit, setWasClean, getWasClean, getWasCleanUnsafe, getWasCleanUnchecked, setCode, getCode, getCodeUnsafe, getCodeUnchecked, setReason, getReason, getReasonUnsafe, getReasonUnchecked, CloseEventInit(..), gTypeCloseEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCloseEventInit :: IO CloseEventInit
+-- | <https://websockets.spec.whatwg.org/#dictdef-closeeventinit CloseEventInit specification>
+newCloseEventInit :: (MonadDOM m) => m CloseEventInit
+newCloseEventInit = liftDOM ((js_newCloseEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"wasClean\"] = $2; })"
+        js_setWasClean :: CloseEventInit -> Bool -> IO ()
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-wasclean CloseEventInit.wasClean specification>
+setWasClean :: (MonadDOM m) => CloseEventInit -> Bool -> m ()
+setWasClean self val = liftDOM (void ((js_setWasClean (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"wasClean\"]; })"
+        js_getWasClean :: CloseEventInit -> IO JSVal
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-wasclean CloseEventInit.wasClean specification>
+getWasClean :: (MonadDOM m) => CloseEventInit -> m (Maybe Bool)
+getWasClean self = liftDOM (((js_getWasClean (self)) >>= fromJSValUnchecked))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-wasclean CloseEventInit.wasClean specification>
+getWasCleanUnsafe :: (MonadDOM m, HasCallStack) => CloseEventInit -> m Bool
+getWasCleanUnsafe self = liftDOM ((((js_getWasClean (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-wasclean CloseEventInit.wasClean specification>
+getWasCleanUnchecked :: (MonadDOM m) => CloseEventInit -> m Bool
+getWasCleanUnchecked self = liftDOM ((pFromJSVal <$> (js_getWasClean (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"code\"] = $2; })"
+        js_setCode :: CloseEventInit -> Word -> IO ()
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-code CloseEventInit.code specification>
+setCode :: (MonadDOM m) => CloseEventInit -> Word -> m ()
+setCode self val = liftDOM (void ((js_setCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: CloseEventInit -> IO JSVal
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-code CloseEventInit.code specification>
+getCode :: (MonadDOM m) => CloseEventInit -> m (Maybe Word)
+getCode self = liftDOM (((js_getCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-code CloseEventInit.code specification>
+getCodeUnsafe :: (MonadDOM m, HasCallStack) => CloseEventInit -> m Word
+getCodeUnsafe self = liftDOM ((((js_getCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-code CloseEventInit.code specification>
+getCodeUnchecked :: (MonadDOM m) => CloseEventInit -> m Word
+getCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"reason\"] = $2; })"
+        js_setReason :: CloseEventInit -> JSString -> IO ()
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-reason CloseEventInit.reason specification>
+setReason :: (MonadDOM m, ToJSString val) => CloseEventInit -> val -> m ()
+setReason self val = liftDOM (void ((js_setReason (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: CloseEventInit -> IO JSVal
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-reason CloseEventInit.reason specification>
+getReason :: (MonadDOM m, FromJSString result) => CloseEventInit -> m (Maybe result)
+getReason self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getReason (self))))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-reason CloseEventInit.reason specification>
+getReasonUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CloseEventInit -> m result
+getReasonUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getReason (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-reason CloseEventInit.reason specification>
+getReasonUnchecked :: (MonadDOM m, FromJSString result) => CloseEventInit -> m result
+getReasonUnchecked self = liftDOM ((pFromJSVal <$> (js_getReason (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CloseWatcher.hs b/src/GHCJS/DOM/JSFFI/Generated/CloseWatcher.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CloseWatcher.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CloseWatcher
+       (js_newCloseWatcher, js_close, js_destroy, js_requestClose, newCloseWatcher, close, destroy, requestClose, cancel, closeEvent, CloseWatcher(..), gTypeCloseWatcher)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CloseWatcher\"]($1); })"
+        js_newCloseWatcher :: JSVal -> IO CloseWatcher
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/CloseWatcher MDN CloseWatcher. documentation>
+newCloseWatcher :: (MonadDOM m) => Maybe CloseWatcherOptions -> m CloseWatcher
+newCloseWatcher options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a1' -> js_newCloseWatcher a1'))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: CloseWatcher -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/close MDN CloseWatcher.close documentation>
+close :: (MonadDOM m) => CloseWatcher -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"destroy\"](); })"
+        js_destroy :: CloseWatcher -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/destroy MDN CloseWatcher.destroy documentation>
+destroy :: (MonadDOM m) => CloseWatcher -> m ()
+destroy self = liftDOM (void ((js_destroy (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"requestClose\"](); })"
+        js_requestClose :: CloseWatcher -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/requestClose MDN CloseWatcher.requestClose documentation>
+requestClose :: (MonadDOM m) => CloseWatcher -> m ()
+requestClose self = liftDOM (void ((js_requestClose (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#handler-closewatcher-oncancel cancel event>
+cancel :: EventName CloseWatcher Event
+cancel = unsafeEventName (toJSString "cancel")
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#handler-closewatcher-onclose close event>
+closeEvent :: EventName CloseWatcher Event
+closeEvent = unsafeEventNameAsync (toJSString "close")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CloseWatcherOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CloseWatcherOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CloseWatcherOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CloseWatcherOptions
+       (js_newCloseWatcherOptions, js_setSignal, js_getSignal, newCloseWatcherOptions, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, CloseWatcherOptions(..), gTypeCloseWatcherOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCloseWatcherOptions :: IO CloseWatcherOptions
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#closewatcheroptions CloseWatcherOptions specification>
+newCloseWatcherOptions :: (MonadDOM m) => m CloseWatcherOptions
+newCloseWatcherOptions = liftDOM ((js_newCloseWatcherOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: CloseWatcherOptions -> AbortSignal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-closewatcheroptions-signal CloseWatcherOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => CloseWatcherOptions -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: CloseWatcherOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-closewatcheroptions-signal CloseWatcherOptions.signal specification>
+getSignal :: (MonadDOM m) => CloseWatcherOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-closewatcheroptions-signal CloseWatcherOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => CloseWatcherOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-closewatcheroptions-signal CloseWatcherOptions.signal specification>
+getSignalUnchecked :: (MonadDOM m) => CloseWatcherOptions -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CommandEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CommandEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CommandEvent.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CommandEvent
+       (js_newCommandEvent, js_getSource, js_getCommand, newCommandEvent, getSource, getSourceUnsafe, getSourceUnchecked, getCommand, CommandEvent(..), gTypeCommandEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CommandEvent\"]($1, $2); })"
+        js_newCommandEvent :: JSString -> JSVal -> IO CommandEvent
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/CommandEvent MDN CommandEvent. documentation>
+newCommandEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe CommandEventInit -> m CommandEvent
+newCommandEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newCommandEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: CommandEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/source MDN CommandEvent.source documentation>
+getSource :: (MonadDOM m) => CommandEvent -> m (Maybe Element)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/source MDN CommandEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => CommandEvent -> m Element
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/source MDN CommandEvent.source documentation>
+getSourceUnchecked :: (MonadDOM m) => CommandEvent -> m Element
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"command\"]; })"
+        js_getCommand :: CommandEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/command MDN CommandEvent.command documentation>
+getCommand :: (MonadDOM m, FromJSString result) => CommandEvent -> m result
+getCommand self = liftDOM ((fromJSString <$> (js_getCommand (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CommandEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/CommandEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CommandEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CommandEventInit
+       (js_newCommandEventInit, js_setSource, js_getSource, js_setCommand, js_getCommand, newCommandEventInit, setSource, getSource, getSourceUnsafe, getSourceUnchecked, setCommand, getCommand, getCommandUnsafe, getCommandUnchecked, CommandEventInit(..), gTypeCommandEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCommandEventInit :: IO CommandEventInit
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#commandeventinit CommandEventInit specification>
+newCommandEventInit :: (MonadDOM m) => m CommandEventInit
+newCommandEventInit = liftDOM ((js_newCommandEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: CommandEventInit -> JSVal -> IO ()
+setSource :: (MonadDOM m, IsElement val) => CommandEventInit -> Maybe val -> m ()
+setSource self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSource (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: CommandEventInit -> IO JSVal
+getSource :: (MonadDOM m) => CommandEventInit -> m (Maybe Element)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => CommandEventInit -> m Element
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getSourceUnchecked :: (MonadDOM m) => CommandEventInit -> m Element
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"command\"] = $2; })"
+        js_setCommand :: CommandEventInit -> JSString -> IO ()
+setCommand :: (MonadDOM m, ToJSString val) => CommandEventInit -> val -> m ()
+setCommand self val = liftDOM (void ((js_setCommand (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"command\"]; })"
+        js_getCommand :: CommandEventInit -> IO JSVal
+getCommand :: (MonadDOM m, FromJSString result) => CommandEventInit -> m (Maybe result)
+getCommand self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCommand (self))))
+
+getCommandUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CommandEventInit -> m result
+getCommandUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCommand (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getCommandUnchecked :: (MonadDOM m, FromJSString result) => CommandEventInit -> m result
+getCommandUnchecked self = liftDOM ((pFromJSVal <$> (js_getCommand (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs b/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost
-       (js_clearConsoleMessages, clearConsoleMessages, js_copyText,
-        copyText, js_inspect, inspect, js_inspectedObject, inspectedObject,
-        inspectedObject_, js_getEventListeners, getEventListeners,
-        getEventListeners_, js_databaseId, databaseId, databaseId_,
-        js_storageId, storageId, storageId_, CommandLineAPIHost(..),
-        gTypeCommandLineAPIHost)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clearConsoleMessages\"](); })"
-        js_clearConsoleMessages :: CommandLineAPIHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.clearConsoleMessages Mozilla CommandLineAPIHost.clearConsoleMessages documentation> 
-clearConsoleMessages :: (MonadIO m) => CommandLineAPIHost -> m ()
-clearConsoleMessages self = liftIO (js_clearConsoleMessages self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"copyText\"]($2); })" js_copyText
-        :: CommandLineAPIHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.copyText Mozilla CommandLineAPIHost.copyText documentation> 
-copyText ::
-         (MonadIO m, ToJSString text) => CommandLineAPIHost -> text -> m ()
-copyText self text = liftIO (js_copyText self (toJSString text))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"inspect\"]($2, $3); })"
-        js_inspect :: CommandLineAPIHost -> JSVal -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspect Mozilla CommandLineAPIHost.inspect documentation> 
-inspect ::
-        (MonadIO m, ToJSVal objectId, ToJSVal hints) =>
-          CommandLineAPIHost -> objectId -> hints -> m ()
-inspect self objectId hints
-  = liftIO
-      (toJSVal hints >>=
-         \ hints' ->
-           toJSVal objectId >>= \ objectId' -> js_inspect self objectId'
-             hints')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"inspectedObject\"](); })"
-        js_inspectedObject :: CommandLineAPIHost -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
-inspectedObject :: (MonadIO m) => CommandLineAPIHost -> m JSVal
-inspectedObject self = liftIO (js_inspectedObject self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
-inspectedObject_ :: (MonadIO m) => CommandLineAPIHost -> m ()
-inspectedObject_ self = liftIO (void (js_inspectedObject self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getEventListeners\"]($2); })"
-        js_getEventListeners :: CommandLineAPIHost -> Node -> IO Array
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
-getEventListeners ::
-                  (MonadIO m, IsNode node) => CommandLineAPIHost -> node -> m Array
-getEventListeners self node
-  = liftIO (js_getEventListeners self (toNode node))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
-getEventListeners_ ::
-                   (MonadIO m, IsNode node) => CommandLineAPIHost -> node -> m ()
-getEventListeners_ self node
-  = liftIO (void (js_getEventListeners self (toNode node)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"databaseId\"]($2); })"
-        js_databaseId :: CommandLineAPIHost -> JSVal -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
-databaseId ::
-           (MonadIO m, ToJSVal database, FromJSString result) =>
-             CommandLineAPIHost -> database -> m result
-databaseId self database
-  = liftIO
-      (fromJSString <$>
-         (toJSVal database >>= \ database' -> js_databaseId self database'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
-databaseId_ ::
-            (MonadIO m, ToJSVal database) =>
-              CommandLineAPIHost -> database -> m ()
-databaseId_ self database
-  = liftIO
-      (void
-         (toJSVal database >>= \ database' -> js_databaseId self database'))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"storageId\"]($2); })"
-        js_storageId :: CommandLineAPIHost -> JSVal -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
-storageId ::
-          (MonadIO m, ToJSVal storage, FromJSString result) =>
-            CommandLineAPIHost -> storage -> m result
-storageId self storage
-  = liftIO
-      (fromJSString <$>
-         (toJSVal storage >>= \ storage' -> js_storageId self storage'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
-storageId_ ::
-           (MonadIO m, ToJSVal storage) =>
-             CommandLineAPIHost -> storage -> m ()
-storageId_ self storage
-  = liftIO
-      (void
-         (toJSVal storage >>= \ storage' -> js_storageId self storage'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Comment.hs b/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
@@ -1,34 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Comment
-       (js_newComment, newComment, Comment(..), gTypeComment) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+       (js_newComment, newComment, Comment(..), gTypeComment)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return new window[\"Comment\"]($1); })"
-        js_newComment :: Optional JSString -> IO Comment
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation> 
-newComment ::
-           (MonadIO m, ToJSString data') => Maybe data' -> m Comment
-newComment data'
-  = liftIO (js_newComment (toOptionalJSString data'))
+foreign import javascript safe "(($1) => { return new globalThis[\"Comment\"]($1); })"
+        js_newComment :: (Optional JSString) -> IO Comment
+-- | <https://developer.mozilla.org/docs/Web/API/Comment/Comment MDN Comment. documentation>
+newComment :: (MonadDOM m, ToJSString data') => Maybe data' -> m Comment
+newComment data' = liftDOM ((js_newComment (toOptionalJSString data')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
@@ -1,71 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CompositionEvent
-       (js_newCompositionEvent, newCompositionEvent,
-        js_initCompositionEvent, initCompositionEvent, js_getData, getData,
-        CompositionEvent(..), gTypeCompositionEvent)
+       (js_newCompositionEvent, js_initCompositionEvent, js_getData, newCompositionEvent, initCompositionEvent, getData, CompositionEvent(..), gTypeCompositionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"CompositionEvent\"]($1,\n$2); })" js_newCompositionEvent
-        :: JSString -> Optional CompositionEventInit -> IO CompositionEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation> 
-newCompositionEvent ::
-                    (MonadIO m, ToJSString type') =>
-                      type' -> Maybe CompositionEventInit -> m CompositionEvent
-newCompositionEvent type' eventInitDict
-  = liftIO
-      (js_newCompositionEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initCompositionEvent\"]($2,\n$3, $4, $5, $6); })"
-        js_initCompositionEvent ::
-        CompositionEvent ->
-          Optional JSString ->
-            Bool -> Bool -> Optional Window -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CompositionEvent\"]($1, $2); })"
+        js_newCompositionEvent :: JSString -> JSVal -> IO CompositionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/CompositionEvent/CompositionEvent MDN CompositionEvent. documentation>
+newCompositionEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe CompositionEventInit -> m CompositionEvent
+newCompositionEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newCompositionEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.initCompositionEvent Mozilla CompositionEvent.initCompositionEvent documentation> 
-initCompositionEvent ::
-                     (MonadIO m, ToJSString typeArg, ToJSString dataArg) =>
-                       CompositionEvent ->
-                         Maybe typeArg ->
-                           Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()
-initCompositionEvent self typeArg canBubbleArg cancelableArg
-  viewArg dataArg
-  = liftIO
-      (js_initCompositionEvent self (toOptionalJSString typeArg)
-         canBubbleArg
-         cancelableArg
-         (maybeToOptional viewArg)
-         (toOptionalJSString dataArg))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        CompositionEvent -> IO JSString
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"initCompositionEvent\"]($2, $3, $4, $5, $6); })"
+        js_initCompositionEvent :: CompositionEvent -> JSString -> JSVal -> JSVal -> JSVal -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CompositionEvent/initCompositionEvent MDN CompositionEvent.initCompositionEvent documentation>
+initCompositionEvent :: (MonadDOM m, ToJSString typeArg, ToJSString dataArg) => CompositionEvent -> typeArg -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe dataArg -> m ()
+initCompositionEvent self typeArg bubblesArg cancelableArg viewArg dataArg = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubblesArg) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelableArg) >>= \a4' -> (toJSVal viewArg) >>= \a5' -> js_initCompositionEvent (self) (toJSString typeArg) a3' a4' a5' (toOptionalJSString dataArg))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.data Mozilla CompositionEvent.data documentation> 
-getData ::
-        (MonadIO m, FromJSString result) => CompositionEvent -> m result
-getData self = liftIO (fromJSString <$> (js_getData self))
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: CompositionEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/CompositionEvent/data MDN CompositionEvent.data documentation>
+getData :: (MonadDOM m, FromJSString result) => CompositionEvent -> m result
+getData self = liftDOM ((fromJSString <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CompositionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/CompositionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CompositionEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CompositionEventInit
+       (js_newCompositionEventInit, js_setData, js_getData, newCompositionEventInit, setData, getData, getDataUnsafe, getDataUnchecked, CompositionEventInit(..), gTypeCompositionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCompositionEventInit :: IO CompositionEventInit
+-- | <https://w3c.github.io/uievents/#dictdef-compositioneventinit CompositionEventInit specification>
+newCompositionEventInit :: (MonadDOM m) => m CompositionEventInit
+newCompositionEventInit = liftDOM ((js_newCompositionEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: CompositionEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-compositioneventinit-data CompositionEventInit.data specification>
+setData :: (MonadDOM m, ToJSString val) => CompositionEventInit -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: CompositionEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-compositioneventinit-data CompositionEventInit.data specification>
+getData :: (MonadDOM m, FromJSString result) => CompositionEventInit -> m (Maybe result)
+getData self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getData (self))))
+
+-- | <https://w3c.github.io/uievents/#dom-compositioneventinit-data CompositionEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CompositionEventInit -> m result
+getDataUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getData (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-compositioneventinit-data CompositionEventInit.data specification>
+getDataUnchecked :: (MonadDOM m, FromJSString result) => CompositionEventInit -> m result
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CompressionStream.hs b/src/GHCJS/DOM/JSFFI/Generated/CompressionStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CompressionStream.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from compression (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CompressionStream
+       (js_newCompressionStream, newCompressionStream, CompressionStream(..), gTypeCompressionStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"CompressionStream\"]($1); })"
+        js_newCompressionStream :: JSVal -> IO CompressionStream
+-- | <https://developer.mozilla.org/docs/Web/API/CompressionStream/CompressionStream MDN CompressionStream. documentation>
+newCompressionStream :: (MonadDOM m) => CompressionFormat -> m CompressionStream
+newCompressionStream format = liftDOM (((toJSVal format) >>= \a1' -> js_newCompressionStream a1'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ComputedEffectTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/ComputedEffectTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ComputedEffectTiming.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ComputedEffectTiming
+       (js_newComputedEffectTiming, js_setProgress, js_getProgress, js_setCurrentIteration, js_getCurrentIteration, js_setStartTime, js_getStartTime, js_setEndTime, js_getEndTime, js_setActiveDuration, js_getActiveDuration, js_setLocalTime, js_getLocalTime, newComputedEffectTiming, setProgress, getProgress, getProgressUnsafe, getProgressUnchecked, setCurrentIteration, getCurrentIteration, getCurrentIterationUnsafe, getCurrentIterationUnchecked, setStartTime, getStartTime, getStartTimeUnsafe, getStartTimeUnchecked, setEndTime, getEndTime, getEndTimeUnsafe, getEndTimeUnchecked, setActiveDuration, getActiveDuration, getActiveDurationUnsafe, getActiveDurationUnchecked, setLocalTime, getLocalTime, getLocalTimeUnsafe, getLocalTimeUnchecked, ComputedEffectTiming(..), gTypeComputedEffectTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newComputedEffectTiming :: IO ComputedEffectTiming
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-computedeffecttiming ComputedEffectTiming specification>
+newComputedEffectTiming :: (MonadDOM m) => m ComputedEffectTiming
+newComputedEffectTiming = liftDOM ((js_newComputedEffectTiming))
+
+foreign import javascript safe "(($1, $2) => { $1[\"progress\"] = $2; })"
+        js_setProgress :: ComputedEffectTiming -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-progress ComputedEffectTiming.progress specification>
+setProgress :: (MonadDOM m) => ComputedEffectTiming -> Maybe Double -> m ()
+setProgress self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setProgress (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"progress\"]; })"
+        js_getProgress :: ComputedEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-progress ComputedEffectTiming.progress specification>
+getProgress :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe Double)
+getProgress self = liftDOM (((js_getProgress (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-progress ComputedEffectTiming.progress specification>
+getProgressUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m Double
+getProgressUnsafe self = liftDOM ((((js_getProgress (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-progress ComputedEffectTiming.progress specification>
+getProgressUnchecked :: (MonadDOM m) => ComputedEffectTiming -> m Double
+getProgressUnchecked self = liftDOM ((pFromJSVal <$> (js_getProgress (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"currentIteration\"] = $2; })"
+        js_setCurrentIteration :: ComputedEffectTiming -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-currentiteration ComputedEffectTiming.currentIteration specification>
+setCurrentIteration :: (MonadDOM m) => ComputedEffectTiming -> Maybe Double -> m ()
+setCurrentIteration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCurrentIteration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentIteration\"]; })"
+        js_getCurrentIteration :: ComputedEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-currentiteration ComputedEffectTiming.currentIteration specification>
+getCurrentIteration :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe Double)
+getCurrentIteration self = liftDOM (((js_getCurrentIteration (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-currentiteration ComputedEffectTiming.currentIteration specification>
+getCurrentIterationUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m Double
+getCurrentIterationUnsafe self = liftDOM ((((js_getCurrentIteration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-currentiteration ComputedEffectTiming.currentIteration specification>
+getCurrentIterationUnchecked :: (MonadDOM m) => ComputedEffectTiming -> m Double
+getCurrentIterationUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentIteration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startTime\"] = $2; })"
+        js_setStartTime :: ComputedEffectTiming -> CSSNumberish -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-starttime ComputedEffectTiming.startTime specification>
+setStartTime :: (MonadDOM m, IsCSSNumberish val) => ComputedEffectTiming -> val -> m ()
+setStartTime self val = liftDOM (void ((js_setStartTime (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
+        js_getStartTime :: ComputedEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-starttime ComputedEffectTiming.startTime specification>
+getStartTime :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getStartTime self = liftDOM (((js_getStartTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-starttime ComputedEffectTiming.startTime specification>
+getStartTimeUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getStartTimeUnsafe self = liftDOM ((((js_getStartTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-starttime ComputedEffectTiming.startTime specification>
+getStartTimeUnchecked :: (MonadDOM m) => ComputedEffectTiming -> m CSSNumberish
+getStartTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStartTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endTime\"] = $2; })"
+        js_setEndTime :: ComputedEffectTiming -> CSSNumberish -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-endtime ComputedEffectTiming.endTime specification>
+setEndTime :: (MonadDOM m, IsCSSNumberish val) => ComputedEffectTiming -> val -> m ()
+setEndTime self val = liftDOM (void ((js_setEndTime (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endTime\"]; })"
+        js_getEndTime :: ComputedEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-endtime ComputedEffectTiming.endTime specification>
+getEndTime :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getEndTime self = liftDOM (((js_getEndTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-endtime ComputedEffectTiming.endTime specification>
+getEndTimeUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getEndTimeUnsafe self = liftDOM ((((js_getEndTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-endtime ComputedEffectTiming.endTime specification>
+getEndTimeUnchecked :: (MonadDOM m) => ComputedEffectTiming -> m CSSNumberish
+getEndTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getEndTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"activeDuration\"] = $2; })"
+        js_setActiveDuration :: ComputedEffectTiming -> CSSNumberish -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-activeduration ComputedEffectTiming.activeDuration specification>
+setActiveDuration :: (MonadDOM m, IsCSSNumberish val) => ComputedEffectTiming -> val -> m ()
+setActiveDuration self val = liftDOM (void ((js_setActiveDuration (self) (Types.toCSSNumberish val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"activeDuration\"]; })"
+        js_getActiveDuration :: ComputedEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-activeduration ComputedEffectTiming.activeDuration specification>
+getActiveDuration :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getActiveDuration self = liftDOM (((js_getActiveDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-activeduration ComputedEffectTiming.activeDuration specification>
+getActiveDurationUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getActiveDurationUnsafe self = liftDOM ((((js_getActiveDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-activeduration ComputedEffectTiming.activeDuration specification>
+getActiveDurationUnchecked :: (MonadDOM m) => ComputedEffectTiming -> m CSSNumberish
+getActiveDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getActiveDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"localTime\"] = $2; })"
+        js_setLocalTime :: ComputedEffectTiming -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-localtime ComputedEffectTiming.localTime specification>
+setLocalTime :: (MonadDOM m, IsCSSNumberish val) => ComputedEffectTiming -> Maybe val -> m ()
+setLocalTime self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLocalTime (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"localTime\"]; })"
+        js_getLocalTime :: ComputedEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-localtime ComputedEffectTiming.localTime specification>
+getLocalTime :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getLocalTime self = liftDOM (((js_getLocalTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-localtime ComputedEffectTiming.localTime specification>
+getLocalTimeUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getLocalTimeUnsafe self = liftDOM ((((js_getLocalTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-localtime ComputedEffectTiming.localTime specification>
+getLocalTimeUnchecked :: (MonadDOM m) => ComputedEffectTiming -> m CSSNumberish
+getLocalTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getLocalTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Console.hs b/src/GHCJS/DOM/JSFFI/Generated/Console.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Console.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from console (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Console
+       (js_assert, js_clear, js_count, js_countReset, js_debug, js_dir, js_dirxml, js_error, js_group, js_groupCollapsed, js_groupEnd, js_info, js_log, js_table, js_time, js_timeEnd, js_timeLog, js_trace, js_warn, assert, clear, count, countReset, debug, dir, dirxml, error, group, groupCollapsed, groupEnd, info, log, table, time, timeEnd, timeLog, trace, warn)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"console\"][\"assert\"]($1, ...$2); })"
+        js_assert :: JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/assert_static MDN console.assert documentation>
+assert :: (MonadDOM m) => Maybe Bool -> [JSVal] -> m ()
+assert condition data' = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal condition) >>= \a1' -> (toJSVal data') >>= \a2' -> js_assert a1' a2')))
+
+foreign import javascript safe "(() => { return globalThis[\"console\"][\"clear\"](); })"
+        js_clear :: IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/clear_static MDN console.clear documentation>
+clear :: (MonadDOM m) => m ()
+clear = liftDOM (void ((js_clear)))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"count\"]($1); })"
+        js_count :: (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/count_static MDN console.count documentation>
+count :: (MonadDOM m, ToJSString label) => Maybe label -> m ()
+count label = liftDOM (void ((js_count (toOptionalJSString label))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"countReset\"]($1); })"
+        js_countReset :: (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/countReset_static MDN console.countReset documentation>
+countReset :: (MonadDOM m, ToJSString label) => Maybe label -> m ()
+countReset label = liftDOM (void ((js_countReset (toOptionalJSString label))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"debug\"](...$1); })"
+        js_debug :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/debug_static MDN console.debug documentation>
+debug :: (MonadDOM m) => [JSVal] -> m ()
+debug data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_debug a1')))
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"console\"][\"dir\"]($1, $2); })"
+        js_dir :: JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/dir_static MDN console.dir documentation>
+dir :: (MonadDOM m) => JSVal -> Maybe GObject -> m ()
+dir item options = liftDOM (void (((toJSVal options) >>= \a2' -> js_dir (item) a2')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"dirxml\"](...$1); })"
+        js_dirxml :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/dirxml_static MDN console.dirxml documentation>
+dirxml :: (MonadDOM m) => [JSVal] -> m ()
+dirxml data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_dirxml a1')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"error\"](...$1); })"
+        js_error :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/error_static MDN console.error documentation>
+error :: (MonadDOM m) => [JSVal] -> m ()
+error data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_error a1')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"group\"](...$1); })"
+        js_group :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/group_static MDN console.group documentation>
+group :: (MonadDOM m) => [JSVal] -> m ()
+group data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_group a1')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"groupCollapsed\"](...$1); })"
+        js_groupCollapsed :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/groupCollapsed_static MDN console.groupCollapsed documentation>
+groupCollapsed :: (MonadDOM m) => [JSVal] -> m ()
+groupCollapsed data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_groupCollapsed a1')))
+
+foreign import javascript safe "(() => { return globalThis[\"console\"][\"groupEnd\"](); })"
+        js_groupEnd :: IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/groupEnd_static MDN console.groupEnd documentation>
+groupEnd :: (MonadDOM m) => m ()
+groupEnd = liftDOM (void ((js_groupEnd)))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"info\"](...$1); })"
+        js_info :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/info_static MDN console.info documentation>
+info :: (MonadDOM m) => [JSVal] -> m ()
+info data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_info a1')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"log\"](...$1); })"
+        js_log :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/log_static MDN console.log documentation>
+log :: (MonadDOM m) => [JSVal] -> m ()
+log data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_log a1')))
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"console\"][\"table\"]($1, $2); })"
+        js_table :: JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/table_static MDN console.table documentation>
+table :: (MonadDOM m, ToJSString properties) => JSVal -> Maybe [properties] -> m ()
+table tabularData properties = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal properties) >>= \a2' -> js_table (tabularData) a2')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"time\"]($1); })"
+        js_time :: (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/time_static MDN console.time documentation>
+time :: (MonadDOM m, ToJSString label) => Maybe label -> m ()
+time label = liftDOM (void ((js_time (toOptionalJSString label))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"timeEnd\"]($1); })"
+        js_timeEnd :: (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/timeEnd_static MDN console.timeEnd documentation>
+timeEnd :: (MonadDOM m, ToJSString label) => Maybe label -> m ()
+timeEnd label = liftDOM (void ((js_timeEnd (toOptionalJSString label))))
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"console\"][\"timeLog\"]($1, ...$2); })"
+        js_timeLog :: (Optional JSString) -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/timeLog_static MDN console.timeLog documentation>
+timeLog :: (MonadDOM m, ToJSString label) => Maybe label -> [JSVal] -> m ()
+timeLog label data' = liftDOM (void (((toJSVal data') >>= \a2' -> js_timeLog (toOptionalJSString label) a2')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"trace\"](...$1); })"
+        js_trace :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/trace_static MDN console.trace documentation>
+trace :: (MonadDOM m) => [JSVal] -> m ()
+trace data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_trace a1')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"console\"][\"warn\"](...$1); })"
+        js_warn :: JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/console/warn_static MDN console.warn documentation>
+warn :: (MonadDOM m) => [JSVal] -> m ()
+warn data' = liftDOM (void (((toJSVal data') >>= \a1' -> js_warn a1')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstantSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstantSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstantSourceNode.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstantSourceNode
+       (js_newConstantSourceNode, js_getOffset, newConstantSourceNode, getOffset, ConstantSourceNode(..), gTypeConstantSourceNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ConstantSourceNode\"]($1, $2); })"
+        js_newConstantSourceNode :: BaseAudioContext -> JSVal -> IO ConstantSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/ConstantSourceNode/ConstantSourceNode MDN ConstantSourceNode. documentation>
+newConstantSourceNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe ConstantSourceOptions -> m ConstantSourceNode
+newConstantSourceNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newConstantSourceNode (Types.toBaseAudioContext context) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: ConstantSourceNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/ConstantSourceNode/offset MDN ConstantSourceNode.offset documentation>
+getOffset :: (MonadDOM m) => ConstantSourceNode -> m AudioParam
+getOffset self = liftDOM ((js_getOffset (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstantSourceOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstantSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstantSourceOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstantSourceOptions
+       (js_newConstantSourceOptions, js_setOffset, js_getOffset, newConstantSourceOptions, setOffset, getOffset, getOffsetUnsafe, getOffsetUnchecked, ConstantSourceOptions(..), gTypeConstantSourceOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConstantSourceOptions :: IO ConstantSourceOptions
+-- | <https://webaudio.github.io/web-audio-api/#ConstantSourceOptions ConstantSourceOptions specification>
+newConstantSourceOptions :: (MonadDOM m) => m ConstantSourceOptions
+newConstantSourceOptions = liftDOM ((js_newConstantSourceOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offset\"] = $2; })"
+        js_setOffset :: ConstantSourceOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-constantsourceoptions-offset ConstantSourceOptions.offset specification>
+setOffset :: (MonadDOM m) => ConstantSourceOptions -> Float -> m ()
+setOffset self val = liftDOM (void ((js_setOffset (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: ConstantSourceOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-constantsourceoptions-offset ConstantSourceOptions.offset specification>
+getOffset :: (MonadDOM m) => ConstantSourceOptions -> m (Maybe Float)
+getOffset self = liftDOM (((js_getOffset (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-constantsourceoptions-offset ConstantSourceOptions.offset specification>
+getOffsetUnsafe :: (MonadDOM m, HasCallStack) => ConstantSourceOptions -> m Float
+getOffsetUnsafe self = liftDOM ((((js_getOffset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-constantsourceoptions-offset ConstantSourceOptions.offset specification>
+getOffsetUnchecked :: (MonadDOM m) => ConstantSourceOptions -> m Float
+getOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getOffset (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstrainBooleanOrDOMStringParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstrainBooleanOrDOMStringParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstrainBooleanOrDOMStringParameters.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstrainBooleanOrDOMStringParameters
+       (js_newConstrainBooleanOrDOMStringParameters, js_setExact, js_getExact, js_setIdeal, js_getIdeal, newConstrainBooleanOrDOMStringParameters, setExact, getExact, getExactUnsafe, getExactUnchecked, setIdeal, getIdeal, getIdealUnsafe, getIdealUnchecked, ConstrainBooleanOrDOMStringParameters(..), gTypeConstrainBooleanOrDOMStringParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConstrainBooleanOrDOMStringParameters :: IO ConstrainBooleanOrDOMStringParameters
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters ConstrainBooleanOrDOMStringParameters specification>
+newConstrainBooleanOrDOMStringParameters :: (MonadDOM m) => m ConstrainBooleanOrDOMStringParameters
+newConstrainBooleanOrDOMStringParameters = liftDOM ((js_newConstrainBooleanOrDOMStringParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exact\"] = $2; })"
+        js_setExact :: ConstrainBooleanOrDOMStringParameters -> BoolOrString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-exact ConstrainBooleanOrDOMStringParameters.exact specification>
+setExact :: (MonadDOM m, IsBoolOrString val) => ConstrainBooleanOrDOMStringParameters -> val -> m ()
+setExact self val = liftDOM (void ((js_setExact (self) (Types.toBoolOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exact\"]; })"
+        js_getExact :: ConstrainBooleanOrDOMStringParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-exact ConstrainBooleanOrDOMStringParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainBooleanOrDOMStringParameters -> m (Maybe BoolOrString)
+getExact self = liftDOM (((js_getExact (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-exact ConstrainBooleanOrDOMStringParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanOrDOMStringParameters -> m BoolOrString
+getExactUnsafe self = liftDOM ((((js_getExact (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-exact ConstrainBooleanOrDOMStringParameters.exact specification>
+getExactUnchecked :: (MonadDOM m) => ConstrainBooleanOrDOMStringParameters -> m BoolOrString
+getExactUnchecked self = liftDOM ((pFromJSVal <$> (js_getExact (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ideal\"] = $2; })"
+        js_setIdeal :: ConstrainBooleanOrDOMStringParameters -> BoolOrString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-ideal ConstrainBooleanOrDOMStringParameters.ideal specification>
+setIdeal :: (MonadDOM m, IsBoolOrString val) => ConstrainBooleanOrDOMStringParameters -> val -> m ()
+setIdeal self val = liftDOM (void ((js_setIdeal (self) (Types.toBoolOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ideal\"]; })"
+        js_getIdeal :: ConstrainBooleanOrDOMStringParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-ideal ConstrainBooleanOrDOMStringParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainBooleanOrDOMStringParameters -> m (Maybe BoolOrString)
+getIdeal self = liftDOM (((js_getIdeal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-ideal ConstrainBooleanOrDOMStringParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanOrDOMStringParameters -> m BoolOrString
+getIdealUnsafe self = liftDOM ((((js_getIdeal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-ideal ConstrainBooleanOrDOMStringParameters.ideal specification>
+getIdealUnchecked :: (MonadDOM m) => ConstrainBooleanOrDOMStringParameters -> m BoolOrString
+getIdealUnchecked self = liftDOM ((pFromJSVal <$> (js_getIdeal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstrainBooleanParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstrainBooleanParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstrainBooleanParameters.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstrainBooleanParameters
+       (js_newConstrainBooleanParameters, js_setExact, js_getExact, js_setIdeal, js_getIdeal, newConstrainBooleanParameters, setExact, getExact, getExactUnsafe, getExactUnchecked, setIdeal, getIdeal, getIdealUnsafe, getIdealUnchecked, ConstrainBooleanParameters(..), gTypeConstrainBooleanParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConstrainBooleanParameters :: IO ConstrainBooleanParameters
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters ConstrainBooleanParameters specification>
+newConstrainBooleanParameters :: (MonadDOM m) => m ConstrainBooleanParameters
+newConstrainBooleanParameters = liftDOM ((js_newConstrainBooleanParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exact\"] = $2; })"
+        js_setExact :: ConstrainBooleanParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-exact ConstrainBooleanParameters.exact specification>
+setExact :: (MonadDOM m) => ConstrainBooleanParameters -> Bool -> m ()
+setExact self val = liftDOM (void ((js_setExact (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exact\"]; })"
+        js_getExact :: ConstrainBooleanParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-exact ConstrainBooleanParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainBooleanParameters -> m (Maybe Bool)
+getExact self = liftDOM (((js_getExact (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-exact ConstrainBooleanParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanParameters -> m Bool
+getExactUnsafe self = liftDOM ((((js_getExact (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-exact ConstrainBooleanParameters.exact specification>
+getExactUnchecked :: (MonadDOM m) => ConstrainBooleanParameters -> m Bool
+getExactUnchecked self = liftDOM ((pFromJSVal <$> (js_getExact (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ideal\"] = $2; })"
+        js_setIdeal :: ConstrainBooleanParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-ideal ConstrainBooleanParameters.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainBooleanParameters -> Bool -> m ()
+setIdeal self val = liftDOM (void ((js_setIdeal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ideal\"]; })"
+        js_getIdeal :: ConstrainBooleanParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-ideal ConstrainBooleanParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainBooleanParameters -> m (Maybe Bool)
+getIdeal self = liftDOM (((js_getIdeal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-ideal ConstrainBooleanParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanParameters -> m Bool
+getIdealUnsafe self = liftDOM ((((js_getIdeal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-ideal ConstrainBooleanParameters.ideal specification>
+getIdealUnchecked :: (MonadDOM m) => ConstrainBooleanParameters -> m Bool
+getIdealUnchecked self = liftDOM ((pFromJSVal <$> (js_getIdeal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstrainDOMStringParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstrainDOMStringParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstrainDOMStringParameters.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstrainDOMStringParameters
+       (js_newConstrainDOMStringParameters, js_setExact, js_getExact, js_setIdeal, js_getIdeal, newConstrainDOMStringParameters, setExact, getExact, getExactUnsafe, getExactUnchecked, setIdeal, getIdeal, getIdealUnsafe, getIdealUnchecked, ConstrainDOMStringParameters(..), gTypeConstrainDOMStringParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConstrainDOMStringParameters :: IO ConstrainDOMStringParameters
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters ConstrainDOMStringParameters specification>
+newConstrainDOMStringParameters :: (MonadDOM m) => m ConstrainDOMStringParameters
+newConstrainDOMStringParameters = liftDOM ((js_newConstrainDOMStringParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exact\"] = $2; })"
+        js_setExact :: ConstrainDOMStringParameters -> StringOrSequenceString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-exact ConstrainDOMStringParameters.exact specification>
+setExact :: (MonadDOM m, IsStringOrSequenceString val) => ConstrainDOMStringParameters -> val -> m ()
+setExact self val = liftDOM (void ((js_setExact (self) (Types.toStringOrSequenceString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exact\"]; })"
+        js_getExact :: ConstrainDOMStringParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-exact ConstrainDOMStringParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainDOMStringParameters -> m (Maybe StringOrSequenceString)
+getExact self = liftDOM (((js_getExact (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-exact ConstrainDOMStringParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDOMStringParameters -> m StringOrSequenceString
+getExactUnsafe self = liftDOM ((((js_getExact (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-exact ConstrainDOMStringParameters.exact specification>
+getExactUnchecked :: (MonadDOM m) => ConstrainDOMStringParameters -> m StringOrSequenceString
+getExactUnchecked self = liftDOM ((pFromJSVal <$> (js_getExact (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ideal\"] = $2; })"
+        js_setIdeal :: ConstrainDOMStringParameters -> StringOrSequenceString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-ideal ConstrainDOMStringParameters.ideal specification>
+setIdeal :: (MonadDOM m, IsStringOrSequenceString val) => ConstrainDOMStringParameters -> val -> m ()
+setIdeal self val = liftDOM (void ((js_setIdeal (self) (Types.toStringOrSequenceString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ideal\"]; })"
+        js_getIdeal :: ConstrainDOMStringParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-ideal ConstrainDOMStringParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainDOMStringParameters -> m (Maybe StringOrSequenceString)
+getIdeal self = liftDOM (((js_getIdeal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-ideal ConstrainDOMStringParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDOMStringParameters -> m StringOrSequenceString
+getIdealUnsafe self = liftDOM ((((js_getIdeal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-ideal ConstrainDOMStringParameters.ideal specification>
+getIdealUnchecked :: (MonadDOM m) => ConstrainDOMStringParameters -> m StringOrSequenceString
+getIdealUnchecked self = liftDOM ((pFromJSVal <$> (js_getIdeal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstrainDoubleRange.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstrainDoubleRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstrainDoubleRange.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstrainDoubleRange
+       (js_newConstrainDoubleRange, js_setExact, js_getExact, js_setIdeal, js_getIdeal, newConstrainDoubleRange, setExact, getExact, getExactUnsafe, getExactUnchecked, setIdeal, getIdeal, getIdealUnsafe, getIdealUnchecked, ConstrainDoubleRange(..), gTypeConstrainDoubleRange)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConstrainDoubleRange :: IO ConstrainDoubleRange
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange ConstrainDoubleRange specification>
+newConstrainDoubleRange :: (MonadDOM m) => m ConstrainDoubleRange
+newConstrainDoubleRange = liftDOM ((js_newConstrainDoubleRange))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exact\"] = $2; })"
+        js_setExact :: ConstrainDoubleRange -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-exact ConstrainDoubleRange.exact specification>
+setExact :: (MonadDOM m) => ConstrainDoubleRange -> Double -> m ()
+setExact self val = liftDOM (void ((js_setExact (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exact\"]; })"
+        js_getExact :: ConstrainDoubleRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-exact ConstrainDoubleRange.exact specification>
+getExact :: (MonadDOM m) => ConstrainDoubleRange -> m (Maybe Double)
+getExact self = liftDOM (((js_getExact (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-exact ConstrainDoubleRange.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDoubleRange -> m Double
+getExactUnsafe self = liftDOM ((((js_getExact (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-exact ConstrainDoubleRange.exact specification>
+getExactUnchecked :: (MonadDOM m) => ConstrainDoubleRange -> m Double
+getExactUnchecked self = liftDOM ((pFromJSVal <$> (js_getExact (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ideal\"] = $2; })"
+        js_setIdeal :: ConstrainDoubleRange -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-ideal ConstrainDoubleRange.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainDoubleRange -> Double -> m ()
+setIdeal self val = liftDOM (void ((js_setIdeal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ideal\"]; })"
+        js_getIdeal :: ConstrainDoubleRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-ideal ConstrainDoubleRange.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainDoubleRange -> m (Maybe Double)
+getIdeal self = liftDOM (((js_getIdeal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-ideal ConstrainDoubleRange.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDoubleRange -> m Double
+getIdealUnsafe self = liftDOM ((((js_getIdeal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-ideal ConstrainDoubleRange.ideal specification>
+getIdealUnchecked :: (MonadDOM m) => ConstrainDoubleRange -> m Double
+getIdealUnchecked self = liftDOM ((pFromJSVal <$> (js_getIdeal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstrainPoint2DParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstrainPoint2DParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstrainPoint2DParameters.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstrainPoint2DParameters
+       (js_newConstrainPoint2DParameters, js_setExact, js_getExact, js_setIdeal, js_getIdeal, newConstrainPoint2DParameters, setExact, getExact, getExactUnsafe, getExactUnchecked, setIdeal, getIdeal, getIdealUnsafe, getIdealUnchecked, ConstrainPoint2DParameters(..), gTypeConstrainPoint2DParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConstrainPoint2DParameters :: IO ConstrainPoint2DParameters
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-constrainpoint2dparameters ConstrainPoint2DParameters specification>
+newConstrainPoint2DParameters :: (MonadDOM m) => m ConstrainPoint2DParameters
+newConstrainPoint2DParameters = liftDOM ((js_newConstrainPoint2DParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exact\"] = $2; })"
+        js_setExact :: ConstrainPoint2DParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-exact ConstrainPoint2DParameters.exact specification>
+setExact :: (MonadDOM m) => ConstrainPoint2DParameters -> [Point2D] -> m ()
+setExact self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExact (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exact\"]; })"
+        js_getExact :: ConstrainPoint2DParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-exact ConstrainPoint2DParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainPoint2DParameters -> m (Maybe [Point2D])
+getExact self = liftDOM (((js_getExact (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-exact ConstrainPoint2DParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainPoint2DParameters -> m [Point2D]
+getExactUnsafe self = liftDOM ((((js_getExact (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-exact ConstrainPoint2DParameters.exact specification>
+getExactUnchecked :: (MonadDOM m) => ConstrainPoint2DParameters -> m [Point2D]
+getExactUnchecked self = liftDOM (((js_getExact (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ideal\"] = $2; })"
+        js_setIdeal :: ConstrainPoint2DParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-ideal ConstrainPoint2DParameters.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainPoint2DParameters -> [Point2D] -> m ()
+setIdeal self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setIdeal (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ideal\"]; })"
+        js_getIdeal :: ConstrainPoint2DParameters -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-ideal ConstrainPoint2DParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainPoint2DParameters -> m (Maybe [Point2D])
+getIdeal self = liftDOM (((js_getIdeal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-ideal ConstrainPoint2DParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainPoint2DParameters -> m [Point2D]
+getIdealUnsafe self = liftDOM ((((js_getIdeal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-ideal ConstrainPoint2DParameters.ideal specification>
+getIdealUnchecked :: (MonadDOM m) => ConstrainPoint2DParameters -> m [Point2D]
+getIdealUnchecked self = liftDOM (((js_getIdeal (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConstrainULongRange.hs b/src/GHCJS/DOM/JSFFI/Generated/ConstrainULongRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConstrainULongRange.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConstrainULongRange
+       (js_newConstrainULongRange, js_setExact, js_getExact, js_setIdeal, js_getIdeal, newConstrainULongRange, setExact, getExact, getExactUnsafe, getExactUnchecked, setIdeal, getIdeal, getIdealUnsafe, getIdealUnchecked, ConstrainULongRange(..), gTypeConstrainULongRange)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConstrainULongRange :: IO ConstrainULongRange
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange ConstrainULongRange specification>
+newConstrainULongRange :: (MonadDOM m) => m ConstrainULongRange
+newConstrainULongRange = liftDOM ((js_newConstrainULongRange))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exact\"] = $2; })"
+        js_setExact :: ConstrainULongRange -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-exact ConstrainULongRange.exact specification>
+setExact :: (MonadDOM m) => ConstrainULongRange -> Word -> m ()
+setExact self val = liftDOM (void ((js_setExact (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exact\"]; })"
+        js_getExact :: ConstrainULongRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-exact ConstrainULongRange.exact specification>
+getExact :: (MonadDOM m) => ConstrainULongRange -> m (Maybe Word)
+getExact self = liftDOM (((js_getExact (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-exact ConstrainULongRange.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainULongRange -> m Word
+getExactUnsafe self = liftDOM ((((js_getExact (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-exact ConstrainULongRange.exact specification>
+getExactUnchecked :: (MonadDOM m) => ConstrainULongRange -> m Word
+getExactUnchecked self = liftDOM ((pFromJSVal <$> (js_getExact (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ideal\"] = $2; })"
+        js_setIdeal :: ConstrainULongRange -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-ideal ConstrainULongRange.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainULongRange -> Word -> m ()
+setIdeal self val = liftDOM (void ((js_setIdeal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ideal\"]; })"
+        js_getIdeal :: ConstrainULongRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-ideal ConstrainULongRange.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainULongRange -> m (Maybe Word)
+getIdeal self = liftDOM (((js_getIdeal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-ideal ConstrainULongRange.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainULongRange -> m Word
+getIdealUnsafe self = liftDOM ((((js_getIdeal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-ideal ConstrainULongRange.ideal specification>
+getIdealUnchecked :: (MonadDOM m) => ConstrainULongRange -> m Word
+getIdealUnchecked self = liftDOM ((pFromJSVal <$> (js_getIdeal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ContactAddress.hs b/src/GHCJS/DOM/JSFFI/Generated/ContactAddress.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ContactAddress.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from contact-picker (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ContactAddress
+       (ContactAddress(..), gTypeContactAddress)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ContentVisibilityAutoStateChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ContentVisibilityAutoStateChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ContentVisibilityAutoStateChangeEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-contain-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ContentVisibilityAutoStateChangeEvent
+       (js_newContentVisibilityAutoStateChangeEvent, js_getSkipped, newContentVisibilityAutoStateChangeEvent, getSkipped, ContentVisibilityAutoStateChangeEvent(..), gTypeContentVisibilityAutoStateChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ContentVisibilityAutoStateChangeEvent\"]($1, $2); })"
+        js_newContentVisibilityAutoStateChangeEvent :: JSString -> JSVal -> IO ContentVisibilityAutoStateChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ContentVisibilityAutoStateChangeEvent/ContentVisibilityAutoStateChangeEvent MDN ContentVisibilityAutoStateChangeEvent. documentation>
+newContentVisibilityAutoStateChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe ContentVisibilityAutoStateChangeEventInit -> m ContentVisibilityAutoStateChangeEvent
+newContentVisibilityAutoStateChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newContentVisibilityAutoStateChangeEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"skipped\"]; })"
+        js_getSkipped :: ContentVisibilityAutoStateChangeEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ContentVisibilityAutoStateChangeEvent/skipped MDN ContentVisibilityAutoStateChangeEvent.skipped documentation>
+getSkipped :: (MonadDOM m) => ContentVisibilityAutoStateChangeEvent -> m Bool
+getSkipped self = liftDOM ((js_getSkipped (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ContentVisibilityAutoStateChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ContentVisibilityAutoStateChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ContentVisibilityAutoStateChangeEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-contain-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ContentVisibilityAutoStateChangeEventInit
+       (js_newContentVisibilityAutoStateChangeEventInit, js_setSkipped, js_getSkipped, newContentVisibilityAutoStateChangeEventInit, setSkipped, getSkipped, getSkippedUnsafe, getSkippedUnchecked, ContentVisibilityAutoStateChangeEventInit(..), gTypeContentVisibilityAutoStateChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newContentVisibilityAutoStateChangeEventInit :: IO ContentVisibilityAutoStateChangeEventInit
+-- | <https://drafts.csswg.org/css-contain-2/#dictdef-contentvisibilityautostatechangeeventinit ContentVisibilityAutoStateChangeEventInit specification>
+newContentVisibilityAutoStateChangeEventInit :: (MonadDOM m) => m ContentVisibilityAutoStateChangeEventInit
+newContentVisibilityAutoStateChangeEventInit = liftDOM ((js_newContentVisibilityAutoStateChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"skipped\"] = $2; })"
+        js_setSkipped :: ContentVisibilityAutoStateChangeEventInit -> Bool -> IO ()
+-- | <https://drafts.csswg.org/css-contain-2/#dom-contentvisibilityautostatechangeeventinit-skipped ContentVisibilityAutoStateChangeEventInit.skipped specification>
+setSkipped :: (MonadDOM m) => ContentVisibilityAutoStateChangeEventInit -> Bool -> m ()
+setSkipped self val = liftDOM (void ((js_setSkipped (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"skipped\"]; })"
+        js_getSkipped :: ContentVisibilityAutoStateChangeEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-contain-2/#dom-contentvisibilityautostatechangeeventinit-skipped ContentVisibilityAutoStateChangeEventInit.skipped specification>
+getSkipped :: (MonadDOM m) => ContentVisibilityAutoStateChangeEventInit -> m (Maybe Bool)
+getSkipped self = liftDOM (((js_getSkipped (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-contain-2/#dom-contentvisibilityautostatechangeeventinit-skipped ContentVisibilityAutoStateChangeEventInit.skipped specification>
+getSkippedUnsafe :: (MonadDOM m, HasCallStack) => ContentVisibilityAutoStateChangeEventInit -> m Bool
+getSkippedUnsafe self = liftDOM ((((js_getSkipped (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-contain-2/#dom-contentvisibilityautostatechangeeventinit-skipped ContentVisibilityAutoStateChangeEventInit.skipped specification>
+getSkippedUnchecked :: (MonadDOM m) => ContentVisibilityAutoStateChangeEventInit -> m Bool
+getSkippedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSkipped (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
@@ -1,71 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ConvolverNode
-       (js_setBuffer, setBuffer, js_getBuffer, getBuffer, getBufferUnsafe,
-        getBufferUnchecked, js_setNormalize, setNormalize, js_getNormalize,
-        getNormalize, ConvolverNode(..), gTypeConvolverNode)
+       (js_newConvolverNode, js_setBuffer, js_getBuffer, js_setNormalize, js_getNormalize, newConvolverNode, setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked, setNormalize, getNormalize, ConvolverNode(..), gTypeConvolverNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })" js_setBuffer
-        :: ConvolverNode -> Optional AudioBuffer -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
-setBuffer ::
-          (MonadIO m) => ConvolverNode -> Maybe AudioBuffer -> m ()
-setBuffer self val
-  = liftIO (js_setBuffer self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })" js_getBuffer ::
-        ConvolverNode -> IO (Nullable AudioBuffer)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ConvolverNode\"]($1, $2); })"
+        js_newConvolverNode :: BaseAudioContext -> JSVal -> IO ConvolverNode
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/ConvolverNode MDN ConvolverNode. documentation>
+newConvolverNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe ConvolverOptions -> m ConvolverNode
+newConvolverNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newConvolverNode (Types.toBaseAudioContext context) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
-getBuffer :: (MonadIO m) => ConvolverNode -> m (Maybe AudioBuffer)
-getBuffer self = liftIO (nullableToMaybe <$> (js_getBuffer self))
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer :: ConvolverNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer MDN ConvolverNode.buffer documentation>
+setBuffer :: (MonadDOM m) => ConvolverNode -> Maybe AudioBuffer -> m ()
+setBuffer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBuffer (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
-getBufferUnsafe ::
-                (MonadIO m, HasCallStack) => ConvolverNode -> m AudioBuffer
-getBufferUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getBuffer self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })"
+        js_getBuffer :: ConvolverNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer MDN ConvolverNode.buffer documentation>
+getBuffer :: (MonadDOM m) => ConvolverNode -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM (((js_getBuffer (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
-getBufferUnchecked :: (MonadIO m) => ConvolverNode -> m AudioBuffer
-getBufferUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getBuffer self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"normalize\"] = $2; })"
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer MDN ConvolverNode.buffer documentation>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => ConvolverNode -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((js_getBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer MDN ConvolverNode.buffer documentation>
+getBufferUnchecked :: (MonadDOM m) => ConvolverNode -> m AudioBuffer
+getBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getBuffer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"normalize\"] = $2; })"
         js_setNormalize :: ConvolverNode -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/normalize MDN ConvolverNode.normalize documentation>
+setNormalize :: (MonadDOM m) => ConvolverNode -> Bool -> m ()
+setNormalize self val = liftDOM (void ((js_setNormalize (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
-setNormalize :: (MonadIO m) => ConvolverNode -> Bool -> m ()
-setNormalize self val = liftIO (js_setNormalize self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"normalize\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"normalize\"]; })"
         js_getNormalize :: ConvolverNode -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
-getNormalize :: (MonadIO m) => ConvolverNode -> m Bool
-getNormalize self = liftIO (js_getNormalize self)
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/normalize MDN ConvolverNode.normalize documentation>
+getNormalize :: (MonadDOM m) => ConvolverNode -> m Bool
+getNormalize self = liftDOM ((js_getNormalize (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConvolverOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ConvolverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConvolverOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ConvolverOptions
+       (js_newConvolverOptions, js_setBuffer, js_getBuffer, js_setDisableNormalization, js_getDisableNormalization, newConvolverOptions, setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked, setDisableNormalization, getDisableNormalization, getDisableNormalizationUnsafe, getDisableNormalizationUnchecked, ConvolverOptions(..), gTypeConvolverOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newConvolverOptions :: IO ConvolverOptions
+-- | <https://webaudio.github.io/web-audio-api/#ConvolverOptions ConvolverOptions specification>
+newConvolverOptions :: (MonadDOM m) => m ConvolverOptions
+newConvolverOptions = liftDOM ((js_newConvolverOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer :: ConvolverOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-buffer ConvolverOptions.buffer specification>
+setBuffer :: (MonadDOM m) => ConvolverOptions -> Maybe AudioBuffer -> m ()
+setBuffer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBuffer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })"
+        js_getBuffer :: ConvolverOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-buffer ConvolverOptions.buffer specification>
+getBuffer :: (MonadDOM m) => ConvolverOptions -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM (((js_getBuffer (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-buffer ConvolverOptions.buffer specification>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => ConvolverOptions -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((js_getBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-buffer ConvolverOptions.buffer specification>
+getBufferUnchecked :: (MonadDOM m) => ConvolverOptions -> m AudioBuffer
+getBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getBuffer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disableNormalization\"] = $2; })"
+        js_setDisableNormalization :: ConvolverOptions -> Bool -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-disablenormalization ConvolverOptions.disableNormalization specification>
+setDisableNormalization :: (MonadDOM m) => ConvolverOptions -> Bool -> m ()
+setDisableNormalization self val = liftDOM (void ((js_setDisableNormalization (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disableNormalization\"]; })"
+        js_getDisableNormalization :: ConvolverOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-disablenormalization ConvolverOptions.disableNormalization specification>
+getDisableNormalization :: (MonadDOM m) => ConvolverOptions -> m (Maybe Bool)
+getDisableNormalization self = liftDOM (((js_getDisableNormalization (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-disablenormalization ConvolverOptions.disableNormalization specification>
+getDisableNormalizationUnsafe :: (MonadDOM m, HasCallStack) => ConvolverOptions -> m Bool
+getDisableNormalizationUnsafe self = liftDOM ((((js_getDisableNormalization (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-disablenormalization ConvolverOptions.disableNormalization specification>
+getDisableNormalizationUnchecked :: (MonadDOM m) => ConvolverOptions -> m Bool
+getDisableNormalizationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisableNormalization (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieChangeEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieChangeEvent
+       (js_newCookieChangeEvent, js_getChanged, js_getDeleted, newCookieChangeEvent, getChanged, getDeleted, CookieChangeEvent(..), gTypeCookieChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CookieChangeEvent\"]($1, $2); })"
+        js_newCookieChangeEvent :: JSString -> JSVal -> IO CookieChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/CookieChangeEvent/CookieChangeEvent MDN CookieChangeEvent. documentation>
+newCookieChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe CookieChangeEventInit -> m CookieChangeEvent
+newCookieChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newCookieChangeEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"changed\"]; })"
+        js_getChanged :: CookieChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CookieChangeEvent/changed MDN CookieChangeEvent.changed documentation>
+getChanged :: (MonadDOM m) => CookieChangeEvent -> m [CookieListItem]
+getChanged self = liftDOM (((js_getChanged (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deleted\"]; })"
+        js_getDeleted :: CookieChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CookieChangeEvent/deleted MDN CookieChangeEvent.deleted documentation>
+getDeleted :: (MonadDOM m) => CookieChangeEvent -> m [CookieListItem]
+getDeleted self = liftDOM (((js_getDeleted (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieChangeEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieChangeEventInit
+       (js_newCookieChangeEventInit, js_setChanged, js_getChanged, js_setDeleted, js_getDeleted, newCookieChangeEventInit, setChanged, getChanged, getChangedUnsafe, getChangedUnchecked, setDeleted, getDeleted, getDeletedUnsafe, getDeletedUnchecked, CookieChangeEventInit(..), gTypeCookieChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCookieChangeEventInit :: IO CookieChangeEventInit
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookiechangeeventinit CookieChangeEventInit specification>
+newCookieChangeEventInit :: (MonadDOM m) => m CookieChangeEventInit
+newCookieChangeEventInit = liftDOM ((js_newCookieChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"changed\"] = $2; })"
+        js_setChanged :: CookieChangeEventInit -> JSVal -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-changed CookieChangeEventInit.changed specification>
+setChanged :: (MonadDOM m) => CookieChangeEventInit -> [CookieListItem] -> m ()
+setChanged self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChanged (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"changed\"]; })"
+        js_getChanged :: CookieChangeEventInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-changed CookieChangeEventInit.changed specification>
+getChanged :: (MonadDOM m) => CookieChangeEventInit -> m (Maybe [CookieListItem])
+getChanged self = liftDOM (((js_getChanged (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-changed CookieChangeEventInit.changed specification>
+getChangedUnsafe :: (MonadDOM m, HasCallStack) => CookieChangeEventInit -> m [CookieListItem]
+getChangedUnsafe self = liftDOM ((((js_getChanged (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-changed CookieChangeEventInit.changed specification>
+getChangedUnchecked :: (MonadDOM m) => CookieChangeEventInit -> m [CookieListItem]
+getChangedUnchecked self = liftDOM (((js_getChanged (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deleted\"] = $2; })"
+        js_setDeleted :: CookieChangeEventInit -> JSVal -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-deleted CookieChangeEventInit.deleted specification>
+setDeleted :: (MonadDOM m) => CookieChangeEventInit -> [CookieListItem] -> m ()
+setDeleted self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDeleted (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deleted\"]; })"
+        js_getDeleted :: CookieChangeEventInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-deleted CookieChangeEventInit.deleted specification>
+getDeleted :: (MonadDOM m) => CookieChangeEventInit -> m (Maybe [CookieListItem])
+getDeleted self = liftDOM (((js_getDeleted (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-deleted CookieChangeEventInit.deleted specification>
+getDeletedUnsafe :: (MonadDOM m, HasCallStack) => CookieChangeEventInit -> m [CookieListItem]
+getDeletedUnsafe self = liftDOM ((((js_getDeleted (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-deleted CookieChangeEventInit.deleted specification>
+getDeletedUnchecked :: (MonadDOM m) => CookieChangeEventInit -> m [CookieListItem]
+getDeletedUnchecked self = liftDOM (((js_getDeleted (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieInit.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieInit.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieInit
+       (js_newCookieInit, js_setName, js_getName, js_setValue, js_getValue, js_setExpires, js_getExpires, js_setDomain, js_getDomain, js_setPath, js_getPath, js_setSameSite, js_getSameSite, js_setPartitioned, js_getPartitioned, js_setMaxAge, js_getMaxAge, newCookieInit, setName, getName, setValue, getValue, setExpires, getExpires, getExpiresUnsafe, getExpiresUnchecked, setDomain, getDomain, getDomainUnsafe, getDomainUnchecked, setPath, getPath, getPathUnsafe, getPathUnchecked, setSameSite, getSameSite, getSameSiteUnsafe, getSameSiteUnchecked, setPartitioned, getPartitioned, getPartitionedUnsafe, getPartitionedUnchecked, setMaxAge, getMaxAge, getMaxAgeUnsafe, getMaxAgeUnchecked, CookieInit(..), gTypeCookieInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"name\": $1, \"value\": $2}); })"
+        js_newCookieInit :: JSString -> JSString -> IO CookieInit
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookieinit CookieInit specification>
+newCookieInit :: (MonadDOM m, ToJSString name, ToJSString value) => name -> value -> m CookieInit
+newCookieInit name value = liftDOM ((js_newCookieInit (toJSString name) (toJSString value)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CookieInit -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-name CookieInit.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieInit -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CookieInit -> IO JSString
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-name CookieInit.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieInit -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: CookieInit -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-value CookieInit.value specification>
+setValue :: (MonadDOM m, ToJSString val) => CookieInit -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: CookieInit -> IO JSString
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-value CookieInit.value specification>
+getValue :: (MonadDOM m, FromJSString result) => CookieInit -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"expires\"] = $2; })"
+        js_setExpires :: CookieInit -> JSVal -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-expires CookieInit.expires specification>
+setExpires :: (MonadDOM m) => CookieInit -> Maybe Double -> m ()
+setExpires self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExpires (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"expires\"]; })"
+        js_getExpires :: CookieInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-expires CookieInit.expires specification>
+getExpires :: (MonadDOM m) => CookieInit -> m (Maybe Double)
+getExpires self = liftDOM (((js_getExpires (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-expires CookieInit.expires specification>
+getExpiresUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m Double
+getExpiresUnsafe self = liftDOM ((((js_getExpires (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-expires CookieInit.expires specification>
+getExpiresUnchecked :: (MonadDOM m) => CookieInit -> m Double
+getExpiresUnchecked self = liftDOM ((pFromJSVal <$> (js_getExpires (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"domain\"] = $2; })"
+        js_setDomain :: CookieInit -> (Nullable JSString) -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-domain CookieInit.domain specification>
+setDomain :: (MonadDOM m, ToJSString val) => CookieInit -> Maybe val -> m ()
+setDomain self val = liftDOM (void ((js_setDomain (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domain\"]; })"
+        js_getDomain :: CookieInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-domain CookieInit.domain specification>
+getDomain :: (MonadDOM m, FromJSString result) => CookieInit -> m (Maybe result)
+getDomain self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDomain (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-domain CookieInit.domain specification>
+getDomainUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieInit -> m result
+getDomainUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDomain (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-domain CookieInit.domain specification>
+getDomainUnchecked :: (MonadDOM m, FromJSString result) => CookieInit -> m result
+getDomainUnchecked self = liftDOM ((pFromJSVal <$> (js_getDomain (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"path\"] = $2; })"
+        js_setPath :: CookieInit -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-path CookieInit.path specification>
+setPath :: (MonadDOM m, ToJSString val) => CookieInit -> val -> m ()
+setPath self val = liftDOM (void ((js_setPath (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"path\"]; })"
+        js_getPath :: CookieInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-path CookieInit.path specification>
+getPath :: (MonadDOM m, FromJSString result) => CookieInit -> m (Maybe result)
+getPath self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPath (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-path CookieInit.path specification>
+getPathUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieInit -> m result
+getPathUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPath (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-path CookieInit.path specification>
+getPathUnchecked :: (MonadDOM m, FromJSString result) => CookieInit -> m result
+getPathUnchecked self = liftDOM ((pFromJSVal <$> (js_getPath (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sameSite\"] = $2; })"
+        js_setSameSite :: CookieInit -> JSVal -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-samesite CookieInit.sameSite specification>
+setSameSite :: (MonadDOM m) => CookieInit -> CookieSameSite -> m ()
+setSameSite self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSameSite (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sameSite\"]; })"
+        js_getSameSite :: CookieInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-samesite CookieInit.sameSite specification>
+getSameSite :: (MonadDOM m) => CookieInit -> m (Maybe CookieSameSite)
+getSameSite self = liftDOM (((js_getSameSite (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-samesite CookieInit.sameSite specification>
+getSameSiteUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m CookieSameSite
+getSameSiteUnsafe self = liftDOM ((((js_getSameSite (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-samesite CookieInit.sameSite specification>
+getSameSiteUnchecked :: (MonadDOM m) => CookieInit -> m CookieSameSite
+getSameSiteUnchecked self = liftDOM ((pFromJSVal <$> (js_getSameSite (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"partitioned\"] = $2; })"
+        js_setPartitioned :: CookieInit -> Bool -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-partitioned CookieInit.partitioned specification>
+setPartitioned :: (MonadDOM m) => CookieInit -> Bool -> m ()
+setPartitioned self val = liftDOM (void ((js_setPartitioned (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"partitioned\"]; })"
+        js_getPartitioned :: CookieInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-partitioned CookieInit.partitioned specification>
+getPartitioned :: (MonadDOM m) => CookieInit -> m (Maybe Bool)
+getPartitioned self = liftDOM (((js_getPartitioned (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-partitioned CookieInit.partitioned specification>
+getPartitionedUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m Bool
+getPartitionedUnsafe self = liftDOM ((((js_getPartitioned (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-partitioned CookieInit.partitioned specification>
+getPartitionedUnchecked :: (MonadDOM m) => CookieInit -> m Bool
+getPartitionedUnchecked self = liftDOM ((pFromJSVal <$> (js_getPartitioned (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxAge\"] = $2; })"
+        js_setMaxAge :: CookieInit -> JSVal -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-maxage CookieInit.maxAge specification>
+setMaxAge :: (MonadDOM m) => CookieInit -> Maybe Int53 -> m ()
+setMaxAge self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMaxAge (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxAge\"]; })"
+        js_getMaxAge :: CookieInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-maxage CookieInit.maxAge specification>
+getMaxAge :: (MonadDOM m) => CookieInit -> m (Maybe Int53)
+getMaxAge self = liftDOM (((js_getMaxAge (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-maxage CookieInit.maxAge specification>
+getMaxAgeUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m Int53
+getMaxAgeUnsafe self = liftDOM ((((js_getMaxAge (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-maxage CookieInit.maxAge specification>
+getMaxAgeUnchecked :: (MonadDOM m) => CookieInit -> m Int53
+getMaxAgeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxAge (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieListItem.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieListItem.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieListItem.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieListItem
+       (js_newCookieListItem, js_setName, js_getName, js_setValue, js_getValue, newCookieListItem, setName, getName, getNameUnsafe, getNameUnchecked, setValue, getValue, getValueUnsafe, getValueUnchecked, CookieListItem(..), gTypeCookieListItem)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCookieListItem :: IO CookieListItem
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookielistitem CookieListItem specification>
+newCookieListItem :: (MonadDOM m) => m CookieListItem
+newCookieListItem = liftDOM ((js_newCookieListItem))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CookieListItem -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-name CookieListItem.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieListItem -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CookieListItem -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-name CookieListItem.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieListItem -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-name CookieListItem.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieListItem -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-name CookieListItem.name specification>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => CookieListItem -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: CookieListItem -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-value CookieListItem.value specification>
+setValue :: (MonadDOM m, ToJSString val) => CookieListItem -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: CookieListItem -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-value CookieListItem.value specification>
+getValue :: (MonadDOM m, FromJSString result) => CookieListItem -> m (Maybe result)
+getValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getValue (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-value CookieListItem.value specification>
+getValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieListItem -> m result
+getValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-value CookieListItem.value specification>
+getValueUnchecked :: (MonadDOM m, FromJSString result) => CookieListItem -> m result
+getValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieStore.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieStore.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieStore.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieStore
+       (js_delete, js_deleteOptions, js_get, js_getOptions, js_getAll, js_getAllOptions, js_set, js_setOptions, delete, deleteOptions, get, get_, getUnsafe, getUnchecked, getOptions, getOptions_, getOptionsUnsafe, getOptionsUnchecked, getAll, getAll_, getAllOptions, getAllOptions_, set, setOptions, change, CookieStore(..), gTypeCookieStore)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"delete\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_delete :: CookieStore -> JSString -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/delete MDN CookieStore.delete documentation>
+delete :: (MonadDOM m, ToJSString name) => CookieStore -> name -> m ()
+delete self name = liftDOM (void (((js_delete (self) (toJSString name)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"delete\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_deleteOptions :: CookieStore -> CookieStoreDeleteOptions -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/delete MDN CookieStore.delete documentation>
+deleteOptions :: (MonadDOM m) => CookieStore -> CookieStoreDeleteOptions -> m ()
+deleteOptions self options = liftDOM (void (((js_deleteOptions (self) (options)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"get\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_get :: CookieStore -> JSString -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+get :: (MonadDOM m, ToJSString name) => CookieStore -> name -> m (Maybe CookieListItem)
+get self name = liftDOM ((((js_get (self) (toJSString name)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+get_ :: (MonadDOM m, ToJSString name) => CookieStore -> name -> m ()
+get_ self name = liftDOM (void (((js_get (self) (toJSString name)) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+getUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => CookieStore -> name -> m CookieListItem
+getUnsafe self name = liftDOM (((((js_get (self) (toJSString name)) >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+getUnchecked :: (MonadDOM m, ToJSString name) => CookieStore -> name -> m CookieListItem
+getUnchecked self name = liftDOM ((pFromJSVal <$> ((js_get (self) (toJSString name)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"get\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getOptions :: CookieStore -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+getOptions :: (MonadDOM m) => CookieStore -> Maybe CookieStoreGetOptions -> m (Maybe CookieListItem)
+getOptions self options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getOptions (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+getOptions_ :: (MonadDOM m) => CookieStore -> Maybe CookieStoreGetOptions -> m ()
+getOptions_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getOptions (self) a2') >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+getOptionsUnsafe :: (MonadDOM m, HasCallStack) => CookieStore -> Maybe CookieStoreGetOptions -> m CookieListItem
+getOptionsUnsafe self options = liftDOM ((((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getOptions (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/get MDN CookieStore.get documentation>
+getOptionsUnchecked :: (MonadDOM m) => CookieStore -> Maybe CookieStoreGetOptions -> m CookieListItem
+getOptionsUnchecked self options = liftDOM ((pFromJSVal <$> (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getOptions (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getAll\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getAll :: CookieStore -> JSString -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/getAll MDN CookieStore.getAll documentation>
+getAll :: (MonadDOM m, ToJSString name) => CookieStore -> name -> m [CookieListItem]
+getAll self name = liftDOM ((((js_getAll (self) (toJSString name)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/getAll MDN CookieStore.getAll documentation>
+getAll_ :: (MonadDOM m, ToJSString name) => CookieStore -> name -> m ()
+getAll_ self name = liftDOM (void (((js_getAll (self) (toJSString name)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getAll\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getAllOptions :: CookieStore -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/getAll MDN CookieStore.getAll documentation>
+getAllOptions :: (MonadDOM m) => CookieStore -> Maybe CookieStoreGetOptions -> m [CookieListItem]
+getAllOptions self options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAllOptions (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/getAll MDN CookieStore.getAll documentation>
+getAllOptions_ :: (MonadDOM m) => CookieStore -> Maybe CookieStoreGetOptions -> m ()
+getAllOptions_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAllOptions (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"set\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_set :: CookieStore -> JSString -> JSString -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/set MDN CookieStore.set documentation>
+set :: (MonadDOM m, ToJSString name, ToJSString value) => CookieStore -> name -> value -> m ()
+set self name value = liftDOM (void (((js_set (self) (toJSString name) (toJSString value)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"set\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setOptions :: CookieStore -> CookieInit -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/set MDN CookieStore.set documentation>
+setOptions :: (MonadDOM m) => CookieStore -> CookieInit -> m ()
+setOptions self options = liftDOM (void (((js_setOptions (self) (options)) >>= checkPromiseResult)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestore-onchange change event>
+change :: EventName CookieStore CookieChangeEvent
+change = unsafeEventName (toJSString "change")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieStoreDeleteOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieStoreDeleteOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieStoreDeleteOptions.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieStoreDeleteOptions
+       (js_newCookieStoreDeleteOptions, js_setName, js_getName, js_setDomain, js_getDomain, js_setPath, js_getPath, js_setPartitioned, js_getPartitioned, newCookieStoreDeleteOptions, setName, getName, setDomain, getDomain, getDomainUnsafe, getDomainUnchecked, setPath, getPath, getPathUnsafe, getPathUnchecked, setPartitioned, getPartitioned, getPartitionedUnsafe, getPartitionedUnchecked, CookieStoreDeleteOptions(..), gTypeCookieStoreDeleteOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"name\": $1}); })"
+        js_newCookieStoreDeleteOptions :: JSString -> IO CookieStoreDeleteOptions
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookiestoredeleteoptions CookieStoreDeleteOptions specification>
+newCookieStoreDeleteOptions :: (MonadDOM m, ToJSString name) => name -> m CookieStoreDeleteOptions
+newCookieStoreDeleteOptions name = liftDOM ((js_newCookieStoreDeleteOptions (toJSString name)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CookieStoreDeleteOptions -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-name CookieStoreDeleteOptions.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieStoreDeleteOptions -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CookieStoreDeleteOptions -> IO JSString
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-name CookieStoreDeleteOptions.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"domain\"] = $2; })"
+        js_setDomain :: CookieStoreDeleteOptions -> (Nullable JSString) -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-domain CookieStoreDeleteOptions.domain specification>
+setDomain :: (MonadDOM m, ToJSString val) => CookieStoreDeleteOptions -> Maybe val -> m ()
+setDomain self val = liftDOM (void ((js_setDomain (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domain\"]; })"
+        js_getDomain :: CookieStoreDeleteOptions -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-domain CookieStoreDeleteOptions.domain specification>
+getDomain :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m (Maybe result)
+getDomain self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDomain (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-domain CookieStoreDeleteOptions.domain specification>
+getDomainUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreDeleteOptions -> m result
+getDomainUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDomain (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-domain CookieStoreDeleteOptions.domain specification>
+getDomainUnchecked :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m result
+getDomainUnchecked self = liftDOM ((pFromJSVal <$> (js_getDomain (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"path\"] = $2; })"
+        js_setPath :: CookieStoreDeleteOptions -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-path CookieStoreDeleteOptions.path specification>
+setPath :: (MonadDOM m, ToJSString val) => CookieStoreDeleteOptions -> val -> m ()
+setPath self val = liftDOM (void ((js_setPath (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"path\"]; })"
+        js_getPath :: CookieStoreDeleteOptions -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-path CookieStoreDeleteOptions.path specification>
+getPath :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m (Maybe result)
+getPath self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPath (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-path CookieStoreDeleteOptions.path specification>
+getPathUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreDeleteOptions -> m result
+getPathUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPath (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-path CookieStoreDeleteOptions.path specification>
+getPathUnchecked :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m result
+getPathUnchecked self = liftDOM ((pFromJSVal <$> (js_getPath (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"partitioned\"] = $2; })"
+        js_setPartitioned :: CookieStoreDeleteOptions -> Bool -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-partitioned CookieStoreDeleteOptions.partitioned specification>
+setPartitioned :: (MonadDOM m) => CookieStoreDeleteOptions -> Bool -> m ()
+setPartitioned self val = liftDOM (void ((js_setPartitioned (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"partitioned\"]; })"
+        js_getPartitioned :: CookieStoreDeleteOptions -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-partitioned CookieStoreDeleteOptions.partitioned specification>
+getPartitioned :: (MonadDOM m) => CookieStoreDeleteOptions -> m (Maybe Bool)
+getPartitioned self = liftDOM (((js_getPartitioned (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-partitioned CookieStoreDeleteOptions.partitioned specification>
+getPartitionedUnsafe :: (MonadDOM m, HasCallStack) => CookieStoreDeleteOptions -> m Bool
+getPartitionedUnsafe self = liftDOM ((((js_getPartitioned (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-partitioned CookieStoreDeleteOptions.partitioned specification>
+getPartitionedUnchecked :: (MonadDOM m) => CookieStoreDeleteOptions -> m Bool
+getPartitionedUnchecked self = liftDOM ((pFromJSVal <$> (js_getPartitioned (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieStoreGetOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieStoreGetOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieStoreGetOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieStoreGetOptions
+       (js_newCookieStoreGetOptions, js_setName, js_getName, js_setUrl, js_getUrl, newCookieStoreGetOptions, setName, getName, getNameUnsafe, getNameUnchecked, setUrl, getUrl, getUrlUnsafe, getUrlUnchecked, CookieStoreGetOptions(..), gTypeCookieStoreGetOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCookieStoreGetOptions :: IO CookieStoreGetOptions
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookiestoregetoptions CookieStoreGetOptions specification>
+newCookieStoreGetOptions :: (MonadDOM m) => m CookieStoreGetOptions
+newCookieStoreGetOptions = liftDOM ((js_newCookieStoreGetOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CookieStoreGetOptions -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-name CookieStoreGetOptions.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieStoreGetOptions -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CookieStoreGetOptions -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-name CookieStoreGetOptions.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieStoreGetOptions -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-name CookieStoreGetOptions.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreGetOptions -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-name CookieStoreGetOptions.name specification>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => CookieStoreGetOptions -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: CookieStoreGetOptions -> JSString -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-url CookieStoreGetOptions.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => CookieStoreGetOptions -> val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: CookieStoreGetOptions -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-url CookieStoreGetOptions.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => CookieStoreGetOptions -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-url CookieStoreGetOptions.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreGetOptions -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-url CookieStoreGetOptions.url specification>
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => CookieStoreGetOptions -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CookieStoreManager.hs b/src/GHCJS/DOM/JSFFI/Generated/CookieStoreManager.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CookieStoreManager.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CookieStoreManager
+       (js_getSubscriptions, js_subscribe, js_unsubscribe, getSubscriptions, getSubscriptions_, subscribe, unsubscribe, CookieStoreManager(..), gTypeCookieStoreManager)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getSubscriptions\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getSubscriptions :: CookieStoreManager -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/getSubscriptions MDN CookieStoreManager.getSubscriptions documentation>
+getSubscriptions :: (MonadDOM m) => CookieStoreManager -> m [CookieStoreGetOptions]
+getSubscriptions self = liftDOM ((((js_getSubscriptions (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/getSubscriptions MDN CookieStoreManager.getSubscriptions documentation>
+getSubscriptions_ :: (MonadDOM m) => CookieStoreManager -> m ()
+getSubscriptions_ self = liftDOM (void (((js_getSubscriptions (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"subscribe\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_subscribe :: CookieStoreManager -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/subscribe MDN CookieStoreManager.subscribe documentation>
+subscribe :: (MonadDOM m) => CookieStoreManager -> [CookieStoreGetOptions] -> m ()
+subscribe self subscriptions = liftDOM (void ((((toJSVal subscriptions) >>= \a2' -> js_subscribe (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"unsubscribe\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_unsubscribe :: CookieStoreManager -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/unsubscribe MDN CookieStoreManager.unsubscribe documentation>
+unsubscribe :: (MonadDOM m) => CookieStoreManager -> [CookieStoreGetOptions] -> m ()
+unsubscribe self subscriptions = liftDOM (void ((((toJSVal subscriptions) >>= \a2' -> js_unsubscribe (self) a2') >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs b/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs
+++ /dev/null
@@ -1,139 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Coordinates
-       (js_getLatitude, getLatitude, js_getLongitude, getLongitude,
-        js_getAltitude, getAltitude, getAltitudeUnsafe,
-        getAltitudeUnchecked, js_getAccuracy, getAccuracy,
-        js_getAltitudeAccuracy, getAltitudeAccuracy,
-        getAltitudeAccuracyUnsafe, getAltitudeAccuracyUnchecked,
-        js_getHeading, getHeading, getHeadingUnsafe, getHeadingUnchecked,
-        js_getSpeed, getSpeed, getSpeedUnsafe, getSpeedUnchecked,
-        Coordinates(..), gTypeCoordinates)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"latitude\"]; })" js_getLatitude
-        :: Coordinates -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.latitude Mozilla Coordinates.latitude documentation> 
-getLatitude :: (MonadIO m) => Coordinates -> m Double
-getLatitude self = liftIO (js_getLatitude self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"longitude\"]; })"
-        js_getLongitude :: Coordinates -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.longitude Mozilla Coordinates.longitude documentation> 
-getLongitude :: (MonadIO m) => Coordinates -> m Double
-getLongitude self = liftIO (js_getLongitude self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"altitude\"]; })" js_getAltitude
-        :: Coordinates -> IO (Nullable Double)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
-getAltitude :: (MonadIO m) => Coordinates -> m (Maybe Double)
-getAltitude self
-  = liftIO (nullableToMaybe <$> (js_getAltitude self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
-getAltitudeUnsafe ::
-                  (MonadIO m, HasCallStack) => Coordinates -> m Double
-getAltitudeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAltitude self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
-getAltitudeUnchecked :: (MonadIO m) => Coordinates -> m Double
-getAltitudeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getAltitude self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"accuracy\"]; })" js_getAccuracy
-        :: Coordinates -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.accuracy Mozilla Coordinates.accuracy documentation> 
-getAccuracy :: (MonadIO m) => Coordinates -> m Double
-getAccuracy self = liftIO (js_getAccuracy self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"altitudeAccuracy\"]; })"
-        js_getAltitudeAccuracy :: Coordinates -> IO (Nullable Double)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
-getAltitudeAccuracy ::
-                    (MonadIO m) => Coordinates -> m (Maybe Double)
-getAltitudeAccuracy self
-  = liftIO (nullableToMaybe <$> (js_getAltitudeAccuracy self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
-getAltitudeAccuracyUnsafe ::
-                          (MonadIO m, HasCallStack) => Coordinates -> m Double
-getAltitudeAccuracyUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAltitudeAccuracy self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
-getAltitudeAccuracyUnchecked ::
-                             (MonadIO m) => Coordinates -> m Double
-getAltitudeAccuracyUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getAltitudeAccuracy self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"heading\"]; })" js_getHeading ::
-        Coordinates -> IO (Nullable Double)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
-getHeading :: (MonadIO m) => Coordinates -> m (Maybe Double)
-getHeading self = liftIO (nullableToMaybe <$> (js_getHeading self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
-getHeadingUnsafe ::
-                 (MonadIO m, HasCallStack) => Coordinates -> m Double
-getHeadingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getHeading self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
-getHeadingUnchecked :: (MonadIO m) => Coordinates -> m Double
-getHeadingUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getHeading self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"speed\"]; })" js_getSpeed ::
-        Coordinates -> IO (Nullable Double)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
-getSpeed :: (MonadIO m) => Coordinates -> m (Maybe Double)
-getSpeed self = liftIO (nullableToMaybe <$> (js_getSpeed self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
-getSpeedUnsafe ::
-               (MonadIO m, HasCallStack) => Coordinates -> m Double
-getSpeedUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSpeed self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
-getSpeedUnchecked :: (MonadIO m) => Coordinates -> m Double
-getSpeedUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getSpeed self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs b/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
@@ -1,46 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy
-       (js_newCountQueuingStrategy, newCountQueuingStrategy, js_size,
-        size, size_, CountQueuingStrategy(..), gTypeCountQueuingStrategy)
+       (js_newCountQueuingStrategy, js_getHighWaterMark, js_getSize, newCountQueuingStrategy, getHighWaterMark, getSize, CountQueuingStrategy(..), gTypeCountQueuingStrategy)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"CountQueuingStrategy\"](); })" js_newCountQueuingStrategy
-        :: IO CountQueuingStrategy
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy Mozilla CountQueuingStrategy documentation> 
-newCountQueuingStrategy :: (MonadIO m) => m CountQueuingStrategy
-newCountQueuingStrategy = liftIO (js_newCountQueuingStrategy)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"](); })" js_size ::
-        CountQueuingStrategy -> IO Double
+foreign import javascript safe "(($1) => { return new globalThis[\"CountQueuingStrategy\"]($1); })"
+        js_newCountQueuingStrategy :: QueuingStrategyInit -> IO CountQueuingStrategy
+-- | <https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/CountQueuingStrategy MDN CountQueuingStrategy. documentation>
+newCountQueuingStrategy :: (MonadDOM m) => QueuingStrategyInit -> m CountQueuingStrategy
+newCountQueuingStrategy init = liftDOM ((js_newCountQueuingStrategy (init)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy.size Mozilla CountQueuingStrategy.size documentation> 
-size :: (MonadIO m) => CountQueuingStrategy -> m Double
-size self = liftIO (js_size self)
+foreign import javascript unsafe "(($1) => { return $1[\"highWaterMark\"]; })"
+        js_getHighWaterMark :: CountQueuingStrategy -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/highWaterMark MDN CountQueuingStrategy.highWaterMark documentation>
+getHighWaterMark :: (MonadDOM m) => CountQueuingStrategy -> m Double
+getHighWaterMark self = liftDOM ((js_getHighWaterMark (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy.size Mozilla CountQueuingStrategy.size documentation> 
-size_ :: (MonadIO m) => CountQueuingStrategy -> m ()
-size_ self = liftIO (void (js_size self))
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: CountQueuingStrategy -> IO Function
+-- | <https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/size MDN CountQueuingStrategy.size documentation>
+getSize :: (MonadDOM m) => CountQueuingStrategy -> m Function
+getSize self = liftDOM ((js_getSize (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Counter.hs b/src/GHCJS/DOM/JSFFI/Generated/Counter.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/Counter.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Counter
-       (js_getIdentifier, getIdentifier, js_getListStyle, getListStyle,
-        js_getSeparator, getSeparator, Counter(..), gTypeCounter)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"identifier\"]; })"
-        js_getIdentifier :: Counter -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.identifier Mozilla Counter.identifier documentation> 
-getIdentifier ::
-              (MonadIO m, FromJSString result) => Counter -> m result
-getIdentifier self
-  = liftIO (fromJSString <$> (js_getIdentifier self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"listStyle\"]; })"
-        js_getListStyle :: Counter -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.listStyle Mozilla Counter.listStyle documentation> 
-getListStyle ::
-             (MonadIO m, FromJSString result) => Counter -> m result
-getListStyle self
-  = liftIO (fromJSString <$> (js_getListStyle self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"separator\"]; })"
-        js_getSeparator :: Counter -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.separator Mozilla Counter.separator documentation> 
-getSeparator ::
-             (MonadIO m, FromJSString result) => Counter -> m result
-getSeparator self
-  = liftIO (fromJSString <$> (js_getSeparator self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CreateHTMLCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/CreateHTMLCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CreateHTMLCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CreateHTMLCallback
+       (newCreateHTMLCallback, newCreateHTMLCallbackSync, newCreateHTMLCallbackAsync, CreateHTMLCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newCreateHTMLCallback :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateHTMLCallback
+newCreateHTMLCallback callback = liftDOM ((CreateHTMLCallback . coerce) <$> syncCallback2 ContinueAsync (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateHTMLCallbackSync :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateHTMLCallback
+newCreateHTMLCallbackSync callback = liftDOM ((CreateHTMLCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateHTMLCallbackAsync :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateHTMLCallback
+newCreateHTMLCallbackAsync callback = liftDOM ((CreateHTMLCallback . coerce) <$> asyncCallback2 (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CreateParserOptionsCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/CreateParserOptionsCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CreateParserOptionsCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CreateParserOptionsCallback
+       (newCreateParserOptionsCallback, newCreateParserOptionsCallbackSync, newCreateParserOptionsCallbackAsync, CreateParserOptionsCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newCreateParserOptionsCallback :: (MonadDOM m) => (SetHTMLUnsafeOptions -> JSVal -> IO ()) -> m CreateParserOptionsCallback
+newCreateParserOptionsCallback callback = liftDOM ((CreateParserOptionsCallback . coerce) <$> syncCallback2 ContinueAsync (\ options arguments -> do
+          options' <- fromJSValUnchecked options
+          arguments' <- P.return arguments
+          callback options' arguments'))
+
+newCreateParserOptionsCallbackSync :: (MonadDOM m) => (SetHTMLUnsafeOptions -> JSVal -> IO ()) -> m CreateParserOptionsCallback
+newCreateParserOptionsCallbackSync callback = liftDOM ((CreateParserOptionsCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ options arguments -> do
+          options' <- fromJSValUnchecked options
+          arguments' <- P.return arguments
+          callback options' arguments'))
+
+newCreateParserOptionsCallbackAsync :: (MonadDOM m) => (SetHTMLUnsafeOptions -> JSVal -> IO ()) -> m CreateParserOptionsCallback
+newCreateParserOptionsCallbackAsync callback = liftDOM ((CreateParserOptionsCallback . coerce) <$> asyncCallback2 (\ options arguments -> do
+          options' <- fromJSValUnchecked options
+          arguments' <- P.return arguments
+          callback options' arguments'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CreateScriptCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/CreateScriptCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CreateScriptCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CreateScriptCallback
+       (newCreateScriptCallback, newCreateScriptCallbackSync, newCreateScriptCallbackAsync, CreateScriptCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newCreateScriptCallback :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateScriptCallback
+newCreateScriptCallback callback = liftDOM ((CreateScriptCallback . coerce) <$> syncCallback2 ContinueAsync (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptCallbackSync :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateScriptCallback
+newCreateScriptCallbackSync callback = liftDOM ((CreateScriptCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptCallbackAsync :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateScriptCallback
+newCreateScriptCallbackAsync callback = liftDOM ((CreateScriptCallback . coerce) <$> asyncCallback2 (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CreateScriptURLCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/CreateScriptURLCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CreateScriptURLCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CreateScriptURLCallback
+       (newCreateScriptURLCallback, newCreateScriptURLCallbackSync, newCreateScriptURLCallbackAsync, CreateScriptURLCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newCreateScriptURLCallback :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateScriptURLCallback
+newCreateScriptURLCallback callback = liftDOM ((CreateScriptURLCallback . coerce) <$> syncCallback2 ContinueAsync (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptURLCallbackSync :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateScriptURLCallback
+newCreateScriptURLCallbackSync callback = liftDOM ((CreateScriptURLCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptURLCallbackAsync :: (MonadDOM m) => (JSString -> JSVal -> IO ()) -> m CreateScriptURLCallback
+newCreateScriptURLCallbackAsync callback = liftDOM ((CreateScriptURLCallback . coerce) <$> asyncCallback2 (\ input arguments -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Credential.hs b/src/GHCJS/DOM/JSFFI/Generated/Credential.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Credential.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Credential
+       (js_isConditionalMediationAvailable, js_getId, js_getType, isConditionalMediationAvailable, isConditionalMediationAvailable_, getId, getType, Credential(..), gTypeCredential, IsCredential, toCredential)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($c) => { return globalThis[\"Credential\"][\"isConditionalMediationAvailable\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isConditionalMediationAvailable :: IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/Credential/isConditionalMediationAvailable_static MDN Credential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable :: (MonadDOM m) => m Bool
+isConditionalMediationAvailable = liftDOM (((js_isConditionalMediationAvailable) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Credential/isConditionalMediationAvailable_static MDN Credential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable_ :: (MonadDOM m) => m ()
+isConditionalMediationAvailable_ = liftDOM (void (((js_isConditionalMediationAvailable) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: Credential -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Credential/id MDN Credential.id documentation>
+getId :: (MonadDOM m, IsCredential self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toCredential self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Credential -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Credential/type MDN Credential.type documentation>
+getType :: (MonadDOM m, IsCredential self, FromJSString result) => self -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType ((Types.toCredential self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CredentialCreationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CredentialCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CredentialCreationOptions.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CredentialCreationOptions
+       (js_newCredentialCreationOptions, js_setMediation, js_getMediation, js_setSignal, js_getSignal, js_setPassword, js_getPassword, js_setFederated, js_getFederated, js_setDigital, js_getDigital, js_setPublicKey, js_getPublicKey, newCredentialCreationOptions, setMediation, getMediation, getMediationUnsafe, getMediationUnchecked, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, setPassword, getPassword, getPasswordUnsafe, getPasswordUnchecked, setFederated, getFederated, getFederatedUnsafe, getFederatedUnchecked, setDigital, getDigital, getDigitalUnsafe, getDigitalUnchecked, setPublicKey, getPublicKey, getPublicKeyUnsafe, getPublicKeyUnchecked, CredentialCreationOptions(..), gTypeCredentialCreationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCredentialCreationOptions :: IO CredentialCreationOptions
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-credentialcreationoptions CredentialCreationOptions specification>
+newCredentialCreationOptions :: (MonadDOM m) => m CredentialCreationOptions
+newCredentialCreationOptions = liftDOM ((js_newCredentialCreationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mediation\"] = $2; })"
+        js_setMediation :: CredentialCreationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-mediation CredentialCreationOptions.mediation specification>
+setMediation :: (MonadDOM m) => CredentialCreationOptions -> CredentialMediationRequirement -> m ()
+setMediation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMediation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediation\"]; })"
+        js_getMediation :: CredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-mediation CredentialCreationOptions.mediation specification>
+getMediation :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe CredentialMediationRequirement)
+getMediation self = liftDOM (((js_getMediation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-mediation CredentialCreationOptions.mediation specification>
+getMediationUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m CredentialMediationRequirement
+getMediationUnsafe self = liftDOM ((((js_getMediation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-mediation CredentialCreationOptions.mediation specification>
+getMediationUnchecked :: (MonadDOM m) => CredentialCreationOptions -> m CredentialMediationRequirement
+getMediationUnchecked self = liftDOM ((pFromJSVal <$> (js_getMediation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: CredentialCreationOptions -> AbortSignal -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-signal CredentialCreationOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => CredentialCreationOptions -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: CredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-signal CredentialCreationOptions.signal specification>
+getSignal :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-signal CredentialCreationOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-signal CredentialCreationOptions.signal specification>
+getSignalUnchecked :: (MonadDOM m) => CredentialCreationOptions -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: CredentialCreationOptions -> PasswordCredentialInit -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-password CredentialCreationOptions.password specification>
+setPassword :: (MonadDOM m, IsPasswordCredentialInit val) => CredentialCreationOptions -> val -> m ()
+setPassword self val = liftDOM (void ((js_setPassword (self) (Types.toPasswordCredentialInit val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: CredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-password CredentialCreationOptions.password specification>
+getPassword :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe PasswordCredentialInit)
+getPassword self = liftDOM (((js_getPassword (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-password CredentialCreationOptions.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m PasswordCredentialInit
+getPasswordUnsafe self = liftDOM ((((js_getPassword (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-password CredentialCreationOptions.password specification>
+getPasswordUnchecked :: (MonadDOM m) => CredentialCreationOptions -> m PasswordCredentialInit
+getPasswordUnchecked self = liftDOM ((pFromJSVal <$> (js_getPassword (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"federated\"] = $2; })"
+        js_setFederated :: CredentialCreationOptions -> FederatedCredentialInit -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-federated CredentialCreationOptions.federated specification>
+setFederated :: (MonadDOM m) => CredentialCreationOptions -> FederatedCredentialInit -> m ()
+setFederated self val = liftDOM (void ((js_setFederated (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"federated\"]; })"
+        js_getFederated :: CredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-federated CredentialCreationOptions.federated specification>
+getFederated :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe FederatedCredentialInit)
+getFederated self = liftDOM (((js_getFederated (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-federated CredentialCreationOptions.federated specification>
+getFederatedUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m FederatedCredentialInit
+getFederatedUnsafe self = liftDOM ((((js_getFederated (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-federated CredentialCreationOptions.federated specification>
+getFederatedUnchecked :: (MonadDOM m) => CredentialCreationOptions -> m FederatedCredentialInit
+getFederatedUnchecked self = liftDOM ((pFromJSVal <$> (js_getFederated (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"digital\"] = $2; })"
+        js_setDigital :: CredentialCreationOptions -> DigitalCredentialCreationOptions -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialcreationoptions-digital CredentialCreationOptions.digital specification>
+setDigital :: (MonadDOM m) => CredentialCreationOptions -> DigitalCredentialCreationOptions -> m ()
+setDigital self val = liftDOM (void ((js_setDigital (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"digital\"]; })"
+        js_getDigital :: CredentialCreationOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialcreationoptions-digital CredentialCreationOptions.digital specification>
+getDigital :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe DigitalCredentialCreationOptions)
+getDigital self = liftDOM (((js_getDigital (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialcreationoptions-digital CredentialCreationOptions.digital specification>
+getDigitalUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m DigitalCredentialCreationOptions
+getDigitalUnsafe self = liftDOM ((((js_getDigital (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialcreationoptions-digital CredentialCreationOptions.digital specification>
+getDigitalUnchecked :: (MonadDOM m) => CredentialCreationOptions -> m DigitalCredentialCreationOptions
+getDigitalUnchecked self = liftDOM ((pFromJSVal <$> (js_getDigital (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"publicKey\"] = $2; })"
+        js_setPublicKey :: CredentialCreationOptions -> PublicKeyCredentialCreationOptions -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-credentialcreationoptions-publickey CredentialCreationOptions.publicKey specification>
+setPublicKey :: (MonadDOM m) => CredentialCreationOptions -> PublicKeyCredentialCreationOptions -> m ()
+setPublicKey self val = liftDOM (void ((js_setPublicKey (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"publicKey\"]; })"
+        js_getPublicKey :: CredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-credentialcreationoptions-publickey CredentialCreationOptions.publicKey specification>
+getPublicKey :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe PublicKeyCredentialCreationOptions)
+getPublicKey self = liftDOM (((js_getPublicKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialcreationoptions-publickey CredentialCreationOptions.publicKey specification>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m PublicKeyCredentialCreationOptions
+getPublicKeyUnsafe self = liftDOM ((((js_getPublicKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialcreationoptions-publickey CredentialCreationOptions.publicKey specification>
+getPublicKeyUnchecked :: (MonadDOM m) => CredentialCreationOptions -> m PublicKeyCredentialCreationOptions
+getPublicKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getPublicKey (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CredentialData.hs b/src/GHCJS/DOM/JSFFI/Generated/CredentialData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CredentialData.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CredentialData
+       (js_newCredentialData, js_setId, js_getId, newCredentialData, setId, getId, CredentialData(..), gTypeCredentialData, IsCredentialData, toCredentialData)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"id\": $1}); })"
+        js_newCredentialData :: JSString -> IO CredentialData
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-credentialdata CredentialData specification>
+newCredentialData :: (MonadDOM m, ToJSString id) => id -> m CredentialData
+newCredentialData id = liftDOM ((js_newCredentialData (toJSString id)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: CredentialData -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialdata-id CredentialData.id specification>
+setId :: (MonadDOM m, IsCredentialData self, ToJSString val) => self -> val -> m ()
+setId self val = liftDOM (void ((js_setId ((Types.toCredentialData self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: CredentialData -> IO JSString
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialdata-id CredentialData.id specification>
+getId :: (MonadDOM m, IsCredentialData self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toCredentialData self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CredentialPropertiesOutput.hs b/src/GHCJS/DOM/JSFFI/Generated/CredentialPropertiesOutput.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CredentialPropertiesOutput.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CredentialPropertiesOutput
+       (js_newCredentialPropertiesOutput, js_setRk, js_getRk, newCredentialPropertiesOutput, setRk, getRk, getRkUnsafe, getRkUnchecked, CredentialPropertiesOutput(..), gTypeCredentialPropertiesOutput)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCredentialPropertiesOutput :: IO CredentialPropertiesOutput
+-- | <https://w3c.github.io/webauthn/#dictdef-credentialpropertiesoutput CredentialPropertiesOutput specification>
+newCredentialPropertiesOutput :: (MonadDOM m) => m CredentialPropertiesOutput
+newCredentialPropertiesOutput = liftDOM ((js_newCredentialPropertiesOutput))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rk\"] = $2; })"
+        js_setRk :: CredentialPropertiesOutput -> Bool -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-credentialpropertiesoutput-rk CredentialPropertiesOutput.rk specification>
+setRk :: (MonadDOM m) => CredentialPropertiesOutput -> Bool -> m ()
+setRk self val = liftDOM (void ((js_setRk (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rk\"]; })"
+        js_getRk :: CredentialPropertiesOutput -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-credentialpropertiesoutput-rk CredentialPropertiesOutput.rk specification>
+getRk :: (MonadDOM m) => CredentialPropertiesOutput -> m (Maybe Bool)
+getRk self = liftDOM (((js_getRk (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialpropertiesoutput-rk CredentialPropertiesOutput.rk specification>
+getRkUnsafe :: (MonadDOM m, HasCallStack) => CredentialPropertiesOutput -> m Bool
+getRkUnsafe self = liftDOM ((((js_getRk (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialpropertiesoutput-rk CredentialPropertiesOutput.rk specification>
+getRkUnchecked :: (MonadDOM m) => CredentialPropertiesOutput -> m Bool
+getRkUnchecked self = liftDOM ((pFromJSVal <$> (js_getRk (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CredentialRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CredentialRequestOptions.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CredentialRequestOptions
+       (js_newCredentialRequestOptions, js_setMediation, js_getMediation, js_setUiMode, js_getUiMode, js_setSignal, js_getSignal, js_setPassword, js_getPassword, js_setFederated, js_getFederated, js_setDigital, js_getDigital, js_setIdentity, js_getIdentity, js_setOtp, js_getOtp, js_setPublicKey, js_getPublicKey, newCredentialRequestOptions, setMediation, getMediation, getMediationUnsafe, getMediationUnchecked, setUiMode, getUiMode, getUiModeUnsafe, getUiModeUnchecked, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, setPassword, getPassword, getPasswordUnsafe, getPasswordUnchecked, setFederated, getFederated, getFederatedUnsafe, getFederatedUnchecked, setDigital, getDigital, getDigitalUnsafe, getDigitalUnchecked, setIdentity, getIdentity, getIdentityUnsafe, getIdentityUnchecked, setOtp, getOtp, getOtpUnsafe, getOtpUnchecked, setPublicKey, getPublicKey, getPublicKeyUnsafe, getPublicKeyUnchecked, CredentialRequestOptions(..), gTypeCredentialRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCredentialRequestOptions :: IO CredentialRequestOptions
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-credentialrequestoptions CredentialRequestOptions specification>
+newCredentialRequestOptions :: (MonadDOM m) => m CredentialRequestOptions
+newCredentialRequestOptions = liftDOM ((js_newCredentialRequestOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mediation\"] = $2; })"
+        js_setMediation :: CredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-mediation CredentialRequestOptions.mediation specification>
+setMediation :: (MonadDOM m) => CredentialRequestOptions -> CredentialMediationRequirement -> m ()
+setMediation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMediation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediation\"]; })"
+        js_getMediation :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-mediation CredentialRequestOptions.mediation specification>
+getMediation :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe CredentialMediationRequirement)
+getMediation self = liftDOM (((js_getMediation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-mediation CredentialRequestOptions.mediation specification>
+getMediationUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m CredentialMediationRequirement
+getMediationUnsafe self = liftDOM ((((js_getMediation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-mediation CredentialRequestOptions.mediation specification>
+getMediationUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m CredentialMediationRequirement
+getMediationUnchecked self = liftDOM ((pFromJSVal <$> (js_getMediation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"uiMode\"] = $2; })"
+        js_setUiMode :: CredentialRequestOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-uimode CredentialRequestOptions.uiMode specification>
+setUiMode :: (MonadDOM m, ToJSString val) => CredentialRequestOptions -> val -> m ()
+setUiMode self val = liftDOM (void ((js_setUiMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"uiMode\"]; })"
+        js_getUiMode :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-uimode CredentialRequestOptions.uiMode specification>
+getUiMode :: (MonadDOM m, FromJSString result) => CredentialRequestOptions -> m (Maybe result)
+getUiMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUiMode (self))))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-uimode CredentialRequestOptions.uiMode specification>
+getUiModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CredentialRequestOptions -> m result
+getUiModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUiMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-uimode CredentialRequestOptions.uiMode specification>
+getUiModeUnchecked :: (MonadDOM m, FromJSString result) => CredentialRequestOptions -> m result
+getUiModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getUiMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: CredentialRequestOptions -> AbortSignal -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-signal CredentialRequestOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => CredentialRequestOptions -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-signal CredentialRequestOptions.signal specification>
+getSignal :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-signal CredentialRequestOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-signal CredentialRequestOptions.signal specification>
+getSignalUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: CredentialRequestOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-password CredentialRequestOptions.password specification>
+setPassword :: (MonadDOM m) => CredentialRequestOptions -> Bool -> m ()
+setPassword self val = liftDOM (void ((js_setPassword (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-password CredentialRequestOptions.password specification>
+getPassword :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe Bool)
+getPassword self = liftDOM (((js_getPassword (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-password CredentialRequestOptions.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m Bool
+getPasswordUnsafe self = liftDOM ((((js_getPassword (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-password CredentialRequestOptions.password specification>
+getPasswordUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m Bool
+getPasswordUnchecked self = liftDOM ((pFromJSVal <$> (js_getPassword (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"federated\"] = $2; })"
+        js_setFederated :: CredentialRequestOptions -> FederatedCredentialRequestOptions -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-federated CredentialRequestOptions.federated specification>
+setFederated :: (MonadDOM m) => CredentialRequestOptions -> FederatedCredentialRequestOptions -> m ()
+setFederated self val = liftDOM (void ((js_setFederated (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"federated\"]; })"
+        js_getFederated :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-federated CredentialRequestOptions.federated specification>
+getFederated :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe FederatedCredentialRequestOptions)
+getFederated self = liftDOM (((js_getFederated (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-federated CredentialRequestOptions.federated specification>
+getFederatedUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m FederatedCredentialRequestOptions
+getFederatedUnsafe self = liftDOM ((((js_getFederated (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-federated CredentialRequestOptions.federated specification>
+getFederatedUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m FederatedCredentialRequestOptions
+getFederatedUnchecked self = liftDOM ((pFromJSVal <$> (js_getFederated (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"digital\"] = $2; })"
+        js_setDigital :: CredentialRequestOptions -> DigitalCredentialRequestOptions -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialrequestoptions-digital CredentialRequestOptions.digital specification>
+setDigital :: (MonadDOM m) => CredentialRequestOptions -> DigitalCredentialRequestOptions -> m ()
+setDigital self val = liftDOM (void ((js_setDigital (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"digital\"]; })"
+        js_getDigital :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialrequestoptions-digital CredentialRequestOptions.digital specification>
+getDigital :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe DigitalCredentialRequestOptions)
+getDigital self = liftDOM (((js_getDigital (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialrequestoptions-digital CredentialRequestOptions.digital specification>
+getDigitalUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m DigitalCredentialRequestOptions
+getDigitalUnsafe self = liftDOM ((((js_getDigital (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialrequestoptions-digital CredentialRequestOptions.digital specification>
+getDigitalUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m DigitalCredentialRequestOptions
+getDigitalUnchecked self = liftDOM ((pFromJSVal <$> (js_getDigital (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"identity\"] = $2; })"
+        js_setIdentity :: CredentialRequestOptions -> IdentityCredentialRequestOptions -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-credentialrequestoptions-identity CredentialRequestOptions.identity specification>
+setIdentity :: (MonadDOM m) => CredentialRequestOptions -> IdentityCredentialRequestOptions -> m ()
+setIdentity self val = liftDOM (void ((js_setIdentity (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"identity\"]; })"
+        js_getIdentity :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-credentialrequestoptions-identity CredentialRequestOptions.identity specification>
+getIdentity :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe IdentityCredentialRequestOptions)
+getIdentity self = liftDOM (((js_getIdentity (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-credentialrequestoptions-identity CredentialRequestOptions.identity specification>
+getIdentityUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m IdentityCredentialRequestOptions
+getIdentityUnsafe self = liftDOM ((((js_getIdentity (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-credentialrequestoptions-identity CredentialRequestOptions.identity specification>
+getIdentityUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m IdentityCredentialRequestOptions
+getIdentityUnchecked self = liftDOM ((pFromJSVal <$> (js_getIdentity (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"otp\"] = $2; })"
+        js_setOtp :: CredentialRequestOptions -> OTPCredentialRequestOptions -> IO ()
+-- | <https://wicg.github.io/web-otp/#dom-credentialrequestoptions-otp CredentialRequestOptions.otp specification>
+setOtp :: (MonadDOM m) => CredentialRequestOptions -> OTPCredentialRequestOptions -> m ()
+setOtp self val = liftDOM (void ((js_setOtp (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"otp\"]; })"
+        js_getOtp :: CredentialRequestOptions -> IO JSVal
+-- | <https://wicg.github.io/web-otp/#dom-credentialrequestoptions-otp CredentialRequestOptions.otp specification>
+getOtp :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe OTPCredentialRequestOptions)
+getOtp self = liftDOM (((js_getOtp (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/web-otp/#dom-credentialrequestoptions-otp CredentialRequestOptions.otp specification>
+getOtpUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m OTPCredentialRequestOptions
+getOtpUnsafe self = liftDOM ((((js_getOtp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/web-otp/#dom-credentialrequestoptions-otp CredentialRequestOptions.otp specification>
+getOtpUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m OTPCredentialRequestOptions
+getOtpUnchecked self = liftDOM ((pFromJSVal <$> (js_getOtp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"publicKey\"] = $2; })"
+        js_setPublicKey :: CredentialRequestOptions -> PublicKeyCredentialRequestOptions -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-credentialrequestoptions-publickey CredentialRequestOptions.publicKey specification>
+setPublicKey :: (MonadDOM m) => CredentialRequestOptions -> PublicKeyCredentialRequestOptions -> m ()
+setPublicKey self val = liftDOM (void ((js_setPublicKey (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"publicKey\"]; })"
+        js_getPublicKey :: CredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-credentialrequestoptions-publickey CredentialRequestOptions.publicKey specification>
+getPublicKey :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe PublicKeyCredentialRequestOptions)
+getPublicKey self = liftDOM (((js_getPublicKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialrequestoptions-publickey CredentialRequestOptions.publicKey specification>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m PublicKeyCredentialRequestOptions
+getPublicKeyUnsafe self = liftDOM ((((js_getPublicKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialrequestoptions-publickey CredentialRequestOptions.publicKey specification>
+getPublicKeyUnchecked :: (MonadDOM m) => CredentialRequestOptions -> m PublicKeyCredentialRequestOptions
+getPublicKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getPublicKey (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CredentialsContainer.hs b/src/GHCJS/DOM/JSFFI/Generated/CredentialsContainer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CredentialsContainer.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CredentialsContainer
+       (js_create, js_get, js_preventSilentAccess, js_store, create, create_, createUnsafe, createUnchecked, get, get_, getUnsafe, getUnchecked, preventSilentAccess, store, CredentialsContainer(..), gTypeCredentialsContainer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"create\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_create :: CredentialsContainer -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/create MDN CredentialsContainer.create documentation>
+create :: (MonadDOM m) => CredentialsContainer -> Maybe CredentialCreationOptions -> m (Maybe Credential)
+create self options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_create (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/create MDN CredentialsContainer.create documentation>
+create_ :: (MonadDOM m) => CredentialsContainer -> Maybe CredentialCreationOptions -> m ()
+create_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_create (self) a2') >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/create MDN CredentialsContainer.create documentation>
+createUnsafe :: (MonadDOM m, HasCallStack) => CredentialsContainer -> Maybe CredentialCreationOptions -> m Credential
+createUnsafe self options = liftDOM ((((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_create (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/create MDN CredentialsContainer.create documentation>
+createUnchecked :: (MonadDOM m) => CredentialsContainer -> Maybe CredentialCreationOptions -> m Credential
+createUnchecked self options = liftDOM ((pFromJSVal <$> (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_create (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"get\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_get :: CredentialsContainer -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/get MDN CredentialsContainer.get documentation>
+get :: (MonadDOM m) => CredentialsContainer -> Maybe CredentialRequestOptions -> m (Maybe Credential)
+get self options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_get (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/get MDN CredentialsContainer.get documentation>
+get_ :: (MonadDOM m) => CredentialsContainer -> Maybe CredentialRequestOptions -> m ()
+get_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_get (self) a2') >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/get MDN CredentialsContainer.get documentation>
+getUnsafe :: (MonadDOM m, HasCallStack) => CredentialsContainer -> Maybe CredentialRequestOptions -> m Credential
+getUnsafe self options = liftDOM ((((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_get (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/get MDN CredentialsContainer.get documentation>
+getUnchecked :: (MonadDOM m) => CredentialsContainer -> Maybe CredentialRequestOptions -> m Credential
+getUnchecked self options = liftDOM ((pFromJSVal <$> (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_get (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"preventSilentAccess\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_preventSilentAccess :: CredentialsContainer -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/preventSilentAccess MDN CredentialsContainer.preventSilentAccess documentation>
+preventSilentAccess :: (MonadDOM m) => CredentialsContainer -> m ()
+preventSilentAccess self = liftDOM (void (((js_preventSilentAccess (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"store\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_store :: CredentialsContainer -> Credential -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/store MDN CredentialsContainer.store documentation>
+store :: (MonadDOM m, IsCredential credential) => CredentialsContainer -> credential -> m ()
+store self credential = liftDOM (void (((js_store (self) (Types.toCredential credential)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs b/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
@@ -1,59 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Crypto
-       (js_getRandomValues, getRandomValues, getRandomValues_,
-        js_getSubtle, getSubtle, js_getWebkitSubtle, getWebkitSubtle,
-        Crypto(..), gTypeCrypto)
+       (js_getRandomValues, js_randomUUID, js_getSubtle, getRandomValues, getRandomValues_, randomUUID, randomUUID_, getSubtle, Crypto(..), gTypeCrypto)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2) => { return $1[\"getRandomValues\"]($2); })"
-        js_getRandomValues ::
-        Crypto -> ArrayBufferView -> IO ArrayBufferView
+        js_getRandomValues :: Crypto -> ArrayBufferView -> IO ArrayBufferView
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/getRandomValues MDN Crypto.getRandomValues documentation>
+getRandomValues :: (MonadDOM m, IsArrayBufferView array) => Crypto -> array -> m ArrayBufferView
+getRandomValues self array = liftDOM ((js_getRandomValues (self) (Types.toArrayBufferView array)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
-getRandomValues ::
-                (MonadIO m, IsArrayBufferView array) =>
-                  Crypto -> array -> m ArrayBufferView
-getRandomValues self array
-  = liftIO (js_getRandomValues self (toArrayBufferView array))
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/getRandomValues MDN Crypto.getRandomValues documentation>
+getRandomValues_ :: (MonadDOM m, IsArrayBufferView array) => Crypto -> array -> m ()
+getRandomValues_ self array = liftDOM (void ((js_getRandomValues (self) (Types.toArrayBufferView array))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
-getRandomValues_ ::
-                 (MonadIO m, IsArrayBufferView array) => Crypto -> array -> m ()
-getRandomValues_ self array
-  = liftIO (void (js_getRandomValues self (toArrayBufferView array)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"subtle\"]; })" js_getSubtle ::
-        Crypto -> IO SubtleCrypto
+foreign import javascript safe "(($1) => { return $1[\"randomUUID\"](); })"
+        js_randomUUID :: Crypto -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID MDN Crypto.randomUUID documentation>
+randomUUID :: (MonadDOM m, FromJSString result) => Crypto -> m result
+randomUUID self = liftDOM ((fromJSString <$> (js_randomUUID (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.subtle Mozilla Crypto.subtle documentation> 
-getSubtle :: (MonadIO m) => Crypto -> m SubtleCrypto
-getSubtle self = liftIO (js_getSubtle self)
- 
-foreign import javascript safe "(($1) => { return $1[\"webkitSubtle\"]; })"
-        js_getWebkitSubtle :: Crypto -> IO WebKitSubtleCrypto
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID MDN Crypto.randomUUID documentation>
+randomUUID_ :: (MonadDOM m) => Crypto -> m ()
+randomUUID_ self = liftDOM (void ((js_randomUUID (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
-getWebkitSubtle :: (MonadIO m) => Crypto -> m WebKitSubtleCrypto
-getWebkitSubtle self = liftIO (js_getWebkitSubtle self)
+foreign import javascript unsafe "(($1) => { return $1[\"subtle\"]; })"
+        js_getSubtle :: Crypto -> IO SubtleCrypto
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/subtle MDN Crypto.subtle documentation>
+getSubtle :: (MonadDOM m) => Crypto -> m SubtleCrypto
+getSubtle self = liftDOM ((js_getSubtle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs b/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
@@ -1,57 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CryptoKey
-       (js_getType, getType, js_getExtractable, getExtractable,
-        js_getAlgorithm, getAlgorithm, js_getUsages, getUsages,
-        CryptoKey(..), gTypeCryptoKey)
+       (js_getType, js_getExtractable, js_getAlgorithm, js_getUsages, getType, getExtractable, getAlgorithm, getUsages, CryptoKey(..), gTypeCryptoKey)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        CryptoKey -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.type Mozilla CryptoKey.type documentation> 
-getType :: (MonadIO m) => CryptoKey -> m KeyType
-getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"extractable\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: CryptoKey -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/type MDN CryptoKey.type documentation>
+getType :: (MonadDOM m) => CryptoKey -> m KeyType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"extractable\"]; })"
         js_getExtractable :: CryptoKey -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable MDN CryptoKey.extractable documentation>
+getExtractable :: (MonadDOM m) => CryptoKey -> m Bool
+getExtractable self = liftDOM ((js_getExtractable (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.extractable Mozilla CryptoKey.extractable documentation> 
-getExtractable :: (MonadIO m) => CryptoKey -> m Bool
-getExtractable self = liftIO (js_getExtractable self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"algorithm\"]; })"
         js_getAlgorithm :: CryptoKey -> IO GObject
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
-getAlgorithm :: (MonadIO m) => CryptoKey -> m GObject
-getAlgorithm self = liftIO (js_getAlgorithm self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"usages\"]; })" js_getUsages ::
-        CryptoKey -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm MDN CryptoKey.algorithm documentation>
+getAlgorithm :: (MonadDOM m) => CryptoKey -> m GObject
+getAlgorithm self = liftDOM ((js_getAlgorithm (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.usages Mozilla CryptoKey.usages documentation> 
-getUsages :: (MonadIO m) => CryptoKey -> m [CryptoKeyUsage]
-getUsages self
-  = liftIO ((js_getUsages self) >>= fromJSValUnchecked)
+foreign import javascript unsafe "(($1) => { return $1[\"usages\"]; })"
+        js_getUsages :: CryptoKey -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/usages MDN CryptoKey.usages documentation>
+getUsages :: (MonadDOM m) => CryptoKey -> m GObject
+getUsages self = liftDOM ((js_getUsages (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CryptoKeyPair.hs b/src/GHCJS/DOM/JSFFI/Generated/CryptoKeyPair.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CryptoKeyPair.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CryptoKeyPair
+       (js_newCryptoKeyPair, js_setPublicKey, js_getPublicKey, js_setPrivateKey, js_getPrivateKey, newCryptoKeyPair, setPublicKey, getPublicKey, getPublicKeyUnsafe, getPublicKeyUnchecked, setPrivateKey, getPrivateKey, getPrivateKeyUnsafe, getPrivateKeyUnchecked, CryptoKeyPair(..), gTypeCryptoKeyPair)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCryptoKeyPair :: IO CryptoKeyPair
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair CryptoKeyPair specification>
+newCryptoKeyPair :: (MonadDOM m) => m CryptoKeyPair
+newCryptoKeyPair = liftDOM ((js_newCryptoKeyPair))
+
+foreign import javascript safe "(($1, $2) => { $1[\"publicKey\"] = $2; })"
+        js_setPublicKey :: CryptoKeyPair -> CryptoKey -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-publicKey CryptoKeyPair.publicKey specification>
+setPublicKey :: (MonadDOM m) => CryptoKeyPair -> CryptoKey -> m ()
+setPublicKey self val = liftDOM (void ((js_setPublicKey (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"publicKey\"]; })"
+        js_getPublicKey :: CryptoKeyPair -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-publicKey CryptoKeyPair.publicKey specification>
+getPublicKey :: (MonadDOM m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPublicKey self = liftDOM (((js_getPublicKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-publicKey CryptoKeyPair.publicKey specification>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => CryptoKeyPair -> m CryptoKey
+getPublicKeyUnsafe self = liftDOM ((((js_getPublicKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-publicKey CryptoKeyPair.publicKey specification>
+getPublicKeyUnchecked :: (MonadDOM m) => CryptoKeyPair -> m CryptoKey
+getPublicKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getPublicKey (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"privateKey\"] = $2; })"
+        js_setPrivateKey :: CryptoKeyPair -> CryptoKey -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-privateKey CryptoKeyPair.privateKey specification>
+setPrivateKey :: (MonadDOM m) => CryptoKeyPair -> CryptoKey -> m ()
+setPrivateKey self val = liftDOM (void ((js_setPrivateKey (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"privateKey\"]; })"
+        js_getPrivateKey :: CryptoKeyPair -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-privateKey CryptoKeyPair.privateKey specification>
+getPrivateKey :: (MonadDOM m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPrivateKey self = liftDOM (((js_getPrivateKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-privateKey CryptoKeyPair.privateKey specification>
+getPrivateKeyUnsafe :: (MonadDOM m, HasCallStack) => CryptoKeyPair -> m CryptoKey
+getPrivateKeyUnsafe self = liftDOM ((((js_getPrivateKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-privateKey CryptoKeyPair.privateKey specification>
+getPrivateKeyUnchecked :: (MonadDOM m) => CryptoKeyPair -> m CryptoKey
+getPrivateKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrivateKey (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CurrentUserDetailsOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/CurrentUserDetailsOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CurrentUserDetailsOptions.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CurrentUserDetailsOptions
+       (js_newCurrentUserDetailsOptions, js_setRpId, js_getRpId, js_setUserId, js_getUserId, js_setName, js_getName, js_setDisplayName, js_getDisplayName, newCurrentUserDetailsOptions, setRpId, getRpId, setUserId, getUserId, setName, getName, setDisplayName, getDisplayName, CurrentUserDetailsOptions(..), gTypeCurrentUserDetailsOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"rpId\": $1, \"userId\": $2, \"name\": $3, \"displayName\": $4}); })"
+        js_newCurrentUserDetailsOptions :: JSString -> JSString -> JSString -> JSString -> IO CurrentUserDetailsOptions
+-- | <https://w3c.github.io/webauthn/#dictdef-currentuserdetailsoptions CurrentUserDetailsOptions specification>
+newCurrentUserDetailsOptions :: (MonadDOM m, ToJSString rpId, ToJSString userId, ToJSString name, ToJSString displayName) => rpId -> userId -> name -> displayName -> m CurrentUserDetailsOptions
+newCurrentUserDetailsOptions rpId userId name displayName = liftDOM ((js_newCurrentUserDetailsOptions (toJSString rpId) (toJSString userId) (toJSString name) (toJSString displayName)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rpId\"] = $2; })"
+        js_setRpId :: CurrentUserDetailsOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-rpid CurrentUserDetailsOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setRpId self val = liftDOM (void ((js_setRpId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rpId\"]; })"
+        js_getRpId :: CurrentUserDetailsOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-rpid CurrentUserDetailsOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getRpId self = liftDOM ((fromJSString <$> (js_getRpId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"userId\"] = $2; })"
+        js_setUserId :: CurrentUserDetailsOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-userid CurrentUserDetailsOptions.userId specification>
+setUserId :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setUserId self val = liftDOM (void ((js_setUserId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userId\"]; })"
+        js_getUserId :: CurrentUserDetailsOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-userid CurrentUserDetailsOptions.userId specification>
+getUserId :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getUserId self = liftDOM ((fromJSString <$> (js_getUserId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: CurrentUserDetailsOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-name CurrentUserDetailsOptions.name specification>
+setName :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: CurrentUserDetailsOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-name CurrentUserDetailsOptions.name specification>
+getName :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayName\"] = $2; })"
+        js_setDisplayName :: CurrentUserDetailsOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-displayname CurrentUserDetailsOptions.displayName specification>
+setDisplayName :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setDisplayName self val = liftDOM (void ((js_setDisplayName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayName\"]; })"
+        js_getDisplayName :: CurrentUserDetailsOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-displayname CurrentUserDetailsOptions.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getDisplayName self = liftDOM ((fromJSString <$> (js_getDisplayName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomElementConstructor.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomElementConstructor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomElementConstructor.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CustomElementConstructor
+       (newCustomElementConstructor, newCustomElementConstructorSync, newCustomElementConstructorAsync, CustomElementConstructor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback, asyncCallback)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newCustomElementConstructor :: (MonadDOM m) => (IO ()) -> m CustomElementConstructor
+newCustomElementConstructor callback = liftDOM ((CustomElementConstructor . coerce) <$> syncCallback ContinueAsync callback)
+
+newCustomElementConstructorSync :: (MonadDOM m) => (IO ()) -> m CustomElementConstructor
+newCustomElementConstructorSync callback = liftDOM ((CustomElementConstructor . coerce) <$> syncCallback ThrowWouldBlock callback)
+
+newCustomElementConstructorAsync :: (MonadDOM m) => (IO ()) -> m CustomElementConstructor
+newCustomElementConstructorAsync callback = liftDOM ((CustomElementConstructor . coerce) <$> asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
@@ -1,66 +1,85 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CustomElementRegistry
-       (js_define, define, js_get, get, get_, js_whenDefined, whenDefined,
-        CustomElementRegistry(..), gTypeCustomElementRegistry)
+       (js_newCustomElementRegistry, js_define, js_define', js_get, js_getName, js_initialize, js_upgrade, js_whenDefined, newCustomElementRegistry, define, define', get, get_, getName, getName_, getNameUnsafe, getNameUnchecked, initialize, upgrade, whenDefined, whenDefined_, CustomElementRegistry(..), gTypeCustomElementRegistry)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"define\"]($2, $3); })" js_define
-        :: CustomElementRegistry -> JSString -> Function -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.define Mozilla CustomElementRegistry.define documentation> 
-define ::
-       (MonadIO m, ToJSString name, IsFunction constructor) =>
-         CustomElementRegistry -> name -> constructor -> m ()
-define self name constructor
-  = liftIO
-      (js_define self (toJSString name) (toFunction constructor))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
-        CustomElementRegistry -> JSString -> IO JSVal
+foreign import javascript safe "(() => { return new globalThis[\"CustomElementRegistry\"](); })"
+        js_newCustomElementRegistry :: IO CustomElementRegistry
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/CustomElementRegistry MDN CustomElementRegistry. documentation>
+newCustomElementRegistry :: (MonadDOM m) => m CustomElementRegistry
+newCustomElementRegistry = liftDOM ((js_newCustomElementRegistry))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.get Mozilla CustomElementRegistry.get documentation> 
-get ::
-    (MonadIO m, ToJSString name) =>
-      CustomElementRegistry -> name -> m JSVal
-get self name = liftIO (js_get self (toJSString name))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"define\"]($2, $3); })"
+        js_define :: CustomElementRegistry -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/define MDN CustomElementRegistry.define documentation>
+define :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> CustomElementConstructor -> m ()
+define self name constructor = liftDOM (void (((toJSVal constructor) >>= \a3' -> js_define (self) (toJSString name) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.get Mozilla CustomElementRegistry.get documentation> 
-get_ ::
-     (MonadIO m, ToJSString name) =>
-       CustomElementRegistry -> name -> m ()
-get_ self name = liftIO (void (js_get self (toJSString name)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"whenDefined\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"define\"]($2, $3, $4); })"
+        js_define' :: CustomElementRegistry -> JSString -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/define MDN CustomElementRegistry.define documentation>
+define' :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> CustomElementConstructor -> Maybe ElementDefinitionOptions -> m ()
+define' self name constructor options = liftDOM (void (((toJSVal constructor) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_define' (self) (toJSString name) a3' a4')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: CustomElementRegistry -> JSString -> IO CustomElementConstructorOrUndefined
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/get MDN CustomElementRegistry.get documentation>
+get :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m CustomElementConstructorOrUndefined
+get self name = liftDOM ((js_get (self) (toJSString name)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/get MDN CustomElementRegistry.get documentation>
+get_ :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m ()
+get_ self name = liftDOM (void ((js_get (self) (toJSString name))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getName\"]($2); })"
+        js_getName :: CustomElementRegistry -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/getName MDN CustomElementRegistry.getName documentation>
+getName :: (MonadDOM m, FromJSString result) => CustomElementRegistry -> CustomElementConstructor -> m (Maybe result)
+getName self constructor = liftDOM (((fromMaybeJSString . Nullable) <$> ((toJSVal constructor) >>= \a2' -> js_getName (self) a2')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/getName MDN CustomElementRegistry.getName documentation>
+getName_ :: (MonadDOM m) => CustomElementRegistry -> CustomElementConstructor -> m ()
+getName_ self constructor = liftDOM (void (((toJSVal constructor) >>= \a2' -> js_getName (self) a2')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/getName MDN CustomElementRegistry.getName documentation>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CustomElementRegistry -> CustomElementConstructor -> m result
+getNameUnsafe self constructor = liftDOM ((((fromMaybeJSString . Nullable) <$> ((toJSVal constructor) >>= \a2' -> js_getName (self) a2')) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/getName MDN CustomElementRegistry.getName documentation>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => CustomElementRegistry -> CustomElementConstructor -> m result
+getNameUnchecked self constructor = liftDOM ((pFromJSVal <$> ((toJSVal constructor) >>= \a2' -> js_getName (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: CustomElementRegistry -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/initialize MDN CustomElementRegistry.initialize documentation>
+initialize :: (MonadDOM m, IsNode root) => CustomElementRegistry -> root -> m ()
+initialize self root = liftDOM (void ((js_initialize (self) (Types.toNode root))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"upgrade\"]($2); })"
+        js_upgrade :: CustomElementRegistry -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/upgrade MDN CustomElementRegistry.upgrade documentation>
+upgrade :: (MonadDOM m, IsNode root) => CustomElementRegistry -> root -> m ()
+upgrade self root = liftDOM (void ((js_upgrade (self) (Types.toNode root))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"whenDefined\"]($2); })"
         js_whenDefined :: CustomElementRegistry -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/whenDefined MDN CustomElementRegistry.whenDefined documentation>
+whenDefined :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m JSVal
+whenDefined self name = liftDOM ((js_whenDefined (self) (toJSString name)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.whenDefined Mozilla CustomElementRegistry.whenDefined documentation> 
-whenDefined ::
-            (MonadIO m, ToJSString name) =>
-              CustomElementRegistry -> name -> m ()
-whenDefined self name
-  = liftIO
-      ((js_whenDefined self (toJSString name)) >>=
-         maybeThrowPromiseRejected)
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/whenDefined MDN CustomElementRegistry.whenDefined documentation>
+whenDefined_ :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m ()
+whenDefined_ self name = liftDOM (void ((js_whenDefined (self) (toJSString name))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
@@ -1,63 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.CustomEvent
-       (js_newCustomEvent, newCustomEvent, js_initCustomEvent,
-        initCustomEvent, js_getDetail, getDetail, CustomEvent(..),
-        gTypeCustomEvent)
+       (js_newCustomEvent, js_initCustomEvent, js_getDetail, newCustomEvent, initCustomEvent, getDetail, CustomEvent(..), gTypeCustomEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"CustomEvent\"]($1,\n$2); })" js_newCustomEvent ::
-        JSString -> Optional CustomEventInit -> IO CustomEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation> 
-newCustomEvent ::
-               (MonadIO m, ToJSString type') =>
-                 type' -> Maybe CustomEventInit -> m CustomEvent
-newCustomEvent type' eventInitDict
-  = liftIO
-      (js_newCustomEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"initCustomEvent\"]($2, $3,\n$4, $5); })" js_initCustomEvent ::
-        CustomEvent -> JSString -> Bool -> Bool -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"CustomEvent\"]($1, $2); })"
+        js_newCustomEvent :: JSString -> JSVal -> IO CustomEvent
+-- | <https://developer.mozilla.org/docs/Web/API/CustomEvent/CustomEvent MDN CustomEvent. documentation>
+newCustomEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe CustomEventInit -> m CustomEvent
+newCustomEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newCustomEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.initCustomEvent Mozilla CustomEvent.initCustomEvent documentation> 
-initCustomEvent ::
-                (MonadIO m, ToJSString type', ToJSVal detail) =>
-                  CustomEvent -> type' -> Bool -> Bool -> Maybe detail -> m ()
-initCustomEvent self type' bubbles cancelable detail
-  = liftIO
-      (mapM toJSVal detail >>=
-         \ detail' ->
-           js_initCustomEvent self (toJSString type') bubbles cancelable
-             (maybeToOptional detail'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })" js_getDetail ::
-        CustomEvent -> IO JSVal
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"initCustomEvent\"]($2, $3, $4, $5); })"
+        js_initCustomEvent :: CustomEvent -> JSString -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/CustomEvent/initCustomEvent MDN CustomEvent.initCustomEvent documentation>
+initCustomEvent :: (MonadDOM m, ToJSString type') => CustomEvent -> type' -> Maybe Bool -> Maybe Bool -> JSVal -> m ()
+initCustomEvent self type' bubbles cancelable detail = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubbles) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelable) >>= \a4' -> js_initCustomEvent (self) (toJSString type') a3' a4' (detail))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.detail Mozilla CustomEvent.detail documentation> 
-getDetail :: (MonadIO m) => CustomEvent -> m JSVal
-getDetail self = liftIO (js_getDetail self)
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: CustomEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CustomEvent/detail MDN CustomEvent.detail documentation>
+getDetail :: (MonadDOM m) => CustomEvent -> m JSVal
+getDetail self = liftDOM ((js_getDetail (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CustomEventInit
+       (js_newCustomEventInit, js_setDetail, js_getDetail, newCustomEventInit, setDetail, getDetail, CustomEventInit(..), gTypeCustomEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newCustomEventInit :: IO CustomEventInit
+-- | <https://dom.spec.whatwg.org/#dictdef-customeventinit CustomEventInit specification>
+newCustomEventInit :: (MonadDOM m) => m CustomEventInit
+newCustomEventInit = liftDOM ((js_newCustomEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"detail\"] = $2; })"
+        js_setDetail :: CustomEventInit -> JSVal -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-customeventinit-detail CustomEventInit.detail specification>
+setDetail :: (MonadDOM m) => CustomEventInit -> JSVal -> m ()
+setDetail self val = liftDOM (void ((js_setDetail (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: CustomEventInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-customeventinit-detail CustomEventInit.detail specification>
+getDetail :: (MonadDOM m) => CustomEventInit -> m JSVal
+getDetail self = liftDOM ((js_getDetail (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomStateSet.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomStateSet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomStateSet.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.CustomStateSet
+       (CustomStateSet(..), gTypeCustomStateSet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs
+++ /dev/null
@@ -1,47 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.DOMError
-       (js_getName, getName, js_getMessage, getMessage, DOMError(..),
-        gTypeDOMError, IsDOMError, toDOMError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        DOMError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.name Mozilla DOMError.name documentation> 
-getName ::
-        (MonadIO m, IsDOMError self, FromJSString result) =>
-          self -> m result
-getName self
-  = liftIO (fromJSString <$> (js_getName (toDOMError self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        DOMError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.message Mozilla DOMError.message documentation> 
-getMessage ::
-           (MonadIO m, IsDOMError self, FromJSString result) =>
-             self -> m result
-getMessage self
-  = liftIO (fromJSString <$> (js_getMessage (toDOMError self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
@@ -1,113 +1,91 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webidl (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMException
-       (js_newDOMException, newDOMException, js_toString, toString,
-        toString_, pattern INDEX_SIZE_ERR, pattern DOMSTRING_SIZE_ERR,
-        pattern HIERARCHY_REQUEST_ERR, pattern WRONG_DOCUMENT_ERR,
-        pattern INVALID_CHARACTER_ERR, pattern NO_DATA_ALLOWED_ERR,
-        pattern NO_MODIFICATION_ALLOWED_ERR, pattern NOT_FOUND_ERR,
-        pattern NOT_SUPPORTED_ERR, pattern INUSE_ATTRIBUTE_ERR,
-        pattern INVALID_STATE_ERR, pattern SYNTAX_ERR,
-        pattern INVALID_MODIFICATION_ERR, pattern NAMESPACE_ERR,
-        pattern INVALID_ACCESS_ERR, pattern VALIDATION_ERR,
-        pattern TYPE_MISMATCH_ERR, pattern SECURITY_ERR,
-        pattern NETWORK_ERR, pattern ABORT_ERR, pattern URL_MISMATCH_ERR,
-        pattern QUOTA_EXCEEDED_ERR, pattern TIMEOUT_ERR,
-        pattern INVALID_NODE_TYPE_ERR, pattern DATA_CLONE_ERR, js_getCode,
-        getCode, js_getName, getName, js_getMessage, getMessage,
-        DOMException(..), gTypeDOMException)
+       (js_newDOMException, js_getName, js_getMessage, js_getCode, newDOMException, getName, getMessage, getCode, pattern INDEX_SIZE_ERR, pattern DOMSTRING_SIZE_ERR, pattern HIERARCHY_REQUEST_ERR, pattern WRONG_DOCUMENT_ERR, pattern INVALID_CHARACTER_ERR, pattern NO_DATA_ALLOWED_ERR, pattern NO_MODIFICATION_ALLOWED_ERR, pattern NOT_FOUND_ERR, pattern NOT_SUPPORTED_ERR, pattern INUSE_ATTRIBUTE_ERR, pattern INVALID_STATE_ERR, pattern SYNTAX_ERR, pattern INVALID_MODIFICATION_ERR, pattern NAMESPACE_ERR, pattern INVALID_ACCESS_ERR, pattern VALIDATION_ERR, pattern TYPE_MISMATCH_ERR, pattern SECURITY_ERR, pattern NETWORK_ERR, pattern ABORT_ERR, pattern URL_MISMATCH_ERR, pattern QUOTA_EXCEEDED_ERR, pattern TIMEOUT_ERR, pattern INVALID_NODE_TYPE_ERR, pattern DATA_CLONE_ERR, DOMException(..), gTypeDOMException, IsDOMException, toDOMException)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"DOMException\"]($1,\n$2); })" js_newDOMException ::
-        Optional JSString -> Optional JSString -> IO DOMException
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException Mozilla DOMException documentation> 
-newDOMException ::
-                (MonadIO m, ToJSString message, ToJSString name) =>
-                  Maybe message -> Maybe name -> m DOMException
-newDOMException message name
-  = liftIO
-      (js_newDOMException (toOptionalJSString message)
-         (toOptionalJSString name))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: DOMException -> IO JSString
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"DOMException\"]($1, $2); })"
+        js_newDOMException :: (Optional JSString) -> (Optional JSString) -> IO DOMException
+-- | <https://developer.mozilla.org/docs/Web/API/DOMException/DOMException MDN DOMException. documentation>
+newDOMException :: (MonadDOM m, ToJSString message, ToJSString name) => Maybe message -> Maybe name -> m DOMException
+newDOMException message name = liftDOM ((js_newDOMException (toOptionalJSString message) (toOptionalJSString name)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.toString Mozilla DOMException.toString documentation> 
-toString ::
-         (MonadIO m, FromJSString result) => DOMException -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: DOMException -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DOMException/name MDN DOMException.name documentation>
+getName :: (MonadDOM m, IsDOMException self, FromJSString result) => self -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName ((Types.toDOMException self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.toString Mozilla DOMException.toString documentation> 
-toString_ :: (MonadIO m) => DOMException -> m ()
-toString_ self = liftIO (void (js_toString self))
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: DOMException -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DOMException/message MDN DOMException.message documentation>
+getMessage :: (MonadDOM m, IsDOMException self, FromJSString result) => self -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage ((Types.toDOMException self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: DOMException -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/DOMException/code MDN DOMException.code documentation>
+getCode :: (MonadDOM m, IsDOMException self) => self -> m Word
+getCode self = liftDOM ((js_getCode ((Types.toDOMException self))))
+
 pattern INDEX_SIZE_ERR = 1
+
 pattern DOMSTRING_SIZE_ERR = 2
+
 pattern HIERARCHY_REQUEST_ERR = 3
+
 pattern WRONG_DOCUMENT_ERR = 4
+
 pattern INVALID_CHARACTER_ERR = 5
+
 pattern NO_DATA_ALLOWED_ERR = 6
+
 pattern NO_MODIFICATION_ALLOWED_ERR = 7
+
 pattern NOT_FOUND_ERR = 8
+
 pattern NOT_SUPPORTED_ERR = 9
+
 pattern INUSE_ATTRIBUTE_ERR = 10
+
 pattern INVALID_STATE_ERR = 11
+
 pattern SYNTAX_ERR = 12
+
 pattern INVALID_MODIFICATION_ERR = 13
+
 pattern NAMESPACE_ERR = 14
+
 pattern INVALID_ACCESS_ERR = 15
+
 pattern VALIDATION_ERR = 16
+
 pattern TYPE_MISMATCH_ERR = 17
+
 pattern SECURITY_ERR = 18
+
 pattern NETWORK_ERR = 19
+
 pattern ABORT_ERR = 20
+
 pattern URL_MISMATCH_ERR = 21
+
 pattern QUOTA_EXCEEDED_ERR = 22
-pattern TIMEOUT_ERR = 23
-pattern INVALID_NODE_TYPE_ERR = 24
-pattern DATA_CLONE_ERR = 25
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        DOMException -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.code Mozilla DOMException.code documentation> 
-getCode :: (MonadIO m) => DOMException -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        DOMException -> IO JSString
+pattern TIMEOUT_ERR = 23
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.name Mozilla DOMException.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => DOMException -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        DOMException -> IO JSString
+pattern INVALID_NODE_TYPE_ERR = 24
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.message Mozilla DOMException.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => DOMException -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
+pattern DATA_CLONE_ERR = 25
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
@@ -1,119 +1,57 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMImplementation
-       (js_createDocumentType, createDocumentType, createDocumentType_,
-        js_createDocument, createDocument, createDocument_,
-        js_createHTMLDocument, createHTMLDocument, createHTMLDocument_,
-        js_hasFeature, hasFeature, hasFeature_, DOMImplementation(..),
-        gTypeDOMImplementation)
+       (js_createDocument, js_createDocumentType, js_createHTMLDocument, js_hasFeature, createDocument, createDocument_, createDocumentType, createDocumentType_, createHTMLDocument, createHTMLDocument_, hasFeature, hasFeature_, DOMImplementation(..), gTypeDOMImplementation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4) => { return $1[\"createDocumentType\"]($2, $3,\n$4); })" js_createDocumentType ::
-        DOMImplementation ->
-          JSString -> JSString -> JSString -> IO DocumentType
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
-createDocumentType ::
-                   (MonadIO m, ToJSString qualifiedName, ToJSString publicId,
-                    ToJSString systemId) =>
-                     DOMImplementation ->
-                       qualifiedName -> publicId -> systemId -> m DocumentType
-createDocumentType self qualifiedName publicId systemId
-  = liftIO
-      (js_createDocumentType self (toJSString qualifiedName)
-         (toJSString publicId)
-         (toJSString systemId))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
-createDocumentType_ ::
-                    (MonadIO m, ToJSString qualifiedName, ToJSString publicId,
-                     ToJSString systemId) =>
-                      DOMImplementation -> qualifiedName -> publicId -> systemId -> m ()
-createDocumentType_ self qualifiedName publicId systemId
-  = liftIO
-      (void
-         (js_createDocumentType self (toJSString qualifiedName)
-            (toJSString publicId)
-            (toJSString systemId)))
- 
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createDocument\"]($2, $3, $4); })"
-        js_createDocument ::
-        DOMImplementation ->
-          Optional JSString ->
-            JSString -> Optional DocumentType -> IO XMLDocument
+        js_createDocument :: DOMImplementation -> (Nullable JSString) -> JSString -> JSVal -> IO XMLDocument
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/createDocument MDN DOMImplementation.createDocument documentation>
+createDocument :: (MonadDOM m, ToJSString namespace, ToJSString qualifiedName) => DOMImplementation -> Maybe namespace -> qualifiedName -> Maybe DocumentType -> m XMLDocument
+createDocument self namespace qualifiedName doctype = liftDOM (((toJSVal doctype) >>= \a4' -> js_createDocument (self) (toMaybeJSString namespace) (toJSString qualifiedName) a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
-createDocument ::
-               (MonadIO m, ToJSString namespaceURI, ToJSString qualifiedName) =>
-                 DOMImplementation ->
-                   Maybe namespaceURI ->
-                     qualifiedName -> Maybe DocumentType -> m XMLDocument
-createDocument self namespaceURI qualifiedName doctype
-  = liftIO
-      (js_createDocument self (toOptionalJSString namespaceURI)
-         (toJSString qualifiedName)
-         (maybeToOptional doctype))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/createDocument MDN DOMImplementation.createDocument documentation>
+createDocument_ :: (MonadDOM m, ToJSString namespace, ToJSString qualifiedName) => DOMImplementation -> Maybe namespace -> qualifiedName -> Maybe DocumentType -> m ()
+createDocument_ self namespace qualifiedName doctype = liftDOM (void (((toJSVal doctype) >>= \a4' -> js_createDocument (self) (toMaybeJSString namespace) (toJSString qualifiedName) a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
-createDocument_ ::
-                (MonadIO m, ToJSString namespaceURI, ToJSString qualifiedName) =>
-                  DOMImplementation ->
-                    Maybe namespaceURI -> qualifiedName -> Maybe DocumentType -> m ()
-createDocument_ self namespaceURI qualifiedName doctype
-  = liftIO
-      (void
-         (js_createDocument self (toOptionalJSString namespaceURI)
-            (toJSString qualifiedName)
-            (maybeToOptional doctype)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createHTMLDocument\"]($2); })"
-        js_createHTMLDocument ::
-        DOMImplementation -> Optional JSString -> IO HTMLDocument
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createDocumentType\"]($2, $3, $4); })"
+        js_createDocumentType :: DOMImplementation -> JSString -> JSString -> JSString -> IO DocumentType
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/createDocumentType MDN DOMImplementation.createDocumentType documentation>
+createDocumentType :: (MonadDOM m, ToJSString name, ToJSString publicId, ToJSString systemId) => DOMImplementation -> name -> publicId -> systemId -> m DocumentType
+createDocumentType self name publicId systemId = liftDOM ((js_createDocumentType (self) (toJSString name) (toJSString publicId) (toJSString systemId)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
-createHTMLDocument ::
-                   (MonadIO m, ToJSString title) =>
-                     DOMImplementation -> Maybe title -> m HTMLDocument
-createHTMLDocument self title
-  = liftIO (js_createHTMLDocument self (toOptionalJSString title))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/createDocumentType MDN DOMImplementation.createDocumentType documentation>
+createDocumentType_ :: (MonadDOM m, ToJSString name, ToJSString publicId, ToJSString systemId) => DOMImplementation -> name -> publicId -> systemId -> m ()
+createDocumentType_ self name publicId systemId = liftDOM (void ((js_createDocumentType (self) (toJSString name) (toJSString publicId) (toJSString systemId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
-createHTMLDocument_ ::
-                    (MonadIO m, ToJSString title) =>
-                      DOMImplementation -> Maybe title -> m ()
-createHTMLDocument_ self title
-  = liftIO
-      (void (js_createHTMLDocument self (toOptionalJSString title)))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"hasFeature\"]() ? 1 : 0); })"
-        js_hasFeature :: DOMImplementation -> IO Bool
+foreign import javascript safe "(($1, $2) => { return $1[\"createHTMLDocument\"]($2); })"
+        js_createHTMLDocument :: DOMImplementation -> (Optional JSString) -> IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/createHTMLDocument MDN DOMImplementation.createHTMLDocument documentation>
+createHTMLDocument :: (MonadDOM m, ToJSString title) => DOMImplementation -> Maybe title -> m Document
+createHTMLDocument self title = liftDOM ((js_createHTMLDocument (self) (toOptionalJSString title)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
-hasFeature :: (MonadIO m) => DOMImplementation -> m Bool
-hasFeature self = liftIO (js_hasFeature self)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/createHTMLDocument MDN DOMImplementation.createHTMLDocument documentation>
+createHTMLDocument_ :: (MonadDOM m, ToJSString title) => DOMImplementation -> Maybe title -> m ()
+createHTMLDocument_ self title = liftDOM (void ((js_createHTMLDocument (self) (toOptionalJSString title))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
-hasFeature_ :: (MonadIO m) => DOMImplementation -> m ()
-hasFeature_ self = liftIO (void (js_hasFeature self))
+foreign import javascript safe "(($1) => { return $1[\"hasFeature\"](); })"
+        js_hasFeature :: DOMImplementation -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/hasFeature MDN DOMImplementation.hasFeature documentation>
+hasFeature :: (MonadDOM m) => DOMImplementation -> m Bool
+hasFeature self = liftDOM ((js_hasFeature (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/hasFeature MDN DOMImplementation.hasFeature documentation>
+hasFeature_ :: (MonadDOM m) => DOMImplementation -> m ()
+hasFeature_ self = liftDOM (void ((js_hasFeature (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMMatrix.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrix.hs
@@ -0,0 +1,437 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMMatrix
+       (js_newDOMMatrix, js_invertSelf, js_multiplySelf, js_preMultiplySelf, js_rotateAxisAngleSelf, js_rotateFromVectorSelf, js_rotateSelf, js_scale3dSelf, js_scaleSelf, js_setMatrixValue, js_skewXSelf, js_skewYSelf, js_translateSelf, js_fromFloat32Array, js_fromFloat64Array, js_fromMatrix, js_setA, js_getA, js_setB, js_getB, js_setC, js_getC, js_setD, js_getD, js_setE, js_getE, js_setF, js_getF, js_setM11, js_getM11, js_setM12, js_getM12, js_setM13, js_getM13, js_setM14, js_getM14, js_setM21, js_getM21, js_setM22, js_getM22, js_setM23, js_getM23, js_setM24, js_getM24, js_setM31, js_getM31, js_setM32, js_getM32, js_setM33, js_getM33, js_setM34, js_getM34, js_setM41, js_getM41, js_setM42, js_getM42, js_setM43, js_getM43, js_setM44, js_getM44, newDOMMatrix, invertSelf, invertSelf_, multiplySelf, multiplySelf_, preMultiplySelf, preMultiplySelf_, rotateAxisAngleSelf, rotateAxisAngleSelf_, rotateFromVectorSelf, rotateFromVectorSelf_, rotateSelf, rotateSelf_, scale3dSelf, scale3dSelf_, scaleSelf, scaleSelf_, setMatrixValue, setMatrixValue_, skewXSelf, skewXSelf_, skewYSelf, skewYSelf_, translateSelf, translateSelf_, fromFloat32Array, fromFloat32Array_, fromFloat64Array, fromFloat64Array_, fromMatrix, fromMatrix_, setA, getA, setB, getB, setC, getC, setD, getD, setE, getE, setF, getF, setM11, getM11, setM12, getM12, setM13, getM13, setM14, getM14, setM21, getM21, setM22, getM22, setM23, getM23, setM24, getM24, setM31, getM31, setM32, getM32, setM33, getM33, setM34, getM34, setM41, getM41, setM42, getM42, setM43, getM43, setM44, getM44, DOMMatrix(..), gTypeDOMMatrix)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"DOMMatrix\"]($1); })"
+        js_newDOMMatrix :: JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/DOMMatrix MDN DOMMatrix. documentation>
+newDOMMatrix :: (MonadDOM m, IsStringOrSequenceDouble init) => Maybe init -> m DOMMatrix
+newDOMMatrix init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a1' -> js_newDOMMatrix a1'))
+
+foreign import javascript safe "(($1) => { return $1[\"invertSelf\"](); })"
+        js_invertSelf :: DOMMatrix -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/invertSelf MDN DOMMatrix.invertSelf documentation>
+invertSelf :: (MonadDOM m) => DOMMatrix -> m DOMMatrix
+invertSelf self = liftDOM ((js_invertSelf (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/invertSelf MDN DOMMatrix.invertSelf documentation>
+invertSelf_ :: (MonadDOM m) => DOMMatrix -> m ()
+invertSelf_ self = liftDOM (void ((js_invertSelf (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"multiplySelf\"]($2); })"
+        js_multiplySelf :: DOMMatrix -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/multiplySelf MDN DOMMatrix.multiplySelf documentation>
+multiplySelf :: (MonadDOM m) => DOMMatrix -> Maybe DOMMatrixInit -> m DOMMatrix
+multiplySelf self other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a2' -> js_multiplySelf (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/multiplySelf MDN DOMMatrix.multiplySelf documentation>
+multiplySelf_ :: (MonadDOM m) => DOMMatrix -> Maybe DOMMatrixInit -> m ()
+multiplySelf_ self other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a2' -> js_multiplySelf (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"preMultiplySelf\"]($2); })"
+        js_preMultiplySelf :: DOMMatrix -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/preMultiplySelf MDN DOMMatrix.preMultiplySelf documentation>
+preMultiplySelf :: (MonadDOM m) => DOMMatrix -> Maybe DOMMatrixInit -> m DOMMatrix
+preMultiplySelf self other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a2' -> js_preMultiplySelf (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/preMultiplySelf MDN DOMMatrix.preMultiplySelf documentation>
+preMultiplySelf_ :: (MonadDOM m) => DOMMatrix -> Maybe DOMMatrixInit -> m ()
+preMultiplySelf_ self other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a2' -> js_preMultiplySelf (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"rotateAxisAngleSelf\"]($2, $3, $4, $5); })"
+        js_rotateAxisAngleSelf :: DOMMatrix -> JSVal -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/rotateAxisAngleSelf MDN DOMMatrix.rotateAxisAngleSelf documentation>
+rotateAxisAngleSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+rotateAxisAngleSelf self x y z angle = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal z) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal angle) >>= \a5' -> js_rotateAxisAngleSelf (self) a2' a3' a4' a5'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/rotateAxisAngleSelf MDN DOMMatrix.rotateAxisAngleSelf documentation>
+rotateAxisAngleSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+rotateAxisAngleSelf_ self x y z angle = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal z) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal angle) >>= \a5' -> js_rotateAxisAngleSelf (self) a2' a3' a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"rotateFromVectorSelf\"]($2, $3); })"
+        js_rotateFromVectorSelf :: DOMMatrix -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/rotateFromVectorSelf MDN DOMMatrix.rotateFromVectorSelf documentation>
+rotateFromVectorSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> m DOMMatrix
+rotateFromVectorSelf self x y = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> js_rotateFromVectorSelf (self) a2' a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/rotateFromVectorSelf MDN DOMMatrix.rotateFromVectorSelf documentation>
+rotateFromVectorSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> m ()
+rotateFromVectorSelf_ self x y = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> js_rotateFromVectorSelf (self) a2' a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"rotateSelf\"]($2, $3, $4); })"
+        js_rotateSelf :: DOMMatrix -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/rotateSelf MDN DOMMatrix.rotateSelf documentation>
+rotateSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+rotateSelf self rotX rotY rotZ = liftDOM (((P.maybe (P.return jsUndefined) toJSVal rotX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal rotY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal rotZ) >>= \a4' -> js_rotateSelf (self) a2' a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/rotateSelf MDN DOMMatrix.rotateSelf documentation>
+rotateSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+rotateSelf_ self rotX rotY rotZ = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal rotX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal rotY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal rotZ) >>= \a4' -> js_rotateSelf (self) a2' a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"scale3dSelf\"]($2, $3, $4, $5); })"
+        js_scale3dSelf :: DOMMatrix -> JSVal -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/scale3dSelf MDN DOMMatrix.scale3dSelf documentation>
+scale3dSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+scale3dSelf self scale originX originY originZ = liftDOM (((P.maybe (P.return jsUndefined) toJSVal scale) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a5' -> js_scale3dSelf (self) a2' a3' a4' a5'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/scale3dSelf MDN DOMMatrix.scale3dSelf documentation>
+scale3dSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+scale3dSelf_ self scale originX originY originZ = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal scale) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a5' -> js_scale3dSelf (self) a2' a3' a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"scaleSelf\"]($2, $3, $4, $5, $6, $7); })"
+        js_scaleSelf :: DOMMatrix -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/scaleSelf MDN DOMMatrix.scaleSelf documentation>
+scaleSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+scaleSelf self scaleX scaleY scaleZ originX originY originZ = liftDOM (((P.maybe (P.return jsUndefined) toJSVal scaleX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal scaleY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal scaleZ) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a6' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a7' -> js_scaleSelf (self) a2' a3' a4' a5' a6' a7'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/scaleSelf MDN DOMMatrix.scaleSelf documentation>
+scaleSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+scaleSelf_ self scaleX scaleY scaleZ originX originY originZ = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal scaleX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal scaleY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal scaleZ) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a6' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a7' -> js_scaleSelf (self) a2' a3' a4' a5' a6' a7')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setMatrixValue\"]($2); })"
+        js_setMatrixValue :: DOMMatrix -> JSString -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/setMatrixValue MDN DOMMatrix.setMatrixValue documentation>
+setMatrixValue :: (MonadDOM m, ToJSString transformList) => DOMMatrix -> transformList -> m DOMMatrix
+setMatrixValue self transformList = liftDOM ((js_setMatrixValue (self) (toJSString transformList)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/setMatrixValue MDN DOMMatrix.setMatrixValue documentation>
+setMatrixValue_ :: (MonadDOM m, ToJSString transformList) => DOMMatrix -> transformList -> m ()
+setMatrixValue_ self transformList = liftDOM (void ((js_setMatrixValue (self) (toJSString transformList))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"skewXSelf\"]($2); })"
+        js_skewXSelf :: DOMMatrix -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/skewXSelf MDN DOMMatrix.skewXSelf documentation>
+skewXSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> m DOMMatrix
+skewXSelf self sx = liftDOM (((P.maybe (P.return jsUndefined) toJSVal sx) >>= \a2' -> js_skewXSelf (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/skewXSelf MDN DOMMatrix.skewXSelf documentation>
+skewXSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> m ()
+skewXSelf_ self sx = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal sx) >>= \a2' -> js_skewXSelf (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"skewYSelf\"]($2); })"
+        js_skewYSelf :: DOMMatrix -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/skewYSelf MDN DOMMatrix.skewYSelf documentation>
+skewYSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> m DOMMatrix
+skewYSelf self sy = liftDOM (((P.maybe (P.return jsUndefined) toJSVal sy) >>= \a2' -> js_skewYSelf (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/skewYSelf MDN DOMMatrix.skewYSelf documentation>
+skewYSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> m ()
+skewYSelf_ self sy = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal sy) >>= \a2' -> js_skewYSelf (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"translateSelf\"]($2, $3, $4); })"
+        js_translateSelf :: DOMMatrix -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/translateSelf MDN DOMMatrix.translateSelf documentation>
+translateSelf :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+translateSelf self tx ty tz = liftDOM (((P.maybe (P.return jsUndefined) toJSVal tx) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal ty) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal tz) >>= \a4' -> js_translateSelf (self) a2' a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/translateSelf MDN DOMMatrix.translateSelf documentation>
+translateSelf_ :: (MonadDOM m) => DOMMatrix -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+translateSelf_ self tx ty tz = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal tx) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal ty) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal tz) >>= \a4' -> js_translateSelf (self) a2' a3' a4')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMMatrix\"][\"fromFloat32Array\"]($1); })"
+        js_fromFloat32Array :: Float32Array -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromFloat32Array_static MDN DOMMatrix.fromFloat32Array documentation>
+fromFloat32Array :: (MonadDOM m, IsFloat32Array array32) => array32 -> m DOMMatrix
+fromFloat32Array array32 = liftDOM ((js_fromFloat32Array (Types.toFloat32Array array32)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromFloat32Array_static MDN DOMMatrix.fromFloat32Array documentation>
+fromFloat32Array_ :: (MonadDOM m, IsFloat32Array array32) => array32 -> m ()
+fromFloat32Array_ array32 = liftDOM (void ((js_fromFloat32Array (Types.toFloat32Array array32))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMMatrix\"][\"fromFloat64Array\"]($1); })"
+        js_fromFloat64Array :: Float64Array -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromFloat64Array_static MDN DOMMatrix.fromFloat64Array documentation>
+fromFloat64Array :: (MonadDOM m, IsFloat64Array array64) => array64 -> m DOMMatrix
+fromFloat64Array array64 = liftDOM ((js_fromFloat64Array (Types.toFloat64Array array64)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromFloat64Array_static MDN DOMMatrix.fromFloat64Array documentation>
+fromFloat64Array_ :: (MonadDOM m, IsFloat64Array array64) => array64 -> m ()
+fromFloat64Array_ array64 = liftDOM (void ((js_fromFloat64Array (Types.toFloat64Array array64))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMMatrix\"][\"fromMatrix\"]($1); })"
+        js_fromMatrix :: JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromMatrix_static MDN DOMMatrix.fromMatrix documentation>
+fromMatrix :: (MonadDOM m) => Maybe DOMMatrixInit -> m DOMMatrix
+fromMatrix other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromMatrix a1'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromMatrix_static MDN DOMMatrix.fromMatrix documentation>
+fromMatrix_ :: (MonadDOM m) => Maybe DOMMatrixInit -> m ()
+fromMatrix_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromMatrix a1')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"a\"] = $2; })"
+        js_setA :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.a documentation>
+setA :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setA self val = liftDOM (void ((js_setA (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })"
+        js_getA :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.a documentation>
+getA :: (MonadDOM m) => DOMMatrix -> m Double
+getA self = liftDOM ((js_getA (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"b\"] = $2; })"
+        js_setB :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.b documentation>
+setB :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setB self val = liftDOM (void ((js_setB (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })"
+        js_getB :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.b documentation>
+getB :: (MonadDOM m) => DOMMatrix -> m Double
+getB self = liftDOM ((js_getB (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"c\"] = $2; })"
+        js_setC :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.c documentation>
+setC :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setC self val = liftDOM (void ((js_setC (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"c\"]; })"
+        js_getC :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.c documentation>
+getC :: (MonadDOM m) => DOMMatrix -> m Double
+getC self = liftDOM ((js_getC (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"d\"] = $2; })"
+        js_setD :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.d documentation>
+setD :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setD self val = liftDOM (void ((js_setD (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })"
+        js_getD :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.d documentation>
+getD :: (MonadDOM m) => DOMMatrix -> m Double
+getD self = liftDOM ((js_getD (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"e\"] = $2; })"
+        js_setE :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.e documentation>
+setE :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setE self val = liftDOM (void ((js_setE (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })"
+        js_getE :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.e documentation>
+getE :: (MonadDOM m) => DOMMatrix -> m Double
+getE self = liftDOM ((js_getE (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"f\"] = $2; })"
+        js_setF :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.f documentation>
+setF :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setF self val = liftDOM (void ((js_setF (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"f\"]; })"
+        js_getF :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.f documentation>
+getF :: (MonadDOM m) => DOMMatrix -> m Double
+getF self = liftDOM ((js_getF (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m11\"] = $2; })"
+        js_setM11 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m11 documentation>
+setM11 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM11 self val = liftDOM (void ((js_setM11 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m11\"]; })"
+        js_getM11 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m11 documentation>
+getM11 :: (MonadDOM m) => DOMMatrix -> m Double
+getM11 self = liftDOM ((js_getM11 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m12\"] = $2; })"
+        js_setM12 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m12 documentation>
+setM12 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM12 self val = liftDOM (void ((js_setM12 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m12\"]; })"
+        js_getM12 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m12 documentation>
+getM12 :: (MonadDOM m) => DOMMatrix -> m Double
+getM12 self = liftDOM ((js_getM12 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m13\"] = $2; })"
+        js_setM13 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m13 documentation>
+setM13 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM13 self val = liftDOM (void ((js_setM13 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m13\"]; })"
+        js_getM13 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m13 documentation>
+getM13 :: (MonadDOM m) => DOMMatrix -> m Double
+getM13 self = liftDOM ((js_getM13 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m14\"] = $2; })"
+        js_setM14 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m14 documentation>
+setM14 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM14 self val = liftDOM (void ((js_setM14 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m14\"]; })"
+        js_getM14 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m14 documentation>
+getM14 :: (MonadDOM m) => DOMMatrix -> m Double
+getM14 self = liftDOM ((js_getM14 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m21\"] = $2; })"
+        js_setM21 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m21 documentation>
+setM21 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM21 self val = liftDOM (void ((js_setM21 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m21\"]; })"
+        js_getM21 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m21 documentation>
+getM21 :: (MonadDOM m) => DOMMatrix -> m Double
+getM21 self = liftDOM ((js_getM21 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m22\"] = $2; })"
+        js_setM22 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m22 documentation>
+setM22 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM22 self val = liftDOM (void ((js_setM22 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m22\"]; })"
+        js_getM22 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m22 documentation>
+getM22 :: (MonadDOM m) => DOMMatrix -> m Double
+getM22 self = liftDOM ((js_getM22 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m23\"] = $2; })"
+        js_setM23 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m23 documentation>
+setM23 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM23 self val = liftDOM (void ((js_setM23 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m23\"]; })"
+        js_getM23 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m23 documentation>
+getM23 :: (MonadDOM m) => DOMMatrix -> m Double
+getM23 self = liftDOM ((js_getM23 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m24\"] = $2; })"
+        js_setM24 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m24 documentation>
+setM24 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM24 self val = liftDOM (void ((js_setM24 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m24\"]; })"
+        js_getM24 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m24 documentation>
+getM24 :: (MonadDOM m) => DOMMatrix -> m Double
+getM24 self = liftDOM ((js_getM24 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m31\"] = $2; })"
+        js_setM31 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m31 documentation>
+setM31 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM31 self val = liftDOM (void ((js_setM31 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m31\"]; })"
+        js_getM31 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m31 documentation>
+getM31 :: (MonadDOM m) => DOMMatrix -> m Double
+getM31 self = liftDOM ((js_getM31 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m32\"] = $2; })"
+        js_setM32 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m32 documentation>
+setM32 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM32 self val = liftDOM (void ((js_setM32 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m32\"]; })"
+        js_getM32 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m32 documentation>
+getM32 :: (MonadDOM m) => DOMMatrix -> m Double
+getM32 self = liftDOM ((js_getM32 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m33\"] = $2; })"
+        js_setM33 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m33 documentation>
+setM33 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM33 self val = liftDOM (void ((js_setM33 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m33\"]; })"
+        js_getM33 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m33 documentation>
+getM33 :: (MonadDOM m) => DOMMatrix -> m Double
+getM33 self = liftDOM ((js_getM33 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m34\"] = $2; })"
+        js_setM34 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m34 documentation>
+setM34 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM34 self val = liftDOM (void ((js_setM34 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m34\"]; })"
+        js_getM34 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m34 documentation>
+getM34 :: (MonadDOM m) => DOMMatrix -> m Double
+getM34 self = liftDOM ((js_getM34 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m41\"] = $2; })"
+        js_setM41 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m41 documentation>
+setM41 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM41 self val = liftDOM (void ((js_setM41 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m41\"]; })"
+        js_getM41 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m41 documentation>
+getM41 :: (MonadDOM m) => DOMMatrix -> m Double
+getM41 self = liftDOM ((js_getM41 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m42\"] = $2; })"
+        js_setM42 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m42 documentation>
+setM42 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM42 self val = liftDOM (void ((js_setM42 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m42\"]; })"
+        js_getM42 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m42 documentation>
+getM42 :: (MonadDOM m) => DOMMatrix -> m Double
+getM42 self = liftDOM ((js_getM42 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m43\"] = $2; })"
+        js_setM43 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m43 documentation>
+setM43 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM43 self val = liftDOM (void ((js_setM43 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m43\"]; })"
+        js_getM43 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m43 documentation>
+getM43 :: (MonadDOM m) => DOMMatrix -> m Double
+getM43 self = liftDOM ((js_getM43 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m44\"] = $2; })"
+        js_setM44 :: DOMMatrix -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m44 documentation>
+setM44 :: (MonadDOM m) => DOMMatrix -> Double -> m ()
+setM44 self val = liftDOM (void ((js_setM44 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m44\"]; })"
+        js_getM44 :: DOMMatrix -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m44 documentation>
+getM44 :: (MonadDOM m) => DOMMatrix -> m Double
+getM44 self = liftDOM ((js_getM44 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMMatrix2DInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrix2DInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrix2DInit.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMMatrix2DInit
+       (js_newDOMMatrix2DInit, js_setA, js_getA, js_setB, js_getB, js_setC, js_getC, js_setD, js_getD, js_setE, js_getE, js_setF, js_getF, js_setM11, js_getM11, js_setM12, js_getM12, js_setM21, js_getM21, js_setM22, js_getM22, js_setM41, js_getM41, js_setM42, js_getM42, newDOMMatrix2DInit, setA, getA, getAUnsafe, getAUnchecked, setB, getB, getBUnsafe, getBUnchecked, setC, getC, getCUnsafe, getCUnchecked, setD, getD, getDUnsafe, getDUnchecked, setE, getE, getEUnsafe, getEUnchecked, setF, getF, getFUnsafe, getFUnchecked, setM11, getM11, getM11Unsafe, getM11Unchecked, setM12, getM12, getM12Unsafe, getM12Unchecked, setM21, getM21, getM21Unsafe, getM21Unchecked, setM22, getM22, getM22Unsafe, getM22Unchecked, setM41, getM41, getM41Unsafe, getM41Unchecked, setM42, getM42, getM42Unsafe, getM42Unchecked, DOMMatrix2DInit(..), gTypeDOMMatrix2DInit, IsDOMMatrix2DInit, toDOMMatrix2DInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDOMMatrix2DInit :: IO DOMMatrix2DInit
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-dommatrix2dinit DOMMatrix2DInit specification>
+newDOMMatrix2DInit :: (MonadDOM m) => m DOMMatrix2DInit
+newDOMMatrix2DInit = liftDOM ((js_newDOMMatrix2DInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"a\"] = $2; })"
+        js_setA :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-a DOMMatrix2DInit.a specification>
+setA :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setA self val = liftDOM (void ((js_setA ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })"
+        js_getA :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-a DOMMatrix2DInit.a specification>
+getA :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getA self = liftDOM (((js_getA ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-a DOMMatrix2DInit.a specification>
+getAUnsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getAUnsafe self = liftDOM ((((js_getA ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-a DOMMatrix2DInit.a specification>
+getAUnchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getAUnchecked self = liftDOM ((pFromJSVal <$> (js_getA ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"b\"] = $2; })"
+        js_setB :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-b DOMMatrix2DInit.b specification>
+setB :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setB self val = liftDOM (void ((js_setB ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })"
+        js_getB :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-b DOMMatrix2DInit.b specification>
+getB :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getB self = liftDOM (((js_getB ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-b DOMMatrix2DInit.b specification>
+getBUnsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getBUnsafe self = liftDOM ((((js_getB ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-b DOMMatrix2DInit.b specification>
+getBUnchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getBUnchecked self = liftDOM ((pFromJSVal <$> (js_getB ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"c\"] = $2; })"
+        js_setC :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-c DOMMatrix2DInit.c specification>
+setC :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setC self val = liftDOM (void ((js_setC ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"c\"]; })"
+        js_getC :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-c DOMMatrix2DInit.c specification>
+getC :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getC self = liftDOM (((js_getC ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-c DOMMatrix2DInit.c specification>
+getCUnsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getCUnsafe self = liftDOM ((((js_getC ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-c DOMMatrix2DInit.c specification>
+getCUnchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getCUnchecked self = liftDOM ((pFromJSVal <$> (js_getC ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"d\"] = $2; })"
+        js_setD :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-d DOMMatrix2DInit.d specification>
+setD :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setD self val = liftDOM (void ((js_setD ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })"
+        js_getD :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-d DOMMatrix2DInit.d specification>
+getD :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getD self = liftDOM (((js_getD ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-d DOMMatrix2DInit.d specification>
+getDUnsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getDUnsafe self = liftDOM ((((js_getD ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-d DOMMatrix2DInit.d specification>
+getDUnchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getDUnchecked self = liftDOM ((pFromJSVal <$> (js_getD ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"e\"] = $2; })"
+        js_setE :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-e DOMMatrix2DInit.e specification>
+setE :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setE self val = liftDOM (void ((js_setE ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })"
+        js_getE :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-e DOMMatrix2DInit.e specification>
+getE :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getE self = liftDOM (((js_getE ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-e DOMMatrix2DInit.e specification>
+getEUnsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getEUnsafe self = liftDOM ((((js_getE ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-e DOMMatrix2DInit.e specification>
+getEUnchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getEUnchecked self = liftDOM ((pFromJSVal <$> (js_getE ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"f\"] = $2; })"
+        js_setF :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-f DOMMatrix2DInit.f specification>
+setF :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setF self val = liftDOM (void ((js_setF ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"f\"]; })"
+        js_getF :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-f DOMMatrix2DInit.f specification>
+getF :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getF self = liftDOM (((js_getF ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-f DOMMatrix2DInit.f specification>
+getFUnsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getFUnsafe self = liftDOM ((((js_getF ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-f DOMMatrix2DInit.f specification>
+getFUnchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getFUnchecked self = liftDOM ((pFromJSVal <$> (js_getF ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m11\"] = $2; })"
+        js_setM11 :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m11 DOMMatrix2DInit.m11 specification>
+setM11 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setM11 self val = liftDOM (void ((js_setM11 ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m11\"]; })"
+        js_getM11 :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m11 DOMMatrix2DInit.m11 specification>
+getM11 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM11 self = liftDOM (((js_getM11 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m11 DOMMatrix2DInit.m11 specification>
+getM11Unsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getM11Unsafe self = liftDOM ((((js_getM11 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m11 DOMMatrix2DInit.m11 specification>
+getM11Unchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getM11Unchecked self = liftDOM ((pFromJSVal <$> (js_getM11 ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m12\"] = $2; })"
+        js_setM12 :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m12 DOMMatrix2DInit.m12 specification>
+setM12 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setM12 self val = liftDOM (void ((js_setM12 ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m12\"]; })"
+        js_getM12 :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m12 DOMMatrix2DInit.m12 specification>
+getM12 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM12 self = liftDOM (((js_getM12 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m12 DOMMatrix2DInit.m12 specification>
+getM12Unsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getM12Unsafe self = liftDOM ((((js_getM12 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m12 DOMMatrix2DInit.m12 specification>
+getM12Unchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getM12Unchecked self = liftDOM ((pFromJSVal <$> (js_getM12 ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m21\"] = $2; })"
+        js_setM21 :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m21 DOMMatrix2DInit.m21 specification>
+setM21 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setM21 self val = liftDOM (void ((js_setM21 ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m21\"]; })"
+        js_getM21 :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m21 DOMMatrix2DInit.m21 specification>
+getM21 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM21 self = liftDOM (((js_getM21 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m21 DOMMatrix2DInit.m21 specification>
+getM21Unsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getM21Unsafe self = liftDOM ((((js_getM21 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m21 DOMMatrix2DInit.m21 specification>
+getM21Unchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getM21Unchecked self = liftDOM ((pFromJSVal <$> (js_getM21 ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m22\"] = $2; })"
+        js_setM22 :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m22 DOMMatrix2DInit.m22 specification>
+setM22 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setM22 self val = liftDOM (void ((js_setM22 ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m22\"]; })"
+        js_getM22 :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m22 DOMMatrix2DInit.m22 specification>
+getM22 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM22 self = liftDOM (((js_getM22 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m22 DOMMatrix2DInit.m22 specification>
+getM22Unsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getM22Unsafe self = liftDOM ((((js_getM22 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m22 DOMMatrix2DInit.m22 specification>
+getM22Unchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getM22Unchecked self = liftDOM ((pFromJSVal <$> (js_getM22 ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m41\"] = $2; })"
+        js_setM41 :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m41 DOMMatrix2DInit.m41 specification>
+setM41 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setM41 self val = liftDOM (void ((js_setM41 ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m41\"]; })"
+        js_getM41 :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m41 DOMMatrix2DInit.m41 specification>
+getM41 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM41 self = liftDOM (((js_getM41 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m41 DOMMatrix2DInit.m41 specification>
+getM41Unsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getM41Unsafe self = liftDOM ((((js_getM41 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m41 DOMMatrix2DInit.m41 specification>
+getM41Unchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getM41Unchecked self = liftDOM ((pFromJSVal <$> (js_getM41 ((Types.toDOMMatrix2DInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m42\"] = $2; })"
+        js_setM42 :: DOMMatrix2DInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m42 DOMMatrix2DInit.m42 specification>
+setM42 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> Double -> m ()
+setM42 self val = liftDOM (void ((js_setM42 ((Types.toDOMMatrix2DInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m42\"]; })"
+        js_getM42 :: DOMMatrix2DInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m42 DOMMatrix2DInit.m42 specification>
+getM42 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM42 self = liftDOM (((js_getM42 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m42 DOMMatrix2DInit.m42 specification>
+getM42Unsafe :: (MonadDOM m, IsDOMMatrix2DInit self, HasCallStack) => self -> m Double
+getM42Unsafe self = liftDOM ((((js_getM42 ((Types.toDOMMatrix2DInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m42 DOMMatrix2DInit.m42 specification>
+getM42Unchecked :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m Double
+getM42Unchecked self = liftDOM ((pFromJSVal <$> (js_getM42 ((Types.toDOMMatrix2DInit self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMMatrixInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrixInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrixInit.hs
@@ -0,0 +1,243 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMMatrixInit
+       (js_newDOMMatrixInit, js_setM13, js_getM13, js_setM14, js_getM14, js_setM23, js_getM23, js_setM24, js_getM24, js_setM31, js_getM31, js_setM32, js_getM32, js_setM33, js_getM33, js_setM34, js_getM34, js_setM43, js_getM43, js_setM44, js_getM44, js_setIs2D, js_getIs2D, newDOMMatrixInit, setM13, getM13, getM13Unsafe, getM13Unchecked, setM14, getM14, getM14Unsafe, getM14Unchecked, setM23, getM23, getM23Unsafe, getM23Unchecked, setM24, getM24, getM24Unsafe, getM24Unchecked, setM31, getM31, getM31Unsafe, getM31Unchecked, setM32, getM32, getM32Unsafe, getM32Unchecked, setM33, getM33, getM33Unsafe, getM33Unchecked, setM34, getM34, getM34Unsafe, getM34Unchecked, setM43, getM43, getM43Unsafe, getM43Unchecked, setM44, getM44, getM44Unsafe, getM44Unchecked, setIs2D, getIs2D, getIs2DUnsafe, getIs2DUnchecked, DOMMatrixInit(..), gTypeDOMMatrixInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDOMMatrixInit :: IO DOMMatrixInit
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-dommatrixinit DOMMatrixInit specification>
+newDOMMatrixInit :: (MonadDOM m) => m DOMMatrixInit
+newDOMMatrixInit = liftDOM ((js_newDOMMatrixInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m13\"] = $2; })"
+        js_setM13 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m13 DOMMatrixInit.m13 specification>
+setM13 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM13 self val = liftDOM (void ((js_setM13 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m13\"]; })"
+        js_getM13 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m13 DOMMatrixInit.m13 specification>
+getM13 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM13 self = liftDOM (((js_getM13 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m13 DOMMatrixInit.m13 specification>
+getM13Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM13Unsafe self = liftDOM ((((js_getM13 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m13 DOMMatrixInit.m13 specification>
+getM13Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM13Unchecked self = liftDOM ((pFromJSVal <$> (js_getM13 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m14\"] = $2; })"
+        js_setM14 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m14 DOMMatrixInit.m14 specification>
+setM14 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM14 self val = liftDOM (void ((js_setM14 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m14\"]; })"
+        js_getM14 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m14 DOMMatrixInit.m14 specification>
+getM14 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM14 self = liftDOM (((js_getM14 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m14 DOMMatrixInit.m14 specification>
+getM14Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM14Unsafe self = liftDOM ((((js_getM14 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m14 DOMMatrixInit.m14 specification>
+getM14Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM14Unchecked self = liftDOM ((pFromJSVal <$> (js_getM14 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m23\"] = $2; })"
+        js_setM23 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m23 DOMMatrixInit.m23 specification>
+setM23 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM23 self val = liftDOM (void ((js_setM23 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m23\"]; })"
+        js_getM23 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m23 DOMMatrixInit.m23 specification>
+getM23 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM23 self = liftDOM (((js_getM23 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m23 DOMMatrixInit.m23 specification>
+getM23Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM23Unsafe self = liftDOM ((((js_getM23 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m23 DOMMatrixInit.m23 specification>
+getM23Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM23Unchecked self = liftDOM ((pFromJSVal <$> (js_getM23 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m24\"] = $2; })"
+        js_setM24 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m24 DOMMatrixInit.m24 specification>
+setM24 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM24 self val = liftDOM (void ((js_setM24 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m24\"]; })"
+        js_getM24 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m24 DOMMatrixInit.m24 specification>
+getM24 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM24 self = liftDOM (((js_getM24 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m24 DOMMatrixInit.m24 specification>
+getM24Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM24Unsafe self = liftDOM ((((js_getM24 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m24 DOMMatrixInit.m24 specification>
+getM24Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM24Unchecked self = liftDOM ((pFromJSVal <$> (js_getM24 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m31\"] = $2; })"
+        js_setM31 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m31 DOMMatrixInit.m31 specification>
+setM31 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM31 self val = liftDOM (void ((js_setM31 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m31\"]; })"
+        js_getM31 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m31 DOMMatrixInit.m31 specification>
+getM31 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM31 self = liftDOM (((js_getM31 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m31 DOMMatrixInit.m31 specification>
+getM31Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM31Unsafe self = liftDOM ((((js_getM31 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m31 DOMMatrixInit.m31 specification>
+getM31Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM31Unchecked self = liftDOM ((pFromJSVal <$> (js_getM31 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m32\"] = $2; })"
+        js_setM32 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m32 DOMMatrixInit.m32 specification>
+setM32 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM32 self val = liftDOM (void ((js_setM32 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m32\"]; })"
+        js_getM32 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m32 DOMMatrixInit.m32 specification>
+getM32 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM32 self = liftDOM (((js_getM32 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m32 DOMMatrixInit.m32 specification>
+getM32Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM32Unsafe self = liftDOM ((((js_getM32 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m32 DOMMatrixInit.m32 specification>
+getM32Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM32Unchecked self = liftDOM ((pFromJSVal <$> (js_getM32 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m33\"] = $2; })"
+        js_setM33 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m33 DOMMatrixInit.m33 specification>
+setM33 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM33 self val = liftDOM (void ((js_setM33 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m33\"]; })"
+        js_getM33 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m33 DOMMatrixInit.m33 specification>
+getM33 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM33 self = liftDOM (((js_getM33 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m33 DOMMatrixInit.m33 specification>
+getM33Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM33Unsafe self = liftDOM ((((js_getM33 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m33 DOMMatrixInit.m33 specification>
+getM33Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM33Unchecked self = liftDOM ((pFromJSVal <$> (js_getM33 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m34\"] = $2; })"
+        js_setM34 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m34 DOMMatrixInit.m34 specification>
+setM34 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM34 self val = liftDOM (void ((js_setM34 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m34\"]; })"
+        js_getM34 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m34 DOMMatrixInit.m34 specification>
+getM34 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM34 self = liftDOM (((js_getM34 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m34 DOMMatrixInit.m34 specification>
+getM34Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM34Unsafe self = liftDOM ((((js_getM34 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m34 DOMMatrixInit.m34 specification>
+getM34Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM34Unchecked self = liftDOM ((pFromJSVal <$> (js_getM34 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m43\"] = $2; })"
+        js_setM43 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m43 DOMMatrixInit.m43 specification>
+setM43 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM43 self val = liftDOM (void ((js_setM43 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m43\"]; })"
+        js_getM43 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m43 DOMMatrixInit.m43 specification>
+getM43 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM43 self = liftDOM (((js_getM43 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m43 DOMMatrixInit.m43 specification>
+getM43Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM43Unsafe self = liftDOM ((((js_getM43 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m43 DOMMatrixInit.m43 specification>
+getM43Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM43Unchecked self = liftDOM ((pFromJSVal <$> (js_getM43 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"m44\"] = $2; })"
+        js_setM44 :: DOMMatrixInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m44 DOMMatrixInit.m44 specification>
+setM44 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM44 self val = liftDOM (void ((js_setM44 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m44\"]; })"
+        js_getM44 :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m44 DOMMatrixInit.m44 specification>
+getM44 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM44 self = liftDOM (((js_getM44 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m44 DOMMatrixInit.m44 specification>
+getM44Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM44Unsafe self = liftDOM ((((js_getM44 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m44 DOMMatrixInit.m44 specification>
+getM44Unchecked :: (MonadDOM m) => DOMMatrixInit -> m Double
+getM44Unchecked self = liftDOM ((pFromJSVal <$> (js_getM44 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"is2D\"] = $2; })"
+        js_setIs2D :: DOMMatrixInit -> Bool -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-is2d DOMMatrixInit.is2D specification>
+setIs2D :: (MonadDOM m) => DOMMatrixInit -> Bool -> m ()
+setIs2D self val = liftDOM (void ((js_setIs2D (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"is2D\"]; })"
+        js_getIs2D :: DOMMatrixInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-is2d DOMMatrixInit.is2D specification>
+getIs2D :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Bool)
+getIs2D self = liftDOM (((js_getIs2D (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-is2d DOMMatrixInit.is2D specification>
+getIs2DUnsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Bool
+getIs2DUnsafe self = liftDOM ((((js_getIs2D (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-is2d DOMMatrixInit.is2D specification>
+getIs2DUnchecked :: (MonadDOM m) => DOMMatrixInit -> m Bool
+getIs2DUnchecked self = liftDOM ((pFromJSVal <$> (js_getIs2D (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMMatrixReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrixReadOnly.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMMatrixReadOnly.hs
@@ -0,0 +1,367 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMMatrixReadOnly
+       (js_newDOMMatrixReadOnly, js_flipX, js_flipY, js_inverse, js_multiply, js_rotate, js_rotateAxisAngle, js_rotateFromVector, js_scale, js_scale3d, js_scaleNonUniform, js_skewX, js_skewY, js_toFloat32Array, js_toFloat64Array, js_toJSON, js_transformPoint, js_translate, js_fromFloat32Array, js_fromFloat64Array, js_fromMatrix, js_getA, js_getB, js_getC, js_getD, js_getE, js_getF, js_getM11, js_getM12, js_getM13, js_getM14, js_getM21, js_getM22, js_getM23, js_getM24, js_getM31, js_getM32, js_getM33, js_getM34, js_getM41, js_getM42, js_getM43, js_getM44, js_getIs2D, js_getIsIdentity, newDOMMatrixReadOnly, flipX, flipX_, flipY, flipY_, inverse, inverse_, multiply, multiply_, rotate, rotate_, rotateAxisAngle, rotateAxisAngle_, rotateFromVector, rotateFromVector_, scale, scale_, scale3d, scale3d_, scaleNonUniform, scaleNonUniform_, skewX, skewX_, skewY, skewY_, toFloat32Array, toFloat32Array_, toFloat64Array, toFloat64Array_, toJSON, toJSON_, transformPoint, transformPoint_, translate, translate_, fromFloat32Array, fromFloat32Array_, fromFloat64Array, fromFloat64Array_, fromMatrix, fromMatrix_, getA, getB, getC, getD, getE, getF, getM11, getM12, getM13, getM14, getM21, getM22, getM23, getM24, getM31, getM32, getM33, getM34, getM41, getM42, getM43, getM44, getIs2D, getIsIdentity, DOMMatrixReadOnly(..), gTypeDOMMatrixReadOnly, IsDOMMatrixReadOnly, toDOMMatrixReadOnly)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types hiding (toFloat32Array, toFloat64Array)
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"DOMMatrixReadOnly\"]($1); })"
+        js_newDOMMatrixReadOnly :: JSVal -> IO DOMMatrixReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/DOMMatrixReadOnly MDN DOMMatrixReadOnly. documentation>
+newDOMMatrixReadOnly :: (MonadDOM m, IsStringOrSequenceDouble init) => Maybe init -> m DOMMatrixReadOnly
+newDOMMatrixReadOnly init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a1' -> js_newDOMMatrixReadOnly a1'))
+
+foreign import javascript safe "(($1) => { return $1[\"flipX\"](); })"
+        js_flipX :: DOMMatrixReadOnly -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipX MDN DOMMatrixReadOnly.flipX documentation>
+flipX :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m DOMMatrix
+flipX self = liftDOM ((js_flipX ((Types.toDOMMatrixReadOnly self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipX MDN DOMMatrixReadOnly.flipX documentation>
+flipX_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+flipX_ self = liftDOM (void ((js_flipX ((Types.toDOMMatrixReadOnly self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"flipY\"](); })"
+        js_flipY :: DOMMatrixReadOnly -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipY MDN DOMMatrixReadOnly.flipY documentation>
+flipY :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m DOMMatrix
+flipY self = liftDOM ((js_flipY ((Types.toDOMMatrixReadOnly self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipY MDN DOMMatrixReadOnly.flipY documentation>
+flipY_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+flipY_ self = liftDOM (void ((js_flipY ((Types.toDOMMatrixReadOnly self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"inverse\"](); })"
+        js_inverse :: DOMMatrixReadOnly -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/inverse MDN DOMMatrixReadOnly.inverse documentation>
+inverse :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m DOMMatrix
+inverse self = liftDOM ((js_inverse ((Types.toDOMMatrixReadOnly self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/inverse MDN DOMMatrixReadOnly.inverse documentation>
+inverse_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+inverse_ self = liftDOM (void ((js_inverse ((Types.toDOMMatrixReadOnly self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"multiply\"]($2); })"
+        js_multiply :: DOMMatrixReadOnly -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/multiply MDN DOMMatrixReadOnly.multiply documentation>
+multiply :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe DOMMatrixInit -> m DOMMatrix
+multiply self other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a2' -> js_multiply ((Types.toDOMMatrixReadOnly self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/multiply MDN DOMMatrixReadOnly.multiply documentation>
+multiply_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe DOMMatrixInit -> m ()
+multiply_ self other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a2' -> js_multiply ((Types.toDOMMatrixReadOnly self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"rotate\"]($2, $3, $4); })"
+        js_rotate :: DOMMatrixReadOnly -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotate MDN DOMMatrixReadOnly.rotate documentation>
+rotate :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+rotate self rotX rotY rotZ = liftDOM (((P.maybe (P.return jsUndefined) toJSVal rotX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal rotY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal rotZ) >>= \a4' -> js_rotate ((Types.toDOMMatrixReadOnly self)) a2' a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotate MDN DOMMatrixReadOnly.rotate documentation>
+rotate_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+rotate_ self rotX rotY rotZ = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal rotX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal rotY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal rotZ) >>= \a4' -> js_rotate ((Types.toDOMMatrixReadOnly self)) a2' a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"rotateAxisAngle\"]($2, $3, $4, $5); })"
+        js_rotateAxisAngle :: DOMMatrixReadOnly -> JSVal -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotateAxisAngle MDN DOMMatrixReadOnly.rotateAxisAngle documentation>
+rotateAxisAngle :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+rotateAxisAngle self x y z angle = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal z) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal angle) >>= \a5' -> js_rotateAxisAngle ((Types.toDOMMatrixReadOnly self)) a2' a3' a4' a5'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotateAxisAngle MDN DOMMatrixReadOnly.rotateAxisAngle documentation>
+rotateAxisAngle_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+rotateAxisAngle_ self x y z angle = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal z) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal angle) >>= \a5' -> js_rotateAxisAngle ((Types.toDOMMatrixReadOnly self)) a2' a3' a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"rotateFromVector\"]($2, $3); })"
+        js_rotateFromVector :: DOMMatrixReadOnly -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotateFromVector MDN DOMMatrixReadOnly.rotateFromVector documentation>
+rotateFromVector :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> m DOMMatrix
+rotateFromVector self x y = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> js_rotateFromVector ((Types.toDOMMatrixReadOnly self)) a2' a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotateFromVector MDN DOMMatrixReadOnly.rotateFromVector documentation>
+rotateFromVector_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> m ()
+rotateFromVector_ self x y = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a3' -> js_rotateFromVector ((Types.toDOMMatrixReadOnly self)) a2' a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"scale\"]($2, $3, $4, $5, $6, $7); })"
+        js_scale :: DOMMatrixReadOnly -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/scale MDN DOMMatrixReadOnly.scale documentation>
+scale :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+scale self scaleX scaleY scaleZ originX originY originZ = liftDOM (((P.maybe (P.return jsUndefined) toJSVal scaleX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal scaleY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal scaleZ) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a6' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a7' -> js_scale ((Types.toDOMMatrixReadOnly self)) a2' a3' a4' a5' a6' a7'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/scale MDN DOMMatrixReadOnly.scale documentation>
+scale_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+scale_ self scaleX scaleY scaleZ originX originY originZ = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal scaleX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal scaleY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal scaleZ) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a6' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a7' -> js_scale ((Types.toDOMMatrixReadOnly self)) a2' a3' a4' a5' a6' a7')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"scale3d\"]($2, $3, $4, $5); })"
+        js_scale3d :: DOMMatrixReadOnly -> JSVal -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/scale3d MDN DOMMatrixReadOnly.scale3d documentation>
+scale3d :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+scale3d self scale originX originY originZ = liftDOM (((P.maybe (P.return jsUndefined) toJSVal scale) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a5' -> js_scale3d ((Types.toDOMMatrixReadOnly self)) a2' a3' a4' a5'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/scale3d MDN DOMMatrixReadOnly.scale3d documentation>
+scale3d_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+scale3d_ self scale originX originY originZ = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal scale) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal originX) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal originY) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal originZ) >>= \a5' -> js_scale3d ((Types.toDOMMatrixReadOnly self)) a2' a3' a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"scaleNonUniform\"]($2, $3); })"
+        js_scaleNonUniform :: DOMMatrixReadOnly -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixreadonly-scalenonuniform DOMMatrixReadOnly.scaleNonUniform specification>
+scaleNonUniform :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> m DOMMatrix
+scaleNonUniform self scaleX scaleY = liftDOM (((P.maybe (P.return jsUndefined) toJSVal scaleX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal scaleY) >>= \a3' -> js_scaleNonUniform ((Types.toDOMMatrixReadOnly self)) a2' a3'))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixreadonly-scalenonuniform DOMMatrixReadOnly.scaleNonUniform specification>
+scaleNonUniform_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> m ()
+scaleNonUniform_ self scaleX scaleY = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal scaleX) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal scaleY) >>= \a3' -> js_scaleNonUniform ((Types.toDOMMatrixReadOnly self)) a2' a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"skewX\"]($2); })"
+        js_skewX :: DOMMatrixReadOnly -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/skewX MDN DOMMatrixReadOnly.skewX documentation>
+skewX :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> m DOMMatrix
+skewX self sx = liftDOM (((P.maybe (P.return jsUndefined) toJSVal sx) >>= \a2' -> js_skewX ((Types.toDOMMatrixReadOnly self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/skewX MDN DOMMatrixReadOnly.skewX documentation>
+skewX_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> m ()
+skewX_ self sx = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal sx) >>= \a2' -> js_skewX ((Types.toDOMMatrixReadOnly self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"skewY\"]($2); })"
+        js_skewY :: DOMMatrixReadOnly -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/skewY MDN DOMMatrixReadOnly.skewY documentation>
+skewY :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> m DOMMatrix
+skewY self sy = liftDOM (((P.maybe (P.return jsUndefined) toJSVal sy) >>= \a2' -> js_skewY ((Types.toDOMMatrixReadOnly self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/skewY MDN DOMMatrixReadOnly.skewY documentation>
+skewY_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> m ()
+skewY_ self sy = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal sy) >>= \a2' -> js_skewY ((Types.toDOMMatrixReadOnly self)) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"toFloat32Array\"](); })"
+        js_toFloat32Array :: DOMMatrixReadOnly -> IO Float32Array
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat32Array MDN DOMMatrixReadOnly.toFloat32Array documentation>
+toFloat32Array :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Float32Array
+toFloat32Array self = liftDOM ((js_toFloat32Array ((Types.toDOMMatrixReadOnly self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat32Array MDN DOMMatrixReadOnly.toFloat32Array documentation>
+toFloat32Array_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+toFloat32Array_ self = liftDOM (void ((js_toFloat32Array ((Types.toDOMMatrixReadOnly self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"toFloat64Array\"](); })"
+        js_toFloat64Array :: DOMMatrixReadOnly -> IO Float64Array
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat64Array MDN DOMMatrixReadOnly.toFloat64Array documentation>
+toFloat64Array :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Float64Array
+toFloat64Array self = liftDOM ((js_toFloat64Array ((Types.toDOMMatrixReadOnly self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat64Array MDN DOMMatrixReadOnly.toFloat64Array documentation>
+toFloat64Array_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+toFloat64Array_ self = liftDOM (void ((js_toFloat64Array ((Types.toDOMMatrixReadOnly self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: DOMMatrixReadOnly -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toJSON MDN DOMMatrixReadOnly.toJSON documentation>
+toJSON :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m GObject
+toJSON self = liftDOM ((js_toJSON ((Types.toDOMMatrixReadOnly self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toJSON MDN DOMMatrixReadOnly.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON ((Types.toDOMMatrixReadOnly self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"transformPoint\"]($2); })"
+        js_transformPoint :: DOMMatrixReadOnly -> JSVal -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/transformPoint MDN DOMMatrixReadOnly.transformPoint documentation>
+transformPoint :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe DOMPointInit -> m DOMPoint
+transformPoint self point = liftDOM (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_transformPoint ((Types.toDOMMatrixReadOnly self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/transformPoint MDN DOMMatrixReadOnly.transformPoint documentation>
+transformPoint_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe DOMPointInit -> m ()
+transformPoint_ self point = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_transformPoint ((Types.toDOMMatrixReadOnly self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"translate\"]($2, $3, $4); })"
+        js_translate :: DOMMatrixReadOnly -> JSVal -> JSVal -> JSVal -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/translate MDN DOMMatrixReadOnly.translate documentation>
+translate :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMMatrix
+translate self tx ty tz = liftDOM (((P.maybe (P.return jsUndefined) toJSVal tx) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal ty) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal tz) >>= \a4' -> js_translate ((Types.toDOMMatrixReadOnly self)) a2' a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/translate MDN DOMMatrixReadOnly.translate documentation>
+translate_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
+translate_ self tx ty tz = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal tx) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal ty) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal tz) >>= \a4' -> js_translate ((Types.toDOMMatrixReadOnly self)) a2' a3' a4')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMMatrixReadOnly\"][\"fromFloat32Array\"]($1); })"
+        js_fromFloat32Array :: Float32Array -> IO DOMMatrixReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromFloat32Array_static MDN DOMMatrixReadOnly.fromFloat32Array documentation>
+fromFloat32Array :: (MonadDOM m, IsFloat32Array array32) => array32 -> m DOMMatrixReadOnly
+fromFloat32Array array32 = liftDOM ((js_fromFloat32Array (Types.toFloat32Array array32)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromFloat32Array_static MDN DOMMatrixReadOnly.fromFloat32Array documentation>
+fromFloat32Array_ :: (MonadDOM m, IsFloat32Array array32) => array32 -> m ()
+fromFloat32Array_ array32 = liftDOM (void ((js_fromFloat32Array (Types.toFloat32Array array32))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMMatrixReadOnly\"][\"fromFloat64Array\"]($1); })"
+        js_fromFloat64Array :: Float64Array -> IO DOMMatrixReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromFloat64Array_static MDN DOMMatrixReadOnly.fromFloat64Array documentation>
+fromFloat64Array :: (MonadDOM m, IsFloat64Array array64) => array64 -> m DOMMatrixReadOnly
+fromFloat64Array array64 = liftDOM ((js_fromFloat64Array (Types.toFloat64Array array64)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromFloat64Array_static MDN DOMMatrixReadOnly.fromFloat64Array documentation>
+fromFloat64Array_ :: (MonadDOM m, IsFloat64Array array64) => array64 -> m ()
+fromFloat64Array_ array64 = liftDOM (void ((js_fromFloat64Array (Types.toFloat64Array array64))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMMatrixReadOnly\"][\"fromMatrix\"]($1); })"
+        js_fromMatrix :: JSVal -> IO DOMMatrixReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromMatrix_static MDN DOMMatrixReadOnly.fromMatrix documentation>
+fromMatrix :: (MonadDOM m) => Maybe DOMMatrixInit -> m DOMMatrixReadOnly
+fromMatrix other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromMatrix a1'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromMatrix_static MDN DOMMatrixReadOnly.fromMatrix documentation>
+fromMatrix_ :: (MonadDOM m) => Maybe DOMMatrixInit -> m ()
+fromMatrix_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromMatrix a1')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })"
+        js_getA :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.a documentation>
+getA :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getA self = liftDOM ((js_getA ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })"
+        js_getB :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.b documentation>
+getB :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getB self = liftDOM ((js_getB ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"c\"]; })"
+        js_getC :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.c documentation>
+getC :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getC self = liftDOM ((js_getC ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })"
+        js_getD :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.d documentation>
+getD :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getD self = liftDOM ((js_getD ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })"
+        js_getE :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.e documentation>
+getE :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getE self = liftDOM ((js_getE ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"f\"]; })"
+        js_getF :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.f documentation>
+getF :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getF self = liftDOM ((js_getF ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m11\"]; })"
+        js_getM11 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m11 documentation>
+getM11 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM11 self = liftDOM ((js_getM11 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m12\"]; })"
+        js_getM12 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m12 documentation>
+getM12 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM12 self = liftDOM ((js_getM12 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m13\"]; })"
+        js_getM13 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m13 documentation>
+getM13 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM13 self = liftDOM ((js_getM13 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m14\"]; })"
+        js_getM14 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m14 documentation>
+getM14 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM14 self = liftDOM ((js_getM14 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m21\"]; })"
+        js_getM21 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m21 documentation>
+getM21 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM21 self = liftDOM ((js_getM21 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m22\"]; })"
+        js_getM22 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m22 documentation>
+getM22 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM22 self = liftDOM ((js_getM22 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m23\"]; })"
+        js_getM23 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m23 documentation>
+getM23 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM23 self = liftDOM ((js_getM23 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m24\"]; })"
+        js_getM24 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m24 documentation>
+getM24 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM24 self = liftDOM ((js_getM24 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m31\"]; })"
+        js_getM31 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m31 documentation>
+getM31 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM31 self = liftDOM ((js_getM31 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m32\"]; })"
+        js_getM32 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m32 documentation>
+getM32 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM32 self = liftDOM ((js_getM32 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m33\"]; })"
+        js_getM33 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m33 documentation>
+getM33 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM33 self = liftDOM ((js_getM33 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m34\"]; })"
+        js_getM34 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m34 documentation>
+getM34 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM34 self = liftDOM ((js_getM34 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m41\"]; })"
+        js_getM41 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m41 documentation>
+getM41 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM41 self = liftDOM ((js_getM41 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m42\"]; })"
+        js_getM42 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m42 documentation>
+getM42 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM42 self = liftDOM ((js_getM42 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m43\"]; })"
+        js_getM43 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m43 documentation>
+getM43 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM43 self = liftDOM ((js_getM43 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"m44\"]; })"
+        js_getM44 :: DOMMatrixReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly#instance_properties MDN DOMMatrixReadOnly.m44 documentation>
+getM44 :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Double
+getM44 self = liftDOM ((js_getM44 ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"is2D\"]; })"
+        js_getIs2D :: DOMMatrixReadOnly -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/is2D MDN DOMMatrixReadOnly.is2D documentation>
+getIs2D :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Bool
+getIs2D self = liftDOM ((js_getIs2D ((Types.toDOMMatrixReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isIdentity\"]; })"
+        js_getIsIdentity :: DOMMatrixReadOnly -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/isIdentity MDN DOMMatrixReadOnly.isIdentity documentation>
+getIsIdentity :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Bool
+getIsIdentity self = liftDOM ((js_getIsIdentity ((Types.toDOMMatrixReadOnly self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs
+++ /dev/null
@@ -1,100 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        js_getLength, getLength, DOMNamedFlowCollection(..),
-        gTypeDOMNamedFlowCollection)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        DOMNamedFlowCollection -> Word -> IO (Nullable WebKitNamedFlow)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-item ::
-     (MonadIO m) =>
-       DOMNamedFlowCollection -> Word -> m (Maybe WebKitNamedFlow)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-item_ :: (MonadIO m) => DOMNamedFlowCollection -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) =>
-             DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-itemUnchecked ::
-              (MonadIO m) => DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        DOMNamedFlowCollection -> JSString -> IO (Nullable WebKitNamedFlow)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            DOMNamedFlowCollection -> name -> m (Maybe WebKitNamedFlow)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) =>
-             DOMNamedFlowCollection -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  DOMNamedFlowCollection -> name -> m WebKitNamedFlow
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) =>
-                     DOMNamedFlowCollection -> name -> m WebKitNamedFlow
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        DOMNamedFlowCollection -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.length Mozilla WebKitNamedFlowCollection.length documentation> 
-getLength :: (MonadIO m) => DOMNamedFlowCollection -> m Word
-getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
@@ -1,57 +1,33 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMParser
-       (js_newDOMParser, newDOMParser, js_parseFromString,
-        parseFromString, parseFromString_, DOMParser(..), gTypeDOMParser)
+       (js_newDOMParser, js_parseFromString, newDOMParser, parseFromString, parseFromString_, DOMParser(..), gTypeDOMParser)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"DOMParser\"](); })"
+
+foreign import javascript safe "(() => { return new globalThis[\"DOMParser\"](); })"
         js_newDOMParser :: IO DOMParser
+-- | <https://developer.mozilla.org/docs/Web/API/DOMParser/DOMParser MDN DOMParser. documentation>
+newDOMParser :: (MonadDOM m) => m DOMParser
+newDOMParser = liftDOM ((js_newDOMParser))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation> 
-newDOMParser :: (MonadIO m) => m DOMParser
-newDOMParser = liftIO (js_newDOMParser)
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"parseFromString\"]($2, $3); })"
-        js_parseFromString ::
-        DOMParser -> JSString -> JSString -> IO Document
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
-parseFromString ::
-                (MonadIO m, ToJSString string, ToJSString contentType) =>
-                  DOMParser -> string -> contentType -> m Document
-parseFromString self string contentType
-  = liftIO
-      (js_parseFromString self (toJSString string)
-         (toJSString contentType))
+        js_parseFromString :: DOMParser -> TrustedHTMLOrString -> JSVal -> IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/DOMParser/parseFromString MDN DOMParser.parseFromString documentation>
+parseFromString :: (MonadDOM m, IsTrustedHTMLOrString string) => DOMParser -> string -> DOMParserSupportedType -> m Document
+parseFromString self string type' = liftDOM (((toJSVal type') >>= \a3' -> js_parseFromString (self) (Types.toTrustedHTMLOrString string) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
-parseFromString_ ::
-                 (MonadIO m, ToJSString string, ToJSString contentType) =>
-                   DOMParser -> string -> contentType -> m ()
-parseFromString_ self string contentType
-  = liftIO
-      (void
-         (js_parseFromString self (toJSString string)
-            (toJSString contentType)))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMParser/parseFromString MDN DOMParser.parseFromString documentation>
+parseFromString_ :: (MonadDOM m, IsTrustedHTMLOrString string) => DOMParser -> string -> DOMParserSupportedType -> m ()
+parseFromString_ self string type' = liftDOM (void (((toJSVal type') >>= \a3' -> js_parseFromString (self) (Types.toTrustedHTMLOrString string) a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
@@ -1,122 +1,87 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMPoint
-       (js_newDOMPoint, newDOMPoint, js_newDOMPoint', newDOMPoint',
-        js_fromPoint, fromPoint, fromPoint_, js_setX, setX, js_getX, getX,
-        js_setY, setY, js_getY, getY, js_setZ, setZ, js_getZ, getZ,
-        js_setW, setW, js_getW, getW, DOMPoint(..), gTypeDOMPoint)
+       (js_newDOMPoint, js_newDOMPoint', js_fromPoint, js_setX, js_getX, js_setY, js_getY, js_setZ, js_getZ, js_setW, js_getW, newDOMPoint, newDOMPoint', fromPoint, fromPoint_, setX, getX, setY, getY, setZ, getZ, setW, getW, DOMPoint(..), gTypeDOMPoint)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return new window[\"DOMPoint\"]($1); })"
-        js_newDOMPoint :: DOMPointInit -> IO DOMPoint
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation> 
-newDOMPoint :: (MonadIO m) => DOMPointInit -> m DOMPoint
-newDOMPoint point = liftIO (js_newDOMPoint point)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"DOMPoint\"]($1, $2,\n$3, $4); })" js_newDOMPoint' ::
-        Optional Double ->
-          Optional Double ->
-            Optional Double -> Optional Double -> IO DOMPoint
+foreign import javascript safe "(($1) => { return new globalThis[\"DOMPoint\"]($1); })"
+        js_newDOMPoint :: JSVal -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/DOMPoint MDN DOMPoint. documentation>
+newDOMPoint :: (MonadDOM m) => Maybe Double -> m DOMPoint
+newDOMPoint x = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a1' -> js_newDOMPoint a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation> 
-newDOMPoint' ::
-             (MonadIO m) =>
-               Maybe Double ->
-                 Maybe Double -> Maybe Double -> Maybe Double -> m DOMPoint
-newDOMPoint' x y z w
-  = liftIO
-      (js_newDOMPoint' (maybeToOptional x) (maybeToOptional y)
-         (maybeToOptional z)
-         (maybeToOptional w))
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"DOMPoint\"][\"fromPoint\"]($1); })" js_fromPoint ::
-        Optional DOMPointInit -> IO DOMPoint
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"DOMPoint\"]($1, $2, $3, $4); })"
+        js_newDOMPoint' :: JSVal -> JSVal -> JSVal -> JSVal -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/DOMPoint MDN DOMPoint. documentation>
+newDOMPoint' :: (MonadDOM m) => Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMPoint
+newDOMPoint' x y z w = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal z) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal w) >>= \a4' -> js_newDOMPoint' a1' a2' a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
-fromPoint :: (MonadIO m) => Maybe DOMPointInit -> m DOMPoint
-fromPoint other = liftIO (js_fromPoint (maybeToOptional other))
+foreign import javascript safe "(($1) => { return globalThis[\"DOMPoint\"][\"fromPoint\"]($1); })"
+        js_fromPoint :: JSVal -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/fromPoint_static MDN DOMPoint.fromPoint documentation>
+fromPoint :: (MonadDOM m) => Maybe DOMPointInit -> m DOMPoint
+fromPoint other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromPoint a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
-fromPoint_ :: (MonadIO m) => Maybe DOMPointInit -> m ()
-fromPoint_ other
-  = liftIO (void (js_fromPoint (maybeToOptional other)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        DOMPoint -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/fromPoint_static MDN DOMPoint.fromPoint documentation>
+fromPoint_ :: (MonadDOM m) => Maybe DOMPointInit -> m ()
+fromPoint_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromPoint a1')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.x Mozilla DOMPoint.x documentation> 
-setX :: (MonadIO m) => DOMPoint -> Double -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        DOMPoint -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: DOMPoint -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/x MDN DOMPoint.x documentation>
+setX :: (MonadDOM m) => DOMPoint -> Double -> m ()
+setX self val = liftDOM (void ((js_setX (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.x Mozilla DOMPoint.x documentation> 
-getX :: (MonadIO m) => DOMPoint -> m Double
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        DOMPoint -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DOMPoint -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/x MDN DOMPoint.x documentation>
+getX :: (MonadDOM m) => DOMPoint -> m Double
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.y Mozilla DOMPoint.y documentation> 
-setY :: (MonadIO m) => DOMPoint -> Double -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        DOMPoint -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: DOMPoint -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/y MDN DOMPoint.y documentation>
+setY :: (MonadDOM m) => DOMPoint -> Double -> m ()
+setY self val = liftDOM (void ((js_setY (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.y Mozilla DOMPoint.y documentation> 
-getY :: (MonadIO m) => DOMPoint -> m Double
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"z\"] = $2; })" js_setZ ::
-        DOMPoint -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DOMPoint -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/y MDN DOMPoint.y documentation>
+getY :: (MonadDOM m) => DOMPoint -> m Double
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.z Mozilla DOMPoint.z documentation> 
-setZ :: (MonadIO m) => DOMPoint -> Double -> m ()
-setZ self val = liftIO (js_setZ self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
-        DOMPoint -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"z\"] = $2; })"
+        js_setZ :: DOMPoint -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/z MDN DOMPoint.z documentation>
+setZ :: (MonadDOM m) => DOMPoint -> Double -> m ()
+setZ self val = liftDOM (void ((js_setZ (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.z Mozilla DOMPoint.z documentation> 
-getZ :: (MonadIO m) => DOMPoint -> m Double
-getZ self = liftIO (js_getZ self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"w\"] = $2; })" js_setW ::
-        DOMPoint -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: DOMPoint -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/z MDN DOMPoint.z documentation>
+getZ :: (MonadDOM m) => DOMPoint -> m Double
+getZ self = liftDOM ((js_getZ (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.w Mozilla DOMPoint.w documentation> 
-setW :: (MonadIO m) => DOMPoint -> Double -> m ()
-setW self val = liftIO (js_setW self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"w\"]; })" js_getW ::
-        DOMPoint -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"w\"] = $2; })"
+        js_setW :: DOMPoint -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/w MDN DOMPoint.w documentation>
+setW :: (MonadDOM m) => DOMPoint -> Double -> m ()
+setW self val = liftDOM (void ((js_setW (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.w Mozilla DOMPoint.w documentation> 
-getW :: (MonadIO m) => DOMPoint -> m Double
-getW self = liftIO (js_getW self)
+foreign import javascript unsafe "(($1) => { return $1[\"w\"]; })"
+        js_getW :: DOMPoint -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/w MDN DOMPoint.w documentation>
+getW :: (MonadDOM m) => DOMPoint -> m Double
+getW self = liftDOM ((js_getW (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMPointInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMPointInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMPointInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMPointInit
+       (js_newDOMPointInit, js_setX, js_getX, js_setY, js_getY, js_setZ, js_getZ, js_setW, js_getW, newDOMPointInit, setX, getX, getXUnsafe, getXUnchecked, setY, getY, getYUnsafe, getYUnchecked, setZ, getZ, getZUnsafe, getZUnchecked, setW, getW, getWUnsafe, getWUnchecked, DOMPointInit(..), gTypeDOMPointInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDOMPointInit :: IO DOMPointInit
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-dompointinit DOMPointInit specification>
+newDOMPointInit :: (MonadDOM m) => m DOMPointInit
+newDOMPointInit = liftDOM ((js_newDOMPointInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: DOMPointInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-x DOMPointInit.x specification>
+setX :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setX self val = liftDOM (void ((js_setX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DOMPointInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-x DOMPointInit.x specification>
+getX :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getX self = liftDOM (((js_getX (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-x DOMPointInit.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getXUnsafe self = liftDOM ((((js_getX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-x DOMPointInit.x specification>
+getXUnchecked :: (MonadDOM m) => DOMPointInit -> m Double
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: DOMPointInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-y DOMPointInit.y specification>
+setY :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setY self val = liftDOM (void ((js_setY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DOMPointInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-y DOMPointInit.y specification>
+getY :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getY self = liftDOM (((js_getY (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-y DOMPointInit.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getYUnsafe self = liftDOM ((((js_getY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-y DOMPointInit.y specification>
+getYUnchecked :: (MonadDOM m) => DOMPointInit -> m Double
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"z\"] = $2; })"
+        js_setZ :: DOMPointInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-z DOMPointInit.z specification>
+setZ :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setZ self val = liftDOM (void ((js_setZ (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: DOMPointInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-z DOMPointInit.z specification>
+getZ :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getZ self = liftDOM (((js_getZ (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-z DOMPointInit.z specification>
+getZUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getZUnsafe self = liftDOM ((((js_getZ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-z DOMPointInit.z specification>
+getZUnchecked :: (MonadDOM m) => DOMPointInit -> m Double
+getZUnchecked self = liftDOM ((pFromJSVal <$> (js_getZ (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"w\"] = $2; })"
+        js_setW :: DOMPointInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-w DOMPointInit.w specification>
+setW :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setW self val = liftDOM (void ((js_setW (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"w\"]; })"
+        js_getW :: DOMPointInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-w DOMPointInit.w specification>
+getW :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getW self = liftDOM (((js_getW (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-w DOMPointInit.w specification>
+getWUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getWUnsafe self = liftDOM ((((js_getW (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-w DOMPointInit.w specification>
+getWUnchecked :: (MonadDOM m) => DOMPointInit -> m Double
+getWUnchecked self = liftDOM ((pFromJSVal <$> (js_getW (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
@@ -1,99 +1,83 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly
-       (js_newDOMPointReadOnly, newDOMPointReadOnly,
-        js_newDOMPointReadOnly', newDOMPointReadOnly', js_fromPoint,
-        fromPoint, fromPoint_, js_getX, getX, js_getY, getY, js_getZ, getZ,
-        js_getW, getW, DOMPointReadOnly(..), gTypeDOMPointReadOnly,
-        IsDOMPointReadOnly, toDOMPointReadOnly)
+       (js_newDOMPointReadOnly, js_newDOMPointReadOnly', js_matrixTransform, js_toJSON, js_fromPoint, js_getX, js_getY, js_getZ, js_getW, newDOMPointReadOnly, newDOMPointReadOnly', matrixTransform, matrixTransform_, toJSON, toJSON_, fromPoint, fromPoint_, getX, getY, getZ, getW, DOMPointReadOnly(..), gTypeDOMPointReadOnly, IsDOMPointReadOnly, toDOMPointReadOnly)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"DOMPointReadOnly\"]($1); })" js_newDOMPointReadOnly ::
-        DOMPointInit -> IO DOMPointReadOnly
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation> 
-newDOMPointReadOnly ::
-                    (MonadIO m) => DOMPointInit -> m DOMPointReadOnly
-newDOMPointReadOnly point = liftIO (js_newDOMPointReadOnly point)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"DOMPointReadOnly\"]($1,\n$2, $3, $4); })"
-        js_newDOMPointReadOnly' ::
-        Optional Double ->
-          Optional Double ->
-            Optional Double -> Optional Double -> IO DOMPointReadOnly
+foreign import javascript safe "(($1) => { return new globalThis[\"DOMPointReadOnly\"]($1); })"
+        js_newDOMPointReadOnly :: JSVal -> IO DOMPointReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/DOMPointReadOnly MDN DOMPointReadOnly. documentation>
+newDOMPointReadOnly :: (MonadDOM m) => Maybe Double -> m DOMPointReadOnly
+newDOMPointReadOnly x = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a1' -> js_newDOMPointReadOnly a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation> 
-newDOMPointReadOnly' ::
-                     (MonadIO m) =>
-                       Maybe Double ->
-                         Maybe Double -> Maybe Double -> Maybe Double -> m DOMPointReadOnly
-newDOMPointReadOnly' x y z w
-  = liftIO
-      (js_newDOMPointReadOnly' (maybeToOptional x) (maybeToOptional y)
-         (maybeToOptional z)
-         (maybeToOptional w))
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"DOMPointReadOnly\"][\"fromPoint\"]($1); })" js_fromPoint ::
-        Optional DOMPointInit -> IO DOMPointReadOnly
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"DOMPointReadOnly\"]($1, $2, $3, $4); })"
+        js_newDOMPointReadOnly' :: JSVal -> JSVal -> JSVal -> JSVal -> IO DOMPointReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/DOMPointReadOnly MDN DOMPointReadOnly. documentation>
+newDOMPointReadOnly' :: (MonadDOM m) => Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMPointReadOnly
+newDOMPointReadOnly' x y z w = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal z) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal w) >>= \a4' -> js_newDOMPointReadOnly' a1' a2' a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
-fromPoint ::
-          (MonadIO m) => Maybe DOMPointInit -> m DOMPointReadOnly
-fromPoint other = liftIO (js_fromPoint (maybeToOptional other))
+foreign import javascript safe "(($1, $2) => { return $1[\"matrixTransform\"]($2); })"
+        js_matrixTransform :: DOMPointReadOnly -> JSVal -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/matrixTransform MDN DOMPointReadOnly.matrixTransform documentation>
+matrixTransform :: (MonadDOM m, IsDOMPointReadOnly self) => self -> Maybe DOMMatrixInit -> m DOMPoint
+matrixTransform self matrix = liftDOM (((P.maybe (P.return jsUndefined) toJSVal matrix) >>= \a2' -> js_matrixTransform ((Types.toDOMPointReadOnly self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
-fromPoint_ :: (MonadIO m) => Maybe DOMPointInit -> m ()
-fromPoint_ other
-  = liftIO (void (js_fromPoint (maybeToOptional other)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        DOMPointReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/matrixTransform MDN DOMPointReadOnly.matrixTransform documentation>
+matrixTransform_ :: (MonadDOM m, IsDOMPointReadOnly self) => self -> Maybe DOMMatrixInit -> m ()
+matrixTransform_ self matrix = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal matrix) >>= \a2' -> js_matrixTransform ((Types.toDOMPointReadOnly self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.x Mozilla DOMPointReadOnly.x documentation> 
-getX :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
-getX self = liftIO (js_getX (toDOMPointReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        DOMPointReadOnly -> IO Double
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: DOMPointReadOnly -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/toJSON MDN DOMPointReadOnly.toJSON documentation>
+toJSON :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m GObject
+toJSON self = liftDOM ((js_toJSON ((Types.toDOMPointReadOnly self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.y Mozilla DOMPointReadOnly.y documentation> 
-getY :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
-getY self = liftIO (js_getY (toDOMPointReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
-        DOMPointReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/toJSON MDN DOMPointReadOnly.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON ((Types.toDOMPointReadOnly self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.z Mozilla DOMPointReadOnly.z documentation> 
-getZ :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
-getZ self = liftIO (js_getZ (toDOMPointReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"w\"]; })" js_getW ::
-        DOMPointReadOnly -> IO Double
+foreign import javascript safe "(($1) => { return globalThis[\"DOMPointReadOnly\"][\"fromPoint\"]($1); })"
+        js_fromPoint :: JSVal -> IO DOMPointReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/fromPoint_static MDN DOMPointReadOnly.fromPoint documentation>
+fromPoint :: (MonadDOM m) => Maybe DOMPointInit -> m DOMPointReadOnly
+fromPoint other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromPoint a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.w Mozilla DOMPointReadOnly.w documentation> 
-getW :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
-getW self = liftIO (js_getW (toDOMPointReadOnly self))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/fromPoint_static MDN DOMPointReadOnly.fromPoint documentation>
+fromPoint_ :: (MonadDOM m) => Maybe DOMPointInit -> m ()
+fromPoint_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromPoint a1')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DOMPointReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/x MDN DOMPointReadOnly.x documentation>
+getX :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
+getX self = liftDOM ((js_getX ((Types.toDOMPointReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DOMPointReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/y MDN DOMPointReadOnly.y documentation>
+getY :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
+getY self = liftDOM ((js_getY ((Types.toDOMPointReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: DOMPointReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/z MDN DOMPointReadOnly.z documentation>
+getZ :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
+getZ self = liftDOM ((js_getZ ((Types.toDOMPointReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"w\"]; })"
+        js_getW :: DOMPointReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/w MDN DOMPointReadOnly.w documentation>
+getW :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
+getW self = liftDOM ((js_getW ((Types.toDOMPointReadOnly self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMQuad.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMQuad.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMQuad.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMQuad
+       (js_newDOMQuad, js_getBounds, js_toJSON, js_fromQuad, js_fromRect, js_getP1, js_getP2, js_getP3, js_getP4, newDOMQuad, getBounds, getBounds_, toJSON, toJSON_, fromQuad, fromQuad_, fromRect, fromRect_, getP1, getP2, getP3, getP4, DOMQuad(..), gTypeDOMQuad)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"DOMQuad\"]($1, $2, $3, $4); })"
+        js_newDOMQuad :: JSVal -> JSVal -> JSVal -> JSVal -> IO DOMQuad
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/DOMQuad MDN DOMQuad. documentation>
+newDOMQuad :: (MonadDOM m) => Maybe DOMPointInit -> Maybe DOMPointInit -> Maybe DOMPointInit -> Maybe DOMPointInit -> m DOMQuad
+newDOMQuad p1 p2 p3 p4 = liftDOM (((P.maybe (P.return jsUndefined) toJSVal p1) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal p2) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal p3) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal p4) >>= \a4' -> js_newDOMQuad a1' a2' a3' a4'))
+
+foreign import javascript safe "(($1) => { return $1[\"getBounds\"](); })"
+        js_getBounds :: DOMQuad -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/getBounds MDN DOMQuad.getBounds documentation>
+getBounds :: (MonadDOM m) => DOMQuad -> m DOMRect
+getBounds self = liftDOM ((js_getBounds (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/getBounds MDN DOMQuad.getBounds documentation>
+getBounds_ :: (MonadDOM m) => DOMQuad -> m ()
+getBounds_ self = liftDOM (void ((js_getBounds (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: DOMQuad -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/toJSON MDN DOMQuad.toJSON documentation>
+toJSON :: (MonadDOM m) => DOMQuad -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/toJSON MDN DOMQuad.toJSON documentation>
+toJSON_ :: (MonadDOM m) => DOMQuad -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMQuad\"][\"fromQuad\"]($1); })"
+        js_fromQuad :: JSVal -> IO DOMQuad
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromQuad_static MDN DOMQuad.fromQuad documentation>
+fromQuad :: (MonadDOM m) => Maybe DOMQuadInit -> m DOMQuad
+fromQuad other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromQuad a1'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromQuad_static MDN DOMQuad.fromQuad documentation>
+fromQuad_ :: (MonadDOM m) => Maybe DOMQuadInit -> m ()
+fromQuad_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromQuad a1')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DOMQuad\"][\"fromRect\"]($1); })"
+        js_fromRect :: JSVal -> IO DOMQuad
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromRect_static MDN DOMQuad.fromRect documentation>
+fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMQuad
+fromRect other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromRect a1'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromRect_static MDN DOMQuad.fromRect documentation>
+fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
+fromRect_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromRect a1')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p1\"]; })"
+        js_getP1 :: DOMQuad -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p1 MDN DOMQuad.p1 documentation>
+getP1 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP1 self = liftDOM ((js_getP1 (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p2\"]; })"
+        js_getP2 :: DOMQuad -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p2 MDN DOMQuad.p2 documentation>
+getP2 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP2 self = liftDOM ((js_getP2 (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p3\"]; })"
+        js_getP3 :: DOMQuad -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p3 MDN DOMQuad.p3 documentation>
+getP3 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP3 self = liftDOM ((js_getP3 (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p4\"]; })"
+        js_getP4 :: DOMQuad -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p4 MDN DOMQuad.p4 documentation>
+getP4 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP4 self = liftDOM ((js_getP4 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMQuadInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMQuadInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMQuadInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMQuadInit
+       (js_newDOMQuadInit, js_setP1, js_getP1, js_setP2, js_getP2, js_setP3, js_getP3, js_setP4, js_getP4, newDOMQuadInit, setP1, getP1, getP1Unsafe, getP1Unchecked, setP2, getP2, getP2Unsafe, getP2Unchecked, setP3, getP3, getP3Unsafe, getP3Unchecked, setP4, getP4, getP4Unsafe, getP4Unchecked, DOMQuadInit(..), gTypeDOMQuadInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDOMQuadInit :: IO DOMQuadInit
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-domquadinit DOMQuadInit specification>
+newDOMQuadInit :: (MonadDOM m) => m DOMQuadInit
+newDOMQuadInit = liftDOM ((js_newDOMQuadInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"p1\"] = $2; })"
+        js_setP1 :: DOMQuadInit -> DOMPointInit -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p1 DOMQuadInit.p1 specification>
+setP1 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP1 self val = liftDOM (void ((js_setP1 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p1\"]; })"
+        js_getP1 :: DOMQuadInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p1 DOMQuadInit.p1 specification>
+getP1 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP1 self = liftDOM (((js_getP1 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p1 DOMQuadInit.p1 specification>
+getP1Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP1Unsafe self = liftDOM ((((js_getP1 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p1 DOMQuadInit.p1 specification>
+getP1Unchecked :: (MonadDOM m) => DOMQuadInit -> m DOMPointInit
+getP1Unchecked self = liftDOM ((pFromJSVal <$> (js_getP1 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"p2\"] = $2; })"
+        js_setP2 :: DOMQuadInit -> DOMPointInit -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p2 DOMQuadInit.p2 specification>
+setP2 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP2 self val = liftDOM (void ((js_setP2 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p2\"]; })"
+        js_getP2 :: DOMQuadInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p2 DOMQuadInit.p2 specification>
+getP2 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP2 self = liftDOM (((js_getP2 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p2 DOMQuadInit.p2 specification>
+getP2Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP2Unsafe self = liftDOM ((((js_getP2 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p2 DOMQuadInit.p2 specification>
+getP2Unchecked :: (MonadDOM m) => DOMQuadInit -> m DOMPointInit
+getP2Unchecked self = liftDOM ((pFromJSVal <$> (js_getP2 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"p3\"] = $2; })"
+        js_setP3 :: DOMQuadInit -> DOMPointInit -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p3 DOMQuadInit.p3 specification>
+setP3 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP3 self val = liftDOM (void ((js_setP3 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p3\"]; })"
+        js_getP3 :: DOMQuadInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p3 DOMQuadInit.p3 specification>
+getP3 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP3 self = liftDOM (((js_getP3 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p3 DOMQuadInit.p3 specification>
+getP3Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP3Unsafe self = liftDOM ((((js_getP3 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p3 DOMQuadInit.p3 specification>
+getP3Unchecked :: (MonadDOM m) => DOMQuadInit -> m DOMPointInit
+getP3Unchecked self = liftDOM ((pFromJSVal <$> (js_getP3 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"p4\"] = $2; })"
+        js_setP4 :: DOMQuadInit -> DOMPointInit -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p4 DOMQuadInit.p4 specification>
+setP4 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP4 self val = liftDOM (void ((js_setP4 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p4\"]; })"
+        js_getP4 :: DOMQuadInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p4 DOMQuadInit.p4 specification>
+getP4 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP4 self = liftDOM (((js_getP4 (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p4 DOMQuadInit.p4 specification>
+getP4Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP4Unsafe self = liftDOM ((((js_getP4 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p4 DOMQuadInit.p4 specification>
+getP4Unchecked :: (MonadDOM m) => DOMQuadInit -> m DOMPointInit
+getP4Unchecked self = liftDOM ((pFromJSVal <$> (js_getP4 (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
@@ -1,114 +1,81 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMRect
-       (js_newDOMRect, newDOMRect, js_fromRect, fromRect, fromRect_,
-        js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setWidth, setWidth, js_getWidth, getWidth, js_setHeight,
-        setHeight, js_getHeight, getHeight, DOMRect(..), gTypeDOMRect)
+       (js_newDOMRect, js_fromRect, js_setX, js_getX, js_setY, js_getY, js_setWidth, js_getWidth, js_setHeight, js_getHeight, newDOMRect, fromRect, fromRect_, setX, getX, setY, getY, setWidth, getWidth, setHeight, getHeight, DOMRect(..), gTypeDOMRect)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"DOMRect\"]($1, $2,\n$3, $4); })" js_newDOMRect ::
-        Optional Double ->
-          Optional Double -> Optional Double -> Optional Double -> IO DOMRect
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect Mozilla DOMRect documentation> 
-newDOMRect ::
-           (MonadIO m) =>
-             Maybe Double ->
-               Maybe Double -> Maybe Double -> Maybe Double -> m DOMRect
-newDOMRect x y width height
-  = liftIO
-      (js_newDOMRect (maybeToOptional x) (maybeToOptional y)
-         (maybeToOptional width)
-         (maybeToOptional height))
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"DOMRect\"][\"fromRect\"]($1); })" js_fromRect ::
-        Optional DOMRectInit -> IO DOMRect
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"DOMRect\"]($1, $2, $3, $4); })"
+        js_newDOMRect :: JSVal -> JSVal -> JSVal -> JSVal -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/DOMRect MDN DOMRect. documentation>
+newDOMRect :: (MonadDOM m) => Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMRect
+newDOMRect x y width height = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal width) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal height) >>= \a4' -> js_newDOMRect a1' a2' a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
-fromRect :: (MonadIO m) => Maybe DOMRectInit -> m DOMRect
-fromRect other = liftIO (js_fromRect (maybeToOptional other))
+foreign import javascript safe "(($1) => { return globalThis[\"DOMRect\"][\"fromRect\"]($1); })"
+        js_fromRect :: JSVal -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/fromRect_static MDN DOMRect.fromRect documentation>
+fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMRect
+fromRect other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromRect a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
-fromRect_ :: (MonadIO m) => Maybe DOMRectInit -> m ()
-fromRect_ other
-  = liftIO (void (js_fromRect (maybeToOptional other)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        DOMRect -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/fromRect_static MDN DOMRect.fromRect documentation>
+fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
+fromRect_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromRect a1')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.x Mozilla DOMRect.x documentation> 
-setX :: (MonadIO m) => DOMRect -> Double -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        DOMRect -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: DOMRect -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/x MDN DOMRect.x documentation>
+setX :: (MonadDOM m) => DOMRect -> Double -> m ()
+setX self val = liftDOM (void ((js_setX (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.x Mozilla DOMRect.x documentation> 
-getX :: (MonadIO m) => DOMRect -> m Double
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        DOMRect -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DOMRect -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/x MDN DOMRect.x documentation>
+getX :: (MonadDOM m) => DOMRect -> m Double
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.y Mozilla DOMRect.y documentation> 
-setY :: (MonadIO m) => DOMRect -> Double -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        DOMRect -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: DOMRect -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/y MDN DOMRect.y documentation>
+setY :: (MonadDOM m) => DOMRect -> Double -> m ()
+setY self val = liftDOM (void ((js_setY (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.y Mozilla DOMRect.y documentation> 
-getY :: (MonadIO m) => DOMRect -> m Double
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: DOMRect -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DOMRect -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/y MDN DOMRect.y documentation>
+getY :: (MonadDOM m) => DOMRect -> m Double
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.width Mozilla DOMRect.width documentation> 
-setWidth :: (MonadIO m) => DOMRect -> Double -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        DOMRect -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: DOMRect -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/width MDN DOMRect.width documentation>
+setWidth :: (MonadDOM m) => DOMRect -> Double -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.width Mozilla DOMRect.width documentation> 
-getWidth :: (MonadIO m) => DOMRect -> m Double
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
-        js_setHeight :: DOMRect -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: DOMRect -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/width MDN DOMRect.width documentation>
+getWidth :: (MonadDOM m) => DOMRect -> m Double
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.height Mozilla DOMRect.height documentation> 
-setHeight :: (MonadIO m) => DOMRect -> Double -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        DOMRect -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: DOMRect -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/height MDN DOMRect.height documentation>
+setHeight :: (MonadDOM m) => DOMRect -> Double -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.height Mozilla DOMRect.height documentation> 
-getHeight :: (MonadIO m) => DOMRect -> m Double
-getHeight self = liftIO (js_getHeight self)
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: DOMRect -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/height MDN DOMRect.height documentation>
+getHeight :: (MonadDOM m) => DOMRect -> m Double
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRectInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRectInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRectInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMRectInit
+       (js_newDOMRectInit, js_setX, js_getX, js_setY, js_getY, js_setWidth, js_getWidth, js_setHeight, js_getHeight, newDOMRectInit, setX, getX, getXUnsafe, getXUnchecked, setY, getY, getYUnsafe, getYUnchecked, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, DOMRectInit(..), gTypeDOMRectInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDOMRectInit :: IO DOMRectInit
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-domrectinit DOMRectInit specification>
+newDOMRectInit :: (MonadDOM m) => m DOMRectInit
+newDOMRectInit = liftDOM ((js_newDOMRectInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: DOMRectInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-x DOMRectInit.x specification>
+setX :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setX self val = liftDOM (void ((js_setX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DOMRectInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-x DOMRectInit.x specification>
+getX :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getX self = liftDOM (((js_getX (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-x DOMRectInit.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getXUnsafe self = liftDOM ((((js_getX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-x DOMRectInit.x specification>
+getXUnchecked :: (MonadDOM m) => DOMRectInit -> m Double
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: DOMRectInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-y DOMRectInit.y specification>
+setY :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setY self val = liftDOM (void ((js_setY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DOMRectInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-y DOMRectInit.y specification>
+getY :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getY self = liftDOM (((js_getY (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-y DOMRectInit.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getYUnsafe self = liftDOM ((((js_getY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-y DOMRectInit.y specification>
+getYUnchecked :: (MonadDOM m) => DOMRectInit -> m Double
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: DOMRectInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-width DOMRectInit.width specification>
+setWidth :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: DOMRectInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-width DOMRectInit.width specification>
+getWidth :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-width DOMRectInit.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getWidthUnsafe self = liftDOM ((((js_getWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-width DOMRectInit.width specification>
+getWidthUnchecked :: (MonadDOM m) => DOMRectInit -> m Double
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: DOMRectInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-height DOMRectInit.height specification>
+setHeight :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: DOMRectInit -> IO JSVal
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-height DOMRectInit.height specification>
+getHeight :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-height DOMRectInit.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-height DOMRectInit.height specification>
+getHeightUnchecked :: (MonadDOM m) => DOMRectInit -> m Double
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRectList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRectList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRectList.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DOMRectList
+       (js_item, js_getLength, item, item_, itemUnsafe, itemUnchecked, getLength, DOMRectList(..), gTypeDOMRectList)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: DOMRectList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectList/item MDN DOMRectList.item documentation>
+item :: (MonadDOM m) => DOMRectList -> Word -> m (Maybe DOMRect)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectList/item MDN DOMRectList.item documentation>
+item_ :: (MonadDOM m) => DOMRectList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectList/item MDN DOMRectList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => DOMRectList -> Word -> m DOMRect
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectList/item MDN DOMRectList.item documentation>
+itemUnchecked :: (MonadDOM m) => DOMRectList -> Word -> m DOMRect
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: DOMRectList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectList/length MDN DOMRectList.length documentation>
+getLength :: (MonadDOM m) => DOMRectList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
@@ -1,119 +1,91 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly
-       (js_newDOMRectReadOnly, newDOMRectReadOnly, js_fromRect, fromRect,
-        fromRect_, js_getX, getX, js_getY, getY, js_getWidth, getWidth,
-        js_getHeight, getHeight, js_getTop, getTop, js_getRight, getRight,
-        js_getBottom, getBottom, js_getLeft, getLeft, DOMRectReadOnly(..),
-        gTypeDOMRectReadOnly, IsDOMRectReadOnly, toDOMRectReadOnly)
+       (js_newDOMRectReadOnly, js_toJSON, js_fromRect, js_getX, js_getY, js_getWidth, js_getHeight, js_getTop, js_getRight, js_getBottom, js_getLeft, newDOMRectReadOnly, toJSON, toJSON_, fromRect, fromRect_, getX, getY, getWidth, getHeight, getTop, getRight, getBottom, getLeft, DOMRectReadOnly(..), gTypeDOMRectReadOnly, IsDOMRectReadOnly, toDOMRectReadOnly)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"DOMRectReadOnly\"]($1,\n$2, $3, $4); })"
-        js_newDOMRectReadOnly ::
-        Optional Double ->
-          Optional Double ->
-            Optional Double -> Optional Double -> IO DOMRectReadOnly
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly Mozilla DOMRectReadOnly documentation> 
-newDOMRectReadOnly ::
-                   (MonadIO m) =>
-                     Maybe Double ->
-                       Maybe Double -> Maybe Double -> Maybe Double -> m DOMRectReadOnly
-newDOMRectReadOnly x y width height
-  = liftIO
-      (js_newDOMRectReadOnly (maybeToOptional x) (maybeToOptional y)
-         (maybeToOptional width)
-         (maybeToOptional height))
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"DOMRectReadOnly\"][\"fromRect\"]($1); })" js_fromRect ::
-        Optional DOMRectInit -> IO DOMRectReadOnly
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"DOMRectReadOnly\"]($1, $2, $3, $4); })"
+        js_newDOMRectReadOnly :: JSVal -> JSVal -> JSVal -> JSVal -> IO DOMRectReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/DOMRectReadOnly MDN DOMRectReadOnly. documentation>
+newDOMRectReadOnly :: (MonadDOM m) => Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> m DOMRectReadOnly
+newDOMRectReadOnly x y width height = liftDOM (((P.maybe (P.return jsUndefined) toJSVal x) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal y) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal width) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal height) >>= \a4' -> js_newDOMRectReadOnly a1' a2' a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
-fromRect :: (MonadIO m) => Maybe DOMRectInit -> m DOMRectReadOnly
-fromRect other = liftIO (js_fromRect (maybeToOptional other))
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: DOMRectReadOnly -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/toJSON MDN DOMRectReadOnly.toJSON documentation>
+toJSON :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m GObject
+toJSON self = liftDOM ((js_toJSON ((Types.toDOMRectReadOnly self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
-fromRect_ :: (MonadIO m) => Maybe DOMRectInit -> m ()
-fromRect_ other
-  = liftIO (void (js_fromRect (maybeToOptional other)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/toJSON MDN DOMRectReadOnly.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON ((Types.toDOMRectReadOnly self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.x Mozilla DOMRectReadOnly.x documentation> 
-getX :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getX self = liftIO (js_getX (toDOMRectReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        DOMRectReadOnly -> IO Double
+foreign import javascript safe "(($1) => { return globalThis[\"DOMRectReadOnly\"][\"fromRect\"]($1); })"
+        js_fromRect :: JSVal -> IO DOMRectReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/fromRect_static MDN DOMRectReadOnly.fromRect documentation>
+fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMRectReadOnly
+fromRect other = liftDOM (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromRect a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.y Mozilla DOMRectReadOnly.y documentation> 
-getY :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getY self = liftIO (js_getY (toDOMRectReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/fromRect_static MDN DOMRectReadOnly.fromRect documentation>
+fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
+fromRect_ other = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal other) >>= \a1' -> js_fromRect a1')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.width Mozilla DOMRectReadOnly.width documentation> 
-getWidth :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getWidth self = liftIO (js_getWidth (toDOMRectReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        DOMRectReadOnly -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/x MDN DOMRectReadOnly.x documentation>
+getX :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getX self = liftDOM ((js_getX ((Types.toDOMRectReadOnly self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.height Mozilla DOMRectReadOnly.height documentation> 
-getHeight ::
-          (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getHeight self = liftIO (js_getHeight (toDOMRectReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })" js_getTop ::
-        DOMRectReadOnly -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/y MDN DOMRectReadOnly.y documentation>
+getY :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getY self = liftDOM ((js_getY ((Types.toDOMRectReadOnly self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.top Mozilla DOMRectReadOnly.top documentation> 
-getTop :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getTop self = liftIO (js_getTop (toDOMRectReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"right\"]; })" js_getRight ::
-        DOMRectReadOnly -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/width MDN DOMRectReadOnly.width documentation>
+getWidth :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getWidth self = liftDOM ((js_getWidth ((Types.toDOMRectReadOnly self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.right Mozilla DOMRectReadOnly.right documentation> 
-getRight :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getRight self = liftIO (js_getRight (toDOMRectReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bottom\"]; })" js_getBottom ::
-        DOMRectReadOnly -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/height MDN DOMRectReadOnly.height documentation>
+getHeight :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getHeight self = liftDOM ((js_getHeight ((Types.toDOMRectReadOnly self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.bottom Mozilla DOMRectReadOnly.bottom documentation> 
-getBottom ::
-          (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getBottom self = liftIO (js_getBottom (toDOMRectReadOnly self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"left\"]; })" js_getLeft ::
-        DOMRectReadOnly -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })"
+        js_getTop :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/top MDN DOMRectReadOnly.top documentation>
+getTop :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getTop self = liftDOM ((js_getTop ((Types.toDOMRectReadOnly self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.left Mozilla DOMRectReadOnly.left documentation> 
-getLeft :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
-getLeft self = liftIO (js_getLeft (toDOMRectReadOnly self))
+foreign import javascript unsafe "(($1) => { return $1[\"right\"]; })"
+        js_getRight :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/right MDN DOMRectReadOnly.right documentation>
+getRight :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getRight self = liftDOM ((js_getRight ((Types.toDOMRectReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bottom\"]; })"
+        js_getBottom :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/bottom MDN DOMRectReadOnly.bottom documentation>
+getBottom :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getBottom self = liftDOM ((js_getBottom ((Types.toDOMRectReadOnly self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"left\"]; })"
+        js_getLeft :: DOMRectReadOnly -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/left MDN DOMRectReadOnly.left documentation>
+getLeft :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getLeft self = liftDOM ((js_getLeft ((Types.toDOMRectReadOnly self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
@@ -1,80 +1,51 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMStringList
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_contains,
-        contains, contains_, js_getLength, getLength, DOMStringList(..),
-        gTypeDOMStringList)
+       (js_contains, js_item, js_getLength, contains, contains_, item, item_, itemUnsafe, itemUnchecked, getLength, DOMStringList(..), gTypeDOMStringList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        DOMStringList -> Word -> IO (Nullable JSString)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-item ::
-     (MonadIO m, FromJSString result) =>
-       DOMStringList -> Word -> m (Maybe result)
-item self index
-  = liftIO (fromMaybeJSString <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"contains\"]($2); })"
+        js_contains :: DOMStringList -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/contains MDN DOMStringList.contains documentation>
+contains :: (MonadDOM m, ToJSString string) => DOMStringList -> string -> m Bool
+contains self string = liftDOM ((js_contains (self) (toJSString string)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-item_ :: (MonadIO m) => DOMStringList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/contains MDN DOMStringList.contains documentation>
+contains_ :: (MonadDOM m, ToJSString string) => DOMStringList -> string -> m ()
+contains_ self string = liftDOM (void ((js_contains (self) (toJSString string))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack, FromJSString result) =>
-             DOMStringList -> Word -> m result
-itemUnsafe self index
-  = liftIO
-      ((fromMaybeJSString <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: DOMStringList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/item MDN DOMStringList.item documentation>
+item :: (MonadDOM m, FromJSString result) => DOMStringList -> Word -> m (Maybe result)
+item self index = liftDOM (((fromMaybeJSString . Nullable) <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-itemUnchecked ::
-              (MonadIO m, FromJSString result) =>
-                DOMStringList -> Word -> m result
-itemUnchecked self index
-  = liftIO (fromJust . fromMaybeJSString <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"contains\"]($2) ? 1 : 0); })"
-        js_contains :: DOMStringList -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/item MDN DOMStringList.item documentation>
+item_ :: (MonadDOM m) => DOMStringList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.contains Mozilla DOMStringList.contains documentation> 
-contains ::
-         (MonadIO m, ToJSString string) => DOMStringList -> string -> m Bool
-contains self string
-  = liftIO (js_contains self (toJSString string))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/item MDN DOMStringList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => DOMStringList -> Word -> m result
+itemUnsafe self index = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_item (self) (index))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.contains Mozilla DOMStringList.contains documentation> 
-contains_ ::
-          (MonadIO m, ToJSString string) => DOMStringList -> string -> m ()
-contains_ self string
-  = liftIO (void (js_contains self (toJSString string)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        DOMStringList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/item MDN DOMStringList.item documentation>
+itemUnchecked :: (MonadDOM m, FromJSString result) => DOMStringList -> Word -> m result
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.length Mozilla DOMStringList.length documentation> 
-getLength :: (MonadIO m) => DOMStringList -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: DOMStringList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/length MDN DOMStringList.length documentation>
+getLength :: (MonadDOM m) => DOMStringList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
@@ -1,40 +1,18 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMStringMap
-       (js_get, get, get_, DOMStringMap(..), gTypeDOMStringMap) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+       (DOMStringMap(..), gTypeDOMStringMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
-        DOMStringMap -> JSString -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap.get Mozilla DOMStringMap.get documentation> 
-get ::
-    (MonadIO m, ToJSString name, FromJSString result) =>
-      DOMStringMap -> name -> m result
-get self name
-  = liftIO (fromJSString <$> (js_get self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap.get Mozilla DOMStringMap.get documentation> 
-get_ ::
-     (MonadIO m, ToJSString name) => DOMStringMap -> name -> m ()
-get_ self name = liftIO (void (js_get self (toJSString name)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
@@ -1,156 +1,105 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DOMTokenList
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_contains,
-        contains, contains_, js_add, add, js_remove, remove, js_toggle,
-        toggle, toggle_, js_replace, replace, js_supports, supports,
-        supports_, js_getLength, getLength, js_setValue, setValue,
-        js_getValue, getValue, DOMTokenList(..), gTypeDOMTokenList)
+       (js_add, js_contains, js_item, js_remove, js_replace, js_supports, js_toggle, js_getLength, js_setValue, js_getValue, add, contains, contains_, item, item_, itemUnsafe, itemUnchecked, remove, replace, replace_, supports, supports_, toggle, toggle_, getLength, setValue, getValue, DOMTokenList(..), gTypeDOMTokenList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        DOMTokenList -> Word -> IO (Nullable JSString)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-item ::
-     (MonadIO m, FromJSString result) =>
-       DOMTokenList -> Word -> m (Maybe result)
-item self index
-  = liftIO (fromMaybeJSString <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"add\"](...$2); })"
+        js_add :: DOMTokenList -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/add MDN DOMTokenList.add documentation>
+add :: (MonadDOM m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
+add self tokens = liftDOM (void (((toJSVal tokens) >>= \a2' -> js_add (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-item_ :: (MonadIO m) => DOMTokenList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"contains\"]($2); })"
+        js_contains :: DOMTokenList -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/contains MDN DOMTokenList.contains documentation>
+contains :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m Bool
+contains self token = liftDOM ((js_contains (self) (toJSString token)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack, FromJSString result) =>
-             DOMTokenList -> Word -> m result
-itemUnsafe self index
-  = liftIO
-      ((fromMaybeJSString <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/contains MDN DOMTokenList.contains documentation>
+contains_ :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m ()
+contains_ self token = liftDOM (void ((js_contains (self) (toJSString token))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-itemUnchecked ::
-              (MonadIO m, FromJSString result) =>
-                DOMTokenList -> Word -> m result
-itemUnchecked self index
-  = liftIO (fromJust . fromMaybeJSString <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"contains\"]($2) ? 1 : 0); })"
-        js_contains :: DOMTokenList -> JSString -> IO Bool
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: DOMTokenList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/item MDN DOMTokenList.item documentation>
+item :: (MonadDOM m, FromJSString result) => DOMTokenList -> Word -> m (Maybe result)
+item self index = liftDOM (((fromMaybeJSString . Nullable) <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.contains Mozilla DOMTokenList.contains documentation> 
-contains ::
-         (MonadIO m, ToJSString token) => DOMTokenList -> token -> m Bool
-contains self token = liftIO (js_contains self (toJSString token))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/item MDN DOMTokenList.item documentation>
+item_ :: (MonadDOM m) => DOMTokenList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.contains Mozilla DOMTokenList.contains documentation> 
-contains_ ::
-          (MonadIO m, ToJSString token) => DOMTokenList -> token -> m ()
-contains_ self token
-  = liftIO (void (js_contains self (toJSString token)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"add\"]($2); })" js_add ::
-        DOMTokenList -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/item MDN DOMTokenList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => DOMTokenList -> Word -> m result
+itemUnsafe self index = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_item (self) (index))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.add Mozilla DOMTokenList.add documentation> 
-add ::
-    (MonadIO m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
-add self tokens
-  = liftIO (toJSVal tokens >>= \ tokens' -> js_add self tokens')
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"remove\"]($2); })" js_remove ::
-        DOMTokenList -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/item MDN DOMTokenList.item documentation>
+itemUnchecked :: (MonadDOM m, FromJSString result) => DOMTokenList -> Word -> m result
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.remove Mozilla DOMTokenList.remove documentation> 
-remove ::
-       (MonadIO m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
-remove self tokens
-  = liftIO (toJSVal tokens >>= \ tokens' -> js_remove self tokens')
- 
-foreign import javascript safe "(($1, $2, $3) => { return ($1[\"toggle\"]($2, $3) ? 1 : 0); })"
-        js_toggle :: DOMTokenList -> JSString -> Bool -> IO Bool
+foreign import javascript safe "(($1, $2) => { return $1[\"remove\"](...$2); })"
+        js_remove :: DOMTokenList -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/remove MDN DOMTokenList.remove documentation>
+remove :: (MonadDOM m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
+remove self tokens = liftDOM (void (((toJSVal tokens) >>= \a2' -> js_remove (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
-toggle ::
-       (MonadIO m, ToJSString token) =>
-         DOMTokenList -> token -> Bool -> m Bool
-toggle self token force
-  = liftIO (js_toggle self (toJSString token) force)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replace\"]($2, $3); })"
+        js_replace :: DOMTokenList -> JSString -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/replace MDN DOMTokenList.replace documentation>
+replace :: (MonadDOM m, ToJSString token, ToJSString newToken) => DOMTokenList -> token -> newToken -> m Bool
+replace self token newToken = liftDOM ((js_replace (self) (toJSString token) (toJSString newToken)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
-toggle_ ::
-        (MonadIO m, ToJSString token) =>
-          DOMTokenList -> token -> Bool -> m ()
-toggle_ self token force
-  = liftIO (void (js_toggle self (toJSString token) force))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replace\"]($2, $3); })" js_replace
-        :: DOMTokenList -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/replace MDN DOMTokenList.replace documentation>
+replace_ :: (MonadDOM m, ToJSString token, ToJSString newToken) => DOMTokenList -> token -> newToken -> m ()
+replace_ self token newToken = liftDOM (void ((js_replace (self) (toJSString token) (toJSString newToken))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.replace Mozilla DOMTokenList.replace documentation> 
-replace ::
-        (MonadIO m, ToJSString token, ToJSString newToken) =>
-          DOMTokenList -> token -> newToken -> m ()
-replace self token newToken
-  = liftIO (js_replace self (toJSString token) (toJSString newToken))
- 
-foreign import javascript safe "(($1, $2) => { return ($1[\"supports\"]($2) ? 1 : 0); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"supports\"]($2); })"
         js_supports :: DOMTokenList -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/supports MDN DOMTokenList.supports documentation>
+supports :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m Bool
+supports self token = liftDOM ((js_supports (self) (toJSString token)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.supports Mozilla DOMTokenList.supports documentation> 
-supports ::
-         (MonadIO m, ToJSString token) => DOMTokenList -> token -> m Bool
-supports self token = liftIO (js_supports self (toJSString token))
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/supports MDN DOMTokenList.supports documentation>
+supports_ :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m ()
+supports_ self token = liftDOM (void ((js_supports (self) (toJSString token))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.supports Mozilla DOMTokenList.supports documentation> 
-supports_ ::
-          (MonadIO m, ToJSString token) => DOMTokenList -> token -> m ()
-supports_ self token
-  = liftIO (void (js_supports self (toJSString token)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        DOMTokenList -> IO Word
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"toggle\"]($2, $3); })"
+        js_toggle :: DOMTokenList -> JSString -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/toggle MDN DOMTokenList.toggle documentation>
+toggle :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> Maybe Bool -> m Bool
+toggle self token force = liftDOM (((P.maybe (P.return jsUndefined) toJSVal force) >>= \a3' -> js_toggle (self) (toJSString token) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.length Mozilla DOMTokenList.length documentation> 
-getLength :: (MonadIO m) => DOMTokenList -> m Word
-getLength self = liftIO (js_getLength self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: DOMTokenList -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/toggle MDN DOMTokenList.toggle documentation>
+toggle_ :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> Maybe Bool -> m ()
+toggle_ self token force = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal force) >>= \a3' -> js_toggle (self) (toJSString token) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.value Mozilla DOMTokenList.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => DOMTokenList -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        DOMTokenList -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: DOMTokenList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/length MDN DOMTokenList.length documentation>
+getLength :: (MonadDOM m) => DOMTokenList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.value Mozilla DOMTokenList.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => DOMTokenList -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: DOMTokenList -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/value MDN DOMTokenList.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => DOMTokenList -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: DOMTokenList -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/value MDN DOMTokenList.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => DOMTokenList -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs b/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
@@ -1,90 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from datacue (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DataCue
-       (js_newDataCue, newDataCue, js_newDataCue', newDataCue',
-        js_setData, setData, js_getData, getData, js_setValue, setValue,
-        js_getValue, getValue, js_getType, getType, DataCue(..),
-        gTypeDataCue)
+       (js_newDataCue, js_newDataCue', js_setValue, js_getValue, js_getType, newDataCue, newDataCue', setValue, getValue, getType, DataCue(..), gTypeDataCue)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return new window[\"WebKitDataCue\"]($1,\n$2, $3); })" js_newDataCue ::
-        Double -> Double -> ArrayBuffer -> IO DataCue
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
-newDataCue ::
-           (MonadIO m, IsArrayBuffer data') =>
-             Double -> Double -> data' -> m DataCue
-newDataCue startTime endTime data'
-  = liftIO (js_newDataCue startTime endTime (toArrayBuffer data'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"WebKitDataCue\"]($1,\n$2, $3, $4); })" js_newDataCue' ::
-        Double -> Double -> JSVal -> Optional JSString -> IO DataCue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
-newDataCue' ::
-            (MonadIO m, ToJSVal value, ToJSString type') =>
-              Double -> Double -> value -> Maybe type' -> m DataCue
-newDataCue' startTime endTime value type'
-  = liftIO
-      (toJSVal value >>=
-         \ value' -> js_newDataCue' startTime endTime value'
-         (toOptionalJSString type'))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"data\"] = $2; })" js_setData ::
-        DataCue -> ArrayBuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
-setData :: (MonadIO m, IsArrayBuffer val) => DataCue -> val -> m ()
-setData self val = liftIO (js_setData self (toArrayBuffer val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        DataCue -> IO ArrayBuffer
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"DataCue\"]($1, $2, $3); })"
+        js_newDataCue :: Double -> Double -> JSVal -> IO DataCue
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/DataCue MDN DataCue. documentation>
+newDataCue :: (MonadDOM m) => Double -> Double -> JSVal -> m DataCue
+newDataCue startTime endTime value = liftDOM ((js_newDataCue (startTime) (endTime) (value)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
-getData :: (MonadIO m) => DataCue -> m ArrayBuffer
-getData self = liftIO (js_getData self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: DataCue -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"DataCue\"]($1, $2, $3, $4); })"
+        js_newDataCue' :: Double -> Double -> JSVal -> (Optional JSString) -> IO DataCue
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/DataCue MDN DataCue. documentation>
+newDataCue' :: (MonadDOM m, ToJSString type') => Double -> Double -> JSVal -> Maybe type' -> m DataCue
+newDataCue' startTime endTime value type' = liftDOM ((js_newDataCue' (startTime) (endTime) (value) (toOptionalJSString type')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
-setValue :: (MonadIO m, ToJSVal val) => DataCue -> val -> m ()
-setValue self val
-  = liftIO (toJSVal val >>= \ val' -> js_setValue self val')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        DataCue -> IO JSVal
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: DataCue -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/value MDN DataCue.value documentation>
+setValue :: (MonadDOM m) => DataCue -> JSVal -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
-getValue :: (MonadIO m) => DataCue -> m JSVal
-getValue self = liftIO (js_getValue self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        DataCue -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: DataCue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/value MDN DataCue.value documentation>
+getValue :: (MonadDOM m) => DataCue -> m JSVal
+getValue self = liftDOM ((js_getValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.type Mozilla WebKitDataCue.type documentation> 
-getType :: (MonadIO m, FromJSString result) => DataCue -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: DataCue -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/type MDN DataCue.type documentation>
+getType :: (MonadDOM m, FromJSString result) => DataCue -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
@@ -1,137 +1,93 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DataTransfer
-       (js_setDragImage, setDragImage, js_getData, getData, getData_,
-        js_setData, setData, js_clearData, clearData, js_setDropEffect,
-        setDropEffect, js_getDropEffect, getDropEffect,
-        js_setEffectAllowed, setEffectAllowed, js_getEffectAllowed,
-        getEffectAllowed, js_getItems, getItems, js_getTypes, getTypes,
-        js_getFiles, getFiles, DataTransfer(..), gTypeDataTransfer)
+       (js_newDataTransfer, js_clearData, js_getData, js_setData, js_setDragImage, js_setDropEffect, js_getDropEffect, js_setEffectAllowed, js_getEffectAllowed, js_getItems, js_getTypes, js_getFiles, newDataTransfer, clearData, getData, getData_, setData, setDragImage, setDropEffect, getDropEffect, setEffectAllowed, getEffectAllowed, getItems, getTypes, getFiles, DataTransfer(..), gTypeDataTransfer)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setDragImage\"]($2, $3, $4); })"
-        js_setDragImage ::
-        DataTransfer -> Optional Element -> Int -> Int -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setDragImage Mozilla DataTransfer.setDragImage documentation> 
-setDragImage ::
-             (MonadIO m, IsElement image) =>
-               DataTransfer -> Maybe image -> Int -> Int -> m ()
-setDragImage self image x y
-  = liftIO
-      (js_setDragImage self (maybeToOptional (fmap toElement image)) x y)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getData\"]($2); })" js_getData
-        :: DataTransfer -> JSString -> IO JSString
+foreign import javascript safe "(() => { return new globalThis[\"DataTransfer\"](); })"
+        js_newDataTransfer :: IO DataTransfer
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/DataTransfer MDN DataTransfer. documentation>
+newDataTransfer :: (MonadDOM m) => m DataTransfer
+newDataTransfer = liftDOM ((js_newDataTransfer))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
-getData ::
-        (MonadIO m, ToJSString format, FromJSString result) =>
-          DataTransfer -> format -> m result
-getData self format
-  = liftIO (fromJSString <$> (js_getData self (toJSString format)))
+foreign import javascript safe "(($1, $2) => { return $1[\"clearData\"]($2); })"
+        js_clearData :: DataTransfer -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/clearData MDN DataTransfer.clearData documentation>
+clearData :: (MonadDOM m, ToJSString format) => DataTransfer -> Maybe format -> m ()
+clearData self format = liftDOM (void ((js_clearData (self) (toOptionalJSString format))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
-getData_ ::
-         (MonadIO m, ToJSString format) => DataTransfer -> format -> m ()
-getData_ self format
-  = liftIO (void (js_getData self (toJSString format)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setData\"]($2, $3); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"getData\"]($2); })"
+        js_getData :: DataTransfer -> JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/getData MDN DataTransfer.getData documentation>
+getData :: (MonadDOM m, ToJSString format, FromJSString result) => DataTransfer -> format -> m result
+getData self format = liftDOM ((fromJSString <$> (js_getData (self) (toJSString format))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/getData MDN DataTransfer.getData documentation>
+getData_ :: (MonadDOM m, ToJSString format) => DataTransfer -> format -> m ()
+getData_ self format = liftDOM (void ((js_getData (self) (toJSString format))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setData\"]($2, $3); })"
         js_setData :: DataTransfer -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/setData MDN DataTransfer.setData documentation>
+setData :: (MonadDOM m, ToJSString format, ToJSString data') => DataTransfer -> format -> data' -> m ()
+setData self format data' = liftDOM (void ((js_setData (self) (toJSString format) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setData Mozilla DataTransfer.setData documentation> 
-setData ::
-        (MonadIO m, ToJSString format, ToJSString data') =>
-          DataTransfer -> format -> data' -> m ()
-setData self format data'
-  = liftIO (js_setData self (toJSString format) (toJSString data'))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearData\"]($2); })"
-        js_clearData :: DataTransfer -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setDragImage\"]($2, $3, $4); })"
+        js_setDragImage :: DataTransfer -> Element -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/setDragImage MDN DataTransfer.setDragImage documentation>
+setDragImage :: (MonadDOM m, IsElement image) => DataTransfer -> image -> Int -> Int -> m ()
+setDragImage self image x y = liftDOM (void ((js_setDragImage (self) (Types.toElement image) (x) (y))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.clearData Mozilla DataTransfer.clearData documentation> 
-clearData ::
-          (MonadIO m, ToJSString format) =>
-            DataTransfer -> Maybe format -> m ()
-clearData self format
-  = liftIO (js_clearData self (toOptionalJSString format))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dropEffect\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"dropEffect\"] = $2; })"
         js_setDropEffect :: DataTransfer -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/dropEffect MDN DataTransfer.dropEffect documentation>
+setDropEffect :: (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
+setDropEffect self val = liftDOM (void ((js_setDropEffect (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
-setDropEffect ::
-              (MonadIO m, ToJSString val) => DataTransfer -> val -> m ()
-setDropEffect self val
-  = liftIO (js_setDropEffect self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"dropEffect\"]; })"
         js_getDropEffect :: DataTransfer -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/dropEffect MDN DataTransfer.dropEffect documentation>
+getDropEffect :: (MonadDOM m, FromJSString result) => DataTransfer -> m result
+getDropEffect self = liftDOM ((fromJSString <$> (js_getDropEffect (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
-getDropEffect ::
-              (MonadIO m, FromJSString result) => DataTransfer -> m result
-getDropEffect self
-  = liftIO (fromJSString <$> (js_getDropEffect self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"effectAllowed\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"effectAllowed\"] = $2; })"
         js_setEffectAllowed :: DataTransfer -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/effectAllowed MDN DataTransfer.effectAllowed documentation>
+setEffectAllowed :: (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
+setEffectAllowed self val = liftDOM (void ((js_setEffectAllowed (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
-setEffectAllowed ::
-                 (MonadIO m, ToJSString val) => DataTransfer -> val -> m ()
-setEffectAllowed self val
-  = liftIO (js_setEffectAllowed self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"effectAllowed\"]; })"
         js_getEffectAllowed :: DataTransfer -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
-getEffectAllowed ::
-                 (MonadIO m, FromJSString result) => DataTransfer -> m result
-getEffectAllowed self
-  = liftIO (fromJSString <$> (js_getEffectAllowed self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"items\"]; })" js_getItems ::
-        DataTransfer -> IO DataTransferItemList
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/effectAllowed MDN DataTransfer.effectAllowed documentation>
+getEffectAllowed :: (MonadDOM m, FromJSString result) => DataTransfer -> m result
+getEffectAllowed self = liftDOM ((fromJSString <$> (js_getEffectAllowed (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.items Mozilla DataTransfer.items documentation> 
-getItems :: (MonadIO m) => DataTransfer -> m DataTransferItemList
-getItems self = liftIO (js_getItems self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })" js_getTypes ::
-        DataTransfer -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"items\"]; })"
+        js_getItems :: DataTransfer -> IO DataTransferItemList
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/items MDN DataTransfer.items documentation>
+getItems :: (MonadDOM m) => DataTransfer -> m DataTransferItemList
+getItems self = liftDOM ((js_getItems (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.types Mozilla DataTransfer.types documentation> 
-getTypes ::
-         (MonadIO m, FromJSString result) => DataTransfer -> m [result]
-getTypes self = liftIO ((js_getTypes self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"files\"]; })" js_getFiles ::
-        DataTransfer -> IO FileList
+foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })"
+        js_getTypes :: DataTransfer -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/types MDN DataTransfer.types documentation>
+getTypes :: (MonadDOM m, FromJSString result) => DataTransfer -> m [result]
+getTypes self = liftDOM (((js_getTypes (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.files Mozilla DataTransfer.files documentation> 
-getFiles :: (MonadIO m) => DataTransfer -> m FileList
-getFiles self = liftIO (js_getFiles self)
+foreign import javascript unsafe "(($1) => { return $1[\"files\"]; })"
+        js_getFiles :: DataTransfer -> IO FileList
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/files MDN DataTransfer.files documentation>
+getFiles :: (MonadDOM m) => DataTransfer -> m FileList
+getFiles self = liftDOM ((js_getFiles (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
@@ -1,79 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DataTransferItem
-       (js_getAsString, getAsString, js_getAsFile, getAsFile, getAsFile_,
-        getAsFileUnsafe, getAsFileUnchecked, js_getKind, getKind,
-        js_getType, getType, DataTransferItem(..), gTypeDataTransferItem)
+       (js_getAsFile, js_getAsString, js_webkitGetAsEntry, js_getKind, js_getType, getAsFile, getAsFile_, getAsFileUnsafe, getAsFileUnchecked, getAsString, webkitGetAsEntry, webkitGetAsEntry_, webkitGetAsEntryUnsafe, webkitGetAsEntryUnchecked, getKind, getType, DataTransferItem(..), gTypeDataTransferItem)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getAsString\"]($2); })"
-        js_getAsString ::
-        DataTransferItem -> Optional (StringCallback callback) -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsString Mozilla DataTransferItem.getAsString documentation> 
-getAsString ::
-            (MonadIO m, ToJSString callback) =>
-              DataTransferItem -> Maybe (StringCallback callback) -> m ()
-getAsString self callback
-  = liftIO (js_getAsString self (maybeToOptional callback))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getAsFile\"](); })" js_getAsFile
-        :: DataTransferItem -> IO (Nullable Blob)
+foreign import javascript safe "(($1) => { return $1[\"getAsFile\"](); })"
+        js_getAsFile :: DataTransferItem -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
+getAsFile :: (MonadDOM m) => DataTransferItem -> m (Maybe File)
+getAsFile self = liftDOM (((js_getAsFile (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
-getAsFile :: (MonadIO m) => DataTransferItem -> m (Maybe Blob)
-getAsFile self = liftIO (nullableToMaybe <$> (js_getAsFile self))
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
+getAsFile_ :: (MonadDOM m) => DataTransferItem -> m ()
+getAsFile_ self = liftDOM (void ((js_getAsFile (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
-getAsFile_ :: (MonadIO m) => DataTransferItem -> m ()
-getAsFile_ self = liftIO (void (js_getAsFile self))
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
+getAsFileUnsafe :: (MonadDOM m, HasCallStack) => DataTransferItem -> m File
+getAsFileUnsafe self = liftDOM ((((js_getAsFile (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
-getAsFileUnsafe ::
-                (MonadIO m, HasCallStack) => DataTransferItem -> m Blob
-getAsFileUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAsFile self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
+getAsFileUnchecked :: (MonadDOM m) => DataTransferItem -> m File
+getAsFileUnchecked self = liftDOM ((pFromJSVal <$> (js_getAsFile (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
-getAsFileUnchecked :: (MonadIO m) => DataTransferItem -> m Blob
-getAsFileUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getAsFile self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        DataTransferItem -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"getAsString\"]($2); })"
+        js_getAsString :: DataTransferItem -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsString MDN DataTransferItem.getAsString documentation>
+getAsString :: (MonadDOM m) => DataTransferItem -> Maybe FunctionStringCallback -> m ()
+getAsString self callback' = liftDOM (void (((toJSVal callback') >>= \a2' -> js_getAsString (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.kind Mozilla DataTransferItem.kind documentation> 
-getKind ::
-        (MonadIO m, FromJSString result) => DataTransferItem -> m result
-getKind self = liftIO (fromJSString <$> (js_getKind self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        DataTransferItem -> IO JSString
+foreign import javascript safe "(($1) => { return $1[\"webkitGetAsEntry\"](); })"
+        js_webkitGetAsEntry :: DataTransferItem -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry MDN DataTransferItem.webkitGetAsEntry documentation>
+webkitGetAsEntry :: (MonadDOM m) => DataTransferItem -> m (Maybe FileSystemEntry)
+webkitGetAsEntry self = liftDOM (((js_webkitGetAsEntry (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.type Mozilla DataTransferItem.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => DataTransferItem -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry MDN DataTransferItem.webkitGetAsEntry documentation>
+webkitGetAsEntry_ :: (MonadDOM m) => DataTransferItem -> m ()
+webkitGetAsEntry_ self = liftDOM (void ((js_webkitGetAsEntry (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry MDN DataTransferItem.webkitGetAsEntry documentation>
+webkitGetAsEntryUnsafe :: (MonadDOM m, HasCallStack) => DataTransferItem -> m FileSystemEntry
+webkitGetAsEntryUnsafe self = liftDOM ((((js_webkitGetAsEntry (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry MDN DataTransferItem.webkitGetAsEntry documentation>
+webkitGetAsEntryUnchecked :: (MonadDOM m) => DataTransferItem -> m FileSystemEntry
+webkitGetAsEntryUnchecked self = liftDOM ((pFromJSVal <$> (js_webkitGetAsEntry (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: DataTransferItem -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/kind MDN DataTransferItem.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => DataTransferItem -> m result
+getKind self = liftDOM ((fromJSString <$> (js_getKind (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: DataTransferItem -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/type MDN DataTransferItem.type documentation>
+getType :: (MonadDOM m, FromJSString result) => DataTransferItem -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
@@ -1,74 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DataTransferItemList
-       (js_item, item, item_, js_clear, clear, js_addFile, addFile,
-        js_add, add, js_getLength, getLength, DataTransferItemList(..),
-        gTypeDataTransferItemList)
+       (js_add, js_addFile, js_clear, js_remove, js_getLength, add, add_, addUnsafe, addUnchecked, addFile, addFile_, addFileUnsafe, addFileUnchecked, clear, remove, getLength, DataTransferItemList(..), gTypeDataTransferItemList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        DataTransferItemList -> Word -> IO DataTransferItem
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
-item ::
-     (MonadIO m) => DataTransferItemList -> Word -> m DataTransferItem
-item self index = liftIO (js_item self index)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })"
+        js_add :: DataTransferItemList -> JSString -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+add :: (MonadDOM m, ToJSString data', ToJSString type') => DataTransferItemList -> data' -> type' -> m (Maybe DataTransferItem)
+add self data' type' = liftDOM (((js_add (self) (toJSString data') (toJSString type')) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
-item_ :: (MonadIO m) => DataTransferItemList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        DataTransferItemList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+add_ :: (MonadDOM m, ToJSString data', ToJSString type') => DataTransferItemList -> data' -> type' -> m ()
+add_ self data' type' = liftDOM (void ((js_add (self) (toJSString data') (toJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.clear Mozilla DataTransferItemList.clear documentation> 
-clear :: (MonadIO m) => DataTransferItemList -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"add\"]($2); })" js_addFile ::
-        DataTransferItemList -> Optional File -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+addUnsafe :: (MonadDOM m, ToJSString data', ToJSString type', HasCallStack) => DataTransferItemList -> data' -> type' -> m DataTransferItem
+addUnsafe self data' type' = liftDOM ((((js_add (self) (toJSString data') (toJSString type')) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
-addFile ::
-        (MonadIO m) => DataTransferItemList -> Maybe File -> m ()
-addFile self file = liftIO (js_addFile self (maybeToOptional file))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_add ::
-        DataTransferItemList ->
-          Optional JSString -> Optional JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+addUnchecked :: (MonadDOM m, ToJSString data', ToJSString type') => DataTransferItemList -> data' -> type' -> m DataTransferItem
+addUnchecked self data' type' = liftDOM ((pFromJSVal <$> (js_add (self) (toJSString data') (toJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
-add ::
-    (MonadIO m, ToJSString data', ToJSString type') =>
-      DataTransferItemList -> Maybe data' -> Maybe type' -> m ()
-add self data' type'
-  = liftIO
-      (js_add self (toOptionalJSString data') (toOptionalJSString type'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        DataTransferItemList -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"add\"]($2); })"
+        js_addFile :: DataTransferItemList -> File -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+addFile :: (MonadDOM m) => DataTransferItemList -> File -> m (Maybe DataTransferItem)
+addFile self data' = liftDOM (((js_addFile (self) (data')) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.length Mozilla DataTransferItemList.length documentation> 
-getLength :: (MonadIO m) => DataTransferItemList -> m Int
-getLength self = liftIO (js_getLength self)
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+addFile_ :: (MonadDOM m) => DataTransferItemList -> File -> m ()
+addFile_ self data' = liftDOM (void ((js_addFile (self) (data'))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+addFileUnsafe :: (MonadDOM m, HasCallStack) => DataTransferItemList -> File -> m DataTransferItem
+addFileUnsafe self data' = liftDOM ((((js_addFile (self) (data')) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+addFileUnchecked :: (MonadDOM m) => DataTransferItemList -> File -> m DataTransferItem
+addFileUnchecked self data' = liftDOM ((pFromJSVal <$> (js_addFile (self) (data'))))
+
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: DataTransferItemList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/clear MDN DataTransferItemList.clear documentation>
+clear :: (MonadDOM m) => DataTransferItemList -> m ()
+clear self = liftDOM (void ((js_clear (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"remove\"]($2); })"
+        js_remove :: DataTransferItemList -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/remove MDN DataTransferItemList.remove documentation>
+remove :: (MonadDOM m) => DataTransferItemList -> Word -> m ()
+remove self index = liftDOM (void ((js_remove (self) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: DataTransferItemList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/length MDN DataTransferItemList.length documentation>
+getLength :: (MonadDOM m) => DataTransferItemList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Database.hs b/src/GHCJS/DOM/JSFFI/Generated/Database.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/Database.hs
+++ /dev/null
@@ -1,98 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Database
-       (js_changeVersion, changeVersion, js_transaction, transaction,
-        js_readTransaction, readTransaction, js_getVersion, getVersion,
-        Database(..), gTypeDatabase)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"changeVersion\"]($2, $3, $4,\n$5, $6); })" js_changeVersion ::
-        Database ->
-          JSString ->
-            JSString ->
-              Optional SQLTransactionCallback ->
-                Optional SQLTransactionErrorCallback ->
-                  Optional VoidCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation> 
-changeVersion ::
-              (MonadIO m, ToJSString oldVersion, ToJSString newVersion) =>
-                Database ->
-                  oldVersion ->
-                    newVersion ->
-                      Maybe SQLTransactionCallback ->
-                        Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
-changeVersion self oldVersion newVersion callback errorCallback
-  successCallback
-  = liftIO
-      (js_changeVersion self (toJSString oldVersion)
-         (toJSString newVersion)
-         (maybeToOptional callback)
-         (maybeToOptional errorCallback)
-         (maybeToOptional successCallback))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"transaction\"]($2, $3, $4); })"
-        js_transaction ::
-        Database ->
-          SQLTransactionCallback ->
-            Optional SQLTransactionErrorCallback ->
-              Optional VoidCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation> 
-transaction ::
-            (MonadIO m) =>
-              Database ->
-                SQLTransactionCallback ->
-                  Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
-transaction self callback errorCallback successCallback
-  = liftIO
-      (js_transaction self callback (maybeToOptional errorCallback)
-         (maybeToOptional successCallback))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"readTransaction\"]($2, $3,\n$4); })" js_readTransaction ::
-        Database ->
-          SQLTransactionCallback ->
-            Optional SQLTransactionErrorCallback ->
-              Optional VoidCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation> 
-readTransaction ::
-                (MonadIO m) =>
-                  Database ->
-                    SQLTransactionCallback ->
-                      Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
-readTransaction self callback errorCallback successCallback
-  = liftIO
-      (js_readTransaction self callback (maybeToOptional errorCallback)
-         (maybeToOptional successCallback))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })" js_getVersion ::
-        Database -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.version Mozilla Database.version documentation> 
-getVersion ::
-           (MonadIO m, FromJSString result) => Database -> m result
-getVersion self = liftIO (fromJSString <$> (js_getVersion self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.DatabaseCallback
-       (newDatabaseCallback, newDatabaseCallbackSync,
-        newDatabaseCallbackAsync, DatabaseCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
-newDatabaseCallback ::
-                    (MonadIO m) => (Database -> IO ()) -> m DatabaseCallback
-newDatabaseCallback callback
-  = liftIO
-      (DatabaseCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ database ->
-              fromJSValUnchecked database >>= \ database' -> callback database'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
-newDatabaseCallbackSync ::
-                        (MonadIO m) => (Database -> IO ()) -> m DatabaseCallback
-newDatabaseCallbackSync callback
-  = liftIO
-      (DatabaseCallback <$>
-         syncCallback1 ContinueAsync
-           (\ database ->
-              fromJSValUnchecked database >>= \ database' -> callback database'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
-newDatabaseCallbackAsync ::
-                         (MonadIO m) => (Database -> IO ()) -> m DatabaseCallback
-newDatabaseCallbackAsync callback
-  = liftIO
-      (DatabaseCallback <$>
-         asyncCallback1
-           (\ database ->
-              fromJSValUnchecked database >>= \ database' -> callback database'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DecodeErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/DecodeErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DecodeErrorCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DecodeErrorCallback
+       (newDecodeErrorCallback, newDecodeErrorCallbackSync, newDecodeErrorCallbackAsync, DecodeErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newDecodeErrorCallback :: (MonadDOM m) => (DOMException -> IO ()) -> m DecodeErrorCallback
+newDecodeErrorCallback callback = liftDOM ((DecodeErrorCallback . coerce) <$> syncCallback1 ContinueAsync (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newDecodeErrorCallbackSync :: (MonadDOM m) => (DOMException -> IO ()) -> m DecodeErrorCallback
+newDecodeErrorCallbackSync callback = liftDOM ((DecodeErrorCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newDecodeErrorCallbackAsync :: (MonadDOM m) => (DOMException -> IO ()) -> m DecodeErrorCallback
+newDecodeErrorCallbackAsync callback = liftDOM ((DecodeErrorCallback . coerce) <$> asyncCallback1 (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DecodeSuccessCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/DecodeSuccessCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DecodeSuccessCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DecodeSuccessCallback
+       (newDecodeSuccessCallback, newDecodeSuccessCallbackSync, newDecodeSuccessCallbackAsync, DecodeSuccessCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newDecodeSuccessCallback :: (MonadDOM m) => (AudioBuffer -> IO ()) -> m DecodeSuccessCallback
+newDecodeSuccessCallback callback = liftDOM ((DecodeSuccessCallback . coerce) <$> syncCallback1 ContinueAsync (\ decodedData -> do
+          decodedData' <- fromJSValUnchecked decodedData
+          callback decodedData'))
+
+newDecodeSuccessCallbackSync :: (MonadDOM m) => (AudioBuffer -> IO ()) -> m DecodeSuccessCallback
+newDecodeSuccessCallbackSync callback = liftDOM ((DecodeSuccessCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ decodedData -> do
+          decodedData' <- fromJSValUnchecked decodedData
+          callback decodedData'))
+
+newDecodeSuccessCallbackAsync :: (MonadDOM m) => (AudioBuffer -> IO ()) -> m DecodeSuccessCallback
+newDecodeSuccessCallbackAsync callback = liftDOM ((DecodeSuccessCallback . coerce) <$> asyncCallback1 (\ decodedData -> do
+          decodedData' <- fromJSValUnchecked decodedData
+          callback decodedData'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DecompressionStream.hs b/src/GHCJS/DOM/JSFFI/Generated/DecompressionStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DecompressionStream.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from compression (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DecompressionStream
+       (js_newDecompressionStream, newDecompressionStream, DecompressionStream(..), gTypeDecompressionStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"DecompressionStream\"]($1); })"
+        js_newDecompressionStream :: JSVal -> IO DecompressionStream
+-- | <https://developer.mozilla.org/docs/Web/API/DecompressionStream/DecompressionStream MDN DecompressionStream. documentation>
+newDecompressionStream :: (MonadDOM m) => CompressionFormat -> m DecompressionStream
+newDecompressionStream format = liftDOM (((toJSVal format) >>= \a1' -> js_newDecompressionStream a1'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
@@ -1,46 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
-       (js_postMessage, postMessage, message,
-        DedicatedWorkerGlobalScope(..), gTypeDedicatedWorkerGlobalScope)
+       (js_close, js_postMessage, js_postMessageOptions, js_getName, close, postMessage, postMessageOptions, getName, rtctransform, DedicatedWorkerGlobalScope(..), gTypeDedicatedWorkerGlobalScope)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: DedicatedWorkerGlobalScope -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/close MDN DedicatedWorkerGlobalScope.close documentation>
+close :: (MonadDOM m) => DedicatedWorkerGlobalScope -> m ()
+close self = liftDOM (void ((js_close (self))))
+
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
-        js_postMessage ::
-        DedicatedWorkerGlobalScope -> JSVal -> JSVal -> IO ()
+        js_postMessage :: DedicatedWorkerGlobalScope -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/postMessage MDN DedicatedWorkerGlobalScope.postMessage documentation>
+postMessage :: (MonadDOM m) => DedicatedWorkerGlobalScope -> JSVal -> [GObject] -> m ()
+postMessage self message transfer = liftDOM (void (((toJSVal transfer) >>= \a3' -> js_postMessage (self) (message) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
-postMessage ::
-            (MonadIO m, ToJSVal message, IsGObject transfer) =>
-              DedicatedWorkerGlobalScope -> message -> [transfer] -> m ()
-postMessage self message transfer
-  = liftIO
-      (toJSVal transfer >>=
-         \ transfer' ->
-           toJSVal message >>= \ message' -> js_postMessage self message'
-             transfer')
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessageOptions :: DedicatedWorkerGlobalScope -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/postMessage MDN DedicatedWorkerGlobalScope.postMessage documentation>
+postMessageOptions :: (MonadDOM m, IsStructuredSerializeOptions options) => DedicatedWorkerGlobalScope -> JSVal -> Maybe options -> m ()
+postMessageOptions self message options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postMessageOptions (self) (message) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.onmessage Mozilla DedicatedWorkerGlobalScope.onmessage documentation> 
-message :: EventName DedicatedWorkerGlobalScope MessageEvent
-message = unsafeEventNameAsync (toJSString "message")
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: DedicatedWorkerGlobalScope -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/name MDN DedicatedWorkerGlobalScope.name documentation>
+getName :: (MonadDOM m, FromJSString result) => DedicatedWorkerGlobalScope -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-dedicatedworkerglobalscope-onrtctransform rtctransform event>
+rtctransform :: EventName DedicatedWorkerGlobalScope RTCTransformEvent
+rtctransform = unsafeEventName (toJSString "rtctransform")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs b/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
@@ -1,33 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DelayNode
-       (js_getDelayTime, getDelayTime, DelayNode(..), gTypeDelayNode)
+       (js_newDelayNode, js_getDelayTime, newDelayNode, getDelayTime, DelayNode(..), gTypeDelayNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"DelayNode\"]($1, $2); })"
+        js_newDelayNode :: BaseAudioContext -> JSVal -> IO DelayNode
+-- | <https://developer.mozilla.org/docs/Web/API/DelayNode/DelayNode MDN DelayNode. documentation>
+newDelayNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe DelayOptions -> m DelayNode
+newDelayNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newDelayNode (Types.toBaseAudioContext context) a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"delayTime\"]; })"
         js_getDelayTime :: DelayNode -> IO AudioParam
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
-getDelayTime :: (MonadIO m) => DelayNode -> m AudioParam
-getDelayTime self = liftIO (js_getDelayTime self)
+-- | <https://developer.mozilla.org/docs/Web/API/DelayNode/delayTime MDN DelayNode.delayTime documentation>
+getDelayTime :: (MonadDOM m) => DelayNode -> m AudioParam
+getDelayTime self = liftDOM ((js_getDelayTime (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DelayOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/DelayOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DelayOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DelayOptions
+       (js_newDelayOptions, js_setMaxDelayTime, js_getMaxDelayTime, js_setDelayTime, js_getDelayTime, newDelayOptions, setMaxDelayTime, getMaxDelayTime, getMaxDelayTimeUnsafe, getMaxDelayTimeUnchecked, setDelayTime, getDelayTime, getDelayTimeUnsafe, getDelayTimeUnchecked, DelayOptions(..), gTypeDelayOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDelayOptions :: IO DelayOptions
+-- | <https://webaudio.github.io/web-audio-api/#DelayOptions DelayOptions specification>
+newDelayOptions :: (MonadDOM m) => m DelayOptions
+newDelayOptions = liftDOM ((js_newDelayOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxDelayTime\"] = $2; })"
+        js_setMaxDelayTime :: DelayOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-maxdelaytime DelayOptions.maxDelayTime specification>
+setMaxDelayTime :: (MonadDOM m) => DelayOptions -> Double -> m ()
+setMaxDelayTime self val = liftDOM (void ((js_setMaxDelayTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxDelayTime\"]; })"
+        js_getMaxDelayTime :: DelayOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-maxdelaytime DelayOptions.maxDelayTime specification>
+getMaxDelayTime :: (MonadDOM m) => DelayOptions -> m (Maybe Double)
+getMaxDelayTime self = liftDOM (((js_getMaxDelayTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-maxdelaytime DelayOptions.maxDelayTime specification>
+getMaxDelayTimeUnsafe :: (MonadDOM m, HasCallStack) => DelayOptions -> m Double
+getMaxDelayTimeUnsafe self = liftDOM ((((js_getMaxDelayTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-maxdelaytime DelayOptions.maxDelayTime specification>
+getMaxDelayTimeUnchecked :: (MonadDOM m) => DelayOptions -> m Double
+getMaxDelayTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxDelayTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"delayTime\"] = $2; })"
+        js_setDelayTime :: DelayOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-delaytime DelayOptions.delayTime specification>
+setDelayTime :: (MonadDOM m) => DelayOptions -> Double -> m ()
+setDelayTime self val = liftDOM (void ((js_setDelayTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"delayTime\"]; })"
+        js_getDelayTime :: DelayOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-delaytime DelayOptions.delayTime specification>
+getDelayTime :: (MonadDOM m) => DelayOptions -> m (Maybe Double)
+getDelayTime self = liftDOM (((js_getDelayTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-delaytime DelayOptions.delayTime specification>
+getDelayTimeUnsafe :: (MonadDOM m, HasCallStack) => DelayOptions -> m Double
+getDelayTimeUnsafe self = liftDOM ((((js_getDelayTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-delaytime DelayOptions.delayTime specification>
+getDelayTimeUnchecked :: (MonadDOM m) => DelayOptions -> m Double
+getDelayTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDelayTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceChangeEvent.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DeviceChangeEvent
+       (DeviceChangeEvent(..), gTypeDeviceChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
@@ -1,164 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
-       (js_initDeviceMotionEvent, initDeviceMotionEvent,
-        js_getAcceleration, getAcceleration, getAccelerationUnsafe,
-        getAccelerationUnchecked, js_getAccelerationIncludingGravity,
-        getAccelerationIncludingGravity,
-        getAccelerationIncludingGravityUnsafe,
-        getAccelerationIncludingGravityUnchecked, js_getRotationRate,
-        getRotationRate, getRotationRateUnsafe, getRotationRateUnchecked,
-        js_getInterval, getInterval, getIntervalUnsafe,
-        getIntervalUnchecked, DeviceMotionEvent(..),
-        gTypeDeviceMotionEvent)
+       (js_newDeviceMotionEvent, js_getAcceleration, js_getAccelerationIncludingGravity, js_getRotationRate, js_getInterval, newDeviceMotionEvent, getAcceleration, getAccelerationUnsafe, getAccelerationUnchecked, getAccelerationIncludingGravity, getAccelerationIncludingGravityUnsafe, getAccelerationIncludingGravityUnchecked, getRotationRate, getRotationRateUnsafe, getRotationRateUnchecked, getInterval, DeviceMotionEvent(..), gTypeDeviceMotionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"initDeviceMotionEvent\"]($2,\n$3, $4, $5, $6, $7, $8); })"
-        js_initDeviceMotionEvent ::
-        DeviceMotionEvent ->
-          Optional JSString ->
-            Bool ->
-              Bool ->
-                Optional Acceleration ->
-                  Optional Acceleration ->
-                    Optional RotationRate -> Optional Double -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.initDeviceMotionEvent Mozilla DeviceMotionEvent.initDeviceMotionEvent documentation> 
-initDeviceMotionEvent ::
-                      (MonadIO m, ToJSString type') =>
-                        DeviceMotionEvent ->
-                          Maybe type' ->
-                            Bool ->
-                              Bool ->
-                                Maybe Acceleration ->
-                                  Maybe Acceleration -> Maybe RotationRate -> Maybe Double -> m ()
-initDeviceMotionEvent self type' bubbles cancelable acceleration
-  accelerationIncludingGravity rotationRate interval
-  = liftIO
-      (js_initDeviceMotionEvent self (toOptionalJSString type') bubbles
-         cancelable
-         (maybeToOptional acceleration)
-         (maybeToOptional accelerationIncludingGravity)
-         (maybeToOptional rotationRate)
-         (maybeToOptional interval))
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"DeviceMotionEvent\"]($1, $2); })"
+        js_newDeviceMotionEvent :: JSString -> JSVal -> IO DeviceMotionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent MDN DeviceMotionEvent. documentation>
+newDeviceMotionEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe DeviceMotionEventInit -> m DeviceMotionEvent
+newDeviceMotionEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newDeviceMotionEvent (toJSString type') a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"acceleration\"]; })"
-        js_getAcceleration ::
-        DeviceMotionEvent -> IO (Nullable Acceleration)
+        js_getAcceleration :: DeviceMotionEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/acceleration MDN DeviceMotionEvent.acceleration documentation>
+getAcceleration :: (MonadDOM m) => DeviceMotionEvent -> m (Maybe DeviceMotionEventAcceleration)
+getAcceleration self = liftDOM (((js_getAcceleration (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
-getAcceleration ::
-                (MonadIO m) => DeviceMotionEvent -> m (Maybe Acceleration)
-getAcceleration self
-  = liftIO (nullableToMaybe <$> (js_getAcceleration self))
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/acceleration MDN DeviceMotionEvent.acceleration documentation>
+getAccelerationUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventAcceleration
+getAccelerationUnsafe self = liftDOM ((((js_getAcceleration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
-getAccelerationUnsafe ::
-                      (MonadIO m, HasCallStack) => DeviceMotionEvent -> m Acceleration
-getAccelerationUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAcceleration self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/acceleration MDN DeviceMotionEvent.acceleration documentation>
+getAccelerationUnchecked :: (MonadDOM m) => DeviceMotionEvent -> m DeviceMotionEventAcceleration
+getAccelerationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAcceleration (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
-getAccelerationUnchecked ::
-                         (MonadIO m) => DeviceMotionEvent -> m Acceleration
-getAccelerationUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getAcceleration self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"accelerationIncludingGravity\"]; })"
-        js_getAccelerationIncludingGravity ::
-        DeviceMotionEvent -> IO (Nullable Acceleration)
+foreign import javascript unsafe "(($1) => { return $1[\"accelerationIncludingGravity\"]; })"
+        js_getAccelerationIncludingGravity :: DeviceMotionEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/accelerationIncludingGravity MDN DeviceMotionEvent.accelerationIncludingGravity documentation>
+getAccelerationIncludingGravity :: (MonadDOM m) => DeviceMotionEvent -> m (Maybe DeviceMotionEventAcceleration)
+getAccelerationIncludingGravity self = liftDOM (((js_getAccelerationIncludingGravity (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
-getAccelerationIncludingGravity ::
-                                (MonadIO m) => DeviceMotionEvent -> m (Maybe Acceleration)
-getAccelerationIncludingGravity self
-  = liftIO
-      (nullableToMaybe <$> (js_getAccelerationIncludingGravity self))
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/accelerationIncludingGravity MDN DeviceMotionEvent.accelerationIncludingGravity documentation>
+getAccelerationIncludingGravityUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventAcceleration
+getAccelerationIncludingGravityUnsafe self = liftDOM ((((js_getAccelerationIncludingGravity (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
-getAccelerationIncludingGravityUnsafe ::
-                                      (MonadIO m, HasCallStack) =>
-                                        DeviceMotionEvent -> m Acceleration
-getAccelerationIncludingGravityUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAccelerationIncludingGravity self))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/accelerationIncludingGravity MDN DeviceMotionEvent.accelerationIncludingGravity documentation>
+getAccelerationIncludingGravityUnchecked :: (MonadDOM m) => DeviceMotionEvent -> m DeviceMotionEventAcceleration
+getAccelerationIncludingGravityUnchecked self = liftDOM ((pFromJSVal <$> (js_getAccelerationIncludingGravity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
-getAccelerationIncludingGravityUnchecked ::
-                                         (MonadIO m) => DeviceMotionEvent -> m Acceleration
-getAccelerationIncludingGravityUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getAccelerationIncludingGravity self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"rotationRate\"]; })"
-        js_getRotationRate ::
-        DeviceMotionEvent -> IO (Nullable RotationRate)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
-getRotationRate ::
-                (MonadIO m) => DeviceMotionEvent -> m (Maybe RotationRate)
-getRotationRate self
-  = liftIO (nullableToMaybe <$> (js_getRotationRate self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
-getRotationRateUnsafe ::
-                      (MonadIO m, HasCallStack) => DeviceMotionEvent -> m RotationRate
-getRotationRateUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getRotationRate self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
-getRotationRateUnchecked ::
-                         (MonadIO m) => DeviceMotionEvent -> m RotationRate
-getRotationRateUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getRotationRate self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"interval\"]; })" js_getInterval
-        :: DeviceMotionEvent -> IO (Nullable Double)
+        js_getRotationRate :: DeviceMotionEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/rotationRate MDN DeviceMotionEvent.rotationRate documentation>
+getRotationRate :: (MonadDOM m) => DeviceMotionEvent -> m (Maybe DeviceMotionEventRotationRate)
+getRotationRate self = liftDOM (((js_getRotationRate (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
-getInterval :: (MonadIO m) => DeviceMotionEvent -> m (Maybe Double)
-getInterval self
-  = liftIO (nullableToMaybe <$> (js_getInterval self))
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/rotationRate MDN DeviceMotionEvent.rotationRate documentation>
+getRotationRateUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventRotationRate
+getRotationRateUnsafe self = liftDOM ((((js_getRotationRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
-getIntervalUnsafe ::
-                  (MonadIO m, HasCallStack) => DeviceMotionEvent -> m Double
-getIntervalUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getInterval self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/rotationRate MDN DeviceMotionEvent.rotationRate documentation>
+getRotationRateUnchecked :: (MonadDOM m) => DeviceMotionEvent -> m DeviceMotionEventRotationRate
+getRotationRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getRotationRate (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
-getIntervalUnchecked ::
-                     (MonadIO m) => DeviceMotionEvent -> m Double
-getIntervalUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getInterval self))
+foreign import javascript unsafe "(($1) => { return $1[\"interval\"]; })"
+        js_getInterval :: DeviceMotionEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/interval MDN DeviceMotionEvent.interval documentation>
+getInterval :: (MonadDOM m) => DeviceMotionEvent -> m Double
+getInterval self = liftDOM ((js_getInterval (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventAcceleration.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventAcceleration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventAcceleration.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DeviceMotionEventAcceleration
+       (js_getX, js_getY, js_getZ, getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked, getZ, getZUnsafe, getZUnchecked, DeviceMotionEventAcceleration(..), gTypeDeviceMotionEventAcceleration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DeviceMotionEventAcceleration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/x MDN DeviceMotionEventAcceleration.x documentation>
+getX :: (MonadDOM m) => DeviceMotionEventAcceleration -> m (Maybe Double)
+getX self = liftDOM (((js_getX (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/x MDN DeviceMotionEventAcceleration.x documentation>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAcceleration -> m Double
+getXUnsafe self = liftDOM ((((js_getX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/x MDN DeviceMotionEventAcceleration.x documentation>
+getXUnchecked :: (MonadDOM m) => DeviceMotionEventAcceleration -> m Double
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DeviceMotionEventAcceleration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/y MDN DeviceMotionEventAcceleration.y documentation>
+getY :: (MonadDOM m) => DeviceMotionEventAcceleration -> m (Maybe Double)
+getY self = liftDOM (((js_getY (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/y MDN DeviceMotionEventAcceleration.y documentation>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAcceleration -> m Double
+getYUnsafe self = liftDOM ((((js_getY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/y MDN DeviceMotionEventAcceleration.y documentation>
+getYUnchecked :: (MonadDOM m) => DeviceMotionEventAcceleration -> m Double
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: DeviceMotionEventAcceleration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/z MDN DeviceMotionEventAcceleration.z documentation>
+getZ :: (MonadDOM m) => DeviceMotionEventAcceleration -> m (Maybe Double)
+getZ self = liftDOM (((js_getZ (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/z MDN DeviceMotionEventAcceleration.z documentation>
+getZUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAcceleration -> m Double
+getZUnsafe self = liftDOM ((((js_getZ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/z MDN DeviceMotionEventAcceleration.z documentation>
+getZUnchecked :: (MonadDOM m) => DeviceMotionEventAcceleration -> m Double
+getZUnchecked self = liftDOM ((pFromJSVal <$> (js_getZ (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventAccelerationInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventAccelerationInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventAccelerationInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DeviceMotionEventAccelerationInit
+       (js_newDeviceMotionEventAccelerationInit, js_setX, js_getX, js_setY, js_getY, js_setZ, js_getZ, newDeviceMotionEventAccelerationInit, setX, getX, getXUnsafe, getXUnchecked, setY, getY, getYUnsafe, getYUnchecked, setZ, getZ, getZUnsafe, getZUnchecked, DeviceMotionEventAccelerationInit(..), gTypeDeviceMotionEventAccelerationInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDeviceMotionEventAccelerationInit :: IO DeviceMotionEventAccelerationInit
+-- | <https://w3c.github.io/deviceorientation/#dictdef-devicemotioneventaccelerationinit DeviceMotionEventAccelerationInit specification>
+newDeviceMotionEventAccelerationInit :: (MonadDOM m) => m DeviceMotionEventAccelerationInit
+newDeviceMotionEventAccelerationInit = liftDOM ((js_newDeviceMotionEventAccelerationInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: DeviceMotionEventAccelerationInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-x DeviceMotionEventAccelerationInit.x specification>
+setX :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> Maybe Double -> m ()
+setX self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setX (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: DeviceMotionEventAccelerationInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-x DeviceMotionEventAccelerationInit.x specification>
+getX :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m (Maybe Double)
+getX self = liftDOM (((js_getX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-x DeviceMotionEventAccelerationInit.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAccelerationInit -> m Double
+getXUnsafe self = liftDOM ((((js_getX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-x DeviceMotionEventAccelerationInit.x specification>
+getXUnchecked :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m Double
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: DeviceMotionEventAccelerationInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-y DeviceMotionEventAccelerationInit.y specification>
+setY :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> Maybe Double -> m ()
+setY self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setY (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: DeviceMotionEventAccelerationInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-y DeviceMotionEventAccelerationInit.y specification>
+getY :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m (Maybe Double)
+getY self = liftDOM (((js_getY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-y DeviceMotionEventAccelerationInit.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAccelerationInit -> m Double
+getYUnsafe self = liftDOM ((((js_getY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-y DeviceMotionEventAccelerationInit.y specification>
+getYUnchecked :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m Double
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"z\"] = $2; })"
+        js_setZ :: DeviceMotionEventAccelerationInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-z DeviceMotionEventAccelerationInit.z specification>
+setZ :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> Maybe Double -> m ()
+setZ self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setZ (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: DeviceMotionEventAccelerationInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-z DeviceMotionEventAccelerationInit.z specification>
+getZ :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m (Maybe Double)
+getZ self = liftDOM (((js_getZ (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-z DeviceMotionEventAccelerationInit.z specification>
+getZUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAccelerationInit -> m Double
+getZUnsafe self = liftDOM ((((js_getZ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-z DeviceMotionEventAccelerationInit.z specification>
+getZUnchecked :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m Double
+getZUnchecked self = liftDOM ((pFromJSVal <$> (js_getZ (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DeviceMotionEventInit
+       (js_newDeviceMotionEventInit, js_setAcceleration, js_getAcceleration, js_setAccelerationIncludingGravity, js_getAccelerationIncludingGravity, js_setRotationRate, js_getRotationRate, js_setInterval, js_getInterval, newDeviceMotionEventInit, setAcceleration, getAcceleration, getAccelerationUnsafe, getAccelerationUnchecked, setAccelerationIncludingGravity, getAccelerationIncludingGravity, getAccelerationIncludingGravityUnsafe, getAccelerationIncludingGravityUnchecked, setRotationRate, getRotationRate, getRotationRateUnsafe, getRotationRateUnchecked, setInterval, getInterval, getIntervalUnsafe, getIntervalUnchecked, DeviceMotionEventInit(..), gTypeDeviceMotionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDeviceMotionEventInit :: IO DeviceMotionEventInit
+-- | <https://w3c.github.io/deviceorientation/#dictdef-devicemotioneventinit DeviceMotionEventInit specification>
+newDeviceMotionEventInit :: (MonadDOM m) => m DeviceMotionEventInit
+newDeviceMotionEventInit = liftDOM ((js_newDeviceMotionEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"acceleration\"] = $2; })"
+        js_setAcceleration :: DeviceMotionEventInit -> DeviceMotionEventAccelerationInit -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-acceleration DeviceMotionEventInit.acceleration specification>
+setAcceleration :: (MonadDOM m) => DeviceMotionEventInit -> DeviceMotionEventAccelerationInit -> m ()
+setAcceleration self val = liftDOM (void ((js_setAcceleration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"acceleration\"]; })"
+        js_getAcceleration :: DeviceMotionEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-acceleration DeviceMotionEventInit.acceleration specification>
+getAcceleration :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe DeviceMotionEventAccelerationInit)
+getAcceleration self = liftDOM (((js_getAcceleration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-acceleration DeviceMotionEventInit.acceleration specification>
+getAccelerationUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m DeviceMotionEventAccelerationInit
+getAccelerationUnsafe self = liftDOM ((((js_getAcceleration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-acceleration DeviceMotionEventInit.acceleration specification>
+getAccelerationUnchecked :: (MonadDOM m) => DeviceMotionEventInit -> m DeviceMotionEventAccelerationInit
+getAccelerationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAcceleration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"accelerationIncludingGravity\"] = $2; })"
+        js_setAccelerationIncludingGravity :: DeviceMotionEventInit -> DeviceMotionEventAccelerationInit -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-accelerationincludinggravity DeviceMotionEventInit.accelerationIncludingGravity specification>
+setAccelerationIncludingGravity :: (MonadDOM m) => DeviceMotionEventInit -> DeviceMotionEventAccelerationInit -> m ()
+setAccelerationIncludingGravity self val = liftDOM (void ((js_setAccelerationIncludingGravity (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"accelerationIncludingGravity\"]; })"
+        js_getAccelerationIncludingGravity :: DeviceMotionEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-accelerationincludinggravity DeviceMotionEventInit.accelerationIncludingGravity specification>
+getAccelerationIncludingGravity :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe DeviceMotionEventAccelerationInit)
+getAccelerationIncludingGravity self = liftDOM (((js_getAccelerationIncludingGravity (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-accelerationincludinggravity DeviceMotionEventInit.accelerationIncludingGravity specification>
+getAccelerationIncludingGravityUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m DeviceMotionEventAccelerationInit
+getAccelerationIncludingGravityUnsafe self = liftDOM ((((js_getAccelerationIncludingGravity (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-accelerationincludinggravity DeviceMotionEventInit.accelerationIncludingGravity specification>
+getAccelerationIncludingGravityUnchecked :: (MonadDOM m) => DeviceMotionEventInit -> m DeviceMotionEventAccelerationInit
+getAccelerationIncludingGravityUnchecked self = liftDOM ((pFromJSVal <$> (js_getAccelerationIncludingGravity (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rotationRate\"] = $2; })"
+        js_setRotationRate :: DeviceMotionEventInit -> DeviceMotionEventRotationRateInit -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-rotationrate DeviceMotionEventInit.rotationRate specification>
+setRotationRate :: (MonadDOM m) => DeviceMotionEventInit -> DeviceMotionEventRotationRateInit -> m ()
+setRotationRate self val = liftDOM (void ((js_setRotationRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rotationRate\"]; })"
+        js_getRotationRate :: DeviceMotionEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-rotationrate DeviceMotionEventInit.rotationRate specification>
+getRotationRate :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe DeviceMotionEventRotationRateInit)
+getRotationRate self = liftDOM (((js_getRotationRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-rotationrate DeviceMotionEventInit.rotationRate specification>
+getRotationRateUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m DeviceMotionEventRotationRateInit
+getRotationRateUnsafe self = liftDOM ((((js_getRotationRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-rotationrate DeviceMotionEventInit.rotationRate specification>
+getRotationRateUnchecked :: (MonadDOM m) => DeviceMotionEventInit -> m DeviceMotionEventRotationRateInit
+getRotationRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getRotationRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"interval\"] = $2; })"
+        js_setInterval :: DeviceMotionEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-interval DeviceMotionEventInit.interval specification>
+setInterval :: (MonadDOM m) => DeviceMotionEventInit -> Double -> m ()
+setInterval self val = liftDOM (void ((js_setInterval (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"interval\"]; })"
+        js_getInterval :: DeviceMotionEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-interval DeviceMotionEventInit.interval specification>
+getInterval :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe Double)
+getInterval self = liftDOM (((js_getInterval (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-interval DeviceMotionEventInit.interval specification>
+getIntervalUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m Double
+getIntervalUnsafe self = liftDOM ((((js_getInterval (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-interval DeviceMotionEventInit.interval specification>
+getIntervalUnchecked :: (MonadDOM m) => DeviceMotionEventInit -> m Double
+getIntervalUnchecked self = liftDOM ((pFromJSVal <$> (js_getInterval (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventRotationRate.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventRotationRate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventRotationRate.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DeviceMotionEventRotationRate
+       (js_getAlpha, js_getBeta, js_getGamma, getAlpha, getAlphaUnsafe, getAlphaUnchecked, getBeta, getBetaUnsafe, getBetaUnchecked, getGamma, getGammaUnsafe, getGammaUnchecked, DeviceMotionEventRotationRate(..), gTypeDeviceMotionEventRotationRate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: DeviceMotionEventRotationRate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/alpha MDN DeviceMotionEventRotationRate.alpha documentation>
+getAlpha :: (MonadDOM m) => DeviceMotionEventRotationRate -> m (Maybe Double)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/alpha MDN DeviceMotionEventRotationRate.alpha documentation>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRate -> m Double
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/alpha MDN DeviceMotionEventRotationRate.alpha documentation>
+getAlphaUnchecked :: (MonadDOM m) => DeviceMotionEventRotationRate -> m Double
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"beta\"]; })"
+        js_getBeta :: DeviceMotionEventRotationRate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/beta MDN DeviceMotionEventRotationRate.beta documentation>
+getBeta :: (MonadDOM m) => DeviceMotionEventRotationRate -> m (Maybe Double)
+getBeta self = liftDOM (((js_getBeta (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/beta MDN DeviceMotionEventRotationRate.beta documentation>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRate -> m Double
+getBetaUnsafe self = liftDOM ((((js_getBeta (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/beta MDN DeviceMotionEventRotationRate.beta documentation>
+getBetaUnchecked :: (MonadDOM m) => DeviceMotionEventRotationRate -> m Double
+getBetaUnchecked self = liftDOM ((pFromJSVal <$> (js_getBeta (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gamma\"]; })"
+        js_getGamma :: DeviceMotionEventRotationRate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/gamma MDN DeviceMotionEventRotationRate.gamma documentation>
+getGamma :: (MonadDOM m) => DeviceMotionEventRotationRate -> m (Maybe Double)
+getGamma self = liftDOM (((js_getGamma (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/gamma MDN DeviceMotionEventRotationRate.gamma documentation>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRate -> m Double
+getGammaUnsafe self = liftDOM ((((js_getGamma (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/gamma MDN DeviceMotionEventRotationRate.gamma documentation>
+getGammaUnchecked :: (MonadDOM m) => DeviceMotionEventRotationRate -> m Double
+getGammaUnchecked self = liftDOM ((pFromJSVal <$> (js_getGamma (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventRotationRateInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventRotationRateInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEventRotationRateInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DeviceMotionEventRotationRateInit
+       (js_newDeviceMotionEventRotationRateInit, js_setAlpha, js_getAlpha, js_setBeta, js_getBeta, js_setGamma, js_getGamma, newDeviceMotionEventRotationRateInit, setAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked, setBeta, getBeta, getBetaUnsafe, getBetaUnchecked, setGamma, getGamma, getGammaUnsafe, getGammaUnchecked, DeviceMotionEventRotationRateInit(..), gTypeDeviceMotionEventRotationRateInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDeviceMotionEventRotationRateInit :: IO DeviceMotionEventRotationRateInit
+-- | <https://w3c.github.io/deviceorientation/#dictdef-devicemotioneventrotationrateinit DeviceMotionEventRotationRateInit specification>
+newDeviceMotionEventRotationRateInit :: (MonadDOM m) => m DeviceMotionEventRotationRateInit
+newDeviceMotionEventRotationRateInit = liftDOM ((js_newDeviceMotionEventRotationRateInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alpha\"] = $2; })"
+        js_setAlpha :: DeviceMotionEventRotationRateInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-alpha DeviceMotionEventRotationRateInit.alpha specification>
+setAlpha :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> Maybe Double -> m ()
+setAlpha self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAlpha (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: DeviceMotionEventRotationRateInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-alpha DeviceMotionEventRotationRateInit.alpha specification>
+getAlpha :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m (Maybe Double)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-alpha DeviceMotionEventRotationRateInit.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRateInit -> m Double
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-alpha DeviceMotionEventRotationRateInit.alpha specification>
+getAlphaUnchecked :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m Double
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"beta\"] = $2; })"
+        js_setBeta :: DeviceMotionEventRotationRateInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-beta DeviceMotionEventRotationRateInit.beta specification>
+setBeta :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> Maybe Double -> m ()
+setBeta self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBeta (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"beta\"]; })"
+        js_getBeta :: DeviceMotionEventRotationRateInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-beta DeviceMotionEventRotationRateInit.beta specification>
+getBeta :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m (Maybe Double)
+getBeta self = liftDOM (((js_getBeta (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-beta DeviceMotionEventRotationRateInit.beta specification>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRateInit -> m Double
+getBetaUnsafe self = liftDOM ((((js_getBeta (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-beta DeviceMotionEventRotationRateInit.beta specification>
+getBetaUnchecked :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m Double
+getBetaUnchecked self = liftDOM ((pFromJSVal <$> (js_getBeta (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gamma\"] = $2; })"
+        js_setGamma :: DeviceMotionEventRotationRateInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-gamma DeviceMotionEventRotationRateInit.gamma specification>
+setGamma :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> Maybe Double -> m ()
+setGamma self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setGamma (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gamma\"]; })"
+        js_getGamma :: DeviceMotionEventRotationRateInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-gamma DeviceMotionEventRotationRateInit.gamma specification>
+getGamma :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m (Maybe Double)
+getGamma self = liftDOM (((js_getGamma (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-gamma DeviceMotionEventRotationRateInit.gamma specification>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRateInit -> m Double
+getGammaUnsafe self = liftDOM ((((js_getGamma (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-gamma DeviceMotionEventRotationRateInit.gamma specification>
+getGammaUnchecked :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m Double
+getGammaUnchecked self = liftDOM ((pFromJSVal <$> (js_getGamma (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
@@ -1,150 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
-       (js_initDeviceOrientationEvent, initDeviceOrientationEvent,
-        js_getAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked,
-        js_getBeta, getBeta, getBetaUnsafe, getBetaUnchecked, js_getGamma,
-        getGamma, getGammaUnsafe, getGammaUnchecked, js_getAbsolute,
-        getAbsolute, getAbsoluteUnsafe, getAbsoluteUnchecked,
-        DeviceOrientationEvent(..), gTypeDeviceOrientationEvent)
+       (js_newDeviceOrientationEvent, js_getAlpha, js_getBeta, js_getGamma, js_getAbsolute, newDeviceOrientationEvent, getAlpha, getAlphaUnsafe, getAlphaUnchecked, getBeta, getBetaUnsafe, getBetaUnchecked, getGamma, getGammaUnsafe, getGammaUnchecked, getAbsolute, DeviceOrientationEvent(..), gTypeDeviceOrientationEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"initDeviceOrientationEvent\"]($2,\n$3, $4, $5, $6, $7, $8); })"
-        js_initDeviceOrientationEvent ::
-        DeviceOrientationEvent ->
-          Optional JSString ->
-            Bool ->
-              Bool ->
-                Optional Double ->
-                  Optional Double -> Optional Double -> Optional Bool -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.initDeviceOrientationEvent Mozilla DeviceOrientationEvent.initDeviceOrientationEvent documentation> 
-initDeviceOrientationEvent ::
-                           (MonadIO m, ToJSString type') =>
-                             DeviceOrientationEvent ->
-                               Maybe type' ->
-                                 Bool ->
-                                   Bool ->
-                                     Maybe Double ->
-                                       Maybe Double -> Maybe Double -> Maybe Bool -> m ()
-initDeviceOrientationEvent self type' bubbles cancelable alpha beta
-  gamma absolute
-  = liftIO
-      (js_initDeviceOrientationEvent self (toOptionalJSString type')
-         bubbles
-         cancelable
-         (maybeToOptional alpha)
-         (maybeToOptional beta)
-         (maybeToOptional gamma)
-         (maybeToOptional absolute))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })" js_getAlpha ::
-        DeviceOrientationEvent -> IO (Nullable Double)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
-getAlpha ::
-         (MonadIO m) => DeviceOrientationEvent -> m (Maybe Double)
-getAlpha self = liftIO (nullableToMaybe <$> (js_getAlpha self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
-getAlphaUnsafe ::
-               (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Double
-getAlphaUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAlpha self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"DeviceOrientationEvent\"]($1, $2); })"
+        js_newDeviceOrientationEvent :: JSString -> JSVal -> IO DeviceOrientationEvent
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent MDN DeviceOrientationEvent. documentation>
+newDeviceOrientationEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe DeviceOrientationEventInit -> m DeviceOrientationEvent
+newDeviceOrientationEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newDeviceOrientationEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
-getAlphaUnchecked ::
-                  (MonadIO m) => DeviceOrientationEvent -> m Double
-getAlphaUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getAlpha self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"beta\"]; })" js_getBeta ::
-        DeviceOrientationEvent -> IO (Nullable Double)
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: DeviceOrientationEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/alpha MDN DeviceOrientationEvent.alpha documentation>
+getAlpha :: (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
-getBeta ::
-        (MonadIO m) => DeviceOrientationEvent -> m (Maybe Double)
-getBeta self = liftIO (nullableToMaybe <$> (js_getBeta self))
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/alpha MDN DeviceOrientationEvent.alpha documentation>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
-getBetaUnsafe ::
-              (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Double
-getBetaUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getBeta self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/alpha MDN DeviceOrientationEvent.alpha documentation>
+getAlphaUnchecked :: (MonadDOM m) => DeviceOrientationEvent -> m Double
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
-getBetaUnchecked ::
-                 (MonadIO m) => DeviceOrientationEvent -> m Double
-getBetaUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getBeta self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"gamma\"]; })" js_getGamma ::
-        DeviceOrientationEvent -> IO (Nullable Double)
+foreign import javascript unsafe "(($1) => { return $1[\"beta\"]; })"
+        js_getBeta :: DeviceOrientationEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/beta MDN DeviceOrientationEvent.beta documentation>
+getBeta :: (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
+getBeta self = liftDOM (((js_getBeta (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
-getGamma ::
-         (MonadIO m) => DeviceOrientationEvent -> m (Maybe Double)
-getGamma self = liftIO (nullableToMaybe <$> (js_getGamma self))
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/beta MDN DeviceOrientationEvent.beta documentation>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
+getBetaUnsafe self = liftDOM ((((js_getBeta (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
-getGammaUnsafe ::
-               (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Double
-getGammaUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getGamma self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/beta MDN DeviceOrientationEvent.beta documentation>
+getBetaUnchecked :: (MonadDOM m) => DeviceOrientationEvent -> m Double
+getBetaUnchecked self = liftDOM ((pFromJSVal <$> (js_getBeta (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
-getGammaUnchecked ::
-                  (MonadIO m) => DeviceOrientationEvent -> m Double
-getGammaUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getGamma self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"absolute\"]; })" js_getAbsolute
-        :: DeviceOrientationEvent -> IO (Nullable Bool)
+foreign import javascript unsafe "(($1) => { return $1[\"gamma\"]; })"
+        js_getGamma :: DeviceOrientationEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/gamma MDN DeviceOrientationEvent.gamma documentation>
+getGamma :: (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
+getGamma self = liftDOM (((js_getGamma (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
-getAbsolute ::
-            (MonadIO m) => DeviceOrientationEvent -> m (Maybe Bool)
-getAbsolute self
-  = liftIO (nullableToMaybe <$> (js_getAbsolute self))
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/gamma MDN DeviceOrientationEvent.gamma documentation>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
+getGammaUnsafe self = liftDOM ((((js_getGamma (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
-getAbsoluteUnsafe ::
-                  (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Bool
-getAbsoluteUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAbsolute self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/gamma MDN DeviceOrientationEvent.gamma documentation>
+getGammaUnchecked :: (MonadDOM m) => DeviceOrientationEvent -> m Double
+getGammaUnchecked self = liftDOM ((pFromJSVal <$> (js_getGamma (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
-getAbsoluteUnchecked ::
-                     (MonadIO m) => DeviceOrientationEvent -> m Bool
-getAbsoluteUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getAbsolute self))
+foreign import javascript unsafe "(($1) => { return $1[\"absolute\"]; })"
+        js_getAbsolute :: DeviceOrientationEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/absolute MDN DeviceOrientationEvent.absolute documentation>
+getAbsolute :: (MonadDOM m) => DeviceOrientationEvent -> m Bool
+getAbsolute self = liftDOM ((js_getAbsolute (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEventInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DeviceOrientationEventInit
+       (js_newDeviceOrientationEventInit, js_setAlpha, js_getAlpha, js_setBeta, js_getBeta, js_setGamma, js_getGamma, js_setAbsolute, js_getAbsolute, newDeviceOrientationEventInit, setAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked, setBeta, getBeta, getBetaUnsafe, getBetaUnchecked, setGamma, getGamma, getGammaUnsafe, getGammaUnchecked, setAbsolute, getAbsolute, getAbsoluteUnsafe, getAbsoluteUnchecked, DeviceOrientationEventInit(..), gTypeDeviceOrientationEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDeviceOrientationEventInit :: IO DeviceOrientationEventInit
+-- | <https://w3c.github.io/deviceorientation/#dictdef-deviceorientationeventinit DeviceOrientationEventInit specification>
+newDeviceOrientationEventInit :: (MonadDOM m) => m DeviceOrientationEventInit
+newDeviceOrientationEventInit = liftDOM ((js_newDeviceOrientationEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alpha\"] = $2; })"
+        js_setAlpha :: DeviceOrientationEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-alpha DeviceOrientationEventInit.alpha specification>
+setAlpha :: (MonadDOM m) => DeviceOrientationEventInit -> Maybe Double -> m ()
+setAlpha self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAlpha (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: DeviceOrientationEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-alpha DeviceOrientationEventInit.alpha specification>
+getAlpha :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Double)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-alpha DeviceOrientationEventInit.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Double
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-alpha DeviceOrientationEventInit.alpha specification>
+getAlphaUnchecked :: (MonadDOM m) => DeviceOrientationEventInit -> m Double
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"beta\"] = $2; })"
+        js_setBeta :: DeviceOrientationEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-beta DeviceOrientationEventInit.beta specification>
+setBeta :: (MonadDOM m) => DeviceOrientationEventInit -> Maybe Double -> m ()
+setBeta self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBeta (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"beta\"]; })"
+        js_getBeta :: DeviceOrientationEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-beta DeviceOrientationEventInit.beta specification>
+getBeta :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Double)
+getBeta self = liftDOM (((js_getBeta (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-beta DeviceOrientationEventInit.beta specification>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Double
+getBetaUnsafe self = liftDOM ((((js_getBeta (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-beta DeviceOrientationEventInit.beta specification>
+getBetaUnchecked :: (MonadDOM m) => DeviceOrientationEventInit -> m Double
+getBetaUnchecked self = liftDOM ((pFromJSVal <$> (js_getBeta (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gamma\"] = $2; })"
+        js_setGamma :: DeviceOrientationEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-gamma DeviceOrientationEventInit.gamma specification>
+setGamma :: (MonadDOM m) => DeviceOrientationEventInit -> Maybe Double -> m ()
+setGamma self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setGamma (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gamma\"]; })"
+        js_getGamma :: DeviceOrientationEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-gamma DeviceOrientationEventInit.gamma specification>
+getGamma :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Double)
+getGamma self = liftDOM (((js_getGamma (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-gamma DeviceOrientationEventInit.gamma specification>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Double
+getGammaUnsafe self = liftDOM ((((js_getGamma (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-gamma DeviceOrientationEventInit.gamma specification>
+getGammaUnchecked :: (MonadDOM m) => DeviceOrientationEventInit -> m Double
+getGammaUnchecked self = liftDOM ((pFromJSVal <$> (js_getGamma (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"absolute\"] = $2; })"
+        js_setAbsolute :: DeviceOrientationEventInit -> Bool -> IO ()
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-absolute DeviceOrientationEventInit.absolute specification>
+setAbsolute :: (MonadDOM m) => DeviceOrientationEventInit -> Bool -> m ()
+setAbsolute self val = liftDOM (void ((js_setAbsolute (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"absolute\"]; })"
+        js_getAbsolute :: DeviceOrientationEventInit -> IO JSVal
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-absolute DeviceOrientationEventInit.absolute specification>
+getAbsolute :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Bool)
+getAbsolute self = liftDOM (((js_getAbsolute (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-absolute DeviceOrientationEventInit.absolute specification>
+getAbsoluteUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Bool
+getAbsoluteUnsafe self = liftDOM ((((js_getAbsolute (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-absolute DeviceOrientationEventInit.absolute specification>
+getAbsoluteUnchecked :: (MonadDOM m) => DeviceOrientationEventInit -> m Bool
+getAbsoluteUnchecked self = liftDOM ((pFromJSVal <$> (js_getAbsolute (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent
-       (js_newDeviceProximityEvent, newDeviceProximityEvent, js_getValue,
-        getValue, js_getMin, getMin, js_getMax, getMax,
-        DeviceProximityEvent(..), gTypeDeviceProximityEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"DeviceProximityEvent\"]($1,\n$2); })"
-        js_newDeviceProximityEvent ::
-        JSString ->
-          Optional DeviceProximityEventInit -> IO DeviceProximityEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation> 
-newDeviceProximityEvent ::
-                        (MonadIO m, ToJSString type') =>
-                          type' -> Maybe DeviceProximityEventInit -> m DeviceProximityEvent
-newDeviceProximityEvent type' eventInitDict
-  = liftIO
-      (js_newDeviceProximityEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        DeviceProximityEvent -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.value Mozilla DeviceProximityEvent.value documentation> 
-getValue :: (MonadIO m) => DeviceProximityEvent -> m Double
-getValue self = liftIO (js_getValue self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })" js_getMin ::
-        DeviceProximityEvent -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.min Mozilla DeviceProximityEvent.min documentation> 
-getMin :: (MonadIO m) => DeviceProximityEvent -> m Double
-getMin self = liftIO (js_getMin self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
-        DeviceProximityEvent -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.max Mozilla DeviceProximityEvent.max documentation> 
-getMax :: (MonadIO m) => DeviceProximityEvent -> m Double
-getMax self = liftIO (js_getMax self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DigitalCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredential.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredential.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DigitalCredential
+       (js_toJSON, js_userAgentAllowsProtocol, js_getProtocol, js_getData, toJSON, toJSON_, userAgentAllowsProtocol, userAgentAllowsProtocol_, getProtocol, getData, DigitalCredential(..), gTypeDigitalCredential)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: DigitalCredential -> IO GObject
+toJSON :: (MonadDOM m) => DigitalCredential -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+toJSON_ :: (MonadDOM m) => DigitalCredential -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"DigitalCredential\"][\"userAgentAllowsProtocol\"]($1); })"
+        js_userAgentAllowsProtocol :: JSString -> IO Bool
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-useragentallowsprotocol DigitalCredential.userAgentAllowsProtocol specification>
+userAgentAllowsProtocol :: (MonadDOM m, ToJSString protocol) => protocol -> m Bool
+userAgentAllowsProtocol protocol = liftDOM ((js_userAgentAllowsProtocol (toJSString protocol)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-useragentallowsprotocol DigitalCredential.userAgentAllowsProtocol specification>
+userAgentAllowsProtocol_ :: (MonadDOM m, ToJSString protocol) => protocol -> m ()
+userAgentAllowsProtocol_ protocol = liftDOM (void ((js_userAgentAllowsProtocol (toJSString protocol))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: DigitalCredential -> IO DigitalCredentialProtocol
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-protocol DigitalCredential.protocol specification>
+getProtocol :: (MonadDOM m) => DigitalCredential -> m DigitalCredentialProtocol
+getProtocol self = liftDOM ((js_getProtocol (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: DigitalCredential -> IO GObject
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-data DigitalCredential.data specification>
+getData :: (MonadDOM m) => DigitalCredential -> m GObject
+getData self = liftDOM ((js_getData (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialCreateRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialCreateRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialCreateRequest.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DigitalCredentialCreateRequest
+       (js_newDigitalCredentialCreateRequest, js_setProtocol, js_getProtocol, js_setData, js_getData, newDigitalCredentialCreateRequest, setProtocol, getProtocol, setData, getData, DigitalCredentialCreateRequest(..), gTypeDigitalCredentialCreateRequest)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"protocol\": $1, \"data\": $2}); })"
+        js_newDigitalCredentialCreateRequest :: JSString -> GObject -> IO DigitalCredentialCreateRequest
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest DigitalCredentialCreateRequest specification>
+newDigitalCredentialCreateRequest :: (MonadDOM m, ToJSString protocol) => protocol -> GObject -> m DigitalCredentialCreateRequest
+newDigitalCredentialCreateRequest protocol data' = liftDOM ((js_newDigitalCredentialCreateRequest (toJSString protocol) (data')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: DigitalCredentialCreateRequest -> JSString -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest-protocol DigitalCredentialCreateRequest.protocol specification>
+setProtocol :: (MonadDOM m, ToJSString val) => DigitalCredentialCreateRequest -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: DigitalCredentialCreateRequest -> IO JSString
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest-protocol DigitalCredentialCreateRequest.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => DigitalCredentialCreateRequest -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: DigitalCredentialCreateRequest -> GObject -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest-data DigitalCredentialCreateRequest.data specification>
+setData :: (MonadDOM m) => DigitalCredentialCreateRequest -> GObject -> m ()
+setData self val = liftDOM (void ((js_setData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: DigitalCredentialCreateRequest -> IO GObject
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest-data DigitalCredentialCreateRequest.data specification>
+getData :: (MonadDOM m) => DigitalCredentialCreateRequest -> m GObject
+getData self = liftDOM ((js_getData (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialCreationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialCreationOptions.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DigitalCredentialCreationOptions
+       (js_newDigitalCredentialCreationOptions, js_setRequests, js_getRequests, newDigitalCredentialCreationOptions, setRequests, getRequests, DigitalCredentialCreationOptions(..), gTypeDigitalCredentialCreationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"requests\": $1}); })"
+        js_newDigitalCredentialCreationOptions :: JSVal -> IO DigitalCredentialCreationOptions
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreationoptions DigitalCredentialCreationOptions specification>
+newDigitalCredentialCreationOptions :: (MonadDOM m) => [DigitalCredentialCreateRequest] -> m DigitalCredentialCreationOptions
+newDigitalCredentialCreationOptions requests = liftDOM (((toJSVal requests) >>= \a1' -> js_newDigitalCredentialCreationOptions a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requests\"] = $2; })"
+        js_setRequests :: DigitalCredentialCreationOptions -> JSVal -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreationoptions-requests DigitalCredentialCreationOptions.requests specification>
+setRequests :: (MonadDOM m) => DigitalCredentialCreationOptions -> [DigitalCredentialCreateRequest] -> m ()
+setRequests self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRequests (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requests\"]; })"
+        js_getRequests :: DigitalCredentialCreationOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreationoptions-requests DigitalCredentialCreationOptions.requests specification>
+getRequests :: (MonadDOM m) => DigitalCredentialCreationOptions -> m [DigitalCredentialCreateRequest]
+getRequests self = liftDOM (((js_getRequests (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialGetRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialGetRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialGetRequest.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DigitalCredentialGetRequest
+       (js_newDigitalCredentialGetRequest, js_setProtocol, js_getProtocol, js_setData, js_getData, newDigitalCredentialGetRequest, setProtocol, getProtocol, setData, getData, DigitalCredentialGetRequest(..), gTypeDigitalCredentialGetRequest)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"protocol\": $1, \"data\": $2}); })"
+        js_newDigitalCredentialGetRequest :: JSString -> GObject -> IO DigitalCredentialGetRequest
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest DigitalCredentialGetRequest specification>
+newDigitalCredentialGetRequest :: (MonadDOM m, ToJSString protocol) => protocol -> GObject -> m DigitalCredentialGetRequest
+newDigitalCredentialGetRequest protocol data' = liftDOM ((js_newDigitalCredentialGetRequest (toJSString protocol) (data')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: DigitalCredentialGetRequest -> JSString -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest-protocol DigitalCredentialGetRequest.protocol specification>
+setProtocol :: (MonadDOM m, ToJSString val) => DigitalCredentialGetRequest -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: DigitalCredentialGetRequest -> IO JSString
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest-protocol DigitalCredentialGetRequest.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => DigitalCredentialGetRequest -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: DigitalCredentialGetRequest -> GObject -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest-data DigitalCredentialGetRequest.data specification>
+setData :: (MonadDOM m) => DigitalCredentialGetRequest -> GObject -> m ()
+setData self val = liftDOM (void ((js_setData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: DigitalCredentialGetRequest -> IO GObject
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest-data DigitalCredentialGetRequest.data specification>
+getData :: (MonadDOM m) => DigitalCredentialGetRequest -> m GObject
+getData self = liftDOM ((js_getData (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DigitalCredentialRequestOptions.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DigitalCredentialRequestOptions
+       (js_newDigitalCredentialRequestOptions, js_setRequests, js_getRequests, newDigitalCredentialRequestOptions, setRequests, getRequests, DigitalCredentialRequestOptions(..), gTypeDigitalCredentialRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"requests\": $1}); })"
+        js_newDigitalCredentialRequestOptions :: JSVal -> IO DigitalCredentialRequestOptions
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialrequestoptions DigitalCredentialRequestOptions specification>
+newDigitalCredentialRequestOptions :: (MonadDOM m) => [DigitalCredentialGetRequest] -> m DigitalCredentialRequestOptions
+newDigitalCredentialRequestOptions requests = liftDOM (((toJSVal requests) >>= \a1' -> js_newDigitalCredentialRequestOptions a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requests\"] = $2; })"
+        js_setRequests :: DigitalCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialrequestoptions-requests DigitalCredentialRequestOptions.requests specification>
+setRequests :: (MonadDOM m) => DigitalCredentialRequestOptions -> [DigitalCredentialGetRequest] -> m ()
+setRequests self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRequests (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requests\"]; })"
+        js_getRequests :: DigitalCredentialRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialrequestoptions-requests DigitalCredentialRequestOptions.requests specification>
+getRequests :: (MonadDOM m) => DigitalCredentialRequestOptions -> m [DigitalCredentialGetRequest]
+getRequests self = liftDOM (((js_getRequests (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DisplayMediaStreamOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/DisplayMediaStreamOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DisplayMediaStreamOptions.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DisplayMediaStreamOptions
+       (js_newDisplayMediaStreamOptions, js_setVideo, js_getVideo, js_setAudio, js_getAudio, js_setController, js_getController, js_setSelfBrowserSurface, js_getSelfBrowserSurface, js_setSystemAudio, js_getSystemAudio, js_setWindowAudio, js_getWindowAudio, js_setSurfaceSwitching, js_getSurfaceSwitching, js_setMonitorTypeSurfaces, js_getMonitorTypeSurfaces, js_setAudioSelection, js_getAudioSelection, newDisplayMediaStreamOptions, setVideo, getVideo, getVideoUnsafe, getVideoUnchecked, setAudio, getAudio, getAudioUnsafe, getAudioUnchecked, setController, getController, getControllerUnsafe, getControllerUnchecked, setSelfBrowserSurface, getSelfBrowserSurface, getSelfBrowserSurfaceUnsafe, getSelfBrowserSurfaceUnchecked, setSystemAudio, getSystemAudio, getSystemAudioUnsafe, getSystemAudioUnchecked, setWindowAudio, getWindowAudio, getWindowAudioUnsafe, getWindowAudioUnchecked, setSurfaceSwitching, getSurfaceSwitching, getSurfaceSwitchingUnsafe, getSurfaceSwitchingUnchecked, setMonitorTypeSurfaces, getMonitorTypeSurfaces, getMonitorTypeSurfacesUnsafe, getMonitorTypeSurfacesUnchecked, setAudioSelection, getAudioSelection, getAudioSelectionUnsafe, getAudioSelectionUnchecked, DisplayMediaStreamOptions(..), gTypeDisplayMediaStreamOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDisplayMediaStreamOptions :: IO DisplayMediaStreamOptions
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions DisplayMediaStreamOptions specification>
+newDisplayMediaStreamOptions :: (MonadDOM m) => m DisplayMediaStreamOptions
+newDisplayMediaStreamOptions = liftDOM ((js_newDisplayMediaStreamOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"video\"] = $2; })"
+        js_setVideo :: DisplayMediaStreamOptions -> BoolOrMediaTrackConstraints -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-video DisplayMediaStreamOptions.video specification>
+setVideo :: (MonadDOM m, IsBoolOrMediaTrackConstraints val) => DisplayMediaStreamOptions -> val -> m ()
+setVideo self val = liftDOM (void ((js_setVideo (self) (Types.toBoolOrMediaTrackConstraints val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"video\"]; })"
+        js_getVideo :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-video DisplayMediaStreamOptions.video specification>
+getVideo :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe BoolOrMediaTrackConstraints)
+getVideo self = liftDOM (((js_getVideo (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-video DisplayMediaStreamOptions.video specification>
+getVideoUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m BoolOrMediaTrackConstraints
+getVideoUnsafe self = liftDOM ((((js_getVideo (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-video DisplayMediaStreamOptions.video specification>
+getVideoUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m BoolOrMediaTrackConstraints
+getVideoUnchecked self = liftDOM ((pFromJSVal <$> (js_getVideo (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audio\"] = $2; })"
+        js_setAudio :: DisplayMediaStreamOptions -> BoolOrMediaTrackConstraints -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audio DisplayMediaStreamOptions.audio specification>
+setAudio :: (MonadDOM m, IsBoolOrMediaTrackConstraints val) => DisplayMediaStreamOptions -> val -> m ()
+setAudio self val = liftDOM (void ((js_setAudio (self) (Types.toBoolOrMediaTrackConstraints val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audio\"]; })"
+        js_getAudio :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audio DisplayMediaStreamOptions.audio specification>
+getAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe BoolOrMediaTrackConstraints)
+getAudio self = liftDOM (((js_getAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audio DisplayMediaStreamOptions.audio specification>
+getAudioUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m BoolOrMediaTrackConstraints
+getAudioUnsafe self = liftDOM ((((js_getAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audio DisplayMediaStreamOptions.audio specification>
+getAudioUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m BoolOrMediaTrackConstraints
+getAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"controller\"] = $2; })"
+        js_setController :: DisplayMediaStreamOptions -> CaptureController -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-controller DisplayMediaStreamOptions.controller specification>
+setController :: (MonadDOM m) => DisplayMediaStreamOptions -> CaptureController -> m ()
+setController self val = liftDOM (void ((js_setController (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"controller\"]; })"
+        js_getController :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-controller DisplayMediaStreamOptions.controller specification>
+getController :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe CaptureController)
+getController self = liftDOM (((js_getController (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-controller DisplayMediaStreamOptions.controller specification>
+getControllerUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m CaptureController
+getControllerUnsafe self = liftDOM ((((js_getController (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-controller DisplayMediaStreamOptions.controller specification>
+getControllerUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m CaptureController
+getControllerUnchecked self = liftDOM ((pFromJSVal <$> (js_getController (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"selfBrowserSurface\"] = $2; })"
+        js_setSelfBrowserSurface :: DisplayMediaStreamOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-selfbrowsersurface DisplayMediaStreamOptions.selfBrowserSurface specification>
+setSelfBrowserSurface :: (MonadDOM m) => DisplayMediaStreamOptions -> SelfCapturePreferenceEnum -> m ()
+setSelfBrowserSurface self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSelfBrowserSurface (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selfBrowserSurface\"]; })"
+        js_getSelfBrowserSurface :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-selfbrowsersurface DisplayMediaStreamOptions.selfBrowserSurface specification>
+getSelfBrowserSurface :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe SelfCapturePreferenceEnum)
+getSelfBrowserSurface self = liftDOM (((js_getSelfBrowserSurface (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-selfbrowsersurface DisplayMediaStreamOptions.selfBrowserSurface specification>
+getSelfBrowserSurfaceUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m SelfCapturePreferenceEnum
+getSelfBrowserSurfaceUnsafe self = liftDOM ((((js_getSelfBrowserSurface (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-selfbrowsersurface DisplayMediaStreamOptions.selfBrowserSurface specification>
+getSelfBrowserSurfaceUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m SelfCapturePreferenceEnum
+getSelfBrowserSurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelfBrowserSurface (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"systemAudio\"] = $2; })"
+        js_setSystemAudio :: DisplayMediaStreamOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-systemaudio DisplayMediaStreamOptions.systemAudio specification>
+setSystemAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> SystemAudioPreferenceEnum -> m ()
+setSystemAudio self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSystemAudio (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"systemAudio\"]; })"
+        js_getSystemAudio :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-systemaudio DisplayMediaStreamOptions.systemAudio specification>
+getSystemAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe SystemAudioPreferenceEnum)
+getSystemAudio self = liftDOM (((js_getSystemAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-systemaudio DisplayMediaStreamOptions.systemAudio specification>
+getSystemAudioUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m SystemAudioPreferenceEnum
+getSystemAudioUnsafe self = liftDOM ((((js_getSystemAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-systemaudio DisplayMediaStreamOptions.systemAudio specification>
+getSystemAudioUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m SystemAudioPreferenceEnum
+getSystemAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getSystemAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"windowAudio\"] = $2; })"
+        js_setWindowAudio :: DisplayMediaStreamOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-windowaudio DisplayMediaStreamOptions.windowAudio specification>
+setWindowAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> WindowAudioPreferenceEnum -> m ()
+setWindowAudio self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setWindowAudio (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"windowAudio\"]; })"
+        js_getWindowAudio :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-windowaudio DisplayMediaStreamOptions.windowAudio specification>
+getWindowAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe WindowAudioPreferenceEnum)
+getWindowAudio self = liftDOM (((js_getWindowAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-windowaudio DisplayMediaStreamOptions.windowAudio specification>
+getWindowAudioUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m WindowAudioPreferenceEnum
+getWindowAudioUnsafe self = liftDOM ((((js_getWindowAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-windowaudio DisplayMediaStreamOptions.windowAudio specification>
+getWindowAudioUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m WindowAudioPreferenceEnum
+getWindowAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getWindowAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"surfaceSwitching\"] = $2; })"
+        js_setSurfaceSwitching :: DisplayMediaStreamOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-surfaceswitching DisplayMediaStreamOptions.surfaceSwitching specification>
+setSurfaceSwitching :: (MonadDOM m) => DisplayMediaStreamOptions -> SurfaceSwitchingPreferenceEnum -> m ()
+setSurfaceSwitching self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSurfaceSwitching (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"surfaceSwitching\"]; })"
+        js_getSurfaceSwitching :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-surfaceswitching DisplayMediaStreamOptions.surfaceSwitching specification>
+getSurfaceSwitching :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe SurfaceSwitchingPreferenceEnum)
+getSurfaceSwitching self = liftDOM (((js_getSurfaceSwitching (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-surfaceswitching DisplayMediaStreamOptions.surfaceSwitching specification>
+getSurfaceSwitchingUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m SurfaceSwitchingPreferenceEnum
+getSurfaceSwitchingUnsafe self = liftDOM ((((js_getSurfaceSwitching (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-surfaceswitching DisplayMediaStreamOptions.surfaceSwitching specification>
+getSurfaceSwitchingUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m SurfaceSwitchingPreferenceEnum
+getSurfaceSwitchingUnchecked self = liftDOM ((pFromJSVal <$> (js_getSurfaceSwitching (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"monitorTypeSurfaces\"] = $2; })"
+        js_setMonitorTypeSurfaces :: DisplayMediaStreamOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-monitortypesurfaces DisplayMediaStreamOptions.monitorTypeSurfaces specification>
+setMonitorTypeSurfaces :: (MonadDOM m) => DisplayMediaStreamOptions -> MonitorTypeSurfacesEnum -> m ()
+setMonitorTypeSurfaces self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMonitorTypeSurfaces (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"monitorTypeSurfaces\"]; })"
+        js_getMonitorTypeSurfaces :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-monitortypesurfaces DisplayMediaStreamOptions.monitorTypeSurfaces specification>
+getMonitorTypeSurfaces :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe MonitorTypeSurfacesEnum)
+getMonitorTypeSurfaces self = liftDOM (((js_getMonitorTypeSurfaces (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-monitortypesurfaces DisplayMediaStreamOptions.monitorTypeSurfaces specification>
+getMonitorTypeSurfacesUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m MonitorTypeSurfacesEnum
+getMonitorTypeSurfacesUnsafe self = liftDOM ((((js_getMonitorTypeSurfaces (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-monitortypesurfaces DisplayMediaStreamOptions.monitorTypeSurfaces specification>
+getMonitorTypeSurfacesUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m MonitorTypeSurfacesEnum
+getMonitorTypeSurfacesUnchecked self = liftDOM ((pFromJSVal <$> (js_getMonitorTypeSurfaces (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audioSelection\"] = $2; })"
+        js_setAudioSelection :: DisplayMediaStreamOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection DisplayMediaStreamOptions.audioSelection specification>
+setAudioSelection :: (MonadDOM m) => DisplayMediaStreamOptions -> AudioSelectionPreferenceEnum -> m ()
+setAudioSelection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAudioSelection (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioSelection\"]; })"
+        js_getAudioSelection :: DisplayMediaStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection DisplayMediaStreamOptions.audioSelection specification>
+getAudioSelection :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe AudioSelectionPreferenceEnum)
+getAudioSelection self = liftDOM (((js_getAudioSelection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection DisplayMediaStreamOptions.audioSelection specification>
+getAudioSelectionUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m AudioSelectionPreferenceEnum
+getAudioSelectionUnsafe self = liftDOM ((((js_getAudioSelection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection DisplayMediaStreamOptions.audioSelection specification>
+getAudioSelectionUnchecked :: (MonadDOM m) => DisplayMediaStreamOptions -> m AudioSelectionPreferenceEnum
+getAudioSelectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudioSelection (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Document.hs b/src/GHCJS/DOM/JSFFI/Generated/Document.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Document.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Document.hs
@@ -1,1850 +1,954 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Document
-       (js_getAnimations, getAnimations, getAnimations_, js_newDocument,
-        newDocument, js_getElementsByTagName, getElementsByTagName,
-        getElementsByTagName_, js_getElementsByTagNameNS,
-        getElementsByTagNameNS, getElementsByTagNameNS_,
-        js_getElementsByClassName, getElementsByClassName,
-        getElementsByClassName_, js_createElement, createElement,
-        createElement_, js_createElementNS, createElementNS,
-        createElementNS_, js_createDocumentFragment,
-        createDocumentFragment, createDocumentFragment_, js_createTextNode,
-        createTextNode, createTextNode_, js_createCDATASection,
-        createCDATASection, createCDATASection_, js_createComment,
-        createComment, createComment_, js_createProcessingInstruction,
-        createProcessingInstruction, createProcessingInstruction_,
-        js_importNode, importNode, importNode_, js_adoptNode, adoptNode,
-        adoptNode_, js_createAttribute, createAttribute, createAttribute_,
-        js_createAttributeNS, createAttributeNS, createAttributeNS_,
-        js_createEvent, createEvent, createEvent_, js_createRange,
-        createRange, createRange_, js_createNodeIterator,
-        createNodeIterator, createNodeIterator_, js_createTreeWalker,
-        createTreeWalker, createTreeWalker_, js_getElementsByName,
-        getElementsByName, getElementsByName_, js_hasFocus, hasFocus,
-        hasFocus_, js_execCommand, execCommand, execCommand_,
-        js_queryCommandEnabled, queryCommandEnabled, queryCommandEnabled_,
-        js_queryCommandIndeterm, queryCommandIndeterm,
-        queryCommandIndeterm_, js_queryCommandState, queryCommandState,
-        queryCommandState_, js_queryCommandSupported,
-        queryCommandSupported, queryCommandSupported_,
-        js_queryCommandValue, queryCommandValue, queryCommandValue_,
-        js_getSelection, getSelection, getSelection_, getSelectionUnsafe,
-        getSelectionUnchecked, js_createExpression, createExpression,
-        createExpression_, js_createNSResolver, createNSResolver,
-        createNSResolver_, js_evaluate, evaluate, evaluate_,
-        js_webkitExitFullscreen, webkitExitFullscreen,
-        js_webkitCancelFullScreen, webkitCancelFullScreen,
-        js_exitPointerLock, exitPointerLock, js_getOverrideStyle,
-        getOverrideStyle, getOverrideStyle_, js_caretRangeFromPoint,
-        caretRangeFromPoint, caretRangeFromPoint_, js_getCSSCanvasContext,
-        getCSSCanvasContext, getCSSCanvasContext_, js_webkitGetNamedFlows,
-        webkitGetNamedFlows, webkitGetNamedFlows_, js_createTouch,
-        createTouch, createTouch_, js_createTouchList, createTouchList,
-        createTouchList_, js_getTimeline, getTimeline,
-        js_getImplementation, getImplementation, js_getURL, getURL,
-        js_getDocumentURI, getDocumentURI, js_getOrigin, getOrigin,
-        js_getCompatMode, getCompatMode, js_getCharacterSet,
-        getCharacterSet, js_getCharset, getCharset, js_getInputEncoding,
-        getInputEncoding, js_getContentType, getContentType, js_getDoctype,
-        getDoctype, getDoctypeUnsafe, getDoctypeUnchecked,
-        js_getDocumentElement, getDocumentElement,
-        getDocumentElementUnsafe, getDocumentElementUnchecked,
-        js_getLocation, getLocation, getLocationUnsafe,
-        getLocationUnchecked, js_setDomain, setDomain, js_getDomain,
-        getDomain, js_getReferrer, getReferrer, js_setCookie, setCookie,
-        js_getCookie, getCookie, js_getLastModified, getLastModified,
-        js_getReadyState, getReadyState, js_setTitle, setTitle,
-        js_getTitle, getTitle, js_setDir, setDir, js_getDir, getDir,
-        js_setBody, setBody, js_getBody, getBody, getBodyUnsafe,
-        getBodyUnchecked, js_getHead, getHead, getHeadUnsafe,
-        getHeadUnchecked, js_getImages, getImages, js_getEmbeds, getEmbeds,
-        js_getPlugins, getPlugins, js_getLinks, getLinks, js_getForms,
-        getForms, js_getScripts, getScripts, js_getCurrentScript,
-        getCurrentScript, getCurrentScriptUnsafe,
-        getCurrentScriptUnchecked, js_getDefaultView, getDefaultView,
-        getDefaultViewUnsafe, getDefaultViewUnchecked, js_setDesignMode,
-        setDesignMode, js_getDesignMode, getDesignMode, readyStateChange,
-        js_getStyleSheets, getStyleSheets, js_getScrollingElement,
-        getScrollingElement, getScrollingElementUnsafe,
-        getScrollingElementUnchecked, js_getWebkitFullscreenEnabled,
-        getWebkitFullscreenEnabled, js_getWebkitFullscreenElement,
-        getWebkitFullscreenElement, getWebkitFullscreenElementUnsafe,
-        getWebkitFullscreenElementUnchecked, js_getWebkitIsFullScreen,
-        getWebkitIsFullScreen, js_getWebkitFullScreenKeyboardInputAllowed,
-        getWebkitFullScreenKeyboardInputAllowed,
-        js_getWebkitCurrentFullScreenElement,
-        getWebkitCurrentFullScreenElement, webKitFullscreenChange,
-        webKitFullscreenError, pointerlockchange, pointerlockerror,
-        js_getFonts, getFonts, js_getHidden, getHidden,
-        js_getVisibilityState, getVisibilityState, visibilitychange,
-        js_getApplets, getApplets, js_getAnchors, getAnchors,
-        js_getPreferredStylesheetSet, getPreferredStylesheetSet,
-        getPreferredStylesheetSetUnsafe,
-        getPreferredStylesheetSetUnchecked, js_setSelectedStylesheetSet,
-        setSelectedStylesheetSet, js_getSelectedStylesheetSet,
-        getSelectedStylesheetSet, getSelectedStylesheetSetUnsafe,
-        getSelectedStylesheetSetUnchecked, js_getXmlEncoding,
-        getXmlEncoding, getXmlEncodingUnsafe, getXmlEncodingUnchecked,
-        js_setXmlVersion, setXmlVersion, js_getXmlVersion, getXmlVersion,
-        getXmlVersionUnsafe, getXmlVersionUnchecked, js_setXmlStandalone,
-        setXmlStandalone, js_getXmlStandalone, getXmlStandalone,
-        selectStart, selectionchange, js_getRootElement, getRootElement,
-        getRootElementUnsafe, getRootElementUnchecked, Document(..),
-        gTypeDocument, IsDocument, toDocument)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getAnimations\"](); })"
-        js_getAnimations :: Document -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getAnimations Mozilla Document.getAnimations documentation> 
-getAnimations ::
-              (MonadIO m, IsDocument self) => self -> m [Animation]
-getAnimations self
-  = liftIO
-      ((js_getAnimations (toDocument self)) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getAnimations Mozilla Document.getAnimations documentation> 
-getAnimations_ :: (MonadIO m, IsDocument self) => self -> m ()
-getAnimations_ self
-  = liftIO (void (js_getAnimations (toDocument self)))
- 
-foreign import javascript unsafe "(() => { return new window[\"Document\"](); })"
-        js_newDocument :: IO Document
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation> 
-newDocument :: (MonadIO m) => m Document
-newDocument = liftIO (js_newDocument)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementsByTagName\"]($2); })"
-        js_getElementsByTagName ::
-        Document -> JSString -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
-getElementsByTagName ::
-                     (MonadIO m, IsDocument self, ToJSString qualifiedName) =>
-                       self -> qualifiedName -> m HTMLCollection
-getElementsByTagName self qualifiedName
-  = liftIO
-      (js_getElementsByTagName (toDocument self)
-         (toJSString qualifiedName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
-getElementsByTagName_ ::
-                      (MonadIO m, IsDocument self, ToJSString qualifiedName) =>
-                        self -> qualifiedName -> m ()
-getElementsByTagName_ self qualifiedName
-  = liftIO
-      (void
-         (js_getElementsByTagName (toDocument self)
-            (toJSString qualifiedName)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getElementsByTagNameNS\"]($2,\n$3); })" js_getElementsByTagNameNS
-        :: Document -> Optional JSString -> JSString -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS ::
-                       (MonadIO m, IsDocument self, ToJSString namespaceURI,
-                        ToJSString localName) =>
-                         self -> Maybe namespaceURI -> localName -> m HTMLCollection
-getElementsByTagNameNS self namespaceURI localName
-  = liftIO
-      (js_getElementsByTagNameNS (toDocument self)
-         (toOptionalJSString namespaceURI)
-         (toJSString localName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS_ ::
-                        (MonadIO m, IsDocument self, ToJSString namespaceURI,
-                         ToJSString localName) =>
-                          self -> Maybe namespaceURI -> localName -> m ()
-getElementsByTagNameNS_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_getElementsByTagNameNS (toDocument self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"getElementsByClassName\"]($2); })" js_getElementsByClassName ::
-        Document -> JSString -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
-getElementsByClassName ::
-                       (MonadIO m, IsDocument self, ToJSString classNames) =>
-                         self -> classNames -> m HTMLCollection
-getElementsByClassName self classNames
-  = liftIO
-      (js_getElementsByClassName (toDocument self)
-         (toJSString classNames))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
-getElementsByClassName_ ::
-                        (MonadIO m, IsDocument self, ToJSString classNames) =>
-                          self -> classNames -> m ()
-getElementsByClassName_ self classNames
-  = liftIO
-      (void
-         (js_getElementsByClassName (toDocument self)
-            (toJSString classNames)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createElement\"]($2); })"
-        js_createElement :: Document -> JSString -> IO Element
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
-createElement ::
-              (MonadIO m, IsDocument self, ToJSString localName) =>
-                self -> localName -> m Element
-createElement self localName
-  = liftIO
-      (js_createElement (toDocument self) (toJSString localName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
-createElement_ ::
-               (MonadIO m, IsDocument self, ToJSString localName) =>
-                 self -> localName -> m ()
-createElement_ self localName
-  = liftIO
-      (void (js_createElement (toDocument self) (toJSString localName)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createElementNS\"]($2, $3); })"
-        js_createElementNS ::
-        Document -> Optional JSString -> JSString -> IO Element
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
-createElementNS ::
-                (MonadIO m, IsDocument self, ToJSString namespaceURI,
-                 ToJSString qualifiedName) =>
-                  self -> Maybe namespaceURI -> qualifiedName -> m Element
-createElementNS self namespaceURI qualifiedName
-  = liftIO
-      (js_createElementNS (toDocument self)
-         (toOptionalJSString namespaceURI)
-         (toJSString qualifiedName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
-createElementNS_ ::
-                 (MonadIO m, IsDocument self, ToJSString namespaceURI,
-                  ToJSString qualifiedName) =>
-                   self -> Maybe namespaceURI -> qualifiedName -> m ()
-createElementNS_ self namespaceURI qualifiedName
-  = liftIO
-      (void
-         (js_createElementNS (toDocument self)
-            (toOptionalJSString namespaceURI)
-            (toJSString qualifiedName)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createDocumentFragment\"](); })"
-        js_createDocumentFragment :: Document -> IO DocumentFragment
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
-createDocumentFragment ::
-                       (MonadIO m, IsDocument self) => self -> m DocumentFragment
-createDocumentFragment self
-  = liftIO (js_createDocumentFragment (toDocument self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
-createDocumentFragment_ ::
-                        (MonadIO m, IsDocument self) => self -> m ()
-createDocumentFragment_ self
-  = liftIO (void (js_createDocumentFragment (toDocument self)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createTextNode\"]($2); })"
-        js_createTextNode :: Document -> JSString -> IO Text
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
-createTextNode ::
-               (MonadIO m, IsDocument self, ToJSString data') =>
-                 self -> data' -> m Text
-createTextNode self data'
-  = liftIO (js_createTextNode (toDocument self) (toJSString data'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
-createTextNode_ ::
-                (MonadIO m, IsDocument self, ToJSString data') =>
-                  self -> data' -> m ()
-createTextNode_ self data'
-  = liftIO
-      (void (js_createTextNode (toDocument self) (toJSString data')))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createCDATASection\"]($2); })"
-        js_createCDATASection :: Document -> JSString -> IO CDATASection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
-createCDATASection ::
-                   (MonadIO m, IsDocument self, ToJSString data') =>
-                     self -> data' -> m CDATASection
-createCDATASection self data'
-  = liftIO
-      (js_createCDATASection (toDocument self) (toJSString data'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
-createCDATASection_ ::
-                    (MonadIO m, IsDocument self, ToJSString data') =>
-                      self -> data' -> m ()
-createCDATASection_ self data'
-  = liftIO
-      (void (js_createCDATASection (toDocument self) (toJSString data')))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createComment\"]($2); })"
-        js_createComment :: Document -> JSString -> IO Comment
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
-createComment ::
-              (MonadIO m, IsDocument self, ToJSString data') =>
-                self -> data' -> m Comment
-createComment self data'
-  = liftIO (js_createComment (toDocument self) (toJSString data'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
-createComment_ ::
-               (MonadIO m, IsDocument self, ToJSString data') =>
-                 self -> data' -> m ()
-createComment_ self data'
-  = liftIO
-      (void (js_createComment (toDocument self) (toJSString data')))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"createProcessingInstruction\"]($2,\n$3); })"
-        js_createProcessingInstruction ::
-        Document -> JSString -> JSString -> IO ProcessingInstruction
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
-createProcessingInstruction ::
-                            (MonadIO m, IsDocument self, ToJSString target,
-                             ToJSString data') =>
-                              self -> target -> data' -> m ProcessingInstruction
-createProcessingInstruction self target data'
-  = liftIO
-      (js_createProcessingInstruction (toDocument self)
-         (toJSString target)
-         (toJSString data'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
-createProcessingInstruction_ ::
-                             (MonadIO m, IsDocument self, ToJSString target,
-                              ToJSString data') =>
-                               self -> target -> data' -> m ()
-createProcessingInstruction_ self target data'
-  = liftIO
-      (void
-         (js_createProcessingInstruction (toDocument self)
-            (toJSString target)
-            (toJSString data')))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"importNode\"]($2, $3); })"
-        js_importNode :: Document -> Node -> Bool -> IO Node
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
-importNode ::
-           (MonadIO m, IsDocument self, IsNode node) =>
-             self -> node -> Bool -> m Node
-importNode self node deep
-  = liftIO (js_importNode (toDocument self) (toNode node) deep)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
-importNode_ ::
-            (MonadIO m, IsDocument self, IsNode node) =>
-              self -> node -> Bool -> m ()
-importNode_ self node deep
-  = liftIO
-      (void (js_importNode (toDocument self) (toNode node) deep))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"adoptNode\"]($2); })" js_adoptNode
-        :: Document -> Node -> IO Node
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
-adoptNode ::
-          (MonadIO m, IsDocument self, IsNode node) => self -> node -> m Node
-adoptNode self node
-  = liftIO (js_adoptNode (toDocument self) (toNode node))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
-adoptNode_ ::
-           (MonadIO m, IsDocument self, IsNode node) => self -> node -> m ()
-adoptNode_ self node
-  = liftIO (void (js_adoptNode (toDocument self) (toNode node)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createAttribute\"]($2); })"
-        js_createAttribute :: Document -> JSString -> IO Attr
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
-createAttribute ::
-                (MonadIO m, IsDocument self, ToJSString localName) =>
-                  self -> localName -> m Attr
-createAttribute self localName
-  = liftIO
-      (js_createAttribute (toDocument self) (toJSString localName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
-createAttribute_ ::
-                 (MonadIO m, IsDocument self, ToJSString localName) =>
-                   self -> localName -> m ()
-createAttribute_ self localName
-  = liftIO
-      (void
-         (js_createAttribute (toDocument self) (toJSString localName)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createAttributeNS\"]($2, $3); })"
-        js_createAttributeNS ::
-        Document -> Optional JSString -> JSString -> IO Attr
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
-createAttributeNS ::
-                  (MonadIO m, IsDocument self, ToJSString namespaceURI,
-                   ToJSString qualifiedName) =>
-                    self -> Maybe namespaceURI -> qualifiedName -> m Attr
-createAttributeNS self namespaceURI qualifiedName
-  = liftIO
-      (js_createAttributeNS (toDocument self)
-         (toOptionalJSString namespaceURI)
-         (toJSString qualifiedName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
-createAttributeNS_ ::
-                   (MonadIO m, IsDocument self, ToJSString namespaceURI,
-                    ToJSString qualifiedName) =>
-                     self -> Maybe namespaceURI -> qualifiedName -> m ()
-createAttributeNS_ self namespaceURI qualifiedName
-  = liftIO
-      (void
-         (js_createAttributeNS (toDocument self)
-            (toOptionalJSString namespaceURI)
-            (toJSString qualifiedName)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"createEvent\"]($2); })"
-        js_createEvent :: Document -> JSString -> IO Event
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
-createEvent ::
-            (MonadIO m, IsDocument self, ToJSString type') =>
-              self -> type' -> m Event
-createEvent self type'
-  = liftIO (js_createEvent (toDocument self) (toJSString type'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
-createEvent_ ::
-             (MonadIO m, IsDocument self, ToJSString type') =>
-               self -> type' -> m ()
-createEvent_ self type'
-  = liftIO
-      (void (js_createEvent (toDocument self) (toJSString type')))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createRange\"](); })"
-        js_createRange :: Document -> IO Range
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
-createRange :: (MonadIO m, IsDocument self) => self -> m Range
-createRange self = liftIO (js_createRange (toDocument self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
-createRange_ :: (MonadIO m, IsDocument self) => self -> m ()
-createRange_ self
-  = liftIO (void (js_createRange (toDocument self)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"createNodeIterator\"]($2, $3,\n$4); })" js_createNodeIterator ::
-        Document ->
-          Node -> Optional Word -> Optional NodeFilter -> IO NodeIterator
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
-createNodeIterator ::
-                   (MonadIO m, IsDocument self, IsNode root) =>
-                     self -> root -> Maybe Word -> Maybe NodeFilter -> m NodeIterator
-createNodeIterator self root whatToShow filter
-  = liftIO
-      (js_createNodeIterator (toDocument self) (toNode root)
-         (maybeToOptional whatToShow)
-         (maybeToOptional filter))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
-createNodeIterator_ ::
-                    (MonadIO m, IsDocument self, IsNode root) =>
-                      self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
-createNodeIterator_ self root whatToShow filter
-  = liftIO
-      (void
-         (js_createNodeIterator (toDocument self) (toNode root)
-            (maybeToOptional whatToShow)
-            (maybeToOptional filter)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"createTreeWalker\"]($2, $3,\n$4); })" js_createTreeWalker ::
-        Document ->
-          Node -> Optional Word -> Optional NodeFilter -> IO TreeWalker
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
-createTreeWalker ::
-                 (MonadIO m, IsDocument self, IsNode root) =>
-                   self -> root -> Maybe Word -> Maybe NodeFilter -> m TreeWalker
-createTreeWalker self root whatToShow filter
-  = liftIO
-      (js_createTreeWalker (toDocument self) (toNode root)
-         (maybeToOptional whatToShow)
-         (maybeToOptional filter))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
-createTreeWalker_ ::
-                  (MonadIO m, IsDocument self, IsNode root) =>
-                    self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
-createTreeWalker_ self root whatToShow filter
-  = liftIO
-      (void
-         (js_createTreeWalker (toDocument self) (toNode root)
-            (maybeToOptional whatToShow)
-            (maybeToOptional filter)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementsByName\"]($2); })"
-        js_getElementsByName :: Document -> JSString -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
-getElementsByName ::
-                  (MonadIO m, IsDocument self, ToJSString elementName) =>
-                    self -> elementName -> m NodeList
-getElementsByName self elementName
-  = liftIO
-      (js_getElementsByName (toDocument self) (toJSString elementName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
-getElementsByName_ ::
-                   (MonadIO m, IsDocument self, ToJSString elementName) =>
-                     self -> elementName -> m ()
-getElementsByName_ self elementName
-  = liftIO
-      (void
-         (js_getElementsByName (toDocument self) (toJSString elementName)))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"hasFocus\"]() ? 1 : 0); })"
-        js_hasFocus :: Document -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hasFocus Mozilla Document.hasFocus documentation> 
-hasFocus :: (MonadIO m, IsDocument self) => self -> m Bool
-hasFocus self = liftIO (js_hasFocus (toDocument self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hasFocus Mozilla Document.hasFocus documentation> 
-hasFocus_ :: (MonadIO m, IsDocument self) => self -> m ()
-hasFocus_ self = liftIO (void (js_hasFocus (toDocument self)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return ($1[\"execCommand\"]($2, $3,\n$4) ? 1 : 0); })" js_execCommand ::
-        Document -> JSString -> Bool -> Optional JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
-execCommand ::
-            (MonadIO m, IsDocument self, ToJSString commandId,
-             ToJSString value) =>
-              self -> commandId -> Bool -> Maybe value -> m Bool
-execCommand self commandId showUI value
-  = liftIO
-      (js_execCommand (toDocument self) (toJSString commandId) showUI
-         (toOptionalJSString value))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
-execCommand_ ::
-             (MonadIO m, IsDocument self, ToJSString commandId,
-              ToJSString value) =>
-               self -> commandId -> Bool -> Maybe value -> m ()
-execCommand_ self commandId showUI value
-  = liftIO
-      (void
-         (js_execCommand (toDocument self) (toJSString commandId) showUI
-            (toOptionalJSString value)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"queryCommandEnabled\"]($2) ? 1 : 0); })" js_queryCommandEnabled
-        :: Document -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandEnabled Mozilla Document.queryCommandEnabled documentation> 
-queryCommandEnabled ::
-                    (MonadIO m, IsDocument self, ToJSString commandId) =>
-                      self -> commandId -> m Bool
-queryCommandEnabled self commandId
-  = liftIO
-      (js_queryCommandEnabled (toDocument self) (toJSString commandId))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandEnabled Mozilla Document.queryCommandEnabled documentation> 
-queryCommandEnabled_ ::
-                     (MonadIO m, IsDocument self, ToJSString commandId) =>
-                       self -> commandId -> m ()
-queryCommandEnabled_ self commandId
-  = liftIO
-      (void
-         (js_queryCommandEnabled (toDocument self) (toJSString commandId)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"queryCommandIndeterm\"]($2) ? 1 : 0); })"
-        js_queryCommandIndeterm :: Document -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandIndeterm Mozilla Document.queryCommandIndeterm documentation> 
-queryCommandIndeterm ::
-                     (MonadIO m, IsDocument self, ToJSString commandId) =>
-                       self -> commandId -> m Bool
-queryCommandIndeterm self commandId
-  = liftIO
-      (js_queryCommandIndeterm (toDocument self) (toJSString commandId))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandIndeterm Mozilla Document.queryCommandIndeterm documentation> 
-queryCommandIndeterm_ ::
-                      (MonadIO m, IsDocument self, ToJSString commandId) =>
-                        self -> commandId -> m ()
-queryCommandIndeterm_ self commandId
-  = liftIO
-      (void
-         (js_queryCommandIndeterm (toDocument self) (toJSString commandId)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"queryCommandState\"]($2) ? 1 : 0); })" js_queryCommandState ::
-        Document -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandState Mozilla Document.queryCommandState documentation> 
-queryCommandState ::
-                  (MonadIO m, IsDocument self, ToJSString commandId) =>
-                    self -> commandId -> m Bool
-queryCommandState self commandId
-  = liftIO
-      (js_queryCommandState (toDocument self) (toJSString commandId))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandState Mozilla Document.queryCommandState documentation> 
-queryCommandState_ ::
-                   (MonadIO m, IsDocument self, ToJSString commandId) =>
-                     self -> commandId -> m ()
-queryCommandState_ self commandId
-  = liftIO
-      (void
-         (js_queryCommandState (toDocument self) (toJSString commandId)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"queryCommandSupported\"]($2) ? 1 : 0); })"
-        js_queryCommandSupported :: Document -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandSupported Mozilla Document.queryCommandSupported documentation> 
-queryCommandSupported ::
-                      (MonadIO m, IsDocument self, ToJSString commandId) =>
-                        self -> commandId -> m Bool
-queryCommandSupported self commandId
-  = liftIO
-      (js_queryCommandSupported (toDocument self) (toJSString commandId))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandSupported Mozilla Document.queryCommandSupported documentation> 
-queryCommandSupported_ ::
-                       (MonadIO m, IsDocument self, ToJSString commandId) =>
-                         self -> commandId -> m ()
-queryCommandSupported_ self commandId
-  = liftIO
-      (void
-         (js_queryCommandSupported (toDocument self)
-            (toJSString commandId)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"queryCommandValue\"]($2); })"
-        js_queryCommandValue :: Document -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandValue Mozilla Document.queryCommandValue documentation> 
-queryCommandValue ::
-                  (MonadIO m, IsDocument self, ToJSString commandId,
-                   FromJSString result) =>
-                    self -> commandId -> m result
-queryCommandValue self commandId
-  = liftIO
-      (fromJSString <$>
-         (js_queryCommandValue (toDocument self) (toJSString commandId)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandValue Mozilla Document.queryCommandValue documentation> 
-queryCommandValue_ ::
-                   (MonadIO m, IsDocument self, ToJSString commandId) =>
-                     self -> commandId -> m ()
-queryCommandValue_ self commandId
-  = liftIO
-      (void
-         (js_queryCommandValue (toDocument self) (toJSString commandId)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getSelection\"](); })"
-        js_getSelection :: Document -> IO (Nullable Selection)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelection ::
-             (MonadIO m, IsDocument self) => self -> m (Maybe Selection)
-getSelection self
-  = liftIO (nullableToMaybe <$> (js_getSelection (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelection_ :: (MonadIO m, IsDocument self) => self -> m ()
-getSelection_ self
-  = liftIO (void (js_getSelection (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelectionUnsafe ::
-                   (MonadIO m, IsDocument self, HasCallStack) => self -> m Selection
-getSelectionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSelection (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelectionUnchecked ::
-                      (MonadIO m, IsDocument self) => self -> m Selection
-getSelectionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getSelection (toDocument self)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createExpression\"]($2, $3); })"
-        js_createExpression ::
-        Document ->
-          Optional JSString -> Optional XPathNSResolver -> IO XPathExpression
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
-createExpression ::
-                 (MonadIO m, IsDocument self, ToJSString expression) =>
-                   self ->
-                     Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
-createExpression self expression resolver
-  = liftIO
-      (js_createExpression (toDocument self)
-         (toOptionalJSString expression)
-         (maybeToOptional resolver))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
-createExpression_ ::
-                  (MonadIO m, IsDocument self, ToJSString expression) =>
-                    self -> Maybe expression -> Maybe XPathNSResolver -> m ()
-createExpression_ self expression resolver
-  = liftIO
-      (void
-         (js_createExpression (toDocument self)
-            (toOptionalJSString expression)
-            (maybeToOptional resolver)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createNSResolver\"]($2); })"
-        js_createNSResolver ::
-        Document -> Optional Node -> IO XPathNSResolver
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
-createNSResolver ::
-                 (MonadIO m, IsDocument self, IsNode nodeResolver) =>
-                   self -> Maybe nodeResolver -> m XPathNSResolver
-createNSResolver self nodeResolver
-  = liftIO
-      (js_createNSResolver (toDocument self)
-         (maybeToOptional (fmap toNode nodeResolver)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
-createNSResolver_ ::
-                  (MonadIO m, IsDocument self, IsNode nodeResolver) =>
-                    self -> Maybe nodeResolver -> m ()
-createNSResolver_ self nodeResolver
-  = liftIO
-      (void
-         (js_createNSResolver (toDocument self)
-            (maybeToOptional (fmap toNode nodeResolver))))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"evaluate\"]($2, $3, $4, $5,\n$6); })" js_evaluate ::
-        Document ->
-          Optional JSString ->
-            Optional Node ->
-              Optional XPathNSResolver ->
-                Optional Word -> Optional XPathResult -> IO XPathResult
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
-evaluate ::
-         (MonadIO m, IsDocument self, ToJSString expression,
-          IsNode contextNode) =>
-           self ->
-             Maybe expression ->
-               Maybe contextNode ->
-                 Maybe XPathNSResolver ->
-                   Maybe Word -> Maybe XPathResult -> m XPathResult
-evaluate self expression contextNode resolver type' inResult
-  = liftIO
-      (js_evaluate (toDocument self) (toOptionalJSString expression)
-         (maybeToOptional (fmap toNode contextNode))
-         (maybeToOptional resolver)
-         (maybeToOptional type')
-         (maybeToOptional inResult))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
-evaluate_ ::
-          (MonadIO m, IsDocument self, ToJSString expression,
-           IsNode contextNode) =>
-            self ->
-              Maybe expression ->
-                Maybe contextNode ->
-                  Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m ()
-evaluate_ self expression contextNode resolver type' inResult
-  = liftIO
-      (void
-         (js_evaluate (toDocument self) (toOptionalJSString expression)
-            (maybeToOptional (fmap toNode contextNode))
-            (maybeToOptional resolver)
-            (maybeToOptional type')
-            (maybeToOptional inResult)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitExitFullscreen\"](); })"
-        js_webkitExitFullscreen :: Document -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitExitFullscreen Mozilla Document.webkitExitFullscreen documentation> 
-webkitExitFullscreen ::
-                     (MonadIO m, IsDocument self) => self -> m ()
-webkitExitFullscreen self
-  = liftIO (js_webkitExitFullscreen (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitCancelFullScreen\"](); })"
-        js_webkitCancelFullScreen :: Document -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCancelFullScreen Mozilla Document.webkitCancelFullScreen documentation> 
-webkitCancelFullScreen ::
-                       (MonadIO m, IsDocument self) => self -> m ()
-webkitCancelFullScreen self
-  = liftIO (js_webkitCancelFullScreen (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"exitPointerLock\"](); })"
-        js_exitPointerLock :: Document -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.exitPointerLock Mozilla Document.exitPointerLock documentation> 
-exitPointerLock :: (MonadIO m, IsDocument self) => self -> m ()
-exitPointerLock self
-  = liftIO (js_exitPointerLock (toDocument self))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getOverrideStyle\"]($2, $3); })"
-        js_getOverrideStyle ::
-        Document ->
-          Optional Element -> Optional JSString -> IO CSSStyleDeclaration
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
-getOverrideStyle ::
-                 (MonadIO m, IsDocument self, IsElement element,
-                  ToJSString pseudoElement) =>
-                   self ->
-                     Maybe element -> Maybe pseudoElement -> m CSSStyleDeclaration
-getOverrideStyle self element pseudoElement
-  = liftIO
-      (js_getOverrideStyle (toDocument self)
-         (maybeToOptional (fmap toElement element))
-         (toOptionalJSString pseudoElement))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
-getOverrideStyle_ ::
-                  (MonadIO m, IsDocument self, IsElement element,
-                   ToJSString pseudoElement) =>
-                    self -> Maybe element -> Maybe pseudoElement -> m ()
-getOverrideStyle_ self element pseudoElement
-  = liftIO
-      (void
-         (js_getOverrideStyle (toDocument self)
-            (maybeToOptional (fmap toElement element))
-            (toOptionalJSString pseudoElement)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"caretRangeFromPoint\"]($2,\n$3); })" js_caretRangeFromPoint ::
-        Document -> Optional Int -> Optional Int -> IO Range
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
-caretRangeFromPoint ::
-                    (MonadIO m, IsDocument self) =>
-                      self -> Maybe Int -> Maybe Int -> m Range
-caretRangeFromPoint self x y
-  = liftIO
-      (js_caretRangeFromPoint (toDocument self) (maybeToOptional x)
-         (maybeToOptional y))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
-caretRangeFromPoint_ ::
-                     (MonadIO m, IsDocument self) =>
-                       self -> Maybe Int -> Maybe Int -> m ()
-caretRangeFromPoint_ self x y
-  = liftIO
-      (void
-         (js_caretRangeFromPoint (toDocument self) (maybeToOptional x)
-            (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"getCSSCanvasContext\"]($2,\n$3, $4, $5); })"
-        js_getCSSCanvasContext ::
-        Document ->
-          JSString -> JSString -> Int -> Int -> IO RenderingContext
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
-getCSSCanvasContext ::
-                    (MonadIO m, IsDocument self, ToJSString contextId,
-                     ToJSString name) =>
-                      self -> contextId -> name -> Int -> Int -> m RenderingContext
-getCSSCanvasContext self contextId name width height
-  = liftIO
-      (js_getCSSCanvasContext (toDocument self) (toJSString contextId)
-         (toJSString name)
-         width
-         height)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
-getCSSCanvasContext_ ::
-                     (MonadIO m, IsDocument self, ToJSString contextId,
-                      ToJSString name) =>
-                       self -> contextId -> name -> Int -> Int -> m ()
-getCSSCanvasContext_ self contextId name width height
-  = liftIO
-      (void
-         (js_getCSSCanvasContext (toDocument self) (toJSString contextId)
-            (toJSString name)
-            width
-            height))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitGetNamedFlows\"](); })"
-        js_webkitGetNamedFlows :: Document -> IO DOMNamedFlowCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
-webkitGetNamedFlows ::
-                    (MonadIO m, IsDocument self) => self -> m DOMNamedFlowCollection
-webkitGetNamedFlows self
-  = liftIO (js_webkitGetNamedFlows (toDocument self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
-webkitGetNamedFlows_ ::
-                     (MonadIO m, IsDocument self) => self -> m ()
-webkitGetNamedFlows_ self
-  = liftIO (void (js_webkitGetNamedFlows (toDocument self)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"createTouch\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12); })"
-        js_createTouch ::
-        Document ->
-          Optional Window ->
-            Optional EventTarget ->
-              Optional Int ->
-                Optional Int ->
-                  Optional Int ->
-                    Optional Int ->
-                      Optional Int ->
-                        Optional Int ->
-                          Optional Int -> Optional Float -> Optional Float -> IO Touch
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
-createTouch ::
-            (MonadIO m, IsDocument self, IsEventTarget target) =>
-              self ->
-                Maybe Window ->
-                  Maybe target ->
-                    Maybe Int ->
-                      Maybe Int ->
-                        Maybe Int ->
-                          Maybe Int ->
-                            Maybe Int ->
-                              Maybe Int -> Maybe Int -> Maybe Float -> Maybe Float -> m Touch
-createTouch self window target identifier pageX pageY screenX
-  screenY webkitRadiusX webkitRadiusY webkitRotationAngle webkitForce
-  = liftIO
-      (js_createTouch (toDocument self) (maybeToOptional window)
-         (maybeToOptional (fmap toEventTarget target))
-         (maybeToOptional identifier)
-         (maybeToOptional pageX)
-         (maybeToOptional pageY)
-         (maybeToOptional screenX)
-         (maybeToOptional screenY)
-         (maybeToOptional webkitRadiusX)
-         (maybeToOptional webkitRadiusY)
-         (maybeToOptional webkitRotationAngle)
-         (maybeToOptional webkitForce))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
-createTouch_ ::
-             (MonadIO m, IsDocument self, IsEventTarget target) =>
-               self ->
-                 Maybe Window ->
-                   Maybe target ->
-                     Maybe Int ->
-                       Maybe Int ->
-                         Maybe Int ->
-                           Maybe Int ->
-                             Maybe Int ->
-                               Maybe Int -> Maybe Int -> Maybe Float -> Maybe Float -> m ()
-createTouch_ self window target identifier pageX pageY screenX
-  screenY webkitRadiusX webkitRadiusY webkitRotationAngle webkitForce
-  = liftIO
-      (void
-         (js_createTouch (toDocument self) (maybeToOptional window)
-            (maybeToOptional (fmap toEventTarget target))
-            (maybeToOptional identifier)
-            (maybeToOptional pageX)
-            (maybeToOptional pageY)
-            (maybeToOptional screenX)
-            (maybeToOptional screenY)
-            (maybeToOptional webkitRadiusX)
-            (maybeToOptional webkitRadiusY)
-            (maybeToOptional webkitRotationAngle)
-            (maybeToOptional webkitForce)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createTouchList\"]($2); })"
-        js_createTouchList :: Document -> JSVal -> IO TouchList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
-createTouchList ::
-                (MonadIO m, IsDocument self) => self -> [Touch] -> m TouchList
-createTouchList self touches
-  = liftIO
-      (toJSVal touches >>=
-         \ touches' -> js_createTouchList (toDocument self) touches')
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
-createTouchList_ ::
-                 (MonadIO m, IsDocument self) => self -> [Touch] -> m ()
-createTouchList_ self touches
-  = liftIO
-      (void
-         (toJSVal touches >>=
-            \ touches' -> js_createTouchList (toDocument self) touches'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"timeline\"]; })" js_getTimeline
-        :: Document -> IO DocumentTimeline
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.timeline Mozilla Document.timeline documentation> 
-getTimeline ::
-            (MonadIO m, IsDocument self) => self -> m DocumentTimeline
-getTimeline self = liftIO (js_getTimeline (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"implementation\"]; })"
-        js_getImplementation :: Document -> IO DOMImplementation
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.implementation Mozilla Document.implementation documentation> 
-getImplementation ::
-                  (MonadIO m, IsDocument self) => self -> m DOMImplementation
-getImplementation self
-  = liftIO (js_getImplementation (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"URL\"]; })" js_getURL ::
-        Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.URL Mozilla Document.URL documentation> 
-getURL ::
-       (MonadIO m, IsDocument self, FromJSString result) =>
-         self -> m result
-getURL self
-  = liftIO (fromJSString <$> (js_getURL (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"documentURI\"]; })"
-        js_getDocumentURI :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentURI Mozilla Document.documentURI documentation> 
-getDocumentURI ::
-               (MonadIO m, IsDocument self, FromJSString result) =>
-                 self -> m result
-getDocumentURI self
-  = liftIO (fromJSString <$> (js_getDocumentURI (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
-        Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.origin Mozilla Document.origin documentation> 
-getOrigin ::
-          (MonadIO m, IsDocument self, FromJSString result) =>
-            self -> m result
-getOrigin self
-  = liftIO (fromJSString <$> (js_getOrigin (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"compatMode\"]; })"
-        js_getCompatMode :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.compatMode Mozilla Document.compatMode documentation> 
-getCompatMode ::
-              (MonadIO m, IsDocument self, FromJSString result) =>
-                self -> m result
-getCompatMode self
-  = liftIO (fromJSString <$> (js_getCompatMode (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"characterSet\"]; })"
-        js_getCharacterSet :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.characterSet Mozilla Document.characterSet documentation> 
-getCharacterSet ::
-                (MonadIO m, IsDocument self, FromJSString result) =>
-                  self -> m result
-getCharacterSet self
-  = liftIO (fromJSString <$> (js_getCharacterSet (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
-        Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
-getCharset ::
-           (MonadIO m, IsDocument self, FromJSString result) =>
-             self -> m result
-getCharset self
-  = liftIO (fromJSString <$> (js_getCharset (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"inputEncoding\"]; })"
-        js_getInputEncoding :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.inputEncoding Mozilla Document.inputEncoding documentation> 
-getInputEncoding ::
-                 (MonadIO m, IsDocument self, FromJSString result) =>
-                   self -> m result
-getInputEncoding self
-  = liftIO (fromJSString <$> (js_getInputEncoding (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contentType\"]; })"
-        js_getContentType :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.contentType Mozilla Document.contentType documentation> 
-getContentType ::
-               (MonadIO m, IsDocument self, FromJSString result) =>
-                 self -> m result
-getContentType self
-  = liftIO (fromJSString <$> (js_getContentType (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"doctype\"]; })" js_getDoctype ::
-        Document -> IO (Nullable DocumentType)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
-getDoctype ::
-           (MonadIO m, IsDocument self) => self -> m (Maybe DocumentType)
-getDoctype self
-  = liftIO (nullableToMaybe <$> (js_getDoctype (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
-getDoctypeUnsafe ::
-                 (MonadIO m, IsDocument self, HasCallStack) =>
-                   self -> m DocumentType
-getDoctypeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getDoctype (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
-getDoctypeUnchecked ::
-                    (MonadIO m, IsDocument self) => self -> m DocumentType
-getDoctypeUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getDoctype (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"documentElement\"]; })"
-        js_getDocumentElement :: Document -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
-getDocumentElement ::
-                   (MonadIO m, IsDocument self) => self -> m (Maybe Element)
-getDocumentElement self
-  = liftIO
-      (nullableToMaybe <$> (js_getDocumentElement (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
-getDocumentElementUnsafe ::
-                         (MonadIO m, IsDocument self, HasCallStack) => self -> m Element
-getDocumentElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getDocumentElement (toDocument self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
-getDocumentElementUnchecked ::
-                            (MonadIO m, IsDocument self) => self -> m Element
-getDocumentElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getDocumentElement (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
-        :: Document -> IO (Nullable Location)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
-getLocation ::
-            (MonadIO m, IsDocument self) => self -> m (Maybe Location)
-getLocation self
-  = liftIO (nullableToMaybe <$> (js_getLocation (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
-getLocationUnsafe ::
-                  (MonadIO m, IsDocument self, HasCallStack) => self -> m Location
-getLocationUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getLocation (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
-getLocationUnchecked ::
-                     (MonadIO m, IsDocument self) => self -> m Location
-getLocationUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getLocation (toDocument self)))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"domain\"] = $2; })" js_setDomain
-        :: Document -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
-setDomain ::
-          (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
-setDomain self val
-  = liftIO (js_setDomain (toDocument self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"domain\"]; })" js_getDomain ::
-        Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
-getDomain ::
-          (MonadIO m, IsDocument self, FromJSString result) =>
-            self -> m result
-getDomain self
-  = liftIO (fromJSString <$> (js_getDomain (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })" js_getReferrer
-        :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.referrer Mozilla Document.referrer documentation> 
-getReferrer ::
-            (MonadIO m, IsDocument self, FromJSString result) =>
-              self -> m result
-getReferrer self
-  = liftIO (fromJSString <$> (js_getReferrer (toDocument self)))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"cookie\"] = $2; })" js_setCookie
-        :: Document -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
-setCookie ::
-          (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
-setCookie self val
-  = liftIO (js_setCookie (toDocument self) (toJSString val))
- 
-foreign import javascript safe "(($1) => { return $1[\"cookie\"]; })" js_getCookie ::
-        Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
-getCookie ::
-          (MonadIO m, IsDocument self, FromJSString result) =>
-            self -> m result
-getCookie self
-  = liftIO (fromJSString <$> (js_getCookie (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lastModified\"]; })"
-        js_getLastModified :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.lastModified Mozilla Document.lastModified documentation> 
-getLastModified ::
-                (MonadIO m, IsDocument self, FromJSString result) =>
-                  self -> m result
-getLastModified self
-  = liftIO (fromJSString <$> (js_getLastModified (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
-        js_getReadyState :: Document -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.readyState Mozilla Document.readyState documentation> 
-getReadyState ::
-              (MonadIO m, IsDocument self) => self -> m DocumentReadyState
-getReadyState self
-  = liftIO
-      ((js_getReadyState (toDocument self)) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"title\"] = $2; })" js_setTitle
-        :: Document -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
-setTitle ::
-         (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
-setTitle self val
-  = liftIO (js_setTitle (toDocument self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
-        Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
-getTitle ::
-         (MonadIO m, IsDocument self, FromJSString result) =>
-           self -> m result
-getTitle self
-  = liftIO (fromJSString <$> (js_getTitle (toDocument self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dir\"] = $2; })" js_setDir ::
-        Document -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.dir Mozilla Document.dir documentation> 
-setDir ::
-       (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
-setDir self val
-  = liftIO (js_setDir (toDocument self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })" js_getDir ::
-        Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.dir Mozilla Document.dir documentation> 
-getDir ::
-       (MonadIO m, IsDocument self, FromJSString result) =>
-         self -> m result
-getDir self
-  = liftIO (fromJSString <$> (js_getDir (toDocument self)))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"body\"] = $2; })" js_setBody ::
-        Document -> Optional HTMLElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-setBody ::
-        (MonadIO m, IsDocument self, IsHTMLElement val) =>
-          self -> Maybe val -> m ()
-setBody self val
-  = liftIO
-      (js_setBody (toDocument self)
-         (maybeToOptional (fmap toHTMLElement val)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })" js_getBody ::
-        Document -> IO (Nullable HTMLElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-getBody ::
-        (MonadIO m, IsDocument self) => self -> m (Maybe HTMLElement)
-getBody self
-  = liftIO (nullableToMaybe <$> (js_getBody (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-getBodyUnsafe ::
-              (MonadIO m, IsDocument self, HasCallStack) => self -> m HTMLElement
-getBodyUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getBody (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-getBodyUnchecked ::
-                 (MonadIO m, IsDocument self) => self -> m HTMLElement
-getBodyUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getBody (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"head\"]; })" js_getHead ::
-        Document -> IO (Nullable HTMLHeadElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
-getHead ::
-        (MonadIO m, IsDocument self) => self -> m (Maybe HTMLHeadElement)
-getHead self
-  = liftIO (nullableToMaybe <$> (js_getHead (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
-getHeadUnsafe ::
-              (MonadIO m, IsDocument self, HasCallStack) =>
-                self -> m HTMLHeadElement
-getHeadUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getHead (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
-getHeadUnchecked ::
-                 (MonadIO m, IsDocument self) => self -> m HTMLHeadElement
-getHeadUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getHead (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"images\"]; })" js_getImages ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.images Mozilla Document.images documentation> 
-getImages ::
-          (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getImages self = liftIO (js_getImages (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"embeds\"]; })" js_getEmbeds ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.embeds Mozilla Document.embeds documentation> 
-getEmbeds ::
-          (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getEmbeds self = liftIO (js_getEmbeds (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"plugins\"]; })" js_getPlugins ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.plugins Mozilla Document.plugins documentation> 
-getPlugins ::
-           (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getPlugins self = liftIO (js_getPlugins (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"links\"]; })" js_getLinks ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.links Mozilla Document.links documentation> 
-getLinks ::
-         (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getLinks self = liftIO (js_getLinks (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"forms\"]; })" js_getForms ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.forms Mozilla Document.forms documentation> 
-getForms ::
-         (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getForms self = liftIO (js_getForms (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scripts\"]; })" js_getScripts ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scripts Mozilla Document.scripts documentation> 
-getScripts ::
-           (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getScripts self = liftIO (js_getScripts (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"currentScript\"]; })"
-        js_getCurrentScript :: Document -> IO (Nullable HTMLScriptElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
-getCurrentScript ::
-                 (MonadIO m, IsDocument self) => self -> m (Maybe HTMLScriptElement)
-getCurrentScript self
-  = liftIO
-      (nullableToMaybe <$> (js_getCurrentScript (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
-getCurrentScriptUnsafe ::
-                       (MonadIO m, IsDocument self, HasCallStack) =>
-                         self -> m HTMLScriptElement
-getCurrentScriptUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getCurrentScript (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
-getCurrentScriptUnchecked ::
-                          (MonadIO m, IsDocument self) => self -> m HTMLScriptElement
-getCurrentScriptUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getCurrentScript (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"defaultView\"]; })"
-        js_getDefaultView :: Document -> IO (Nullable Window)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
-getDefaultView ::
-               (MonadIO m, IsDocument self) => self -> m (Maybe Window)
-getDefaultView self
-  = liftIO
-      (nullableToMaybe <$> (js_getDefaultView (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
-getDefaultViewUnsafe ::
-                     (MonadIO m, IsDocument self, HasCallStack) => self -> m Window
-getDefaultViewUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getDefaultView (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
-getDefaultViewUnchecked ::
-                        (MonadIO m, IsDocument self) => self -> m Window
-getDefaultViewUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getDefaultView (toDocument self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"designMode\"] = $2; })"
-        js_setDesignMode :: Document -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.designMode Mozilla Document.designMode documentation> 
-setDesignMode ::
-              (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
-setDesignMode self val
-  = liftIO (js_setDesignMode (toDocument self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"designMode\"]; })"
-        js_getDesignMode :: Document -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.designMode Mozilla Document.designMode documentation> 
-getDesignMode ::
-              (MonadIO m, IsDocument self, FromJSString result) =>
-                self -> m result
-getDesignMode self
-  = liftIO (fromJSString <$> (js_getDesignMode (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onreadystatechange Mozilla Document.onreadystatechange documentation> 
-readyStateChange ::
-                 (IsDocument self, IsEventTarget self) => EventName self Event
-readyStateChange
-  = unsafeEventNameAsync (toJSString "readystatechange")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"styleSheets\"]; })"
-        js_getStyleSheets :: Document -> IO StyleSheetList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
-getStyleSheets ::
-               (MonadIO m, IsDocument self) => self -> m StyleSheetList
-getStyleSheets self = liftIO (js_getStyleSheets (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollingElement\"]; })"
-        js_getScrollingElement :: Document -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
-getScrollingElement ::
-                    (MonadIO m, IsDocument self) => self -> m (Maybe Element)
-getScrollingElement self
-  = liftIO
-      (nullableToMaybe <$> (js_getScrollingElement (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
-getScrollingElementUnsafe ::
-                          (MonadIO m, IsDocument self, HasCallStack) => self -> m Element
-getScrollingElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getScrollingElement (toDocument self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
-getScrollingElementUnchecked ::
-                             (MonadIO m, IsDocument self) => self -> m Element
-getScrollingElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getScrollingElement (toDocument self)))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitFullscreenEnabled\"] ? 1 : 0); })"
-        js_getWebkitFullscreenEnabled :: Document -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenEnabled Mozilla Document.webkitFullscreenEnabled documentation> 
-getWebkitFullscreenEnabled ::
-                           (MonadIO m, IsDocument self) => self -> m Bool
-getWebkitFullscreenEnabled self
-  = liftIO (js_getWebkitFullscreenEnabled (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitFullscreenElement\"]; })"
-        js_getWebkitFullscreenElement :: Document -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
-getWebkitFullscreenElement ::
-                           (MonadIO m, IsDocument self) => self -> m (Maybe Element)
-getWebkitFullscreenElement self
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getWebkitFullscreenElement (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
-getWebkitFullscreenElementUnsafe ::
-                                 (MonadIO m, IsDocument self, HasCallStack) => self -> m Element
-getWebkitFullscreenElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getWebkitFullscreenElement (toDocument self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
-getWebkitFullscreenElementUnchecked ::
-                                    (MonadIO m, IsDocument self) => self -> m Element
-getWebkitFullscreenElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getWebkitFullscreenElement (toDocument self)))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitIsFullScreen\"] ? 1 : 0); })" js_getWebkitIsFullScreen ::
-        Document -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitIsFullScreen Mozilla Document.webkitIsFullScreen documentation> 
-getWebkitIsFullScreen ::
-                      (MonadIO m, IsDocument self) => self -> m Bool
-getWebkitIsFullScreen self
-  = liftIO (js_getWebkitIsFullScreen (toDocument self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitFullScreenKeyboardInputAllowed\"] ? 1 : 0); })"
-        js_getWebkitFullScreenKeyboardInputAllowed :: Document -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullScreenKeyboardInputAllowed Mozilla Document.webkitFullScreenKeyboardInputAllowed documentation> 
-getWebkitFullScreenKeyboardInputAllowed ::
-                                        (MonadIO m, IsDocument self) => self -> m Bool
-getWebkitFullScreenKeyboardInputAllowed self
-  = liftIO
-      (js_getWebkitFullScreenKeyboardInputAllowed (toDocument self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitCurrentFullScreenElement\"]; })"
-        js_getWebkitCurrentFullScreenElement :: Document -> IO Element
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCurrentFullScreenElement Mozilla Document.webkitCurrentFullScreenElement documentation> 
-getWebkitCurrentFullScreenElement ::
-                                  (MonadIO m, IsDocument self) => self -> m Element
-getWebkitCurrentFullScreenElement self
-  = liftIO (js_getWebkitCurrentFullScreenElement (toDocument self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitfullscreenchange Mozilla Document.onwebkitfullscreenchange documentation> 
-webKitFullscreenChange ::
-                       (IsDocument self, IsEventTarget self) => EventName self Event
-webKitFullscreenChange
-  = unsafeEventName (toJSString "webkitfullscreenchange")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitfullscreenerror Mozilla Document.onwebkitfullscreenerror documentation> 
-webKitFullscreenError ::
-                      (IsDocument self, IsEventTarget self) => EventName self Event
-webKitFullscreenError
-  = unsafeEventName (toJSString "webkitfullscreenerror")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpointerlockchange Mozilla Document.onpointerlockchange documentation> 
-pointerlockchange ::
-                  (IsDocument self, IsEventTarget self) => EventName self Event
-pointerlockchange
-  = unsafeEventName (toJSString "pointerlockchange")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpointerlockerror Mozilla Document.onpointerlockerror documentation> 
-pointerlockerror ::
-                 (IsDocument self, IsEventTarget self) => EventName self Event
-pointerlockerror = unsafeEventName (toJSString "pointerlockerror")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fonts\"]; })" js_getFonts ::
-        Document -> IO FontFaceSet
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.fonts Mozilla Document.fonts documentation> 
-getFonts :: (MonadIO m, IsDocument self) => self -> m FontFaceSet
-getFonts self = liftIO (js_getFonts (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"hidden\"] ? 1 : 0); })"
-        js_getHidden :: Document -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hidden Mozilla Document.hidden documentation> 
-getHidden :: (MonadIO m, IsDocument self) => self -> m Bool
-getHidden self = liftIO (js_getHidden (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"visibilityState\"]; })"
-        js_getVisibilityState :: Document -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.visibilityState Mozilla Document.visibilityState documentation> 
-getVisibilityState ::
-                   (MonadIO m, IsDocument self) => self -> m VisibilityState
-getVisibilityState self
-  = liftIO
-      ((js_getVisibilityState (toDocument self)) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onvisibilitychange Mozilla Document.onvisibilitychange documentation> 
-visibilitychange ::
-                 (IsDocument self, IsEventTarget self) => EventName self Event
-visibilitychange = unsafeEventName (toJSString "visibilitychange")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"applets\"]; })" js_getApplets ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.applets Mozilla Document.applets documentation> 
-getApplets ::
-           (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getApplets self = liftIO (js_getApplets (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"anchors\"]; })" js_getAnchors ::
-        Document -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.anchors Mozilla Document.anchors documentation> 
-getAnchors ::
-           (MonadIO m, IsDocument self) => self -> m HTMLCollection
-getAnchors self = liftIO (js_getAnchors (toDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"preferredStylesheetSet\"]; })"
-        js_getPreferredStylesheetSet :: Document -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
-getPreferredStylesheetSet ::
-                          (MonadIO m, IsDocument self, FromJSString result) =>
-                            self -> m (Maybe result)
-getPreferredStylesheetSet self
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getPreferredStylesheetSet (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
-getPreferredStylesheetSetUnsafe ::
-                                (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
-                                  self -> m result
-getPreferredStylesheetSetUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getPreferredStylesheetSet (toDocument self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
-getPreferredStylesheetSetUnchecked ::
-                                   (MonadIO m, IsDocument self, FromJSString result) =>
-                                     self -> m result
-getPreferredStylesheetSetUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getPreferredStylesheetSet (toDocument self)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"selectedStylesheetSet\"] = $2; })" js_setSelectedStylesheetSet
-        :: Document -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-setSelectedStylesheetSet ::
-                         (MonadIO m, IsDocument self, ToJSString val) =>
-                           self -> Maybe val -> m ()
-setSelectedStylesheetSet self val
-  = liftIO
-      (js_setSelectedStylesheetSet (toDocument self)
-         (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"selectedStylesheetSet\"]; })"
-        js_getSelectedStylesheetSet :: Document -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-getSelectedStylesheetSet ::
-                         (MonadIO m, IsDocument self, FromJSString result) =>
-                           self -> m (Maybe result)
-getSelectedStylesheetSet self
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getSelectedStylesheetSet (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-getSelectedStylesheetSetUnsafe ::
-                               (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
-                                 self -> m result
-getSelectedStylesheetSetUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getSelectedStylesheetSet (toDocument self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-getSelectedStylesheetSetUnchecked ::
-                                  (MonadIO m, IsDocument self, FromJSString result) =>
-                                    self -> m result
-getSelectedStylesheetSetUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getSelectedStylesheetSet (toDocument self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"xmlEncoding\"]; })"
-        js_getXmlEncoding :: Document -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
-getXmlEncoding ::
-               (MonadIO m, IsDocument self, FromJSString result) =>
-                 self -> m (Maybe result)
-getXmlEncoding self
-  = liftIO
-      (fromMaybeJSString <$> (js_getXmlEncoding (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
-getXmlEncodingUnsafe ::
-                     (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
-                       self -> m result
-getXmlEncodingUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getXmlEncoding (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
-getXmlEncodingUnchecked ::
-                        (MonadIO m, IsDocument self, FromJSString result) =>
-                          self -> m result
-getXmlEncodingUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getXmlEncoding (toDocument self)))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"xmlVersion\"] = $2; })"
-        js_setXmlVersion :: Document -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-setXmlVersion ::
-              (MonadIO m, IsDocument self, ToJSString val) =>
-                self -> Maybe val -> m ()
-setXmlVersion self val
-  = liftIO
-      (js_setXmlVersion (toDocument self) (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"xmlVersion\"]; })"
-        js_getXmlVersion :: Document -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-getXmlVersion ::
-              (MonadIO m, IsDocument self, FromJSString result) =>
-                self -> m (Maybe result)
-getXmlVersion self
-  = liftIO
-      (fromMaybeJSString <$> (js_getXmlVersion (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-getXmlVersionUnsafe ::
-                    (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
-                      self -> m result
-getXmlVersionUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getXmlVersion (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-getXmlVersionUnchecked ::
-                       (MonadIO m, IsDocument self, FromJSString result) =>
-                         self -> m result
-getXmlVersionUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getXmlVersion (toDocument self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"xmlStandalone\"] = $2; })"
-        js_setXmlStandalone :: Document -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
-setXmlStandalone ::
-                 (MonadIO m, IsDocument self) => self -> Bool -> m ()
-setXmlStandalone self val
-  = liftIO (js_setXmlStandalone (toDocument self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"xmlStandalone\"] ? 1 : 0); })"
-        js_getXmlStandalone :: Document -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
-getXmlStandalone :: (MonadIO m, IsDocument self) => self -> m Bool
-getXmlStandalone self
-  = liftIO (js_getXmlStandalone (toDocument self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselectstart Mozilla Document.onselectstart documentation> 
-selectStart ::
-            (IsDocument self, IsEventTarget self) => EventName self Event
-selectStart = unsafeEventName (toJSString "selectstart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselectionchange Mozilla Document.onselectionchange documentation> 
-selectionchange ::
-                (IsDocument self, IsEventTarget self) =>
-                  EventName self onselectionchange
-selectionchange = unsafeEventName (toJSString "selectionchange")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rootElement\"]; })"
-        js_getRootElement :: Document -> IO (Nullable SVGSVGElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
-getRootElement ::
-               (MonadIO m, IsDocument self) => self -> m (Maybe SVGSVGElement)
-getRootElement self
-  = liftIO
-      (nullableToMaybe <$> (js_getRootElement (toDocument self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
-getRootElementUnsafe ::
-                     (MonadIO m, IsDocument self, HasCallStack) =>
-                       self -> m SVGSVGElement
-getRootElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getRootElement (toDocument self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
-getRootElementUnchecked ::
-                        (MonadIO m, IsDocument self) => self -> m SVGSVGElement
-getRootElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getRootElement (toDocument self)))
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Document
+       (js_newDocument, js_adoptNode, js_captureEvents, js_caretPositionFromPoint, js_clear, js_close, js_createAttribute, js_createAttributeNS, js_createCDATASection, js_createComment, js_createDocumentFragment, js_createElement, js_createElement', js_createElementNS, js_createElementNS', js_createEvent, js_createNodeIterator, js_createProcessingInstruction, js_createRange, js_createTextNode, js_createTreeWalker, js_elementFromPoint, js_elementsFromPoint, js_execCommand, js_exitFullscreen, js_exitPictureInPicture, js_exitPointerLock, js_getElementsByClassName, js_getElementsByName, js_getElementsByTagName, js_getElementsByTagNameNS, js_getSelection, js_hasFocus, js_hasStorageAccess, js_importNode, js_open, js_openUrlNameFeatures, js_queryCommandEnabled, js_queryCommandIndeterm, js_queryCommandState, js_queryCommandSupported, js_queryCommandValue, js_releaseEvents, js_requestStorageAccess, js_startViewTransition, js_write, js_writeln, js_parseHTML, js_parseHTMLUnsafe, js_getImplementation, js_getURL, js_getDocumentURI, js_getCompatMode, js_getCharacterSet, js_getCharset, js_getInputEncoding, js_getContentType, js_getDoctype, js_getDocumentElement, js_getRootElement, js_getActiveViewTransition, js_getScrollingElement, js_getFullscreenEnabled, js_getFullscreen, js_getLocation, js_setDomain, js_getDomain, js_getReferrer, js_setCookie, js_getCookie, js_getLastModified, js_getReadyState, js_setTitle, js_getTitle, js_setDir, js_getDir, js_setBody, js_getBody, js_getHead, js_getImages, js_getEmbeds, js_getPlugins, js_getLinks, js_getForms, js_getScripts, js_getCurrentScript, js_getDefaultView, js_setDesignMode, js_getDesignMode, js_getHidden, js_getVisibilityState, js_setFgColor, js_getFgColor, js_setLinkColor, js_getLinkColor, js_setVlinkColor, js_getVlinkColor, js_setAlinkColor, js_getAlinkColor, js_setBgColor, js_getBgColor, js_getAnchors, js_getApplets, js_getAll, js_getPictureInPictureEnabled, js_getFragmentDirective, js_getTimeline, newDocument, adoptNode, adoptNode_, captureEvents, caretPositionFromPoint, caretPositionFromPoint_, caretPositionFromPointUnsafe, caretPositionFromPointUnchecked, clear, close, createAttribute, createAttribute_, createAttributeNS, createAttributeNS_, createCDATASection, createCDATASection_, createComment, createComment_, createDocumentFragment, createDocumentFragment_, createElement, createElement_, createElement', createElement'_, createElementNS, createElementNS_, createElementNS', createElementNS'_, createEvent, createEvent_, createNodeIterator, createNodeIterator_, createProcessingInstruction, createProcessingInstruction_, createRange, createRange_, createTextNode, createTextNode_, createTreeWalker, createTreeWalker_, elementFromPoint, elementFromPoint_, elementFromPointUnsafe, elementFromPointUnchecked, elementsFromPoint, elementsFromPoint_, execCommand, execCommand_, exitFullscreen, exitPictureInPicture, exitPointerLock, getElementsByClassName, getElementsByClassName_, getElementsByName, getElementsByName_, getElementsByTagName, getElementsByTagName_, getElementsByTagNameNS, getElementsByTagNameNS_, getSelection, getSelection_, getSelectionUnsafe, getSelectionUnchecked, hasFocus, hasFocus_, hasStorageAccess, hasStorageAccess_, importNode, importNode_, open, open_, openUrlNameFeatures, openUrlNameFeatures_, openUrlNameFeaturesUnsafe, openUrlNameFeaturesUnchecked, queryCommandEnabled, queryCommandEnabled_, queryCommandIndeterm, queryCommandIndeterm_, queryCommandState, queryCommandState_, queryCommandSupported, queryCommandSupported_, queryCommandValue, queryCommandValue_, releaseEvents, requestStorageAccess, startViewTransition, startViewTransition_, write, writeln, parseHTML, parseHTML_, parseHTMLUnsafe, parseHTMLUnsafe_, getImplementation, getURL, getDocumentURI, getCompatMode, getCharacterSet, getCharset, getInputEncoding, getContentType, getDoctype, getDoctypeUnsafe, getDoctypeUnchecked, getDocumentElement, getDocumentElementUnsafe, getDocumentElementUnchecked, getRootElement, getRootElementUnsafe, getRootElementUnchecked, getActiveViewTransition, getActiveViewTransitionUnsafe, getActiveViewTransitionUnchecked, getScrollingElement, getScrollingElementUnsafe, getScrollingElementUnchecked, getFullscreenEnabled, getFullscreen, getLocation, getLocationUnsafe, getLocationUnchecked, setDomain, getDomain, getReferrer, setCookie, getCookie, getLastModified, getReadyState, setTitle, getTitle, setDir, getDir, setBody, getBody, getBodyUnsafe, getBodyUnchecked, getHead, getHeadUnsafe, getHeadUnchecked, getImages, getEmbeds, getPlugins, getLinks, getForms, getScripts, getCurrentScript, getCurrentScriptUnsafe, getCurrentScriptUnchecked, getDefaultView, getDefaultViewUnsafe, getDefaultViewUnchecked, setDesignMode, getDesignMode, getHidden, getVisibilityState, setFgColor, getFgColor, setLinkColor, getLinkColor, setVlinkColor, getVlinkColor, setAlinkColor, getAlinkColor, setBgColor, getBgColor, getAnchors, getApplets, getAll, getPictureInPictureEnabled, getFragmentDirective, getTimeline, fullscreenchange, fullscreenerror, readyStateChange, visibilitychange, pointerlockchange, pointerlockerror, autofill, domContentLoaded, unload, Document(..), gTypeDocument, IsDocument, toDocument)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return new globalThis[\"Document\"](); })"
+        js_newDocument :: IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/Document/Document MDN Document. documentation>
+newDocument :: (MonadDOM m) => m Document
+newDocument = liftDOM ((js_newDocument))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"adoptNode\"]($2); })"
+        js_adoptNode :: Document -> Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Document/adoptNode MDN Document.adoptNode documentation>
+adoptNode :: (MonadDOM m, IsDocument self, IsNode node) => self -> node -> m Node
+adoptNode self node = liftDOM ((js_adoptNode ((Types.toDocument self)) (Types.toNode node)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/adoptNode MDN Document.adoptNode documentation>
+adoptNode_ :: (MonadDOM m, IsDocument self, IsNode node) => self -> node -> m ()
+adoptNode_ self node = liftDOM (void ((js_adoptNode ((Types.toDocument self)) (Types.toNode node))))
+
+foreign import javascript safe "(($1) => { return $1[\"captureEvents\"](); })"
+        js_captureEvents :: Document -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-document-captureevents Document.captureEvents specification>
+captureEvents :: (MonadDOM m, IsDocument self) => self -> m ()
+captureEvents self = liftDOM (void ((js_captureEvents ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"caretPositionFromPoint\"]($2, $3, $4); })"
+        js_caretPositionFromPoint :: Document -> Double -> Double -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/caretPositionFromPoint MDN Document.caretPositionFromPoint documentation>
+caretPositionFromPoint :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> Maybe CaretPositionFromPointOptions -> m (Maybe CaretPosition)
+caretPositionFromPoint self x y options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_caretPositionFromPoint ((Types.toDocument self)) (x) (y) a4') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/caretPositionFromPoint MDN Document.caretPositionFromPoint documentation>
+caretPositionFromPoint_ :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> Maybe CaretPositionFromPointOptions -> m ()
+caretPositionFromPoint_ self x y options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_caretPositionFromPoint ((Types.toDocument self)) (x) (y) a4')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/caretPositionFromPoint MDN Document.caretPositionFromPoint documentation>
+caretPositionFromPointUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> Double -> Double -> Maybe CaretPositionFromPointOptions -> m CaretPosition
+caretPositionFromPointUnsafe self x y options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_caretPositionFromPoint ((Types.toDocument self)) (x) (y) a4') >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/caretPositionFromPoint MDN Document.caretPositionFromPoint documentation>
+caretPositionFromPointUnchecked :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> Maybe CaretPositionFromPointOptions -> m CaretPosition
+caretPositionFromPointUnchecked self x y options = liftDOM ((pFromJSVal <$> ((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_caretPositionFromPoint ((Types.toDocument self)) (x) (y) a4')))
+
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: Document -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/clear MDN Document.clear documentation>
+clear :: (MonadDOM m, IsDocument self) => self -> m ()
+clear self = liftDOM (void ((js_clear ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: Document -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/close MDN Document.close documentation>
+close :: (MonadDOM m, IsDocument self) => self -> m ()
+close self = liftDOM (void ((js_close ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createAttribute\"]($2); })"
+        js_createAttribute :: Document -> JSString -> IO Attr
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createAttribute MDN Document.createAttribute documentation>
+createAttribute :: (MonadDOM m, IsDocument self, ToJSString localName) => self -> localName -> m Attr
+createAttribute self localName = liftDOM ((js_createAttribute ((Types.toDocument self)) (toJSString localName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createAttribute MDN Document.createAttribute documentation>
+createAttribute_ :: (MonadDOM m, IsDocument self, ToJSString localName) => self -> localName -> m ()
+createAttribute_ self localName = liftDOM (void ((js_createAttribute ((Types.toDocument self)) (toJSString localName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createAttributeNS\"]($2, $3); })"
+        js_createAttributeNS :: Document -> (Nullable JSString) -> JSString -> IO Attr
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createAttributeNS MDN Document.createAttributeNS documentation>
+createAttributeNS :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m Attr
+createAttributeNS self namespace qualifiedName = liftDOM ((js_createAttributeNS ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createAttributeNS MDN Document.createAttributeNS documentation>
+createAttributeNS_ :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m ()
+createAttributeNS_ self namespace qualifiedName = liftDOM (void ((js_createAttributeNS ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createCDATASection\"]($2); })"
+        js_createCDATASection :: Document -> JSString -> IO CDATASection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createCDATASection MDN Document.createCDATASection documentation>
+createCDATASection :: (MonadDOM m, IsDocument self, ToJSString data') => self -> data' -> m CDATASection
+createCDATASection self data' = liftDOM ((js_createCDATASection ((Types.toDocument self)) (toJSString data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createCDATASection MDN Document.createCDATASection documentation>
+createCDATASection_ :: (MonadDOM m, IsDocument self, ToJSString data') => self -> data' -> m ()
+createCDATASection_ self data' = liftDOM (void ((js_createCDATASection ((Types.toDocument self)) (toJSString data'))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createComment\"]($2); })"
+        js_createComment :: Document -> JSString -> IO Comment
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createComment MDN Document.createComment documentation>
+createComment :: (MonadDOM m, IsDocument self, ToJSString data') => self -> data' -> m Comment
+createComment self data' = liftDOM ((js_createComment ((Types.toDocument self)) (toJSString data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createComment MDN Document.createComment documentation>
+createComment_ :: (MonadDOM m, IsDocument self, ToJSString data') => self -> data' -> m ()
+createComment_ self data' = liftDOM (void ((js_createComment ((Types.toDocument self)) (toJSString data'))))
+
+foreign import javascript safe "(($1) => { return $1[\"createDocumentFragment\"](); })"
+        js_createDocumentFragment :: Document -> IO DocumentFragment
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createDocumentFragment MDN Document.createDocumentFragment documentation>
+createDocumentFragment :: (MonadDOM m, IsDocument self) => self -> m DocumentFragment
+createDocumentFragment self = liftDOM ((js_createDocumentFragment ((Types.toDocument self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createDocumentFragment MDN Document.createDocumentFragment documentation>
+createDocumentFragment_ :: (MonadDOM m, IsDocument self) => self -> m ()
+createDocumentFragment_ self = liftDOM (void ((js_createDocumentFragment ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createElement\"]($2); })"
+        js_createElement :: Document -> JSString -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElement MDN Document.createElement documentation>
+createElement :: (MonadDOM m, IsDocument self, ToJSString localName) => self -> localName -> m Element
+createElement self localName = liftDOM ((js_createElement ((Types.toDocument self)) (toJSString localName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElement MDN Document.createElement documentation>
+createElement_ :: (MonadDOM m, IsDocument self, ToJSString localName) => self -> localName -> m ()
+createElement_ self localName = liftDOM (void ((js_createElement ((Types.toDocument self)) (toJSString localName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createElement\"]($2, $3); })"
+        js_createElement' :: Document -> JSString -> JSVal -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElement MDN Document.createElement documentation>
+createElement' :: (MonadDOM m, IsDocument self, ToJSString localName, IsStringOrElementCreationOptions options) => self -> localName -> Maybe options -> m Element
+createElement' self localName options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_createElement' ((Types.toDocument self)) (toJSString localName) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElement MDN Document.createElement documentation>
+createElement'_ :: (MonadDOM m, IsDocument self, ToJSString localName, IsStringOrElementCreationOptions options) => self -> localName -> Maybe options -> m ()
+createElement'_ self localName options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_createElement' ((Types.toDocument self)) (toJSString localName) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createElementNS\"]($2, $3); })"
+        js_createElementNS :: Document -> (Nullable JSString) -> JSString -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElementNS MDN Document.createElementNS documentation>
+createElementNS :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m Element
+createElementNS self namespace qualifiedName = liftDOM ((js_createElementNS ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElementNS MDN Document.createElementNS documentation>
+createElementNS_ :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m ()
+createElementNS_ self namespace qualifiedName = liftDOM (void ((js_createElementNS ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createElementNS\"]($2, $3, $4); })"
+        js_createElementNS' :: Document -> (Nullable JSString) -> JSString -> JSVal -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElementNS MDN Document.createElementNS documentation>
+createElementNS' :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName, IsStringOrElementCreationOptions options) => self -> Maybe namespace -> qualifiedName -> Maybe options -> m Element
+createElementNS' self namespace qualifiedName options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_createElementNS' ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString qualifiedName) a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createElementNS MDN Document.createElementNS documentation>
+createElementNS'_ :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName, IsStringOrElementCreationOptions options) => self -> Maybe namespace -> qualifiedName -> Maybe options -> m ()
+createElementNS'_ self namespace qualifiedName options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_createElementNS' ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString qualifiedName) a4')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createEvent\"]($2); })"
+        js_createEvent :: Document -> JSString -> IO Event
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createEvent MDN Document.createEvent documentation>
+createEvent :: (MonadDOM m, IsDocument self, ToJSString interface) => self -> interface -> m Event
+createEvent self interface = liftDOM ((js_createEvent ((Types.toDocument self)) (toJSString interface)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createEvent MDN Document.createEvent documentation>
+createEvent_ :: (MonadDOM m, IsDocument self, ToJSString interface) => self -> interface -> m ()
+createEvent_ self interface = liftDOM (void ((js_createEvent ((Types.toDocument self)) (toJSString interface))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createNodeIterator\"]($2, $3, $4); })"
+        js_createNodeIterator :: Document -> Node -> JSVal -> JSVal -> IO NodeIterator
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createNodeIterator MDN Document.createNodeIterator documentation>
+createNodeIterator :: (MonadDOM m, IsDocument self, IsNode root) => self -> root -> Maybe Word -> Maybe NodeFilter -> m NodeIterator
+createNodeIterator self root whatToShow filter = liftDOM (((P.maybe (P.return jsUndefined) toJSVal whatToShow) >>= \a3' -> (toJSVal filter) >>= \a4' -> js_createNodeIterator ((Types.toDocument self)) (Types.toNode root) a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createNodeIterator MDN Document.createNodeIterator documentation>
+createNodeIterator_ :: (MonadDOM m, IsDocument self, IsNode root) => self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
+createNodeIterator_ self root whatToShow filter = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal whatToShow) >>= \a3' -> (toJSVal filter) >>= \a4' -> js_createNodeIterator ((Types.toDocument self)) (Types.toNode root) a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createProcessingInstruction\"]($2, $3); })"
+        js_createProcessingInstruction :: Document -> JSString -> JSString -> IO ProcessingInstruction
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createProcessingInstruction MDN Document.createProcessingInstruction documentation>
+createProcessingInstruction :: (MonadDOM m, IsDocument self, ToJSString target, ToJSString data') => self -> target -> data' -> m ProcessingInstruction
+createProcessingInstruction self target data' = liftDOM ((js_createProcessingInstruction ((Types.toDocument self)) (toJSString target) (toJSString data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createProcessingInstruction MDN Document.createProcessingInstruction documentation>
+createProcessingInstruction_ :: (MonadDOM m, IsDocument self, ToJSString target, ToJSString data') => self -> target -> data' -> m ()
+createProcessingInstruction_ self target data' = liftDOM (void ((js_createProcessingInstruction ((Types.toDocument self)) (toJSString target) (toJSString data'))))
+
+foreign import javascript safe "(($1) => { return $1[\"createRange\"](); })"
+        js_createRange :: Document -> IO Range
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createRange MDN Document.createRange documentation>
+createRange :: (MonadDOM m, IsDocument self) => self -> m Range
+createRange self = liftDOM ((js_createRange ((Types.toDocument self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createRange MDN Document.createRange documentation>
+createRange_ :: (MonadDOM m, IsDocument self) => self -> m ()
+createRange_ self = liftDOM (void ((js_createRange ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createTextNode\"]($2); })"
+        js_createTextNode :: Document -> JSString -> IO Text
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createTextNode MDN Document.createTextNode documentation>
+createTextNode :: (MonadDOM m, IsDocument self, ToJSString data') => self -> data' -> m Text
+createTextNode self data' = liftDOM ((js_createTextNode ((Types.toDocument self)) (toJSString data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createTextNode MDN Document.createTextNode documentation>
+createTextNode_ :: (MonadDOM m, IsDocument self, ToJSString data') => self -> data' -> m ()
+createTextNode_ self data' = liftDOM (void ((js_createTextNode ((Types.toDocument self)) (toJSString data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createTreeWalker\"]($2, $3, $4); })"
+        js_createTreeWalker :: Document -> Node -> JSVal -> JSVal -> IO TreeWalker
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createTreeWalker MDN Document.createTreeWalker documentation>
+createTreeWalker :: (MonadDOM m, IsDocument self, IsNode root) => self -> root -> Maybe Word -> Maybe NodeFilter -> m TreeWalker
+createTreeWalker self root whatToShow filter = liftDOM (((P.maybe (P.return jsUndefined) toJSVal whatToShow) >>= \a3' -> (toJSVal filter) >>= \a4' -> js_createTreeWalker ((Types.toDocument self)) (Types.toNode root) a3' a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createTreeWalker MDN Document.createTreeWalker documentation>
+createTreeWalker_ :: (MonadDOM m, IsDocument self, IsNode root) => self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
+createTreeWalker_ self root whatToShow filter = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal whatToShow) >>= \a3' -> (toJSVal filter) >>= \a4' -> js_createTreeWalker ((Types.toDocument self)) (Types.toNode root) a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"elementFromPoint\"]($2, $3); })"
+        js_elementFromPoint :: Document -> Double -> Double -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/elementFromPoint MDN Document.elementFromPoint documentation>
+elementFromPoint :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> m (Maybe Element)
+elementFromPoint self x y = liftDOM (((js_elementFromPoint ((Types.toDocument self)) (x) (y)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/elementFromPoint MDN Document.elementFromPoint documentation>
+elementFromPoint_ :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> m ()
+elementFromPoint_ self x y = liftDOM (void ((js_elementFromPoint ((Types.toDocument self)) (x) (y))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/elementFromPoint MDN Document.elementFromPoint documentation>
+elementFromPointUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> Double -> Double -> m Element
+elementFromPointUnsafe self x y = liftDOM ((((js_elementFromPoint ((Types.toDocument self)) (x) (y)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/elementFromPoint MDN Document.elementFromPoint documentation>
+elementFromPointUnchecked :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> m Element
+elementFromPointUnchecked self x y = liftDOM ((pFromJSVal <$> (js_elementFromPoint ((Types.toDocument self)) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"elementsFromPoint\"]($2, $3); })"
+        js_elementsFromPoint :: Document -> Double -> Double -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/elementsFromPoint MDN Document.elementsFromPoint documentation>
+elementsFromPoint :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> m [Element]
+elementsFromPoint self x y = liftDOM (((js_elementsFromPoint ((Types.toDocument self)) (x) (y)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/elementsFromPoint MDN Document.elementsFromPoint documentation>
+elementsFromPoint_ :: (MonadDOM m, IsDocument self) => self -> Double -> Double -> m ()
+elementsFromPoint_ self x y = liftDOM (void ((js_elementsFromPoint ((Types.toDocument self)) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"execCommand\"]($2, $3, $4); })"
+        js_execCommand :: Document -> JSString -> JSVal -> (Optional JSString) -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/execCommand MDN Document.execCommand documentation>
+execCommand :: (MonadDOM m, IsDocument self, ToJSString commandId, ToJSString value) => self -> commandId -> Maybe Bool -> Maybe value -> m Bool
+execCommand self commandId showUI value = liftDOM (((P.maybe (P.return jsUndefined) toJSVal showUI) >>= \a3' -> js_execCommand ((Types.toDocument self)) (toJSString commandId) a3' (toOptionalJSString value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/execCommand MDN Document.execCommand documentation>
+execCommand_ :: (MonadDOM m, IsDocument self, ToJSString commandId, ToJSString value) => self -> commandId -> Maybe Bool -> Maybe value -> m ()
+execCommand_ self commandId showUI value = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal showUI) >>= \a3' -> js_execCommand ((Types.toDocument self)) (toJSString commandId) a3' (toOptionalJSString value))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"exitFullscreen\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_exitFullscreen :: Document -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Document/exitFullscreen MDN Document.exitFullscreen documentation>
+exitFullscreen :: (MonadDOM m, IsDocument self) => self -> m ()
+exitFullscreen self = liftDOM (void (((js_exitFullscreen ((Types.toDocument self))) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"exitPictureInPicture\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_exitPictureInPicture :: Document -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Document/exitPictureInPicture MDN Document.exitPictureInPicture documentation>
+exitPictureInPicture :: (MonadDOM m, IsDocument self) => self -> m ()
+exitPictureInPicture self = liftDOM (void (((js_exitPictureInPicture ((Types.toDocument self))) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"exitPointerLock\"](); })"
+        js_exitPointerLock :: Document -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/exitPointerLock MDN Document.exitPointerLock documentation>
+exitPointerLock :: (MonadDOM m, IsDocument self) => self -> m ()
+exitPointerLock self = liftDOM (void ((js_exitPointerLock ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getElementsByClassName\"]($2); })"
+        js_getElementsByClassName :: Document -> JSString -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName MDN Document.getElementsByClassName documentation>
+getElementsByClassName :: (MonadDOM m, IsDocument self, ToJSString classNames) => self -> classNames -> m HTMLCollection
+getElementsByClassName self classNames = liftDOM ((js_getElementsByClassName ((Types.toDocument self)) (toJSString classNames)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName MDN Document.getElementsByClassName documentation>
+getElementsByClassName_ :: (MonadDOM m, IsDocument self, ToJSString classNames) => self -> classNames -> m ()
+getElementsByClassName_ self classNames = liftDOM (void ((js_getElementsByClassName ((Types.toDocument self)) (toJSString classNames))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getElementsByName\"]($2); })"
+        js_getElementsByName :: Document -> JSString -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByName MDN Document.getElementsByName documentation>
+getElementsByName :: (MonadDOM m, IsDocument self, ToJSString elementName) => self -> elementName -> m NodeList
+getElementsByName self elementName = liftDOM ((js_getElementsByName ((Types.toDocument self)) (toJSString elementName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByName MDN Document.getElementsByName documentation>
+getElementsByName_ :: (MonadDOM m, IsDocument self, ToJSString elementName) => self -> elementName -> m ()
+getElementsByName_ self elementName = liftDOM (void ((js_getElementsByName ((Types.toDocument self)) (toJSString elementName))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getElementsByTagName\"]($2); })"
+        js_getElementsByTagName :: Document -> JSString -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagName MDN Document.getElementsByTagName documentation>
+getElementsByTagName :: (MonadDOM m, IsDocument self, ToJSString qualifiedName) => self -> qualifiedName -> m HTMLCollection
+getElementsByTagName self qualifiedName = liftDOM ((js_getElementsByTagName ((Types.toDocument self)) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagName MDN Document.getElementsByTagName documentation>
+getElementsByTagName_ :: (MonadDOM m, IsDocument self, ToJSString qualifiedName) => self -> qualifiedName -> m ()
+getElementsByTagName_ self qualifiedName = liftDOM (void ((js_getElementsByTagName ((Types.toDocument self)) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getElementsByTagNameNS\"]($2, $3); })"
+        js_getElementsByTagNameNS :: Document -> (Nullable JSString) -> JSString -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagNameNS MDN Document.getElementsByTagNameNS documentation>
+getElementsByTagNameNS :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m HTMLCollection
+getElementsByTagNameNS self namespace localName = liftDOM ((js_getElementsByTagNameNS ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString localName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagNameNS MDN Document.getElementsByTagNameNS documentation>
+getElementsByTagNameNS_ :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()
+getElementsByTagNameNS_ self namespace localName = liftDOM (void ((js_getElementsByTagNameNS ((Types.toDocument self)) (toMaybeJSString namespace) (toJSString localName))))
+
+foreign import javascript safe "(($1) => { return $1[\"getSelection\"](); })"
+        js_getSelection :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getSelection MDN Document.getSelection documentation>
+getSelection :: (MonadDOM m, IsDocument self) => self -> m (Maybe Selection)
+getSelection self = liftDOM (((js_getSelection ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getSelection MDN Document.getSelection documentation>
+getSelection_ :: (MonadDOM m, IsDocument self) => self -> m ()
+getSelection_ self = liftDOM (void ((js_getSelection ((Types.toDocument self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getSelection MDN Document.getSelection documentation>
+getSelectionUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m Selection
+getSelectionUnsafe self = liftDOM ((((js_getSelection ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getSelection MDN Document.getSelection documentation>
+getSelectionUnchecked :: (MonadDOM m, IsDocument self) => self -> m Selection
+getSelectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelection ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"hasFocus\"](); })"
+        js_hasFocus :: Document -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasFocus MDN Document.hasFocus documentation>
+hasFocus :: (MonadDOM m, IsDocument self) => self -> m Bool
+hasFocus self = liftDOM ((js_hasFocus ((Types.toDocument self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasFocus MDN Document.hasFocus documentation>
+hasFocus_ :: (MonadDOM m, IsDocument self) => self -> m ()
+hasFocus_ self = liftDOM (void ((js_hasFocus ((Types.toDocument self)))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"hasStorageAccess\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_hasStorageAccess :: Document -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasStorageAccess MDN Document.hasStorageAccess documentation>
+hasStorageAccess :: (MonadDOM m, IsDocument self) => self -> m Bool
+hasStorageAccess self = liftDOM (((js_hasStorageAccess ((Types.toDocument self))) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasStorageAccess MDN Document.hasStorageAccess documentation>
+hasStorageAccess_ :: (MonadDOM m, IsDocument self) => self -> m ()
+hasStorageAccess_ self = liftDOM (void (((js_hasStorageAccess ((Types.toDocument self))) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"importNode\"]($2, $3); })"
+        js_importNode :: Document -> Node -> JSVal -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Document/importNode MDN Document.importNode documentation>
+importNode :: (MonadDOM m, IsDocument self, IsNode node, IsBoolOrImportNodeOptions options) => self -> node -> Maybe options -> m Node
+importNode self node options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_importNode ((Types.toDocument self)) (Types.toNode node) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/importNode MDN Document.importNode documentation>
+importNode_ :: (MonadDOM m, IsDocument self, IsNode node, IsBoolOrImportNodeOptions options) => self -> node -> Maybe options -> m ()
+importNode_ self node options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_importNode ((Types.toDocument self)) (Types.toNode node) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"open\"]($2, $3); })"
+        js_open :: Document -> (Optional JSString) -> (Optional JSString) -> IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/Document/open MDN Document.open documentation>
+open :: (MonadDOM m, IsDocument self, ToJSString unused1, ToJSString unused2) => self -> Maybe unused1 -> Maybe unused2 -> m Document
+open self unused1 unused2 = liftDOM ((js_open ((Types.toDocument self)) (toOptionalJSString unused1) (toOptionalJSString unused2)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/open MDN Document.open documentation>
+open_ :: (MonadDOM m, IsDocument self, ToJSString unused1, ToJSString unused2) => self -> Maybe unused1 -> Maybe unused2 -> m ()
+open_ self unused1 unused2 = liftDOM (void ((js_open ((Types.toDocument self)) (toOptionalJSString unused1) (toOptionalJSString unused2))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"open\"]($2, $3, $4); })"
+        js_openUrlNameFeatures :: Document -> JSString -> JSString -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/open MDN Document.open documentation>
+openUrlNameFeatures :: (MonadDOM m, IsDocument self, ToJSString url, ToJSString name, ToJSString features) => self -> url -> name -> features -> m (Maybe Window)
+openUrlNameFeatures self url name features = liftDOM (((js_openUrlNameFeatures ((Types.toDocument self)) (toJSString url) (toJSString name) (toJSString features)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/open MDN Document.open documentation>
+openUrlNameFeatures_ :: (MonadDOM m, IsDocument self, ToJSString url, ToJSString name, ToJSString features) => self -> url -> name -> features -> m ()
+openUrlNameFeatures_ self url name features = liftDOM (void ((js_openUrlNameFeatures ((Types.toDocument self)) (toJSString url) (toJSString name) (toJSString features))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/open MDN Document.open documentation>
+openUrlNameFeaturesUnsafe :: (MonadDOM m, IsDocument self, ToJSString url, ToJSString name, ToJSString features, HasCallStack) => self -> url -> name -> features -> m Window
+openUrlNameFeaturesUnsafe self url name features = liftDOM ((((js_openUrlNameFeatures ((Types.toDocument self)) (toJSString url) (toJSString name) (toJSString features)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/open MDN Document.open documentation>
+openUrlNameFeaturesUnchecked :: (MonadDOM m, IsDocument self, ToJSString url, ToJSString name, ToJSString features) => self -> url -> name -> features -> m Window
+openUrlNameFeaturesUnchecked self url name features = liftDOM ((pFromJSVal <$> (js_openUrlNameFeatures ((Types.toDocument self)) (toJSString url) (toJSString name) (toJSString features))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"queryCommandEnabled\"]($2); })"
+        js_queryCommandEnabled :: Document -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/queryCommandEnabled MDN Document.queryCommandEnabled documentation>
+queryCommandEnabled :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m Bool
+queryCommandEnabled self commandId = liftDOM ((js_queryCommandEnabled ((Types.toDocument self)) (toJSString commandId)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/queryCommandEnabled MDN Document.queryCommandEnabled documentation>
+queryCommandEnabled_ :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m ()
+queryCommandEnabled_ self commandId = liftDOM (void ((js_queryCommandEnabled ((Types.toDocument self)) (toJSString commandId))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"queryCommandIndeterm\"]($2); })"
+        js_queryCommandIndeterm :: Document -> JSString -> IO Bool
+queryCommandIndeterm :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m Bool
+queryCommandIndeterm self commandId = liftDOM ((js_queryCommandIndeterm ((Types.toDocument self)) (toJSString commandId)))
+
+queryCommandIndeterm_ :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m ()
+queryCommandIndeterm_ self commandId = liftDOM (void ((js_queryCommandIndeterm ((Types.toDocument self)) (toJSString commandId))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"queryCommandState\"]($2); })"
+        js_queryCommandState :: Document -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/queryCommandState MDN Document.queryCommandState documentation>
+queryCommandState :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m Bool
+queryCommandState self commandId = liftDOM ((js_queryCommandState ((Types.toDocument self)) (toJSString commandId)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/queryCommandState MDN Document.queryCommandState documentation>
+queryCommandState_ :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m ()
+queryCommandState_ self commandId = liftDOM (void ((js_queryCommandState ((Types.toDocument self)) (toJSString commandId))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"queryCommandSupported\"]($2); })"
+        js_queryCommandSupported :: Document -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/queryCommandSupported MDN Document.queryCommandSupported documentation>
+queryCommandSupported :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m Bool
+queryCommandSupported self commandId = liftDOM ((js_queryCommandSupported ((Types.toDocument self)) (toJSString commandId)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/queryCommandSupported MDN Document.queryCommandSupported documentation>
+queryCommandSupported_ :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m ()
+queryCommandSupported_ self commandId = liftDOM (void ((js_queryCommandSupported ((Types.toDocument self)) (toJSString commandId))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"queryCommandValue\"]($2); })"
+        js_queryCommandValue :: Document -> JSString -> IO JSString
+queryCommandValue :: (MonadDOM m, IsDocument self, ToJSString commandId, FromJSString result) => self -> commandId -> m result
+queryCommandValue self commandId = liftDOM ((fromJSString <$> (js_queryCommandValue ((Types.toDocument self)) (toJSString commandId))))
+
+queryCommandValue_ :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m ()
+queryCommandValue_ self commandId = liftDOM (void ((js_queryCommandValue ((Types.toDocument self)) (toJSString commandId))))
+
+foreign import javascript safe "(($1) => { return $1[\"releaseEvents\"](); })"
+        js_releaseEvents :: Document -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-document-releaseevents Document.releaseEvents specification>
+releaseEvents :: (MonadDOM m, IsDocument self) => self -> m ()
+releaseEvents self = liftDOM (void ((js_releaseEvents ((Types.toDocument self)))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"requestStorageAccess\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestStorageAccess :: Document -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Document/requestStorageAccess MDN Document.requestStorageAccess documentation>
+requestStorageAccess :: (MonadDOM m, IsDocument self) => self -> m ()
+requestStorageAccess self = liftDOM (void (((js_requestStorageAccess ((Types.toDocument self))) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"startViewTransition\"]($2); })"
+        js_startViewTransition :: Document -> JSVal -> IO ViewTransition
+-- | <https://developer.mozilla.org/docs/Web/API/Document/startViewTransition MDN Document.startViewTransition documentation>
+startViewTransition :: (MonadDOM m, IsDocument self, IsViewTransitionUpdateCallbackOrStartViewTransitionOptions callbackOptions) => self -> Maybe callbackOptions -> m ViewTransition
+startViewTransition self callbackOptions = liftDOM (((P.maybe (P.return jsUndefined) toJSVal callbackOptions) >>= \a2' -> js_startViewTransition ((Types.toDocument self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/startViewTransition MDN Document.startViewTransition documentation>
+startViewTransition_ :: (MonadDOM m, IsDocument self, IsViewTransitionUpdateCallbackOrStartViewTransitionOptions callbackOptions) => self -> Maybe callbackOptions -> m ()
+startViewTransition_ self callbackOptions = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal callbackOptions) >>= \a2' -> js_startViewTransition ((Types.toDocument self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"write\"](...$2); })"
+        js_write :: Document -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/write MDN Document.write documentation>
+write :: (MonadDOM m, IsDocument self, IsTrustedHTMLOrString text) => self -> [text] -> m ()
+write self text = liftDOM (void (((toJSVal text) >>= \a2' -> js_write ((Types.toDocument self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"writeln\"](...$2); })"
+        js_writeln :: Document -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/writeln MDN Document.writeln documentation>
+writeln :: (MonadDOM m, IsDocument self, IsTrustedHTMLOrString text) => self -> [text] -> m ()
+writeln self text = liftDOM (void (((toJSVal text) >>= \a2' -> js_writeln ((Types.toDocument self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"Document\"][\"parseHTML\"]($1, $2); })"
+        js_parseHTML :: JSString -> JSVal -> IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/Document/parseHTML_static MDN Document.parseHTML documentation>
+parseHTML :: (MonadDOM m, ToJSString html) => html -> Maybe SetHTMLOptions -> m Document
+parseHTML html options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_parseHTML (toJSString html) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/parseHTML_static MDN Document.parseHTML documentation>
+parseHTML_ :: (MonadDOM m, ToJSString html) => html -> Maybe SetHTMLOptions -> m ()
+parseHTML_ html options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_parseHTML (toJSString html) a2')))
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"Document\"][\"parseHTMLUnsafe\"]($1, $2); })"
+        js_parseHTMLUnsafe :: TrustedHTMLOrString -> JSVal -> IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/Document/parseHTMLUnsafe_static MDN Document.parseHTMLUnsafe documentation>
+parseHTMLUnsafe :: (MonadDOM m, IsTrustedHTMLOrString html, IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions options) => html -> Maybe options -> m Document
+parseHTMLUnsafe html options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_parseHTMLUnsafe (Types.toTrustedHTMLOrString html) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/parseHTMLUnsafe_static MDN Document.parseHTMLUnsafe documentation>
+parseHTMLUnsafe_ :: (MonadDOM m, IsTrustedHTMLOrString html, IsParseHTMLUnsafeOptionsOrTrustedHTMLParserOptions options) => html -> Maybe options -> m ()
+parseHTMLUnsafe_ html options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_parseHTMLUnsafe (Types.toTrustedHTMLOrString html) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"implementation\"]; })"
+        js_getImplementation :: Document -> IO DOMImplementation
+-- | <https://developer.mozilla.org/docs/Web/API/Document/implementation MDN Document.implementation documentation>
+getImplementation :: (MonadDOM m, IsDocument self) => self -> m DOMImplementation
+getImplementation self = liftDOM ((js_getImplementation ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"URL\"]; })"
+        js_getURL :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/URL MDN Document.URL documentation>
+getURL :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getURL self = liftDOM ((fromJSString <$> (js_getURL ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"documentURI\"]; })"
+        js_getDocumentURI :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/documentURI MDN Document.documentURI documentation>
+getDocumentURI :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getDocumentURI self = liftDOM ((fromJSString <$> (js_getDocumentURI ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"compatMode\"]; })"
+        js_getCompatMode :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/compatMode MDN Document.compatMode documentation>
+getCompatMode :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getCompatMode self = liftDOM ((fromJSString <$> (js_getCompatMode ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"characterSet\"]; })"
+        js_getCharacterSet :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/characterSet MDN Document.characterSet documentation>
+getCharacterSet :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getCharacterSet self = liftDOM ((fromJSString <$> (js_getCharacterSet ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })"
+        js_getCharset :: Document -> IO JSString
+-- | <https://dom.spec.whatwg.org/#dom-document-charset Document.charset specification>
+getCharset :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getCharset self = liftDOM ((fromJSString <$> (js_getCharset ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inputEncoding\"]; })"
+        js_getInputEncoding :: Document -> IO JSString
+-- | <https://dom.spec.whatwg.org/#dom-document-inputencoding Document.inputEncoding specification>
+getInputEncoding :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getInputEncoding self = liftDOM ((fromJSString <$> (js_getInputEncoding ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentType\"]; })"
+        js_getContentType :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/contentType MDN Document.contentType documentation>
+getContentType :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getContentType self = liftDOM ((fromJSString <$> (js_getContentType ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"doctype\"]; })"
+        js_getDoctype :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/doctype MDN Document.doctype documentation>
+getDoctype :: (MonadDOM m, IsDocument self) => self -> m (Maybe DocumentType)
+getDoctype self = liftDOM (((js_getDoctype ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/doctype MDN Document.doctype documentation>
+getDoctypeUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m DocumentType
+getDoctypeUnsafe self = liftDOM ((((js_getDoctype ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/doctype MDN Document.doctype documentation>
+getDoctypeUnchecked :: (MonadDOM m, IsDocument self) => self -> m DocumentType
+getDoctypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDoctype ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"documentElement\"]; })"
+        js_getDocumentElement :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/documentElement MDN Document.documentElement documentation>
+getDocumentElement :: (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
+getDocumentElement self = liftDOM (((js_getDocumentElement ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/documentElement MDN Document.documentElement documentation>
+getDocumentElementUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
+getDocumentElementUnsafe self = liftDOM ((((js_getDocumentElement ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/documentElement MDN Document.documentElement documentation>
+getDocumentElementUnchecked :: (MonadDOM m, IsDocument self) => self -> m Element
+getDocumentElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getDocumentElement ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rootElement\"]; })"
+        js_getRootElement :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/rootElement MDN Document.rootElement documentation>
+getRootElement :: (MonadDOM m, IsDocument self) => self -> m (Maybe SVGSVGElement)
+getRootElement self = liftDOM (((js_getRootElement ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/rootElement MDN Document.rootElement documentation>
+getRootElementUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m SVGSVGElement
+getRootElementUnsafe self = liftDOM ((((js_getRootElement ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/rootElement MDN Document.rootElement documentation>
+getRootElementUnchecked :: (MonadDOM m, IsDocument self) => self -> m SVGSVGElement
+getRootElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getRootElement ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"activeViewTransition\"]; })"
+        js_getActiveViewTransition :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/activeViewTransition MDN Document.activeViewTransition documentation>
+getActiveViewTransition :: (MonadDOM m, IsDocument self) => self -> m (Maybe ViewTransition)
+getActiveViewTransition self = liftDOM (((js_getActiveViewTransition ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/activeViewTransition MDN Document.activeViewTransition documentation>
+getActiveViewTransitionUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m ViewTransition
+getActiveViewTransitionUnsafe self = liftDOM ((((js_getActiveViewTransition ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/activeViewTransition MDN Document.activeViewTransition documentation>
+getActiveViewTransitionUnchecked :: (MonadDOM m, IsDocument self) => self -> m ViewTransition
+getActiveViewTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getActiveViewTransition ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollingElement\"]; })"
+        js_getScrollingElement :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/scrollingElement MDN Document.scrollingElement documentation>
+getScrollingElement :: (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
+getScrollingElement self = liftDOM (((js_getScrollingElement ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/scrollingElement MDN Document.scrollingElement documentation>
+getScrollingElementUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
+getScrollingElementUnsafe self = liftDOM ((((js_getScrollingElement ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/scrollingElement MDN Document.scrollingElement documentation>
+getScrollingElementUnchecked :: (MonadDOM m, IsDocument self) => self -> m Element
+getScrollingElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getScrollingElement ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fullscreenEnabled\"]; })"
+        js_getFullscreenEnabled :: Document -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fullscreenEnabled MDN Document.fullscreenEnabled documentation>
+getFullscreenEnabled :: (MonadDOM m, IsDocument self) => self -> m Bool
+getFullscreenEnabled self = liftDOM ((js_getFullscreenEnabled ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fullscreen\"]; })"
+        js_getFullscreen :: Document -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fullscreen MDN Document.fullscreen documentation>
+getFullscreen :: (MonadDOM m, IsDocument self) => self -> m Bool
+getFullscreen self = liftDOM ((js_getFullscreen ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })"
+        js_getLocation :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/location MDN Document.location documentation>
+getLocation :: (MonadDOM m, IsDocument self) => self -> m (Maybe Location)
+getLocation self = liftDOM (((js_getLocation ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/location MDN Document.location documentation>
+getLocationUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m Location
+getLocationUnsafe self = liftDOM ((((js_getLocation ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/location MDN Document.location documentation>
+getLocationUnchecked :: (MonadDOM m, IsDocument self) => self -> m Location
+getLocationUnchecked self = liftDOM ((pFromJSVal <$> (js_getLocation ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"domain\"] = $2; })"
+        js_setDomain :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/domain MDN Document.domain documentation>
+setDomain :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setDomain self val = liftDOM (void ((js_setDomain ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domain\"]; })"
+        js_getDomain :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/domain MDN Document.domain documentation>
+getDomain :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getDomain self = liftDOM ((fromJSString <$> (js_getDomain ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })"
+        js_getReferrer :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/referrer MDN Document.referrer documentation>
+getReferrer :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getReferrer self = liftDOM ((fromJSString <$> (js_getReferrer ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cookie\"] = $2; })"
+        js_setCookie :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/cookie MDN Document.cookie documentation>
+setCookie :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setCookie self val = liftDOM (void ((js_setCookie ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cookie\"]; })"
+        js_getCookie :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/cookie MDN Document.cookie documentation>
+getCookie :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getCookie self = liftDOM ((fromJSString <$> (js_getCookie ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lastModified\"]; })"
+        js_getLastModified :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/lastModified MDN Document.lastModified documentation>
+getLastModified :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getLastModified self = liftDOM ((fromJSString <$> (js_getLastModified ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/readyState MDN Document.readyState documentation>
+getReadyState :: (MonadDOM m, IsDocument self) => self -> m DocumentReadyState
+getReadyState self = liftDOM (((js_getReadyState ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/title MDN Document.title documentation>
+setTitle :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/title MDN Document.title documentation>
+getTitle :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getTitle self = liftDOM ((fromJSString <$> (js_getTitle ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dir\"] = $2; })"
+        js_setDir :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/dir MDN Document.dir documentation>
+setDir :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setDir self val = liftDOM (void ((js_setDir ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })"
+        js_getDir :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/dir MDN Document.dir documentation>
+getDir :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getDir self = liftDOM ((fromJSString <$> (js_getDir ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"body\"] = $2; })"
+        js_setBody :: Document -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/body MDN Document.body documentation>
+setBody :: (MonadDOM m, IsDocument self, IsHTMLElement val) => self -> Maybe val -> m ()
+setBody self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBody ((Types.toDocument self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })"
+        js_getBody :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/body MDN Document.body documentation>
+getBody :: (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLElement)
+getBody self = liftDOM (((js_getBody ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/body MDN Document.body documentation>
+getBodyUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m HTMLElement
+getBodyUnsafe self = liftDOM ((((js_getBody ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/body MDN Document.body documentation>
+getBodyUnchecked :: (MonadDOM m, IsDocument self) => self -> m HTMLElement
+getBodyUnchecked self = liftDOM ((pFromJSVal <$> (js_getBody ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"head\"]; })"
+        js_getHead :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/head MDN Document.head documentation>
+getHead :: (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLHeadElement)
+getHead self = liftDOM (((js_getHead ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/head MDN Document.head documentation>
+getHeadUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m HTMLHeadElement
+getHeadUnsafe self = liftDOM ((((js_getHead ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/head MDN Document.head documentation>
+getHeadUnchecked :: (MonadDOM m, IsDocument self) => self -> m HTMLHeadElement
+getHeadUnchecked self = liftDOM ((pFromJSVal <$> (js_getHead ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"images\"]; })"
+        js_getImages :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/images MDN Document.images documentation>
+getImages :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getImages self = liftDOM ((js_getImages ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"embeds\"]; })"
+        js_getEmbeds :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/embeds MDN Document.embeds documentation>
+getEmbeds :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getEmbeds self = liftDOM ((js_getEmbeds ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"plugins\"]; })"
+        js_getPlugins :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/plugins MDN Document.plugins documentation>
+getPlugins :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getPlugins self = liftDOM ((js_getPlugins ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"links\"]; })"
+        js_getLinks :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/links MDN Document.links documentation>
+getLinks :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getLinks self = liftDOM ((js_getLinks ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"forms\"]; })"
+        js_getForms :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/forms MDN Document.forms documentation>
+getForms :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getForms self = liftDOM ((js_getForms ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scripts\"]; })"
+        js_getScripts :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/scripts MDN Document.scripts documentation>
+getScripts :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getScripts self = liftDOM ((js_getScripts ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentScript\"]; })"
+        js_getCurrentScript :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/currentScript MDN Document.currentScript documentation>
+getCurrentScript :: (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLOrSVGScriptElement)
+getCurrentScript self = liftDOM (((js_getCurrentScript ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/currentScript MDN Document.currentScript documentation>
+getCurrentScriptUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m HTMLOrSVGScriptElement
+getCurrentScriptUnsafe self = liftDOM ((((js_getCurrentScript ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/currentScript MDN Document.currentScript documentation>
+getCurrentScriptUnchecked :: (MonadDOM m, IsDocument self) => self -> m HTMLOrSVGScriptElement
+getCurrentScriptUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentScript ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultView\"]; })"
+        js_getDefaultView :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/defaultView MDN Document.defaultView documentation>
+getDefaultView :: (MonadDOM m, IsDocument self) => self -> m (Maybe Window)
+getDefaultView self = liftDOM (((js_getDefaultView ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/defaultView MDN Document.defaultView documentation>
+getDefaultViewUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m Window
+getDefaultViewUnsafe self = liftDOM ((((js_getDefaultView ((Types.toDocument self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/defaultView MDN Document.defaultView documentation>
+getDefaultViewUnchecked :: (MonadDOM m, IsDocument self) => self -> m Window
+getDefaultViewUnchecked self = liftDOM ((pFromJSVal <$> (js_getDefaultView ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"designMode\"] = $2; })"
+        js_setDesignMode :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/designMode MDN Document.designMode documentation>
+setDesignMode :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setDesignMode self val = liftDOM (void ((js_setDesignMode ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"designMode\"]; })"
+        js_getDesignMode :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/designMode MDN Document.designMode documentation>
+getDesignMode :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getDesignMode self = liftDOM ((fromJSString <$> (js_getDesignMode ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hidden\"]; })"
+        js_getHidden :: Document -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hidden MDN Document.hidden documentation>
+getHidden :: (MonadDOM m, IsDocument self) => self -> m Bool
+getHidden self = liftDOM ((js_getHidden ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visibilityState\"]; })"
+        js_getVisibilityState :: Document -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/visibilityState MDN Document.visibilityState documentation>
+getVisibilityState :: (MonadDOM m, IsDocument self) => self -> m DocumentVisibilityState
+getVisibilityState self = liftDOM (((js_getVisibilityState ((Types.toDocument self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fgColor\"] = $2; })"
+        js_setFgColor :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fgColor MDN Document.fgColor documentation>
+setFgColor :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setFgColor self val = liftDOM (void ((js_setFgColor ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fgColor\"]; })"
+        js_getFgColor :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fgColor MDN Document.fgColor documentation>
+getFgColor :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getFgColor self = liftDOM ((fromJSString <$> (js_getFgColor ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"linkColor\"] = $2; })"
+        js_setLinkColor :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/linkColor MDN Document.linkColor documentation>
+setLinkColor :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setLinkColor self val = liftDOM (void ((js_setLinkColor ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"linkColor\"]; })"
+        js_getLinkColor :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/linkColor MDN Document.linkColor documentation>
+getLinkColor :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getLinkColor self = liftDOM ((fromJSString <$> (js_getLinkColor ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"vlinkColor\"] = $2; })"
+        js_setVlinkColor :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/vlinkColor MDN Document.vlinkColor documentation>
+setVlinkColor :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setVlinkColor self val = liftDOM (void ((js_setVlinkColor ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"vlinkColor\"]; })"
+        js_getVlinkColor :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/vlinkColor MDN Document.vlinkColor documentation>
+getVlinkColor :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getVlinkColor self = liftDOM ((fromJSString <$> (js_getVlinkColor ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alinkColor\"] = $2; })"
+        js_setAlinkColor :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/alinkColor MDN Document.alinkColor documentation>
+setAlinkColor :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setAlinkColor self val = liftDOM (void ((js_setAlinkColor ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alinkColor\"]; })"
+        js_getAlinkColor :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/alinkColor MDN Document.alinkColor documentation>
+getAlinkColor :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getAlinkColor self = liftDOM ((fromJSString <$> (js_getAlinkColor ((Types.toDocument self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: Document -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/bgColor MDN Document.bgColor documentation>
+setBgColor :: (MonadDOM m, IsDocument self, ToJSString val) => self -> val -> m ()
+setBgColor self val = liftDOM (void ((js_setBgColor ((Types.toDocument self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })"
+        js_getBgColor :: Document -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Document/bgColor MDN Document.bgColor documentation>
+getBgColor :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getBgColor self = liftDOM ((fromJSString <$> (js_getBgColor ((Types.toDocument self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"anchors\"]; })"
+        js_getAnchors :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/anchors MDN Document.anchors documentation>
+getAnchors :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getAnchors self = liftDOM ((js_getAnchors ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"applets\"]; })"
+        js_getApplets :: Document -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/applets MDN Document.applets documentation>
+getApplets :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getApplets self = liftDOM ((js_getApplets ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"all\"]; })"
+        js_getAll :: Document -> IO HTMLAllCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/all MDN Document.all documentation>
+getAll :: (MonadDOM m, IsDocument self) => self -> m HTMLAllCollection
+getAll self = liftDOM ((js_getAll ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pictureInPictureEnabled\"]; })"
+        js_getPictureInPictureEnabled :: Document -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureEnabled MDN Document.pictureInPictureEnabled documentation>
+getPictureInPictureEnabled :: (MonadDOM m, IsDocument self) => self -> m Bool
+getPictureInPictureEnabled self = liftDOM ((js_getPictureInPictureEnabled ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fragmentDirective\"]; })"
+        js_getFragmentDirective :: Document -> IO FragmentDirective
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fragmentDirective MDN Document.fragmentDirective documentation>
+getFragmentDirective :: (MonadDOM m, IsDocument self) => self -> m FragmentDirective
+getFragmentDirective self = liftDOM ((js_getFragmentDirective ((Types.toDocument self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeline\"]; })"
+        js_getTimeline :: Document -> IO DocumentTimeline
+-- | <https://developer.mozilla.org/docs/Web/API/Document/timeline MDN Document.timeline documentation>
+getTimeline :: (MonadDOM m, IsDocument self) => self -> m DocumentTimeline
+getTimeline self = liftDOM ((js_getTimeline ((Types.toDocument self))))
+
+-- | <https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenchange fullscreenchange event>
+fullscreenchange :: (IsDocument self, IsEventTarget self) => EventName self Event
+fullscreenchange = unsafeEventName (toJSString "fullscreenchange")
+
+-- | <https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenerror fullscreenerror event>
+fullscreenerror :: (IsDocument self, IsEventTarget self) => EventName self Event
+fullscreenerror = unsafeEventName (toJSString "fullscreenerror")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onreadystatechange readystatechange event>
+readyStateChange :: (IsDocument self, IsEventTarget self) => EventName self Event
+readyStateChange = unsafeEventNameAsync (toJSString "readystatechange")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onvisibilitychange visibilitychange event>
+visibilitychange :: (IsDocument self, IsEventTarget self) => EventName self Event
+visibilitychange = unsafeEventName (toJSString "visibilitychange")
+
+-- | <https://w3c.github.io/pointerlock/#dom-document-onpointerlockchange pointerlockchange event>
+pointerlockchange :: (IsDocument self, IsEventTarget self) => EventName self Event
+pointerlockchange = unsafeEventName (toJSString "pointerlockchange")
+
+-- | <https://w3c.github.io/pointerlock/#dom-document-onpointerlockerror pointerlockerror event>
+pointerlockerror :: (IsDocument self, IsEventTarget self) => EventName self Event
+pointerlockerror = unsafeEventName (toJSString "pointerlockerror")
+
+autofill :: (IsDocument self, IsEventTarget self) => EventName self AutofillEvent
+autofill = unsafeEventName (toJSString "autofill")
+
+-- | <https://html.spec.whatwg.org/multipage/indices.html#event-domcontentloaded DOMContentLoaded event>
+domContentLoaded :: (IsDocument self, IsEventTarget self) => EventName self Event
+domContentLoaded = unsafeEventName (toJSString "DOMContentLoaded")
+
+-- | <https://html.spec.whatwg.org/multipage/indices.html#event-unload unload event>
+unload :: (IsDocument self, IsEventTarget self) => EventName self Event
+unload = unsafeEventName (toJSString "unload")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs
+++ /dev/null
@@ -1,72 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.DocumentAndElementEventHandlers
-       (copy, cut, paste, beforeCopy, beforeCut, beforeinput, beforePaste,
-        DocumentAndElementEventHandlers(..),
-        gTypeDocumentAndElementEventHandlers,
-        IsDocumentAndElementEventHandlers,
-        toDocumentAndElementEventHandlers)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.oncopy Mozilla DocumentAndElementEventHandlers.oncopy documentation> 
-copy ::
-     (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
-       EventName self ClipboardEvent
-copy = unsafeEventName (toJSString "copy")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.oncut Mozilla DocumentAndElementEventHandlers.oncut documentation> 
-cut ::
-    (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
-      EventName self ClipboardEvent
-cut = unsafeEventName (toJSString "cut")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onpaste Mozilla DocumentAndElementEventHandlers.onpaste documentation> 
-paste ::
-      (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
-        EventName self ClipboardEvent
-paste = unsafeEventName (toJSString "paste")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforecopy Mozilla DocumentAndElementEventHandlers.onbeforecopy documentation> 
-beforeCopy ::
-           (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
-             EventName self ClipboardEvent
-beforeCopy = unsafeEventName (toJSString "beforecopy")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforecut Mozilla DocumentAndElementEventHandlers.onbeforecut documentation> 
-beforeCut ::
-          (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
-            EventName self ClipboardEvent
-beforeCut = unsafeEventName (toJSString "beforecut")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforeinput Mozilla DocumentAndElementEventHandlers.onbeforeinput documentation> 
-beforeinput ::
-            (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
-              EventName self onbeforeinput
-beforeinput = unsafeEventName (toJSString "beforeinput")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforepaste Mozilla DocumentAndElementEventHandlers.onbeforepaste documentation> 
-beforePaste ::
-            (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
-              EventName self ClipboardEvent
-beforePaste = unsafeEventName (toJSString "beforepaste")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
@@ -1,35 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DocumentFragment
-       (js_newDocumentFragment, newDocumentFragment, DocumentFragment(..),
-        gTypeDocumentFragment, IsDocumentFragment, toDocumentFragment)
+       (js_newDocumentFragment, newDocumentFragment, DocumentFragment(..), gTypeDocumentFragment, IsDocumentFragment, toDocumentFragment)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"DocumentFragment\"](); })" js_newDocumentFragment ::
-        IO DocumentFragment
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation> 
-newDocumentFragment :: (MonadIO m) => m DocumentFragment
-newDocumentFragment = liftIO (js_newDocumentFragment)
+foreign import javascript safe "(() => { return new globalThis[\"DocumentFragment\"](); })"
+        js_newDocumentFragment :: IO DocumentFragment
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentFragment/DocumentFragment MDN DocumentFragment. documentation>
+newDocumentFragment :: (MonadDOM m) => m DocumentFragment
+newDocumentFragment = liftDOM ((js_newDocumentFragment))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
@@ -1,135 +1,115 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot
-       (js_elementFromPoint, elementFromPoint, elementFromPoint_,
-        elementFromPointUnsafe, elementFromPointUnchecked,
-        js_getActiveElement, getActiveElement, getActiveElementUnsafe,
-        getActiveElementUnchecked, js_getPointerLockElement,
-        getPointerLockElement, getPointerLockElementUnsafe,
-        getPointerLockElementUnchecked, DocumentOrShadowRoot(..),
-        gTypeDocumentOrShadowRoot, IsDocumentOrShadowRoot,
-        toDocumentOrShadowRoot)
+       (js_getAnimations, js_getCustomElementRegistry, js_getStyleSheets, js_setAdoptedStyleSheets, js_getAdoptedStyleSheets, js_getFullscreenElement, js_getActiveElement, js_getPictureInPictureElement, js_getPointerLockElement, getAnimations, getAnimations_, getCustomElementRegistry, getCustomElementRegistryUnsafe, getCustomElementRegistryUnchecked, getStyleSheets, setAdoptedStyleSheets, getAdoptedStyleSheets, getFullscreenElement, getFullscreenElementUnsafe, getFullscreenElementUnchecked, getActiveElement, getActiveElementUnsafe, getActiveElementUnchecked, getPictureInPictureElement, getPictureInPictureElementUnsafe, getPictureInPictureElementUnchecked, getPointerLockElement, getPointerLockElementUnsafe, getPointerLockElementUnchecked, DocumentOrShadowRoot(..), gTypeDocumentOrShadowRoot, IsDocumentOrShadowRoot, toDocumentOrShadowRoot)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"elementFromPoint\"]($2, $3); })"
-        js_elementFromPoint ::
-        DocumentOrShadowRoot -> Double -> Double -> IO (Nullable Element)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPoint ::
-                 (MonadIO m, IsDocumentOrShadowRoot self) =>
-                   self -> Double -> Double -> m (Maybe Element)
-elementFromPoint self x y
-  = liftIO
-      (nullableToMaybe <$>
-         (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
+foreign import javascript safe "(($1) => { return $1[\"getAnimations\"](); })"
+        js_getAnimations :: DocumentOrShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getAnimations MDN DocumentOrShadowRoot.getAnimations documentation>
+getAnimations :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m [Animation]
+getAnimations self = liftDOM (((js_getAnimations ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPoint_ ::
-                  (MonadIO m, IsDocumentOrShadowRoot self) =>
-                    self -> Double -> Double -> m ()
-elementFromPoint_ self x y
-  = liftIO
-      (void (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getAnimations MDN DocumentOrShadowRoot.getAnimations documentation>
+getAnimations_ :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m ()
+getAnimations_ self = liftDOM (void ((js_getAnimations ((Types.toDocumentOrShadowRoot self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPointUnsafe ::
-                       (MonadIO m, IsDocumentOrShadowRoot self, HasCallStack) =>
-                         self -> Double -> Double -> m Element
-elementFromPointUnsafe self x y
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
-         >>= maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"customElementRegistry\"]; })"
+        js_getCustomElementRegistry :: DocumentOrShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/customElementRegistry MDN DocumentOrShadowRoot.customElementRegistry documentation>
+getCustomElementRegistry :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((js_getCustomElementRegistry ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPointUnchecked ::
-                          (MonadIO m, IsDocumentOrShadowRoot self) =>
-                            self -> Double -> Double -> m Element
-elementFromPointUnchecked self x y
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/Document/customElementRegistry MDN DocumentOrShadowRoot.customElementRegistry documentation>
+getCustomElementRegistryUnsafe :: (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) => self -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((js_getCustomElementRegistry ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/customElementRegistry MDN DocumentOrShadowRoot.customElementRegistry documentation>
+getCustomElementRegistryUnchecked :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m CustomElementRegistry
+getCustomElementRegistryUnchecked self = liftDOM ((pFromJSVal <$> (js_getCustomElementRegistry ((Types.toDocumentOrShadowRoot self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"styleSheets\"]; })"
+        js_getStyleSheets :: DocumentOrShadowRoot -> IO StyleSheetList
+-- | <https://developer.mozilla.org/docs/Web/API/Document/styleSheets MDN DocumentOrShadowRoot.styleSheets documentation>
+getStyleSheets :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m StyleSheetList
+getStyleSheets self = liftDOM ((js_getStyleSheets ((Types.toDocumentOrShadowRoot self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"adoptedStyleSheets\"] = $2; })"
+        js_setAdoptedStyleSheets :: DocumentOrShadowRoot -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/adoptedStyleSheets MDN DocumentOrShadowRoot.adoptedStyleSheets documentation>
+setAdoptedStyleSheets :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> [CSSStyleSheet] -> m ()
+setAdoptedStyleSheets self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAdoptedStyleSheets ((Types.toDocumentOrShadowRoot self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"adoptedStyleSheets\"]; })"
+        js_getAdoptedStyleSheets :: DocumentOrShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/adoptedStyleSheets MDN DocumentOrShadowRoot.adoptedStyleSheets documentation>
+getAdoptedStyleSheets :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m [CSSStyleSheet]
+getAdoptedStyleSheets self = liftDOM (((js_getAdoptedStyleSheets ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fullscreenElement\"]; })"
+        js_getFullscreenElement :: DocumentOrShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fullscreenElement MDN DocumentOrShadowRoot.fullscreenElement documentation>
+getFullscreenElement :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m (Maybe Element)
+getFullscreenElement self = liftDOM (((js_getFullscreenElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fullscreenElement MDN DocumentOrShadowRoot.fullscreenElement documentation>
+getFullscreenElementUnsafe :: (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) => self -> m Element
+getFullscreenElementUnsafe self = liftDOM ((((js_getFullscreenElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fullscreenElement MDN DocumentOrShadowRoot.fullscreenElement documentation>
+getFullscreenElementUnchecked :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
+getFullscreenElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getFullscreenElement ((Types.toDocumentOrShadowRoot self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"activeElement\"]; })"
-        js_getActiveElement ::
-        DocumentOrShadowRoot -> IO (Nullable Element)
+        js_getActiveElement :: DocumentOrShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/activeElement MDN DocumentOrShadowRoot.activeElement documentation>
+getActiveElement :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m (Maybe Element)
+getActiveElement self = liftDOM (((js_getActiveElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
-getActiveElement ::
-                 (MonadIO m, IsDocumentOrShadowRoot self) =>
-                   self -> m (Maybe Element)
-getActiveElement self
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getActiveElement (toDocumentOrShadowRoot self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/activeElement MDN DocumentOrShadowRoot.activeElement documentation>
+getActiveElementUnsafe :: (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) => self -> m Element
+getActiveElementUnsafe self = liftDOM ((((js_getActiveElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
-getActiveElementUnsafe ::
-                       (MonadIO m, IsDocumentOrShadowRoot self, HasCallStack) =>
-                         self -> m Element
-getActiveElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getActiveElement (toDocumentOrShadowRoot self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/activeElement MDN DocumentOrShadowRoot.activeElement documentation>
+getActiveElementUnchecked :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
+getActiveElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getActiveElement ((Types.toDocumentOrShadowRoot self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
-getActiveElementUnchecked ::
-                          (MonadIO m, IsDocumentOrShadowRoot self) => self -> m Element
-getActiveElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getActiveElement (toDocumentOrShadowRoot self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pointerLockElement\"]; })"
-        js_getPointerLockElement ::
-        DocumentOrShadowRoot -> IO (Nullable Element)
+foreign import javascript unsafe "(($1) => { return $1[\"pictureInPictureElement\"]; })"
+        js_getPictureInPictureElement :: DocumentOrShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureElement MDN DocumentOrShadowRoot.pictureInPictureElement documentation>
+getPictureInPictureElement :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m (Maybe Element)
+getPictureInPictureElement self = liftDOM (((js_getPictureInPictureElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
-getPointerLockElement ::
-                      (MonadIO m, IsDocumentOrShadowRoot self) =>
-                        self -> m (Maybe Element)
-getPointerLockElement self
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getPointerLockElement (toDocumentOrShadowRoot self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureElement MDN DocumentOrShadowRoot.pictureInPictureElement documentation>
+getPictureInPictureElementUnsafe :: (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) => self -> m Element
+getPictureInPictureElementUnsafe self = liftDOM ((((js_getPictureInPictureElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
-getPointerLockElementUnsafe ::
-                            (MonadIO m, IsDocumentOrShadowRoot self, HasCallStack) =>
-                              self -> m Element
-getPointerLockElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getPointerLockElement (toDocumentOrShadowRoot self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureElement MDN DocumentOrShadowRoot.pictureInPictureElement documentation>
+getPictureInPictureElementUnchecked :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
+getPictureInPictureElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPictureInPictureElement ((Types.toDocumentOrShadowRoot self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
-getPointerLockElementUnchecked ::
-                               (MonadIO m, IsDocumentOrShadowRoot self) => self -> m Element
-getPointerLockElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getPointerLockElement (toDocumentOrShadowRoot self)))
+foreign import javascript unsafe "(($1) => { return $1[\"pointerLockElement\"]; })"
+        js_getPointerLockElement :: DocumentOrShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pointerLockElement MDN DocumentOrShadowRoot.pointerLockElement documentation>
+getPointerLockElement :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m (Maybe Element)
+getPointerLockElement self = liftDOM (((js_getPointerLockElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pointerLockElement MDN DocumentOrShadowRoot.pointerLockElement documentation>
+getPointerLockElementUnsafe :: (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) => self -> m Element
+getPointerLockElementUnsafe self = liftDOM ((((js_getPointerLockElement ((Types.toDocumentOrShadowRoot self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pointerLockElement MDN DocumentOrShadowRoot.pointerLockElement documentation>
+getPointerLockElementUnchecked :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
+getPointerLockElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPointerLockElement ((Types.toDocumentOrShadowRoot self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPicture.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPicture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPicture.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DocumentPictureInPicture
+       (js_requestWindow, js_getWindow, requestWindow, requestWindow_, getWindow, enter, DocumentPictureInPicture(..), gTypeDocumentPictureInPicture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"requestWindow\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestWindow :: DocumentPictureInPicture -> JSVal -> IO (JSVal, Window)
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentPictureInPicture/requestWindow MDN DocumentPictureInPicture.requestWindow documentation>
+requestWindow :: (MonadDOM m) => DocumentPictureInPicture -> Maybe DocumentPictureInPictureOptions -> m Window
+requestWindow self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestWindow (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentPictureInPicture/requestWindow MDN DocumentPictureInPicture.requestWindow documentation>
+requestWindow_ :: (MonadDOM m) => DocumentPictureInPicture -> Maybe DocumentPictureInPictureOptions -> m ()
+requestWindow_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestWindow (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"window\"]; })"
+        js_getWindow :: DocumentPictureInPicture -> IO Window
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentPictureInPicture/window MDN DocumentPictureInPicture.window documentation>
+getWindow :: (MonadDOM m) => DocumentPictureInPicture -> m Window
+getWindow self = liftDOM ((js_getWindow (self)))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpicture-onenter enter event>
+enter :: EventName DocumentPictureInPicture DocumentPictureInPictureEvent
+enter = unsafeEventName (toJSString "enter")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureEvent
+       (js_newDocumentPictureInPictureEvent, js_getWindow, newDocumentPictureInPictureEvent, getWindow, DocumentPictureInPictureEvent(..), gTypeDocumentPictureInPictureEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"DocumentPictureInPictureEvent\"]($1, $2); })"
+        js_newDocumentPictureInPictureEvent :: JSString -> DocumentPictureInPictureEventInit -> IO DocumentPictureInPictureEvent
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentPictureInPictureEvent/DocumentPictureInPictureEvent MDN DocumentPictureInPictureEvent. documentation>
+newDocumentPictureInPictureEvent :: (MonadDOM m, ToJSString type') => type' -> DocumentPictureInPictureEventInit -> m DocumentPictureInPictureEvent
+newDocumentPictureInPictureEvent type' eventInitDict = liftDOM ((js_newDocumentPictureInPictureEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"window\"]; })"
+        js_getWindow :: DocumentPictureInPictureEvent -> IO Window
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentPictureInPictureEvent/window MDN DocumentPictureInPictureEvent.window documentation>
+getWindow :: (MonadDOM m) => DocumentPictureInPictureEvent -> m Window
+getWindow self = liftDOM ((js_getWindow (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureEventInit
+       (js_newDocumentPictureInPictureEventInit, js_setWindow, js_getWindow, newDocumentPictureInPictureEventInit, setWindow, getWindow, DocumentPictureInPictureEventInit(..), gTypeDocumentPictureInPictureEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"window\": $1}); })"
+        js_newDocumentPictureInPictureEventInit :: Window -> IO DocumentPictureInPictureEventInit
+-- | <https://wicg.github.io/document-picture-in-picture/#dictdef-documentpictureinpictureeventinit DocumentPictureInPictureEventInit specification>
+newDocumentPictureInPictureEventInit :: (MonadDOM m) => Window -> m DocumentPictureInPictureEventInit
+newDocumentPictureInPictureEventInit window = liftDOM ((js_newDocumentPictureInPictureEventInit (window)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"window\"] = $2; })"
+        js_setWindow :: DocumentPictureInPictureEventInit -> Window -> IO ()
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureeventinit-window DocumentPictureInPictureEventInit.window specification>
+setWindow :: (MonadDOM m) => DocumentPictureInPictureEventInit -> Window -> m ()
+setWindow self val = liftDOM (void ((js_setWindow (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"window\"]; })"
+        js_getWindow :: DocumentPictureInPictureEventInit -> IO Window
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureeventinit-window DocumentPictureInPictureEventInit.window specification>
+getWindow :: (MonadDOM m) => DocumentPictureInPictureEventInit -> m Window
+getWindow self = liftDOM ((js_getWindow (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentPictureInPictureOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DocumentPictureInPictureOptions
+       (js_newDocumentPictureInPictureOptions, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setDisallowReturnToOpener, js_getDisallowReturnToOpener, js_setPreferInitialWindowPlacement, js_getPreferInitialWindowPlacement, newDocumentPictureInPictureOptions, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setDisallowReturnToOpener, getDisallowReturnToOpener, getDisallowReturnToOpenerUnsafe, getDisallowReturnToOpenerUnchecked, setPreferInitialWindowPlacement, getPreferInitialWindowPlacement, getPreferInitialWindowPlacementUnsafe, getPreferInitialWindowPlacementUnchecked, DocumentPictureInPictureOptions(..), gTypeDocumentPictureInPictureOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDocumentPictureInPictureOptions :: IO DocumentPictureInPictureOptions
+-- | <https://wicg.github.io/document-picture-in-picture/#dictdef-documentpictureinpictureoptions DocumentPictureInPictureOptions specification>
+newDocumentPictureInPictureOptions :: (MonadDOM m) => m DocumentPictureInPictureOptions
+newDocumentPictureInPictureOptions = liftDOM ((js_newDocumentPictureInPictureOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: DocumentPictureInPictureOptions -> JSVal -> IO ()
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-width DocumentPictureInPictureOptions.width specification>
+setWidth :: (MonadDOM m) => DocumentPictureInPictureOptions -> Word53 -> m ()
+setWidth self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setWidth (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: DocumentPictureInPictureOptions -> IO JSVal
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-width DocumentPictureInPictureOptions.width specification>
+getWidth :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Word53)
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-width DocumentPictureInPictureOptions.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => DocumentPictureInPictureOptions -> m Word53
+getWidthUnsafe self = liftDOM ((((js_getWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-width DocumentPictureInPictureOptions.width specification>
+getWidthUnchecked :: (MonadDOM m) => DocumentPictureInPictureOptions -> m Word53
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: DocumentPictureInPictureOptions -> JSVal -> IO ()
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-height DocumentPictureInPictureOptions.height specification>
+setHeight :: (MonadDOM m) => DocumentPictureInPictureOptions -> Word53 -> m ()
+setHeight self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHeight (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: DocumentPictureInPictureOptions -> IO JSVal
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-height DocumentPictureInPictureOptions.height specification>
+getHeight :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Word53)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-height DocumentPictureInPictureOptions.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => DocumentPictureInPictureOptions -> m Word53
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-height DocumentPictureInPictureOptions.height specification>
+getHeightUnchecked :: (MonadDOM m) => DocumentPictureInPictureOptions -> m Word53
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disallowReturnToOpener\"] = $2; })"
+        js_setDisallowReturnToOpener :: DocumentPictureInPictureOptions -> Bool -> IO ()
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-disallowreturntoopener DocumentPictureInPictureOptions.disallowReturnToOpener specification>
+setDisallowReturnToOpener :: (MonadDOM m) => DocumentPictureInPictureOptions -> Bool -> m ()
+setDisallowReturnToOpener self val = liftDOM (void ((js_setDisallowReturnToOpener (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disallowReturnToOpener\"]; })"
+        js_getDisallowReturnToOpener :: DocumentPictureInPictureOptions -> IO JSVal
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-disallowreturntoopener DocumentPictureInPictureOptions.disallowReturnToOpener specification>
+getDisallowReturnToOpener :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Bool)
+getDisallowReturnToOpener self = liftDOM (((js_getDisallowReturnToOpener (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-disallowreturntoopener DocumentPictureInPictureOptions.disallowReturnToOpener specification>
+getDisallowReturnToOpenerUnsafe :: (MonadDOM m, HasCallStack) => DocumentPictureInPictureOptions -> m Bool
+getDisallowReturnToOpenerUnsafe self = liftDOM ((((js_getDisallowReturnToOpener (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-disallowreturntoopener DocumentPictureInPictureOptions.disallowReturnToOpener specification>
+getDisallowReturnToOpenerUnchecked :: (MonadDOM m) => DocumentPictureInPictureOptions -> m Bool
+getDisallowReturnToOpenerUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisallowReturnToOpener (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preferInitialWindowPlacement\"] = $2; })"
+        js_setPreferInitialWindowPlacement :: DocumentPictureInPictureOptions -> Bool -> IO ()
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-preferinitialwindowplacement DocumentPictureInPictureOptions.preferInitialWindowPlacement specification>
+setPreferInitialWindowPlacement :: (MonadDOM m) => DocumentPictureInPictureOptions -> Bool -> m ()
+setPreferInitialWindowPlacement self val = liftDOM (void ((js_setPreferInitialWindowPlacement (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preferInitialWindowPlacement\"]; })"
+        js_getPreferInitialWindowPlacement :: DocumentPictureInPictureOptions -> IO JSVal
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-preferinitialwindowplacement DocumentPictureInPictureOptions.preferInitialWindowPlacement specification>
+getPreferInitialWindowPlacement :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Bool)
+getPreferInitialWindowPlacement self = liftDOM (((js_getPreferInitialWindowPlacement (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-preferinitialwindowplacement DocumentPictureInPictureOptions.preferInitialWindowPlacement specification>
+getPreferInitialWindowPlacementUnsafe :: (MonadDOM m, HasCallStack) => DocumentPictureInPictureOptions -> m Bool
+getPreferInitialWindowPlacementUnsafe self = liftDOM ((((js_getPreferInitialWindowPlacement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-preferinitialwindowplacement DocumentPictureInPictureOptions.preferInitialWindowPlacement specification>
+getPreferInitialWindowPlacementUnchecked :: (MonadDOM m) => DocumentPictureInPictureOptions -> m Bool
+getPreferInitialWindowPlacementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreferInitialWindowPlacement (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
@@ -1,36 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DocumentTimeline
-       (js_newDocumentTimeline, newDocumentTimeline, DocumentTimeline(..),
-        gTypeDocumentTimeline)
+       (js_newDocumentTimeline, newDocumentTimeline, DocumentTimeline(..), gTypeDocumentTimeline)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"DocumentTimeline\"]($1); })" js_newDocumentTimeline ::
-        Double -> IO DocumentTimeline
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentTimeline Mozilla DocumentTimeline documentation> 
-newDocumentTimeline :: (MonadIO m) => Double -> m DocumentTimeline
-newDocumentTimeline originTime
-  = liftIO (js_newDocumentTimeline originTime)
+foreign import javascript safe "(($1) => { return new globalThis[\"DocumentTimeline\"]($1); })"
+        js_newDocumentTimeline :: JSVal -> IO DocumentTimeline
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentTimeline/DocumentTimeline MDN DocumentTimeline. documentation>
+newDocumentTimeline :: (MonadDOM m) => Maybe DocumentTimelineOptions -> m DocumentTimeline
+newDocumentTimeline options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a1' -> js_newDocumentTimeline a1'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentTimelineOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimelineOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimelineOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DocumentTimelineOptions
+       (js_newDocumentTimelineOptions, js_setOriginTime, js_getOriginTime, newDocumentTimelineOptions, setOriginTime, getOriginTime, getOriginTimeUnsafe, getOriginTimeUnchecked, DocumentTimelineOptions(..), gTypeDocumentTimelineOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDocumentTimelineOptions :: IO DocumentTimelineOptions
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-documenttimelineoptions DocumentTimelineOptions specification>
+newDocumentTimelineOptions :: (MonadDOM m) => m DocumentTimelineOptions
+newDocumentTimelineOptions = liftDOM ((js_newDocumentTimelineOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"originTime\"] = $2; })"
+        js_setOriginTime :: DocumentTimelineOptions -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-documenttimelineoptions-origintime DocumentTimelineOptions.originTime specification>
+setOriginTime :: (MonadDOM m) => DocumentTimelineOptions -> Double -> m ()
+setOriginTime self val = liftDOM (void ((js_setOriginTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"originTime\"]; })"
+        js_getOriginTime :: DocumentTimelineOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-documenttimelineoptions-origintime DocumentTimelineOptions.originTime specification>
+getOriginTime :: (MonadDOM m) => DocumentTimelineOptions -> m (Maybe Double)
+getOriginTime self = liftDOM (((js_getOriginTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-documenttimelineoptions-origintime DocumentTimelineOptions.originTime specification>
+getOriginTimeUnsafe :: (MonadDOM m, HasCallStack) => DocumentTimelineOptions -> m Double
+getOriginTimeUnsafe self = liftDOM ((((js_getOriginTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-documenttimelineoptions-origintime DocumentTimelineOptions.originTime specification>
+getOriginTimeUnchecked :: (MonadDOM m) => DocumentTimelineOptions -> m Double
+getOriginTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getOriginTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
@@ -1,51 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DocumentType
-       (js_getName, getName, js_getPublicId, getPublicId, js_getSystemId,
-        getSystemId, DocumentType(..), gTypeDocumentType)
+       (js_getName, js_getPublicId, js_getSystemId, getName, getPublicId, getSystemId, DocumentType(..), gTypeDocumentType)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        DocumentType -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.name Mozilla DocumentType.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => DocumentType -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"publicId\"]; })" js_getPublicId
-        :: DocumentType -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: DocumentType -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentType/name MDN DocumentType.name documentation>
+getName :: (MonadDOM m, FromJSString result) => DocumentType -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.publicId Mozilla DocumentType.publicId documentation> 
-getPublicId ::
-            (MonadIO m, FromJSString result) => DocumentType -> m result
-getPublicId self = liftIO (fromJSString <$> (js_getPublicId self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"systemId\"]; })" js_getSystemId
-        :: DocumentType -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"publicId\"]; })"
+        js_getPublicId :: DocumentType -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentType/publicId MDN DocumentType.publicId documentation>
+getPublicId :: (MonadDOM m, FromJSString result) => DocumentType -> m result
+getPublicId self = liftDOM ((fromJSString <$> (js_getPublicId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.systemId Mozilla DocumentType.systemId documentation> 
-getSystemId ::
-            (MonadIO m, FromJSString result) => DocumentType -> m result
-getSystemId self = liftIO (fromJSString <$> (js_getSystemId self))
+foreign import javascript unsafe "(($1) => { return $1[\"systemId\"]; })"
+        js_getSystemId :: DocumentType -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentType/systemId MDN DocumentType.systemId documentation>
+getSystemId :: (MonadDOM m, FromJSString result) => DocumentType -> m result
+getSystemId self = liftDOM ((fromJSString <$> (js_getSystemId (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DoubleRange.hs b/src/GHCJS/DOM/JSFFI/Generated/DoubleRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DoubleRange.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DoubleRange
+       (js_newDoubleRange, js_setMax, js_getMax, js_setMin, js_getMin, newDoubleRange, setMax, getMax, getMaxUnsafe, getMaxUnchecked, setMin, getMin, getMinUnsafe, getMinUnchecked, DoubleRange(..), gTypeDoubleRange, IsDoubleRange, toDoubleRange)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDoubleRange :: IO DoubleRange
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange DoubleRange specification>
+newDoubleRange :: (MonadDOM m) => m DoubleRange
+newDoubleRange = liftDOM ((js_newDoubleRange))
+
+foreign import javascript safe "(($1, $2) => { $1[\"max\"] = $2; })"
+        js_setMax :: DoubleRange -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-max DoubleRange.max specification>
+setMax :: (MonadDOM m, IsDoubleRange self) => self -> Double -> m ()
+setMax self val = liftDOM (void ((js_setMax ((Types.toDoubleRange self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })"
+        js_getMax :: DoubleRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-max DoubleRange.max specification>
+getMax :: (MonadDOM m, IsDoubleRange self) => self -> m (Maybe Double)
+getMax self = liftDOM (((js_getMax ((Types.toDoubleRange self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-max DoubleRange.max specification>
+getMaxUnsafe :: (MonadDOM m, IsDoubleRange self, HasCallStack) => self -> m Double
+getMaxUnsafe self = liftDOM ((((js_getMax ((Types.toDoubleRange self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-max DoubleRange.max specification>
+getMaxUnchecked :: (MonadDOM m, IsDoubleRange self) => self -> m Double
+getMaxUnchecked self = liftDOM ((pFromJSVal <$> (js_getMax ((Types.toDoubleRange self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"min\"] = $2; })"
+        js_setMin :: DoubleRange -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-min DoubleRange.min specification>
+setMin :: (MonadDOM m, IsDoubleRange self) => self -> Double -> m ()
+setMin self val = liftDOM (void ((js_setMin ((Types.toDoubleRange self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })"
+        js_getMin :: DoubleRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-min DoubleRange.min specification>
+getMin :: (MonadDOM m, IsDoubleRange self) => self -> m (Maybe Double)
+getMin self = liftDOM (((js_getMin ((Types.toDoubleRange self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-min DoubleRange.min specification>
+getMinUnsafe :: (MonadDOM m, IsDoubleRange self, HasCallStack) => self -> m Double
+getMinUnsafe self = liftDOM ((((js_getMin ((Types.toDoubleRange self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-min DoubleRange.min specification>
+getMinUnchecked :: (MonadDOM m, IsDoubleRange self) => self -> m Double
+getMinUnchecked self = liftDOM ((pFromJSVal <$> (js_getMin ((Types.toDoubleRange self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DragEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DragEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DragEvent.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DragEvent
+       (js_newDragEvent, js_getDataTransfer, newDragEvent, getDataTransfer, getDataTransferUnsafe, getDataTransferUnchecked, DragEvent(..), gTypeDragEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"DragEvent\"]($1, $2); })"
+        js_newDragEvent :: JSString -> JSVal -> IO DragEvent
+-- | <https://developer.mozilla.org/docs/Web/API/DragEvent/DragEvent MDN DragEvent. documentation>
+newDragEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe DragEventInit -> m DragEvent
+newDragEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newDragEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
+        js_getDataTransfer :: DragEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/DragEvent/dataTransfer MDN DragEvent.dataTransfer documentation>
+getDataTransfer :: (MonadDOM m) => DragEvent -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((js_getDataTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DragEvent/dataTransfer MDN DragEvent.dataTransfer documentation>
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => DragEvent -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((js_getDataTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DragEvent/dataTransfer MDN DragEvent.dataTransfer documentation>
+getDataTransferUnchecked :: (MonadDOM m) => DragEvent -> m DataTransfer
+getDataTransferUnchecked self = liftDOM ((pFromJSVal <$> (js_getDataTransfer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DragEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/DragEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DragEventInit.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DragEventInit
+       (js_newDragEventInit, js_setDataTransfer, js_getDataTransfer, newDragEventInit, setDataTransfer, getDataTransfer, getDataTransferUnsafe, getDataTransferUnchecked, DragEventInit(..), gTypeDragEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDragEventInit :: IO DragEventInit
+-- | <https://html.spec.whatwg.org/multipage/dnd.html#drageventinit DragEventInit specification>
+newDragEventInit :: (MonadDOM m) => m DragEventInit
+newDragEventInit = liftDOM ((js_newDragEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dataTransfer\"] = $2; })"
+        js_setDataTransfer :: DragEventInit -> JSVal -> IO ()
+setDataTransfer :: (MonadDOM m) => DragEventInit -> Maybe DataTransfer -> m ()
+setDataTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDataTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
+        js_getDataTransfer :: DragEventInit -> IO JSVal
+getDataTransfer :: (MonadDOM m) => DragEventInit -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((js_getDataTransfer (self)) >>= fromJSValUnchecked))
+
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => DragEventInit -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((js_getDataTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getDataTransferUnchecked :: (MonadDOM m) => DragEventInit -> m DataTransfer
+getDataTransferUnchecked self = liftDOM ((pFromJSVal <$> (js_getDataTransfer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
@@ -1,73 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
-       (js_getThreshold, getThreshold, js_getKnee, getKnee, js_getRatio,
-        getRatio, js_getReduction, getReduction, js_getAttack, getAttack,
-        js_getRelease, getRelease, DynamicsCompressorNode(..),
-        gTypeDynamicsCompressorNode)
+       (js_newDynamicsCompressorNode, js_getThreshold, js_getKnee, js_getRatio, js_getReduction, js_getAttack, js_getRelease, newDynamicsCompressorNode, getThreshold, getKnee, getRatio, getReduction, getAttack, getRelease, DynamicsCompressorNode(..), gTypeDynamicsCompressorNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"DynamicsCompressorNode\"]($1, $2); })"
+        js_newDynamicsCompressorNode :: BaseAudioContext -> JSVal -> IO DynamicsCompressorNode
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/DynamicsCompressorNode MDN DynamicsCompressorNode. documentation>
+newDynamicsCompressorNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe DynamicsCompressorOptions -> m DynamicsCompressorNode
+newDynamicsCompressorNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newDynamicsCompressorNode (Types.toBaseAudioContext context) a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"threshold\"]; })"
         js_getThreshold :: DynamicsCompressorNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/threshold MDN DynamicsCompressorNode.threshold documentation>
+getThreshold :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
+getThreshold self = liftDOM ((js_getThreshold (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
-getThreshold ::
-             (MonadIO m) => DynamicsCompressorNode -> m AudioParam
-getThreshold self = liftIO (js_getThreshold self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"knee\"]; })" js_getKnee ::
-        DynamicsCompressorNode -> IO AudioParam
+foreign import javascript unsafe "(($1) => { return $1[\"knee\"]; })"
+        js_getKnee :: DynamicsCompressorNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/knee MDN DynamicsCompressorNode.knee documentation>
+getKnee :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
+getKnee self = liftDOM ((js_getKnee (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.knee Mozilla DynamicsCompressorNode.knee documentation> 
-getKnee :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
-getKnee self = liftIO (js_getKnee self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ratio\"]; })" js_getRatio ::
-        DynamicsCompressorNode -> IO AudioParam
+foreign import javascript unsafe "(($1) => { return $1[\"ratio\"]; })"
+        js_getRatio :: DynamicsCompressorNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/ratio MDN DynamicsCompressorNode.ratio documentation>
+getRatio :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
+getRatio self = liftDOM ((js_getRatio (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.ratio Mozilla DynamicsCompressorNode.ratio documentation> 
-getRatio :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
-getRatio self = liftIO (js_getRatio self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"reduction\"]; })"
-        js_getReduction :: DynamicsCompressorNode -> IO AudioParam
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.reduction Mozilla DynamicsCompressorNode.reduction documentation> 
-getReduction ::
-             (MonadIO m) => DynamicsCompressorNode -> m AudioParam
-getReduction self = liftIO (js_getReduction self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"attack\"]; })" js_getAttack ::
-        DynamicsCompressorNode -> IO AudioParam
+        js_getReduction :: DynamicsCompressorNode -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/reduction MDN DynamicsCompressorNode.reduction documentation>
+getReduction :: (MonadDOM m) => DynamicsCompressorNode -> m Float
+getReduction self = liftDOM ((js_getReduction (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.attack Mozilla DynamicsCompressorNode.attack documentation> 
-getAttack :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
-getAttack self = liftIO (js_getAttack self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"release\"]; })" js_getRelease ::
-        DynamicsCompressorNode -> IO AudioParam
+foreign import javascript unsafe "(($1) => { return $1[\"attack\"]; })"
+        js_getAttack :: DynamicsCompressorNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/attack MDN DynamicsCompressorNode.attack documentation>
+getAttack :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
+getAttack self = liftDOM ((js_getAttack (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.release Mozilla DynamicsCompressorNode.release documentation> 
-getRelease :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
-getRelease self = liftIO (js_getRelease self)
+foreign import javascript unsafe "(($1) => { return $1[\"release\"]; })"
+        js_getRelease :: DynamicsCompressorNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/release MDN DynamicsCompressorNode.release documentation>
+getRelease :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
+getRelease self = liftDOM ((js_getRelease (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorOptions.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.DynamicsCompressorOptions
+       (js_newDynamicsCompressorOptions, js_setAttack, js_getAttack, js_setKnee, js_getKnee, js_setRatio, js_getRatio, js_setRelease, js_getRelease, js_setThreshold, js_getThreshold, newDynamicsCompressorOptions, setAttack, getAttack, getAttackUnsafe, getAttackUnchecked, setKnee, getKnee, getKneeUnsafe, getKneeUnchecked, setRatio, getRatio, getRatioUnsafe, getRatioUnchecked, setRelease, getRelease, getReleaseUnsafe, getReleaseUnchecked, setThreshold, getThreshold, getThresholdUnsafe, getThresholdUnchecked, DynamicsCompressorOptions(..), gTypeDynamicsCompressorOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newDynamicsCompressorOptions :: IO DynamicsCompressorOptions
+-- | <https://webaudio.github.io/web-audio-api/#DynamicsCompressorOptions DynamicsCompressorOptions specification>
+newDynamicsCompressorOptions :: (MonadDOM m) => m DynamicsCompressorOptions
+newDynamicsCompressorOptions = liftDOM ((js_newDynamicsCompressorOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attack\"] = $2; })"
+        js_setAttack :: DynamicsCompressorOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-attack DynamicsCompressorOptions.attack specification>
+setAttack :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setAttack self val = liftDOM (void ((js_setAttack (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attack\"]; })"
+        js_getAttack :: DynamicsCompressorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-attack DynamicsCompressorOptions.attack specification>
+getAttack :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getAttack self = liftDOM (((js_getAttack (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-attack DynamicsCompressorOptions.attack specification>
+getAttackUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getAttackUnsafe self = liftDOM ((((js_getAttack (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-attack DynamicsCompressorOptions.attack specification>
+getAttackUnchecked :: (MonadDOM m) => DynamicsCompressorOptions -> m Float
+getAttackUnchecked self = liftDOM ((pFromJSVal <$> (js_getAttack (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"knee\"] = $2; })"
+        js_setKnee :: DynamicsCompressorOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-knee DynamicsCompressorOptions.knee specification>
+setKnee :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setKnee self val = liftDOM (void ((js_setKnee (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"knee\"]; })"
+        js_getKnee :: DynamicsCompressorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-knee DynamicsCompressorOptions.knee specification>
+getKnee :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getKnee self = liftDOM (((js_getKnee (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-knee DynamicsCompressorOptions.knee specification>
+getKneeUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getKneeUnsafe self = liftDOM ((((js_getKnee (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-knee DynamicsCompressorOptions.knee specification>
+getKneeUnchecked :: (MonadDOM m) => DynamicsCompressorOptions -> m Float
+getKneeUnchecked self = liftDOM ((pFromJSVal <$> (js_getKnee (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ratio\"] = $2; })"
+        js_setRatio :: DynamicsCompressorOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-ratio DynamicsCompressorOptions.ratio specification>
+setRatio :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setRatio self val = liftDOM (void ((js_setRatio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ratio\"]; })"
+        js_getRatio :: DynamicsCompressorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-ratio DynamicsCompressorOptions.ratio specification>
+getRatio :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getRatio self = liftDOM (((js_getRatio (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-ratio DynamicsCompressorOptions.ratio specification>
+getRatioUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getRatioUnsafe self = liftDOM ((((js_getRatio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-ratio DynamicsCompressorOptions.ratio specification>
+getRatioUnchecked :: (MonadDOM m) => DynamicsCompressorOptions -> m Float
+getRatioUnchecked self = liftDOM ((pFromJSVal <$> (js_getRatio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"release\"] = $2; })"
+        js_setRelease :: DynamicsCompressorOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-release DynamicsCompressorOptions.release specification>
+setRelease :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setRelease self val = liftDOM (void ((js_setRelease (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"release\"]; })"
+        js_getRelease :: DynamicsCompressorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-release DynamicsCompressorOptions.release specification>
+getRelease :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getRelease self = liftDOM (((js_getRelease (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-release DynamicsCompressorOptions.release specification>
+getReleaseUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getReleaseUnsafe self = liftDOM ((((js_getRelease (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-release DynamicsCompressorOptions.release specification>
+getReleaseUnchecked :: (MonadDOM m) => DynamicsCompressorOptions -> m Float
+getReleaseUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelease (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"threshold\"] = $2; })"
+        js_setThreshold :: DynamicsCompressorOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-threshold DynamicsCompressorOptions.threshold specification>
+setThreshold :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setThreshold self val = liftDOM (void ((js_setThreshold (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"threshold\"]; })"
+        js_getThreshold :: DynamicsCompressorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-threshold DynamicsCompressorOptions.threshold specification>
+getThreshold :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getThreshold self = liftDOM (((js_getThreshold (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-threshold DynamicsCompressorOptions.threshold specification>
+getThresholdUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getThresholdUnsafe self = liftDOM ((((js_getThreshold (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-threshold DynamicsCompressorOptions.threshold specification>
+getThresholdUnchecked :: (MonadDOM m) => DynamicsCompressorOptions -> m Float
+getThresholdUnchecked self = liftDOM ((pFromJSVal <$> (js_getThreshold (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
-       (pattern MIN_EXT, pattern MAX_EXT, EXTBlendMinMax(..),
-        gTypeEXTBlendMinMax)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern MIN_EXT = 32775
-pattern MAX_EXT = 32776
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
-       (pattern TEXTURE_MAX_ANISOTROPY_EXT,
-        pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT,
-        EXTTextureFilterAnisotropic(..), gTypeEXTTextureFilterAnisotropic)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern TEXTURE_MAX_ANISOTROPY_EXT = 34046
-pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_blend_minmax.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_blend_minmax.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_blend_minmax.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_blend_minmax (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_blend_minmax
+       (pattern MIN_EXT, pattern MAX_EXT, EXT_blend_minmax(..), gTypeEXT_blend_minmax)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern MIN_EXT = 0x8007
+
+pattern MAX_EXT = 0x8008
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_clip_control.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_clip_control.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_clip_control.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_clip_control (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_clip_control
+       (js_clipControlEXT, clipControlEXT, pattern LOWER_LEFT_EXT, pattern UPPER_LEFT_EXT, pattern NEGATIVE_ONE_TO_ONE_EXT, pattern ZERO_TO_ONE_EXT, pattern CLIP_ORIGIN_EXT, pattern CLIP_DEPTH_MODE_EXT, EXT_clip_control(..), gTypeEXT_clip_control)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"clipControlEXT\"]($2, $3); })"
+        js_clipControlEXT :: EXT_clip_control -> Word -> Word -> IO ()
+clipControlEXT :: (MonadDOM m) => EXT_clip_control -> Word -> Word -> m ()
+clipControlEXT self origin depth = liftDOM (void ((js_clipControlEXT (self) (origin) (depth))))
+
+pattern LOWER_LEFT_EXT = 0x8CA1
+
+pattern UPPER_LEFT_EXT = 0x8CA2
+
+pattern NEGATIVE_ONE_TO_ONE_EXT = 0x935E
+
+pattern ZERO_TO_ONE_EXT = 0x935F
+
+pattern CLIP_ORIGIN_EXT = 0x935C
+
+pattern CLIP_DEPTH_MODE_EXT = 0x935D
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_color_buffer_float.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_color_buffer_float.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_color_buffer_float.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_color_buffer_float (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_color_buffer_float
+       (EXT_color_buffer_float(..), gTypeEXT_color_buffer_float)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_color_buffer_half_float.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_color_buffer_half_float.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_color_buffer_half_float.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_color_buffer_half_float (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_color_buffer_half_float
+       (pattern RGBA16F_EXT, pattern RGB16F_EXT, pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT, pattern UNSIGNED_NORMALIZED_EXT, EXT_color_buffer_half_float(..), gTypeEXT_color_buffer_half_float)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern RGBA16F_EXT = 0x881A
+
+pattern RGB16F_EXT = 0x881B
+
+pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211
+
+pattern UNSIGNED_NORMALIZED_EXT = 0x8C17
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_float_blend.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_float_blend.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_float_blend.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_float_blend (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_float_blend
+       (EXT_float_blend(..), gTypeEXT_float_blend)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_frag_depth.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_frag_depth.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_frag_depth.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_frag_depth (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_frag_depth
+       (EXT_frag_depth(..), gTypeEXT_frag_depth)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_polygon_offset_clamp.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_polygon_offset_clamp.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_polygon_offset_clamp.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_polygon_offset_clamp (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_polygon_offset_clamp
+       (js_polygonOffsetClampEXT, polygonOffsetClampEXT, pattern POLYGON_OFFSET_CLAMP_EXT, EXT_polygon_offset_clamp(..), gTypeEXT_polygon_offset_clamp)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"polygonOffsetClampEXT\"]($2, $3, $4); })"
+        js_polygonOffsetClampEXT :: EXT_polygon_offset_clamp -> Float -> Float -> Float -> IO ()
+polygonOffsetClampEXT :: (MonadDOM m) => EXT_polygon_offset_clamp -> Float -> Float -> Float -> m ()
+polygonOffsetClampEXT self factor units clamp = liftDOM (void ((js_polygonOffsetClampEXT (self) (factor) (units) (clamp))))
+
+pattern POLYGON_OFFSET_CLAMP_EXT = 0x8E1B
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_sRGB.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_sRGB.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_sRGB.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_sRGB (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_sRGB
+       (pattern SRGB_EXT, pattern SRGB_ALPHA_EXT, pattern SRGB8_ALPHA8_EXT, pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, EXT_sRGB(..), gTypeEXT_sRGB)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern SRGB_EXT = 0x8C40
+
+pattern SRGB_ALPHA_EXT = 0x8C42
+
+pattern SRGB8_ALPHA8_EXT = 0x8C43
+
+pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_shader_texture_lod.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_shader_texture_lod.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_shader_texture_lod.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_shader_texture_lod (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_shader_texture_lod
+       (EXT_shader_texture_lod(..), gTypeEXT_shader_texture_lod)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_compression_bptc.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_compression_bptc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_compression_bptc.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_compression_bptc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_texture_compression_bptc
+       (pattern COMPRESSED_RGBA_BPTC_UNORM_EXT, pattern COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, pattern COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, pattern COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, EXT_texture_compression_bptc(..), gTypeEXT_texture_compression_bptc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPRESSED_RGBA_BPTC_UNORM_EXT = 0x8E8C
+
+pattern COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT = 0x8E8D
+
+pattern COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT = 0x8E8E
+
+pattern COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT = 0x8E8F
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_compression_rgtc.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_compression_rgtc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_compression_rgtc.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_compression_rgtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_texture_compression_rgtc
+       (pattern COMPRESSED_RED_RGTC1_EXT, pattern COMPRESSED_SIGNED_RED_RGTC1_EXT, pattern COMPRESSED_RED_GREEN_RGTC2_EXT, pattern COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, EXT_texture_compression_rgtc(..), gTypeEXT_texture_compression_rgtc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPRESSED_RED_RGTC1_EXT = 0x8DBB
+
+pattern COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC
+
+pattern COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD
+
+pattern COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_filter_anisotropic.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_filter_anisotropic.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_filter_anisotropic.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_filter_anisotropic (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_texture_filter_anisotropic
+       (pattern TEXTURE_MAX_ANISOTROPY_EXT, pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT, EXT_texture_filter_anisotropic(..), gTypeEXT_texture_filter_anisotropic)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE
+
+pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_mirror_clamp_to_edge.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_mirror_clamp_to_edge.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_mirror_clamp_to_edge.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_mirror_clamp_to_edge (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_texture_mirror_clamp_to_edge
+       (pattern MIRROR_CLAMP_TO_EDGE_EXT, EXT_texture_mirror_clamp_to_edge(..), gTypeEXT_texture_mirror_clamp_to_edge)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern MIRROR_CLAMP_TO_EDGE_EXT = 0x8743
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_norm16.hs b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_norm16.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXT_texture_norm16.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_norm16 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EXT_texture_norm16
+       (pattern R16_EXT, pattern RG16_EXT, pattern RGB16_EXT, pattern RGBA16_EXT, pattern R16_SNORM_EXT, pattern RG16_SNORM_EXT, pattern RGB16_SNORM_EXT, pattern RGBA16_SNORM_EXT, EXT_texture_norm16(..), gTypeEXT_texture_norm16)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern R16_EXT = 0x822A
+
+pattern RG16_EXT = 0x822C
+
+pattern RGB16_EXT = 0x8054
+
+pattern RGBA16_EXT = 0x805B
+
+pattern R16_SNORM_EXT = 0x8F98
+
+pattern RG16_SNORM_EXT = 0x8F99
+
+pattern RGB16_SNORM_EXT = 0x8F9A
+
+pattern RGBA16_SNORM_EXT = 0x8F9B
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs
+++ /dev/null
@@ -1,33 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.EXTsRGB
-       (pattern SRGB_EXT, pattern SRGB_ALPHA_EXT,
-        pattern SRGB8_ALPHA8_EXT,
-        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, EXTsRGB(..),
-        gTypeEXTsRGB)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SRGB_EXT = 35904
-pattern SRGB_ALPHA_EXT = 35906
-pattern SRGB8_ALPHA8_EXT = 35907
-pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 33296
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EffectTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/EffectTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EffectTiming.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EffectTiming
+       (js_newEffectTiming, js_setFill, js_getFill, js_setIterationStart, js_getIterationStart, js_setIterations, js_getIterations, js_setDirection, js_getDirection, js_setEasing, js_getEasing, js_setDelay, js_getDelay, js_setEndDelay, js_getEndDelay, js_setPlaybackRate, js_getPlaybackRate, js_setDuration, js_getDuration, newEffectTiming, setFill, getFill, getFillUnsafe, getFillUnchecked, setIterationStart, getIterationStart, getIterationStartUnsafe, getIterationStartUnchecked, setIterations, getIterations, getIterationsUnsafe, getIterationsUnchecked, setDirection, getDirection, getDirectionUnsafe, getDirectionUnchecked, setEasing, getEasing, getEasingUnsafe, getEasingUnchecked, setDelay, getDelay, getDelayUnsafe, getDelayUnchecked, setEndDelay, getEndDelay, getEndDelayUnsafe, getEndDelayUnchecked, setPlaybackRate, getPlaybackRate, getPlaybackRateUnsafe, getPlaybackRateUnchecked, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, EffectTiming(..), gTypeEffectTiming, IsEffectTiming, toEffectTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newEffectTiming :: IO EffectTiming
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-effecttiming EffectTiming specification>
+newEffectTiming :: (MonadDOM m) => m EffectTiming
+newEffectTiming = liftDOM ((js_newEffectTiming))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fill\"] = $2; })"
+        js_setFill :: EffectTiming -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-fill EffectTiming.fill specification>
+setFill :: (MonadDOM m, IsEffectTiming self) => self -> FillMode -> m ()
+setFill self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFill ((Types.toEffectTiming self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fill\"]; })"
+        js_getFill :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-fill EffectTiming.fill specification>
+getFill :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe FillMode)
+getFill self = liftDOM (((js_getFill ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-fill EffectTiming.fill specification>
+getFillUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m FillMode
+getFillUnsafe self = liftDOM ((((js_getFill ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-fill EffectTiming.fill specification>
+getFillUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m FillMode
+getFillUnchecked self = liftDOM ((pFromJSVal <$> (js_getFill ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iterationStart\"] = $2; })"
+        js_setIterationStart :: EffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterationstart EffectTiming.iterationStart specification>
+setIterationStart :: (MonadDOM m, IsEffectTiming self) => self -> Double -> m ()
+setIterationStart self val = liftDOM (void ((js_setIterationStart ((Types.toEffectTiming self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iterationStart\"]; })"
+        js_getIterationStart :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterationstart EffectTiming.iterationStart specification>
+getIterationStart :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe Double)
+getIterationStart self = liftDOM (((js_getIterationStart ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterationstart EffectTiming.iterationStart specification>
+getIterationStartUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m Double
+getIterationStartUnsafe self = liftDOM ((((js_getIterationStart ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterationstart EffectTiming.iterationStart specification>
+getIterationStartUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m Double
+getIterationStartUnchecked self = liftDOM ((pFromJSVal <$> (js_getIterationStart ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iterations\"] = $2; })"
+        js_setIterations :: EffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterations EffectTiming.iterations specification>
+setIterations :: (MonadDOM m, IsEffectTiming self) => self -> Double -> m ()
+setIterations self val = liftDOM (void ((js_setIterations ((Types.toEffectTiming self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iterations\"]; })"
+        js_getIterations :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterations EffectTiming.iterations specification>
+getIterations :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe Double)
+getIterations self = liftDOM (((js_getIterations ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterations EffectTiming.iterations specification>
+getIterationsUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m Double
+getIterationsUnsafe self = liftDOM ((((js_getIterations ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-iterations EffectTiming.iterations specification>
+getIterationsUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m Double
+getIterationsUnchecked self = liftDOM ((pFromJSVal <$> (js_getIterations ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: EffectTiming -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-direction EffectTiming.direction specification>
+setDirection :: (MonadDOM m, IsEffectTiming self) => self -> PlaybackDirection -> m ()
+setDirection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDirection ((Types.toEffectTiming self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-direction EffectTiming.direction specification>
+getDirection :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe PlaybackDirection)
+getDirection self = liftDOM (((js_getDirection ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-direction EffectTiming.direction specification>
+getDirectionUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m PlaybackDirection
+getDirectionUnsafe self = liftDOM ((((js_getDirection ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-direction EffectTiming.direction specification>
+getDirectionUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m PlaybackDirection
+getDirectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDirection ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"easing\"] = $2; })"
+        js_setEasing :: EffectTiming -> JSString -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-easing EffectTiming.easing specification>
+setEasing :: (MonadDOM m, IsEffectTiming self, ToJSString val) => self -> val -> m ()
+setEasing self val = liftDOM (void ((js_setEasing ((Types.toEffectTiming self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"easing\"]; })"
+        js_getEasing :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-easing EffectTiming.easing specification>
+getEasing :: (MonadDOM m, IsEffectTiming self, FromJSString result) => self -> m (Maybe result)
+getEasing self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEasing ((Types.toEffectTiming self)))))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-easing EffectTiming.easing specification>
+getEasingUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack, FromJSString result) => self -> m result
+getEasingUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEasing ((Types.toEffectTiming self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-effecttiming-easing EffectTiming.easing specification>
+getEasingUnchecked :: (MonadDOM m, IsEffectTiming self, FromJSString result) => self -> m result
+getEasingUnchecked self = liftDOM ((pFromJSVal <$> (js_getEasing ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"delay\"] = $2; })"
+        js_setDelay :: EffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-delay EffectTiming.delay specification>
+setDelay :: (MonadDOM m, IsEffectTiming self) => self -> Double -> m ()
+setDelay self val = liftDOM (void ((js_setDelay ((Types.toEffectTiming self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"delay\"]; })"
+        js_getDelay :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-delay EffectTiming.delay specification>
+getDelay :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe Double)
+getDelay self = liftDOM (((js_getDelay ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-delay EffectTiming.delay specification>
+getDelayUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m Double
+getDelayUnsafe self = liftDOM ((((js_getDelay ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-delay EffectTiming.delay specification>
+getDelayUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m Double
+getDelayUnchecked self = liftDOM ((pFromJSVal <$> (js_getDelay ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endDelay\"] = $2; })"
+        js_setEndDelay :: EffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-enddelay EffectTiming.endDelay specification>
+setEndDelay :: (MonadDOM m, IsEffectTiming self) => self -> Double -> m ()
+setEndDelay self val = liftDOM (void ((js_setEndDelay ((Types.toEffectTiming self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endDelay\"]; })"
+        js_getEndDelay :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-enddelay EffectTiming.endDelay specification>
+getEndDelay :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe Double)
+getEndDelay self = liftDOM (((js_getEndDelay ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-enddelay EffectTiming.endDelay specification>
+getEndDelayUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m Double
+getEndDelayUnsafe self = liftDOM ((((js_getEndDelay ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-enddelay EffectTiming.endDelay specification>
+getEndDelayUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m Double
+getEndDelayUnchecked self = liftDOM ((pFromJSVal <$> (js_getEndDelay ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: EffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-playbackrate EffectTiming.playbackRate specification>
+setPlaybackRate :: (MonadDOM m, IsEffectTiming self) => self -> Double -> m ()
+setPlaybackRate self val = liftDOM (void ((js_setPlaybackRate ((Types.toEffectTiming self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-playbackrate EffectTiming.playbackRate specification>
+getPlaybackRate :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe Double)
+getPlaybackRate self = liftDOM (((js_getPlaybackRate ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-playbackrate EffectTiming.playbackRate specification>
+getPlaybackRateUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m Double
+getPlaybackRateUnsafe self = liftDOM ((((js_getPlaybackRate ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-playbackrate EffectTiming.playbackRate specification>
+getPlaybackRateUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m Double
+getPlaybackRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getPlaybackRate ((Types.toEffectTiming self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: EffectTiming -> DoubleOrCSSNumericValueOrString -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-duration EffectTiming.duration specification>
+setDuration :: (MonadDOM m, IsEffectTiming self, IsDoubleOrCSSNumericValueOrString val) => self -> val -> m ()
+setDuration self val = liftDOM (void ((js_setDuration ((Types.toEffectTiming self)) (Types.toDoubleOrCSSNumericValueOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: EffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-duration EffectTiming.duration specification>
+getDuration :: (MonadDOM m, IsEffectTiming self) => self -> m (Maybe DoubleOrCSSNumericValueOrString)
+getDuration self = liftDOM (((js_getDuration ((Types.toEffectTiming self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-duration EffectTiming.duration specification>
+getDurationUnsafe :: (MonadDOM m, IsEffectTiming self, HasCallStack) => self -> m DoubleOrCSSNumericValueOrString
+getDurationUnsafe self = liftDOM ((((js_getDuration ((Types.toEffectTiming self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-effecttiming-duration EffectTiming.duration specification>
+getDurationUnchecked :: (MonadDOM m, IsEffectTiming self) => self -> m DoubleOrCSSNumericValueOrString
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration ((Types.toEffectTiming self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Element.hs b/src/GHCJS/DOM/JSFFI/Generated/Element.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Element.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Element.hs
@@ -1,1275 +1,749 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Element
-       (js_hasAttributes, hasAttributes, hasAttributes_,
-        js_getAttributeNames, getAttributeNames, getAttributeNames_,
-        js_getAttribute, getAttribute, getAttribute_, getAttributeUnsafe,
-        getAttributeUnchecked, js_getAttributeNS, getAttributeNS,
-        getAttributeNS_, getAttributeNSUnsafe, getAttributeNSUnchecked,
-        js_setAttribute, setAttribute, js_setAttributeNS, setAttributeNS,
-        js_removeAttribute, removeAttribute, js_removeAttributeNS,
-        removeAttributeNS, js_hasAttribute, hasAttribute, hasAttribute_,
-        js_hasAttributeNS, hasAttributeNS, hasAttributeNS_,
-        js_getAttributeNode, getAttributeNode, getAttributeNode_,
-        getAttributeNodeUnsafe, getAttributeNodeUnchecked,
-        js_getAttributeNodeNS, getAttributeNodeNS, getAttributeNodeNS_,
-        getAttributeNodeNSUnsafe, getAttributeNodeNSUnchecked,
-        js_setAttributeNode, setAttributeNode, setAttributeNode_,
-        setAttributeNodeUnsafe, setAttributeNodeUnchecked,
-        js_setAttributeNodeNS, setAttributeNodeNS, setAttributeNodeNS_,
-        setAttributeNodeNSUnsafe, setAttributeNodeNSUnchecked,
-        js_removeAttributeNode, removeAttributeNode, removeAttributeNode_,
-        js_attachShadow, attachShadow, attachShadow_, js_closest, closest,
-        closest_, closestUnsafe, closestUnchecked, js_matches, matches,
-        matches_, js_webkitMatchesSelector, webkitMatchesSelector,
-        webkitMatchesSelector_, js_getElementsByTagName,
-        getElementsByTagName, getElementsByTagName_,
-        js_getElementsByTagNameNS, getElementsByTagNameNS,
-        getElementsByTagNameNS_, js_getElementsByClassName,
-        getElementsByClassName, getElementsByClassName_,
-        js_insertAdjacentElement, insertAdjacentElement,
-        insertAdjacentElement_, insertAdjacentElementUnsafe,
-        insertAdjacentElementUnchecked, js_insertAdjacentText,
-        insertAdjacentText, js_getClientRects, getClientRects,
-        getClientRects_, js_getBoundingClientRect, getBoundingClientRect,
-        getBoundingClientRect_, js_scrollIntoView, scrollIntoView,
-        js_scrollOpt, scrollOpt, js_scroll, scroll, js_scrollToOpt,
-        scrollToOpt, js_scrollTo, scrollTo, js_scrollByOpt, scrollByOpt,
-        js_scrollBy, scrollBy, js_insertAdjacentHTML, insertAdjacentHTML,
-        js_webkitRequestFullScreen, webkitRequestFullScreen,
-        js_webkitRequestFullscreen, webkitRequestFullscreen,
-        js_requestPointerLock, requestPointerLock,
-        js_webkitGetRegionFlowRanges, webkitGetRegionFlowRanges,
-        webkitGetRegionFlowRanges_, js_scrollIntoViewIfNeeded,
-        scrollIntoViewIfNeeded, js_getNamespaceURI, getNamespaceURI,
-        getNamespaceURIUnsafe, getNamespaceURIUnchecked, js_getPrefix,
-        getPrefix, getPrefixUnsafe, getPrefixUnchecked, js_getLocalName,
-        getLocalName, js_getTagName, getTagName, js_setId, setId, js_getId,
-        getId, js_setClassName, setClassName, js_getClassName,
-        getClassName, js_getClassList, getClassList, js_setSlot, setSlot,
-        js_getSlot, getSlot, js_getAttributes, getAttributes,
-        js_getShadowRoot, getShadowRoot, getShadowRootUnsafe,
-        getShadowRootUnchecked, js_setScrollTop, setScrollTop,
-        js_getScrollTop, getScrollTop, js_setScrollLeft, setScrollLeft,
-        js_getScrollLeft, getScrollLeft, js_getScrollWidth, getScrollWidth,
-        js_getScrollHeight, getScrollHeight, js_getClientTop, getClientTop,
-        js_getClientLeft, getClientLeft, js_getClientWidth, getClientWidth,
-        js_getClientHeight, getClientHeight, js_setInnerHTML, setInnerHTML,
-        js_getInnerHTML, getInnerHTML, js_setOuterHTML, setOuterHTML,
-        js_getOuterHTML, getOuterHTML, js_getWebkitRegionOverset,
-        getWebkitRegionOverset, selectStart, gestureChange, gestureEnd,
-        gestureStart, webKitAnimationEnd, webKitAnimationIteration,
-        webKitAnimationStart, webKitTransitionEnd, webKitFullscreenChange,
-        webKitFullscreenError, focusin, focusout, beforeload,
-        webKitNeedKey, webKitPresentationModeChanged,
-        webKitCurrentPlaybackTargetIsWirelessChanged,
-        webKitPlaybackTargetAvailabilityChanged, Element(..), gTypeElement,
-        IsElement, toElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"hasAttributes\"]() ? 1 : 0); })" js_hasAttributes ::
-        Element -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
-hasAttributes :: (MonadIO m, IsElement self) => self -> m Bool
-hasAttributes self = liftIO (js_hasAttributes (toElement self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
-hasAttributes_ :: (MonadIO m, IsElement self) => self -> m ()
-hasAttributes_ self
-  = liftIO (void (js_hasAttributes (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getAttributeNames\"](); })"
-        js_getAttributeNames :: Element -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNames Mozilla Element.getAttributeNames documentation> 
-getAttributeNames ::
-                  (MonadIO m, IsElement self, FromJSString result) =>
-                    self -> m [result]
-getAttributeNames self
-  = liftIO
-      ((js_getAttributeNames (toElement self)) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNames Mozilla Element.getAttributeNames documentation> 
-getAttributeNames_ :: (MonadIO m, IsElement self) => self -> m ()
-getAttributeNames_ self
-  = liftIO (void (js_getAttributeNames (toElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getAttribute\"]($2); })"
-        js_getAttribute :: Element -> JSString -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttribute ::
-             (MonadIO m, IsElement self, ToJSString qualifiedName,
-              FromJSString result) =>
-               self -> qualifiedName -> m (Maybe result)
-getAttribute self qualifiedName
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getAttribute (toElement self) (toJSString qualifiedName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttribute_ ::
-              (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                self -> qualifiedName -> m ()
-getAttribute_ self qualifiedName
-  = liftIO
-      (void
-         (js_getAttribute (toElement self) (toJSString qualifiedName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttributeUnsafe ::
-                   (MonadIO m, IsElement self, ToJSString qualifiedName, HasCallStack,
-                    FromJSString result) =>
-                     self -> qualifiedName -> m result
-getAttributeUnsafe self qualifiedName
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getAttribute (toElement self) (toJSString qualifiedName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttributeUnchecked ::
-                      (MonadIO m, IsElement self, ToJSString qualifiedName,
-                       FromJSString result) =>
-                        self -> qualifiedName -> m result
-getAttributeUnchecked self qualifiedName
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getAttribute (toElement self) (toJSString qualifiedName)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getAttributeNS\"]($2, $3); })"
-        js_getAttributeNS ::
-        Element -> Optional JSString -> JSString -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNS ::
-               (MonadIO m, IsElement self, ToJSString namespaceURI,
-                ToJSString localName, FromJSString result) =>
-                 self -> Maybe namespaceURI -> localName -> m (Maybe result)
-getAttributeNS self namespaceURI localName
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getAttributeNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNS_ ::
-                (MonadIO m, IsElement self, ToJSString namespaceURI,
-                 ToJSString localName) =>
-                  self -> Maybe namespaceURI -> localName -> m ()
-getAttributeNS_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_getAttributeNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNSUnsafe ::
-                     (MonadIO m, IsElement self, ToJSString namespaceURI,
-                      ToJSString localName, HasCallStack, FromJSString result) =>
-                       self -> Maybe namespaceURI -> localName -> m result
-getAttributeNSUnsafe self namespaceURI localName
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getAttributeNS (toElement self)
-             (toOptionalJSString namespaceURI)
-             (toJSString localName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNSUnchecked ::
-                        (MonadIO m, IsElement self, ToJSString namespaceURI,
-                         ToJSString localName, FromJSString result) =>
-                          self -> Maybe namespaceURI -> localName -> m result
-getAttributeNSUnchecked self namespaceURI localName
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getAttributeNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setAttribute\"]($2, $3); })"
-        js_setAttribute :: Element -> JSString -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttribute Mozilla Element.setAttribute documentation> 
-setAttribute ::
-             (MonadIO m, IsElement self, ToJSString qualifiedName,
-              ToJSString value) =>
-               self -> qualifiedName -> value -> m ()
-setAttribute self qualifiedName value
-  = liftIO
-      (js_setAttribute (toElement self) (toJSString qualifiedName)
-         (toJSString value))
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setAttributeNS\"]($2, $3, $4); })"
-        js_setAttributeNS ::
-        Element -> Optional JSString -> JSString -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNS Mozilla Element.setAttributeNS documentation> 
-setAttributeNS ::
-               (MonadIO m, IsElement self, ToJSString namespaceURI,
-                ToJSString qualifiedName, ToJSString value) =>
-                 self -> Maybe namespaceURI -> qualifiedName -> value -> m ()
-setAttributeNS self namespaceURI qualifiedName value
-  = liftIO
-      (js_setAttributeNS (toElement self)
-         (toOptionalJSString namespaceURI)
-         (toJSString qualifiedName)
-         (toJSString value))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"removeAttribute\"]($2); })"
-        js_removeAttribute :: Element -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttribute Mozilla Element.removeAttribute documentation> 
-removeAttribute ::
-                (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                  self -> qualifiedName -> m ()
-removeAttribute self qualifiedName
-  = liftIO
-      (js_removeAttribute (toElement self) (toJSString qualifiedName))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"removeAttributeNS\"]($2, $3); })" js_removeAttributeNS ::
-        Element -> Optional JSString -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNS Mozilla Element.removeAttributeNS documentation> 
-removeAttributeNS ::
-                  (MonadIO m, IsElement self, ToJSString namespaceURI,
-                   ToJSString localName) =>
-                    self -> Maybe namespaceURI -> localName -> m ()
-removeAttributeNS self namespaceURI localName
-  = liftIO
-      (js_removeAttributeNS (toElement self)
-         (toOptionalJSString namespaceURI)
-         (toJSString localName))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"hasAttribute\"]($2) ? 1 : 0); })" js_hasAttribute ::
-        Element -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttribute Mozilla Element.hasAttribute documentation> 
-hasAttribute ::
-             (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-               self -> qualifiedName -> m Bool
-hasAttribute self qualifiedName
-  = liftIO
-      (js_hasAttribute (toElement self) (toJSString qualifiedName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttribute Mozilla Element.hasAttribute documentation> 
-hasAttribute_ ::
-              (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                self -> qualifiedName -> m ()
-hasAttribute_ self qualifiedName
-  = liftIO
-      (void
-         (js_hasAttribute (toElement self) (toJSString qualifiedName)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return ($1[\"hasAttributeNS\"]($2,\n$3) ? 1 : 0); })" js_hasAttributeNS ::
-        Element -> Optional JSString -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributeNS Mozilla Element.hasAttributeNS documentation> 
-hasAttributeNS ::
-               (MonadIO m, IsElement self, ToJSString namespaceURI,
-                ToJSString localName) =>
-                 self -> Maybe namespaceURI -> localName -> m Bool
-hasAttributeNS self namespaceURI localName
-  = liftIO
-      (js_hasAttributeNS (toElement self)
-         (toOptionalJSString namespaceURI)
-         (toJSString localName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributeNS Mozilla Element.hasAttributeNS documentation> 
-hasAttributeNS_ ::
-                (MonadIO m, IsElement self, ToJSString namespaceURI,
-                 ToJSString localName) =>
-                  self -> Maybe namespaceURI -> localName -> m ()
-hasAttributeNS_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_hasAttributeNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getAttributeNode\"]($2); })"
-        js_getAttributeNode :: Element -> JSString -> IO (Nullable Attr)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNode ::
-                 (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                   self -> qualifiedName -> m (Maybe Attr)
-getAttributeNode self qualifiedName
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNode_ ::
-                  (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                    self -> qualifiedName -> m ()
-getAttributeNode_ self qualifiedName
-  = liftIO
-      (void
-         (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNodeUnsafe ::
-                       (MonadIO m, IsElement self, ToJSString qualifiedName,
-                        HasCallStack) =>
-                         self -> qualifiedName -> m Attr
-getAttributeNodeUnsafe self qualifiedName
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNodeUnchecked ::
-                          (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                            self -> qualifiedName -> m Attr
-getAttributeNodeUnchecked self qualifiedName
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getAttributeNodeNS\"]($2, $3); })" js_getAttributeNodeNS ::
-        Element -> Optional JSString -> JSString -> IO (Nullable Attr)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNS ::
-                   (MonadIO m, IsElement self, ToJSString namespaceURI,
-                    ToJSString localName) =>
-                     self -> Maybe namespaceURI -> localName -> m (Maybe Attr)
-getAttributeNodeNS self namespaceURI localName
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getAttributeNodeNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNS_ ::
-                    (MonadIO m, IsElement self, ToJSString namespaceURI,
-                     ToJSString localName) =>
-                      self -> Maybe namespaceURI -> localName -> m ()
-getAttributeNodeNS_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_getAttributeNodeNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNSUnsafe ::
-                         (MonadIO m, IsElement self, ToJSString namespaceURI,
-                          ToJSString localName, HasCallStack) =>
-                           self -> Maybe namespaceURI -> localName -> m Attr
-getAttributeNodeNSUnsafe self namespaceURI localName
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getAttributeNodeNS (toElement self)
-             (toOptionalJSString namespaceURI)
-             (toJSString localName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNSUnchecked ::
-                            (MonadIO m, IsElement self, ToJSString namespaceURI,
-                             ToJSString localName) =>
-                              self -> Maybe namespaceURI -> localName -> m Attr
-getAttributeNodeNSUnchecked self namespaceURI localName
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getAttributeNodeNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setAttributeNode\"]($2); })"
-        js_setAttributeNode :: Element -> Attr -> IO (Nullable Attr)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNode ::
-                 (MonadIO m, IsElement self) => self -> Attr -> m (Maybe Attr)
-setAttributeNode self attr
-  = liftIO
-      (nullableToMaybe <$> (js_setAttributeNode (toElement self) attr))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNode_ ::
-                  (MonadIO m, IsElement self) => self -> Attr -> m ()
-setAttributeNode_ self attr
-  = liftIO (void (js_setAttributeNode (toElement self) attr))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNodeUnsafe ::
-                       (MonadIO m, IsElement self, HasCallStack) => self -> Attr -> m Attr
-setAttributeNodeUnsafe self attr
-  = liftIO
-      ((nullableToMaybe <$> (js_setAttributeNode (toElement self) attr))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNodeUnchecked ::
-                          (MonadIO m, IsElement self) => self -> Attr -> m Attr
-setAttributeNodeUnchecked self attr
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_setAttributeNode (toElement self) attr))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setAttributeNodeNS\"]($2); })"
-        js_setAttributeNodeNS :: Element -> Attr -> IO (Nullable Attr)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNS ::
-                   (MonadIO m, IsElement self) => self -> Attr -> m (Maybe Attr)
-setAttributeNodeNS self attr
-  = liftIO
-      (nullableToMaybe <$> (js_setAttributeNodeNS (toElement self) attr))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNS_ ::
-                    (MonadIO m, IsElement self) => self -> Attr -> m ()
-setAttributeNodeNS_ self attr
-  = liftIO (void (js_setAttributeNodeNS (toElement self) attr))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNSUnsafe ::
-                         (MonadIO m, IsElement self, HasCallStack) => self -> Attr -> m Attr
-setAttributeNodeNSUnsafe self attr
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_setAttributeNodeNS (toElement self) attr))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNSUnchecked ::
-                            (MonadIO m, IsElement self) => self -> Attr -> m Attr
-setAttributeNodeNSUnchecked self attr
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_setAttributeNodeNS (toElement self) attr))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"removeAttributeNode\"]($2); })"
-        js_removeAttributeNode :: Element -> Attr -> IO Attr
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
-removeAttributeNode ::
-                    (MonadIO m, IsElement self) => self -> Attr -> m Attr
-removeAttributeNode self attr
-  = liftIO (js_removeAttributeNode (toElement self) attr)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
-removeAttributeNode_ ::
-                     (MonadIO m, IsElement self) => self -> Attr -> m ()
-removeAttributeNode_ self attr
-  = liftIO (void (js_removeAttributeNode (toElement self) attr))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"attachShadow\"]($2); })"
-        js_attachShadow :: Element -> ShadowRootInit -> IO ShadowRoot
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attachShadow Mozilla Element.attachShadow documentation> 
-attachShadow ::
-             (MonadIO m, IsElement self) =>
-               self -> ShadowRootInit -> m ShadowRoot
-attachShadow self init
-  = liftIO (js_attachShadow (toElement self) init)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attachShadow Mozilla Element.attachShadow documentation> 
-attachShadow_ ::
-              (MonadIO m, IsElement self) => self -> ShadowRootInit -> m ()
-attachShadow_ self init
-  = liftIO (void (js_attachShadow (toElement self) init))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"closest\"]($2); })" js_closest ::
-        Element -> JSString -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closest ::
-        (MonadIO m, IsElement self, ToJSString selectors) =>
-          self -> selectors -> m (Maybe Element)
-closest self selectors
-  = liftIO
-      (nullableToMaybe <$>
-         (js_closest (toElement self) (toJSString selectors)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closest_ ::
-         (MonadIO m, IsElement self, ToJSString selectors) =>
-           self -> selectors -> m ()
-closest_ self selectors
-  = liftIO
-      (void (js_closest (toElement self) (toJSString selectors)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closestUnsafe ::
-              (MonadIO m, IsElement self, ToJSString selectors, HasCallStack) =>
-                self -> selectors -> m Element
-closestUnsafe self selectors
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_closest (toElement self) (toJSString selectors)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closestUnchecked ::
-                 (MonadIO m, IsElement self, ToJSString selectors) =>
-                   self -> selectors -> m Element
-closestUnchecked self selectors
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_closest (toElement self) (toJSString selectors)))
- 
-foreign import javascript safe "(($1, $2) => { return ($1[\"matches\"]($2) ? 1 : 0); })"
-        js_matches :: Element -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
-matches ::
-        (MonadIO m, IsElement self, ToJSString selectors) =>
-          self -> selectors -> m Bool
-matches self selectors
-  = liftIO (js_matches (toElement self) (toJSString selectors))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
-matches_ ::
-         (MonadIO m, IsElement self, ToJSString selectors) =>
-           self -> selectors -> m ()
-matches_ self selectors
-  = liftIO
-      (void (js_matches (toElement self) (toJSString selectors)))
- 
-foreign import javascript safe
-        "(($1, $2) => { return ($1[\"webkitMatchesSelector\"]($2) ? 1 : 0); })"
-        js_webkitMatchesSelector :: Element -> JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitMatchesSelector Mozilla Element.webkitMatchesSelector documentation> 
-webkitMatchesSelector ::
-                      (MonadIO m, IsElement self, ToJSString selectors) =>
-                        self -> selectors -> m Bool
-webkitMatchesSelector self selectors
-  = liftIO
-      (js_webkitMatchesSelector (toElement self) (toJSString selectors))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitMatchesSelector Mozilla Element.webkitMatchesSelector documentation> 
-webkitMatchesSelector_ ::
-                       (MonadIO m, IsElement self, ToJSString selectors) =>
-                         self -> selectors -> m ()
-webkitMatchesSelector_ self selectors
-  = liftIO
-      (void
-         (js_webkitMatchesSelector (toElement self) (toJSString selectors)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementsByTagName\"]($2); })"
-        js_getElementsByTagName :: Element -> JSString -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
-getElementsByTagName ::
-                     (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                       self -> qualifiedName -> m HTMLCollection
-getElementsByTagName self qualifiedName
-  = liftIO
-      (js_getElementsByTagName (toElement self)
-         (toJSString qualifiedName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
-getElementsByTagName_ ::
-                      (MonadIO m, IsElement self, ToJSString qualifiedName) =>
-                        self -> qualifiedName -> m ()
-getElementsByTagName_ self qualifiedName
-  = liftIO
-      (void
-         (js_getElementsByTagName (toElement self)
-            (toJSString qualifiedName)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getElementsByTagNameNS\"]($2,\n$3); })" js_getElementsByTagNameNS
-        :: Element -> Optional JSString -> JSString -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS ::
-                       (MonadIO m, IsElement self, ToJSString namespaceURI,
-                        ToJSString localName) =>
-                         self -> Maybe namespaceURI -> localName -> m HTMLCollection
-getElementsByTagNameNS self namespaceURI localName
-  = liftIO
-      (js_getElementsByTagNameNS (toElement self)
-         (toOptionalJSString namespaceURI)
-         (toJSString localName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS_ ::
-                        (MonadIO m, IsElement self, ToJSString namespaceURI,
-                         ToJSString localName) =>
-                          self -> Maybe namespaceURI -> localName -> m ()
-getElementsByTagNameNS_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_getElementsByTagNameNS (toElement self)
-            (toOptionalJSString namespaceURI)
-            (toJSString localName)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"getElementsByClassName\"]($2); })" js_getElementsByClassName ::
-        Element -> JSString -> IO HTMLCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
-getElementsByClassName ::
-                       (MonadIO m, IsElement self, ToJSString name) =>
-                         self -> name -> m HTMLCollection
-getElementsByClassName self name
-  = liftIO
-      (js_getElementsByClassName (toElement self) (toJSString name))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
-getElementsByClassName_ ::
-                        (MonadIO m, IsElement self, ToJSString name) =>
-                          self -> name -> m ()
-getElementsByClassName_ self name
-  = liftIO
-      (void
-         (js_getElementsByClassName (toElement self) (toJSString name)))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"insertAdjacentElement\"]($2,\n$3); })" js_insertAdjacentElement
-        :: Element -> JSString -> Element -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElement ::
-                      (MonadIO m, IsElement self, ToJSString where',
-                       IsElement element) =>
-                        self -> where' -> element -> m (Maybe Element)
-insertAdjacentElement self where' element
-  = liftIO
-      (nullableToMaybe <$>
-         (js_insertAdjacentElement (toElement self) (toJSString where')
-            (toElement element)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElement_ ::
-                       (MonadIO m, IsElement self, ToJSString where',
-                        IsElement element) =>
-                         self -> where' -> element -> m ()
-insertAdjacentElement_ self where' element
-  = liftIO
-      (void
-         (js_insertAdjacentElement (toElement self) (toJSString where')
-            (toElement element)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElementUnsafe ::
-                            (MonadIO m, IsElement self, ToJSString where', IsElement element,
-                             HasCallStack) =>
-                              self -> where' -> element -> m Element
-insertAdjacentElementUnsafe self where' element
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_insertAdjacentElement (toElement self) (toJSString where')
-             (toElement element)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElementUnchecked ::
-                               (MonadIO m, IsElement self, ToJSString where',
-                                IsElement element) =>
-                                 self -> where' -> element -> m Element
-insertAdjacentElementUnchecked self where' element
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_insertAdjacentElement (toElement self) (toJSString where')
-            (toElement element)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertAdjacentText\"]($2, $3); })"
-        js_insertAdjacentText :: Element -> JSString -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentText Mozilla Element.insertAdjacentText documentation> 
-insertAdjacentText ::
-                   (MonadIO m, IsElement self, ToJSString where', ToJSString data') =>
-                     self -> where' -> data' -> m ()
-insertAdjacentText self where' data'
-  = liftIO
-      (js_insertAdjacentText (toElement self) (toJSString where')
-         (toJSString data'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getClientRects\"](); })"
-        js_getClientRects :: Element -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
-getClientRects ::
-               (MonadIO m, IsElement self) => self -> m [DOMRect]
-getClientRects self
-  = liftIO
-      ((js_getClientRects (toElement self)) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
-getClientRects_ :: (MonadIO m, IsElement self) => self -> m ()
-getClientRects_ self
-  = liftIO (void (js_getClientRects (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getBoundingClientRect\"](); })"
-        js_getBoundingClientRect :: Element -> IO DOMRect
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
-getBoundingClientRect ::
-                      (MonadIO m, IsElement self) => self -> m DOMRect
-getBoundingClientRect self
-  = liftIO (js_getBoundingClientRect (toElement self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
-getBoundingClientRect_ ::
-                       (MonadIO m, IsElement self) => self -> m ()
-getBoundingClientRect_ self
-  = liftIO (void (js_getBoundingClientRect (toElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollIntoView\"]($2); })"
-        js_scrollIntoView :: Element -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView Mozilla Element.scrollIntoView documentation> 
-scrollIntoView ::
-               (MonadIO m, IsElement self) => self -> Bool -> m ()
-scrollIntoView self alignWithTop
-  = liftIO (js_scrollIntoView (toElement self) alignWithTop)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"scroll\"]($2); })" js_scrollOpt
-        :: Element -> Optional ScrollToOptions -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scroll Mozilla Element.scroll documentation> 
-scrollOpt ::
-          (MonadIO m, IsElement self) =>
-            self -> Maybe ScrollToOptions -> m ()
-scrollOpt self options
-  = liftIO (js_scrollOpt (toElement self) (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scroll\"]($2, $3); })" js_scroll
-        :: Element -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scroll Mozilla Element.scroll documentation> 
-scroll ::
-       (MonadIO m, IsElement self) => self -> Double -> Double -> m ()
-scroll self x y = liftIO (js_scroll (toElement self) x y)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollTo\"]($2); })"
-        js_scrollToOpt :: Element -> Optional ScrollToOptions -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTo Mozilla Element.scrollTo documentation> 
-scrollToOpt ::
-            (MonadIO m, IsElement self) =>
-              self -> Maybe ScrollToOptions -> m ()
-scrollToOpt self options
-  = liftIO
-      (js_scrollToOpt (toElement self) (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollTo\"]($2, $3); })"
-        js_scrollTo :: Element -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTo Mozilla Element.scrollTo documentation> 
-scrollTo ::
-         (MonadIO m, IsElement self) => self -> Double -> Double -> m ()
-scrollTo self x y = liftIO (js_scrollTo (toElement self) x y)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollBy\"]($2); })"
-        js_scrollByOpt :: Element -> Optional ScrollToOptions -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollBy Mozilla Element.scrollBy documentation> 
-scrollByOpt ::
-            (MonadIO m, IsElement self) =>
-              self -> Maybe ScrollToOptions -> m ()
-scrollByOpt self option
-  = liftIO (js_scrollByOpt (toElement self) (maybeToOptional option))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollBy\"]($2, $3); })"
-        js_scrollBy :: Element -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollBy Mozilla Element.scrollBy documentation> 
-scrollBy ::
-         (MonadIO m, IsElement self) => self -> Double -> Double -> m ()
-scrollBy self x y = liftIO (js_scrollBy (toElement self) x y)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertAdjacentHTML\"]($2, $3); })"
-        js_insertAdjacentHTML :: Element -> JSString -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentHTML Mozilla Element.insertAdjacentHTML documentation> 
-insertAdjacentHTML ::
-                   (MonadIO m, IsElement self, ToJSString position,
-                    ToJSString text) =>
-                     self -> position -> text -> m ()
-insertAdjacentHTML self position text
-  = liftIO
-      (js_insertAdjacentHTML (toElement self) (toJSString position)
-         (toJSString text))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitRequestFullScreen\"](); })" js_webkitRequestFullScreen ::
-        Element -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullScreen Mozilla Element.webkitRequestFullScreen documentation> 
-webkitRequestFullScreen ::
-                        (MonadIO m, IsElement self) => self -> m ()
-webkitRequestFullScreen self
-  = liftIO (js_webkitRequestFullScreen (toElement self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitRequestFullscreen\"](); })" js_webkitRequestFullscreen ::
-        Element -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullscreen Mozilla Element.webkitRequestFullscreen documentation> 
-webkitRequestFullscreen ::
-                        (MonadIO m, IsElement self) => self -> m ()
-webkitRequestFullscreen self
-  = liftIO (js_webkitRequestFullscreen (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"requestPointerLock\"](); })"
-        js_requestPointerLock :: Element -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.requestPointerLock Mozilla Element.requestPointerLock documentation> 
-requestPointerLock :: (MonadIO m, IsElement self) => self -> m ()
-requestPointerLock self
-  = liftIO (js_requestPointerLock (toElement self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitGetRegionFlowRanges\"](); })" js_webkitGetRegionFlowRanges
-        :: Element -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitGetRegionFlowRanges Mozilla Element.webkitGetRegionFlowRanges documentation> 
-webkitGetRegionFlowRanges ::
-                          (MonadIO m, IsElement self) => self -> m (Maybe [Range])
-webkitGetRegionFlowRanges self
-  = liftIO
-      ((js_webkitGetRegionFlowRanges (toElement self)) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitGetRegionFlowRanges Mozilla Element.webkitGetRegionFlowRanges documentation> 
-webkitGetRegionFlowRanges_ ::
-                           (MonadIO m, IsElement self) => self -> m ()
-webkitGetRegionFlowRanges_ self
-  = liftIO (void (js_webkitGetRegionFlowRanges (toElement self)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"scrollIntoViewIfNeeded\"]($2); })" js_scrollIntoViewIfNeeded ::
-        Element -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoViewIfNeeded Mozilla Element.scrollIntoViewIfNeeded documentation> 
-scrollIntoViewIfNeeded ::
-                       (MonadIO m, IsElement self) => self -> Bool -> m ()
-scrollIntoViewIfNeeded self centerIfNeeded
-  = liftIO
-      (js_scrollIntoViewIfNeeded (toElement self) centerIfNeeded)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"namespaceURI\"]; })"
-        js_getNamespaceURI :: Element -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
-getNamespaceURI ::
-                (MonadIO m, IsElement self, FromJSString result) =>
-                  self -> m (Maybe result)
-getNamespaceURI self
-  = liftIO
-      (fromMaybeJSString <$> (js_getNamespaceURI (toElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
-getNamespaceURIUnsafe ::
-                      (MonadIO m, IsElement self, HasCallStack, FromJSString result) =>
-                        self -> m result
-getNamespaceURIUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getNamespaceURI (toElement self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
-getNamespaceURIUnchecked ::
-                         (MonadIO m, IsElement self, FromJSString result) =>
-                           self -> m result
-getNamespaceURIUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getNamespaceURI (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })" js_getPrefix ::
-        Element -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
-getPrefix ::
-          (MonadIO m, IsElement self, FromJSString result) =>
-            self -> m (Maybe result)
-getPrefix self
-  = liftIO (fromMaybeJSString <$> (js_getPrefix (toElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
-getPrefixUnsafe ::
-                (MonadIO m, IsElement self, HasCallStack, FromJSString result) =>
-                  self -> m result
-getPrefixUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getPrefix (toElement self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
-getPrefixUnchecked ::
-                   (MonadIO m, IsElement self, FromJSString result) =>
-                     self -> m result
-getPrefixUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getPrefix (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"localName\"]; })"
-        js_getLocalName :: Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.localName Mozilla Element.localName documentation> 
-getLocalName ::
-             (MonadIO m, IsElement self, FromJSString result) =>
-               self -> m result
-getLocalName self
-  = liftIO (fromJSString <$> (js_getLocalName (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tagName\"]; })" js_getTagName ::
-        Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.tagName Mozilla Element.tagName documentation> 
-getTagName ::
-           (MonadIO m, IsElement self, FromJSString result) =>
-             self -> m result
-getTagName self
-  = liftIO (fromJSString <$> (js_getTagName (toElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"id\"] = $2; })" js_setId ::
-        Element -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
-setId ::
-      (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
-setId self val
-  = liftIO (js_setId (toElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
-getId ::
-      (MonadIO m, IsElement self, FromJSString result) =>
-        self -> m result
-getId self = liftIO (fromJSString <$> (js_getId (toElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"className\"] = $2; })"
-        js_setClassName :: Element -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
-setClassName ::
-             (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
-setClassName self val
-  = liftIO (js_setClassName (toElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"className\"]; })"
-        js_getClassName :: Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
-getClassName ::
-             (MonadIO m, IsElement self, FromJSString result) =>
-               self -> m result
-getClassName self
-  = liftIO (fromJSString <$> (js_getClassName (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"classList\"]; })"
-        js_getClassList :: Element -> IO DOMTokenList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.classList Mozilla Element.classList documentation> 
-getClassList ::
-             (MonadIO m, IsElement self) => self -> m DOMTokenList
-getClassList self = liftIO (js_getClassList (toElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"slot\"] = $2; })" js_setSlot ::
-        Element -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.slot Mozilla Element.slot documentation> 
-setSlot ::
-        (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
-setSlot self val
-  = liftIO (js_setSlot (toElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"slot\"]; })" js_getSlot ::
-        Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.slot Mozilla Element.slot documentation> 
-getSlot ::
-        (MonadIO m, IsElement self, FromJSString result) =>
-          self -> m result
-getSlot self
-  = liftIO (fromJSString <$> (js_getSlot (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"attributes\"]; })"
-        js_getAttributes :: Element -> IO NamedNodeMap
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attributes Mozilla Element.attributes documentation> 
-getAttributes ::
-              (MonadIO m, IsElement self) => self -> m NamedNodeMap
-getAttributes self = liftIO (js_getAttributes (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shadowRoot\"]; })"
-        js_getShadowRoot :: Element -> IO (Nullable ShadowRoot)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
-getShadowRoot ::
-              (MonadIO m, IsElement self) => self -> m (Maybe ShadowRoot)
-getShadowRoot self
-  = liftIO (nullableToMaybe <$> (js_getShadowRoot (toElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
-getShadowRootUnsafe ::
-                    (MonadIO m, IsElement self, HasCallStack) => self -> m ShadowRoot
-getShadowRootUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getShadowRoot (toElement self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
-getShadowRootUnchecked ::
-                       (MonadIO m, IsElement self) => self -> m ShadowRoot
-getShadowRootUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getShadowRoot (toElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scrollTop\"] = $2; })"
-        js_setScrollTop :: Element -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
-setScrollTop :: (MonadIO m, IsElement self) => self -> Int -> m ()
-setScrollTop self val
-  = liftIO (js_setScrollTop (toElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollTop\"]; })"
-        js_getScrollTop :: Element -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
-getScrollTop :: (MonadIO m, IsElement self) => self -> m Int
-getScrollTop self = liftIO (js_getScrollTop (toElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scrollLeft\"] = $2; })"
-        js_setScrollLeft :: Element -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
-setScrollLeft :: (MonadIO m, IsElement self) => self -> Int -> m ()
-setScrollLeft self val
-  = liftIO (js_setScrollLeft (toElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollLeft\"]; })"
-        js_getScrollLeft :: Element -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
-getScrollLeft :: (MonadIO m, IsElement self) => self -> m Int
-getScrollLeft self = liftIO (js_getScrollLeft (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollWidth\"]; })"
-        js_getScrollWidth :: Element -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollWidth Mozilla Element.scrollWidth documentation> 
-getScrollWidth :: (MonadIO m, IsElement self) => self -> m Int
-getScrollWidth self = liftIO (js_getScrollWidth (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollHeight\"]; })"
-        js_getScrollHeight :: Element -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollHeight Mozilla Element.scrollHeight documentation> 
-getScrollHeight :: (MonadIO m, IsElement self) => self -> m Int
-getScrollHeight self = liftIO (js_getScrollHeight (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientTop\"]; })"
-        js_getClientTop :: Element -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientTop Mozilla Element.clientTop documentation> 
-getClientTop :: (MonadIO m, IsElement self) => self -> m Double
-getClientTop self = liftIO (js_getClientTop (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientLeft\"]; })"
-        js_getClientLeft :: Element -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientLeft Mozilla Element.clientLeft documentation> 
-getClientLeft :: (MonadIO m, IsElement self) => self -> m Double
-getClientLeft self = liftIO (js_getClientLeft (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientWidth\"]; })"
-        js_getClientWidth :: Element -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientWidth Mozilla Element.clientWidth documentation> 
-getClientWidth :: (MonadIO m, IsElement self) => self -> m Double
-getClientWidth self = liftIO (js_getClientWidth (toElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientHeight\"]; })"
-        js_getClientHeight :: Element -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientHeight Mozilla Element.clientHeight documentation> 
-getClientHeight :: (MonadIO m, IsElement self) => self -> m Double
-getClientHeight self = liftIO (js_getClientHeight (toElement self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"innerHTML\"] = $2; })"
-        js_setInnerHTML :: Element -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
-setInnerHTML ::
-             (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
-setInnerHTML self val
-  = liftIO (js_setInnerHTML (toElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"innerHTML\"]; })"
-        js_getInnerHTML :: Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
-getInnerHTML ::
-             (MonadIO m, IsElement self, FromJSString result) =>
-               self -> m result
-getInnerHTML self
-  = liftIO (fromJSString <$> (js_getInnerHTML (toElement self)))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"outerHTML\"] = $2; })"
-        js_setOuterHTML :: Element -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
-setOuterHTML ::
-             (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
-setOuterHTML self val
-  = liftIO (js_setOuterHTML (toElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"outerHTML\"]; })"
-        js_getOuterHTML :: Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
-getOuterHTML ::
-             (MonadIO m, IsElement self, FromJSString result) =>
-               self -> m result
-getOuterHTML self
-  = liftIO (fromJSString <$> (js_getOuterHTML (toElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitRegionOverset\"]; })"
-        js_getWebkitRegionOverset :: Element -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRegionOverset Mozilla Element.webkitRegionOverset documentation> 
-getWebkitRegionOverset ::
-                       (MonadIO m, IsElement self, FromJSString result) =>
-                         self -> m result
-getWebkitRegionOverset self
-  = liftIO
-      (fromJSString <$> (js_getWebkitRegionOverset (toElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onselectstart Mozilla Element.onselectstart documentation> 
-selectStart ::
-            (IsElement self, IsEventTarget self) => EventName self Event
-selectStart = unsafeEventName (toJSString "selectstart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ongesturechange Mozilla Element.ongesturechange documentation> 
-gestureChange ::
-              (IsElement self, IsEventTarget self) => EventName self UIEvent
-gestureChange = unsafeEventName (toJSString "gesturechange")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ongestureend Mozilla Element.ongestureend documentation> 
-gestureEnd ::
-           (IsElement self, IsEventTarget self) => EventName self UIEvent
-gestureEnd = unsafeEventName (toJSString "gestureend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ongesturestart Mozilla Element.ongesturestart documentation> 
-gestureStart ::
-             (IsElement self, IsEventTarget self) => EventName self UIEvent
-gestureStart = unsafeEventName (toJSString "gesturestart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitanimationend Mozilla Element.onwebkitanimationend documentation> 
-webKitAnimationEnd ::
-                   (IsElement self, IsEventTarget self) =>
-                     EventName self AnimationEvent
-webKitAnimationEnd
-  = unsafeEventName (toJSString "webkitanimationend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitanimationiteration Mozilla Element.onwebkitanimationiteration documentation> 
-webKitAnimationIteration ::
-                         (IsElement self, IsEventTarget self) =>
-                           EventName self AnimationEvent
-webKitAnimationIteration
-  = unsafeEventName (toJSString "webkitanimationiteration")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitanimationstart Mozilla Element.onwebkitanimationstart documentation> 
-webKitAnimationStart ::
-                     (IsElement self, IsEventTarget self) =>
-                       EventName self AnimationEvent
-webKitAnimationStart
-  = unsafeEventName (toJSString "webkitanimationstart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkittransitionend Mozilla Element.onwebkittransitionend documentation> 
-webKitTransitionEnd ::
-                    (IsElement self, IsEventTarget self) =>
-                      EventName self TransitionEvent
-webKitTransitionEnd
-  = unsafeEventName (toJSString "webkittransitionend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitfullscreenchange Mozilla Element.onwebkitfullscreenchange documentation> 
-webKitFullscreenChange ::
-                       (IsElement self, IsEventTarget self) => EventName self Event
-webKitFullscreenChange
-  = unsafeEventName (toJSString "webkitfullscreenchange")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitfullscreenerror Mozilla Element.onwebkitfullscreenerror documentation> 
-webKitFullscreenError ::
-                      (IsElement self, IsEventTarget self) => EventName self Event
-webKitFullscreenError
-  = unsafeEventName (toJSString "webkitfullscreenerror")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onfocusin Mozilla Element.onfocusin documentation> 
-focusin ::
-        (IsElement self, IsEventTarget self) => EventName self onfocusin
-focusin = unsafeEventName (toJSString "focusin")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onfocusout Mozilla Element.onfocusout documentation> 
-focusout ::
-         (IsElement self, IsEventTarget self) => EventName self onfocusout
-focusout = unsafeEventName (toJSString "focusout")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforeload Mozilla Element.onbeforeload documentation> 
-beforeload ::
-           (IsElement self, IsEventTarget self) => EventName self onbeforeload
-beforeload = unsafeEventName (toJSString "beforeload")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitneedkey Mozilla Element.onwebkitneedkey documentation> 
-webKitNeedKey ::
-              (IsElement self, IsEventTarget self) => EventName self Event
-webKitNeedKey = unsafeEventName (toJSString "webkitneedkey")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitpresentationmodechanged Mozilla Element.onwebkitpresentationmodechanged documentation> 
-webKitPresentationModeChanged ::
-                              (IsElement self, IsEventTarget self) => EventName self Event
-webKitPresentationModeChanged
-  = unsafeEventName (toJSString "webkitpresentationmodechanged")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitcurrentplaybacktargetiswirelesschanged Mozilla Element.onwebkitcurrentplaybacktargetiswirelesschanged documentation> 
-webKitCurrentPlaybackTargetIsWirelessChanged ::
-                                             (IsElement self, IsEventTarget self) =>
-                                               EventName self Event
-webKitCurrentPlaybackTargetIsWirelessChanged
-  = unsafeEventName
-      (toJSString "webkitcurrentplaybacktargetiswirelesschanged")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitplaybacktargetavailabilitychanged Mozilla Element.onwebkitplaybacktargetavailabilitychanged documentation> 
-webKitPlaybackTargetAvailabilityChanged ::
-                                        (IsElement self, IsEventTarget self) => EventName self Event
-webKitPlaybackTargetAvailabilityChanged
-  = unsafeEventName
-      (toJSString "webkitplaybacktargetavailabilitychanged")
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Element
+       (js_attachShadow, js_checkVisibility, js_closest, js_computedStyleMap, js_getAttribute, js_getAttributeNS, js_getAttributeNames, js_getAttributeNode, js_getAttributeNodeNS, js_getBoundingClientRect, js_getClientRects, js_getElementsByClassName, js_getElementsByTagName, js_getElementsByTagNameNS, js_getHTML, js_hasAttribute, js_hasAttributeNS, js_hasAttributes, js_hasPointerCapture, js_insertAdjacentElement, js_insertAdjacentHTML, js_insertAdjacentText, js_matches, js_releasePointerCapture, js_removeAttribute, js_removeAttributeNS, js_removeAttributeNode, js_requestFullscreen, js_requestPointerLock, js_requestPointerLock', js_scrollOpt, js_scroll, js_scrollByOpt, js_scrollBy, js_scrollIntoView, js_scrollToOpt, js_scrollTo, js_setAttribute, js_setAttributeNS, js_setAttributeNode, js_setAttributeNodeNS, js_setHTML, js_setHTMLUnsafe, js_setPointerCapture, js_toggleAttribute, js_webkitMatchesSelector, js_getNamespaceURI, js_getPrefix, js_getLocalName, js_getTagName, js_setId, js_getId, js_setClassName, js_getClassName, js_getClassList, js_setSlot, js_getSlot, js_getAttributes, js_getShadowRoot, js_getCustomElementRegistry, js_getPart, js_setScrollTop, js_getScrollTop, js_setScrollLeft, js_getScrollLeft, js_getScrollWidth, js_getScrollHeight, js_getClientTop, js_getClientLeft, js_getClientWidth, js_getClientHeight, js_getCurrentCSSZoom, js_setInnerHTML, js_getInnerHTML, js_setOuterHTML, js_getOuterHTML, attachShadow, attachShadow_, checkVisibility, checkVisibility_, closest, closest_, closestUnsafe, closestUnchecked, computedStyleMap, computedStyleMap_, getAttribute, getAttribute_, getAttributeUnsafe, getAttributeUnchecked, getAttributeNS, getAttributeNS_, getAttributeNSUnsafe, getAttributeNSUnchecked, getAttributeNames, getAttributeNames_, getAttributeNode, getAttributeNode_, getAttributeNodeUnsafe, getAttributeNodeUnchecked, getAttributeNodeNS, getAttributeNodeNS_, getAttributeNodeNSUnsafe, getAttributeNodeNSUnchecked, getBoundingClientRect, getBoundingClientRect_, getClientRects, getClientRects_, getElementsByClassName, getElementsByClassName_, getElementsByTagName, getElementsByTagName_, getElementsByTagNameNS, getElementsByTagNameNS_, getHTML, getHTML_, hasAttribute, hasAttribute_, hasAttributeNS, hasAttributeNS_, hasAttributes, hasAttributes_, hasPointerCapture, hasPointerCapture_, insertAdjacentElement, insertAdjacentElement_, insertAdjacentElementUnsafe, insertAdjacentElementUnchecked, insertAdjacentHTML, insertAdjacentText, matches, matches_, releasePointerCapture, removeAttribute, removeAttributeNS, removeAttributeNode, removeAttributeNode_, requestFullscreen, requestPointerLock, requestPointerLock', scrollOpt, scrollOpt_, scroll, scroll_, scrollByOpt, scrollByOpt_, scrollBy, scrollBy_, scrollIntoView, scrollIntoView_, scrollToOpt, scrollToOpt_, scrollTo, scrollTo_, setAttribute, setAttributeNS, setAttributeNode, setAttributeNode_, setAttributeNodeUnsafe, setAttributeNodeUnchecked, setAttributeNodeNS, setAttributeNodeNS_, setAttributeNodeNSUnsafe, setAttributeNodeNSUnchecked, setHTML, setHTMLUnsafe, setPointerCapture, toggleAttribute, toggleAttribute_, webkitMatchesSelector, webkitMatchesSelector_, getNamespaceURI, getNamespaceURIUnsafe, getNamespaceURIUnchecked, getPrefix, getPrefixUnsafe, getPrefixUnchecked, getLocalName, getTagName, setId, getId, setClassName, getClassName, getClassList, setSlot, getSlot, getAttributes, getShadowRoot, getShadowRootUnsafe, getShadowRootUnchecked, getCustomElementRegistry, getCustomElementRegistryUnsafe, getCustomElementRegistryUnchecked, getPart, setScrollTop, getScrollTop, setScrollLeft, getScrollLeft, getScrollWidth, getScrollHeight, getClientTop, getClientLeft, getClientWidth, getClientHeight, getCurrentCSSZoom, setInnerHTML, getInnerHTML, setOuterHTML, getOuterHTML, fullscreenchange, fullscreenerror, compositionend, compositionstart, compositionupdate, contentvisibilityautostatechange, domActivate, domFocusIn, domFocusOut, focusin, focusout, textInput, Element(..), gTypeElement, IsElement, toElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"attachShadow\"]($2); })"
+        js_attachShadow :: Element -> ShadowRootInit -> IO ShadowRoot
+-- | <https://developer.mozilla.org/docs/Web/API/Element/attachShadow MDN Element.attachShadow documentation>
+attachShadow :: (MonadDOM m, IsElement self) => self -> ShadowRootInit -> m ShadowRoot
+attachShadow self init = liftDOM ((js_attachShadow ((Types.toElement self)) (init)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/attachShadow MDN Element.attachShadow documentation>
+attachShadow_ :: (MonadDOM m, IsElement self) => self -> ShadowRootInit -> m ()
+attachShadow_ self init = liftDOM (void ((js_attachShadow ((Types.toElement self)) (init))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"checkVisibility\"]($2); })"
+        js_checkVisibility :: Element -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Element/checkVisibility MDN Element.checkVisibility documentation>
+checkVisibility :: (MonadDOM m, IsElement self) => self -> Maybe CheckVisibilityOptions -> m Bool
+checkVisibility self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_checkVisibility ((Types.toElement self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/checkVisibility MDN Element.checkVisibility documentation>
+checkVisibility_ :: (MonadDOM m, IsElement self) => self -> Maybe CheckVisibilityOptions -> m ()
+checkVisibility_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_checkVisibility ((Types.toElement self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"closest\"]($2); })"
+        js_closest :: Element -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/closest MDN Element.closest documentation>
+closest :: (MonadDOM m, IsElement self, ToJSString selectors) => self -> selectors -> m (Maybe Element)
+closest self selectors = liftDOM (((js_closest ((Types.toElement self)) (toJSString selectors)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/closest MDN Element.closest documentation>
+closest_ :: (MonadDOM m, IsElement self, ToJSString selectors) => self -> selectors -> m ()
+closest_ self selectors = liftDOM (void ((js_closest ((Types.toElement self)) (toJSString selectors))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/closest MDN Element.closest documentation>
+closestUnsafe :: (MonadDOM m, IsElement self, ToJSString selectors, HasCallStack) => self -> selectors -> m Element
+closestUnsafe self selectors = liftDOM ((((js_closest ((Types.toElement self)) (toJSString selectors)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/closest MDN Element.closest documentation>
+closestUnchecked :: (MonadDOM m, IsElement self, ToJSString selectors) => self -> selectors -> m Element
+closestUnchecked self selectors = liftDOM ((pFromJSVal <$> (js_closest ((Types.toElement self)) (toJSString selectors))))
+
+foreign import javascript safe "(($1) => { return $1[\"computedStyleMap\"](); })"
+        js_computedStyleMap :: Element -> IO StylePropertyMapReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/Element/computedStyleMap MDN Element.computedStyleMap documentation>
+computedStyleMap :: (MonadDOM m, IsElement self) => self -> m StylePropertyMapReadOnly
+computedStyleMap self = liftDOM ((js_computedStyleMap ((Types.toElement self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/computedStyleMap MDN Element.computedStyleMap documentation>
+computedStyleMap_ :: (MonadDOM m, IsElement self) => self -> m ()
+computedStyleMap_ self = liftDOM (void ((js_computedStyleMap ((Types.toElement self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getAttribute\"]($2); })"
+        js_getAttribute :: Element -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttribute MDN Element.getAttribute documentation>
+getAttribute :: (MonadDOM m, IsElement self, ToJSString qualifiedName, FromJSString result) => self -> qualifiedName -> m (Maybe result)
+getAttribute self qualifiedName = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAttribute ((Types.toElement self)) (toJSString qualifiedName))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttribute MDN Element.getAttribute documentation>
+getAttribute_ :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m ()
+getAttribute_ self qualifiedName = liftDOM (void ((js_getAttribute ((Types.toElement self)) (toJSString qualifiedName))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttribute MDN Element.getAttribute documentation>
+getAttributeUnsafe :: (MonadDOM m, IsElement self, ToJSString qualifiedName, HasCallStack, FromJSString result) => self -> qualifiedName -> m result
+getAttributeUnsafe self qualifiedName = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAttribute ((Types.toElement self)) (toJSString qualifiedName))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttribute MDN Element.getAttribute documentation>
+getAttributeUnchecked :: (MonadDOM m, IsElement self, ToJSString qualifiedName, FromJSString result) => self -> qualifiedName -> m result
+getAttributeUnchecked self qualifiedName = liftDOM ((pFromJSVal <$> (js_getAttribute ((Types.toElement self)) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAttributeNS\"]($2, $3); })"
+        js_getAttributeNS :: Element -> (Nullable JSString) -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNS MDN Element.getAttributeNS documentation>
+getAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, FromJSString result) => self -> Maybe namespace -> localName -> m (Maybe result)
+getAttributeNS self namespace localName = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNS MDN Element.getAttributeNS documentation>
+getAttributeNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()
+getAttributeNS_ self namespace localName = liftDOM (void ((js_getAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNS MDN Element.getAttributeNS documentation>
+getAttributeNSUnsafe :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, HasCallStack, FromJSString result) => self -> Maybe namespace -> localName -> m result
+getAttributeNSUnsafe self namespace localName = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNS MDN Element.getAttributeNS documentation>
+getAttributeNSUnchecked :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, FromJSString result) => self -> Maybe namespace -> localName -> m result
+getAttributeNSUnchecked self namespace localName = liftDOM ((pFromJSVal <$> (js_getAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+foreign import javascript safe "(($1) => { return $1[\"getAttributeNames\"](); })"
+        js_getAttributeNames :: Element -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNames MDN Element.getAttributeNames documentation>
+getAttributeNames :: (MonadDOM m, IsElement self, FromJSString result) => self -> m [result]
+getAttributeNames self = liftDOM (((js_getAttributeNames ((Types.toElement self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNames MDN Element.getAttributeNames documentation>
+getAttributeNames_ :: (MonadDOM m, IsElement self) => self -> m ()
+getAttributeNames_ self = liftDOM (void ((js_getAttributeNames ((Types.toElement self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getAttributeNode\"]($2); })"
+        js_getAttributeNode :: Element -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNode MDN Element.getAttributeNode documentation>
+getAttributeNode :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m (Maybe Attr)
+getAttributeNode self qualifiedName = liftDOM (((js_getAttributeNode ((Types.toElement self)) (toJSString qualifiedName)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNode MDN Element.getAttributeNode documentation>
+getAttributeNode_ :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m ()
+getAttributeNode_ self qualifiedName = liftDOM (void ((js_getAttributeNode ((Types.toElement self)) (toJSString qualifiedName))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNode MDN Element.getAttributeNode documentation>
+getAttributeNodeUnsafe :: (MonadDOM m, IsElement self, ToJSString qualifiedName, HasCallStack) => self -> qualifiedName -> m Attr
+getAttributeNodeUnsafe self qualifiedName = liftDOM ((((js_getAttributeNode ((Types.toElement self)) (toJSString qualifiedName)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNode MDN Element.getAttributeNode documentation>
+getAttributeNodeUnchecked :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m Attr
+getAttributeNodeUnchecked self qualifiedName = liftDOM ((pFromJSVal <$> (js_getAttributeNode ((Types.toElement self)) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAttributeNodeNS\"]($2, $3); })"
+        js_getAttributeNodeNS :: Element -> (Nullable JSString) -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNodeNS MDN Element.getAttributeNodeNS documentation>
+getAttributeNodeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m (Maybe Attr)
+getAttributeNodeNS self namespace localName = liftDOM (((js_getAttributeNodeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNodeNS MDN Element.getAttributeNodeNS documentation>
+getAttributeNodeNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()
+getAttributeNodeNS_ self namespace localName = liftDOM (void ((js_getAttributeNodeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNodeNS MDN Element.getAttributeNodeNS documentation>
+getAttributeNodeNSUnsafe :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, HasCallStack) => self -> Maybe namespace -> localName -> m Attr
+getAttributeNodeNSUnsafe self namespace localName = liftDOM ((((js_getAttributeNodeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAttributeNodeNS MDN Element.getAttributeNodeNS documentation>
+getAttributeNodeNSUnchecked :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m Attr
+getAttributeNodeNSUnchecked self namespace localName = liftDOM ((pFromJSVal <$> (js_getAttributeNodeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+foreign import javascript safe "(($1) => { return $1[\"getBoundingClientRect\"](); })"
+        js_getBoundingClientRect :: Element -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getBoundingClientRect MDN Element.getBoundingClientRect documentation>
+getBoundingClientRect :: (MonadDOM m, IsElement self) => self -> m DOMRect
+getBoundingClientRect self = liftDOM ((js_getBoundingClientRect ((Types.toElement self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getBoundingClientRect MDN Element.getBoundingClientRect documentation>
+getBoundingClientRect_ :: (MonadDOM m, IsElement self) => self -> m ()
+getBoundingClientRect_ self = liftDOM (void ((js_getBoundingClientRect ((Types.toElement self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"getClientRects\"](); })"
+        js_getClientRects :: Element -> IO DOMRectList
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getClientRects MDN Element.getClientRects documentation>
+getClientRects :: (MonadDOM m, IsElement self) => self -> m DOMRectList
+getClientRects self = liftDOM ((js_getClientRects ((Types.toElement self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getClientRects MDN Element.getClientRects documentation>
+getClientRects_ :: (MonadDOM m, IsElement self) => self -> m ()
+getClientRects_ self = liftDOM (void ((js_getClientRects ((Types.toElement self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getElementsByClassName\"]($2); })"
+        js_getElementsByClassName :: Element -> JSString -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getElementsByClassName MDN Element.getElementsByClassName documentation>
+getElementsByClassName :: (MonadDOM m, IsElement self, ToJSString classNames) => self -> classNames -> m HTMLCollection
+getElementsByClassName self classNames = liftDOM ((js_getElementsByClassName ((Types.toElement self)) (toJSString classNames)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getElementsByClassName MDN Element.getElementsByClassName documentation>
+getElementsByClassName_ :: (MonadDOM m, IsElement self, ToJSString classNames) => self -> classNames -> m ()
+getElementsByClassName_ self classNames = liftDOM (void ((js_getElementsByClassName ((Types.toElement self)) (toJSString classNames))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getElementsByTagName\"]($2); })"
+        js_getElementsByTagName :: Element -> JSString -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagName MDN Element.getElementsByTagName documentation>
+getElementsByTagName :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m HTMLCollection
+getElementsByTagName self qualifiedName = liftDOM ((js_getElementsByTagName ((Types.toElement self)) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagName MDN Element.getElementsByTagName documentation>
+getElementsByTagName_ :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m ()
+getElementsByTagName_ self qualifiedName = liftDOM (void ((js_getElementsByTagName ((Types.toElement self)) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getElementsByTagNameNS\"]($2, $3); })"
+        js_getElementsByTagNameNS :: Element -> (Nullable JSString) -> JSString -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagNameNS MDN Element.getElementsByTagNameNS documentation>
+getElementsByTagNameNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m HTMLCollection
+getElementsByTagNameNS self namespace localName = liftDOM ((js_getElementsByTagNameNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagNameNS MDN Element.getElementsByTagNameNS documentation>
+getElementsByTagNameNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()
+getElementsByTagNameNS_ self namespace localName = liftDOM (void ((js_getElementsByTagNameNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getHTML\"]($2); })"
+        js_getHTML :: Element -> JSVal -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getHTML MDN Element.getHTML documentation>
+getHTML :: (MonadDOM m, IsElement self, FromJSString result) => self -> Maybe GetHTMLOptions -> m result
+getHTML self options = liftDOM ((fromJSString <$> ((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getHTML ((Types.toElement self)) a2')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getHTML MDN Element.getHTML documentation>
+getHTML_ :: (MonadDOM m, IsElement self) => self -> Maybe GetHTMLOptions -> m ()
+getHTML_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getHTML ((Types.toElement self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"hasAttribute\"]($2); })"
+        js_hasAttribute :: Element -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttribute MDN Element.hasAttribute documentation>
+hasAttribute :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m Bool
+hasAttribute self qualifiedName = liftDOM ((js_hasAttribute ((Types.toElement self)) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttribute MDN Element.hasAttribute documentation>
+hasAttribute_ :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m ()
+hasAttribute_ self qualifiedName = liftDOM (void ((js_hasAttribute ((Types.toElement self)) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"hasAttributeNS\"]($2, $3); })"
+        js_hasAttributeNS :: Element -> (Nullable JSString) -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttributeNS MDN Element.hasAttributeNS documentation>
+hasAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m Bool
+hasAttributeNS self namespace localName = liftDOM ((js_hasAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttributeNS MDN Element.hasAttributeNS documentation>
+hasAttributeNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()
+hasAttributeNS_ self namespace localName = liftDOM (void ((js_hasAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+foreign import javascript safe "(($1) => { return $1[\"hasAttributes\"](); })"
+        js_hasAttributes :: Element -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttributes MDN Element.hasAttributes documentation>
+hasAttributes :: (MonadDOM m, IsElement self) => self -> m Bool
+hasAttributes self = liftDOM ((js_hasAttributes ((Types.toElement self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttributes MDN Element.hasAttributes documentation>
+hasAttributes_ :: (MonadDOM m, IsElement self) => self -> m ()
+hasAttributes_ self = liftDOM (void ((js_hasAttributes ((Types.toElement self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"hasPointerCapture\"]($2); })"
+        js_hasPointerCapture :: Element -> Int -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasPointerCapture MDN Element.hasPointerCapture documentation>
+hasPointerCapture :: (MonadDOM m, IsElement self) => self -> Int -> m Bool
+hasPointerCapture self pointerId = liftDOM ((js_hasPointerCapture ((Types.toElement self)) (pointerId)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasPointerCapture MDN Element.hasPointerCapture documentation>
+hasPointerCapture_ :: (MonadDOM m, IsElement self) => self -> Int -> m ()
+hasPointerCapture_ self pointerId = liftDOM (void ((js_hasPointerCapture ((Types.toElement self)) (pointerId))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertAdjacentElement\"]($2, $3); })"
+        js_insertAdjacentElement :: Element -> JSString -> Element -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentElement MDN Element.insertAdjacentElement documentation>
+insertAdjacentElement :: (MonadDOM m, IsElement self, ToJSString where', IsElement element) => self -> where' -> element -> m (Maybe Element)
+insertAdjacentElement self where' element = liftDOM (((js_insertAdjacentElement ((Types.toElement self)) (toJSString where') (Types.toElement element)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentElement MDN Element.insertAdjacentElement documentation>
+insertAdjacentElement_ :: (MonadDOM m, IsElement self, ToJSString where', IsElement element) => self -> where' -> element -> m ()
+insertAdjacentElement_ self where' element = liftDOM (void ((js_insertAdjacentElement ((Types.toElement self)) (toJSString where') (Types.toElement element))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentElement MDN Element.insertAdjacentElement documentation>
+insertAdjacentElementUnsafe :: (MonadDOM m, IsElement self, ToJSString where', IsElement element, HasCallStack) => self -> where' -> element -> m Element
+insertAdjacentElementUnsafe self where' element = liftDOM ((((js_insertAdjacentElement ((Types.toElement self)) (toJSString where') (Types.toElement element)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentElement MDN Element.insertAdjacentElement documentation>
+insertAdjacentElementUnchecked :: (MonadDOM m, IsElement self, ToJSString where', IsElement element) => self -> where' -> element -> m Element
+insertAdjacentElementUnchecked self where' element = liftDOM ((pFromJSVal <$> (js_insertAdjacentElement ((Types.toElement self)) (toJSString where') (Types.toElement element))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertAdjacentHTML\"]($2, $3); })"
+        js_insertAdjacentHTML :: Element -> JSString -> TrustedHTMLOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentHTML MDN Element.insertAdjacentHTML documentation>
+insertAdjacentHTML :: (MonadDOM m, IsElement self, ToJSString position, IsTrustedHTMLOrString string) => self -> position -> string -> m ()
+insertAdjacentHTML self position string = liftDOM (void ((js_insertAdjacentHTML ((Types.toElement self)) (toJSString position) (Types.toTrustedHTMLOrString string))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertAdjacentText\"]($2, $3); })"
+        js_insertAdjacentText :: Element -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentText MDN Element.insertAdjacentText documentation>
+insertAdjacentText :: (MonadDOM m, IsElement self, ToJSString where', ToJSString data') => self -> where' -> data' -> m ()
+insertAdjacentText self where' data' = liftDOM (void ((js_insertAdjacentText ((Types.toElement self)) (toJSString where') (toJSString data'))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"matches\"]($2); })"
+        js_matches :: Element -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Element/matches MDN Element.matches documentation>
+matches :: (MonadDOM m, IsElement self, ToJSString selectors) => self -> selectors -> m Bool
+matches self selectors = liftDOM ((js_matches ((Types.toElement self)) (toJSString selectors)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/matches MDN Element.matches documentation>
+matches_ :: (MonadDOM m, IsElement self, ToJSString selectors) => self -> selectors -> m ()
+matches_ self selectors = liftDOM (void ((js_matches ((Types.toElement self)) (toJSString selectors))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"releasePointerCapture\"]($2); })"
+        js_releasePointerCapture :: Element -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/releasePointerCapture MDN Element.releasePointerCapture documentation>
+releasePointerCapture :: (MonadDOM m, IsElement self) => self -> Int -> m ()
+releasePointerCapture self pointerId = liftDOM (void ((js_releasePointerCapture ((Types.toElement self)) (pointerId))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"removeAttribute\"]($2); })"
+        js_removeAttribute :: Element -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/removeAttribute MDN Element.removeAttribute documentation>
+removeAttribute :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> m ()
+removeAttribute self qualifiedName = liftDOM (void ((js_removeAttribute ((Types.toElement self)) (toJSString qualifiedName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"removeAttributeNS\"]($2, $3); })"
+        js_removeAttributeNS :: Element -> (Nullable JSString) -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/removeAttributeNS MDN Element.removeAttributeNS documentation>
+removeAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()
+removeAttributeNS self namespace localName = liftDOM (void ((js_removeAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString localName))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"removeAttributeNode\"]($2); })"
+        js_removeAttributeNode :: Element -> Attr -> IO Attr
+-- | <https://developer.mozilla.org/docs/Web/API/Element/removeAttributeNode MDN Element.removeAttributeNode documentation>
+removeAttributeNode :: (MonadDOM m, IsElement self) => self -> Attr -> m Attr
+removeAttributeNode self attr = liftDOM ((js_removeAttributeNode ((Types.toElement self)) (attr)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/removeAttributeNode MDN Element.removeAttributeNode documentation>
+removeAttributeNode_ :: (MonadDOM m, IsElement self) => self -> Attr -> m ()
+removeAttributeNode_ self attr = liftDOM (void ((js_removeAttributeNode ((Types.toElement self)) (attr))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"requestFullscreen\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestFullscreen :: Element -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Element/requestFullscreen MDN Element.requestFullscreen documentation>
+requestFullscreen :: (MonadDOM m, IsElement self) => self -> Maybe FullscreenOptions -> m ()
+requestFullscreen self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestFullscreen ((Types.toElement self)) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"requestPointerLock\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestPointerLock :: Element -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Element/requestPointerLock MDN Element.requestPointerLock documentation>
+requestPointerLock :: (MonadDOM m, IsElement self) => self -> m ()
+requestPointerLock self = liftDOM (void (((js_requestPointerLock ((Types.toElement self))) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"requestPointerLock\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestPointerLock' :: Element -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Element/requestPointerLock MDN Element.requestPointerLock documentation>
+requestPointerLock' :: (MonadDOM m, IsElement self) => self -> Maybe PointerLockOptions -> m ()
+requestPointerLock' self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestPointerLock' ((Types.toElement self)) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"scroll\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollOpt :: Element -> JSVal -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scroll MDN Element.scroll documentation>
+scrollOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ScrollResult
+scrollOpt self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollOpt ((Types.toElement self)) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scroll MDN Element.scroll documentation>
+scrollOpt_ :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ()
+scrollOpt_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollOpt ((Types.toElement self)) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"scroll\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scroll :: Element -> Double -> Double -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scroll MDN Element.scroll documentation>
+scroll :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ScrollResult
+scroll self x y = liftDOM (((js_scroll ((Types.toElement self)) (x) (y)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scroll MDN Element.scroll documentation>
+scroll_ :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()
+scroll_ self x y = liftDOM (void (((js_scroll ((Types.toElement self)) (x) (y)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"scrollBy\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollByOpt :: Element -> JSVal -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollBy MDN Element.scrollBy documentation>
+scrollByOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ScrollResult
+scrollByOpt self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollByOpt ((Types.toElement self)) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollBy MDN Element.scrollBy documentation>
+scrollByOpt_ :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ()
+scrollByOpt_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollByOpt ((Types.toElement self)) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"scrollBy\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollBy :: Element -> Double -> Double -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollBy MDN Element.scrollBy documentation>
+scrollBy :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ScrollResult
+scrollBy self x y = liftDOM (((js_scrollBy ((Types.toElement self)) (x) (y)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollBy MDN Element.scrollBy documentation>
+scrollBy_ :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()
+scrollBy_ self x y = liftDOM (void (((js_scrollBy ((Types.toElement self)) (x) (y)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"scrollIntoView\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollIntoView :: Element -> JSVal -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollIntoView MDN Element.scrollIntoView documentation>
+scrollIntoView :: (MonadDOM m, IsElement self, IsBoolOrScrollIntoViewOptions arg) => self -> Maybe arg -> m ScrollResult
+scrollIntoView self arg = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal arg) >>= \a2' -> js_scrollIntoView ((Types.toElement self)) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollIntoView MDN Element.scrollIntoView documentation>
+scrollIntoView_ :: (MonadDOM m, IsElement self, IsBoolOrScrollIntoViewOptions arg) => self -> Maybe arg -> m ()
+scrollIntoView_ self arg = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal arg) >>= \a2' -> js_scrollIntoView ((Types.toElement self)) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"scrollTo\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollToOpt :: Element -> JSVal -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollTo MDN Element.scrollTo documentation>
+scrollToOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ScrollResult
+scrollToOpt self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollToOpt ((Types.toElement self)) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollTo MDN Element.scrollTo documentation>
+scrollToOpt_ :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ()
+scrollToOpt_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollToOpt ((Types.toElement self)) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"scrollTo\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollTo :: Element -> Double -> Double -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollTo MDN Element.scrollTo documentation>
+scrollTo :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ScrollResult
+scrollTo self x y = liftDOM (((js_scrollTo ((Types.toElement self)) (x) (y)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollTo MDN Element.scrollTo documentation>
+scrollTo_ :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()
+scrollTo_ self x y = liftDOM (void (((js_scrollTo ((Types.toElement self)) (x) (y)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setAttribute\"]($2, $3); })"
+        js_setAttribute :: Element -> JSString -> TrustedTypeOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttribute MDN Element.setAttribute documentation>
+setAttribute :: (MonadDOM m, IsElement self, ToJSString qualifiedName, IsTrustedTypeOrString value) => self -> qualifiedName -> value -> m ()
+setAttribute self qualifiedName value = liftDOM (void ((js_setAttribute ((Types.toElement self)) (toJSString qualifiedName) (Types.toTrustedTypeOrString value))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setAttributeNS\"]($2, $3, $4); })"
+        js_setAttributeNS :: Element -> (Nullable JSString) -> JSString -> TrustedTypeOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNS MDN Element.setAttributeNS documentation>
+setAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString qualifiedName, IsTrustedTypeOrString value) => self -> Maybe namespace -> qualifiedName -> value -> m ()
+setAttributeNS self namespace qualifiedName value = liftDOM (void ((js_setAttributeNS ((Types.toElement self)) (toMaybeJSString namespace) (toJSString qualifiedName) (Types.toTrustedTypeOrString value))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setAttributeNode\"]($2); })"
+        js_setAttributeNode :: Element -> Attr -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNode MDN Element.setAttributeNode documentation>
+setAttributeNode :: (MonadDOM m, IsElement self) => self -> Attr -> m (Maybe Attr)
+setAttributeNode self attr = liftDOM (((js_setAttributeNode ((Types.toElement self)) (attr)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNode MDN Element.setAttributeNode documentation>
+setAttributeNode_ :: (MonadDOM m, IsElement self) => self -> Attr -> m ()
+setAttributeNode_ self attr = liftDOM (void ((js_setAttributeNode ((Types.toElement self)) (attr))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNode MDN Element.setAttributeNode documentation>
+setAttributeNodeUnsafe :: (MonadDOM m, IsElement self, HasCallStack) => self -> Attr -> m Attr
+setAttributeNodeUnsafe self attr = liftDOM ((((js_setAttributeNode ((Types.toElement self)) (attr)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNode MDN Element.setAttributeNode documentation>
+setAttributeNodeUnchecked :: (MonadDOM m, IsElement self) => self -> Attr -> m Attr
+setAttributeNodeUnchecked self attr = liftDOM ((pFromJSVal <$> (js_setAttributeNode ((Types.toElement self)) (attr))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setAttributeNodeNS\"]($2); })"
+        js_setAttributeNodeNS :: Element -> Attr -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNodeNS MDN Element.setAttributeNodeNS documentation>
+setAttributeNodeNS :: (MonadDOM m, IsElement self) => self -> Attr -> m (Maybe Attr)
+setAttributeNodeNS self attr = liftDOM (((js_setAttributeNodeNS ((Types.toElement self)) (attr)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNodeNS MDN Element.setAttributeNodeNS documentation>
+setAttributeNodeNS_ :: (MonadDOM m, IsElement self) => self -> Attr -> m ()
+setAttributeNodeNS_ self attr = liftDOM (void ((js_setAttributeNodeNS ((Types.toElement self)) (attr))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNodeNS MDN Element.setAttributeNodeNS documentation>
+setAttributeNodeNSUnsafe :: (MonadDOM m, IsElement self, HasCallStack) => self -> Attr -> m Attr
+setAttributeNodeNSUnsafe self attr = liftDOM ((((js_setAttributeNodeNS ((Types.toElement self)) (attr)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setAttributeNodeNS MDN Element.setAttributeNodeNS documentation>
+setAttributeNodeNSUnchecked :: (MonadDOM m, IsElement self) => self -> Attr -> m Attr
+setAttributeNodeNSUnchecked self attr = liftDOM ((pFromJSVal <$> (js_setAttributeNodeNS ((Types.toElement self)) (attr))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setHTML\"]($2, $3); })"
+        js_setHTML :: Element -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setHTML MDN Element.setHTML documentation>
+setHTML :: (MonadDOM m, IsElement self, ToJSString html) => self -> html -> Maybe SetHTMLOptions -> m ()
+setHTML self html options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_setHTML ((Types.toElement self)) (toJSString html) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setHTMLUnsafe\"]($2, $3); })"
+        js_setHTMLUnsafe :: Element -> TrustedHTMLOrString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setHTMLUnsafe MDN Element.setHTMLUnsafe documentation>
+setHTMLUnsafe :: (MonadDOM m, IsElement self, IsTrustedHTMLOrString html, IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions options) => self -> html -> Maybe options -> m ()
+setHTMLUnsafe self html options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_setHTMLUnsafe ((Types.toElement self)) (Types.toTrustedHTMLOrString html) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setPointerCapture\"]($2); })"
+        js_setPointerCapture :: Element -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/setPointerCapture MDN Element.setPointerCapture documentation>
+setPointerCapture :: (MonadDOM m, IsElement self) => self -> Int -> m ()
+setPointerCapture self pointerId = liftDOM (void ((js_setPointerCapture ((Types.toElement self)) (pointerId))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"toggleAttribute\"]($2, $3); })"
+        js_toggleAttribute :: Element -> JSString -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Element/toggleAttribute MDN Element.toggleAttribute documentation>
+toggleAttribute :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> Maybe Bool -> m Bool
+toggleAttribute self qualifiedName force = liftDOM (((P.maybe (P.return jsUndefined) toJSVal force) >>= \a3' -> js_toggleAttribute ((Types.toElement self)) (toJSString qualifiedName) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/toggleAttribute MDN Element.toggleAttribute documentation>
+toggleAttribute_ :: (MonadDOM m, IsElement self, ToJSString qualifiedName) => self -> qualifiedName -> Maybe Bool -> m ()
+toggleAttribute_ self qualifiedName force = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal force) >>= \a3' -> js_toggleAttribute ((Types.toElement self)) (toJSString qualifiedName) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"webkitMatchesSelector\"]($2); })"
+        js_webkitMatchesSelector :: Element -> JSString -> IO Bool
+-- | <https://dom.spec.whatwg.org/#dom-element-webkitmatchesselector Element.webkitMatchesSelector specification>
+webkitMatchesSelector :: (MonadDOM m, IsElement self, ToJSString selectors) => self -> selectors -> m Bool
+webkitMatchesSelector self selectors = liftDOM ((js_webkitMatchesSelector ((Types.toElement self)) (toJSString selectors)))
+
+-- | <https://dom.spec.whatwg.org/#dom-element-webkitmatchesselector Element.webkitMatchesSelector specification>
+webkitMatchesSelector_ :: (MonadDOM m, IsElement self, ToJSString selectors) => self -> selectors -> m ()
+webkitMatchesSelector_ self selectors = liftDOM (void ((js_webkitMatchesSelector ((Types.toElement self)) (toJSString selectors))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"namespaceURI\"]; })"
+        js_getNamespaceURI :: Element -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/namespaceURI MDN Element.namespaceURI documentation>
+getNamespaceURI :: (MonadDOM m, IsElement self, FromJSString result) => self -> m (Maybe result)
+getNamespaceURI self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNamespaceURI ((Types.toElement self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/namespaceURI MDN Element.namespaceURI documentation>
+getNamespaceURIUnsafe :: (MonadDOM m, IsElement self, HasCallStack, FromJSString result) => self -> m result
+getNamespaceURIUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNamespaceURI ((Types.toElement self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/namespaceURI MDN Element.namespaceURI documentation>
+getNamespaceURIUnchecked :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result
+getNamespaceURIUnchecked self = liftDOM ((pFromJSVal <$> (js_getNamespaceURI ((Types.toElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })"
+        js_getPrefix :: Element -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/prefix MDN Element.prefix documentation>
+getPrefix :: (MonadDOM m, IsElement self, FromJSString result) => self -> m (Maybe result)
+getPrefix self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPrefix ((Types.toElement self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/prefix MDN Element.prefix documentation>
+getPrefixUnsafe :: (MonadDOM m, IsElement self, HasCallStack, FromJSString result) => self -> m result
+getPrefixUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPrefix ((Types.toElement self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/prefix MDN Element.prefix documentation>
+getPrefixUnchecked :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result
+getPrefixUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrefix ((Types.toElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"localName\"]; })"
+        js_getLocalName :: Element -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/localName MDN Element.localName documentation>
+getLocalName :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result
+getLocalName self = liftDOM ((fromJSString <$> (js_getLocalName ((Types.toElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tagName\"]; })"
+        js_getTagName :: Element -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/tagName MDN Element.tagName documentation>
+getTagName :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result
+getTagName self = liftDOM ((fromJSString <$> (js_getTagName ((Types.toElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: Element -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/id MDN Element.id documentation>
+setId :: (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
+setId self val = liftDOM (void ((js_setId ((Types.toElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: Element -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/id MDN Element.id documentation>
+getId :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"className\"] = $2; })"
+        js_setClassName :: Element -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/className MDN Element.className documentation>
+setClassName :: (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
+setClassName self val = liftDOM (void ((js_setClassName ((Types.toElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"className\"]; })"
+        js_getClassName :: Element -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/className MDN Element.className documentation>
+getClassName :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result
+getClassName self = liftDOM ((fromJSString <$> (js_getClassName ((Types.toElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"classList\"]; })"
+        js_getClassList :: Element -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/Element/classList MDN Element.classList documentation>
+getClassList :: (MonadDOM m, IsElement self) => self -> m DOMTokenList
+getClassList self = liftDOM ((js_getClassList ((Types.toElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"slot\"] = $2; })"
+        js_setSlot :: Element -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/slot MDN Element.slot documentation>
+setSlot :: (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
+setSlot self val = liftDOM (void ((js_setSlot ((Types.toElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"slot\"]; })"
+        js_getSlot :: Element -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/slot MDN Element.slot documentation>
+getSlot :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result
+getSlot self = liftDOM ((fromJSString <$> (js_getSlot ((Types.toElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributes\"]; })"
+        js_getAttributes :: Element -> IO NamedNodeMap
+-- | <https://developer.mozilla.org/docs/Web/API/Element/attributes MDN Element.attributes documentation>
+getAttributes :: (MonadDOM m, IsElement self) => self -> m NamedNodeMap
+getAttributes self = liftDOM ((js_getAttributes ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRoot\"]; })"
+        js_getShadowRoot :: Element -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/shadowRoot MDN Element.shadowRoot documentation>
+getShadowRoot :: (MonadDOM m, IsElement self) => self -> m (Maybe ShadowRoot)
+getShadowRoot self = liftDOM (((js_getShadowRoot ((Types.toElement self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/shadowRoot MDN Element.shadowRoot documentation>
+getShadowRootUnsafe :: (MonadDOM m, IsElement self, HasCallStack) => self -> m ShadowRoot
+getShadowRootUnsafe self = liftDOM ((((js_getShadowRoot ((Types.toElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/shadowRoot MDN Element.shadowRoot documentation>
+getShadowRootUnchecked :: (MonadDOM m, IsElement self) => self -> m ShadowRoot
+getShadowRootUnchecked self = liftDOM ((pFromJSVal <$> (js_getShadowRoot ((Types.toElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"customElementRegistry\"]; })"
+        js_getCustomElementRegistry :: Element -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/customElementRegistry MDN Element.customElementRegistry documentation>
+getCustomElementRegistry :: (MonadDOM m, IsElement self) => self -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((js_getCustomElementRegistry ((Types.toElement self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/customElementRegistry MDN Element.customElementRegistry documentation>
+getCustomElementRegistryUnsafe :: (MonadDOM m, IsElement self, HasCallStack) => self -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((js_getCustomElementRegistry ((Types.toElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/customElementRegistry MDN Element.customElementRegistry documentation>
+getCustomElementRegistryUnchecked :: (MonadDOM m, IsElement self) => self -> m CustomElementRegistry
+getCustomElementRegistryUnchecked self = liftDOM ((pFromJSVal <$> (js_getCustomElementRegistry ((Types.toElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"part\"]; })"
+        js_getPart :: Element -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/Element/part MDN Element.part documentation>
+getPart :: (MonadDOM m, IsElement self) => self -> m DOMTokenList
+getPart self = liftDOM ((js_getPart ((Types.toElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scrollTop\"] = $2; })"
+        js_setScrollTop :: Element -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollTop MDN Element.scrollTop documentation>
+setScrollTop :: (MonadDOM m, IsElement self) => self -> Double -> m ()
+setScrollTop self val = liftDOM (void ((js_setScrollTop ((Types.toElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollTop\"]; })"
+        js_getScrollTop :: Element -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollTop MDN Element.scrollTop documentation>
+getScrollTop :: (MonadDOM m, IsElement self) => self -> m Double
+getScrollTop self = liftDOM ((js_getScrollTop ((Types.toElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scrollLeft\"] = $2; })"
+        js_setScrollLeft :: Element -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollLeft MDN Element.scrollLeft documentation>
+setScrollLeft :: (MonadDOM m, IsElement self) => self -> Double -> m ()
+setScrollLeft self val = liftDOM (void ((js_setScrollLeft ((Types.toElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollLeft\"]; })"
+        js_getScrollLeft :: Element -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollLeft MDN Element.scrollLeft documentation>
+getScrollLeft :: (MonadDOM m, IsElement self) => self -> m Double
+getScrollLeft self = liftDOM ((js_getScrollLeft ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollWidth\"]; })"
+        js_getScrollWidth :: Element -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollWidth MDN Element.scrollWidth documentation>
+getScrollWidth :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollWidth self = liftDOM ((js_getScrollWidth ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollHeight\"]; })"
+        js_getScrollHeight :: Element -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollHeight MDN Element.scrollHeight documentation>
+getScrollHeight :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollHeight self = liftDOM ((js_getScrollHeight ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientTop\"]; })"
+        js_getClientTop :: Element -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientTop MDN Element.clientTop documentation>
+getClientTop :: (MonadDOM m, IsElement self) => self -> m Int
+getClientTop self = liftDOM ((js_getClientTop ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientLeft\"]; })"
+        js_getClientLeft :: Element -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientLeft MDN Element.clientLeft documentation>
+getClientLeft :: (MonadDOM m, IsElement self) => self -> m Int
+getClientLeft self = liftDOM ((js_getClientLeft ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientWidth\"]; })"
+        js_getClientWidth :: Element -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientWidth MDN Element.clientWidth documentation>
+getClientWidth :: (MonadDOM m, IsElement self) => self -> m Int
+getClientWidth self = liftDOM ((js_getClientWidth ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientHeight\"]; })"
+        js_getClientHeight :: Element -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientHeight MDN Element.clientHeight documentation>
+getClientHeight :: (MonadDOM m, IsElement self) => self -> m Int
+getClientHeight self = liftDOM ((js_getClientHeight ((Types.toElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentCSSZoom\"]; })"
+        js_getCurrentCSSZoom :: Element -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Element/currentCSSZoom MDN Element.currentCSSZoom documentation>
+getCurrentCSSZoom :: (MonadDOM m, IsElement self) => self -> m Double
+getCurrentCSSZoom self = liftDOM ((js_getCurrentCSSZoom ((Types.toElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"innerHTML\"] = $2; })"
+        js_setInnerHTML :: Element -> TrustedHTMLOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/innerHTML MDN Element.innerHTML documentation>
+setInnerHTML :: (MonadDOM m, IsElement self, IsTrustedHTMLOrString val) => self -> val -> m ()
+setInnerHTML self val = liftDOM (void ((js_setInnerHTML ((Types.toElement self)) (Types.toTrustedHTMLOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"innerHTML\"]; })"
+        js_getInnerHTML :: Element -> IO TrustedHTMLOrString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/innerHTML MDN Element.innerHTML documentation>
+getInnerHTML :: (MonadDOM m, IsElement self) => self -> m TrustedHTMLOrString
+getInnerHTML self = liftDOM ((js_getInnerHTML ((Types.toElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"outerHTML\"] = $2; })"
+        js_setOuterHTML :: Element -> TrustedHTMLOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Element/outerHTML MDN Element.outerHTML documentation>
+setOuterHTML :: (MonadDOM m, IsElement self, IsTrustedHTMLOrString val) => self -> val -> m ()
+setOuterHTML self val = liftDOM (void ((js_setOuterHTML ((Types.toElement self)) (Types.toTrustedHTMLOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outerHTML\"]; })"
+        js_getOuterHTML :: Element -> IO TrustedHTMLOrString
+-- | <https://developer.mozilla.org/docs/Web/API/Element/outerHTML MDN Element.outerHTML documentation>
+getOuterHTML :: (MonadDOM m, IsElement self) => self -> m TrustedHTMLOrString
+getOuterHTML self = liftDOM ((js_getOuterHTML ((Types.toElement self))))
+
+-- | <https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenchange fullscreenchange event>
+fullscreenchange :: (IsElement self, IsEventTarget self) => EventName self Event
+fullscreenchange = unsafeEventName (toJSString "fullscreenchange")
+
+-- | <https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenerror fullscreenerror event>
+fullscreenerror :: (IsElement self, IsEventTarget self) => EventName self Event
+fullscreenerror = unsafeEventName (toJSString "fullscreenerror")
+
+-- | <https://w3c.github.io/uievents/#compositionend compositionend event>
+compositionend :: (IsElement self, IsEventTarget self) => EventName self CompositionEvent
+compositionend = unsafeEventName (toJSString "compositionend")
+
+-- | <https://w3c.github.io/uievents/#compositionstart compositionstart event>
+compositionstart :: (IsElement self, IsEventTarget self) => EventName self CompositionEvent
+compositionstart = unsafeEventName (toJSString "compositionstart")
+
+-- | <https://w3c.github.io/uievents/#compositionupdate compositionupdate event>
+compositionupdate :: (IsElement self, IsEventTarget self) => EventName self CompositionEvent
+compositionupdate = unsafeEventName (toJSString "compositionupdate")
+
+-- | <https://drafts.csswg.org/css-contain-2/#eventdef-element-contentvisibilityautostatechange contentvisibilityautostatechange event>
+contentvisibilityautostatechange :: (IsElement self, IsEventTarget self) => EventName self ContentVisibilityAutoStateChangeEvent
+contentvisibilityautostatechange = unsafeEventName (toJSString "contentvisibilityautostatechange")
+
+-- | <https://w3c.github.io/uievents/#domactivate DOMActivate event>
+domActivate :: (IsElement self, IsEventTarget self) => EventName self UIEvent
+domActivate = unsafeEventName (toJSString "DOMActivate")
+
+-- | <https://w3c.github.io/uievents/#domfocusin DOMFocusIn event>
+domFocusIn :: (IsElement self, IsEventTarget self) => EventName self FocusEvent
+domFocusIn = unsafeEventName (toJSString "DOMFocusIn")
+
+-- | <https://w3c.github.io/uievents/#domfocusout DOMFocusOut event>
+domFocusOut :: (IsElement self, IsEventTarget self) => EventName self FocusEvent
+domFocusOut = unsafeEventName (toJSString "DOMFocusOut")
+
+-- | <https://w3c.github.io/uievents/#focusin focusin event>
+focusin :: (IsElement self, IsEventTarget self) => EventName self FocusEvent
+focusin = unsafeEventName (toJSString "focusin")
+
+-- | <https://w3c.github.io/uievents/#focusout focusout event>
+focusout :: (IsElement self, IsEventTarget self) => EventName self FocusEvent
+focusout = unsafeEventName (toJSString "focusout")
+
+-- | <https://w3c.github.io/uievents/#textinput textInput event>
+textInput :: (IsElement self, IsEventTarget self) => EventName self TextEvent
+textInput = unsafeEventName (toJSString "textInput")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs b/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
@@ -1,37 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle
-       (js_getStyle, getStyle, ElementCSSInlineStyle(..),
-        gTypeElementCSSInlineStyle, IsElementCSSInlineStyle,
-        toElementCSSInlineStyle)
+       (js_getStyle, js_getAttributeStyleMap, getStyle, getAttributeStyleMap, ElementCSSInlineStyle(..), gTypeElementCSSInlineStyle, IsElementCSSInlineStyle, toElementCSSInlineStyle)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
-        ElementCSSInlineStyle -> IO CSSStyleDeclaration
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle.style Mozilla ElementCSSInlineStyle.style documentation> 
-getStyle ::
-         (MonadIO m, IsElementCSSInlineStyle self) =>
-           self -> m CSSStyleDeclaration
-getStyle self = liftIO (js_getStyle (toElementCSSInlineStyle self))
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: ElementCSSInlineStyle -> IO CSSStyleProperties
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/style MDN ElementCSSInlineStyle.style documentation>
+getStyle :: (MonadDOM m, IsElementCSSInlineStyle self) => self -> m CSSStyleProperties
+getStyle self = liftDOM ((js_getStyle ((Types.toElementCSSInlineStyle self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributeStyleMap\"]; })"
+        js_getAttributeStyleMap :: ElementCSSInlineStyle -> IO StylePropertyMap
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/attributeStyleMap MDN ElementCSSInlineStyle.attributeStyleMap documentation>
+getAttributeStyleMap :: (MonadDOM m, IsElementCSSInlineStyle self) => self -> m StylePropertyMap
+getAttributeStyleMap self = liftDOM ((js_getAttributeStyleMap ((Types.toElementCSSInlineStyle self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ElementContentEditable.hs b/src/GHCJS/DOM/JSFFI/Generated/ElementContentEditable.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ElementContentEditable.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ElementContentEditable
+       (js_setContentEditable, js_getContentEditable, js_setEnterKeyHint, js_getEnterKeyHint, js_getIsContentEditable, js_setInputMode, js_getInputMode, setContentEditable, getContentEditable, setEnterKeyHint, getEnterKeyHint, getIsContentEditable, setInputMode, getInputMode, ElementContentEditable(..), gTypeElementContentEditable, IsElementContentEditable, toElementContentEditable)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"contentEditable\"] = $2; })"
+        js_setContentEditable :: ElementContentEditable -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/contentEditable MDN ElementContentEditable.contentEditable documentation>
+setContentEditable :: (MonadDOM m, IsElementContentEditable self, ToJSString val) => self -> val -> m ()
+setContentEditable self val = liftDOM (void ((js_setContentEditable ((Types.toElementContentEditable self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentEditable\"]; })"
+        js_getContentEditable :: ElementContentEditable -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/contentEditable MDN ElementContentEditable.contentEditable documentation>
+getContentEditable :: (MonadDOM m, IsElementContentEditable self, FromJSString result) => self -> m result
+getContentEditable self = liftDOM ((fromJSString <$> (js_getContentEditable ((Types.toElementContentEditable self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"enterKeyHint\"] = $2; })"
+        js_setEnterKeyHint :: ElementContentEditable -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/enterKeyHint MDN ElementContentEditable.enterKeyHint documentation>
+setEnterKeyHint :: (MonadDOM m, IsElementContentEditable self, ToJSString val) => self -> val -> m ()
+setEnterKeyHint self val = liftDOM (void ((js_setEnterKeyHint ((Types.toElementContentEditable self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"enterKeyHint\"]; })"
+        js_getEnterKeyHint :: ElementContentEditable -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/enterKeyHint MDN ElementContentEditable.enterKeyHint documentation>
+getEnterKeyHint :: (MonadDOM m, IsElementContentEditable self, FromJSString result) => self -> m result
+getEnterKeyHint self = liftDOM ((fromJSString <$> (js_getEnterKeyHint ((Types.toElementContentEditable self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isContentEditable\"]; })"
+        js_getIsContentEditable :: ElementContentEditable -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/isContentEditable MDN ElementContentEditable.isContentEditable documentation>
+getIsContentEditable :: (MonadDOM m, IsElementContentEditable self) => self -> m Bool
+getIsContentEditable self = liftDOM ((js_getIsContentEditable ((Types.toElementContentEditable self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inputMode\"] = $2; })"
+        js_setInputMode :: ElementContentEditable -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/inputMode MDN ElementContentEditable.inputMode documentation>
+setInputMode :: (MonadDOM m, IsElementContentEditable self, ToJSString val) => self -> val -> m ()
+setInputMode self val = liftDOM (void ((js_setInputMode ((Types.toElementContentEditable self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inputMode\"]; })"
+        js_getInputMode :: ElementContentEditable -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/inputMode MDN ElementContentEditable.inputMode documentation>
+getInputMode :: (MonadDOM m, IsElementContentEditable self, FromJSString result) => self -> m result
+getInputMode self = liftDOM ((fromJSString <$> (js_getInputMode ((Types.toElementContentEditable self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ElementCreationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ElementCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ElementCreationOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ElementCreationOptions
+       (js_newElementCreationOptions, js_setCustomElementRegistry, js_getCustomElementRegistry, js_setIs, js_getIs, newElementCreationOptions, setCustomElementRegistry, getCustomElementRegistry, getCustomElementRegistryUnsafe, getCustomElementRegistryUnchecked, setIs, getIs, getIsUnsafe, getIsUnchecked, ElementCreationOptions(..), gTypeElementCreationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newElementCreationOptions :: IO ElementCreationOptions
+-- | <https://dom.spec.whatwg.org/#dictdef-elementcreationoptions ElementCreationOptions specification>
+newElementCreationOptions :: (MonadDOM m) => m ElementCreationOptions
+newElementCreationOptions = liftDOM ((js_newElementCreationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"customElementRegistry\"] = $2; })"
+        js_setCustomElementRegistry :: ElementCreationOptions -> JSVal -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-customelementregistry ElementCreationOptions.customElementRegistry specification>
+setCustomElementRegistry :: (MonadDOM m) => ElementCreationOptions -> Maybe CustomElementRegistry -> m ()
+setCustomElementRegistry self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCustomElementRegistry (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"customElementRegistry\"]; })"
+        js_getCustomElementRegistry :: ElementCreationOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-customelementregistry ElementCreationOptions.customElementRegistry specification>
+getCustomElementRegistry :: (MonadDOM m) => ElementCreationOptions -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((js_getCustomElementRegistry (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-customelementregistry ElementCreationOptions.customElementRegistry specification>
+getCustomElementRegistryUnsafe :: (MonadDOM m, HasCallStack) => ElementCreationOptions -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((js_getCustomElementRegistry (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-customelementregistry ElementCreationOptions.customElementRegistry specification>
+getCustomElementRegistryUnchecked :: (MonadDOM m) => ElementCreationOptions -> m CustomElementRegistry
+getCustomElementRegistryUnchecked self = liftDOM ((pFromJSVal <$> (js_getCustomElementRegistry (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"is\"] = $2; })"
+        js_setIs :: ElementCreationOptions -> JSString -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-is ElementCreationOptions.is specification>
+setIs :: (MonadDOM m, ToJSString val) => ElementCreationOptions -> val -> m ()
+setIs self val = liftDOM (void ((js_setIs (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"is\"]; })"
+        js_getIs :: ElementCreationOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-is ElementCreationOptions.is specification>
+getIs :: (MonadDOM m, FromJSString result) => ElementCreationOptions -> m (Maybe result)
+getIs self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getIs (self))))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-is ElementCreationOptions.is specification>
+getIsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ElementCreationOptions -> m result
+getIsUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getIs (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-is ElementCreationOptions.is specification>
+getIsUnchecked :: (MonadDOM m, FromJSString result) => ElementCreationOptions -> m result
+getIsUnchecked self = liftDOM ((pFromJSVal <$> (js_getIs (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ElementDefinitionOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ElementDefinitionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ElementDefinitionOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ElementDefinitionOptions
+       (js_newElementDefinitionOptions, js_setExtends, js_getExtends, newElementDefinitionOptions, setExtends, getExtends, getExtendsUnsafe, getExtendsUnchecked, ElementDefinitionOptions(..), gTypeElementDefinitionOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newElementDefinitionOptions :: IO ElementDefinitionOptions
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#elementdefinitionoptions ElementDefinitionOptions specification>
+newElementDefinitionOptions :: (MonadDOM m) => m ElementDefinitionOptions
+newElementDefinitionOptions = liftDOM ((js_newElementDefinitionOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"extends\"] = $2; })"
+        js_setExtends :: ElementDefinitionOptions -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#dom-elementdefinitionoptions-extends ElementDefinitionOptions.extends specification>
+setExtends :: (MonadDOM m, ToJSString val) => ElementDefinitionOptions -> val -> m ()
+setExtends self val = liftDOM (void ((js_setExtends (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"extends\"]; })"
+        js_getExtends :: ElementDefinitionOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#dom-elementdefinitionoptions-extends ElementDefinitionOptions.extends specification>
+getExtends :: (MonadDOM m, FromJSString result) => ElementDefinitionOptions -> m (Maybe result)
+getExtends self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getExtends (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#dom-elementdefinitionoptions-extends ElementDefinitionOptions.extends specification>
+getExtendsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ElementDefinitionOptions -> m result
+getExtendsUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getExtends (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#dom-elementdefinitionoptions-extends ElementDefinitionOptions.extends specification>
+getExtendsUnchecked :: (MonadDOM m, FromJSString result) => ElementDefinitionOptions -> m result
+getExtendsUnchecked self = liftDOM ((pFromJSVal <$> (js_getExtends (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ElementInternals.hs b/src/GHCJS/DOM/JSFFI/Generated/ElementInternals.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ElementInternals.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ElementInternals
+       (js_checkValidity, js_reportValidity, js_setFormValue, js_setValidity, js_getShadowRoot, js_getForm, js_getWillValidate, js_getValidity, js_getValidationMessage, js_getLabels, js_getStates, checkValidity, checkValidity_, reportValidity, reportValidity_, setFormValue, setValidity, getShadowRoot, getShadowRootUnsafe, getShadowRootUnchecked, getForm, getFormUnsafe, getFormUnchecked, getWillValidate, getValidity, getValidationMessage, getLabels, getStates, ElementInternals(..), gTypeElementInternals)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: ElementInternals -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity MDN ElementInternals.checkValidity documentation>
+checkValidity :: (MonadDOM m) => ElementInternals -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity MDN ElementInternals.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => ElementInternals -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: ElementInternals -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity MDN ElementInternals.reportValidity documentation>
+reportValidity :: (MonadDOM m) => ElementInternals -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity MDN ElementInternals.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => ElementInternals -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setFormValue\"]($2, $3); })"
+        js_setFormValue :: ElementInternals -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue MDN ElementInternals.setFormValue documentation>
+setFormValue :: (MonadDOM m, IsFileOrStringOrFormData value, IsFileOrStringOrFormData state) => ElementInternals -> Maybe value -> Maybe state -> m ()
+setFormValue self value state = liftDOM (void (((toJSVal value) >>= \a2' -> (toJSVal state) >>= \a3' -> js_setFormValue (self) a2' a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setValidity\"]($2, $3, $4); })"
+        js_setValidity :: ElementInternals -> JSVal -> (Optional JSString) -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/setValidity MDN ElementInternals.setValidity documentation>
+setValidity :: (MonadDOM m, ToJSString message, IsHTMLElement anchor) => ElementInternals -> Maybe ValidityStateFlags -> Maybe message -> Maybe anchor -> m ()
+setValidity self flags message anchor = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal flags) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal anchor) >>= \a4' -> js_setValidity (self) a2' (toOptionalJSString message) a4')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRoot\"]; })"
+        js_getShadowRoot :: ElementInternals -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/shadowRoot MDN ElementInternals.shadowRoot documentation>
+getShadowRoot :: (MonadDOM m) => ElementInternals -> m (Maybe ShadowRoot)
+getShadowRoot self = liftDOM (((js_getShadowRoot (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/shadowRoot MDN ElementInternals.shadowRoot documentation>
+getShadowRootUnsafe :: (MonadDOM m, HasCallStack) => ElementInternals -> m ShadowRoot
+getShadowRootUnsafe self = liftDOM ((((js_getShadowRoot (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/shadowRoot MDN ElementInternals.shadowRoot documentation>
+getShadowRootUnchecked :: (MonadDOM m) => ElementInternals -> m ShadowRoot
+getShadowRootUnchecked self = liftDOM ((pFromJSVal <$> (js_getShadowRoot (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: ElementInternals -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/form MDN ElementInternals.form documentation>
+getForm :: (MonadDOM m) => ElementInternals -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/form MDN ElementInternals.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => ElementInternals -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/form MDN ElementInternals.form documentation>
+getFormUnchecked :: (MonadDOM m) => ElementInternals -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
+        js_getWillValidate :: ElementInternals -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate MDN ElementInternals.willValidate documentation>
+getWillValidate :: (MonadDOM m) => ElementInternals -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: ElementInternals -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/validity MDN ElementInternals.validity documentation>
+getValidity :: (MonadDOM m) => ElementInternals -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: ElementInternals -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage MDN ElementInternals.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => ElementInternals -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: ElementInternals -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/labels MDN ElementInternals.labels documentation>
+getLabels :: (MonadDOM m) => ElementInternals -> m NodeList
+getLabels self = liftDOM ((js_getLabels (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"states\"]; })"
+        js_getStates :: ElementInternals -> IO CustomStateSet
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/states MDN ElementInternals.states documentation>
+getStates :: (MonadDOM m) => ElementInternals -> m CustomStateSet
+getStates self = liftDOM ((js_getStates (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunk.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunk.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunk.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedAudioChunk
+       (js_newEncodedAudioChunk, js_copyTo, js_getType, js_getTimestamp, js_getDuration, js_getByteLength, newEncodedAudioChunk, copyTo, getType, getTimestamp, getDuration, getDurationUnsafe, getDurationUnchecked, getByteLength, EncodedAudioChunk(..), gTypeEncodedAudioChunk)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"EncodedAudioChunk\"]($1); })"
+        js_newEncodedAudioChunk :: EncodedAudioChunkInit -> IO EncodedAudioChunk
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/EncodedAudioChunk MDN EncodedAudioChunk. documentation>
+newEncodedAudioChunk :: (MonadDOM m) => EncodedAudioChunkInit -> m EncodedAudioChunk
+newEncodedAudioChunk init = liftDOM ((js_newEncodedAudioChunk (init)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"copyTo\"]($2); })"
+        js_copyTo :: EncodedAudioChunk -> AllowSharedBufferSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/copyTo MDN EncodedAudioChunk.copyTo documentation>
+copyTo :: (MonadDOM m, IsAllowSharedBufferSource destination) => EncodedAudioChunk -> destination -> m ()
+copyTo self destination = liftDOM (void ((js_copyTo (self) (Types.toAllowSharedBufferSource destination))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: EncodedAudioChunk -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/type MDN EncodedAudioChunk.type documentation>
+getType :: (MonadDOM m) => EncodedAudioChunk -> m EncodedAudioChunkType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: EncodedAudioChunk -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/timestamp MDN EncodedAudioChunk.timestamp documentation>
+getTimestamp :: (MonadDOM m) => EncodedAudioChunk -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: EncodedAudioChunk -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/duration MDN EncodedAudioChunk.duration documentation>
+getDuration :: (MonadDOM m) => EncodedAudioChunk -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/duration MDN EncodedAudioChunk.duration documentation>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunk -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/duration MDN EncodedAudioChunk.duration documentation>
+getDurationUnchecked :: (MonadDOM m) => EncodedAudioChunk -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"byteLength\"]; })"
+        js_getByteLength :: EncodedAudioChunk -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/byteLength MDN EncodedAudioChunk.byteLength documentation>
+getByteLength :: (MonadDOM m) => EncodedAudioChunk -> m Word
+getByteLength self = liftDOM ((js_getByteLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkInit.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkInit.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkInit
+       (js_newEncodedAudioChunkInit, js_setType, js_getType, js_setTimestamp, js_getTimestamp, js_setDuration, js_getDuration, js_setData, js_getData, js_setTransfer, js_getTransfer, newEncodedAudioChunkInit, setType, getType, setTimestamp, getTimestamp, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setData, getData, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, EncodedAudioChunkInit(..), gTypeEncodedAudioChunkInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"type\": $1, \"timestamp\": $2, \"data\": $3}); })"
+        js_newEncodedAudioChunkInit :: JSVal -> JSVal -> AllowSharedBufferSource -> IO EncodedAudioChunkInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedaudiochunkinit EncodedAudioChunkInit specification>
+newEncodedAudioChunkInit :: (MonadDOM m, IsAllowSharedBufferSource data') => EncodedAudioChunkType -> Int53 -> data' -> m EncodedAudioChunkInit
+newEncodedAudioChunkInit type' timestamp data' = liftDOM (((toJSVal type') >>= \a1' -> (toJSVal timestamp) >>= \a2' -> js_newEncodedAudioChunkInit a1' a2' (Types.toAllowSharedBufferSource data')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: EncodedAudioChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-type EncodedAudioChunkInit.type specification>
+setType :: (MonadDOM m) => EncodedAudioChunkInit -> EncodedAudioChunkType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: EncodedAudioChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-type EncodedAudioChunkInit.type specification>
+getType :: (MonadDOM m) => EncodedAudioChunkInit -> m EncodedAudioChunkType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: EncodedAudioChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-timestamp EncodedAudioChunkInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => EncodedAudioChunkInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimestamp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: EncodedAudioChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-timestamp EncodedAudioChunkInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => EncodedAudioChunkInit -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: EncodedAudioChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-duration EncodedAudioChunkInit.duration specification>
+setDuration :: (MonadDOM m) => EncodedAudioChunkInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDuration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: EncodedAudioChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-duration EncodedAudioChunkInit.duration specification>
+getDuration :: (MonadDOM m) => EncodedAudioChunkInit -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-duration EncodedAudioChunkInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunkInit -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-duration EncodedAudioChunkInit.duration specification>
+getDurationUnchecked :: (MonadDOM m) => EncodedAudioChunkInit -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: EncodedAudioChunkInit -> AllowSharedBufferSource -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-data EncodedAudioChunkInit.data specification>
+setData :: (MonadDOM m, IsAllowSharedBufferSource val) => EncodedAudioChunkInit -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toAllowSharedBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: EncodedAudioChunkInit -> IO AllowSharedBufferSource
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-data EncodedAudioChunkInit.data specification>
+getData :: (MonadDOM m) => EncodedAudioChunkInit -> m AllowSharedBufferSource
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transfer\"] = $2; })"
+        js_setTransfer :: EncodedAudioChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-transfer EncodedAudioChunkInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => EncodedAudioChunkInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: EncodedAudioChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-transfer EncodedAudioChunkInit.transfer specification>
+getTransfer :: (MonadDOM m) => EncodedAudioChunkInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-transfer EncodedAudioChunkInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunkInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((js_getTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-transfer EncodedAudioChunkInit.transfer specification>
+getTransferUnchecked :: (MonadDOM m) => EncodedAudioChunkInit -> m [ArrayBuffer]
+getTransferUnchecked self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkMetadata.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkMetadata
+       (js_newEncodedAudioChunkMetadata, js_setDecoderConfig, js_getDecoderConfig, newEncodedAudioChunkMetadata, setDecoderConfig, getDecoderConfig, getDecoderConfigUnsafe, getDecoderConfigUnchecked, EncodedAudioChunkMetadata(..), gTypeEncodedAudioChunkMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newEncodedAudioChunkMetadata :: IO EncodedAudioChunkMetadata
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedaudiochunkmetadata EncodedAudioChunkMetadata specification>
+newEncodedAudioChunkMetadata :: (MonadDOM m) => m EncodedAudioChunkMetadata
+newEncodedAudioChunkMetadata = liftDOM ((js_newEncodedAudioChunkMetadata))
+
+foreign import javascript safe "(($1, $2) => { $1[\"decoderConfig\"] = $2; })"
+        js_setDecoderConfig :: EncodedAudioChunkMetadata -> AudioDecoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkmetadata-decoderconfig EncodedAudioChunkMetadata.decoderConfig specification>
+setDecoderConfig :: (MonadDOM m) => EncodedAudioChunkMetadata -> AudioDecoderConfig -> m ()
+setDecoderConfig self val = liftDOM (void ((js_setDecoderConfig (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"decoderConfig\"]; })"
+        js_getDecoderConfig :: EncodedAudioChunkMetadata -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkmetadata-decoderconfig EncodedAudioChunkMetadata.decoderConfig specification>
+getDecoderConfig :: (MonadDOM m) => EncodedAudioChunkMetadata -> m (Maybe AudioDecoderConfig)
+getDecoderConfig self = liftDOM (((js_getDecoderConfig (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkmetadata-decoderconfig EncodedAudioChunkMetadata.decoderConfig specification>
+getDecoderConfigUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunkMetadata -> m AudioDecoderConfig
+getDecoderConfigUnsafe self = liftDOM ((((js_getDecoderConfig (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkmetadata-decoderconfig EncodedAudioChunkMetadata.decoderConfig specification>
+getDecoderConfigUnchecked :: (MonadDOM m) => EncodedAudioChunkMetadata -> m AudioDecoderConfig
+getDecoderConfigUnchecked self = liftDOM ((pFromJSVal <$> (js_getDecoderConfig (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkOutputCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedAudioChunkOutputCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedAudioChunkOutputCallback
+       (newEncodedAudioChunkOutputCallback, newEncodedAudioChunkOutputCallbackSync, newEncodedAudioChunkOutputCallbackAsync, EncodedAudioChunkOutputCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newEncodedAudioChunkOutputCallback :: (MonadDOM m) => (EncodedAudioChunk -> EncodedAudioChunkMetadata -> IO ()) -> m EncodedAudioChunkOutputCallback
+newEncodedAudioChunkOutputCallback callback = liftDOM ((EncodedAudioChunkOutputCallback . coerce) <$> syncCallback2 ContinueAsync (\ output metadata -> do
+          output' <- fromJSValUnchecked output
+          metadata' <- fromJSValUnchecked metadata
+          callback output' metadata'))
+
+newEncodedAudioChunkOutputCallbackSync :: (MonadDOM m) => (EncodedAudioChunk -> EncodedAudioChunkMetadata -> IO ()) -> m EncodedAudioChunkOutputCallback
+newEncodedAudioChunkOutputCallbackSync callback = liftDOM ((EncodedAudioChunkOutputCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ output metadata -> do
+          output' <- fromJSValUnchecked output
+          metadata' <- fromJSValUnchecked metadata
+          callback output' metadata'))
+
+newEncodedAudioChunkOutputCallbackAsync :: (MonadDOM m) => (EncodedAudioChunk -> EncodedAudioChunkMetadata -> IO ()) -> m EncodedAudioChunkOutputCallback
+newEncodedAudioChunkOutputCallbackAsync callback = liftDOM ((EncodedAudioChunkOutputCallback . coerce) <$> asyncCallback2 (\ output metadata -> do
+          output' <- fromJSValUnchecked output
+          metadata' <- fromJSValUnchecked metadata
+          callback output' metadata'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunk.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunk.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunk.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedVideoChunk
+       (js_newEncodedVideoChunk, js_copyTo, js_getType, js_getTimestamp, js_getDuration, js_getByteLength, newEncodedVideoChunk, copyTo, getType, getTimestamp, getDuration, getDurationUnsafe, getDurationUnchecked, getByteLength, EncodedVideoChunk(..), gTypeEncodedVideoChunk)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"EncodedVideoChunk\"]($1); })"
+        js_newEncodedVideoChunk :: EncodedVideoChunkInit -> IO EncodedVideoChunk
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/EncodedVideoChunk MDN EncodedVideoChunk. documentation>
+newEncodedVideoChunk :: (MonadDOM m) => EncodedVideoChunkInit -> m EncodedVideoChunk
+newEncodedVideoChunk init = liftDOM ((js_newEncodedVideoChunk (init)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"copyTo\"]($2); })"
+        js_copyTo :: EncodedVideoChunk -> AllowSharedBufferSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/copyTo MDN EncodedVideoChunk.copyTo documentation>
+copyTo :: (MonadDOM m, IsAllowSharedBufferSource destination) => EncodedVideoChunk -> destination -> m ()
+copyTo self destination = liftDOM (void ((js_copyTo (self) (Types.toAllowSharedBufferSource destination))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: EncodedVideoChunk -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/type MDN EncodedVideoChunk.type documentation>
+getType :: (MonadDOM m) => EncodedVideoChunk -> m EncodedVideoChunkType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: EncodedVideoChunk -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/timestamp MDN EncodedVideoChunk.timestamp documentation>
+getTimestamp :: (MonadDOM m) => EncodedVideoChunk -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: EncodedVideoChunk -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/duration MDN EncodedVideoChunk.duration documentation>
+getDuration :: (MonadDOM m) => EncodedVideoChunk -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/duration MDN EncodedVideoChunk.duration documentation>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunk -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/duration MDN EncodedVideoChunk.duration documentation>
+getDurationUnchecked :: (MonadDOM m) => EncodedVideoChunk -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"byteLength\"]; })"
+        js_getByteLength :: EncodedVideoChunk -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/byteLength MDN EncodedVideoChunk.byteLength documentation>
+getByteLength :: (MonadDOM m) => EncodedVideoChunk -> m Word
+getByteLength self = liftDOM ((js_getByteLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkInit.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkInit.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkInit
+       (js_newEncodedVideoChunkInit, js_setType, js_getType, js_setTimestamp, js_getTimestamp, js_setDuration, js_getDuration, js_setData, js_getData, js_setTransfer, js_getTransfer, newEncodedVideoChunkInit, setType, getType, setTimestamp, getTimestamp, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setData, getData, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, EncodedVideoChunkInit(..), gTypeEncodedVideoChunkInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"type\": $1, \"timestamp\": $2, \"data\": $3}); })"
+        js_newEncodedVideoChunkInit :: JSVal -> JSVal -> AllowSharedBufferSource -> IO EncodedVideoChunkInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedvideochunkinit EncodedVideoChunkInit specification>
+newEncodedVideoChunkInit :: (MonadDOM m, IsAllowSharedBufferSource data') => EncodedVideoChunkType -> Int53 -> data' -> m EncodedVideoChunkInit
+newEncodedVideoChunkInit type' timestamp data' = liftDOM (((toJSVal type') >>= \a1' -> (toJSVal timestamp) >>= \a2' -> js_newEncodedVideoChunkInit a1' a2' (Types.toAllowSharedBufferSource data')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: EncodedVideoChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-type EncodedVideoChunkInit.type specification>
+setType :: (MonadDOM m) => EncodedVideoChunkInit -> EncodedVideoChunkType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: EncodedVideoChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-type EncodedVideoChunkInit.type specification>
+getType :: (MonadDOM m) => EncodedVideoChunkInit -> m EncodedVideoChunkType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: EncodedVideoChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-timestamp EncodedVideoChunkInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => EncodedVideoChunkInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimestamp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: EncodedVideoChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-timestamp EncodedVideoChunkInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => EncodedVideoChunkInit -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: EncodedVideoChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-duration EncodedVideoChunkInit.duration specification>
+setDuration :: (MonadDOM m) => EncodedVideoChunkInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDuration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: EncodedVideoChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-duration EncodedVideoChunkInit.duration specification>
+getDuration :: (MonadDOM m) => EncodedVideoChunkInit -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-duration EncodedVideoChunkInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkInit -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-duration EncodedVideoChunkInit.duration specification>
+getDurationUnchecked :: (MonadDOM m) => EncodedVideoChunkInit -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: EncodedVideoChunkInit -> AllowSharedBufferSource -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-data EncodedVideoChunkInit.data specification>
+setData :: (MonadDOM m, IsAllowSharedBufferSource val) => EncodedVideoChunkInit -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toAllowSharedBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: EncodedVideoChunkInit -> IO AllowSharedBufferSource
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-data EncodedVideoChunkInit.data specification>
+getData :: (MonadDOM m) => EncodedVideoChunkInit -> m AllowSharedBufferSource
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transfer\"] = $2; })"
+        js_setTransfer :: EncodedVideoChunkInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-transfer EncodedVideoChunkInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => EncodedVideoChunkInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: EncodedVideoChunkInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-transfer EncodedVideoChunkInit.transfer specification>
+getTransfer :: (MonadDOM m) => EncodedVideoChunkInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-transfer EncodedVideoChunkInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((js_getTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-transfer EncodedVideoChunkInit.transfer specification>
+getTransferUnchecked :: (MonadDOM m) => EncodedVideoChunkInit -> m [ArrayBuffer]
+getTransferUnchecked self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkMetadata.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkMetadata
+       (js_newEncodedVideoChunkMetadata, js_setDecoderConfig, js_getDecoderConfig, js_setSvc, js_getSvc, js_setAlphaSideData, js_getAlphaSideData, newEncodedVideoChunkMetadata, setDecoderConfig, getDecoderConfig, getDecoderConfigUnsafe, getDecoderConfigUnchecked, setSvc, getSvc, getSvcUnsafe, getSvcUnchecked, setAlphaSideData, getAlphaSideData, getAlphaSideDataUnsafe, getAlphaSideDataUnchecked, EncodedVideoChunkMetadata(..), gTypeEncodedVideoChunkMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newEncodedVideoChunkMetadata :: IO EncodedVideoChunkMetadata
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedvideochunkmetadata EncodedVideoChunkMetadata specification>
+newEncodedVideoChunkMetadata :: (MonadDOM m) => m EncodedVideoChunkMetadata
+newEncodedVideoChunkMetadata = liftDOM ((js_newEncodedVideoChunkMetadata))
+
+foreign import javascript safe "(($1, $2) => { $1[\"decoderConfig\"] = $2; })"
+        js_setDecoderConfig :: EncodedVideoChunkMetadata -> VideoDecoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-decoderconfig EncodedVideoChunkMetadata.decoderConfig specification>
+setDecoderConfig :: (MonadDOM m) => EncodedVideoChunkMetadata -> VideoDecoderConfig -> m ()
+setDecoderConfig self val = liftDOM (void ((js_setDecoderConfig (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"decoderConfig\"]; })"
+        js_getDecoderConfig :: EncodedVideoChunkMetadata -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-decoderconfig EncodedVideoChunkMetadata.decoderConfig specification>
+getDecoderConfig :: (MonadDOM m) => EncodedVideoChunkMetadata -> m (Maybe VideoDecoderConfig)
+getDecoderConfig self = liftDOM (((js_getDecoderConfig (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-decoderconfig EncodedVideoChunkMetadata.decoderConfig specification>
+getDecoderConfigUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkMetadata -> m VideoDecoderConfig
+getDecoderConfigUnsafe self = liftDOM ((((js_getDecoderConfig (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-decoderconfig EncodedVideoChunkMetadata.decoderConfig specification>
+getDecoderConfigUnchecked :: (MonadDOM m) => EncodedVideoChunkMetadata -> m VideoDecoderConfig
+getDecoderConfigUnchecked self = liftDOM ((pFromJSVal <$> (js_getDecoderConfig (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"svc\"] = $2; })"
+        js_setSvc :: EncodedVideoChunkMetadata -> SvcOutputMetadata -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-svc EncodedVideoChunkMetadata.svc specification>
+setSvc :: (MonadDOM m) => EncodedVideoChunkMetadata -> SvcOutputMetadata -> m ()
+setSvc self val = liftDOM (void ((js_setSvc (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"svc\"]; })"
+        js_getSvc :: EncodedVideoChunkMetadata -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-svc EncodedVideoChunkMetadata.svc specification>
+getSvc :: (MonadDOM m) => EncodedVideoChunkMetadata -> m (Maybe SvcOutputMetadata)
+getSvc self = liftDOM (((js_getSvc (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-svc EncodedVideoChunkMetadata.svc specification>
+getSvcUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkMetadata -> m SvcOutputMetadata
+getSvcUnsafe self = liftDOM ((((js_getSvc (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-svc EncodedVideoChunkMetadata.svc specification>
+getSvcUnchecked :: (MonadDOM m) => EncodedVideoChunkMetadata -> m SvcOutputMetadata
+getSvcUnchecked self = liftDOM ((pFromJSVal <$> (js_getSvc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alphaSideData\"] = $2; })"
+        js_setAlphaSideData :: EncodedVideoChunkMetadata -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-alphasidedata EncodedVideoChunkMetadata.alphaSideData specification>
+setAlphaSideData :: (MonadDOM m, IsBufferSource val) => EncodedVideoChunkMetadata -> val -> m ()
+setAlphaSideData self val = liftDOM (void ((js_setAlphaSideData (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alphaSideData\"]; })"
+        js_getAlphaSideData :: EncodedVideoChunkMetadata -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-alphasidedata EncodedVideoChunkMetadata.alphaSideData specification>
+getAlphaSideData :: (MonadDOM m) => EncodedVideoChunkMetadata -> m (Maybe BufferSource)
+getAlphaSideData self = liftDOM (((js_getAlphaSideData (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-alphasidedata EncodedVideoChunkMetadata.alphaSideData specification>
+getAlphaSideDataUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkMetadata -> m BufferSource
+getAlphaSideDataUnsafe self = liftDOM ((((js_getAlphaSideData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-alphasidedata EncodedVideoChunkMetadata.alphaSideData specification>
+getAlphaSideDataUnchecked :: (MonadDOM m) => EncodedVideoChunkMetadata -> m BufferSource
+getAlphaSideDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlphaSideData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkOutputCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EncodedVideoChunkOutputCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EncodedVideoChunkOutputCallback
+       (newEncodedVideoChunkOutputCallback, newEncodedVideoChunkOutputCallbackSync, newEncodedVideoChunkOutputCallbackAsync, EncodedVideoChunkOutputCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newEncodedVideoChunkOutputCallback :: (MonadDOM m) => (EncodedVideoChunk -> EncodedVideoChunkMetadata -> IO ()) -> m EncodedVideoChunkOutputCallback
+newEncodedVideoChunkOutputCallback callback = liftDOM ((EncodedVideoChunkOutputCallback . coerce) <$> syncCallback2 ContinueAsync (\ chunk metadata -> do
+          chunk' <- fromJSValUnchecked chunk
+          metadata' <- fromJSValUnchecked metadata
+          callback chunk' metadata'))
+
+newEncodedVideoChunkOutputCallbackSync :: (MonadDOM m) => (EncodedVideoChunk -> EncodedVideoChunkMetadata -> IO ()) -> m EncodedVideoChunkOutputCallback
+newEncodedVideoChunkOutputCallbackSync callback = liftDOM ((EncodedVideoChunkOutputCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ chunk metadata -> do
+          chunk' <- fromJSValUnchecked chunk
+          metadata' <- fromJSValUnchecked metadata
+          callback chunk' metadata'))
+
+newEncodedVideoChunkOutputCallbackAsync :: (MonadDOM m) => (EncodedVideoChunk -> EncodedVideoChunkMetadata -> IO ()) -> m EncodedVideoChunkOutputCallback
+newEncodedVideoChunkOutputCallbackAsync callback = liftDOM ((EncodedVideoChunkOutputCallback . coerce) <$> asyncCallback2 (\ chunk metadata -> do
+          chunk' <- fromJSValUnchecked chunk
+          metadata' <- fromJSValUnchecked metadata
+          callback chunk' metadata'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Enums.hs b/src/GHCJS/DOM/JSFFI/Generated/Enums.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Enums.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Enums.hs
@@ -1,4535 +1,9229 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Enums
-       (KeyType(..), PToJSVal, ToJSVal, PFromJSVal, FromJSVal,
-        js_KeyTypePublic, js_KeyTypePrivate, js_KeyTypeSecret,
-        CryptoKeyUsage(..), js_CryptoKeyUsageEncrypt,
-        js_CryptoKeyUsageDecrypt, js_CryptoKeyUsageSign,
-        js_CryptoKeyUsageVerify, js_CryptoKeyUsageDeriveKey,
-        js_CryptoKeyUsageDeriveBits, js_CryptoKeyUsageWrapKey,
-        js_CryptoKeyUsageUnwrapKey, KeyFormat(..), js_KeyFormatRaw,
-        js_KeyFormatSpki, js_KeyFormatPkcs8, js_KeyFormatJwk,
-        FontFaceLoadStatus(..), js_FontFaceLoadStatusUnloaded,
-        js_FontFaceLoadStatusLoading, js_FontFaceLoadStatusLoaded,
-        js_FontFaceLoadStatusError, FontFaceSetLoadStatus(..),
-        js_FontFaceSetLoadStatusLoading, js_FontFaceSetLoadStatusLoaded,
-        VisibilityState(..), js_VisibilityStateHidden,
-        js_VisibilityStateVisible, js_VisibilityStatePrerender,
-        DocumentReadyState(..), js_DocumentReadyStateLoading,
-        js_DocumentReadyStateInteractive, js_DocumentReadyStateComplete,
-        ShadowRootMode(..), js_ShadowRootModeUserAgent,
-        js_ShadowRootModeClosed, js_ShadowRootModeOpen,
-        BlobLineEndings(..), js_BlobLineEndingsTransparent,
-        js_BlobLineEndingsNative, ImageSmoothingQuality(..),
-        js_ImageSmoothingQualityLow, js_ImageSmoothingQualityMedium,
-        js_ImageSmoothingQualityHigh, CanvasWindingRule(..),
-        js_CanvasWindingRuleNonzero, js_CanvasWindingRuleEvenodd,
-        WebGLPowerPreference(..), js_WebGLPowerPreferenceDefault,
-        js_WebGLPowerPreferenceLowPower,
-        js_WebGLPowerPreferenceHighPerformance, WebGPUCompareFunction(..),
-        js_WebGPUCompareFunctionNever, js_WebGPUCompareFunctionLess,
-        js_WebGPUCompareFunctionEqual, js_WebGPUCompareFunctionLessequal,
-        js_WebGPUCompareFunctionGreater, js_WebGPUCompareFunctionNotequal,
-        js_WebGPUCompareFunctionGreaterequal,
-        js_WebGPUCompareFunctionAlways, WebGPUPixelFormat(..),
-        js_WebGPUPixelFormatBGRA8Unorm, WebGPULoadAction(..),
-        js_WebGPULoadActionDontcare, js_WebGPULoadActionLoad,
-        js_WebGPULoadActionClear, WebGPUStoreAction(..),
-        js_WebGPUStoreActionDontcare, js_WebGPUStoreActionStore,
-        js_WebGPUStoreActionMultisampleresolve, WebGPUPrimitiveType(..),
-        js_WebGPUPrimitiveTypePoint, js_WebGPUPrimitiveTypeLine,
-        js_WebGPUPrimitiveTypeLinestrip, js_WebGPUPrimitiveTypeTriangle,
-        js_WebGPUPrimitiveTypeTrianglestrip, WebGPUFunctionType(..),
-        js_WebGPUFunctionTypeFragment, js_WebGPUFunctionTypeVertex,
-        WebGPUStencilOperation(..), js_WebGPUStencilOperationKeep,
-        js_WebGPUStencilOperationZero, js_WebGPUStencilOperationReplace,
-        js_WebGPUStencilOperationIncrementclamp,
-        js_WebGPUStencilOperationDecrementclamp,
-        js_WebGPUStencilOperationInvert,
-        js_WebGPUStencilOperationIncrementwrap,
-        js_WebGPUStencilOperationDecrementwrap, WebGPUStatus(..),
-        js_WebGPUStatusNotenqueued, js_WebGPUStatusEnqueued,
-        js_WebGPUStatusCommitted, js_WebGPUStatusScheduled,
-        js_WebGPUStatusCompleted, js_WebGPUStatusError,
-        WebGPUSamplerAddressMode(..),
-        js_WebGPUSamplerAddressModeClamptoedge,
-        js_WebGPUSamplerAddressModeMirrorclamptoedge,
-        js_WebGPUSamplerAddressModeRepeat,
-        js_WebGPUSamplerAddressModeMirrorrepeat,
-        js_WebGPUSamplerAddressModeClamptozero,
-        WebGPUSamplerMinMagFilter(..), js_WebGPUSamplerMinMagFilterNearest,
-        js_WebGPUSamplerMinMagFilterLinear, WebGPUSamplerMipFilter(..),
-        js_WebGPUSamplerMipFilterNotmipmapped,
-        js_WebGPUSamplerMipFilterNearest, js_WebGPUSamplerMipFilterLinear,
-        WebGPUCullMode(..), js_WebGPUCullModeNone, js_WebGPUCullModeFront,
-        js_WebGPUCullModeBack, WebGPUIndexType(..),
-        js_WebGPUIndexTypeUint16, js_WebGPUIndexTypeUint32,
-        WebGPUVisibilityResultMode(..),
-        js_WebGPUVisibilityResultModeDisabled,
-        js_WebGPUVisibilityResultModeBoolean,
-        js_WebGPUVisibilityResultModeCounting, WebGPUWinding(..),
-        js_WebGPUWindingClockwise, js_WebGPUWindingCounterclockwise,
-        WebGPUDepthClipMode(..), js_WebGPUDepthClipModeClip,
-        js_WebGPUDepthClipModeClamp, WebGPUTriangleFillMode(..),
-        js_WebGPUTriangleFillModeFill, js_WebGPUTriangleFillModeLines,
-        WebGPUCPUCacheMode(..), js_WebGPUCPUCacheModeDefaultcache,
-        js_WebGPUCPUCacheModeWritecombined, WebGPUStorageMode(..),
-        js_WebGPUStorageModeShared, js_WebGPUStorageModeManaged,
-        js_WebGPUStorageModePrivate, WebGPUResourceOptions(..),
-        js_WebGPUResourceOptionsCpucachemodedefaultcache,
-        js_WebGPUResourceOptionsCpucachemodewritecombined,
-        js_WebGPUResourceOptionsStoragemodeshared,
-        js_WebGPUResourceOptionsStoragemodemanaged,
-        js_WebGPUResourceOptionsStoragemodeprivate,
-        js_WebGPUResourceOptionsOptioncpucachemodedefaultcache,
-        js_WebGPUResourceOptionsOptioncpucachemodewritecombined,
-        WebGPUTextureUsage(..), js_WebGPUTextureUsageUnknown,
-        js_WebGPUTextureUsageShaderread, js_WebGPUTextureUsageShaderwrite,
-        js_WebGPUTextureUsageRendertarget,
-        js_WebGPUTextureUsagePixelformatview, WebGPUBlendOperation(..),
-        js_WebGPUBlendOperationAdd, js_WebGPUBlendOperationSubtract,
-        js_WebGPUBlendOperationReversesubtract, js_WebGPUBlendOperationMin,
-        js_WebGPUBlendOperationMax, WebGPUBlendFactor(..),
-        js_WebGPUBlendFactorZero, js_WebGPUBlendFactorOne,
-        js_WebGPUBlendFactorSourcecolor,
-        js_WebGPUBlendFactorOneminussourcecolor,
-        js_WebGPUBlendFactorSourcealpha,
-        js_WebGPUBlendFactorOneminussourcealpha,
-        js_WebGPUBlendFactorDestinationcolor,
-        js_WebGPUBlendFactorOneminusdestinationcolor,
-        js_WebGPUBlendFactorDestinationalpha,
-        js_WebGPUBlendFactorOneminusdestinationalpha,
-        js_WebGPUBlendFactorSourcealphasaturated,
-        js_WebGPUBlendFactorBlendcolor,
-        js_WebGPUBlendFactorOneminusblendcolor,
-        js_WebGPUBlendFactorBlendalpha,
-        js_WebGPUBlendFactorOneminusblendalpha, WebGPUColorWriteMask(..),
-        js_WebGPUColorWriteMaskNone, js_WebGPUColorWriteMaskRed,
-        js_WebGPUColorWriteMaskGreen, js_WebGPUColorWriteMaskBlue,
-        js_WebGPUColorWriteMaskAlpha, js_WebGPUColorWriteMaskAll,
-        WebGPUMultisampleDepthResolveFilter(..),
-        js_WebGPUMultisampleDepthResolveFilterSample0,
-        js_WebGPUMultisampleDepthResolveFilterMin,
-        js_WebGPUMultisampleDepthResolveFilterMax, WebGPUFeatureSet(..),
-        js_WebGPUFeatureSetLevel1, js_WebGPUFeatureSetLevel2,
-        VideoPresentationMode(..), js_VideoPresentationModeFullscreen,
-        js_VideoPresentationModePictureInPicture,
-        js_VideoPresentationModeInline, TextTrackMode(..),
-        js_TextTrackModeDisabled, js_TextTrackModeHidden,
-        js_TextTrackModeShowing, TextTrackKind(..),
-        js_TextTrackKindSubtitles, js_TextTrackKindCaptions,
-        js_TextTrackKindDescriptions, js_TextTrackKindChapters,
-        js_TextTrackKindMetadata, js_TextTrackKindForced,
-        ApplePayErrorCode(..), js_ApplePayErrorCodeUnknown,
-        js_ApplePayErrorCodeShippingContactInvalid,
-        js_ApplePayErrorCodeBillingContactInvalid,
-        js_ApplePayErrorCodeAddressUnservicable,
-        ApplePayErrorContactField(..),
-        js_ApplePayErrorContactFieldPhoneNumber,
-        js_ApplePayErrorContactFieldEmailAddress,
-        js_ApplePayErrorContactFieldName,
-        js_ApplePayErrorContactFieldPostalAddress,
-        js_ApplePayErrorContactFieldAddressLines,
-        js_ApplePayErrorContactFieldLocality,
-        js_ApplePayErrorContactFieldPostalCode,
-        js_ApplePayErrorContactFieldAdministrativeArea,
-        js_ApplePayErrorContactFieldCountry, ApplePayLineItemType(..),
-        js_ApplePayLineItemTypePending, js_ApplePayLineItemTypeFinal,
-        ApplePayPaymentMethodType(..), js_ApplePayPaymentMethodTypeDebit,
-        js_ApplePayPaymentMethodTypeCredit,
-        js_ApplePayPaymentMethodTypePrepaid,
-        js_ApplePayPaymentMethodTypeStore,
-        ApplePayPaymentPassActivationState(..),
-        js_ApplePayPaymentPassActivationStateActivated,
-        js_ApplePayPaymentPassActivationStateRequiresActivation,
-        js_ApplePayPaymentPassActivationStateActivating,
-        js_ApplePayPaymentPassActivationStateSuspended,
-        js_ApplePayPaymentPassActivationStateDeactivated,
-        ApplePayMerchantCapability(..),
-        js_ApplePayMerchantCapabilitySupports3DS,
-        js_ApplePayMerchantCapabilitySupportsEMV,
-        js_ApplePayMerchantCapabilitySupportsCredit,
-        js_ApplePayMerchantCapabilitySupportsDebit,
-        ApplePayContactField(..), js_ApplePayContactFieldEmail,
-        js_ApplePayContactFieldName, js_ApplePayContactFieldPhone,
-        js_ApplePayContactFieldPostalAddress, ApplePayShippingType(..),
-        js_ApplePayShippingTypeShipping, js_ApplePayShippingTypeDelivery,
-        js_ApplePayShippingTypeStorePickup,
-        js_ApplePayShippingTypeServicePickup, MediaKeyMessageType(..),
-        js_MediaKeyMessageTypeLicenseRequest,
-        js_MediaKeyMessageTypeLicenseRenewal,
-        js_MediaKeyMessageTypeLicenseRelease,
-        js_MediaKeyMessageTypeIndividualizationRequest,
-        MediaKeySessionType(..), js_MediaKeySessionTypeTemporary,
-        js_MediaKeySessionTypePersistentUsageRecord,
-        js_MediaKeySessionTypePersistentLicense, MediaKeysRequirement(..),
-        js_MediaKeysRequirementRequired, js_MediaKeysRequirementOptional,
-        js_MediaKeysRequirementNotAllowed, MediaKeyStatus(..),
-        js_MediaKeyStatusUsable, js_MediaKeyStatusExpired,
-        js_MediaKeyStatusReleased, js_MediaKeyStatusOutputRestricted,
-        js_MediaKeyStatusOutputDownscaled, js_MediaKeyStatusStatusPending,
-        js_MediaKeyStatusInternalError, RequestType(..), js_RequestType,
-        js_RequestTypeAudio, js_RequestTypeFont, js_RequestTypeImage,
-        js_RequestTypeScript, js_RequestTypeStyle, js_RequestTypeTrack,
-        js_RequestTypeVideo, RequestDestination(..), js_RequestDestination,
-        js_RequestDestinationDocument, js_RequestDestinationSharedworker,
-        js_RequestDestinationSubresource, js_RequestDestinationUnknown,
-        js_RequestDestinationWorker, RequestMode(..),
-        js_RequestModeNavigate, js_RequestModeSameOrigin,
-        js_RequestModeNoCors, js_RequestModeCors, RequestCredentials(..),
-        js_RequestCredentialsOmit, js_RequestCredentialsSameOrigin,
-        js_RequestCredentialsInclude, RequestCache(..),
-        js_RequestCacheDefault, js_RequestCacheNoStore,
-        js_RequestCacheReload, js_RequestCacheNoCache,
-        js_RequestCacheForceCache, js_RequestCacheOnlyIfCached,
-        RequestRedirect(..), js_RequestRedirectFollow,
-        js_RequestRedirectError, js_RequestRedirectManual,
-        ReferrerPolicy(..), js_ReferrerPolicy, js_ReferrerPolicyNoReferrer,
-        js_ReferrerPolicyNoReferrerWhenDowngrade, js_ReferrerPolicyOrigin,
-        js_ReferrerPolicyOriginWhenCrossOrigin, js_ReferrerPolicyUnsafeUrl,
-        ResponseType(..), js_ResponseTypeBasic, js_ResponseTypeCors,
-        js_ResponseTypeDefault, js_ResponseTypeError,
-        js_ResponseTypeOpaque, js_ResponseTypeOpaqueredirect,
-        IDBCursorDirection(..), js_IDBCursorDirectionNext,
-        js_IDBCursorDirectionNextunique, js_IDBCursorDirectionPrev,
-        js_IDBCursorDirectionPrevunique, IDBRequestReadyState(..),
-        js_IDBRequestReadyStatePending, js_IDBRequestReadyStateDone,
-        IDBTransactionMode(..), js_IDBTransactionModeReadonly,
-        js_IDBTransactionModeReadwrite, js_IDBTransactionModeVersionchange,
-        DeviceType(..), js_DeviceTypeNone, js_DeviceTypeAirplay,
-        js_DeviceTypeTvout, MediaSessionKind(..),
-        js_MediaSessionKindContent, js_MediaSessionKindTransient,
-        js_MediaSessionKindTransientSolo, js_MediaSessionKindAmbient,
-        EndOfStreamError(..), js_EndOfStreamErrorNetwork,
-        js_EndOfStreamErrorDecode, ReadyState(..), js_ReadyStateClosed,
-        js_ReadyStateOpen, js_ReadyStateEnded, AppendMode(..),
-        js_AppendModeSegments, js_AppendModeSequence, MediaDeviceKind(..),
-        js_MediaDeviceKindAudioinput, js_MediaDeviceKindAudiooutput,
-        js_MediaDeviceKindVideoinput, MediaStreamTrackState(..),
-        js_MediaStreamTrackStateLive, js_MediaStreamTrackStateEnded,
-        RTCIceTransportPolicy(..), js_RTCIceTransportPolicyRelay,
-        js_RTCIceTransportPolicyAll, RTCBundlePolicy(..),
-        js_RTCBundlePolicyBalanced, js_RTCBundlePolicyMaxCompat,
-        js_RTCBundlePolicyMaxBundle, RTCDataChannelState(..),
-        js_RTCDataChannelStateConnecting, js_RTCDataChannelStateOpen,
-        js_RTCDataChannelStateClosing, js_RTCDataChannelStateClosed,
-        RTCIceConnectionState(..), js_RTCIceConnectionStateNew,
-        js_RTCIceConnectionStateChecking,
-        js_RTCIceConnectionStateConnected,
-        js_RTCIceConnectionStateCompleted, js_RTCIceConnectionStateFailed,
-        js_RTCIceConnectionStateDisconnected,
-        js_RTCIceConnectionStateClosed, RTCIceGatheringState(..),
-        js_RTCIceGatheringStateNew, js_RTCIceGatheringStateGathering,
-        js_RTCIceGatheringStateComplete, RTCIceTransportState(..),
-        js_RTCIceTransportStateNew, js_RTCIceTransportStateChecking,
-        js_RTCIceTransportStateConnected, js_RTCIceTransportStateCompleted,
-        js_RTCIceTransportStateFailed, js_RTCIceTransportStateDisconnected,
-        js_RTCIceTransportStateClosed, RTCPeerConnectionState(..),
-        js_RTCPeerConnectionStateNew, js_RTCPeerConnectionStateConnecting,
-        js_RTCPeerConnectionStateConnected,
-        js_RTCPeerConnectionStateDisconnected,
-        js_RTCPeerConnectionStateFailed, js_RTCPeerConnectionStateClosed,
-        RTCDegradationPreference(..),
-        js_RTCDegradationPreferenceMaintainFramerate,
-        js_RTCDegradationPreferenceMaintainResolution,
-        js_RTCDegradationPreferenceBalanced, RTCDtxStatus(..),
-        js_RTCDtxStatusDisabled, js_RTCDtxStatusEnabled,
-        RTCPriorityType(..), js_RTCPriorityTypeVeryLow,
-        js_RTCPriorityTypeLow, js_RTCPriorityTypeMedium,
-        js_RTCPriorityTypeHigh, RTCRtpTransceiverDirection(..),
-        js_RTCRtpTransceiverDirectionSendrecv,
-        js_RTCRtpTransceiverDirectionSendonly,
-        js_RTCRtpTransceiverDirectionRecvonly,
-        js_RTCRtpTransceiverDirectionInactive, RTCSdpType(..),
-        js_RTCSdpTypeOffer, js_RTCSdpTypePranswer, js_RTCSdpTypeAnswer,
-        js_RTCSdpTypeRollback, RTCSignalingState(..),
-        js_RTCSignalingStateStable, js_RTCSignalingStateHaveLocalOffer,
-        js_RTCSignalingStateHaveRemoteOffer,
-        js_RTCSignalingStateHaveLocalPranswer,
-        js_RTCSignalingStateHaveRemotePranswer, RTCStatsType(..),
-        js_RTCStatsTypeCodec, js_RTCStatsTypeInboundRtp,
-        js_RTCStatsTypeOutboundRtp, js_RTCStatsTypePeerConnection,
-        js_RTCStatsTypeDataChannel, js_RTCStatsTypeTrack,
-        js_RTCStatsTypeTransport, js_RTCStatsTypeCandidatePair,
-        js_RTCStatsTypeLocalCandidate, js_RTCStatsTypeRemoteCandidate,
-        js_RTCStatsTypeCertificate, NotificationDirection(..),
-        js_NotificationDirectionAuto, js_NotificationDirectionLtr,
-        js_NotificationDirectionRtl, AudioContextState(..),
-        js_AudioContextStateSuspended, js_AudioContextStateRunning,
-        js_AudioContextStateInterrupted, js_AudioContextStateClosed,
-        BiquadFilterType(..), js_BiquadFilterTypeLowpass,
-        js_BiquadFilterTypeHighpass, js_BiquadFilterTypeBandpass,
-        js_BiquadFilterTypeLowshelf, js_BiquadFilterTypeHighshelf,
-        js_BiquadFilterTypePeaking, js_BiquadFilterTypeNotch,
-        js_BiquadFilterTypeAllpass, OscillatorType(..),
-        js_OscillatorTypeSine, js_OscillatorTypeSquare,
-        js_OscillatorTypeSawtooth, js_OscillatorTypeTriangle,
-        js_OscillatorTypeCustom, PanningModelType(..),
-        js_PanningModelTypeEqualpower, js_PanningModelTypeHRTF,
-        DistanceModelType(..), js_DistanceModelTypeLinear,
-        js_DistanceModelTypeInverse, js_DistanceModelTypeExponential,
-        OverSampleType(..), js_OverSampleTypeNone, js_OverSampleType2x,
-        js_OverSampleType4x, ScrollRestoration(..),
-        js_ScrollRestorationAuto, js_ScrollRestorationManual,
-        XMLHttpRequestResponseType(..), js_XMLHttpRequestResponseType,
-        js_XMLHttpRequestResponseTypeArraybuffer,
-        js_XMLHttpRequestResponseTypeBlob,
-        js_XMLHttpRequestResponseTypeDocument,
-        js_XMLHttpRequestResponseTypeJson,
-        js_XMLHttpRequestResponseTypeText)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
- 
-data KeyType = KeyTypePublic
-             | KeyTypePrivate
-             | KeyTypeSecret
-             deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal KeyType where
-        pToJSVal KeyTypePublic = js_KeyTypePublic
-        pToJSVal KeyTypePrivate = js_KeyTypePrivate
-        pToJSVal KeyTypeSecret = js_KeyTypeSecret
- 
-instance ToJSVal KeyType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal KeyType where
-        pFromJSVal x | x `js_eq` js_KeyTypePublic = KeyTypePublic
-        pFromJSVal x | x `js_eq` js_KeyTypePrivate = KeyTypePrivate
-        pFromJSVal x | x `js_eq` js_KeyTypeSecret = KeyTypeSecret
- 
-instance FromJSVal KeyType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"public\"; })" js_KeyTypePublic ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"private\"; })" js_KeyTypePrivate ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"secret\"; })" js_KeyTypeSecret ::
-        JSVal
- 
-data CryptoKeyUsage = CryptoKeyUsageEncrypt
-                    | CryptoKeyUsageDecrypt
-                    | CryptoKeyUsageSign
-                    | CryptoKeyUsageVerify
-                    | CryptoKeyUsageDeriveKey
-                    | CryptoKeyUsageDeriveBits
-                    | CryptoKeyUsageWrapKey
-                    | CryptoKeyUsageUnwrapKey
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal CryptoKeyUsage where
-        pToJSVal CryptoKeyUsageEncrypt = js_CryptoKeyUsageEncrypt
-        pToJSVal CryptoKeyUsageDecrypt = js_CryptoKeyUsageDecrypt
-        pToJSVal CryptoKeyUsageSign = js_CryptoKeyUsageSign
-        pToJSVal CryptoKeyUsageVerify = js_CryptoKeyUsageVerify
-        pToJSVal CryptoKeyUsageDeriveKey = js_CryptoKeyUsageDeriveKey
-        pToJSVal CryptoKeyUsageDeriveBits = js_CryptoKeyUsageDeriveBits
-        pToJSVal CryptoKeyUsageWrapKey = js_CryptoKeyUsageWrapKey
-        pToJSVal CryptoKeyUsageUnwrapKey = js_CryptoKeyUsageUnwrapKey
- 
-instance ToJSVal CryptoKeyUsage where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal CryptoKeyUsage where
-        pFromJSVal x
-          | x `js_eq` js_CryptoKeyUsageEncrypt = CryptoKeyUsageEncrypt
-        pFromJSVal x
-          | x `js_eq` js_CryptoKeyUsageDecrypt = CryptoKeyUsageDecrypt
-        pFromJSVal x | x `js_eq` js_CryptoKeyUsageSign = CryptoKeyUsageSign
-        pFromJSVal x
-          | x `js_eq` js_CryptoKeyUsageVerify = CryptoKeyUsageVerify
-        pFromJSVal x
-          | x `js_eq` js_CryptoKeyUsageDeriveKey = CryptoKeyUsageDeriveKey
-        pFromJSVal x
-          | x `js_eq` js_CryptoKeyUsageDeriveBits = CryptoKeyUsageDeriveBits
-        pFromJSVal x
-          | x `js_eq` js_CryptoKeyUsageWrapKey = CryptoKeyUsageWrapKey
-        pFromJSVal x
-          | x `js_eq` js_CryptoKeyUsageUnwrapKey = CryptoKeyUsageUnwrapKey
- 
-instance FromJSVal CryptoKeyUsage where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"encrypt\"; })"
-        js_CryptoKeyUsageEncrypt :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"decrypt\"; })"
-        js_CryptoKeyUsageDecrypt :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sign\"; })" js_CryptoKeyUsageSign
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"verify\"; })"
-        js_CryptoKeyUsageVerify :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"deriveKey\"; })"
-        js_CryptoKeyUsageDeriveKey :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"deriveBits\"; })"
-        js_CryptoKeyUsageDeriveBits :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"wrapKey\"; })"
-        js_CryptoKeyUsageWrapKey :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"unwrapKey\"; })"
-        js_CryptoKeyUsageUnwrapKey :: JSVal
- 
-data KeyFormat = KeyFormatRaw
-               | KeyFormatSpki
-               | KeyFormatPkcs8
-               | KeyFormatJwk
-               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal KeyFormat where
-        pToJSVal KeyFormatRaw = js_KeyFormatRaw
-        pToJSVal KeyFormatSpki = js_KeyFormatSpki
-        pToJSVal KeyFormatPkcs8 = js_KeyFormatPkcs8
-        pToJSVal KeyFormatJwk = js_KeyFormatJwk
- 
-instance ToJSVal KeyFormat where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal KeyFormat where
-        pFromJSVal x | x `js_eq` js_KeyFormatRaw = KeyFormatRaw
-        pFromJSVal x | x `js_eq` js_KeyFormatSpki = KeyFormatSpki
-        pFromJSVal x | x `js_eq` js_KeyFormatPkcs8 = KeyFormatPkcs8
-        pFromJSVal x | x `js_eq` js_KeyFormatJwk = KeyFormatJwk
- 
-instance FromJSVal KeyFormat where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"raw\"; })" js_KeyFormatRaw :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"spki\"; })" js_KeyFormatSpki ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"pkcs8\"; })" js_KeyFormatPkcs8 ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"jwk\"; })" js_KeyFormatJwk :: JSVal
- 
-data FontFaceLoadStatus = FontFaceLoadStatusUnloaded
-                        | FontFaceLoadStatusLoading
-                        | FontFaceLoadStatusLoaded
-                        | FontFaceLoadStatusError
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal FontFaceLoadStatus where
-        pToJSVal FontFaceLoadStatusUnloaded = js_FontFaceLoadStatusUnloaded
-        pToJSVal FontFaceLoadStatusLoading = js_FontFaceLoadStatusLoading
-        pToJSVal FontFaceLoadStatusLoaded = js_FontFaceLoadStatusLoaded
-        pToJSVal FontFaceLoadStatusError = js_FontFaceLoadStatusError
- 
-instance ToJSVal FontFaceLoadStatus where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal FontFaceLoadStatus where
-        pFromJSVal x
-          | x `js_eq` js_FontFaceLoadStatusUnloaded =
-            FontFaceLoadStatusUnloaded
-        pFromJSVal x
-          | x `js_eq` js_FontFaceLoadStatusLoading =
-            FontFaceLoadStatusLoading
-        pFromJSVal x
-          | x `js_eq` js_FontFaceLoadStatusLoaded = FontFaceLoadStatusLoaded
-        pFromJSVal x
-          | x `js_eq` js_FontFaceLoadStatusError = FontFaceLoadStatusError
- 
-instance FromJSVal FontFaceLoadStatus where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"unloaded\"; })"
-        js_FontFaceLoadStatusUnloaded :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"loading\"; })"
-        js_FontFaceLoadStatusLoading :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"loaded\"; })"
-        js_FontFaceLoadStatusLoaded :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"error\"; })"
-        js_FontFaceLoadStatusError :: JSVal
- 
-data FontFaceSetLoadStatus = FontFaceSetLoadStatusLoading
-                           | FontFaceSetLoadStatusLoaded
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal FontFaceSetLoadStatus where
-        pToJSVal FontFaceSetLoadStatusLoading
-          = js_FontFaceSetLoadStatusLoading
-        pToJSVal FontFaceSetLoadStatusLoaded
-          = js_FontFaceSetLoadStatusLoaded
- 
-instance ToJSVal FontFaceSetLoadStatus where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal FontFaceSetLoadStatus where
-        pFromJSVal x
-          | x `js_eq` js_FontFaceSetLoadStatusLoading =
-            FontFaceSetLoadStatusLoading
-        pFromJSVal x
-          | x `js_eq` js_FontFaceSetLoadStatusLoaded =
-            FontFaceSetLoadStatusLoaded
- 
-instance FromJSVal FontFaceSetLoadStatus where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"loading\"; })"
-        js_FontFaceSetLoadStatusLoading :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"loaded\"; })"
-        js_FontFaceSetLoadStatusLoaded :: JSVal
- 
-data VisibilityState = VisibilityStateHidden
-                     | VisibilityStateVisible
-                     | VisibilityStatePrerender
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal VisibilityState where
-        pToJSVal VisibilityStateHidden = js_VisibilityStateHidden
-        pToJSVal VisibilityStateVisible = js_VisibilityStateVisible
-        pToJSVal VisibilityStatePrerender = js_VisibilityStatePrerender
- 
-instance ToJSVal VisibilityState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal VisibilityState where
-        pFromJSVal x
-          | x `js_eq` js_VisibilityStateHidden = VisibilityStateHidden
-        pFromJSVal x
-          | x `js_eq` js_VisibilityStateVisible = VisibilityStateVisible
-        pFromJSVal x
-          | x `js_eq` js_VisibilityStatePrerender = VisibilityStatePrerender
- 
-instance FromJSVal VisibilityState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"hidden\"; })"
-        js_VisibilityStateHidden :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"visible\"; })"
-        js_VisibilityStateVisible :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"prerender\"; })"
-        js_VisibilityStatePrerender :: JSVal
- 
-data DocumentReadyState = DocumentReadyStateLoading
-                        | DocumentReadyStateInteractive
-                        | DocumentReadyStateComplete
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal DocumentReadyState where
-        pToJSVal DocumentReadyStateLoading = js_DocumentReadyStateLoading
-        pToJSVal DocumentReadyStateInteractive
-          = js_DocumentReadyStateInteractive
-        pToJSVal DocumentReadyStateComplete = js_DocumentReadyStateComplete
- 
-instance ToJSVal DocumentReadyState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal DocumentReadyState where
-        pFromJSVal x
-          | x `js_eq` js_DocumentReadyStateLoading =
-            DocumentReadyStateLoading
-        pFromJSVal x
-          | x `js_eq` js_DocumentReadyStateInteractive =
-            DocumentReadyStateInteractive
-        pFromJSVal x
-          | x `js_eq` js_DocumentReadyStateComplete =
-            DocumentReadyStateComplete
- 
-instance FromJSVal DocumentReadyState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"loading\"; })"
-        js_DocumentReadyStateLoading :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"interactive\"; })"
-        js_DocumentReadyStateInteractive :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"complete\"; })"
-        js_DocumentReadyStateComplete :: JSVal
- 
-data ShadowRootMode = ShadowRootModeUserAgent
-                    | ShadowRootModeClosed
-                    | ShadowRootModeOpen
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ShadowRootMode where
-        pToJSVal ShadowRootModeUserAgent = js_ShadowRootModeUserAgent
-        pToJSVal ShadowRootModeClosed = js_ShadowRootModeClosed
-        pToJSVal ShadowRootModeOpen = js_ShadowRootModeOpen
- 
-instance ToJSVal ShadowRootMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ShadowRootMode where
-        pFromJSVal x
-          | x `js_eq` js_ShadowRootModeUserAgent = ShadowRootModeUserAgent
-        pFromJSVal x
-          | x `js_eq` js_ShadowRootModeClosed = ShadowRootModeClosed
-        pFromJSVal x | x `js_eq` js_ShadowRootModeOpen = ShadowRootModeOpen
- 
-instance FromJSVal ShadowRootMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"user-agent\"; })"
-        js_ShadowRootModeUserAgent :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"closed\"; })"
-        js_ShadowRootModeClosed :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"open\"; })" js_ShadowRootModeOpen
-        :: JSVal
- 
-data BlobLineEndings = BlobLineEndingsTransparent
-                     | BlobLineEndingsNative
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal BlobLineEndings where
-        pToJSVal BlobLineEndingsTransparent = js_BlobLineEndingsTransparent
-        pToJSVal BlobLineEndingsNative = js_BlobLineEndingsNative
- 
-instance ToJSVal BlobLineEndings where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal BlobLineEndings where
-        pFromJSVal x
-          | x `js_eq` js_BlobLineEndingsTransparent =
-            BlobLineEndingsTransparent
-        pFromJSVal x
-          | x `js_eq` js_BlobLineEndingsNative = BlobLineEndingsNative
- 
-instance FromJSVal BlobLineEndings where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"transparent\"; })"
-        js_BlobLineEndingsTransparent :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"native\"; })"
-        js_BlobLineEndingsNative :: JSVal
- 
-data ImageSmoothingQuality = ImageSmoothingQualityLow
-                           | ImageSmoothingQualityMedium
-                           | ImageSmoothingQualityHigh
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ImageSmoothingQuality where
-        pToJSVal ImageSmoothingQualityLow = js_ImageSmoothingQualityLow
-        pToJSVal ImageSmoothingQualityMedium
-          = js_ImageSmoothingQualityMedium
-        pToJSVal ImageSmoothingQualityHigh = js_ImageSmoothingQualityHigh
- 
-instance ToJSVal ImageSmoothingQuality where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ImageSmoothingQuality where
-        pFromJSVal x
-          | x `js_eq` js_ImageSmoothingQualityLow = ImageSmoothingQualityLow
-        pFromJSVal x
-          | x `js_eq` js_ImageSmoothingQualityMedium =
-            ImageSmoothingQualityMedium
-        pFromJSVal x
-          | x `js_eq` js_ImageSmoothingQualityHigh =
-            ImageSmoothingQualityHigh
- 
-instance FromJSVal ImageSmoothingQuality where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"low\"; })"
-        js_ImageSmoothingQualityLow :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"medium\"; })"
-        js_ImageSmoothingQualityMedium :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"high\"; })"
-        js_ImageSmoothingQualityHigh :: JSVal
- 
-data CanvasWindingRule = CanvasWindingRuleNonzero
-                       | CanvasWindingRuleEvenodd
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal CanvasWindingRule where
-        pToJSVal CanvasWindingRuleNonzero = js_CanvasWindingRuleNonzero
-        pToJSVal CanvasWindingRuleEvenodd = js_CanvasWindingRuleEvenodd
- 
-instance ToJSVal CanvasWindingRule where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal CanvasWindingRule where
-        pFromJSVal x
-          | x `js_eq` js_CanvasWindingRuleNonzero = CanvasWindingRuleNonzero
-        pFromJSVal x
-          | x `js_eq` js_CanvasWindingRuleEvenodd = CanvasWindingRuleEvenodd
- 
-instance FromJSVal CanvasWindingRule where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"nonzero\"; })"
-        js_CanvasWindingRuleNonzero :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"evenodd\"; })"
-        js_CanvasWindingRuleEvenodd :: JSVal
- 
-data WebGLPowerPreference = WebGLPowerPreferenceDefault
-                          | WebGLPowerPreferenceLowPower
-                          | WebGLPowerPreferenceHighPerformance
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGLPowerPreference where
-        pToJSVal WebGLPowerPreferenceDefault
-          = js_WebGLPowerPreferenceDefault
-        pToJSVal WebGLPowerPreferenceLowPower
-          = js_WebGLPowerPreferenceLowPower
-        pToJSVal WebGLPowerPreferenceHighPerformance
-          = js_WebGLPowerPreferenceHighPerformance
- 
-instance ToJSVal WebGLPowerPreference where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGLPowerPreference where
-        pFromJSVal x
-          | x `js_eq` js_WebGLPowerPreferenceDefault =
-            WebGLPowerPreferenceDefault
-        pFromJSVal x
-          | x `js_eq` js_WebGLPowerPreferenceLowPower =
-            WebGLPowerPreferenceLowPower
-        pFromJSVal x
-          | x `js_eq` js_WebGLPowerPreferenceHighPerformance =
-            WebGLPowerPreferenceHighPerformance
- 
-instance FromJSVal WebGLPowerPreference where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"default\"; })"
-        js_WebGLPowerPreferenceDefault :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"low-power\"; })"
-        js_WebGLPowerPreferenceLowPower :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"high-performance\"; })"
-        js_WebGLPowerPreferenceHighPerformance :: JSVal
- 
-data WebGPUCompareFunction = WebGPUCompareFunctionNever
-                           | WebGPUCompareFunctionLess
-                           | WebGPUCompareFunctionEqual
-                           | WebGPUCompareFunctionLessequal
-                           | WebGPUCompareFunctionGreater
-                           | WebGPUCompareFunctionNotequal
-                           | WebGPUCompareFunctionGreaterequal
-                           | WebGPUCompareFunctionAlways
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUCompareFunction where
-        pToJSVal WebGPUCompareFunctionNever = js_WebGPUCompareFunctionNever
-        pToJSVal WebGPUCompareFunctionLess = js_WebGPUCompareFunctionLess
-        pToJSVal WebGPUCompareFunctionEqual = js_WebGPUCompareFunctionEqual
-        pToJSVal WebGPUCompareFunctionLessequal
-          = js_WebGPUCompareFunctionLessequal
-        pToJSVal WebGPUCompareFunctionGreater
-          = js_WebGPUCompareFunctionGreater
-        pToJSVal WebGPUCompareFunctionNotequal
-          = js_WebGPUCompareFunctionNotequal
-        pToJSVal WebGPUCompareFunctionGreaterequal
-          = js_WebGPUCompareFunctionGreaterequal
-        pToJSVal WebGPUCompareFunctionAlways
-          = js_WebGPUCompareFunctionAlways
- 
-instance ToJSVal WebGPUCompareFunction where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUCompareFunction where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionNever =
-            WebGPUCompareFunctionNever
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionLess =
-            WebGPUCompareFunctionLess
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionEqual =
-            WebGPUCompareFunctionEqual
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionLessequal =
-            WebGPUCompareFunctionLessequal
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionGreater =
-            WebGPUCompareFunctionGreater
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionNotequal =
-            WebGPUCompareFunctionNotequal
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionGreaterequal =
-            WebGPUCompareFunctionGreaterequal
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCompareFunctionAlways =
-            WebGPUCompareFunctionAlways
- 
-instance FromJSVal WebGPUCompareFunction where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"never\"; })"
-        js_WebGPUCompareFunctionNever :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"less\"; })"
-        js_WebGPUCompareFunctionLess :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"equal\"; })"
-        js_WebGPUCompareFunctionEqual :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"lessequal\"; })"
-        js_WebGPUCompareFunctionLessequal :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"greater\"; })"
-        js_WebGPUCompareFunctionGreater :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"notequal\"; })"
-        js_WebGPUCompareFunctionNotequal :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"greaterequal\"; })"
-        js_WebGPUCompareFunctionGreaterequal :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"always\"; })"
-        js_WebGPUCompareFunctionAlways :: JSVal
- 
-data WebGPUPixelFormat = WebGPUPixelFormatBGRA8Unorm
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUPixelFormat where
-        pToJSVal WebGPUPixelFormatBGRA8Unorm
-          = js_WebGPUPixelFormatBGRA8Unorm
- 
-instance ToJSVal WebGPUPixelFormat where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUPixelFormat where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUPixelFormatBGRA8Unorm =
-            WebGPUPixelFormatBGRA8Unorm
- 
-instance FromJSVal WebGPUPixelFormat where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"BGRA8Unorm\"; })"
-        js_WebGPUPixelFormatBGRA8Unorm :: JSVal
- 
-data WebGPULoadAction = WebGPULoadActionDontcare
-                      | WebGPULoadActionLoad
-                      | WebGPULoadActionClear
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPULoadAction where
-        pToJSVal WebGPULoadActionDontcare = js_WebGPULoadActionDontcare
-        pToJSVal WebGPULoadActionLoad = js_WebGPULoadActionLoad
-        pToJSVal WebGPULoadActionClear = js_WebGPULoadActionClear
- 
-instance ToJSVal WebGPULoadAction where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPULoadAction where
-        pFromJSVal x
-          | x `js_eq` js_WebGPULoadActionDontcare = WebGPULoadActionDontcare
-        pFromJSVal x
-          | x `js_eq` js_WebGPULoadActionLoad = WebGPULoadActionLoad
-        pFromJSVal x
-          | x `js_eq` js_WebGPULoadActionClear = WebGPULoadActionClear
- 
-instance FromJSVal WebGPULoadAction where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"dontcare\"; })"
-        js_WebGPULoadActionDontcare :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"load\"; })" js_WebGPULoadActionLoad
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"clear\"; })"
-        js_WebGPULoadActionClear :: JSVal
- 
-data WebGPUStoreAction = WebGPUStoreActionDontcare
-                       | WebGPUStoreActionStore
-                       | WebGPUStoreActionMultisampleresolve
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUStoreAction where
-        pToJSVal WebGPUStoreActionDontcare = js_WebGPUStoreActionDontcare
-        pToJSVal WebGPUStoreActionStore = js_WebGPUStoreActionStore
-        pToJSVal WebGPUStoreActionMultisampleresolve
-          = js_WebGPUStoreActionMultisampleresolve
- 
-instance ToJSVal WebGPUStoreAction where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUStoreAction where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStoreActionDontcare =
-            WebGPUStoreActionDontcare
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStoreActionStore = WebGPUStoreActionStore
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStoreActionMultisampleresolve =
-            WebGPUStoreActionMultisampleresolve
- 
-instance FromJSVal WebGPUStoreAction where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"dontcare\"; })"
-        js_WebGPUStoreActionDontcare :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"store\"; })"
-        js_WebGPUStoreActionStore :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"multisampleresolve\"; })"
-        js_WebGPUStoreActionMultisampleresolve :: JSVal
- 
-data WebGPUPrimitiveType = WebGPUPrimitiveTypePoint
-                         | WebGPUPrimitiveTypeLine
-                         | WebGPUPrimitiveTypeLinestrip
-                         | WebGPUPrimitiveTypeTriangle
-                         | WebGPUPrimitiveTypeTrianglestrip
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUPrimitiveType where
-        pToJSVal WebGPUPrimitiveTypePoint = js_WebGPUPrimitiveTypePoint
-        pToJSVal WebGPUPrimitiveTypeLine = js_WebGPUPrimitiveTypeLine
-        pToJSVal WebGPUPrimitiveTypeLinestrip
-          = js_WebGPUPrimitiveTypeLinestrip
-        pToJSVal WebGPUPrimitiveTypeTriangle
-          = js_WebGPUPrimitiveTypeTriangle
-        pToJSVal WebGPUPrimitiveTypeTrianglestrip
-          = js_WebGPUPrimitiveTypeTrianglestrip
- 
-instance ToJSVal WebGPUPrimitiveType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUPrimitiveType where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUPrimitiveTypePoint = WebGPUPrimitiveTypePoint
-        pFromJSVal x
-          | x `js_eq` js_WebGPUPrimitiveTypeLine = WebGPUPrimitiveTypeLine
-        pFromJSVal x
-          | x `js_eq` js_WebGPUPrimitiveTypeLinestrip =
-            WebGPUPrimitiveTypeLinestrip
-        pFromJSVal x
-          | x `js_eq` js_WebGPUPrimitiveTypeTriangle =
-            WebGPUPrimitiveTypeTriangle
-        pFromJSVal x
-          | x `js_eq` js_WebGPUPrimitiveTypeTrianglestrip =
-            WebGPUPrimitiveTypeTrianglestrip
- 
-instance FromJSVal WebGPUPrimitiveType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"point\"; })"
-        js_WebGPUPrimitiveTypePoint :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"line\"; })"
-        js_WebGPUPrimitiveTypeLine :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"linestrip\"; })"
-        js_WebGPUPrimitiveTypeLinestrip :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"triangle\"; })"
-        js_WebGPUPrimitiveTypeTriangle :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"trianglestrip\"; })"
-        js_WebGPUPrimitiveTypeTrianglestrip :: JSVal
- 
-data WebGPUFunctionType = WebGPUFunctionTypeFragment
-                        | WebGPUFunctionTypeVertex
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUFunctionType where
-        pToJSVal WebGPUFunctionTypeFragment = js_WebGPUFunctionTypeFragment
-        pToJSVal WebGPUFunctionTypeVertex = js_WebGPUFunctionTypeVertex
- 
-instance ToJSVal WebGPUFunctionType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUFunctionType where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUFunctionTypeFragment =
-            WebGPUFunctionTypeFragment
-        pFromJSVal x
-          | x `js_eq` js_WebGPUFunctionTypeVertex = WebGPUFunctionTypeVertex
- 
-instance FromJSVal WebGPUFunctionType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"fragment\"; })"
-        js_WebGPUFunctionTypeFragment :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"vertex\"; })"
-        js_WebGPUFunctionTypeVertex :: JSVal
- 
-data WebGPUStencilOperation = WebGPUStencilOperationKeep
-                            | WebGPUStencilOperationZero
-                            | WebGPUStencilOperationReplace
-                            | WebGPUStencilOperationIncrementclamp
-                            | WebGPUStencilOperationDecrementclamp
-                            | WebGPUStencilOperationInvert
-                            | WebGPUStencilOperationIncrementwrap
-                            | WebGPUStencilOperationDecrementwrap
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUStencilOperation where
-        pToJSVal WebGPUStencilOperationKeep = js_WebGPUStencilOperationKeep
-        pToJSVal WebGPUStencilOperationZero = js_WebGPUStencilOperationZero
-        pToJSVal WebGPUStencilOperationReplace
-          = js_WebGPUStencilOperationReplace
-        pToJSVal WebGPUStencilOperationIncrementclamp
-          = js_WebGPUStencilOperationIncrementclamp
-        pToJSVal WebGPUStencilOperationDecrementclamp
-          = js_WebGPUStencilOperationDecrementclamp
-        pToJSVal WebGPUStencilOperationInvert
-          = js_WebGPUStencilOperationInvert
-        pToJSVal WebGPUStencilOperationIncrementwrap
-          = js_WebGPUStencilOperationIncrementwrap
-        pToJSVal WebGPUStencilOperationDecrementwrap
-          = js_WebGPUStencilOperationDecrementwrap
- 
-instance ToJSVal WebGPUStencilOperation where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUStencilOperation where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationKeep =
-            WebGPUStencilOperationKeep
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationZero =
-            WebGPUStencilOperationZero
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationReplace =
-            WebGPUStencilOperationReplace
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationIncrementclamp =
-            WebGPUStencilOperationIncrementclamp
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationDecrementclamp =
-            WebGPUStencilOperationDecrementclamp
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationInvert =
-            WebGPUStencilOperationInvert
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationIncrementwrap =
-            WebGPUStencilOperationIncrementwrap
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStencilOperationDecrementwrap =
-            WebGPUStencilOperationDecrementwrap
- 
-instance FromJSVal WebGPUStencilOperation where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"keep\"; })"
-        js_WebGPUStencilOperationKeep :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"zero\"; })"
-        js_WebGPUStencilOperationZero :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"replace\"; })"
-        js_WebGPUStencilOperationReplace :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"incrementclamp\"; })"
-        js_WebGPUStencilOperationIncrementclamp :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"decrementclamp\"; })"
-        js_WebGPUStencilOperationDecrementclamp :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"invert\"; })"
-        js_WebGPUStencilOperationInvert :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"incrementwrap\"; })"
-        js_WebGPUStencilOperationIncrementwrap :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"decrementwrap\"; })"
-        js_WebGPUStencilOperationDecrementwrap :: JSVal
- 
-data WebGPUStatus = WebGPUStatusNotenqueued
-                  | WebGPUStatusEnqueued
-                  | WebGPUStatusCommitted
-                  | WebGPUStatusScheduled
-                  | WebGPUStatusCompleted
-                  | WebGPUStatusError
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUStatus where
-        pToJSVal WebGPUStatusNotenqueued = js_WebGPUStatusNotenqueued
-        pToJSVal WebGPUStatusEnqueued = js_WebGPUStatusEnqueued
-        pToJSVal WebGPUStatusCommitted = js_WebGPUStatusCommitted
-        pToJSVal WebGPUStatusScheduled = js_WebGPUStatusScheduled
-        pToJSVal WebGPUStatusCompleted = js_WebGPUStatusCompleted
-        pToJSVal WebGPUStatusError = js_WebGPUStatusError
- 
-instance ToJSVal WebGPUStatus where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUStatus where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStatusNotenqueued = WebGPUStatusNotenqueued
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStatusEnqueued = WebGPUStatusEnqueued
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStatusCommitted = WebGPUStatusCommitted
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStatusScheduled = WebGPUStatusScheduled
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStatusCompleted = WebGPUStatusCompleted
-        pFromJSVal x | x `js_eq` js_WebGPUStatusError = WebGPUStatusError
- 
-instance FromJSVal WebGPUStatus where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"notenqueued\"; })"
-        js_WebGPUStatusNotenqueued :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"enqueued\"; })"
-        js_WebGPUStatusEnqueued :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"committed\"; })"
-        js_WebGPUStatusCommitted :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"scheduled\"; })"
-        js_WebGPUStatusScheduled :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"completed\"; })"
-        js_WebGPUStatusCompleted :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"error\"; })" js_WebGPUStatusError
-        :: JSVal
- 
-data WebGPUSamplerAddressMode = WebGPUSamplerAddressModeClamptoedge
-                              | WebGPUSamplerAddressModeMirrorclamptoedge
-                              | WebGPUSamplerAddressModeRepeat
-                              | WebGPUSamplerAddressModeMirrorrepeat
-                              | WebGPUSamplerAddressModeClamptozero
-                              deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUSamplerAddressMode where
-        pToJSVal WebGPUSamplerAddressModeClamptoedge
-          = js_WebGPUSamplerAddressModeClamptoedge
-        pToJSVal WebGPUSamplerAddressModeMirrorclamptoedge
-          = js_WebGPUSamplerAddressModeMirrorclamptoedge
-        pToJSVal WebGPUSamplerAddressModeRepeat
-          = js_WebGPUSamplerAddressModeRepeat
-        pToJSVal WebGPUSamplerAddressModeMirrorrepeat
-          = js_WebGPUSamplerAddressModeMirrorrepeat
-        pToJSVal WebGPUSamplerAddressModeClamptozero
-          = js_WebGPUSamplerAddressModeClamptozero
- 
-instance ToJSVal WebGPUSamplerAddressMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUSamplerAddressMode where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerAddressModeClamptoedge =
-            WebGPUSamplerAddressModeClamptoedge
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerAddressModeMirrorclamptoedge =
-            WebGPUSamplerAddressModeMirrorclamptoedge
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerAddressModeRepeat =
-            WebGPUSamplerAddressModeRepeat
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerAddressModeMirrorrepeat =
-            WebGPUSamplerAddressModeMirrorrepeat
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerAddressModeClamptozero =
-            WebGPUSamplerAddressModeClamptozero
- 
-instance FromJSVal WebGPUSamplerAddressMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"clamptoedge\"; })"
-        js_WebGPUSamplerAddressModeClamptoedge :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"mirrorclamptoedge\"; })"
-        js_WebGPUSamplerAddressModeMirrorclamptoedge :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"repeat\"; })"
-        js_WebGPUSamplerAddressModeRepeat :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"mirrorrepeat\"; })"
-        js_WebGPUSamplerAddressModeMirrorrepeat :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"clamptozero\"; })"
-        js_WebGPUSamplerAddressModeClamptozero :: JSVal
- 
-data WebGPUSamplerMinMagFilter = WebGPUSamplerMinMagFilterNearest
-                               | WebGPUSamplerMinMagFilterLinear
-                               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUSamplerMinMagFilter where
-        pToJSVal WebGPUSamplerMinMagFilterNearest
-          = js_WebGPUSamplerMinMagFilterNearest
-        pToJSVal WebGPUSamplerMinMagFilterLinear
-          = js_WebGPUSamplerMinMagFilterLinear
- 
-instance ToJSVal WebGPUSamplerMinMagFilter where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUSamplerMinMagFilter where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerMinMagFilterNearest =
-            WebGPUSamplerMinMagFilterNearest
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerMinMagFilterLinear =
-            WebGPUSamplerMinMagFilterLinear
- 
-instance FromJSVal WebGPUSamplerMinMagFilter where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"nearest\"; })"
-        js_WebGPUSamplerMinMagFilterNearest :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"linear\"; })"
-        js_WebGPUSamplerMinMagFilterLinear :: JSVal
- 
-data WebGPUSamplerMipFilter = WebGPUSamplerMipFilterNotmipmapped
-                            | WebGPUSamplerMipFilterNearest
-                            | WebGPUSamplerMipFilterLinear
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUSamplerMipFilter where
-        pToJSVal WebGPUSamplerMipFilterNotmipmapped
-          = js_WebGPUSamplerMipFilterNotmipmapped
-        pToJSVal WebGPUSamplerMipFilterNearest
-          = js_WebGPUSamplerMipFilterNearest
-        pToJSVal WebGPUSamplerMipFilterLinear
-          = js_WebGPUSamplerMipFilterLinear
- 
-instance ToJSVal WebGPUSamplerMipFilter where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUSamplerMipFilter where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerMipFilterNotmipmapped =
-            WebGPUSamplerMipFilterNotmipmapped
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerMipFilterNearest =
-            WebGPUSamplerMipFilterNearest
-        pFromJSVal x
-          | x `js_eq` js_WebGPUSamplerMipFilterLinear =
-            WebGPUSamplerMipFilterLinear
- 
-instance FromJSVal WebGPUSamplerMipFilter where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"notmipmapped\"; })"
-        js_WebGPUSamplerMipFilterNotmipmapped :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"nearest\"; })"
-        js_WebGPUSamplerMipFilterNearest :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"linear\"; })"
-        js_WebGPUSamplerMipFilterLinear :: JSVal
- 
-data WebGPUCullMode = WebGPUCullModeNone
-                    | WebGPUCullModeFront
-                    | WebGPUCullModeBack
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUCullMode where
-        pToJSVal WebGPUCullModeNone = js_WebGPUCullModeNone
-        pToJSVal WebGPUCullModeFront = js_WebGPUCullModeFront
-        pToJSVal WebGPUCullModeBack = js_WebGPUCullModeBack
- 
-instance ToJSVal WebGPUCullMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUCullMode where
-        pFromJSVal x | x `js_eq` js_WebGPUCullModeNone = WebGPUCullModeNone
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCullModeFront = WebGPUCullModeFront
-        pFromJSVal x | x `js_eq` js_WebGPUCullModeBack = WebGPUCullModeBack
- 
-instance FromJSVal WebGPUCullMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"none\"; })" js_WebGPUCullModeNone
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"front\"; })" js_WebGPUCullModeFront
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"back\"; })" js_WebGPUCullModeBack
-        :: JSVal
- 
-data WebGPUIndexType = WebGPUIndexTypeUint16
-                     | WebGPUIndexTypeUint32
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUIndexType where
-        pToJSVal WebGPUIndexTypeUint16 = js_WebGPUIndexTypeUint16
-        pToJSVal WebGPUIndexTypeUint32 = js_WebGPUIndexTypeUint32
- 
-instance ToJSVal WebGPUIndexType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUIndexType where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUIndexTypeUint16 = WebGPUIndexTypeUint16
-        pFromJSVal x
-          | x `js_eq` js_WebGPUIndexTypeUint32 = WebGPUIndexTypeUint32
- 
-instance FromJSVal WebGPUIndexType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"uint16\"; })"
-        js_WebGPUIndexTypeUint16 :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"uint32\"; })"
-        js_WebGPUIndexTypeUint32 :: JSVal
- 
-data WebGPUVisibilityResultMode = WebGPUVisibilityResultModeDisabled
-                                | WebGPUVisibilityResultModeBoolean
-                                | WebGPUVisibilityResultModeCounting
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUVisibilityResultMode where
-        pToJSVal WebGPUVisibilityResultModeDisabled
-          = js_WebGPUVisibilityResultModeDisabled
-        pToJSVal WebGPUVisibilityResultModeBoolean
-          = js_WebGPUVisibilityResultModeBoolean
-        pToJSVal WebGPUVisibilityResultModeCounting
-          = js_WebGPUVisibilityResultModeCounting
- 
-instance ToJSVal WebGPUVisibilityResultMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUVisibilityResultMode where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUVisibilityResultModeDisabled =
-            WebGPUVisibilityResultModeDisabled
-        pFromJSVal x
-          | x `js_eq` js_WebGPUVisibilityResultModeBoolean =
-            WebGPUVisibilityResultModeBoolean
-        pFromJSVal x
-          | x `js_eq` js_WebGPUVisibilityResultModeCounting =
-            WebGPUVisibilityResultModeCounting
- 
-instance FromJSVal WebGPUVisibilityResultMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"disabled\"; })"
-        js_WebGPUVisibilityResultModeDisabled :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"boolean\"; })"
-        js_WebGPUVisibilityResultModeBoolean :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"counting\"; })"
-        js_WebGPUVisibilityResultModeCounting :: JSVal
- 
-data WebGPUWinding = WebGPUWindingClockwise
-                   | WebGPUWindingCounterclockwise
-                   deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUWinding where
-        pToJSVal WebGPUWindingClockwise = js_WebGPUWindingClockwise
-        pToJSVal WebGPUWindingCounterclockwise
-          = js_WebGPUWindingCounterclockwise
- 
-instance ToJSVal WebGPUWinding where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUWinding where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUWindingClockwise = WebGPUWindingClockwise
-        pFromJSVal x
-          | x `js_eq` js_WebGPUWindingCounterclockwise =
-            WebGPUWindingCounterclockwise
- 
-instance FromJSVal WebGPUWinding where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"clockwise\"; })"
-        js_WebGPUWindingClockwise :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"counterclockwise\"; })"
-        js_WebGPUWindingCounterclockwise :: JSVal
- 
-data WebGPUDepthClipMode = WebGPUDepthClipModeClip
-                         | WebGPUDepthClipModeClamp
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUDepthClipMode where
-        pToJSVal WebGPUDepthClipModeClip = js_WebGPUDepthClipModeClip
-        pToJSVal WebGPUDepthClipModeClamp = js_WebGPUDepthClipModeClamp
- 
-instance ToJSVal WebGPUDepthClipMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUDepthClipMode where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUDepthClipModeClip = WebGPUDepthClipModeClip
-        pFromJSVal x
-          | x `js_eq` js_WebGPUDepthClipModeClamp = WebGPUDepthClipModeClamp
- 
-instance FromJSVal WebGPUDepthClipMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"clip\"; })"
-        js_WebGPUDepthClipModeClip :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"clamp\"; })"
-        js_WebGPUDepthClipModeClamp :: JSVal
- 
-data WebGPUTriangleFillMode = WebGPUTriangleFillModeFill
-                            | WebGPUTriangleFillModeLines
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUTriangleFillMode where
-        pToJSVal WebGPUTriangleFillModeFill = js_WebGPUTriangleFillModeFill
-        pToJSVal WebGPUTriangleFillModeLines
-          = js_WebGPUTriangleFillModeLines
- 
-instance ToJSVal WebGPUTriangleFillMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUTriangleFillMode where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUTriangleFillModeFill =
-            WebGPUTriangleFillModeFill
-        pFromJSVal x
-          | x `js_eq` js_WebGPUTriangleFillModeLines =
-            WebGPUTriangleFillModeLines
- 
-instance FromJSVal WebGPUTriangleFillMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"fill\"; })"
-        js_WebGPUTriangleFillModeFill :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"lines\"; })"
-        js_WebGPUTriangleFillModeLines :: JSVal
- 
-data WebGPUCPUCacheMode = WebGPUCPUCacheModeDefaultcache
-                        | WebGPUCPUCacheModeWritecombined
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUCPUCacheMode where
-        pToJSVal WebGPUCPUCacheModeDefaultcache
-          = js_WebGPUCPUCacheModeDefaultcache
-        pToJSVal WebGPUCPUCacheModeWritecombined
-          = js_WebGPUCPUCacheModeWritecombined
- 
-instance ToJSVal WebGPUCPUCacheMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUCPUCacheMode where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCPUCacheModeDefaultcache =
-            WebGPUCPUCacheModeDefaultcache
-        pFromJSVal x
-          | x `js_eq` js_WebGPUCPUCacheModeWritecombined =
-            WebGPUCPUCacheModeWritecombined
- 
-instance FromJSVal WebGPUCPUCacheMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"defaultcache\"; })"
-        js_WebGPUCPUCacheModeDefaultcache :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"writecombined\"; })"
-        js_WebGPUCPUCacheModeWritecombined :: JSVal
- 
-data WebGPUStorageMode = WebGPUStorageModeShared
-                       | WebGPUStorageModeManaged
-                       | WebGPUStorageModePrivate
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUStorageMode where
-        pToJSVal WebGPUStorageModeShared = js_WebGPUStorageModeShared
-        pToJSVal WebGPUStorageModeManaged = js_WebGPUStorageModeManaged
-        pToJSVal WebGPUStorageModePrivate = js_WebGPUStorageModePrivate
- 
-instance ToJSVal WebGPUStorageMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUStorageMode where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStorageModeShared = WebGPUStorageModeShared
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStorageModeManaged = WebGPUStorageModeManaged
-        pFromJSVal x
-          | x `js_eq` js_WebGPUStorageModePrivate = WebGPUStorageModePrivate
- 
-instance FromJSVal WebGPUStorageMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"shared\"; })"
-        js_WebGPUStorageModeShared :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"managed\"; })"
-        js_WebGPUStorageModeManaged :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"private\"; })"
-        js_WebGPUStorageModePrivate :: JSVal
- 
-data WebGPUResourceOptions = WebGPUResourceOptionsCpucachemodedefaultcache
-                           | WebGPUResourceOptionsCpucachemodewritecombined
-                           | WebGPUResourceOptionsStoragemodeshared
-                           | WebGPUResourceOptionsStoragemodemanaged
-                           | WebGPUResourceOptionsStoragemodeprivate
-                           | WebGPUResourceOptionsOptioncpucachemodedefaultcache
-                           | WebGPUResourceOptionsOptioncpucachemodewritecombined
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUResourceOptions where
-        pToJSVal WebGPUResourceOptionsCpucachemodedefaultcache
-          = js_WebGPUResourceOptionsCpucachemodedefaultcache
-        pToJSVal WebGPUResourceOptionsCpucachemodewritecombined
-          = js_WebGPUResourceOptionsCpucachemodewritecombined
-        pToJSVal WebGPUResourceOptionsStoragemodeshared
-          = js_WebGPUResourceOptionsStoragemodeshared
-        pToJSVal WebGPUResourceOptionsStoragemodemanaged
-          = js_WebGPUResourceOptionsStoragemodemanaged
-        pToJSVal WebGPUResourceOptionsStoragemodeprivate
-          = js_WebGPUResourceOptionsStoragemodeprivate
-        pToJSVal WebGPUResourceOptionsOptioncpucachemodedefaultcache
-          = js_WebGPUResourceOptionsOptioncpucachemodedefaultcache
-        pToJSVal WebGPUResourceOptionsOptioncpucachemodewritecombined
-          = js_WebGPUResourceOptionsOptioncpucachemodewritecombined
- 
-instance ToJSVal WebGPUResourceOptions where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUResourceOptions where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUResourceOptionsCpucachemodedefaultcache =
-            WebGPUResourceOptionsCpucachemodedefaultcache
-        pFromJSVal x
-          | x `js_eq` js_WebGPUResourceOptionsCpucachemodewritecombined =
-            WebGPUResourceOptionsCpucachemodewritecombined
-        pFromJSVal x
-          | x `js_eq` js_WebGPUResourceOptionsStoragemodeshared =
-            WebGPUResourceOptionsStoragemodeshared
-        pFromJSVal x
-          | x `js_eq` js_WebGPUResourceOptionsStoragemodemanaged =
-            WebGPUResourceOptionsStoragemodemanaged
-        pFromJSVal x
-          | x `js_eq` js_WebGPUResourceOptionsStoragemodeprivate =
-            WebGPUResourceOptionsStoragemodeprivate
-        pFromJSVal x
-          | x `js_eq` js_WebGPUResourceOptionsOptioncpucachemodedefaultcache
-            = WebGPUResourceOptionsOptioncpucachemodedefaultcache
-        pFromJSVal x
-          | x `js_eq` js_WebGPUResourceOptionsOptioncpucachemodewritecombined
-            = WebGPUResourceOptionsOptioncpucachemodewritecombined
- 
-instance FromJSVal WebGPUResourceOptions where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"cpucachemodedefaultcache\"; })"
-        js_WebGPUResourceOptionsCpucachemodedefaultcache :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"cpucachemodewritecombined\"; })"
-        js_WebGPUResourceOptionsCpucachemodewritecombined :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"storagemodeshared\"; })"
-        js_WebGPUResourceOptionsStoragemodeshared :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"storagemodemanaged\"; })"
-        js_WebGPUResourceOptionsStoragemodemanaged :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"storagemodeprivate\"; })"
-        js_WebGPUResourceOptionsStoragemodeprivate :: JSVal
- 
-foreign import javascript unsafe
-        "(() => { return \"optioncpucachemodedefaultcache\"; })"
-        js_WebGPUResourceOptionsOptioncpucachemodedefaultcache :: JSVal
- 
-foreign import javascript unsafe
-        "(() => { return \"optioncpucachemodewritecombined\"; })"
-        js_WebGPUResourceOptionsOptioncpucachemodewritecombined :: JSVal
- 
-data WebGPUTextureUsage = WebGPUTextureUsageUnknown
-                        | WebGPUTextureUsageShaderread
-                        | WebGPUTextureUsageShaderwrite
-                        | WebGPUTextureUsageRendertarget
-                        | WebGPUTextureUsagePixelformatview
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUTextureUsage where
-        pToJSVal WebGPUTextureUsageUnknown = js_WebGPUTextureUsageUnknown
-        pToJSVal WebGPUTextureUsageShaderread
-          = js_WebGPUTextureUsageShaderread
-        pToJSVal WebGPUTextureUsageShaderwrite
-          = js_WebGPUTextureUsageShaderwrite
-        pToJSVal WebGPUTextureUsageRendertarget
-          = js_WebGPUTextureUsageRendertarget
-        pToJSVal WebGPUTextureUsagePixelformatview
-          = js_WebGPUTextureUsagePixelformatview
- 
-instance ToJSVal WebGPUTextureUsage where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUTextureUsage where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUTextureUsageUnknown =
-            WebGPUTextureUsageUnknown
-        pFromJSVal x
-          | x `js_eq` js_WebGPUTextureUsageShaderread =
-            WebGPUTextureUsageShaderread
-        pFromJSVal x
-          | x `js_eq` js_WebGPUTextureUsageShaderwrite =
-            WebGPUTextureUsageShaderwrite
-        pFromJSVal x
-          | x `js_eq` js_WebGPUTextureUsageRendertarget =
-            WebGPUTextureUsageRendertarget
-        pFromJSVal x
-          | x `js_eq` js_WebGPUTextureUsagePixelformatview =
-            WebGPUTextureUsagePixelformatview
- 
-instance FromJSVal WebGPUTextureUsage where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"unknown\"; })"
-        js_WebGPUTextureUsageUnknown :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"shaderread\"; })"
-        js_WebGPUTextureUsageShaderread :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"shaderwrite\"; })"
-        js_WebGPUTextureUsageShaderwrite :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"rendertarget\"; })"
-        js_WebGPUTextureUsageRendertarget :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"pixelformatview\"; })"
-        js_WebGPUTextureUsagePixelformatview :: JSVal
- 
-data WebGPUBlendOperation = WebGPUBlendOperationAdd
-                          | WebGPUBlendOperationSubtract
-                          | WebGPUBlendOperationReversesubtract
-                          | WebGPUBlendOperationMin
-                          | WebGPUBlendOperationMax
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUBlendOperation where
-        pToJSVal WebGPUBlendOperationAdd = js_WebGPUBlendOperationAdd
-        pToJSVal WebGPUBlendOperationSubtract
-          = js_WebGPUBlendOperationSubtract
-        pToJSVal WebGPUBlendOperationReversesubtract
-          = js_WebGPUBlendOperationReversesubtract
-        pToJSVal WebGPUBlendOperationMin = js_WebGPUBlendOperationMin
-        pToJSVal WebGPUBlendOperationMax = js_WebGPUBlendOperationMax
- 
-instance ToJSVal WebGPUBlendOperation where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUBlendOperation where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendOperationAdd = WebGPUBlendOperationAdd
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendOperationSubtract =
-            WebGPUBlendOperationSubtract
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendOperationReversesubtract =
-            WebGPUBlendOperationReversesubtract
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendOperationMin = WebGPUBlendOperationMin
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendOperationMax = WebGPUBlendOperationMax
- 
-instance FromJSVal WebGPUBlendOperation where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"add\"; })"
-        js_WebGPUBlendOperationAdd :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"subtract\"; })"
-        js_WebGPUBlendOperationSubtract :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"reversesubtract\"; })"
-        js_WebGPUBlendOperationReversesubtract :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"min\"; })"
-        js_WebGPUBlendOperationMin :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"max\"; })"
-        js_WebGPUBlendOperationMax :: JSVal
- 
-data WebGPUBlendFactor = WebGPUBlendFactorZero
-                       | WebGPUBlendFactorOne
-                       | WebGPUBlendFactorSourcecolor
-                       | WebGPUBlendFactorOneminussourcecolor
-                       | WebGPUBlendFactorSourcealpha
-                       | WebGPUBlendFactorOneminussourcealpha
-                       | WebGPUBlendFactorDestinationcolor
-                       | WebGPUBlendFactorOneminusdestinationcolor
-                       | WebGPUBlendFactorDestinationalpha
-                       | WebGPUBlendFactorOneminusdestinationalpha
-                       | WebGPUBlendFactorSourcealphasaturated
-                       | WebGPUBlendFactorBlendcolor
-                       | WebGPUBlendFactorOneminusblendcolor
-                       | WebGPUBlendFactorBlendalpha
-                       | WebGPUBlendFactorOneminusblendalpha
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUBlendFactor where
-        pToJSVal WebGPUBlendFactorZero = js_WebGPUBlendFactorZero
-        pToJSVal WebGPUBlendFactorOne = js_WebGPUBlendFactorOne
-        pToJSVal WebGPUBlendFactorSourcecolor
-          = js_WebGPUBlendFactorSourcecolor
-        pToJSVal WebGPUBlendFactorOneminussourcecolor
-          = js_WebGPUBlendFactorOneminussourcecolor
-        pToJSVal WebGPUBlendFactorSourcealpha
-          = js_WebGPUBlendFactorSourcealpha
-        pToJSVal WebGPUBlendFactorOneminussourcealpha
-          = js_WebGPUBlendFactorOneminussourcealpha
-        pToJSVal WebGPUBlendFactorDestinationcolor
-          = js_WebGPUBlendFactorDestinationcolor
-        pToJSVal WebGPUBlendFactorOneminusdestinationcolor
-          = js_WebGPUBlendFactorOneminusdestinationcolor
-        pToJSVal WebGPUBlendFactorDestinationalpha
-          = js_WebGPUBlendFactorDestinationalpha
-        pToJSVal WebGPUBlendFactorOneminusdestinationalpha
-          = js_WebGPUBlendFactorOneminusdestinationalpha
-        pToJSVal WebGPUBlendFactorSourcealphasaturated
-          = js_WebGPUBlendFactorSourcealphasaturated
-        pToJSVal WebGPUBlendFactorBlendcolor
-          = js_WebGPUBlendFactorBlendcolor
-        pToJSVal WebGPUBlendFactorOneminusblendcolor
-          = js_WebGPUBlendFactorOneminusblendcolor
-        pToJSVal WebGPUBlendFactorBlendalpha
-          = js_WebGPUBlendFactorBlendalpha
-        pToJSVal WebGPUBlendFactorOneminusblendalpha
-          = js_WebGPUBlendFactorOneminusblendalpha
- 
-instance ToJSVal WebGPUBlendFactor where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUBlendFactor where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorZero = WebGPUBlendFactorZero
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorOne = WebGPUBlendFactorOne
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorSourcecolor =
-            WebGPUBlendFactorSourcecolor
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorOneminussourcecolor =
-            WebGPUBlendFactorOneminussourcecolor
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorSourcealpha =
-            WebGPUBlendFactorSourcealpha
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorOneminussourcealpha =
-            WebGPUBlendFactorOneminussourcealpha
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorDestinationcolor =
-            WebGPUBlendFactorDestinationcolor
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorOneminusdestinationcolor =
-            WebGPUBlendFactorOneminusdestinationcolor
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorDestinationalpha =
-            WebGPUBlendFactorDestinationalpha
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorOneminusdestinationalpha =
-            WebGPUBlendFactorOneminusdestinationalpha
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorSourcealphasaturated =
-            WebGPUBlendFactorSourcealphasaturated
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorBlendcolor =
-            WebGPUBlendFactorBlendcolor
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorOneminusblendcolor =
-            WebGPUBlendFactorOneminusblendcolor
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorBlendalpha =
-            WebGPUBlendFactorBlendalpha
-        pFromJSVal x
-          | x `js_eq` js_WebGPUBlendFactorOneminusblendalpha =
-            WebGPUBlendFactorOneminusblendalpha
- 
-instance FromJSVal WebGPUBlendFactor where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"zero\"; })"
-        js_WebGPUBlendFactorZero :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"one\"; })" js_WebGPUBlendFactorOne
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sourcecolor\"; })"
-        js_WebGPUBlendFactorSourcecolor :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"oneminussourcecolor\"; })"
-        js_WebGPUBlendFactorOneminussourcecolor :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sourcealpha\"; })"
-        js_WebGPUBlendFactorSourcealpha :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"oneminussourcealpha\"; })"
-        js_WebGPUBlendFactorOneminussourcealpha :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"destinationcolor\"; })"
-        js_WebGPUBlendFactorDestinationcolor :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"oneminusdestinationcolor\"; })"
-        js_WebGPUBlendFactorOneminusdestinationcolor :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"destinationalpha\"; })"
-        js_WebGPUBlendFactorDestinationalpha :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"oneminusdestinationalpha\"; })"
-        js_WebGPUBlendFactorOneminusdestinationalpha :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sourcealphasaturated\"; })"
-        js_WebGPUBlendFactorSourcealphasaturated :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"blendcolor\"; })"
-        js_WebGPUBlendFactorBlendcolor :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"oneminusblendcolor\"; })"
-        js_WebGPUBlendFactorOneminusblendcolor :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"blendalpha\"; })"
-        js_WebGPUBlendFactorBlendalpha :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"oneminusblendalpha\"; })"
-        js_WebGPUBlendFactorOneminusblendalpha :: JSVal
- 
-data WebGPUColorWriteMask = WebGPUColorWriteMaskNone
-                          | WebGPUColorWriteMaskRed
-                          | WebGPUColorWriteMaskGreen
-                          | WebGPUColorWriteMaskBlue
-                          | WebGPUColorWriteMaskAlpha
-                          | WebGPUColorWriteMaskAll
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUColorWriteMask where
-        pToJSVal WebGPUColorWriteMaskNone = js_WebGPUColorWriteMaskNone
-        pToJSVal WebGPUColorWriteMaskRed = js_WebGPUColorWriteMaskRed
-        pToJSVal WebGPUColorWriteMaskGreen = js_WebGPUColorWriteMaskGreen
-        pToJSVal WebGPUColorWriteMaskBlue = js_WebGPUColorWriteMaskBlue
-        pToJSVal WebGPUColorWriteMaskAlpha = js_WebGPUColorWriteMaskAlpha
-        pToJSVal WebGPUColorWriteMaskAll = js_WebGPUColorWriteMaskAll
- 
-instance ToJSVal WebGPUColorWriteMask where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUColorWriteMask where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUColorWriteMaskNone = WebGPUColorWriteMaskNone
-        pFromJSVal x
-          | x `js_eq` js_WebGPUColorWriteMaskRed = WebGPUColorWriteMaskRed
-        pFromJSVal x
-          | x `js_eq` js_WebGPUColorWriteMaskGreen =
-            WebGPUColorWriteMaskGreen
-        pFromJSVal x
-          | x `js_eq` js_WebGPUColorWriteMaskBlue = WebGPUColorWriteMaskBlue
-        pFromJSVal x
-          | x `js_eq` js_WebGPUColorWriteMaskAlpha =
-            WebGPUColorWriteMaskAlpha
-        pFromJSVal x
-          | x `js_eq` js_WebGPUColorWriteMaskAll = WebGPUColorWriteMaskAll
- 
-instance FromJSVal WebGPUColorWriteMask where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"none\"; })"
-        js_WebGPUColorWriteMaskNone :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"red\"; })"
-        js_WebGPUColorWriteMaskRed :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"green\"; })"
-        js_WebGPUColorWriteMaskGreen :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"blue\"; })"
-        js_WebGPUColorWriteMaskBlue :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"alpha\"; })"
-        js_WebGPUColorWriteMaskAlpha :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"all\"; })"
-        js_WebGPUColorWriteMaskAll :: JSVal
- 
-data WebGPUMultisampleDepthResolveFilter = WebGPUMultisampleDepthResolveFilterSample0
-                                         | WebGPUMultisampleDepthResolveFilterMin
-                                         | WebGPUMultisampleDepthResolveFilterMax
-                                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUMultisampleDepthResolveFilter where
-        pToJSVal WebGPUMultisampleDepthResolveFilterSample0
-          = js_WebGPUMultisampleDepthResolveFilterSample0
-        pToJSVal WebGPUMultisampleDepthResolveFilterMin
-          = js_WebGPUMultisampleDepthResolveFilterMin
-        pToJSVal WebGPUMultisampleDepthResolveFilterMax
-          = js_WebGPUMultisampleDepthResolveFilterMax
- 
-instance ToJSVal WebGPUMultisampleDepthResolveFilter where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUMultisampleDepthResolveFilter where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUMultisampleDepthResolveFilterSample0 =
-            WebGPUMultisampleDepthResolveFilterSample0
-        pFromJSVal x
-          | x `js_eq` js_WebGPUMultisampleDepthResolveFilterMin =
-            WebGPUMultisampleDepthResolveFilterMin
-        pFromJSVal x
-          | x `js_eq` js_WebGPUMultisampleDepthResolveFilterMax =
-            WebGPUMultisampleDepthResolveFilterMax
- 
-instance FromJSVal WebGPUMultisampleDepthResolveFilter where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"sample0\"; })"
-        js_WebGPUMultisampleDepthResolveFilterSample0 :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"min\"; })"
-        js_WebGPUMultisampleDepthResolveFilterMin :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"max\"; })"
-        js_WebGPUMultisampleDepthResolveFilterMax :: JSVal
- 
-data WebGPUFeatureSet = WebGPUFeatureSetLevel1
-                      | WebGPUFeatureSetLevel2
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal WebGPUFeatureSet where
-        pToJSVal WebGPUFeatureSetLevel1 = js_WebGPUFeatureSetLevel1
-        pToJSVal WebGPUFeatureSetLevel2 = js_WebGPUFeatureSetLevel2
- 
-instance ToJSVal WebGPUFeatureSet where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal WebGPUFeatureSet where
-        pFromJSVal x
-          | x `js_eq` js_WebGPUFeatureSetLevel1 = WebGPUFeatureSetLevel1
-        pFromJSVal x
-          | x `js_eq` js_WebGPUFeatureSetLevel2 = WebGPUFeatureSetLevel2
- 
-instance FromJSVal WebGPUFeatureSet where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"level1\"; })"
-        js_WebGPUFeatureSetLevel1 :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"level2\"; })"
-        js_WebGPUFeatureSetLevel2 :: JSVal
- 
-data VideoPresentationMode = VideoPresentationModeFullscreen
-                           | VideoPresentationModePictureInPicture
-                           | VideoPresentationModeInline
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal VideoPresentationMode where
-        pToJSVal VideoPresentationModeFullscreen
-          = js_VideoPresentationModeFullscreen
-        pToJSVal VideoPresentationModePictureInPicture
-          = js_VideoPresentationModePictureInPicture
-        pToJSVal VideoPresentationModeInline
-          = js_VideoPresentationModeInline
- 
-instance ToJSVal VideoPresentationMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal VideoPresentationMode where
-        pFromJSVal x
-          | x `js_eq` js_VideoPresentationModeFullscreen =
-            VideoPresentationModeFullscreen
-        pFromJSVal x
-          | x `js_eq` js_VideoPresentationModePictureInPicture =
-            VideoPresentationModePictureInPicture
-        pFromJSVal x
-          | x `js_eq` js_VideoPresentationModeInline =
-            VideoPresentationModeInline
- 
-instance FromJSVal VideoPresentationMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"fullscreen\"; })"
-        js_VideoPresentationModeFullscreen :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"picture-in-picture\"; })"
-        js_VideoPresentationModePictureInPicture :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"inline\"; })"
-        js_VideoPresentationModeInline :: JSVal
- 
-data TextTrackMode = TextTrackModeDisabled
-                   | TextTrackModeHidden
-                   | TextTrackModeShowing
-                   deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal TextTrackMode where
-        pToJSVal TextTrackModeDisabled = js_TextTrackModeDisabled
-        pToJSVal TextTrackModeHidden = js_TextTrackModeHidden
-        pToJSVal TextTrackModeShowing = js_TextTrackModeShowing
- 
-instance ToJSVal TextTrackMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal TextTrackMode where
-        pFromJSVal x
-          | x `js_eq` js_TextTrackModeDisabled = TextTrackModeDisabled
-        pFromJSVal x
-          | x `js_eq` js_TextTrackModeHidden = TextTrackModeHidden
-        pFromJSVal x
-          | x `js_eq` js_TextTrackModeShowing = TextTrackModeShowing
- 
-instance FromJSVal TextTrackMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"disabled\"; })"
-        js_TextTrackModeDisabled :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"hidden\"; })"
-        js_TextTrackModeHidden :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"showing\"; })"
-        js_TextTrackModeShowing :: JSVal
- 
-data TextTrackKind = TextTrackKindSubtitles
-                   | TextTrackKindCaptions
-                   | TextTrackKindDescriptions
-                   | TextTrackKindChapters
-                   | TextTrackKindMetadata
-                   | TextTrackKindForced
-                   deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal TextTrackKind where
-        pToJSVal TextTrackKindSubtitles = js_TextTrackKindSubtitles
-        pToJSVal TextTrackKindCaptions = js_TextTrackKindCaptions
-        pToJSVal TextTrackKindDescriptions = js_TextTrackKindDescriptions
-        pToJSVal TextTrackKindChapters = js_TextTrackKindChapters
-        pToJSVal TextTrackKindMetadata = js_TextTrackKindMetadata
-        pToJSVal TextTrackKindForced = js_TextTrackKindForced
- 
-instance ToJSVal TextTrackKind where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal TextTrackKind where
-        pFromJSVal x
-          | x `js_eq` js_TextTrackKindSubtitles = TextTrackKindSubtitles
-        pFromJSVal x
-          | x `js_eq` js_TextTrackKindCaptions = TextTrackKindCaptions
-        pFromJSVal x
-          | x `js_eq` js_TextTrackKindDescriptions =
-            TextTrackKindDescriptions
-        pFromJSVal x
-          | x `js_eq` js_TextTrackKindChapters = TextTrackKindChapters
-        pFromJSVal x
-          | x `js_eq` js_TextTrackKindMetadata = TextTrackKindMetadata
-        pFromJSVal x
-          | x `js_eq` js_TextTrackKindForced = TextTrackKindForced
- 
-instance FromJSVal TextTrackKind where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"subtitles\"; })"
-        js_TextTrackKindSubtitles :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"captions\"; })"
-        js_TextTrackKindCaptions :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"descriptions\"; })"
-        js_TextTrackKindDescriptions :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"chapters\"; })"
-        js_TextTrackKindChapters :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"metadata\"; })"
-        js_TextTrackKindMetadata :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"forced\"; })"
-        js_TextTrackKindForced :: JSVal
- 
-data ApplePayErrorCode = ApplePayErrorCodeUnknown
-                       | ApplePayErrorCodeShippingContactInvalid
-                       | ApplePayErrorCodeBillingContactInvalid
-                       | ApplePayErrorCodeAddressUnservicable
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayErrorCode where
-        pToJSVal ApplePayErrorCodeUnknown = js_ApplePayErrorCodeUnknown
-        pToJSVal ApplePayErrorCodeShippingContactInvalid
-          = js_ApplePayErrorCodeShippingContactInvalid
-        pToJSVal ApplePayErrorCodeBillingContactInvalid
-          = js_ApplePayErrorCodeBillingContactInvalid
-        pToJSVal ApplePayErrorCodeAddressUnservicable
-          = js_ApplePayErrorCodeAddressUnservicable
- 
-instance ToJSVal ApplePayErrorCode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayErrorCode where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorCodeUnknown = ApplePayErrorCodeUnknown
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorCodeShippingContactInvalid =
-            ApplePayErrorCodeShippingContactInvalid
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorCodeBillingContactInvalid =
-            ApplePayErrorCodeBillingContactInvalid
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorCodeAddressUnservicable =
-            ApplePayErrorCodeAddressUnservicable
- 
-instance FromJSVal ApplePayErrorCode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"unknown\"; })"
-        js_ApplePayErrorCodeUnknown :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"shippingContactInvalid\"; })"
-        js_ApplePayErrorCodeShippingContactInvalid :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"billingContactInvalid\"; })"
-        js_ApplePayErrorCodeBillingContactInvalid :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"addressUnservicable\"; })"
-        js_ApplePayErrorCodeAddressUnservicable :: JSVal
- 
-data ApplePayErrorContactField = ApplePayErrorContactFieldPhoneNumber
-                               | ApplePayErrorContactFieldEmailAddress
-                               | ApplePayErrorContactFieldName
-                               | ApplePayErrorContactFieldPostalAddress
-                               | ApplePayErrorContactFieldAddressLines
-                               | ApplePayErrorContactFieldLocality
-                               | ApplePayErrorContactFieldPostalCode
-                               | ApplePayErrorContactFieldAdministrativeArea
-                               | ApplePayErrorContactFieldCountry
-                               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayErrorContactField where
-        pToJSVal ApplePayErrorContactFieldPhoneNumber
-          = js_ApplePayErrorContactFieldPhoneNumber
-        pToJSVal ApplePayErrorContactFieldEmailAddress
-          = js_ApplePayErrorContactFieldEmailAddress
-        pToJSVal ApplePayErrorContactFieldName
-          = js_ApplePayErrorContactFieldName
-        pToJSVal ApplePayErrorContactFieldPostalAddress
-          = js_ApplePayErrorContactFieldPostalAddress
-        pToJSVal ApplePayErrorContactFieldAddressLines
-          = js_ApplePayErrorContactFieldAddressLines
-        pToJSVal ApplePayErrorContactFieldLocality
-          = js_ApplePayErrorContactFieldLocality
-        pToJSVal ApplePayErrorContactFieldPostalCode
-          = js_ApplePayErrorContactFieldPostalCode
-        pToJSVal ApplePayErrorContactFieldAdministrativeArea
-          = js_ApplePayErrorContactFieldAdministrativeArea
-        pToJSVal ApplePayErrorContactFieldCountry
-          = js_ApplePayErrorContactFieldCountry
- 
-instance ToJSVal ApplePayErrorContactField where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayErrorContactField where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldPhoneNumber =
-            ApplePayErrorContactFieldPhoneNumber
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldEmailAddress =
-            ApplePayErrorContactFieldEmailAddress
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldName =
-            ApplePayErrorContactFieldName
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldPostalAddress =
-            ApplePayErrorContactFieldPostalAddress
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldAddressLines =
-            ApplePayErrorContactFieldAddressLines
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldLocality =
-            ApplePayErrorContactFieldLocality
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldPostalCode =
-            ApplePayErrorContactFieldPostalCode
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldAdministrativeArea =
-            ApplePayErrorContactFieldAdministrativeArea
-        pFromJSVal x
-          | x `js_eq` js_ApplePayErrorContactFieldCountry =
-            ApplePayErrorContactFieldCountry
- 
-instance FromJSVal ApplePayErrorContactField where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"phoneNumber\"; })"
-        js_ApplePayErrorContactFieldPhoneNumber :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"emailAddress\"; })"
-        js_ApplePayErrorContactFieldEmailAddress :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"name\"; })"
-        js_ApplePayErrorContactFieldName :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"postalAddress\"; })"
-        js_ApplePayErrorContactFieldPostalAddress :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"addressLines\"; })"
-        js_ApplePayErrorContactFieldAddressLines :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"locality\"; })"
-        js_ApplePayErrorContactFieldLocality :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"postalCode\"; })"
-        js_ApplePayErrorContactFieldPostalCode :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"administrativeArea\"; })"
-        js_ApplePayErrorContactFieldAdministrativeArea :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"country\"; })"
-        js_ApplePayErrorContactFieldCountry :: JSVal
- 
-data ApplePayLineItemType = ApplePayLineItemTypePending
-                          | ApplePayLineItemTypeFinal
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayLineItemType where
-        pToJSVal ApplePayLineItemTypePending
-          = js_ApplePayLineItemTypePending
-        pToJSVal ApplePayLineItemTypeFinal = js_ApplePayLineItemTypeFinal
- 
-instance ToJSVal ApplePayLineItemType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayLineItemType where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayLineItemTypePending =
-            ApplePayLineItemTypePending
-        pFromJSVal x
-          | x `js_eq` js_ApplePayLineItemTypeFinal =
-            ApplePayLineItemTypeFinal
- 
-instance FromJSVal ApplePayLineItemType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"pending\"; })"
-        js_ApplePayLineItemTypePending :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"final\"; })"
-        js_ApplePayLineItemTypeFinal :: JSVal
- 
-data ApplePayPaymentMethodType = ApplePayPaymentMethodTypeDebit
-                               | ApplePayPaymentMethodTypeCredit
-                               | ApplePayPaymentMethodTypePrepaid
-                               | ApplePayPaymentMethodTypeStore
-                               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayPaymentMethodType where
-        pToJSVal ApplePayPaymentMethodTypeDebit
-          = js_ApplePayPaymentMethodTypeDebit
-        pToJSVal ApplePayPaymentMethodTypeCredit
-          = js_ApplePayPaymentMethodTypeCredit
-        pToJSVal ApplePayPaymentMethodTypePrepaid
-          = js_ApplePayPaymentMethodTypePrepaid
-        pToJSVal ApplePayPaymentMethodTypeStore
-          = js_ApplePayPaymentMethodTypeStore
- 
-instance ToJSVal ApplePayPaymentMethodType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayPaymentMethodType where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentMethodTypeDebit =
-            ApplePayPaymentMethodTypeDebit
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentMethodTypeCredit =
-            ApplePayPaymentMethodTypeCredit
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentMethodTypePrepaid =
-            ApplePayPaymentMethodTypePrepaid
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentMethodTypeStore =
-            ApplePayPaymentMethodTypeStore
- 
-instance FromJSVal ApplePayPaymentMethodType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"debit\"; })"
-        js_ApplePayPaymentMethodTypeDebit :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"credit\"; })"
-        js_ApplePayPaymentMethodTypeCredit :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"prepaid\"; })"
-        js_ApplePayPaymentMethodTypePrepaid :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"store\"; })"
-        js_ApplePayPaymentMethodTypeStore :: JSVal
- 
-data ApplePayPaymentPassActivationState = ApplePayPaymentPassActivationStateActivated
-                                        | ApplePayPaymentPassActivationStateRequiresActivation
-                                        | ApplePayPaymentPassActivationStateActivating
-                                        | ApplePayPaymentPassActivationStateSuspended
-                                        | ApplePayPaymentPassActivationStateDeactivated
-                                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayPaymentPassActivationState where
-        pToJSVal ApplePayPaymentPassActivationStateActivated
-          = js_ApplePayPaymentPassActivationStateActivated
-        pToJSVal ApplePayPaymentPassActivationStateRequiresActivation
-          = js_ApplePayPaymentPassActivationStateRequiresActivation
-        pToJSVal ApplePayPaymentPassActivationStateActivating
-          = js_ApplePayPaymentPassActivationStateActivating
-        pToJSVal ApplePayPaymentPassActivationStateSuspended
-          = js_ApplePayPaymentPassActivationStateSuspended
-        pToJSVal ApplePayPaymentPassActivationStateDeactivated
-          = js_ApplePayPaymentPassActivationStateDeactivated
- 
-instance ToJSVal ApplePayPaymentPassActivationState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayPaymentPassActivationState where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentPassActivationStateActivated =
-            ApplePayPaymentPassActivationStateActivated
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentPassActivationStateRequiresActivation
-            = ApplePayPaymentPassActivationStateRequiresActivation
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentPassActivationStateActivating =
-            ApplePayPaymentPassActivationStateActivating
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentPassActivationStateSuspended =
-            ApplePayPaymentPassActivationStateSuspended
-        pFromJSVal x
-          | x `js_eq` js_ApplePayPaymentPassActivationStateDeactivated =
-            ApplePayPaymentPassActivationStateDeactivated
- 
-instance FromJSVal ApplePayPaymentPassActivationState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"activated\"; })"
-        js_ApplePayPaymentPassActivationStateActivated :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"requiresActivation\"; })"
-        js_ApplePayPaymentPassActivationStateRequiresActivation :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"activating\"; })"
-        js_ApplePayPaymentPassActivationStateActivating :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"suspended\"; })"
-        js_ApplePayPaymentPassActivationStateSuspended :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"deactivated\"; })"
-        js_ApplePayPaymentPassActivationStateDeactivated :: JSVal
- 
-data ApplePayMerchantCapability = ApplePayMerchantCapabilitySupports3DS
-                                | ApplePayMerchantCapabilitySupportsEMV
-                                | ApplePayMerchantCapabilitySupportsCredit
-                                | ApplePayMerchantCapabilitySupportsDebit
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayMerchantCapability where
-        pToJSVal ApplePayMerchantCapabilitySupports3DS
-          = js_ApplePayMerchantCapabilitySupports3DS
-        pToJSVal ApplePayMerchantCapabilitySupportsEMV
-          = js_ApplePayMerchantCapabilitySupportsEMV
-        pToJSVal ApplePayMerchantCapabilitySupportsCredit
-          = js_ApplePayMerchantCapabilitySupportsCredit
-        pToJSVal ApplePayMerchantCapabilitySupportsDebit
-          = js_ApplePayMerchantCapabilitySupportsDebit
- 
-instance ToJSVal ApplePayMerchantCapability where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayMerchantCapability where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayMerchantCapabilitySupports3DS =
-            ApplePayMerchantCapabilitySupports3DS
-        pFromJSVal x
-          | x `js_eq` js_ApplePayMerchantCapabilitySupportsEMV =
-            ApplePayMerchantCapabilitySupportsEMV
-        pFromJSVal x
-          | x `js_eq` js_ApplePayMerchantCapabilitySupportsCredit =
-            ApplePayMerchantCapabilitySupportsCredit
-        pFromJSVal x
-          | x `js_eq` js_ApplePayMerchantCapabilitySupportsDebit =
-            ApplePayMerchantCapabilitySupportsDebit
- 
-instance FromJSVal ApplePayMerchantCapability where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"supports3DS\"; })"
-        js_ApplePayMerchantCapabilitySupports3DS :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"supportsEMV\"; })"
-        js_ApplePayMerchantCapabilitySupportsEMV :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"supportsCredit\"; })"
-        js_ApplePayMerchantCapabilitySupportsCredit :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"supportsDebit\"; })"
-        js_ApplePayMerchantCapabilitySupportsDebit :: JSVal
- 
-data ApplePayContactField = ApplePayContactFieldEmail
-                          | ApplePayContactFieldName
-                          | ApplePayContactFieldPhone
-                          | ApplePayContactFieldPostalAddress
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayContactField where
-        pToJSVal ApplePayContactFieldEmail = js_ApplePayContactFieldEmail
-        pToJSVal ApplePayContactFieldName = js_ApplePayContactFieldName
-        pToJSVal ApplePayContactFieldPhone = js_ApplePayContactFieldPhone
-        pToJSVal ApplePayContactFieldPostalAddress
-          = js_ApplePayContactFieldPostalAddress
- 
-instance ToJSVal ApplePayContactField where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayContactField where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayContactFieldEmail =
-            ApplePayContactFieldEmail
-        pFromJSVal x
-          | x `js_eq` js_ApplePayContactFieldName = ApplePayContactFieldName
-        pFromJSVal x
-          | x `js_eq` js_ApplePayContactFieldPhone =
-            ApplePayContactFieldPhone
-        pFromJSVal x
-          | x `js_eq` js_ApplePayContactFieldPostalAddress =
-            ApplePayContactFieldPostalAddress
- 
-instance FromJSVal ApplePayContactField where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"email\"; })"
-        js_ApplePayContactFieldEmail :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"name\"; })"
-        js_ApplePayContactFieldName :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"phone\"; })"
-        js_ApplePayContactFieldPhone :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"postalAddress\"; })"
-        js_ApplePayContactFieldPostalAddress :: JSVal
- 
-data ApplePayShippingType = ApplePayShippingTypeShipping
-                          | ApplePayShippingTypeDelivery
-                          | ApplePayShippingTypeStorePickup
-                          | ApplePayShippingTypeServicePickup
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ApplePayShippingType where
-        pToJSVal ApplePayShippingTypeShipping
-          = js_ApplePayShippingTypeShipping
-        pToJSVal ApplePayShippingTypeDelivery
-          = js_ApplePayShippingTypeDelivery
-        pToJSVal ApplePayShippingTypeStorePickup
-          = js_ApplePayShippingTypeStorePickup
-        pToJSVal ApplePayShippingTypeServicePickup
-          = js_ApplePayShippingTypeServicePickup
- 
-instance ToJSVal ApplePayShippingType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ApplePayShippingType where
-        pFromJSVal x
-          | x `js_eq` js_ApplePayShippingTypeShipping =
-            ApplePayShippingTypeShipping
-        pFromJSVal x
-          | x `js_eq` js_ApplePayShippingTypeDelivery =
-            ApplePayShippingTypeDelivery
-        pFromJSVal x
-          | x `js_eq` js_ApplePayShippingTypeStorePickup =
-            ApplePayShippingTypeStorePickup
-        pFromJSVal x
-          | x `js_eq` js_ApplePayShippingTypeServicePickup =
-            ApplePayShippingTypeServicePickup
- 
-instance FromJSVal ApplePayShippingType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"shipping\"; })"
-        js_ApplePayShippingTypeShipping :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"delivery\"; })"
-        js_ApplePayShippingTypeDelivery :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"storePickup\"; })"
-        js_ApplePayShippingTypeStorePickup :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"servicePickup\"; })"
-        js_ApplePayShippingTypeServicePickup :: JSVal
- 
-data MediaKeyMessageType = MediaKeyMessageTypeLicenseRequest
-                         | MediaKeyMessageTypeLicenseRenewal
-                         | MediaKeyMessageTypeLicenseRelease
-                         | MediaKeyMessageTypeIndividualizationRequest
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal MediaKeyMessageType where
-        pToJSVal MediaKeyMessageTypeLicenseRequest
-          = js_MediaKeyMessageTypeLicenseRequest
-        pToJSVal MediaKeyMessageTypeLicenseRenewal
-          = js_MediaKeyMessageTypeLicenseRenewal
-        pToJSVal MediaKeyMessageTypeLicenseRelease
-          = js_MediaKeyMessageTypeLicenseRelease
-        pToJSVal MediaKeyMessageTypeIndividualizationRequest
-          = js_MediaKeyMessageTypeIndividualizationRequest
- 
-instance ToJSVal MediaKeyMessageType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal MediaKeyMessageType where
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyMessageTypeLicenseRequest =
-            MediaKeyMessageTypeLicenseRequest
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyMessageTypeLicenseRenewal =
-            MediaKeyMessageTypeLicenseRenewal
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyMessageTypeLicenseRelease =
-            MediaKeyMessageTypeLicenseRelease
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyMessageTypeIndividualizationRequest =
-            MediaKeyMessageTypeIndividualizationRequest
- 
-instance FromJSVal MediaKeyMessageType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"license-request\"; })"
-        js_MediaKeyMessageTypeLicenseRequest :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"license-renewal\"; })"
-        js_MediaKeyMessageTypeLicenseRenewal :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"license-release\"; })"
-        js_MediaKeyMessageTypeLicenseRelease :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"individualization-request\"; })"
-        js_MediaKeyMessageTypeIndividualizationRequest :: JSVal
- 
-data MediaKeySessionType = MediaKeySessionTypeTemporary
-                         | MediaKeySessionTypePersistentUsageRecord
-                         | MediaKeySessionTypePersistentLicense
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal MediaKeySessionType where
-        pToJSVal MediaKeySessionTypeTemporary
-          = js_MediaKeySessionTypeTemporary
-        pToJSVal MediaKeySessionTypePersistentUsageRecord
-          = js_MediaKeySessionTypePersistentUsageRecord
-        pToJSVal MediaKeySessionTypePersistentLicense
-          = js_MediaKeySessionTypePersistentLicense
- 
-instance ToJSVal MediaKeySessionType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal MediaKeySessionType where
-        pFromJSVal x
-          | x `js_eq` js_MediaKeySessionTypeTemporary =
-            MediaKeySessionTypeTemporary
-        pFromJSVal x
-          | x `js_eq` js_MediaKeySessionTypePersistentUsageRecord =
-            MediaKeySessionTypePersistentUsageRecord
-        pFromJSVal x
-          | x `js_eq` js_MediaKeySessionTypePersistentLicense =
-            MediaKeySessionTypePersistentLicense
- 
-instance FromJSVal MediaKeySessionType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"temporary\"; })"
-        js_MediaKeySessionTypeTemporary :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"persistent-usage-record\"; })"
-        js_MediaKeySessionTypePersistentUsageRecord :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"persistent-license\"; })"
-        js_MediaKeySessionTypePersistentLicense :: JSVal
- 
-data MediaKeysRequirement = MediaKeysRequirementRequired
-                          | MediaKeysRequirementOptional
-                          | MediaKeysRequirementNotAllowed
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal MediaKeysRequirement where
-        pToJSVal MediaKeysRequirementRequired
-          = js_MediaKeysRequirementRequired
-        pToJSVal MediaKeysRequirementOptional
-          = js_MediaKeysRequirementOptional
-        pToJSVal MediaKeysRequirementNotAllowed
-          = js_MediaKeysRequirementNotAllowed
- 
-instance ToJSVal MediaKeysRequirement where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal MediaKeysRequirement where
-        pFromJSVal x
-          | x `js_eq` js_MediaKeysRequirementRequired =
-            MediaKeysRequirementRequired
-        pFromJSVal x
-          | x `js_eq` js_MediaKeysRequirementOptional =
-            MediaKeysRequirementOptional
-        pFromJSVal x
-          | x `js_eq` js_MediaKeysRequirementNotAllowed =
-            MediaKeysRequirementNotAllowed
- 
-instance FromJSVal MediaKeysRequirement where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"required\"; })"
-        js_MediaKeysRequirementRequired :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"optional\"; })"
-        js_MediaKeysRequirementOptional :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"not-allowed\"; })"
-        js_MediaKeysRequirementNotAllowed :: JSVal
- 
-data MediaKeyStatus = MediaKeyStatusUsable
-                    | MediaKeyStatusExpired
-                    | MediaKeyStatusReleased
-                    | MediaKeyStatusOutputRestricted
-                    | MediaKeyStatusOutputDownscaled
-                    | MediaKeyStatusStatusPending
-                    | MediaKeyStatusInternalError
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal MediaKeyStatus where
-        pToJSVal MediaKeyStatusUsable = js_MediaKeyStatusUsable
-        pToJSVal MediaKeyStatusExpired = js_MediaKeyStatusExpired
-        pToJSVal MediaKeyStatusReleased = js_MediaKeyStatusReleased
-        pToJSVal MediaKeyStatusOutputRestricted
-          = js_MediaKeyStatusOutputRestricted
-        pToJSVal MediaKeyStatusOutputDownscaled
-          = js_MediaKeyStatusOutputDownscaled
-        pToJSVal MediaKeyStatusStatusPending
-          = js_MediaKeyStatusStatusPending
-        pToJSVal MediaKeyStatusInternalError
-          = js_MediaKeyStatusInternalError
- 
-instance ToJSVal MediaKeyStatus where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal MediaKeyStatus where
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyStatusUsable = MediaKeyStatusUsable
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyStatusExpired = MediaKeyStatusExpired
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyStatusReleased = MediaKeyStatusReleased
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyStatusOutputRestricted =
-            MediaKeyStatusOutputRestricted
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyStatusOutputDownscaled =
-            MediaKeyStatusOutputDownscaled
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyStatusStatusPending =
-            MediaKeyStatusStatusPending
-        pFromJSVal x
-          | x `js_eq` js_MediaKeyStatusInternalError =
-            MediaKeyStatusInternalError
- 
-instance FromJSVal MediaKeyStatus where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"usable\"; })"
-        js_MediaKeyStatusUsable :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"expired\"; })"
-        js_MediaKeyStatusExpired :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"released\"; })"
-        js_MediaKeyStatusReleased :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"output-restricted\"; })"
-        js_MediaKeyStatusOutputRestricted :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"output-downscaled\"; })"
-        js_MediaKeyStatusOutputDownscaled :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"status-pending\"; })"
-        js_MediaKeyStatusStatusPending :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"internal-error\"; })"
-        js_MediaKeyStatusInternalError :: JSVal
- 
-data RequestType = RequestType
-                 | RequestTypeAudio
-                 | RequestTypeFont
-                 | RequestTypeImage
-                 | RequestTypeScript
-                 | RequestTypeStyle
-                 | RequestTypeTrack
-                 | RequestTypeVideo
-                 deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RequestType where
-        pToJSVal RequestType = js_RequestType
-        pToJSVal RequestTypeAudio = js_RequestTypeAudio
-        pToJSVal RequestTypeFont = js_RequestTypeFont
-        pToJSVal RequestTypeImage = js_RequestTypeImage
-        pToJSVal RequestTypeScript = js_RequestTypeScript
-        pToJSVal RequestTypeStyle = js_RequestTypeStyle
-        pToJSVal RequestTypeTrack = js_RequestTypeTrack
-        pToJSVal RequestTypeVideo = js_RequestTypeVideo
- 
-instance ToJSVal RequestType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RequestType where
-        pFromJSVal x | x `js_eq` js_RequestType = RequestType
-        pFromJSVal x | x `js_eq` js_RequestTypeAudio = RequestTypeAudio
-        pFromJSVal x | x `js_eq` js_RequestTypeFont = RequestTypeFont
-        pFromJSVal x | x `js_eq` js_RequestTypeImage = RequestTypeImage
-        pFromJSVal x | x `js_eq` js_RequestTypeScript = RequestTypeScript
-        pFromJSVal x | x `js_eq` js_RequestTypeStyle = RequestTypeStyle
-        pFromJSVal x | x `js_eq` js_RequestTypeTrack = RequestTypeTrack
-        pFromJSVal x | x `js_eq` js_RequestTypeVideo = RequestTypeVideo
- 
-instance FromJSVal RequestType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"\"; })" js_RequestType :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"audio\"; })" js_RequestTypeAudio ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"font\"; })" js_RequestTypeFont ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"image\"; })" js_RequestTypeImage ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"script\"; })" js_RequestTypeScript
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"style\"; })" js_RequestTypeStyle ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"track\"; })" js_RequestTypeTrack ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"video\"; })" js_RequestTypeVideo ::
-        JSVal
- 
-data RequestDestination = RequestDestination
-                        | RequestDestinationDocument
-                        | RequestDestinationSharedworker
-                        | RequestDestinationSubresource
-                        | RequestDestinationUnknown
-                        | RequestDestinationWorker
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RequestDestination where
-        pToJSVal RequestDestination = js_RequestDestination
-        pToJSVal RequestDestinationDocument = js_RequestDestinationDocument
-        pToJSVal RequestDestinationSharedworker
-          = js_RequestDestinationSharedworker
-        pToJSVal RequestDestinationSubresource
-          = js_RequestDestinationSubresource
-        pToJSVal RequestDestinationUnknown = js_RequestDestinationUnknown
-        pToJSVal RequestDestinationWorker = js_RequestDestinationWorker
- 
-instance ToJSVal RequestDestination where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RequestDestination where
-        pFromJSVal x | x `js_eq` js_RequestDestination = RequestDestination
-        pFromJSVal x
-          | x `js_eq` js_RequestDestinationDocument =
-            RequestDestinationDocument
-        pFromJSVal x
-          | x `js_eq` js_RequestDestinationSharedworker =
-            RequestDestinationSharedworker
-        pFromJSVal x
-          | x `js_eq` js_RequestDestinationSubresource =
-            RequestDestinationSubresource
-        pFromJSVal x
-          | x `js_eq` js_RequestDestinationUnknown =
-            RequestDestinationUnknown
-        pFromJSVal x
-          | x `js_eq` js_RequestDestinationWorker = RequestDestinationWorker
- 
-instance FromJSVal RequestDestination where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"\"; })" js_RequestDestination ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"document\"; })"
-        js_RequestDestinationDocument :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sharedworker\"; })"
-        js_RequestDestinationSharedworker :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"subresource\"; })"
-        js_RequestDestinationSubresource :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"unknown\"; })"
-        js_RequestDestinationUnknown :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"worker\"; })"
-        js_RequestDestinationWorker :: JSVal
- 
-data RequestMode = RequestModeNavigate
-                 | RequestModeSameOrigin
-                 | RequestModeNoCors
-                 | RequestModeCors
-                 deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RequestMode where
-        pToJSVal RequestModeNavigate = js_RequestModeNavigate
-        pToJSVal RequestModeSameOrigin = js_RequestModeSameOrigin
-        pToJSVal RequestModeNoCors = js_RequestModeNoCors
-        pToJSVal RequestModeCors = js_RequestModeCors
- 
-instance ToJSVal RequestMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RequestMode where
-        pFromJSVal x
-          | x `js_eq` js_RequestModeNavigate = RequestModeNavigate
-        pFromJSVal x
-          | x `js_eq` js_RequestModeSameOrigin = RequestModeSameOrigin
-        pFromJSVal x | x `js_eq` js_RequestModeNoCors = RequestModeNoCors
-        pFromJSVal x | x `js_eq` js_RequestModeCors = RequestModeCors
- 
-instance FromJSVal RequestMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"navigate\"; })"
-        js_RequestModeNavigate :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"same-origin\"; })"
-        js_RequestModeSameOrigin :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"no-cors\"; })" js_RequestModeNoCors
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"cors\"; })" js_RequestModeCors ::
-        JSVal
- 
-data RequestCredentials = RequestCredentialsOmit
-                        | RequestCredentialsSameOrigin
-                        | RequestCredentialsInclude
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RequestCredentials where
-        pToJSVal RequestCredentialsOmit = js_RequestCredentialsOmit
-        pToJSVal RequestCredentialsSameOrigin
-          = js_RequestCredentialsSameOrigin
-        pToJSVal RequestCredentialsInclude = js_RequestCredentialsInclude
- 
-instance ToJSVal RequestCredentials where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RequestCredentials where
-        pFromJSVal x
-          | x `js_eq` js_RequestCredentialsOmit = RequestCredentialsOmit
-        pFromJSVal x
-          | x `js_eq` js_RequestCredentialsSameOrigin =
-            RequestCredentialsSameOrigin
-        pFromJSVal x
-          | x `js_eq` js_RequestCredentialsInclude =
-            RequestCredentialsInclude
- 
-instance FromJSVal RequestCredentials where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"omit\"; })"
-        js_RequestCredentialsOmit :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"same-origin\"; })"
-        js_RequestCredentialsSameOrigin :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"include\"; })"
-        js_RequestCredentialsInclude :: JSVal
- 
-data RequestCache = RequestCacheDefault
-                  | RequestCacheNoStore
-                  | RequestCacheReload
-                  | RequestCacheNoCache
-                  | RequestCacheForceCache
-                  | RequestCacheOnlyIfCached
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RequestCache where
-        pToJSVal RequestCacheDefault = js_RequestCacheDefault
-        pToJSVal RequestCacheNoStore = js_RequestCacheNoStore
-        pToJSVal RequestCacheReload = js_RequestCacheReload
-        pToJSVal RequestCacheNoCache = js_RequestCacheNoCache
-        pToJSVal RequestCacheForceCache = js_RequestCacheForceCache
-        pToJSVal RequestCacheOnlyIfCached = js_RequestCacheOnlyIfCached
- 
-instance ToJSVal RequestCache where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RequestCache where
-        pFromJSVal x
-          | x `js_eq` js_RequestCacheDefault = RequestCacheDefault
-        pFromJSVal x
-          | x `js_eq` js_RequestCacheNoStore = RequestCacheNoStore
-        pFromJSVal x | x `js_eq` js_RequestCacheReload = RequestCacheReload
-        pFromJSVal x
-          | x `js_eq` js_RequestCacheNoCache = RequestCacheNoCache
-        pFromJSVal x
-          | x `js_eq` js_RequestCacheForceCache = RequestCacheForceCache
-        pFromJSVal x
-          | x `js_eq` js_RequestCacheOnlyIfCached = RequestCacheOnlyIfCached
- 
-instance FromJSVal RequestCache where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"default\"; })"
-        js_RequestCacheDefault :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"no-store\"; })"
-        js_RequestCacheNoStore :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"reload\"; })" js_RequestCacheReload
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"no-cache\"; })"
-        js_RequestCacheNoCache :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"force-cache\"; })"
-        js_RequestCacheForceCache :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"only-if-cached\"; })"
-        js_RequestCacheOnlyIfCached :: JSVal
- 
-data RequestRedirect = RequestRedirectFollow
-                     | RequestRedirectError
-                     | RequestRedirectManual
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RequestRedirect where
-        pToJSVal RequestRedirectFollow = js_RequestRedirectFollow
-        pToJSVal RequestRedirectError = js_RequestRedirectError
-        pToJSVal RequestRedirectManual = js_RequestRedirectManual
- 
-instance ToJSVal RequestRedirect where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RequestRedirect where
-        pFromJSVal x
-          | x `js_eq` js_RequestRedirectFollow = RequestRedirectFollow
-        pFromJSVal x
-          | x `js_eq` js_RequestRedirectError = RequestRedirectError
-        pFromJSVal x
-          | x `js_eq` js_RequestRedirectManual = RequestRedirectManual
- 
-instance FromJSVal RequestRedirect where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"follow\"; })"
-        js_RequestRedirectFollow :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"error\"; })"
-        js_RequestRedirectError :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"manual\"; })"
-        js_RequestRedirectManual :: JSVal
- 
-data ReferrerPolicy = ReferrerPolicy
-                    | ReferrerPolicyNoReferrer
-                    | ReferrerPolicyNoReferrerWhenDowngrade
-                    | ReferrerPolicyOrigin
-                    | ReferrerPolicyOriginWhenCrossOrigin
-                    | ReferrerPolicyUnsafeUrl
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ReferrerPolicy where
-        pToJSVal ReferrerPolicy = js_ReferrerPolicy
-        pToJSVal ReferrerPolicyNoReferrer = js_ReferrerPolicyNoReferrer
-        pToJSVal ReferrerPolicyNoReferrerWhenDowngrade
-          = js_ReferrerPolicyNoReferrerWhenDowngrade
-        pToJSVal ReferrerPolicyOrigin = js_ReferrerPolicyOrigin
-        pToJSVal ReferrerPolicyOriginWhenCrossOrigin
-          = js_ReferrerPolicyOriginWhenCrossOrigin
-        pToJSVal ReferrerPolicyUnsafeUrl = js_ReferrerPolicyUnsafeUrl
- 
-instance ToJSVal ReferrerPolicy where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ReferrerPolicy where
-        pFromJSVal x | x `js_eq` js_ReferrerPolicy = ReferrerPolicy
-        pFromJSVal x
-          | x `js_eq` js_ReferrerPolicyNoReferrer = ReferrerPolicyNoReferrer
-        pFromJSVal x
-          | x `js_eq` js_ReferrerPolicyNoReferrerWhenDowngrade =
-            ReferrerPolicyNoReferrerWhenDowngrade
-        pFromJSVal x
-          | x `js_eq` js_ReferrerPolicyOrigin = ReferrerPolicyOrigin
-        pFromJSVal x
-          | x `js_eq` js_ReferrerPolicyOriginWhenCrossOrigin =
-            ReferrerPolicyOriginWhenCrossOrigin
-        pFromJSVal x
-          | x `js_eq` js_ReferrerPolicyUnsafeUrl = ReferrerPolicyUnsafeUrl
- 
-instance FromJSVal ReferrerPolicy where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"\"; })" js_ReferrerPolicy :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"no-referrer\"; })"
-        js_ReferrerPolicyNoReferrer :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"no-referrer-when-downgrade\"; })"
-        js_ReferrerPolicyNoReferrerWhenDowngrade :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"origin\"; })"
-        js_ReferrerPolicyOrigin :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"origin-when-cross-origin\"; })"
-        js_ReferrerPolicyOriginWhenCrossOrigin :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"unsafe-url\"; })"
-        js_ReferrerPolicyUnsafeUrl :: JSVal
- 
-data ResponseType = ResponseTypeBasic
-                  | ResponseTypeCors
-                  | ResponseTypeDefault
-                  | ResponseTypeError
-                  | ResponseTypeOpaque
-                  | ResponseTypeOpaqueredirect
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ResponseType where
-        pToJSVal ResponseTypeBasic = js_ResponseTypeBasic
-        pToJSVal ResponseTypeCors = js_ResponseTypeCors
-        pToJSVal ResponseTypeDefault = js_ResponseTypeDefault
-        pToJSVal ResponseTypeError = js_ResponseTypeError
-        pToJSVal ResponseTypeOpaque = js_ResponseTypeOpaque
-        pToJSVal ResponseTypeOpaqueredirect = js_ResponseTypeOpaqueredirect
- 
-instance ToJSVal ResponseType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ResponseType where
-        pFromJSVal x | x `js_eq` js_ResponseTypeBasic = ResponseTypeBasic
-        pFromJSVal x | x `js_eq` js_ResponseTypeCors = ResponseTypeCors
-        pFromJSVal x
-          | x `js_eq` js_ResponseTypeDefault = ResponseTypeDefault
-        pFromJSVal x | x `js_eq` js_ResponseTypeError = ResponseTypeError
-        pFromJSVal x | x `js_eq` js_ResponseTypeOpaque = ResponseTypeOpaque
-        pFromJSVal x
-          | x `js_eq` js_ResponseTypeOpaqueredirect =
-            ResponseTypeOpaqueredirect
- 
-instance FromJSVal ResponseType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"basic\"; })" js_ResponseTypeBasic
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"cors\"; })" js_ResponseTypeCors ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"default\"; })"
-        js_ResponseTypeDefault :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"error\"; })" js_ResponseTypeError
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"opaque\"; })" js_ResponseTypeOpaque
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"opaqueredirect\"; })"
-        js_ResponseTypeOpaqueredirect :: JSVal
- 
-data IDBCursorDirection = IDBCursorDirectionNext
-                        | IDBCursorDirectionNextunique
-                        | IDBCursorDirectionPrev
-                        | IDBCursorDirectionPrevunique
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal IDBCursorDirection where
-        pToJSVal IDBCursorDirectionNext = js_IDBCursorDirectionNext
-        pToJSVal IDBCursorDirectionNextunique
-          = js_IDBCursorDirectionNextunique
-        pToJSVal IDBCursorDirectionPrev = js_IDBCursorDirectionPrev
-        pToJSVal IDBCursorDirectionPrevunique
-          = js_IDBCursorDirectionPrevunique
- 
-instance ToJSVal IDBCursorDirection where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal IDBCursorDirection where
-        pFromJSVal x
-          | x `js_eq` js_IDBCursorDirectionNext = IDBCursorDirectionNext
-        pFromJSVal x
-          | x `js_eq` js_IDBCursorDirectionNextunique =
-            IDBCursorDirectionNextunique
-        pFromJSVal x
-          | x `js_eq` js_IDBCursorDirectionPrev = IDBCursorDirectionPrev
-        pFromJSVal x
-          | x `js_eq` js_IDBCursorDirectionPrevunique =
-            IDBCursorDirectionPrevunique
- 
-instance FromJSVal IDBCursorDirection where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"next\"; })"
-        js_IDBCursorDirectionNext :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"nextunique\"; })"
-        js_IDBCursorDirectionNextunique :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"prev\"; })"
-        js_IDBCursorDirectionPrev :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"prevunique\"; })"
-        js_IDBCursorDirectionPrevunique :: JSVal
- 
-data IDBRequestReadyState = IDBRequestReadyStatePending
-                          | IDBRequestReadyStateDone
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal IDBRequestReadyState where
-        pToJSVal IDBRequestReadyStatePending
-          = js_IDBRequestReadyStatePending
-        pToJSVal IDBRequestReadyStateDone = js_IDBRequestReadyStateDone
- 
-instance ToJSVal IDBRequestReadyState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal IDBRequestReadyState where
-        pFromJSVal x
-          | x `js_eq` js_IDBRequestReadyStatePending =
-            IDBRequestReadyStatePending
-        pFromJSVal x
-          | x `js_eq` js_IDBRequestReadyStateDone = IDBRequestReadyStateDone
- 
-instance FromJSVal IDBRequestReadyState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"pending\"; })"
-        js_IDBRequestReadyStatePending :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"done\"; })"
-        js_IDBRequestReadyStateDone :: JSVal
- 
-data IDBTransactionMode = IDBTransactionModeReadonly
-                        | IDBTransactionModeReadwrite
-                        | IDBTransactionModeVersionchange
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal IDBTransactionMode where
-        pToJSVal IDBTransactionModeReadonly = js_IDBTransactionModeReadonly
-        pToJSVal IDBTransactionModeReadwrite
-          = js_IDBTransactionModeReadwrite
-        pToJSVal IDBTransactionModeVersionchange
-          = js_IDBTransactionModeVersionchange
- 
-instance ToJSVal IDBTransactionMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal IDBTransactionMode where
-        pFromJSVal x
-          | x `js_eq` js_IDBTransactionModeReadonly =
-            IDBTransactionModeReadonly
-        pFromJSVal x
-          | x `js_eq` js_IDBTransactionModeReadwrite =
-            IDBTransactionModeReadwrite
-        pFromJSVal x
-          | x `js_eq` js_IDBTransactionModeVersionchange =
-            IDBTransactionModeVersionchange
- 
-instance FromJSVal IDBTransactionMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"readonly\"; })"
-        js_IDBTransactionModeReadonly :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"readwrite\"; })"
-        js_IDBTransactionModeReadwrite :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"versionchange\"; })"
-        js_IDBTransactionModeVersionchange :: JSVal
- 
-data DeviceType = DeviceTypeNone
-                | DeviceTypeAirplay
-                | DeviceTypeTvout
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal DeviceType where
-        pToJSVal DeviceTypeNone = js_DeviceTypeNone
-        pToJSVal DeviceTypeAirplay = js_DeviceTypeAirplay
-        pToJSVal DeviceTypeTvout = js_DeviceTypeTvout
- 
-instance ToJSVal DeviceType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal DeviceType where
-        pFromJSVal x | x `js_eq` js_DeviceTypeNone = DeviceTypeNone
-        pFromJSVal x | x `js_eq` js_DeviceTypeAirplay = DeviceTypeAirplay
-        pFromJSVal x | x `js_eq` js_DeviceTypeTvout = DeviceTypeTvout
- 
-instance FromJSVal DeviceType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"none\"; })" js_DeviceTypeNone ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"airplay\"; })" js_DeviceTypeAirplay
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"tvout\"; })" js_DeviceTypeTvout ::
-        JSVal
- 
-data MediaSessionKind = MediaSessionKindContent
-                      | MediaSessionKindTransient
-                      | MediaSessionKindTransientSolo
-                      | MediaSessionKindAmbient
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal MediaSessionKind where
-        pToJSVal MediaSessionKindContent = js_MediaSessionKindContent
-        pToJSVal MediaSessionKindTransient = js_MediaSessionKindTransient
-        pToJSVal MediaSessionKindTransientSolo
-          = js_MediaSessionKindTransientSolo
-        pToJSVal MediaSessionKindAmbient = js_MediaSessionKindAmbient
- 
-instance ToJSVal MediaSessionKind where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal MediaSessionKind where
-        pFromJSVal x
-          | x `js_eq` js_MediaSessionKindContent = MediaSessionKindContent
-        pFromJSVal x
-          | x `js_eq` js_MediaSessionKindTransient =
-            MediaSessionKindTransient
-        pFromJSVal x
-          | x `js_eq` js_MediaSessionKindTransientSolo =
-            MediaSessionKindTransientSolo
-        pFromJSVal x
-          | x `js_eq` js_MediaSessionKindAmbient = MediaSessionKindAmbient
- 
-instance FromJSVal MediaSessionKind where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"content\"; })"
-        js_MediaSessionKindContent :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"transient\"; })"
-        js_MediaSessionKindTransient :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"transient-solo\"; })"
-        js_MediaSessionKindTransientSolo :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"ambient\"; })"
-        js_MediaSessionKindAmbient :: JSVal
- 
-data EndOfStreamError = EndOfStreamErrorNetwork
-                      | EndOfStreamErrorDecode
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal EndOfStreamError where
-        pToJSVal EndOfStreamErrorNetwork = js_EndOfStreamErrorNetwork
-        pToJSVal EndOfStreamErrorDecode = js_EndOfStreamErrorDecode
- 
-instance ToJSVal EndOfStreamError where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal EndOfStreamError where
-        pFromJSVal x
-          | x `js_eq` js_EndOfStreamErrorNetwork = EndOfStreamErrorNetwork
-        pFromJSVal x
-          | x `js_eq` js_EndOfStreamErrorDecode = EndOfStreamErrorDecode
- 
-instance FromJSVal EndOfStreamError where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"network\"; })"
-        js_EndOfStreamErrorNetwork :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"decode\"; })"
-        js_EndOfStreamErrorDecode :: JSVal
- 
-data ReadyState = ReadyStateClosed
-                | ReadyStateOpen
-                | ReadyStateEnded
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ReadyState where
-        pToJSVal ReadyStateClosed = js_ReadyStateClosed
-        pToJSVal ReadyStateOpen = js_ReadyStateOpen
-        pToJSVal ReadyStateEnded = js_ReadyStateEnded
- 
-instance ToJSVal ReadyState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ReadyState where
-        pFromJSVal x | x `js_eq` js_ReadyStateClosed = ReadyStateClosed
-        pFromJSVal x | x `js_eq` js_ReadyStateOpen = ReadyStateOpen
-        pFromJSVal x | x `js_eq` js_ReadyStateEnded = ReadyStateEnded
- 
-instance FromJSVal ReadyState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"closed\"; })" js_ReadyStateClosed
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"open\"; })" js_ReadyStateOpen ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"ended\"; })" js_ReadyStateEnded ::
-        JSVal
- 
-data AppendMode = AppendModeSegments
-                | AppendModeSequence
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal AppendMode where
-        pToJSVal AppendModeSegments = js_AppendModeSegments
-        pToJSVal AppendModeSequence = js_AppendModeSequence
- 
-instance ToJSVal AppendMode where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal AppendMode where
-        pFromJSVal x | x `js_eq` js_AppendModeSegments = AppendModeSegments
-        pFromJSVal x | x `js_eq` js_AppendModeSequence = AppendModeSequence
- 
-instance FromJSVal AppendMode where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"segments\"; })"
-        js_AppendModeSegments :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sequence\"; })"
-        js_AppendModeSequence :: JSVal
- 
-data MediaDeviceKind = MediaDeviceKindAudioinput
-                     | MediaDeviceKindAudiooutput
-                     | MediaDeviceKindVideoinput
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal MediaDeviceKind where
-        pToJSVal MediaDeviceKindAudioinput = js_MediaDeviceKindAudioinput
-        pToJSVal MediaDeviceKindAudiooutput = js_MediaDeviceKindAudiooutput
-        pToJSVal MediaDeviceKindVideoinput = js_MediaDeviceKindVideoinput
- 
-instance ToJSVal MediaDeviceKind where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal MediaDeviceKind where
-        pFromJSVal x
-          | x `js_eq` js_MediaDeviceKindAudioinput =
-            MediaDeviceKindAudioinput
-        pFromJSVal x
-          | x `js_eq` js_MediaDeviceKindAudiooutput =
-            MediaDeviceKindAudiooutput
-        pFromJSVal x
-          | x `js_eq` js_MediaDeviceKindVideoinput =
-            MediaDeviceKindVideoinput
- 
-instance FromJSVal MediaDeviceKind where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"audioinput\"; })"
-        js_MediaDeviceKindAudioinput :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"audiooutput\"; })"
-        js_MediaDeviceKindAudiooutput :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"videoinput\"; })"
-        js_MediaDeviceKindVideoinput :: JSVal
- 
-data MediaStreamTrackState = MediaStreamTrackStateLive
-                           | MediaStreamTrackStateEnded
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal MediaStreamTrackState where
-        pToJSVal MediaStreamTrackStateLive = js_MediaStreamTrackStateLive
-        pToJSVal MediaStreamTrackStateEnded = js_MediaStreamTrackStateEnded
- 
-instance ToJSVal MediaStreamTrackState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal MediaStreamTrackState where
-        pFromJSVal x
-          | x `js_eq` js_MediaStreamTrackStateLive =
-            MediaStreamTrackStateLive
-        pFromJSVal x
-          | x `js_eq` js_MediaStreamTrackStateEnded =
-            MediaStreamTrackStateEnded
- 
-instance FromJSVal MediaStreamTrackState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"live\"; })"
-        js_MediaStreamTrackStateLive :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"ended\"; })"
-        js_MediaStreamTrackStateEnded :: JSVal
- 
-data RTCIceTransportPolicy = RTCIceTransportPolicyRelay
-                           | RTCIceTransportPolicyAll
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCIceTransportPolicy where
-        pToJSVal RTCIceTransportPolicyRelay = js_RTCIceTransportPolicyRelay
-        pToJSVal RTCIceTransportPolicyAll = js_RTCIceTransportPolicyAll
- 
-instance ToJSVal RTCIceTransportPolicy where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCIceTransportPolicy where
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportPolicyRelay =
-            RTCIceTransportPolicyRelay
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportPolicyAll = RTCIceTransportPolicyAll
- 
-instance FromJSVal RTCIceTransportPolicy where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"relay\"; })"
-        js_RTCIceTransportPolicyRelay :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"all\"; })"
-        js_RTCIceTransportPolicyAll :: JSVal
- 
-data RTCBundlePolicy = RTCBundlePolicyBalanced
-                     | RTCBundlePolicyMaxCompat
-                     | RTCBundlePolicyMaxBundle
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCBundlePolicy where
-        pToJSVal RTCBundlePolicyBalanced = js_RTCBundlePolicyBalanced
-        pToJSVal RTCBundlePolicyMaxCompat = js_RTCBundlePolicyMaxCompat
-        pToJSVal RTCBundlePolicyMaxBundle = js_RTCBundlePolicyMaxBundle
- 
-instance ToJSVal RTCBundlePolicy where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCBundlePolicy where
-        pFromJSVal x
-          | x `js_eq` js_RTCBundlePolicyBalanced = RTCBundlePolicyBalanced
-        pFromJSVal x
-          | x `js_eq` js_RTCBundlePolicyMaxCompat = RTCBundlePolicyMaxCompat
-        pFromJSVal x
-          | x `js_eq` js_RTCBundlePolicyMaxBundle = RTCBundlePolicyMaxBundle
- 
-instance FromJSVal RTCBundlePolicy where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"balanced\"; })"
-        js_RTCBundlePolicyBalanced :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"max-compat\"; })"
-        js_RTCBundlePolicyMaxCompat :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"max-bundle\"; })"
-        js_RTCBundlePolicyMaxBundle :: JSVal
- 
-data RTCDataChannelState = RTCDataChannelStateConnecting
-                         | RTCDataChannelStateOpen
-                         | RTCDataChannelStateClosing
-                         | RTCDataChannelStateClosed
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCDataChannelState where
-        pToJSVal RTCDataChannelStateConnecting
-          = js_RTCDataChannelStateConnecting
-        pToJSVal RTCDataChannelStateOpen = js_RTCDataChannelStateOpen
-        pToJSVal RTCDataChannelStateClosing = js_RTCDataChannelStateClosing
-        pToJSVal RTCDataChannelStateClosed = js_RTCDataChannelStateClosed
- 
-instance ToJSVal RTCDataChannelState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCDataChannelState where
-        pFromJSVal x
-          | x `js_eq` js_RTCDataChannelStateConnecting =
-            RTCDataChannelStateConnecting
-        pFromJSVal x
-          | x `js_eq` js_RTCDataChannelStateOpen = RTCDataChannelStateOpen
-        pFromJSVal x
-          | x `js_eq` js_RTCDataChannelStateClosing =
-            RTCDataChannelStateClosing
-        pFromJSVal x
-          | x `js_eq` js_RTCDataChannelStateClosed =
-            RTCDataChannelStateClosed
- 
-instance FromJSVal RTCDataChannelState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"connecting\"; })"
-        js_RTCDataChannelStateConnecting :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"open\"; })"
-        js_RTCDataChannelStateOpen :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"closing\"; })"
-        js_RTCDataChannelStateClosing :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"closed\"; })"
-        js_RTCDataChannelStateClosed :: JSVal
- 
-data RTCIceConnectionState = RTCIceConnectionStateNew
-                           | RTCIceConnectionStateChecking
-                           | RTCIceConnectionStateConnected
-                           | RTCIceConnectionStateCompleted
-                           | RTCIceConnectionStateFailed
-                           | RTCIceConnectionStateDisconnected
-                           | RTCIceConnectionStateClosed
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCIceConnectionState where
-        pToJSVal RTCIceConnectionStateNew = js_RTCIceConnectionStateNew
-        pToJSVal RTCIceConnectionStateChecking
-          = js_RTCIceConnectionStateChecking
-        pToJSVal RTCIceConnectionStateConnected
-          = js_RTCIceConnectionStateConnected
-        pToJSVal RTCIceConnectionStateCompleted
-          = js_RTCIceConnectionStateCompleted
-        pToJSVal RTCIceConnectionStateFailed
-          = js_RTCIceConnectionStateFailed
-        pToJSVal RTCIceConnectionStateDisconnected
-          = js_RTCIceConnectionStateDisconnected
-        pToJSVal RTCIceConnectionStateClosed
-          = js_RTCIceConnectionStateClosed
- 
-instance ToJSVal RTCIceConnectionState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCIceConnectionState where
-        pFromJSVal x
-          | x `js_eq` js_RTCIceConnectionStateNew = RTCIceConnectionStateNew
-        pFromJSVal x
-          | x `js_eq` js_RTCIceConnectionStateChecking =
-            RTCIceConnectionStateChecking
-        pFromJSVal x
-          | x `js_eq` js_RTCIceConnectionStateConnected =
-            RTCIceConnectionStateConnected
-        pFromJSVal x
-          | x `js_eq` js_RTCIceConnectionStateCompleted =
-            RTCIceConnectionStateCompleted
-        pFromJSVal x
-          | x `js_eq` js_RTCIceConnectionStateFailed =
-            RTCIceConnectionStateFailed
-        pFromJSVal x
-          | x `js_eq` js_RTCIceConnectionStateDisconnected =
-            RTCIceConnectionStateDisconnected
-        pFromJSVal x
-          | x `js_eq` js_RTCIceConnectionStateClosed =
-            RTCIceConnectionStateClosed
- 
-instance FromJSVal RTCIceConnectionState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"new\"; })"
-        js_RTCIceConnectionStateNew :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"checking\"; })"
-        js_RTCIceConnectionStateChecking :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"connected\"; })"
-        js_RTCIceConnectionStateConnected :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"completed\"; })"
-        js_RTCIceConnectionStateCompleted :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"failed\"; })"
-        js_RTCIceConnectionStateFailed :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"disconnected\"; })"
-        js_RTCIceConnectionStateDisconnected :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"closed\"; })"
-        js_RTCIceConnectionStateClosed :: JSVal
- 
-data RTCIceGatheringState = RTCIceGatheringStateNew
-                          | RTCIceGatheringStateGathering
-                          | RTCIceGatheringStateComplete
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCIceGatheringState where
-        pToJSVal RTCIceGatheringStateNew = js_RTCIceGatheringStateNew
-        pToJSVal RTCIceGatheringStateGathering
-          = js_RTCIceGatheringStateGathering
-        pToJSVal RTCIceGatheringStateComplete
-          = js_RTCIceGatheringStateComplete
- 
-instance ToJSVal RTCIceGatheringState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCIceGatheringState where
-        pFromJSVal x
-          | x `js_eq` js_RTCIceGatheringStateNew = RTCIceGatheringStateNew
-        pFromJSVal x
-          | x `js_eq` js_RTCIceGatheringStateGathering =
-            RTCIceGatheringStateGathering
-        pFromJSVal x
-          | x `js_eq` js_RTCIceGatheringStateComplete =
-            RTCIceGatheringStateComplete
- 
-instance FromJSVal RTCIceGatheringState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"new\"; })"
-        js_RTCIceGatheringStateNew :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"gathering\"; })"
-        js_RTCIceGatheringStateGathering :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"complete\"; })"
-        js_RTCIceGatheringStateComplete :: JSVal
- 
-data RTCIceTransportState = RTCIceTransportStateNew
-                          | RTCIceTransportStateChecking
-                          | RTCIceTransportStateConnected
-                          | RTCIceTransportStateCompleted
-                          | RTCIceTransportStateFailed
-                          | RTCIceTransportStateDisconnected
-                          | RTCIceTransportStateClosed
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCIceTransportState where
-        pToJSVal RTCIceTransportStateNew = js_RTCIceTransportStateNew
-        pToJSVal RTCIceTransportStateChecking
-          = js_RTCIceTransportStateChecking
-        pToJSVal RTCIceTransportStateConnected
-          = js_RTCIceTransportStateConnected
-        pToJSVal RTCIceTransportStateCompleted
-          = js_RTCIceTransportStateCompleted
-        pToJSVal RTCIceTransportStateFailed = js_RTCIceTransportStateFailed
-        pToJSVal RTCIceTransportStateDisconnected
-          = js_RTCIceTransportStateDisconnected
-        pToJSVal RTCIceTransportStateClosed = js_RTCIceTransportStateClosed
- 
-instance ToJSVal RTCIceTransportState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCIceTransportState where
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportStateNew = RTCIceTransportStateNew
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportStateChecking =
-            RTCIceTransportStateChecking
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportStateConnected =
-            RTCIceTransportStateConnected
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportStateCompleted =
-            RTCIceTransportStateCompleted
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportStateFailed =
-            RTCIceTransportStateFailed
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportStateDisconnected =
-            RTCIceTransportStateDisconnected
-        pFromJSVal x
-          | x `js_eq` js_RTCIceTransportStateClosed =
-            RTCIceTransportStateClosed
- 
-instance FromJSVal RTCIceTransportState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"new\"; })"
-        js_RTCIceTransportStateNew :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"checking\"; })"
-        js_RTCIceTransportStateChecking :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"connected\"; })"
-        js_RTCIceTransportStateConnected :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"completed\"; })"
-        js_RTCIceTransportStateCompleted :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"failed\"; })"
-        js_RTCIceTransportStateFailed :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"disconnected\"; })"
-        js_RTCIceTransportStateDisconnected :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"closed\"; })"
-        js_RTCIceTransportStateClosed :: JSVal
- 
-data RTCPeerConnectionState = RTCPeerConnectionStateNew
-                            | RTCPeerConnectionStateConnecting
-                            | RTCPeerConnectionStateConnected
-                            | RTCPeerConnectionStateDisconnected
-                            | RTCPeerConnectionStateFailed
-                            | RTCPeerConnectionStateClosed
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCPeerConnectionState where
-        pToJSVal RTCPeerConnectionStateNew = js_RTCPeerConnectionStateNew
-        pToJSVal RTCPeerConnectionStateConnecting
-          = js_RTCPeerConnectionStateConnecting
-        pToJSVal RTCPeerConnectionStateConnected
-          = js_RTCPeerConnectionStateConnected
-        pToJSVal RTCPeerConnectionStateDisconnected
-          = js_RTCPeerConnectionStateDisconnected
-        pToJSVal RTCPeerConnectionStateFailed
-          = js_RTCPeerConnectionStateFailed
-        pToJSVal RTCPeerConnectionStateClosed
-          = js_RTCPeerConnectionStateClosed
- 
-instance ToJSVal RTCPeerConnectionState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCPeerConnectionState where
-        pFromJSVal x
-          | x `js_eq` js_RTCPeerConnectionStateNew =
-            RTCPeerConnectionStateNew
-        pFromJSVal x
-          | x `js_eq` js_RTCPeerConnectionStateConnecting =
-            RTCPeerConnectionStateConnecting
-        pFromJSVal x
-          | x `js_eq` js_RTCPeerConnectionStateConnected =
-            RTCPeerConnectionStateConnected
-        pFromJSVal x
-          | x `js_eq` js_RTCPeerConnectionStateDisconnected =
-            RTCPeerConnectionStateDisconnected
-        pFromJSVal x
-          | x `js_eq` js_RTCPeerConnectionStateFailed =
-            RTCPeerConnectionStateFailed
-        pFromJSVal x
-          | x `js_eq` js_RTCPeerConnectionStateClosed =
-            RTCPeerConnectionStateClosed
- 
-instance FromJSVal RTCPeerConnectionState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"new\"; })"
-        js_RTCPeerConnectionStateNew :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"connecting\"; })"
-        js_RTCPeerConnectionStateConnecting :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"connected\"; })"
-        js_RTCPeerConnectionStateConnected :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"disconnected\"; })"
-        js_RTCPeerConnectionStateDisconnected :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"failed\"; })"
-        js_RTCPeerConnectionStateFailed :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"closed\"; })"
-        js_RTCPeerConnectionStateClosed :: JSVal
- 
-data RTCDegradationPreference = RTCDegradationPreferenceMaintainFramerate
-                              | RTCDegradationPreferenceMaintainResolution
-                              | RTCDegradationPreferenceBalanced
-                              deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCDegradationPreference where
-        pToJSVal RTCDegradationPreferenceMaintainFramerate
-          = js_RTCDegradationPreferenceMaintainFramerate
-        pToJSVal RTCDegradationPreferenceMaintainResolution
-          = js_RTCDegradationPreferenceMaintainResolution
-        pToJSVal RTCDegradationPreferenceBalanced
-          = js_RTCDegradationPreferenceBalanced
- 
-instance ToJSVal RTCDegradationPreference where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCDegradationPreference where
-        pFromJSVal x
-          | x `js_eq` js_RTCDegradationPreferenceMaintainFramerate =
-            RTCDegradationPreferenceMaintainFramerate
-        pFromJSVal x
-          | x `js_eq` js_RTCDegradationPreferenceMaintainResolution =
-            RTCDegradationPreferenceMaintainResolution
-        pFromJSVal x
-          | x `js_eq` js_RTCDegradationPreferenceBalanced =
-            RTCDegradationPreferenceBalanced
- 
-instance FromJSVal RTCDegradationPreference where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"maintain-framerate\"; })"
-        js_RTCDegradationPreferenceMaintainFramerate :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"maintain-resolution\"; })"
-        js_RTCDegradationPreferenceMaintainResolution :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"balanced\"; })"
-        js_RTCDegradationPreferenceBalanced :: JSVal
- 
-data RTCDtxStatus = RTCDtxStatusDisabled
-                  | RTCDtxStatusEnabled
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCDtxStatus where
-        pToJSVal RTCDtxStatusDisabled = js_RTCDtxStatusDisabled
-        pToJSVal RTCDtxStatusEnabled = js_RTCDtxStatusEnabled
- 
-instance ToJSVal RTCDtxStatus where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCDtxStatus where
-        pFromJSVal x
-          | x `js_eq` js_RTCDtxStatusDisabled = RTCDtxStatusDisabled
-        pFromJSVal x
-          | x `js_eq` js_RTCDtxStatusEnabled = RTCDtxStatusEnabled
- 
-instance FromJSVal RTCDtxStatus where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"disabled\"; })"
-        js_RTCDtxStatusDisabled :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"enabled\"; })"
-        js_RTCDtxStatusEnabled :: JSVal
- 
-data RTCPriorityType = RTCPriorityTypeVeryLow
-                     | RTCPriorityTypeLow
-                     | RTCPriorityTypeMedium
-                     | RTCPriorityTypeHigh
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCPriorityType where
-        pToJSVal RTCPriorityTypeVeryLow = js_RTCPriorityTypeVeryLow
-        pToJSVal RTCPriorityTypeLow = js_RTCPriorityTypeLow
-        pToJSVal RTCPriorityTypeMedium = js_RTCPriorityTypeMedium
-        pToJSVal RTCPriorityTypeHigh = js_RTCPriorityTypeHigh
- 
-instance ToJSVal RTCPriorityType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCPriorityType where
-        pFromJSVal x
-          | x `js_eq` js_RTCPriorityTypeVeryLow = RTCPriorityTypeVeryLow
-        pFromJSVal x | x `js_eq` js_RTCPriorityTypeLow = RTCPriorityTypeLow
-        pFromJSVal x
-          | x `js_eq` js_RTCPriorityTypeMedium = RTCPriorityTypeMedium
-        pFromJSVal x
-          | x `js_eq` js_RTCPriorityTypeHigh = RTCPriorityTypeHigh
- 
-instance FromJSVal RTCPriorityType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"very-low\"; })"
-        js_RTCPriorityTypeVeryLow :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"low\"; })" js_RTCPriorityTypeLow ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"medium\"; })"
-        js_RTCPriorityTypeMedium :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"high\"; })" js_RTCPriorityTypeHigh
-        :: JSVal
- 
-data RTCRtpTransceiverDirection = RTCRtpTransceiverDirectionSendrecv
-                                | RTCRtpTransceiverDirectionSendonly
-                                | RTCRtpTransceiverDirectionRecvonly
-                                | RTCRtpTransceiverDirectionInactive
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCRtpTransceiverDirection where
-        pToJSVal RTCRtpTransceiverDirectionSendrecv
-          = js_RTCRtpTransceiverDirectionSendrecv
-        pToJSVal RTCRtpTransceiverDirectionSendonly
-          = js_RTCRtpTransceiverDirectionSendonly
-        pToJSVal RTCRtpTransceiverDirectionRecvonly
-          = js_RTCRtpTransceiverDirectionRecvonly
-        pToJSVal RTCRtpTransceiverDirectionInactive
-          = js_RTCRtpTransceiverDirectionInactive
- 
-instance ToJSVal RTCRtpTransceiverDirection where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCRtpTransceiverDirection where
-        pFromJSVal x
-          | x `js_eq` js_RTCRtpTransceiverDirectionSendrecv =
-            RTCRtpTransceiverDirectionSendrecv
-        pFromJSVal x
-          | x `js_eq` js_RTCRtpTransceiverDirectionSendonly =
-            RTCRtpTransceiverDirectionSendonly
-        pFromJSVal x
-          | x `js_eq` js_RTCRtpTransceiverDirectionRecvonly =
-            RTCRtpTransceiverDirectionRecvonly
-        pFromJSVal x
-          | x `js_eq` js_RTCRtpTransceiverDirectionInactive =
-            RTCRtpTransceiverDirectionInactive
- 
-instance FromJSVal RTCRtpTransceiverDirection where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"sendrecv\"; })"
-        js_RTCRtpTransceiverDirectionSendrecv :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sendonly\"; })"
-        js_RTCRtpTransceiverDirectionSendonly :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"recvonly\"; })"
-        js_RTCRtpTransceiverDirectionRecvonly :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"inactive\"; })"
-        js_RTCRtpTransceiverDirectionInactive :: JSVal
- 
-data RTCSdpType = RTCSdpTypeOffer
-                | RTCSdpTypePranswer
-                | RTCSdpTypeAnswer
-                | RTCSdpTypeRollback
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCSdpType where
-        pToJSVal RTCSdpTypeOffer = js_RTCSdpTypeOffer
-        pToJSVal RTCSdpTypePranswer = js_RTCSdpTypePranswer
-        pToJSVal RTCSdpTypeAnswer = js_RTCSdpTypeAnswer
-        pToJSVal RTCSdpTypeRollback = js_RTCSdpTypeRollback
- 
-instance ToJSVal RTCSdpType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCSdpType where
-        pFromJSVal x | x `js_eq` js_RTCSdpTypeOffer = RTCSdpTypeOffer
-        pFromJSVal x | x `js_eq` js_RTCSdpTypePranswer = RTCSdpTypePranswer
-        pFromJSVal x | x `js_eq` js_RTCSdpTypeAnswer = RTCSdpTypeAnswer
-        pFromJSVal x | x `js_eq` js_RTCSdpTypeRollback = RTCSdpTypeRollback
- 
-instance FromJSVal RTCSdpType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"offer\"; })" js_RTCSdpTypeOffer ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"pranswer\"; })"
-        js_RTCSdpTypePranswer :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"answer\"; })" js_RTCSdpTypeAnswer
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"rollback\"; })"
-        js_RTCSdpTypeRollback :: JSVal
- 
-data RTCSignalingState = RTCSignalingStateStable
-                       | RTCSignalingStateHaveLocalOffer
-                       | RTCSignalingStateHaveRemoteOffer
-                       | RTCSignalingStateHaveLocalPranswer
-                       | RTCSignalingStateHaveRemotePranswer
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCSignalingState where
-        pToJSVal RTCSignalingStateStable = js_RTCSignalingStateStable
-        pToJSVal RTCSignalingStateHaveLocalOffer
-          = js_RTCSignalingStateHaveLocalOffer
-        pToJSVal RTCSignalingStateHaveRemoteOffer
-          = js_RTCSignalingStateHaveRemoteOffer
-        pToJSVal RTCSignalingStateHaveLocalPranswer
-          = js_RTCSignalingStateHaveLocalPranswer
-        pToJSVal RTCSignalingStateHaveRemotePranswer
-          = js_RTCSignalingStateHaveRemotePranswer
- 
-instance ToJSVal RTCSignalingState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCSignalingState where
-        pFromJSVal x
-          | x `js_eq` js_RTCSignalingStateStable = RTCSignalingStateStable
-        pFromJSVal x
-          | x `js_eq` js_RTCSignalingStateHaveLocalOffer =
-            RTCSignalingStateHaveLocalOffer
-        pFromJSVal x
-          | x `js_eq` js_RTCSignalingStateHaveRemoteOffer =
-            RTCSignalingStateHaveRemoteOffer
-        pFromJSVal x
-          | x `js_eq` js_RTCSignalingStateHaveLocalPranswer =
-            RTCSignalingStateHaveLocalPranswer
-        pFromJSVal x
-          | x `js_eq` js_RTCSignalingStateHaveRemotePranswer =
-            RTCSignalingStateHaveRemotePranswer
- 
-instance FromJSVal RTCSignalingState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"stable\"; })"
-        js_RTCSignalingStateStable :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"have-local-offer\"; })"
-        js_RTCSignalingStateHaveLocalOffer :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"have-remote-offer\"; })"
-        js_RTCSignalingStateHaveRemoteOffer :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"have-local-pranswer\"; })"
-        js_RTCSignalingStateHaveLocalPranswer :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"have-remote-pranswer\"; })"
-        js_RTCSignalingStateHaveRemotePranswer :: JSVal
- 
-data RTCStatsType = RTCStatsTypeCodec
-                  | RTCStatsTypeInboundRtp
-                  | RTCStatsTypeOutboundRtp
-                  | RTCStatsTypePeerConnection
-                  | RTCStatsTypeDataChannel
-                  | RTCStatsTypeTrack
-                  | RTCStatsTypeTransport
-                  | RTCStatsTypeCandidatePair
-                  | RTCStatsTypeLocalCandidate
-                  | RTCStatsTypeRemoteCandidate
-                  | RTCStatsTypeCertificate
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal RTCStatsType where
-        pToJSVal RTCStatsTypeCodec = js_RTCStatsTypeCodec
-        pToJSVal RTCStatsTypeInboundRtp = js_RTCStatsTypeInboundRtp
-        pToJSVal RTCStatsTypeOutboundRtp = js_RTCStatsTypeOutboundRtp
-        pToJSVal RTCStatsTypePeerConnection = js_RTCStatsTypePeerConnection
-        pToJSVal RTCStatsTypeDataChannel = js_RTCStatsTypeDataChannel
-        pToJSVal RTCStatsTypeTrack = js_RTCStatsTypeTrack
-        pToJSVal RTCStatsTypeTransport = js_RTCStatsTypeTransport
-        pToJSVal RTCStatsTypeCandidatePair = js_RTCStatsTypeCandidatePair
-        pToJSVal RTCStatsTypeLocalCandidate = js_RTCStatsTypeLocalCandidate
-        pToJSVal RTCStatsTypeRemoteCandidate
-          = js_RTCStatsTypeRemoteCandidate
-        pToJSVal RTCStatsTypeCertificate = js_RTCStatsTypeCertificate
- 
-instance ToJSVal RTCStatsType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal RTCStatsType where
-        pFromJSVal x | x `js_eq` js_RTCStatsTypeCodec = RTCStatsTypeCodec
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeInboundRtp = RTCStatsTypeInboundRtp
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeOutboundRtp = RTCStatsTypeOutboundRtp
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypePeerConnection =
-            RTCStatsTypePeerConnection
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeDataChannel = RTCStatsTypeDataChannel
-        pFromJSVal x | x `js_eq` js_RTCStatsTypeTrack = RTCStatsTypeTrack
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeTransport = RTCStatsTypeTransport
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeCandidatePair =
-            RTCStatsTypeCandidatePair
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeLocalCandidate =
-            RTCStatsTypeLocalCandidate
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeRemoteCandidate =
-            RTCStatsTypeRemoteCandidate
-        pFromJSVal x
-          | x `js_eq` js_RTCStatsTypeCertificate = RTCStatsTypeCertificate
- 
-instance FromJSVal RTCStatsType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"codec\"; })" js_RTCStatsTypeCodec
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"inbound-rtp\"; })"
-        js_RTCStatsTypeInboundRtp :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"outbound-rtp\"; })"
-        js_RTCStatsTypeOutboundRtp :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"peer-connection\"; })"
-        js_RTCStatsTypePeerConnection :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"data-channel\"; })"
-        js_RTCStatsTypeDataChannel :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"track\"; })" js_RTCStatsTypeTrack
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"transport\"; })"
-        js_RTCStatsTypeTransport :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"candidate-pair\"; })"
-        js_RTCStatsTypeCandidatePair :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"local-candidate\"; })"
-        js_RTCStatsTypeLocalCandidate :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"remote-candidate\"; })"
-        js_RTCStatsTypeRemoteCandidate :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"certificate\"; })"
-        js_RTCStatsTypeCertificate :: JSVal
- 
-data NotificationDirection = NotificationDirectionAuto
-                           | NotificationDirectionLtr
-                           | NotificationDirectionRtl
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal NotificationDirection where
-        pToJSVal NotificationDirectionAuto = js_NotificationDirectionAuto
-        pToJSVal NotificationDirectionLtr = js_NotificationDirectionLtr
-        pToJSVal NotificationDirectionRtl = js_NotificationDirectionRtl
- 
-instance ToJSVal NotificationDirection where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal NotificationDirection where
-        pFromJSVal x
-          | x `js_eq` js_NotificationDirectionAuto =
-            NotificationDirectionAuto
-        pFromJSVal x
-          | x `js_eq` js_NotificationDirectionLtr = NotificationDirectionLtr
-        pFromJSVal x
-          | x `js_eq` js_NotificationDirectionRtl = NotificationDirectionRtl
- 
-instance FromJSVal NotificationDirection where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"auto\"; })"
-        js_NotificationDirectionAuto :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"ltr\"; })"
-        js_NotificationDirectionLtr :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"rtl\"; })"
-        js_NotificationDirectionRtl :: JSVal
- 
-data AudioContextState = AudioContextStateSuspended
-                       | AudioContextStateRunning
-                       | AudioContextStateInterrupted
-                       | AudioContextStateClosed
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal AudioContextState where
-        pToJSVal AudioContextStateSuspended = js_AudioContextStateSuspended
-        pToJSVal AudioContextStateRunning = js_AudioContextStateRunning
-        pToJSVal AudioContextStateInterrupted
-          = js_AudioContextStateInterrupted
-        pToJSVal AudioContextStateClosed = js_AudioContextStateClosed
- 
-instance ToJSVal AudioContextState where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal AudioContextState where
-        pFromJSVal x
-          | x `js_eq` js_AudioContextStateSuspended =
-            AudioContextStateSuspended
-        pFromJSVal x
-          | x `js_eq` js_AudioContextStateRunning = AudioContextStateRunning
-        pFromJSVal x
-          | x `js_eq` js_AudioContextStateInterrupted =
-            AudioContextStateInterrupted
-        pFromJSVal x
-          | x `js_eq` js_AudioContextStateClosed = AudioContextStateClosed
- 
-instance FromJSVal AudioContextState where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"suspended\"; })"
-        js_AudioContextStateSuspended :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"running\"; })"
-        js_AudioContextStateRunning :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"interrupted\"; })"
-        js_AudioContextStateInterrupted :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"closed\"; })"
-        js_AudioContextStateClosed :: JSVal
- 
-data BiquadFilterType = BiquadFilterTypeLowpass
-                      | BiquadFilterTypeHighpass
-                      | BiquadFilterTypeBandpass
-                      | BiquadFilterTypeLowshelf
-                      | BiquadFilterTypeHighshelf
-                      | BiquadFilterTypePeaking
-                      | BiquadFilterTypeNotch
-                      | BiquadFilterTypeAllpass
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal BiquadFilterType where
-        pToJSVal BiquadFilterTypeLowpass = js_BiquadFilterTypeLowpass
-        pToJSVal BiquadFilterTypeHighpass = js_BiquadFilterTypeHighpass
-        pToJSVal BiquadFilterTypeBandpass = js_BiquadFilterTypeBandpass
-        pToJSVal BiquadFilterTypeLowshelf = js_BiquadFilterTypeLowshelf
-        pToJSVal BiquadFilterTypeHighshelf = js_BiquadFilterTypeHighshelf
-        pToJSVal BiquadFilterTypePeaking = js_BiquadFilterTypePeaking
-        pToJSVal BiquadFilterTypeNotch = js_BiquadFilterTypeNotch
-        pToJSVal BiquadFilterTypeAllpass = js_BiquadFilterTypeAllpass
- 
-instance ToJSVal BiquadFilterType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal BiquadFilterType where
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypeLowpass = BiquadFilterTypeLowpass
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypeHighpass = BiquadFilterTypeHighpass
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypeBandpass = BiquadFilterTypeBandpass
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypeLowshelf = BiquadFilterTypeLowshelf
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypeHighshelf =
-            BiquadFilterTypeHighshelf
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypePeaking = BiquadFilterTypePeaking
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypeNotch = BiquadFilterTypeNotch
-        pFromJSVal x
-          | x `js_eq` js_BiquadFilterTypeAllpass = BiquadFilterTypeAllpass
- 
-instance FromJSVal BiquadFilterType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"lowpass\"; })"
-        js_BiquadFilterTypeLowpass :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"highpass\"; })"
-        js_BiquadFilterTypeHighpass :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"bandpass\"; })"
-        js_BiquadFilterTypeBandpass :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"lowshelf\"; })"
-        js_BiquadFilterTypeLowshelf :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"highshelf\"; })"
-        js_BiquadFilterTypeHighshelf :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"peaking\"; })"
-        js_BiquadFilterTypePeaking :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"notch\"; })"
-        js_BiquadFilterTypeNotch :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"allpass\"; })"
-        js_BiquadFilterTypeAllpass :: JSVal
- 
-data OscillatorType = OscillatorTypeSine
-                    | OscillatorTypeSquare
-                    | OscillatorTypeSawtooth
-                    | OscillatorTypeTriangle
-                    | OscillatorTypeCustom
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal OscillatorType where
-        pToJSVal OscillatorTypeSine = js_OscillatorTypeSine
-        pToJSVal OscillatorTypeSquare = js_OscillatorTypeSquare
-        pToJSVal OscillatorTypeSawtooth = js_OscillatorTypeSawtooth
-        pToJSVal OscillatorTypeTriangle = js_OscillatorTypeTriangle
-        pToJSVal OscillatorTypeCustom = js_OscillatorTypeCustom
- 
-instance ToJSVal OscillatorType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal OscillatorType where
-        pFromJSVal x | x `js_eq` js_OscillatorTypeSine = OscillatorTypeSine
-        pFromJSVal x
-          | x `js_eq` js_OscillatorTypeSquare = OscillatorTypeSquare
-        pFromJSVal x
-          | x `js_eq` js_OscillatorTypeSawtooth = OscillatorTypeSawtooth
-        pFromJSVal x
-          | x `js_eq` js_OscillatorTypeTriangle = OscillatorTypeTriangle
-        pFromJSVal x
-          | x `js_eq` js_OscillatorTypeCustom = OscillatorTypeCustom
- 
-instance FromJSVal OscillatorType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"sine\"; })" js_OscillatorTypeSine
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"square\"; })"
-        js_OscillatorTypeSquare :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"sawtooth\"; })"
-        js_OscillatorTypeSawtooth :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"triangle\"; })"
-        js_OscillatorTypeTriangle :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"custom\"; })"
-        js_OscillatorTypeCustom :: JSVal
- 
-data PanningModelType = PanningModelTypeEqualpower
-                      | PanningModelTypeHRTF
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal PanningModelType where
-        pToJSVal PanningModelTypeEqualpower = js_PanningModelTypeEqualpower
-        pToJSVal PanningModelTypeHRTF = js_PanningModelTypeHRTF
- 
-instance ToJSVal PanningModelType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal PanningModelType where
-        pFromJSVal x
-          | x `js_eq` js_PanningModelTypeEqualpower =
-            PanningModelTypeEqualpower
-        pFromJSVal x
-          | x `js_eq` js_PanningModelTypeHRTF = PanningModelTypeHRTF
- 
-instance FromJSVal PanningModelType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"equalpower\"; })"
-        js_PanningModelTypeEqualpower :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"HRTF\"; })" js_PanningModelTypeHRTF
-        :: JSVal
- 
-data DistanceModelType = DistanceModelTypeLinear
-                       | DistanceModelTypeInverse
-                       | DistanceModelTypeExponential
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal DistanceModelType where
-        pToJSVal DistanceModelTypeLinear = js_DistanceModelTypeLinear
-        pToJSVal DistanceModelTypeInverse = js_DistanceModelTypeInverse
-        pToJSVal DistanceModelTypeExponential
-          = js_DistanceModelTypeExponential
- 
-instance ToJSVal DistanceModelType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal DistanceModelType where
-        pFromJSVal x
-          | x `js_eq` js_DistanceModelTypeLinear = DistanceModelTypeLinear
-        pFromJSVal x
-          | x `js_eq` js_DistanceModelTypeInverse = DistanceModelTypeInverse
-        pFromJSVal x
-          | x `js_eq` js_DistanceModelTypeExponential =
-            DistanceModelTypeExponential
- 
-instance FromJSVal DistanceModelType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"linear\"; })"
-        js_DistanceModelTypeLinear :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"inverse\"; })"
-        js_DistanceModelTypeInverse :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"exponential\"; })"
-        js_DistanceModelTypeExponential :: JSVal
- 
-data OverSampleType = OverSampleTypeNone
-                    | OverSampleType2x
-                    | OverSampleType4x
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal OverSampleType where
-        pToJSVal OverSampleTypeNone = js_OverSampleTypeNone
-        pToJSVal OverSampleType2x = js_OverSampleType2x
-        pToJSVal OverSampleType4x = js_OverSampleType4x
- 
-instance ToJSVal OverSampleType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal OverSampleType where
-        pFromJSVal x | x `js_eq` js_OverSampleTypeNone = OverSampleTypeNone
-        pFromJSVal x | x `js_eq` js_OverSampleType2x = OverSampleType2x
-        pFromJSVal x | x `js_eq` js_OverSampleType4x = OverSampleType4x
- 
-instance FromJSVal OverSampleType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"none\"; })" js_OverSampleTypeNone
-        :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"2x\"; })" js_OverSampleType2x ::
-        JSVal
- 
-foreign import javascript unsafe "(() => { return \"4x\"; })" js_OverSampleType4x ::
-        JSVal
- 
-data ScrollRestoration = ScrollRestorationAuto
-                       | ScrollRestorationManual
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal ScrollRestoration where
-        pToJSVal ScrollRestorationAuto = js_ScrollRestorationAuto
-        pToJSVal ScrollRestorationManual = js_ScrollRestorationManual
- 
-instance ToJSVal ScrollRestoration where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal ScrollRestoration where
-        pFromJSVal x
-          | x `js_eq` js_ScrollRestorationAuto = ScrollRestorationAuto
-        pFromJSVal x
-          | x `js_eq` js_ScrollRestorationManual = ScrollRestorationManual
- 
-instance FromJSVal ScrollRestoration where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"auto\"; })"
-        js_ScrollRestorationAuto :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"manual\"; })"
-        js_ScrollRestorationManual :: JSVal
- 
-data XMLHttpRequestResponseType = XMLHttpRequestResponseType
-                                | XMLHttpRequestResponseTypeArraybuffer
-                                | XMLHttpRequestResponseTypeBlob
-                                | XMLHttpRequestResponseTypeDocument
-                                | XMLHttpRequestResponseTypeJson
-                                | XMLHttpRequestResponseTypeText
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance PToJSVal XMLHttpRequestResponseType where
-        pToJSVal XMLHttpRequestResponseType = js_XMLHttpRequestResponseType
-        pToJSVal XMLHttpRequestResponseTypeArraybuffer
-          = js_XMLHttpRequestResponseTypeArraybuffer
-        pToJSVal XMLHttpRequestResponseTypeBlob
-          = js_XMLHttpRequestResponseTypeBlob
-        pToJSVal XMLHttpRequestResponseTypeDocument
-          = js_XMLHttpRequestResponseTypeDocument
-        pToJSVal XMLHttpRequestResponseTypeJson
-          = js_XMLHttpRequestResponseTypeJson
-        pToJSVal XMLHttpRequestResponseTypeText
-          = js_XMLHttpRequestResponseTypeText
- 
-instance ToJSVal XMLHttpRequestResponseType where
-        toJSVal = return . pToJSVal
- 
-instance PFromJSVal XMLHttpRequestResponseType where
-        pFromJSVal x
-          | x `js_eq` js_XMLHttpRequestResponseType =
-            XMLHttpRequestResponseType
-        pFromJSVal x
-          | x `js_eq` js_XMLHttpRequestResponseTypeArraybuffer =
-            XMLHttpRequestResponseTypeArraybuffer
-        pFromJSVal x
-          | x `js_eq` js_XMLHttpRequestResponseTypeBlob =
-            XMLHttpRequestResponseTypeBlob
-        pFromJSVal x
-          | x `js_eq` js_XMLHttpRequestResponseTypeDocument =
-            XMLHttpRequestResponseTypeDocument
-        pFromJSVal x
-          | x `js_eq` js_XMLHttpRequestResponseTypeJson =
-            XMLHttpRequestResponseTypeJson
-        pFromJSVal x
-          | x `js_eq` js_XMLHttpRequestResponseTypeText =
-            XMLHttpRequestResponseTypeText
- 
-instance FromJSVal XMLHttpRequestResponseType where
-        fromJSValUnchecked = return . pFromJSVal
-        fromJSVal = return . pFromJSVal
- 
-foreign import javascript unsafe "(() => { return \"\"; })"
-        js_XMLHttpRequestResponseType :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"arraybuffer\"; })"
-        js_XMLHttpRequestResponseTypeArraybuffer :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"blob\"; })"
-        js_XMLHttpRequestResponseTypeBlob :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"document\"; })"
-        js_XMLHttpRequestResponseTypeDocument :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"json\"; })"
-        js_XMLHttpRequestResponseTypeJson :: JSVal
- 
-foreign import javascript unsafe "(() => { return \"text\"; })"
-        js_XMLHttpRequestResponseTypeText :: JSVal
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webref IDL. Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Enums
+       (AacBitstreamFormat(..), js_AacBitstreamFormatAac, js_AacBitstreamFormatAdts, AlignSetting(..), js_AlignSettingStart, js_AlignSettingCenter, js_AlignSettingEnd, js_AlignSettingLeft, js_AlignSettingRight, AlphaOption(..), js_AlphaOptionKeep, js_AlphaOptionDiscard, AnimationPlayState(..), js_AnimationPlayStateIdle, js_AnimationPlayStateRunning, js_AnimationPlayStatePaused, js_AnimationPlayStateFinished, AnimationReplaceState(..), js_AnimationReplaceStateActive, js_AnimationReplaceStateRemoved, js_AnimationReplaceStatePersisted, AppendMode(..), js_AppendModeSegments, js_AppendModeSequence, AriaNotifyPriority(..), js_AriaNotifyPriorityNormal, js_AriaNotifyPriorityHigh, AudioContextLatencyCategory(..), js_AudioContextLatencyCategoryBalanced, js_AudioContextLatencyCategoryInteractive, js_AudioContextLatencyCategoryPlayback, AudioContextRenderSizeCategory(..), js_AudioContextRenderSizeCategoryDefault, js_AudioContextRenderSizeCategoryHardware, AudioContextState(..), js_AudioContextStateSuspended, js_AudioContextStateRunning, js_AudioContextStateClosed, js_AudioContextStateInterrupted, AudioSampleFormat(..), js_AudioSampleFormatU8, js_AudioSampleFormatS16, js_AudioSampleFormatS32, js_AudioSampleFormatF32, js_AudioSampleFormatU8Planar, js_AudioSampleFormatS16Planar, js_AudioSampleFormatS32Planar, js_AudioSampleFormatF32Planar, AudioSelectionPreferenceEnum(..), js_AudioSelectionPreferenceEnumPreferred, AudioSinkType(..), js_AudioSinkTypeNone, AutoKeyword(..), js_AutoKeywordAuto, AutomationRate(..), js_AutomationRateARate, js_AutomationRateKRate, AvcBitstreamFormat(..), js_AvcBitstreamFormatAnnexb, js_AvcBitstreamFormatAvc, BinaryType(..), js_BinaryTypeBlob, js_BinaryTypeArraybuffer, BiquadFilterType(..), js_BiquadFilterTypeLowpass, js_BiquadFilterTypeHighpass, js_BiquadFilterTypeBandpass, js_BiquadFilterTypeLowshelf, js_BiquadFilterTypeHighshelf, js_BiquadFilterTypePeaking, js_BiquadFilterTypeNotch, js_BiquadFilterTypeAllpass, BitrateMode(..), js_BitrateModeConstant, js_BitrateModeVariable, CSSMathOperator(..), js_CSSMathOperatorSum, js_CSSMathOperatorProduct, js_CSSMathOperatorNegate, js_CSSMathOperatorInvert, js_CSSMathOperatorMin, js_CSSMathOperatorMax, js_CSSMathOperatorClamp, CSSNumericBaseType(..), js_CSSNumericBaseTypeLength, js_CSSNumericBaseTypeAngle, js_CSSNumericBaseTypeTime, js_CSSNumericBaseTypeFrequency, js_CSSNumericBaseTypeResolution, js_CSSNumericBaseTypeFlex, js_CSSNumericBaseTypePercent, CanPlayTypeResult(..), js_CanPlayTypeResult, js_CanPlayTypeResultMaybe, js_CanPlayTypeResultProbably, CanvasColorType(..), js_CanvasColorTypeUnorm8, js_CanvasColorTypeFloat16, CanvasDirection(..), js_CanvasDirectionLtr, js_CanvasDirectionRtl, js_CanvasDirectionInherit, CanvasFillRule(..), js_CanvasFillRuleNonzero, js_CanvasFillRuleEvenodd, CanvasFontKerning(..), js_CanvasFontKerningAuto, js_CanvasFontKerningNormal, js_CanvasFontKerningNone, CanvasFontStretch(..), js_CanvasFontStretchUltraCondensed, js_CanvasFontStretchExtraCondensed, js_CanvasFontStretchCondensed, js_CanvasFontStretchSemiCondensed, js_CanvasFontStretchNormal, js_CanvasFontStretchSemiExpanded, js_CanvasFontStretchExpanded, js_CanvasFontStretchExtraExpanded, js_CanvasFontStretchUltraExpanded, CanvasFontVariantCaps(..), js_CanvasFontVariantCapsNormal, js_CanvasFontVariantCapsSmallCaps, js_CanvasFontVariantCapsAllSmallCaps, js_CanvasFontVariantCapsPetiteCaps, js_CanvasFontVariantCapsAllPetiteCaps, js_CanvasFontVariantCapsUnicase, js_CanvasFontVariantCapsTitlingCaps, CanvasLineCap(..), js_CanvasLineCapButt, js_CanvasLineCapRound, js_CanvasLineCapSquare, CanvasLineJoin(..), js_CanvasLineJoinRound, js_CanvasLineJoinBevel, js_CanvasLineJoinMiter, CanvasTextAlign(..), js_CanvasTextAlignStart, js_CanvasTextAlignEnd, js_CanvasTextAlignLeft, js_CanvasTextAlignRight, js_CanvasTextAlignCenter, CanvasTextBaseline(..), js_CanvasTextBaselineTop, js_CanvasTextBaselineHanging, js_CanvasTextBaselineMiddle, js_CanvasTextBaselineAlphabetic, js_CanvasTextBaselineIdeographic, js_CanvasTextBaselineBottom, CanvasTextRendering(..), js_CanvasTextRenderingAuto, js_CanvasTextRenderingOptimizeSpeed, js_CanvasTextRenderingOptimizeLegibility, js_CanvasTextRenderingGeometricPrecision, ChannelCountMode(..), js_ChannelCountModeMax, js_ChannelCountModeClampedMax, js_ChannelCountModeExplicit, ChannelInterpretation(..), js_ChannelInterpretationSpeakers, js_ChannelInterpretationDiscrete, ClientType(..), js_ClientTypeWindow, js_ClientTypeWorker, js_ClientTypeSharedworker, js_ClientTypeAll, CodecState(..), js_CodecStateUnconfigured, js_CodecStateConfigured, js_CodecStateClosed, ColorGamut(..), js_ColorGamutSrgb, js_ColorGamutP3, js_ColorGamutRec2020, ColorSpaceConversion(..), js_ColorSpaceConversionNone, js_ColorSpaceConversionDefault, CompositeOperation(..), js_CompositeOperationReplace, js_CompositeOperationAdd, js_CompositeOperationAccumulate, CompressionFormat(..), js_CompressionFormatBrotli, js_CompressionFormatDeflate, js_CompressionFormatDeflateRaw, js_CompressionFormatGzip, CookieSameSite(..), js_CookieSameSiteStrict, js_CookieSameSiteLax, js_CookieSameSiteNone, CredentialMediationRequirement(..), js_CredentialMediationRequirementSilent, js_CredentialMediationRequirementOptional, js_CredentialMediationRequirementConditional, js_CredentialMediationRequirementRequired, DOMParserSupportedType(..), js_DOMParserSupportedTypeTextHtml, js_DOMParserSupportedTypeTextXml, js_DOMParserSupportedTypeApplicationXml, js_DOMParserSupportedTypeApplicationXhtmlXml, js_DOMParserSupportedTypeImageSvgXml, DigitalCredentialIssuanceProtocol(..), js_DigitalCredentialIssuanceProtocolOpenid4vciV1, DigitalCredentialPresentationProtocol(..), js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned, js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed, js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned, js_DigitalCredentialPresentationProtocolOrgIsoMdoc, DirectionSetting(..), js_DirectionSetting, js_DirectionSettingRl, js_DirectionSettingLr, DistanceModelType(..), js_DistanceModelTypeLinear, js_DistanceModelTypeInverse, js_DistanceModelTypeExponential, DocumentReadyState(..), js_DocumentReadyStateLoading, js_DocumentReadyStateInteractive, js_DocumentReadyStateComplete, DocumentVisibilityState(..), js_DocumentVisibilityStateVisible, js_DocumentVisibilityStateHidden, EncodedAudioChunkType(..), js_EncodedAudioChunkTypeKey, js_EncodedAudioChunkTypeDelta, EncodedVideoChunkType(..), js_EncodedVideoChunkTypeKey, js_EncodedVideoChunkTypeDelta, EndOfStreamError(..), js_EndOfStreamErrorNetwork, js_EndOfStreamErrorDecode, EndingType(..), js_EndingTypeTransparent, js_EndingTypeNative, FileSystemHandleKind(..), js_FileSystemHandleKindFile, js_FileSystemHandleKindDirectory, FillLightMode(..), js_FillLightModeAuto, js_FillLightModeOff, js_FillLightModeFlash, FillMode(..), js_FillModeNone, js_FillModeForwards, js_FillModeBackwards, js_FillModeBoth, js_FillModeAuto, FlowControlType(..), js_FlowControlTypeNone, js_FlowControlTypeHardware, FontFaceLoadStatus(..), js_FontFaceLoadStatusUnloaded, js_FontFaceLoadStatusLoading, js_FontFaceLoadStatusLoaded, js_FontFaceLoadStatusError, FontFaceSetLoadStatus(..), js_FontFaceSetLoadStatusLoading, js_FontFaceSetLoadStatusLoaded, FrameType(..), js_FrameTypeAuxiliary, js_FrameTypeTopLevel, js_FrameTypeNested, js_FrameTypeNone, FullscreenKeyboardLock(..), js_FullscreenKeyboardLockBrowser, js_FullscreenKeyboardLockNone, FullscreenNavigationUI(..), js_FullscreenNavigationUIAuto, js_FullscreenNavigationUIShow, js_FullscreenNavigationUIHide, GPUAddressMode(..), js_GPUAddressModeClampToEdge, js_GPUAddressModeRepeat, js_GPUAddressModeMirrorRepeat, GPUAutoLayoutMode(..), js_GPUAutoLayoutModeAuto, GPUBlendFactor(..), js_GPUBlendFactorZero, js_GPUBlendFactorOne, js_GPUBlendFactorSrc, js_GPUBlendFactorOneMinusSrc, js_GPUBlendFactorSrcAlpha, js_GPUBlendFactorOneMinusSrcAlpha, js_GPUBlendFactorDst, js_GPUBlendFactorOneMinusDst, js_GPUBlendFactorDstAlpha, js_GPUBlendFactorOneMinusDstAlpha, js_GPUBlendFactorSrcAlphaSaturated, js_GPUBlendFactorConstant, js_GPUBlendFactorOneMinusConstant, js_GPUBlendFactorSrc1, js_GPUBlendFactorOneMinusSrc1, js_GPUBlendFactorSrc1Alpha, js_GPUBlendFactorOneMinusSrc1Alpha, GPUBlendOperation(..), js_GPUBlendOperationAdd, js_GPUBlendOperationSubtract, js_GPUBlendOperationReverseSubtract, js_GPUBlendOperationMin, js_GPUBlendOperationMax, GPUBufferBindingType(..), js_GPUBufferBindingTypeUniform, js_GPUBufferBindingTypeStorage, js_GPUBufferBindingTypeReadOnlyStorage, GPUBufferMapState(..), js_GPUBufferMapStateUnmapped, js_GPUBufferMapStatePending, js_GPUBufferMapStateMapped, GPUCanvasAlphaMode(..), js_GPUCanvasAlphaModeOpaque, js_GPUCanvasAlphaModePremultiplied, GPUCanvasToneMappingMode(..), js_GPUCanvasToneMappingModeStandard, js_GPUCanvasToneMappingModeExtended, GPUCompareFunction(..), js_GPUCompareFunctionNever, js_GPUCompareFunctionLess, js_GPUCompareFunctionEqual, js_GPUCompareFunctionLessEqual, js_GPUCompareFunctionGreater, js_GPUCompareFunctionNotEqual, js_GPUCompareFunctionGreaterEqual, js_GPUCompareFunctionAlways, GPUCompilationMessageType(..), js_GPUCompilationMessageTypeError, js_GPUCompilationMessageTypeWarning, js_GPUCompilationMessageTypeInfo, GPUCullMode(..), js_GPUCullModeNone, js_GPUCullModeFront, js_GPUCullModeBack, GPUDeviceLostReason(..), js_GPUDeviceLostReasonUnknown, js_GPUDeviceLostReasonDestroyed, GPUErrorFilter(..), js_GPUErrorFilterValidation, js_GPUErrorFilterOutOfMemory, js_GPUErrorFilterInternal, GPUFeatureName(..), js_GPUFeatureNameCoreFeaturesAndLimits, js_GPUFeatureNameDepthClipControl, js_GPUFeatureNameDepth32floatStencil8, js_GPUFeatureNameTextureCompressionBc, js_GPUFeatureNameTextureCompressionBcSliced3d, js_GPUFeatureNameTextureCompressionEtc2, js_GPUFeatureNameTextureCompressionAstc, js_GPUFeatureNameTextureCompressionAstcSliced3d, js_GPUFeatureNameTimestampQuery, js_GPUFeatureNameIndirectFirstInstance, js_GPUFeatureNameShaderF16, js_GPUFeatureNameRg11b10ufloatRenderable, js_GPUFeatureNameBgra8unormStorage, js_GPUFeatureNameFloat32Filterable, js_GPUFeatureNameFloat32Blendable, js_GPUFeatureNameClipDistances, js_GPUFeatureNameDualSourceBlending, js_GPUFeatureNameSubgroups, js_GPUFeatureNameTextureFormatsTier1, js_GPUFeatureNameTextureFormatsTier2, js_GPUFeatureNamePrimitiveIndex, js_GPUFeatureNameTextureComponentSwizzle, js_GPUFeatureNameSubgroupSizeControl, js_GPUFeatureNameTextureCompressionUnaligned, js_GPUFeatureNameAtomicVec2uMinMax, GPUFilterMode(..), js_GPUFilterModeNearest, js_GPUFilterModeLinear, GPUFrontFace(..), js_GPUFrontFaceCcw, js_GPUFrontFaceCw, GPUIndexFormat(..), js_GPUIndexFormatUint16, js_GPUIndexFormatUint32, GPULoadOp(..), js_GPULoadOpLoad, js_GPULoadOpClear, GPUMipmapFilterMode(..), js_GPUMipmapFilterModeNearest, js_GPUMipmapFilterModeLinear, GPUPipelineErrorReason(..), js_GPUPipelineErrorReasonValidation, js_GPUPipelineErrorReasonInternal, GPUPowerPreference(..), js_GPUPowerPreferenceLowPower, js_GPUPowerPreferenceHighPerformance, GPUPrimitiveTopology(..), js_GPUPrimitiveTopologyPointList, js_GPUPrimitiveTopologyLineList, js_GPUPrimitiveTopologyLineStrip, js_GPUPrimitiveTopologyTriangleList, js_GPUPrimitiveTopologyTriangleStrip, GPUQueryType(..), js_GPUQueryTypeOcclusion, js_GPUQueryTypeTimestamp, GPUSamplerBindingType(..), js_GPUSamplerBindingTypeFiltering, js_GPUSamplerBindingTypeNonFiltering, js_GPUSamplerBindingTypeComparison, GPUStencilOperation(..), js_GPUStencilOperationKeep, js_GPUStencilOperationZero, js_GPUStencilOperationReplace, js_GPUStencilOperationInvert, js_GPUStencilOperationIncrementClamp, js_GPUStencilOperationDecrementClamp, js_GPUStencilOperationIncrementWrap, js_GPUStencilOperationDecrementWrap, GPUStorageTextureAccess(..), js_GPUStorageTextureAccessWriteOnly, js_GPUStorageTextureAccessReadOnly, js_GPUStorageTextureAccessReadWrite, GPUStoreOp(..), js_GPUStoreOpStore, js_GPUStoreOpDiscard, GPUTextureAspect(..), js_GPUTextureAspectAll, js_GPUTextureAspectStencilOnly, js_GPUTextureAspectDepthOnly, GPUTextureDimension(..), js_GPUTextureDimension1d, js_GPUTextureDimension2d, js_GPUTextureDimension3d, GPUTextureFormat(..), js_GPUTextureFormatR8unorm, js_GPUTextureFormatR8snorm, js_GPUTextureFormatR8uint, js_GPUTextureFormatR8sint, js_GPUTextureFormatR16unorm, js_GPUTextureFormatR16snorm, js_GPUTextureFormatR16uint, js_GPUTextureFormatR16sint, js_GPUTextureFormatR16float, js_GPUTextureFormatRg8unorm, js_GPUTextureFormatRg8snorm, js_GPUTextureFormatRg8uint, js_GPUTextureFormatRg8sint, js_GPUTextureFormatR32uint, js_GPUTextureFormatR32sint, js_GPUTextureFormatR32float, js_GPUTextureFormatRg16unorm, js_GPUTextureFormatRg16snorm, js_GPUTextureFormatRg16uint, js_GPUTextureFormatRg16sint, js_GPUTextureFormatRg16float, js_GPUTextureFormatRgba8unorm, js_GPUTextureFormatRgba8unormSrgb, js_GPUTextureFormatRgba8snorm, js_GPUTextureFormatRgba8uint, js_GPUTextureFormatRgba8sint, js_GPUTextureFormatBgra8unorm, js_GPUTextureFormatBgra8unormSrgb, js_GPUTextureFormatRgb9e5ufloat, js_GPUTextureFormatRgb10a2uint, js_GPUTextureFormatRgb10a2unorm, js_GPUTextureFormatRg11b10ufloat, js_GPUTextureFormatRg32uint, js_GPUTextureFormatRg32sint, js_GPUTextureFormatRg32float, js_GPUTextureFormatRgba16unorm, js_GPUTextureFormatRgba16snorm, js_GPUTextureFormatRgba16uint, js_GPUTextureFormatRgba16sint, js_GPUTextureFormatRgba16float, js_GPUTextureFormatRgba32uint, js_GPUTextureFormatRgba32sint, js_GPUTextureFormatRgba32float, js_GPUTextureFormatStencil8, js_GPUTextureFormatDepth16unorm, js_GPUTextureFormatDepth24plus, js_GPUTextureFormatDepth24plusStencil8, js_GPUTextureFormatDepth32float, js_GPUTextureFormatDepth32floatStencil8, js_GPUTextureFormatBc1RgbaUnorm, js_GPUTextureFormatBc1RgbaUnormSrgb, js_GPUTextureFormatBc2RgbaUnorm, js_GPUTextureFormatBc2RgbaUnormSrgb, js_GPUTextureFormatBc3RgbaUnorm, js_GPUTextureFormatBc3RgbaUnormSrgb, js_GPUTextureFormatBc4RUnorm, js_GPUTextureFormatBc4RSnorm, js_GPUTextureFormatBc5RgUnorm, js_GPUTextureFormatBc5RgSnorm, js_GPUTextureFormatBc6hRgbUfloat, js_GPUTextureFormatBc6hRgbFloat, js_GPUTextureFormatBc7RgbaUnorm, js_GPUTextureFormatBc7RgbaUnormSrgb, js_GPUTextureFormatEtc2Rgb8unorm, js_GPUTextureFormatEtc2Rgb8unormSrgb, js_GPUTextureFormatEtc2Rgb8a1unorm, js_GPUTextureFormatEtc2Rgb8a1unormSrgb, js_GPUTextureFormatEtc2Rgba8unorm, js_GPUTextureFormatEtc2Rgba8unormSrgb, js_GPUTextureFormatEacR11unorm, js_GPUTextureFormatEacR11snorm, js_GPUTextureFormatEacRg11unorm, js_GPUTextureFormatEacRg11snorm, js_GPUTextureFormatAstc4x4Unorm, js_GPUTextureFormatAstc4x4UnormSrgb, js_GPUTextureFormatAstc5x4Unorm, js_GPUTextureFormatAstc5x4UnormSrgb, js_GPUTextureFormatAstc5x5Unorm, js_GPUTextureFormatAstc5x5UnormSrgb, js_GPUTextureFormatAstc6x5Unorm, js_GPUTextureFormatAstc6x5UnormSrgb, js_GPUTextureFormatAstc6x6Unorm, js_GPUTextureFormatAstc6x6UnormSrgb, js_GPUTextureFormatAstc8x5Unorm, js_GPUTextureFormatAstc8x5UnormSrgb, js_GPUTextureFormatAstc8x6Unorm, js_GPUTextureFormatAstc8x6UnormSrgb, js_GPUTextureFormatAstc8x8Unorm, js_GPUTextureFormatAstc8x8UnormSrgb, js_GPUTextureFormatAstc10x5Unorm, js_GPUTextureFormatAstc10x5UnormSrgb, js_GPUTextureFormatAstc10x6Unorm, js_GPUTextureFormatAstc10x6UnormSrgb, js_GPUTextureFormatAstc10x8Unorm, js_GPUTextureFormatAstc10x8UnormSrgb, js_GPUTextureFormatAstc10x10Unorm, js_GPUTextureFormatAstc10x10UnormSrgb, js_GPUTextureFormatAstc12x10Unorm, js_GPUTextureFormatAstc12x10UnormSrgb, js_GPUTextureFormatAstc12x12Unorm, js_GPUTextureFormatAstc12x12UnormSrgb, GPUTextureSampleType(..), js_GPUTextureSampleTypeFloat, js_GPUTextureSampleTypeUnfilterableFloat, js_GPUTextureSampleTypeDepth, js_GPUTextureSampleTypeSint, js_GPUTextureSampleTypeUint, GPUTextureViewDimension(..), js_GPUTextureViewDimension1d, js_GPUTextureViewDimension2d, js_GPUTextureViewDimension2dArray, js_GPUTextureViewDimensionCube, js_GPUTextureViewDimensionCubeArray, js_GPUTextureViewDimension3d, GPUVertexFormat(..), js_GPUVertexFormatUint8, js_GPUVertexFormatUint8x2, js_GPUVertexFormatUint8x4, js_GPUVertexFormatSint8, js_GPUVertexFormatSint8x2, js_GPUVertexFormatSint8x4, js_GPUVertexFormatUnorm8, js_GPUVertexFormatUnorm8x2, js_GPUVertexFormatUnorm8x4, js_GPUVertexFormatSnorm8, js_GPUVertexFormatSnorm8x2, js_GPUVertexFormatSnorm8x4, js_GPUVertexFormatUint16, js_GPUVertexFormatUint16x2, js_GPUVertexFormatUint16x4, js_GPUVertexFormatSint16, js_GPUVertexFormatSint16x2, js_GPUVertexFormatSint16x4, js_GPUVertexFormatUnorm16, js_GPUVertexFormatUnorm16x2, js_GPUVertexFormatUnorm16x4, js_GPUVertexFormatSnorm16, js_GPUVertexFormatSnorm16x2, js_GPUVertexFormatSnorm16x4, js_GPUVertexFormatFloat16, js_GPUVertexFormatFloat16x2, js_GPUVertexFormatFloat16x4, js_GPUVertexFormatFloat32, js_GPUVertexFormatFloat32x2, js_GPUVertexFormatFloat32x3, js_GPUVertexFormatFloat32x4, js_GPUVertexFormatUint32, js_GPUVertexFormatUint32x2, js_GPUVertexFormatUint32x3, js_GPUVertexFormatUint32x4, js_GPUVertexFormatSint32, js_GPUVertexFormatSint32x2, js_GPUVertexFormatSint32x3, js_GPUVertexFormatSint32x4, js_GPUVertexFormatUnorm1010102, js_GPUVertexFormatUnorm8x4Bgra, js_GPUVertexFormatSnorm1010102, GPUVertexStepMode(..), js_GPUVertexStepModeVertex, js_GPUVertexStepModeInstance, GamepadHapticEffectType(..), js_GamepadHapticEffectTypeDualRumble, js_GamepadHapticEffectTypeTriggerRumble, GamepadHapticsResult(..), js_GamepadHapticsResultComplete, js_GamepadHapticsResultPreempted, GamepadMappingType(..), js_GamepadMappingType, js_GamepadMappingTypeStandard, js_GamepadMappingTypeXrStandard, GetUserMediaSemantics(..), js_GetUserMediaSemanticsBrowserChooses, js_GetUserMediaSemanticsUserChooses, HardwareAcceleration(..), js_HardwareAccelerationNoPreference, js_HardwareAccelerationPreferHardware, js_HardwareAccelerationPreferSoftware, HdrMetadataType(..), js_HdrMetadataTypeSmpteSt2086, js_HdrMetadataTypeSmpteSt209410, js_HdrMetadataTypeSmpteSt209440, HevcBitstreamFormat(..), js_HevcBitstreamFormatAnnexb, js_HevcBitstreamFormatHevc, HighlightType(..), js_HighlightTypeHighlight, js_HighlightTypeSpellingError, js_HighlightTypeGrammarError, IDBCursorDirection(..), js_IDBCursorDirectionNext, js_IDBCursorDirectionNextunique, js_IDBCursorDirectionPrev, js_IDBCursorDirectionPrevunique, IDBRequestReadyState(..), js_IDBRequestReadyStatePending, js_IDBRequestReadyStateDone, IDBTransactionDurability(..), js_IDBTransactionDurabilityDefault, js_IDBTransactionDurabilityStrict, js_IDBTransactionDurabilityRelaxed, IDBTransactionMode(..), js_IDBTransactionModeReadonly, js_IDBTransactionModeReadwrite, js_IDBTransactionModeVersionchange, IPAddressSpace(..), js_IPAddressSpacePublic, js_IPAddressSpaceLocal, js_IPAddressSpaceLoopback, IdentityCredentialRequestOptionsContext(..), js_IdentityCredentialRequestOptionsContextSignin, js_IdentityCredentialRequestOptionsContextSignup, js_IdentityCredentialRequestOptionsContextUse, js_IdentityCredentialRequestOptionsContextContinue, IdentityCredentialRequestOptionsMode(..), js_IdentityCredentialRequestOptionsModeActive, js_IdentityCredentialRequestOptionsModePassive, ImageDataPixelFormat(..), js_ImageDataPixelFormatRgbaUnorm8, js_ImageDataPixelFormatRgbaFloat16, ImageSmoothingQuality(..), js_ImageSmoothingQualityLow, js_ImageSmoothingQualityMedium, js_ImageSmoothingQualityHigh, IterationCompositeOperation(..), js_IterationCompositeOperationReplace, js_IterationCompositeOperationAccumulate, KeyFormat(..), js_KeyFormatRawPublic, js_KeyFormatRawPrivate, js_KeyFormatRawSeed, js_KeyFormatRawSecret, js_KeyFormatRaw, js_KeyFormatSpki, js_KeyFormatPkcs8, js_KeyFormatJwk, KeyType(..), js_KeyTypePublic, js_KeyTypePrivate, js_KeyTypeSecret, KeyUsage(..), js_KeyUsageEncrypt, js_KeyUsageDecrypt, js_KeyUsageSign, js_KeyUsageVerify, js_KeyUsageDeriveKey, js_KeyUsageDeriveBits, js_KeyUsageWrapKey, js_KeyUsageUnwrapKey, js_KeyUsageEncapsulateKey, js_KeyUsageEncapsulateBits, js_KeyUsageDecapsulateKey, js_KeyUsageDecapsulateBits, LatencyMode(..), js_LatencyModeQuality, js_LatencyModeRealtime, LineAlignSetting(..), js_LineAlignSettingStart, js_LineAlignSettingCenter, js_LineAlignSettingEnd, LockMode(..), js_LockModeShared, js_LockModeExclusive, LoginStatus(..), js_LoginStatusLoggedIn, js_LoginStatusLoggedOut, MIDIPortConnectionState(..), js_MIDIPortConnectionStateOpen, js_MIDIPortConnectionStateClosed, js_MIDIPortConnectionStatePending, MIDIPortDeviceState(..), js_MIDIPortDeviceStateDisconnected, js_MIDIPortDeviceStateConnected, MIDIPortType(..), js_MIDIPortTypeInput, js_MIDIPortTypeOutput, MediaDecodingType(..), js_MediaDecodingTypeFile, js_MediaDecodingTypeMediaSource, js_MediaDecodingTypeWebrtc, MediaDeviceKind(..), js_MediaDeviceKindAudioinput, js_MediaDeviceKindAudiooutput, js_MediaDeviceKindVideoinput, MediaEncodingType(..), js_MediaEncodingTypeRecord, js_MediaEncodingTypeWebrtc, MediaKeyMessageType(..), js_MediaKeyMessageTypeLicenseRequest, js_MediaKeyMessageTypeLicenseRenewal, js_MediaKeyMessageTypeLicenseRelease, js_MediaKeyMessageTypeIndividualizationRequest, MediaKeySessionClosedReason(..), js_MediaKeySessionClosedReasonInternalError, js_MediaKeySessionClosedReasonClosedByApplication, js_MediaKeySessionClosedReasonReleaseAcknowledged, js_MediaKeySessionClosedReasonHardwareContextReset, js_MediaKeySessionClosedReasonResourceEvicted, MediaKeySessionType(..), js_MediaKeySessionTypeTemporary, js_MediaKeySessionTypePersistentLicense, MediaKeyStatus(..), js_MediaKeyStatusUsable, js_MediaKeyStatusExpired, js_MediaKeyStatusReleased, js_MediaKeyStatusOutputRestricted, js_MediaKeyStatusOutputDownscaled, js_MediaKeyStatusUsableInFuture, js_MediaKeyStatusStatusPending, js_MediaKeyStatusInternalError, MediaKeysRequirement(..), js_MediaKeysRequirementRequired, js_MediaKeysRequirementOptional, js_MediaKeysRequirementNotAllowed, MediaSessionAction(..), js_MediaSessionActionPlay, js_MediaSessionActionPause, js_MediaSessionActionSeekbackward, js_MediaSessionActionSeekforward, js_MediaSessionActionPrevioustrack, js_MediaSessionActionNexttrack, js_MediaSessionActionSkipad, js_MediaSessionActionStop, js_MediaSessionActionSeekto, js_MediaSessionActionTogglemicrophone, js_MediaSessionActionTogglecamera, js_MediaSessionActionTogglescreenshare, js_MediaSessionActionHangup, js_MediaSessionActionPreviousslide, js_MediaSessionActionNextslide, js_MediaSessionActionEnterpictureinpicture, js_MediaSessionActionVoiceactivity, MediaSessionEnterPictureInPictureReason(..), js_MediaSessionEnterPictureInPictureReasonOther, js_MediaSessionEnterPictureInPictureReasonUseraction, js_MediaSessionEnterPictureInPictureReasonContentoccluded, MediaSessionPlaybackState(..), js_MediaSessionPlaybackStateNone, js_MediaSessionPlaybackStatePaused, js_MediaSessionPlaybackStatePlaying, MediaStreamTrackState(..), js_MediaStreamTrackStateLive, js_MediaStreamTrackStateEnded, MonitorTypeSurfacesEnum(..), js_MonitorTypeSurfacesEnumInclude, js_MonitorTypeSurfacesEnumExclude, NavigationFocusReset(..), js_NavigationFocusResetAfterTransition, js_NavigationFocusResetManual, NavigationHistoryBehavior(..), js_NavigationHistoryBehaviorAuto, js_NavigationHistoryBehaviorPush, js_NavigationHistoryBehaviorReplace, NavigationScrollBehavior(..), js_NavigationScrollBehaviorAfterTransition, js_NavigationScrollBehaviorManual, NavigationTimingType(..), js_NavigationTimingTypeNavigate, js_NavigationTimingTypeReload, js_NavigationTimingTypeBackForward, NavigationType(..), js_NavigationTypePush, js_NavigationTypeReplace, js_NavigationTypeReload, js_NavigationTypeTraverse, NotificationDirection(..), js_NotificationDirectionAuto, js_NotificationDirectionLtr, js_NotificationDirectionRtl, NotificationPermission(..), js_NotificationPermissionDefault, js_NotificationPermissionDenied, js_NotificationPermissionGranted, OTPCredentialTransportType(..), js_OTPCredentialTransportTypeSms, OffscreenRenderingContextId(..), js_OffscreenRenderingContextId2d, js_OffscreenRenderingContextIdBitmaprenderer, js_OffscreenRenderingContextIdWebgl, js_OffscreenRenderingContextIdWebgl2, js_OffscreenRenderingContextIdWebgpu, OperationType(..), js_OperationTypeTokenRequest, js_OperationTypeSendRedemptionRecord, js_OperationTypeTokenRedemption, OpusApplication(..), js_OpusApplicationVoip, js_OpusApplicationAudio, js_OpusApplicationLowdelay, OpusBitstreamFormat(..), js_OpusBitstreamFormatOpus, js_OpusBitstreamFormatOgg, OpusSignal(..), js_OpusSignalAuto, js_OpusSignalMusic, js_OpusSignalVoice, OrientationLockType(..), js_OrientationLockTypeAny, js_OrientationLockTypeNatural, js_OrientationLockTypeLandscape, js_OrientationLockTypePortrait, js_OrientationLockTypePortraitPrimary, js_OrientationLockTypePortraitSecondary, js_OrientationLockTypeLandscapePrimary, js_OrientationLockTypeLandscapeSecondary, OrientationType(..), js_OrientationTypePortraitPrimary, js_OrientationTypePortraitSecondary, js_OrientationTypeLandscapePrimary, js_OrientationTypeLandscapeSecondary, OscillatorType(..), js_OscillatorTypeSine, js_OscillatorTypeSquare, js_OscillatorTypeSawtooth, js_OscillatorTypeTriangle, js_OscillatorTypeCustom, OverSampleType(..), js_OverSampleTypeNone, js_OverSampleType2x, js_OverSampleType4x, PanningModelType(..), js_PanningModelTypeEqualpower, js_PanningModelTypeHRTF, ParityType(..), js_ParityTypeNone, js_ParityTypeEven, js_ParityTypeOdd, PaymentComplete(..), js_PaymentCompleteFail, js_PaymentCompleteSuccess, js_PaymentCompleteUnknown, PaymentShippingType(..), js_PaymentShippingTypeShipping, js_PaymentShippingTypeDelivery, js_PaymentShippingTypePickup, PermissionState(..), js_PermissionStateGranted, js_PermissionStateDenied, js_PermissionStatePrompt, PlaybackDirection(..), js_PlaybackDirectionNormal, js_PlaybackDirectionReverse, js_PlaybackDirectionAlternate, js_PlaybackDirectionAlternateReverse, PositionAlignSetting(..), js_PositionAlignSettingLineLeft, js_PositionAlignSettingCenter, js_PositionAlignSettingLineRight, js_PositionAlignSettingAuto, PredefinedColorSpace(..), js_PredefinedColorSpaceSrgb, js_PredefinedColorSpaceSrgbLinear, js_PredefinedColorSpaceDisplayP3, js_PredefinedColorSpaceDisplayP3Linear, PresentationStyle(..), js_PresentationStyleUnspecified, js_PresentationStyleInline, js_PresentationStyleAttachment, PushEncryptionKeyName(..), js_PushEncryptionKeyNameP256dh, js_PushEncryptionKeyNameAuth, RTCBundlePolicy(..), js_RTCBundlePolicyBalanced, js_RTCBundlePolicyMaxCompat, js_RTCBundlePolicyMaxBundle, RTCDataChannelState(..), js_RTCDataChannelStateConnecting, js_RTCDataChannelStateOpen, js_RTCDataChannelStateClosing, js_RTCDataChannelStateClosed, RTCDegradationPreference(..), js_RTCDegradationPreferenceMaintainFramerate, js_RTCDegradationPreferenceMaintainResolution, js_RTCDegradationPreferenceBalanced, js_RTCDegradationPreferenceMaintainFramerateAndResolution, RTCDtlsTransportState(..), js_RTCDtlsTransportStateNew, js_RTCDtlsTransportStateConnecting, js_RTCDtlsTransportStateConnected, js_RTCDtlsTransportStateClosed, js_RTCDtlsTransportStateFailed, RTCErrorDetailType(..), js_RTCErrorDetailTypeDataChannelFailure, js_RTCErrorDetailTypeDtlsFailure, js_RTCErrorDetailTypeFingerprintFailure, js_RTCErrorDetailTypeSctpFailure, js_RTCErrorDetailTypeSdpSyntaxError, js_RTCErrorDetailTypeHardwareEncoderNotAvailable, js_RTCErrorDetailTypeHardwareEncoderError, RTCIceCandidateType(..), js_RTCIceCandidateTypeHost, js_RTCIceCandidateTypeSrflx, js_RTCIceCandidateTypePrflx, js_RTCIceCandidateTypeRelay, RTCIceComponent(..), js_RTCIceComponentRtp, js_RTCIceComponentRtcp, RTCIceConnectionState(..), js_RTCIceConnectionStateClosed, js_RTCIceConnectionStateFailed, js_RTCIceConnectionStateDisconnected, js_RTCIceConnectionStateNew, js_RTCIceConnectionStateChecking, js_RTCIceConnectionStateCompleted, js_RTCIceConnectionStateConnected, RTCIceGathererState(..), js_RTCIceGathererStateNew, js_RTCIceGathererStateGathering, js_RTCIceGathererStateComplete, RTCIceGatheringState(..), js_RTCIceGatheringStateNew, js_RTCIceGatheringStateGathering, js_RTCIceGatheringStateComplete, RTCIceProtocol(..), js_RTCIceProtocolUdp, js_RTCIceProtocolTcp, RTCIceRole(..), js_RTCIceRoleUnknown, js_RTCIceRoleControlling, js_RTCIceRoleControlled, RTCIceServerTransportProtocol(..), js_RTCIceServerTransportProtocolUdp, js_RTCIceServerTransportProtocolTcp, js_RTCIceServerTransportProtocolTls, RTCIceTcpCandidateType(..), js_RTCIceTcpCandidateTypeActive, js_RTCIceTcpCandidateTypePassive, js_RTCIceTcpCandidateTypeSo, RTCIceTransportPolicy(..), js_RTCIceTransportPolicyRelay, js_RTCIceTransportPolicyAll, RTCIceTransportState(..), js_RTCIceTransportStateClosed, js_RTCIceTransportStateFailed, js_RTCIceTransportStateDisconnected, js_RTCIceTransportStateNew, js_RTCIceTransportStateChecking, js_RTCIceTransportStateCompleted, js_RTCIceTransportStateConnected, RTCPeerConnectionState(..), js_RTCPeerConnectionStateClosed, js_RTCPeerConnectionStateFailed, js_RTCPeerConnectionStateDisconnected, js_RTCPeerConnectionStateNew, js_RTCPeerConnectionStateConnecting, js_RTCPeerConnectionStateConnected, RTCPriorityType(..), js_RTCPriorityTypeVeryLow, js_RTCPriorityTypeLow, js_RTCPriorityTypeMedium, js_RTCPriorityTypeHigh, RTCRtcpMuxPolicy(..), js_RTCRtcpMuxPolicyRequire, RTCRtpScriptTransformType(..), js_RTCRtpScriptTransformTypeSframe, RTCRtpTransceiverDirection(..), js_RTCRtpTransceiverDirectionSendrecv, js_RTCRtpTransceiverDirectionSendonly, js_RTCRtpTransceiverDirectionRecvonly, js_RTCRtpTransceiverDirectionInactive, js_RTCRtpTransceiverDirectionStopped, RTCSctpTransportState(..), js_RTCSctpTransportStateConnecting, js_RTCSctpTransportStateConnected, js_RTCSctpTransportStateClosed, RTCSdpType(..), js_RTCSdpTypeOffer, js_RTCSdpTypePranswer, js_RTCSdpTypeAnswer, js_RTCSdpTypeRollback, RTCSignalingState(..), js_RTCSignalingStateStable, js_RTCSignalingStateHaveLocalOffer, js_RTCSignalingStateHaveRemoteOffer, js_RTCSignalingStateHaveLocalPranswer, js_RTCSignalingStateHaveRemotePranswer, js_RTCSignalingStateClosed, ReadableStreamReaderMode(..), js_ReadableStreamReaderModeByob, ReadableStreamType(..), js_ReadableStreamTypeBytes, ReadyState(..), js_ReadyStateClosed, js_ReadyStateOpen, js_ReadyStateEnded, RecordingState(..), js_RecordingStateInactive, js_RecordingStateRecording, js_RecordingStatePaused, RedEyeReduction(..), js_RedEyeReductionNever, js_RedEyeReductionAlways, js_RedEyeReductionControllable, ReferrerPolicy(..), js_ReferrerPolicy, js_ReferrerPolicyNoReferrer, js_ReferrerPolicyNoReferrerWhenDowngrade, js_ReferrerPolicySameOrigin, js_ReferrerPolicyOrigin, js_ReferrerPolicyStrictOrigin, js_ReferrerPolicyOriginWhenCrossOrigin, js_ReferrerPolicyStrictOriginWhenCrossOrigin, js_ReferrerPolicyUnsafeUrl, RefreshPolicy(..), js_RefreshPolicyNone, js_RefreshPolicyRefresh, RemotePlaybackState(..), js_RemotePlaybackStateConnecting, js_RemotePlaybackStateConnected, js_RemotePlaybackStateDisconnected, RequestCache(..), js_RequestCacheDefault, js_RequestCacheNoStore, js_RequestCacheReload, js_RequestCacheNoCache, js_RequestCacheForceCache, js_RequestCacheOnlyIfCached, RequestCredentials(..), js_RequestCredentialsOmit, js_RequestCredentialsSameOrigin, js_RequestCredentialsInclude, RequestDestination(..), js_RequestDestination, js_RequestDestinationAudio, js_RequestDestinationAudioworklet, js_RequestDestinationDocument, js_RequestDestinationEmbed, js_RequestDestinationFont, js_RequestDestinationFrame, js_RequestDestinationIframe, js_RequestDestinationImage, js_RequestDestinationJson, js_RequestDestinationManifest, js_RequestDestinationObject, js_RequestDestinationPaintworklet, js_RequestDestinationReport, js_RequestDestinationScript, js_RequestDestinationSharedworker, js_RequestDestinationStyle, js_RequestDestinationText, js_RequestDestinationTrack, js_RequestDestinationVideo, js_RequestDestinationWorker, js_RequestDestinationXslt, RequestDuplex(..), js_RequestDuplexHalf, RequestMode(..), js_RequestModeNavigate, js_RequestModeSameOrigin, js_RequestModeNoCors, js_RequestModeCors, RequestPriority(..), js_RequestPriorityHigh, js_RequestPriorityLow, js_RequestPriorityAuto, RequestRedirect(..), js_RequestRedirectFollow, js_RequestRedirectError, js_RequestRedirectManual, ResizeObserverBoxOptions(..), js_ResizeObserverBoxOptionsBorderBox, js_ResizeObserverBoxOptionsContentBox, js_ResizeObserverBoxOptionsDevicePixelContentBox, ResponseType(..), js_ResponseTypeBasic, js_ResponseTypeCors, js_ResponseTypeDefault, js_ResponseTypeError, js_ResponseTypeOpaque, js_ResponseTypeOpaqueredirect, RouterSourceEnum(..), js_RouterSourceEnumCache, js_RouterSourceEnumFetchEvent, js_RouterSourceEnumNetwork, js_RouterSourceEnumRaceNetworkAndFetchHandler, RunningStatus(..), js_RunningStatusRunning, js_RunningStatusNotRunning, SameSiteCookiesType(..), js_SameSiteCookiesTypeAll, js_SameSiteCookiesTypeNone, SanitizerPresets(..), js_SanitizerPresetsDefault, ScrollAxis(..), js_ScrollAxisBlock, js_ScrollAxisInline, js_ScrollAxisX, js_ScrollAxisY, ScrollBehavior(..), js_ScrollBehaviorAuto, js_ScrollBehaviorInstant, js_ScrollBehaviorSmooth, ScrollIntoViewContainer(..), js_ScrollIntoViewContainerAll, js_ScrollIntoViewContainerNearest, ScrollLogicalPosition(..), js_ScrollLogicalPositionStart, js_ScrollLogicalPositionCenter, js_ScrollLogicalPositionEnd, js_ScrollLogicalPositionNearest, ScrollRestoration(..), js_ScrollRestorationAuto, js_ScrollRestorationManual, ScrollSetting(..), js_ScrollSetting, js_ScrollSettingUp, SecurityPolicyViolationEventDisposition(..), js_SecurityPolicyViolationEventDispositionEnforce, js_SecurityPolicyViolationEventDispositionReport, SegmentType(..), js_SegmentTypeHumanFace, js_SegmentTypeLeftEye, js_SegmentTypeRightEye, js_SegmentTypeEye, js_SegmentTypeMouth, SelectionMode(..), js_SelectionModeSelect, js_SelectionModeStart, js_SelectionModeEnd, js_SelectionModePreserve, SelfCapturePreferenceEnum(..), js_SelfCapturePreferenceEnumInclude, js_SelfCapturePreferenceEnumExclude, ServiceWorkerState(..), js_ServiceWorkerStateParsed, js_ServiceWorkerStateInstalling, js_ServiceWorkerStateInstalled, js_ServiceWorkerStateActivating, js_ServiceWorkerStateActivated, js_ServiceWorkerStateRedundant, ServiceWorkerUpdateViaCache(..), js_ServiceWorkerUpdateViaCacheImports, js_ServiceWorkerUpdateViaCacheAll, js_ServiceWorkerUpdateViaCacheNone, ShadowRootMode(..), js_ShadowRootModeOpen, js_ShadowRootModeClosed, SlotAssignmentMode(..), js_SlotAssignmentModeManual, js_SlotAssignmentModeNamed, SpeechRecognitionAvailabilityStatus(..), js_SpeechRecognitionAvailabilityStatusUnavailable, js_SpeechRecognitionAvailabilityStatusDownloadable, js_SpeechRecognitionAvailabilityStatusDownloading, js_SpeechRecognitionAvailabilityStatusAvailable, SpeechRecognitionErrorCode(..), js_SpeechRecognitionErrorCodeNoSpeech, js_SpeechRecognitionErrorCodeAborted, js_SpeechRecognitionErrorCodeAudioCapture, js_SpeechRecognitionErrorCodeNetwork, js_SpeechRecognitionErrorCodeNotAllowed, js_SpeechRecognitionErrorCodeServiceNotAllowed, js_SpeechRecognitionErrorCodeLanguageNotSupported, js_SpeechRecognitionErrorCodePhrasesNotSupported, SpeechRecognitionQuality(..), js_SpeechRecognitionQualityCommand, js_SpeechRecognitionQualityDictation, js_SpeechRecognitionQualityConversation, SpeechSynthesisErrorCode(..), js_SpeechSynthesisErrorCodeCanceled, js_SpeechSynthesisErrorCodeInterrupted, js_SpeechSynthesisErrorCodeAudioBusy, js_SpeechSynthesisErrorCodeAudioHardware, js_SpeechSynthesisErrorCodeNetwork, js_SpeechSynthesisErrorCodeSynthesisUnavailable, js_SpeechSynthesisErrorCodeSynthesisFailed, js_SpeechSynthesisErrorCodeLanguageUnavailable, js_SpeechSynthesisErrorCodeVoiceUnavailable, js_SpeechSynthesisErrorCodeTextTooLong, js_SpeechSynthesisErrorCodeInvalidArgument, js_SpeechSynthesisErrorCodeNotAllowed, SurfaceSwitchingPreferenceEnum(..), js_SurfaceSwitchingPreferenceEnumInclude, js_SurfaceSwitchingPreferenceEnumExclude, SystemAudioPreferenceEnum(..), js_SystemAudioPreferenceEnumInclude, js_SystemAudioPreferenceEnumExclude, TaskPriority(..), js_TaskPriorityUserBlocking, js_TaskPriorityUserVisible, js_TaskPriorityBackground, TextTrackKind(..), js_TextTrackKindSubtitles, js_TextTrackKindCaptions, js_TextTrackKindDescriptions, js_TextTrackKindChapters, js_TextTrackKindMetadata, TextTrackMode(..), js_TextTrackModeDisabled, js_TextTrackModeHidden, js_TextTrackModeShowing, TokenVersion(..), js_TokenVersion1, TouchType(..), js_TouchTypeDirect, js_TouchTypeStylus, TransferFunction(..), js_TransferFunctionSrgb, js_TransferFunctionPq, js_TransferFunctionHlg, VideoColorPrimaries(..), js_VideoColorPrimariesBt709, js_VideoColorPrimariesBt470bg, js_VideoColorPrimariesSmpte170m, js_VideoColorPrimariesBt2020, js_VideoColorPrimariesSmpte432, VideoEncoderBitrateMode(..), js_VideoEncoderBitrateModeConstant, js_VideoEncoderBitrateModeVariable, js_VideoEncoderBitrateModeQuantizer, VideoMatrixCoefficients(..), js_VideoMatrixCoefficientsRgb, js_VideoMatrixCoefficientsBt709, js_VideoMatrixCoefficientsBt470bg, js_VideoMatrixCoefficientsSmpte170m, js_VideoMatrixCoefficientsBt2020Ncl, VideoPixelFormat(..), js_VideoPixelFormatI420, js_VideoPixelFormatI420P10, js_VideoPixelFormatI420P12, js_VideoPixelFormatI420A, js_VideoPixelFormatI420AP10, js_VideoPixelFormatI420AP12, js_VideoPixelFormatI422, js_VideoPixelFormatI422P10, js_VideoPixelFormatI422P12, js_VideoPixelFormatI422A, js_VideoPixelFormatI422AP10, js_VideoPixelFormatI422AP12, js_VideoPixelFormatI444, js_VideoPixelFormatI444P10, js_VideoPixelFormatI444P12, js_VideoPixelFormatI444A, js_VideoPixelFormatI444AP10, js_VideoPixelFormatI444AP12, js_VideoPixelFormatNV12, js_VideoPixelFormatRGBA, js_VideoPixelFormatRGBX, js_VideoPixelFormatBGRA, js_VideoPixelFormatBGRX, VideoTransferCharacteristics(..), js_VideoTransferCharacteristicsBt709, js_VideoTransferCharacteristicsSmpte170m, js_VideoTransferCharacteristicsIec6196621, js_VideoTransferCharacteristicsLinear, js_VideoTransferCharacteristicsPq, js_VideoTransferCharacteristicsHlg, WakeLockType(..), js_WakeLockTypeScreen, WebGLPowerPreference(..), js_WebGLPowerPreferenceDefault, js_WebGLPowerPreferenceLowPower, js_WebGLPowerPreferenceHighPerformance, WebTransportCongestionControl(..), js_WebTransportCongestionControlDefault, js_WebTransportCongestionControlThroughput, js_WebTransportCongestionControlLowLatency, WebTransportErrorSource(..), js_WebTransportErrorSourceStream, js_WebTransportErrorSourceSession, WebTransportReliabilityMode(..), js_WebTransportReliabilityModePending, js_WebTransportReliabilityModeReliableOnly, js_WebTransportReliabilityModeSupportsUnreliable, WindowAudioPreferenceEnum(..), js_WindowAudioPreferenceEnumSystem, js_WindowAudioPreferenceEnumWindow, js_WindowAudioPreferenceEnumExclude, WorkerType(..), js_WorkerTypeClassic, js_WorkerTypeModule, WriteCommandType(..), js_WriteCommandTypeWrite, js_WriteCommandTypeSeek, js_WriteCommandTypeTruncate, XMLHttpRequestResponseType(..), js_XMLHttpRequestResponseType, js_XMLHttpRequestResponseTypeArraybuffer, js_XMLHttpRequestResponseTypeBlob, js_XMLHttpRequestResponseTypeDocument, js_XMLHttpRequestResponseTypeJson, js_XMLHttpRequestResponseTypeText)
+       where
+import Prelude ((.), (>>=), (<$>), Show, Read, Eq, Ord, Bounded, Enum, Maybe(..))
+import qualified Prelude as P
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSString)
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AacBitstreamFormat> (webcodecs-aac-codec-registration)
+data AacBitstreamFormat = AacBitstreamFormatAac
+    | AacBitstreamFormatAdts
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AacBitstreamFormat where
+  pToJSVal x = pToJSVal (case x of
+    AacBitstreamFormatAac -> js_AacBitstreamFormatAac
+    AacBitstreamFormatAdts -> js_AacBitstreamFormatAdts
+    )
+
+instance ToJSVal AacBitstreamFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AacBitstreamFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected AacBitstreamFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AacBitstreamFormatAac, AacBitstreamFormatAac), (js_AacBitstreamFormatAdts, AacBitstreamFormatAdts)]
+
+instance FromJSVal AacBitstreamFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AacBitstreamFormatAac, AacBitstreamFormatAac), (js_AacBitstreamFormatAdts, AacBitstreamFormatAdts)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AacBitstreamFormatAac :: JSString
+js_AacBitstreamFormatAac = "aac"
+js_AacBitstreamFormatAdts :: JSString
+js_AacBitstreamFormatAdts = "adts"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AlignSetting> (webvtt1)
+data AlignSetting = AlignSettingStart
+    | AlignSettingCenter
+    | AlignSettingEnd
+    | AlignSettingLeft
+    | AlignSettingRight
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AlignSetting where
+  pToJSVal x = pToJSVal (case x of
+    AlignSettingStart -> js_AlignSettingStart
+    AlignSettingCenter -> js_AlignSettingCenter
+    AlignSettingEnd -> js_AlignSettingEnd
+    AlignSettingLeft -> js_AlignSettingLeft
+    AlignSettingRight -> js_AlignSettingRight
+    )
+
+instance ToJSVal AlignSetting where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AlignSetting where
+  pFromJSVal x = P.maybe (P.error "Unexpected AlignSetting value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AlignSettingStart, AlignSettingStart), (js_AlignSettingCenter, AlignSettingCenter), (js_AlignSettingEnd, AlignSettingEnd), (js_AlignSettingLeft, AlignSettingLeft), (js_AlignSettingRight, AlignSettingRight)]
+
+instance FromJSVal AlignSetting where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AlignSettingStart, AlignSettingStart), (js_AlignSettingCenter, AlignSettingCenter), (js_AlignSettingEnd, AlignSettingEnd), (js_AlignSettingLeft, AlignSettingLeft), (js_AlignSettingRight, AlignSettingRight)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AlignSettingStart :: JSString
+js_AlignSettingStart = "start"
+js_AlignSettingCenter :: JSString
+js_AlignSettingCenter = "center"
+js_AlignSettingEnd :: JSString
+js_AlignSettingEnd = "end"
+js_AlignSettingLeft :: JSString
+js_AlignSettingLeft = "left"
+js_AlignSettingRight :: JSString
+js_AlignSettingRight = "right"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AlphaOption> (webcodecs)
+data AlphaOption = AlphaOptionKeep
+    | AlphaOptionDiscard
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AlphaOption where
+  pToJSVal x = pToJSVal (case x of
+    AlphaOptionKeep -> js_AlphaOptionKeep
+    AlphaOptionDiscard -> js_AlphaOptionDiscard
+    )
+
+instance ToJSVal AlphaOption where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AlphaOption where
+  pFromJSVal x = P.maybe (P.error "Unexpected AlphaOption value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AlphaOptionKeep, AlphaOptionKeep), (js_AlphaOptionDiscard, AlphaOptionDiscard)]
+
+instance FromJSVal AlphaOption where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AlphaOptionKeep, AlphaOptionKeep), (js_AlphaOptionDiscard, AlphaOptionDiscard)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AlphaOptionKeep :: JSString
+js_AlphaOptionKeep = "keep"
+js_AlphaOptionDiscard :: JSString
+js_AlphaOptionDiscard = "discard"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AnimationPlayState> (web-animations-1)
+data AnimationPlayState = AnimationPlayStateIdle
+    | AnimationPlayStateRunning
+    | AnimationPlayStatePaused
+    | AnimationPlayStateFinished
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AnimationPlayState where
+  pToJSVal x = pToJSVal (case x of
+    AnimationPlayStateIdle -> js_AnimationPlayStateIdle
+    AnimationPlayStateRunning -> js_AnimationPlayStateRunning
+    AnimationPlayStatePaused -> js_AnimationPlayStatePaused
+    AnimationPlayStateFinished -> js_AnimationPlayStateFinished
+    )
+
+instance ToJSVal AnimationPlayState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AnimationPlayState where
+  pFromJSVal x = P.maybe (P.error "Unexpected AnimationPlayState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AnimationPlayStateIdle, AnimationPlayStateIdle), (js_AnimationPlayStateRunning, AnimationPlayStateRunning), (js_AnimationPlayStatePaused, AnimationPlayStatePaused), (js_AnimationPlayStateFinished, AnimationPlayStateFinished)]
+
+instance FromJSVal AnimationPlayState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AnimationPlayStateIdle, AnimationPlayStateIdle), (js_AnimationPlayStateRunning, AnimationPlayStateRunning), (js_AnimationPlayStatePaused, AnimationPlayStatePaused), (js_AnimationPlayStateFinished, AnimationPlayStateFinished)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AnimationPlayStateIdle :: JSString
+js_AnimationPlayStateIdle = "idle"
+js_AnimationPlayStateRunning :: JSString
+js_AnimationPlayStateRunning = "running"
+js_AnimationPlayStatePaused :: JSString
+js_AnimationPlayStatePaused = "paused"
+js_AnimationPlayStateFinished :: JSString
+js_AnimationPlayStateFinished = "finished"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AnimationReplaceState> (web-animations-1)
+data AnimationReplaceState = AnimationReplaceStateActive
+    | AnimationReplaceStateRemoved
+    | AnimationReplaceStatePersisted
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AnimationReplaceState where
+  pToJSVal x = pToJSVal (case x of
+    AnimationReplaceStateActive -> js_AnimationReplaceStateActive
+    AnimationReplaceStateRemoved -> js_AnimationReplaceStateRemoved
+    AnimationReplaceStatePersisted -> js_AnimationReplaceStatePersisted
+    )
+
+instance ToJSVal AnimationReplaceState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AnimationReplaceState where
+  pFromJSVal x = P.maybe (P.error "Unexpected AnimationReplaceState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AnimationReplaceStateActive, AnimationReplaceStateActive), (js_AnimationReplaceStateRemoved, AnimationReplaceStateRemoved), (js_AnimationReplaceStatePersisted, AnimationReplaceStatePersisted)]
+
+instance FromJSVal AnimationReplaceState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AnimationReplaceStateActive, AnimationReplaceStateActive), (js_AnimationReplaceStateRemoved, AnimationReplaceStateRemoved), (js_AnimationReplaceStatePersisted, AnimationReplaceStatePersisted)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AnimationReplaceStateActive :: JSString
+js_AnimationReplaceStateActive = "active"
+js_AnimationReplaceStateRemoved :: JSString
+js_AnimationReplaceStateRemoved = "removed"
+js_AnimationReplaceStatePersisted :: JSString
+js_AnimationReplaceStatePersisted = "persisted"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AppendMode> (media-source-2)
+data AppendMode = AppendModeSegments
+    | AppendModeSequence
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AppendMode where
+  pToJSVal x = pToJSVal (case x of
+    AppendModeSegments -> js_AppendModeSegments
+    AppendModeSequence -> js_AppendModeSequence
+    )
+
+instance ToJSVal AppendMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AppendMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected AppendMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AppendModeSegments, AppendModeSegments), (js_AppendModeSequence, AppendModeSequence)]
+
+instance FromJSVal AppendMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AppendModeSegments, AppendModeSegments), (js_AppendModeSequence, AppendModeSequence)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AppendModeSegments :: JSString
+js_AppendModeSegments = "segments"
+js_AppendModeSequence :: JSString
+js_AppendModeSequence = "sequence"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AriaNotifyPriority> (wai-aria-1.3)
+data AriaNotifyPriority = AriaNotifyPriorityNormal
+    | AriaNotifyPriorityHigh
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AriaNotifyPriority where
+  pToJSVal x = pToJSVal (case x of
+    AriaNotifyPriorityNormal -> js_AriaNotifyPriorityNormal
+    AriaNotifyPriorityHigh -> js_AriaNotifyPriorityHigh
+    )
+
+instance ToJSVal AriaNotifyPriority where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AriaNotifyPriority where
+  pFromJSVal x = P.maybe (P.error "Unexpected AriaNotifyPriority value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AriaNotifyPriorityNormal, AriaNotifyPriorityNormal), (js_AriaNotifyPriorityHigh, AriaNotifyPriorityHigh)]
+
+instance FromJSVal AriaNotifyPriority where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AriaNotifyPriorityNormal, AriaNotifyPriorityNormal), (js_AriaNotifyPriorityHigh, AriaNotifyPriorityHigh)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AriaNotifyPriorityNormal :: JSString
+js_AriaNotifyPriorityNormal = "normal"
+js_AriaNotifyPriorityHigh :: JSString
+js_AriaNotifyPriorityHigh = "high"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AudioContextLatencyCategory> (webaudio-1.1)
+data AudioContextLatencyCategory = AudioContextLatencyCategoryBalanced
+    | AudioContextLatencyCategoryInteractive
+    | AudioContextLatencyCategoryPlayback
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AudioContextLatencyCategory where
+  pToJSVal x = pToJSVal (case x of
+    AudioContextLatencyCategoryBalanced -> js_AudioContextLatencyCategoryBalanced
+    AudioContextLatencyCategoryInteractive -> js_AudioContextLatencyCategoryInteractive
+    AudioContextLatencyCategoryPlayback -> js_AudioContextLatencyCategoryPlayback
+    )
+
+instance ToJSVal AudioContextLatencyCategory where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AudioContextLatencyCategory where
+  pFromJSVal x = P.maybe (P.error "Unexpected AudioContextLatencyCategory value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioContextLatencyCategoryBalanced, AudioContextLatencyCategoryBalanced), (js_AudioContextLatencyCategoryInteractive, AudioContextLatencyCategoryInteractive), (js_AudioContextLatencyCategoryPlayback, AudioContextLatencyCategoryPlayback)]
+
+instance FromJSVal AudioContextLatencyCategory where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioContextLatencyCategoryBalanced, AudioContextLatencyCategoryBalanced), (js_AudioContextLatencyCategoryInteractive, AudioContextLatencyCategoryInteractive), (js_AudioContextLatencyCategoryPlayback, AudioContextLatencyCategoryPlayback)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AudioContextLatencyCategoryBalanced :: JSString
+js_AudioContextLatencyCategoryBalanced = "balanced"
+js_AudioContextLatencyCategoryInteractive :: JSString
+js_AudioContextLatencyCategoryInteractive = "interactive"
+js_AudioContextLatencyCategoryPlayback :: JSString
+js_AudioContextLatencyCategoryPlayback = "playback"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AudioContextRenderSizeCategory> (webaudio-1.1)
+data AudioContextRenderSizeCategory = AudioContextRenderSizeCategoryDefault
+    | AudioContextRenderSizeCategoryHardware
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AudioContextRenderSizeCategory where
+  pToJSVal x = pToJSVal (case x of
+    AudioContextRenderSizeCategoryDefault -> js_AudioContextRenderSizeCategoryDefault
+    AudioContextRenderSizeCategoryHardware -> js_AudioContextRenderSizeCategoryHardware
+    )
+
+instance ToJSVal AudioContextRenderSizeCategory where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AudioContextRenderSizeCategory where
+  pFromJSVal x = P.maybe (P.error "Unexpected AudioContextRenderSizeCategory value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioContextRenderSizeCategoryDefault, AudioContextRenderSizeCategoryDefault), (js_AudioContextRenderSizeCategoryHardware, AudioContextRenderSizeCategoryHardware)]
+
+instance FromJSVal AudioContextRenderSizeCategory where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioContextRenderSizeCategoryDefault, AudioContextRenderSizeCategoryDefault), (js_AudioContextRenderSizeCategoryHardware, AudioContextRenderSizeCategoryHardware)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AudioContextRenderSizeCategoryDefault :: JSString
+js_AudioContextRenderSizeCategoryDefault = "default"
+js_AudioContextRenderSizeCategoryHardware :: JSString
+js_AudioContextRenderSizeCategoryHardware = "hardware"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AudioContextState> (webaudio-1.1)
+data AudioContextState = AudioContextStateSuspended
+    | AudioContextStateRunning
+    | AudioContextStateClosed
+    | AudioContextStateInterrupted
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AudioContextState where
+  pToJSVal x = pToJSVal (case x of
+    AudioContextStateSuspended -> js_AudioContextStateSuspended
+    AudioContextStateRunning -> js_AudioContextStateRunning
+    AudioContextStateClosed -> js_AudioContextStateClosed
+    AudioContextStateInterrupted -> js_AudioContextStateInterrupted
+    )
+
+instance ToJSVal AudioContextState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AudioContextState where
+  pFromJSVal x = P.maybe (P.error "Unexpected AudioContextState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioContextStateSuspended, AudioContextStateSuspended), (js_AudioContextStateRunning, AudioContextStateRunning), (js_AudioContextStateClosed, AudioContextStateClosed), (js_AudioContextStateInterrupted, AudioContextStateInterrupted)]
+
+instance FromJSVal AudioContextState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioContextStateSuspended, AudioContextStateSuspended), (js_AudioContextStateRunning, AudioContextStateRunning), (js_AudioContextStateClosed, AudioContextStateClosed), (js_AudioContextStateInterrupted, AudioContextStateInterrupted)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AudioContextStateSuspended :: JSString
+js_AudioContextStateSuspended = "suspended"
+js_AudioContextStateRunning :: JSString
+js_AudioContextStateRunning = "running"
+js_AudioContextStateClosed :: JSString
+js_AudioContextStateClosed = "closed"
+js_AudioContextStateInterrupted :: JSString
+js_AudioContextStateInterrupted = "interrupted"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AudioSampleFormat> (webcodecs)
+data AudioSampleFormat = AudioSampleFormatU8
+    | AudioSampleFormatS16
+    | AudioSampleFormatS32
+    | AudioSampleFormatF32
+    | AudioSampleFormatU8Planar
+    | AudioSampleFormatS16Planar
+    | AudioSampleFormatS32Planar
+    | AudioSampleFormatF32Planar
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AudioSampleFormat where
+  pToJSVal x = pToJSVal (case x of
+    AudioSampleFormatU8 -> js_AudioSampleFormatU8
+    AudioSampleFormatS16 -> js_AudioSampleFormatS16
+    AudioSampleFormatS32 -> js_AudioSampleFormatS32
+    AudioSampleFormatF32 -> js_AudioSampleFormatF32
+    AudioSampleFormatU8Planar -> js_AudioSampleFormatU8Planar
+    AudioSampleFormatS16Planar -> js_AudioSampleFormatS16Planar
+    AudioSampleFormatS32Planar -> js_AudioSampleFormatS32Planar
+    AudioSampleFormatF32Planar -> js_AudioSampleFormatF32Planar
+    )
+
+instance ToJSVal AudioSampleFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AudioSampleFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected AudioSampleFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioSampleFormatU8, AudioSampleFormatU8), (js_AudioSampleFormatS16, AudioSampleFormatS16), (js_AudioSampleFormatS32, AudioSampleFormatS32), (js_AudioSampleFormatF32, AudioSampleFormatF32), (js_AudioSampleFormatU8Planar, AudioSampleFormatU8Planar), (js_AudioSampleFormatS16Planar, AudioSampleFormatS16Planar), (js_AudioSampleFormatS32Planar, AudioSampleFormatS32Planar), (js_AudioSampleFormatF32Planar, AudioSampleFormatF32Planar)]
+
+instance FromJSVal AudioSampleFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioSampleFormatU8, AudioSampleFormatU8), (js_AudioSampleFormatS16, AudioSampleFormatS16), (js_AudioSampleFormatS32, AudioSampleFormatS32), (js_AudioSampleFormatF32, AudioSampleFormatF32), (js_AudioSampleFormatU8Planar, AudioSampleFormatU8Planar), (js_AudioSampleFormatS16Planar, AudioSampleFormatS16Planar), (js_AudioSampleFormatS32Planar, AudioSampleFormatS32Planar), (js_AudioSampleFormatF32Planar, AudioSampleFormatF32Planar)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AudioSampleFormatU8 :: JSString
+js_AudioSampleFormatU8 = "u8"
+js_AudioSampleFormatS16 :: JSString
+js_AudioSampleFormatS16 = "s16"
+js_AudioSampleFormatS32 :: JSString
+js_AudioSampleFormatS32 = "s32"
+js_AudioSampleFormatF32 :: JSString
+js_AudioSampleFormatF32 = "f32"
+js_AudioSampleFormatU8Planar :: JSString
+js_AudioSampleFormatU8Planar = "u8-planar"
+js_AudioSampleFormatS16Planar :: JSString
+js_AudioSampleFormatS16Planar = "s16-planar"
+js_AudioSampleFormatS32Planar :: JSString
+js_AudioSampleFormatS32Planar = "s32-planar"
+js_AudioSampleFormatF32Planar :: JSString
+js_AudioSampleFormatF32Planar = "f32-planar"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AudioSelectionPreferenceEnum> (screen-capture)
+data AudioSelectionPreferenceEnum = AudioSelectionPreferenceEnumPreferred
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AudioSelectionPreferenceEnum where
+  pToJSVal x = pToJSVal (case x of
+    AudioSelectionPreferenceEnumPreferred -> js_AudioSelectionPreferenceEnumPreferred
+    )
+
+instance ToJSVal AudioSelectionPreferenceEnum where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AudioSelectionPreferenceEnum where
+  pFromJSVal x = P.maybe (P.error "Unexpected AudioSelectionPreferenceEnum value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioSelectionPreferenceEnumPreferred, AudioSelectionPreferenceEnumPreferred)]
+
+instance FromJSVal AudioSelectionPreferenceEnum where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioSelectionPreferenceEnumPreferred, AudioSelectionPreferenceEnumPreferred)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AudioSelectionPreferenceEnumPreferred :: JSString
+js_AudioSelectionPreferenceEnumPreferred = "preferred"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AudioSinkType> (webaudio-1.1)
+data AudioSinkType = AudioSinkTypeNone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AudioSinkType where
+  pToJSVal x = pToJSVal (case x of
+    AudioSinkTypeNone -> js_AudioSinkTypeNone
+    )
+
+instance ToJSVal AudioSinkType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AudioSinkType where
+  pFromJSVal x = P.maybe (P.error "Unexpected AudioSinkType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioSinkTypeNone, AudioSinkTypeNone)]
+
+instance FromJSVal AudioSinkType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AudioSinkTypeNone, AudioSinkTypeNone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AudioSinkTypeNone :: JSString
+js_AudioSinkTypeNone = "none"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AutoKeyword> (webvtt1)
+data AutoKeyword = AutoKeywordAuto
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AutoKeyword where
+  pToJSVal x = pToJSVal (case x of
+    AutoKeywordAuto -> js_AutoKeywordAuto
+    )
+
+instance ToJSVal AutoKeyword where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AutoKeyword where
+  pFromJSVal x = P.maybe (P.error "Unexpected AutoKeyword value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AutoKeywordAuto, AutoKeywordAuto)]
+
+instance FromJSVal AutoKeyword where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AutoKeywordAuto, AutoKeywordAuto)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AutoKeywordAuto :: JSString
+js_AutoKeywordAuto = "auto"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AutomationRate> (webaudio-1.1)
+data AutomationRate = AutomationRateARate
+    | AutomationRateKRate
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AutomationRate where
+  pToJSVal x = pToJSVal (case x of
+    AutomationRateARate -> js_AutomationRateARate
+    AutomationRateKRate -> js_AutomationRateKRate
+    )
+
+instance ToJSVal AutomationRate where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AutomationRate where
+  pFromJSVal x = P.maybe (P.error "Unexpected AutomationRate value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AutomationRateARate, AutomationRateARate), (js_AutomationRateKRate, AutomationRateKRate)]
+
+instance FromJSVal AutomationRate where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AutomationRateARate, AutomationRateARate), (js_AutomationRateKRate, AutomationRateKRate)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AutomationRateARate :: JSString
+js_AutomationRateARate = "a-rate"
+js_AutomationRateKRate :: JSString
+js_AutomationRateKRate = "k-rate"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API AvcBitstreamFormat> (webcodecs-avc-codec-registration)
+data AvcBitstreamFormat = AvcBitstreamFormatAnnexb
+    | AvcBitstreamFormatAvc
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal AvcBitstreamFormat where
+  pToJSVal x = pToJSVal (case x of
+    AvcBitstreamFormatAnnexb -> js_AvcBitstreamFormatAnnexb
+    AvcBitstreamFormatAvc -> js_AvcBitstreamFormatAvc
+    )
+
+instance ToJSVal AvcBitstreamFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal AvcBitstreamFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected AvcBitstreamFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AvcBitstreamFormatAnnexb, AvcBitstreamFormatAnnexb), (js_AvcBitstreamFormatAvc, AvcBitstreamFormatAvc)]
+
+instance FromJSVal AvcBitstreamFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_AvcBitstreamFormatAnnexb, AvcBitstreamFormatAnnexb), (js_AvcBitstreamFormatAvc, AvcBitstreamFormatAvc)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_AvcBitstreamFormatAnnexb :: JSString
+js_AvcBitstreamFormatAnnexb = "annexb"
+js_AvcBitstreamFormatAvc :: JSString
+js_AvcBitstreamFormatAvc = "avc"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API BinaryType> (websockets)
+data BinaryType = BinaryTypeBlob
+    | BinaryTypeArraybuffer
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal BinaryType where
+  pToJSVal x = pToJSVal (case x of
+    BinaryTypeBlob -> js_BinaryTypeBlob
+    BinaryTypeArraybuffer -> js_BinaryTypeArraybuffer
+    )
+
+instance ToJSVal BinaryType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal BinaryType where
+  pFromJSVal x = P.maybe (P.error "Unexpected BinaryType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_BinaryTypeBlob, BinaryTypeBlob), (js_BinaryTypeArraybuffer, BinaryTypeArraybuffer)]
+
+instance FromJSVal BinaryType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_BinaryTypeBlob, BinaryTypeBlob), (js_BinaryTypeArraybuffer, BinaryTypeArraybuffer)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_BinaryTypeBlob :: JSString
+js_BinaryTypeBlob = "blob"
+js_BinaryTypeArraybuffer :: JSString
+js_BinaryTypeArraybuffer = "arraybuffer"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API BiquadFilterType> (webaudio-1.1)
+data BiquadFilterType = BiquadFilterTypeLowpass
+    | BiquadFilterTypeHighpass
+    | BiquadFilterTypeBandpass
+    | BiquadFilterTypeLowshelf
+    | BiquadFilterTypeHighshelf
+    | BiquadFilterTypePeaking
+    | BiquadFilterTypeNotch
+    | BiquadFilterTypeAllpass
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal BiquadFilterType where
+  pToJSVal x = pToJSVal (case x of
+    BiquadFilterTypeLowpass -> js_BiquadFilterTypeLowpass
+    BiquadFilterTypeHighpass -> js_BiquadFilterTypeHighpass
+    BiquadFilterTypeBandpass -> js_BiquadFilterTypeBandpass
+    BiquadFilterTypeLowshelf -> js_BiquadFilterTypeLowshelf
+    BiquadFilterTypeHighshelf -> js_BiquadFilterTypeHighshelf
+    BiquadFilterTypePeaking -> js_BiquadFilterTypePeaking
+    BiquadFilterTypeNotch -> js_BiquadFilterTypeNotch
+    BiquadFilterTypeAllpass -> js_BiquadFilterTypeAllpass
+    )
+
+instance ToJSVal BiquadFilterType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal BiquadFilterType where
+  pFromJSVal x = P.maybe (P.error "Unexpected BiquadFilterType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_BiquadFilterTypeLowpass, BiquadFilterTypeLowpass), (js_BiquadFilterTypeHighpass, BiquadFilterTypeHighpass), (js_BiquadFilterTypeBandpass, BiquadFilterTypeBandpass), (js_BiquadFilterTypeLowshelf, BiquadFilterTypeLowshelf), (js_BiquadFilterTypeHighshelf, BiquadFilterTypeHighshelf), (js_BiquadFilterTypePeaking, BiquadFilterTypePeaking), (js_BiquadFilterTypeNotch, BiquadFilterTypeNotch), (js_BiquadFilterTypeAllpass, BiquadFilterTypeAllpass)]
+
+instance FromJSVal BiquadFilterType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_BiquadFilterTypeLowpass, BiquadFilterTypeLowpass), (js_BiquadFilterTypeHighpass, BiquadFilterTypeHighpass), (js_BiquadFilterTypeBandpass, BiquadFilterTypeBandpass), (js_BiquadFilterTypeLowshelf, BiquadFilterTypeLowshelf), (js_BiquadFilterTypeHighshelf, BiquadFilterTypeHighshelf), (js_BiquadFilterTypePeaking, BiquadFilterTypePeaking), (js_BiquadFilterTypeNotch, BiquadFilterTypeNotch), (js_BiquadFilterTypeAllpass, BiquadFilterTypeAllpass)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_BiquadFilterTypeLowpass :: JSString
+js_BiquadFilterTypeLowpass = "lowpass"
+js_BiquadFilterTypeHighpass :: JSString
+js_BiquadFilterTypeHighpass = "highpass"
+js_BiquadFilterTypeBandpass :: JSString
+js_BiquadFilterTypeBandpass = "bandpass"
+js_BiquadFilterTypeLowshelf :: JSString
+js_BiquadFilterTypeLowshelf = "lowshelf"
+js_BiquadFilterTypeHighshelf :: JSString
+js_BiquadFilterTypeHighshelf = "highshelf"
+js_BiquadFilterTypePeaking :: JSString
+js_BiquadFilterTypePeaking = "peaking"
+js_BiquadFilterTypeNotch :: JSString
+js_BiquadFilterTypeNotch = "notch"
+js_BiquadFilterTypeAllpass :: JSString
+js_BiquadFilterTypeAllpass = "allpass"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API BitrateMode> (mediastream-recording)
+data BitrateMode = BitrateModeConstant
+    | BitrateModeVariable
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal BitrateMode where
+  pToJSVal x = pToJSVal (case x of
+    BitrateModeConstant -> js_BitrateModeConstant
+    BitrateModeVariable -> js_BitrateModeVariable
+    )
+
+instance ToJSVal BitrateMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal BitrateMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected BitrateMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_BitrateModeConstant, BitrateModeConstant), (js_BitrateModeVariable, BitrateModeVariable)]
+
+instance FromJSVal BitrateMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_BitrateModeConstant, BitrateModeConstant), (js_BitrateModeVariable, BitrateModeVariable)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_BitrateModeConstant :: JSString
+js_BitrateModeConstant = "constant"
+js_BitrateModeVariable :: JSString
+js_BitrateModeVariable = "variable"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CSSMathOperator> (css-typed-om-1)
+data CSSMathOperator = CSSMathOperatorSum
+    | CSSMathOperatorProduct
+    | CSSMathOperatorNegate
+    | CSSMathOperatorInvert
+    | CSSMathOperatorMin
+    | CSSMathOperatorMax
+    | CSSMathOperatorClamp
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CSSMathOperator where
+  pToJSVal x = pToJSVal (case x of
+    CSSMathOperatorSum -> js_CSSMathOperatorSum
+    CSSMathOperatorProduct -> js_CSSMathOperatorProduct
+    CSSMathOperatorNegate -> js_CSSMathOperatorNegate
+    CSSMathOperatorInvert -> js_CSSMathOperatorInvert
+    CSSMathOperatorMin -> js_CSSMathOperatorMin
+    CSSMathOperatorMax -> js_CSSMathOperatorMax
+    CSSMathOperatorClamp -> js_CSSMathOperatorClamp
+    )
+
+instance ToJSVal CSSMathOperator where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CSSMathOperator where
+  pFromJSVal x = P.maybe (P.error "Unexpected CSSMathOperator value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CSSMathOperatorSum, CSSMathOperatorSum), (js_CSSMathOperatorProduct, CSSMathOperatorProduct), (js_CSSMathOperatorNegate, CSSMathOperatorNegate), (js_CSSMathOperatorInvert, CSSMathOperatorInvert), (js_CSSMathOperatorMin, CSSMathOperatorMin), (js_CSSMathOperatorMax, CSSMathOperatorMax), (js_CSSMathOperatorClamp, CSSMathOperatorClamp)]
+
+instance FromJSVal CSSMathOperator where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CSSMathOperatorSum, CSSMathOperatorSum), (js_CSSMathOperatorProduct, CSSMathOperatorProduct), (js_CSSMathOperatorNegate, CSSMathOperatorNegate), (js_CSSMathOperatorInvert, CSSMathOperatorInvert), (js_CSSMathOperatorMin, CSSMathOperatorMin), (js_CSSMathOperatorMax, CSSMathOperatorMax), (js_CSSMathOperatorClamp, CSSMathOperatorClamp)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CSSMathOperatorSum :: JSString
+js_CSSMathOperatorSum = "sum"
+js_CSSMathOperatorProduct :: JSString
+js_CSSMathOperatorProduct = "product"
+js_CSSMathOperatorNegate :: JSString
+js_CSSMathOperatorNegate = "negate"
+js_CSSMathOperatorInvert :: JSString
+js_CSSMathOperatorInvert = "invert"
+js_CSSMathOperatorMin :: JSString
+js_CSSMathOperatorMin = "min"
+js_CSSMathOperatorMax :: JSString
+js_CSSMathOperatorMax = "max"
+js_CSSMathOperatorClamp :: JSString
+js_CSSMathOperatorClamp = "clamp"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CSSNumericBaseType> (css-typed-om-1)
+data CSSNumericBaseType = CSSNumericBaseTypeLength
+    | CSSNumericBaseTypeAngle
+    | CSSNumericBaseTypeTime
+    | CSSNumericBaseTypeFrequency
+    | CSSNumericBaseTypeResolution
+    | CSSNumericBaseTypeFlex
+    | CSSNumericBaseTypePercent
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CSSNumericBaseType where
+  pToJSVal x = pToJSVal (case x of
+    CSSNumericBaseTypeLength -> js_CSSNumericBaseTypeLength
+    CSSNumericBaseTypeAngle -> js_CSSNumericBaseTypeAngle
+    CSSNumericBaseTypeTime -> js_CSSNumericBaseTypeTime
+    CSSNumericBaseTypeFrequency -> js_CSSNumericBaseTypeFrequency
+    CSSNumericBaseTypeResolution -> js_CSSNumericBaseTypeResolution
+    CSSNumericBaseTypeFlex -> js_CSSNumericBaseTypeFlex
+    CSSNumericBaseTypePercent -> js_CSSNumericBaseTypePercent
+    )
+
+instance ToJSVal CSSNumericBaseType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CSSNumericBaseType where
+  pFromJSVal x = P.maybe (P.error "Unexpected CSSNumericBaseType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CSSNumericBaseTypeLength, CSSNumericBaseTypeLength), (js_CSSNumericBaseTypeAngle, CSSNumericBaseTypeAngle), (js_CSSNumericBaseTypeTime, CSSNumericBaseTypeTime), (js_CSSNumericBaseTypeFrequency, CSSNumericBaseTypeFrequency), (js_CSSNumericBaseTypeResolution, CSSNumericBaseTypeResolution), (js_CSSNumericBaseTypeFlex, CSSNumericBaseTypeFlex), (js_CSSNumericBaseTypePercent, CSSNumericBaseTypePercent)]
+
+instance FromJSVal CSSNumericBaseType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CSSNumericBaseTypeLength, CSSNumericBaseTypeLength), (js_CSSNumericBaseTypeAngle, CSSNumericBaseTypeAngle), (js_CSSNumericBaseTypeTime, CSSNumericBaseTypeTime), (js_CSSNumericBaseTypeFrequency, CSSNumericBaseTypeFrequency), (js_CSSNumericBaseTypeResolution, CSSNumericBaseTypeResolution), (js_CSSNumericBaseTypeFlex, CSSNumericBaseTypeFlex), (js_CSSNumericBaseTypePercent, CSSNumericBaseTypePercent)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CSSNumericBaseTypeLength :: JSString
+js_CSSNumericBaseTypeLength = "length"
+js_CSSNumericBaseTypeAngle :: JSString
+js_CSSNumericBaseTypeAngle = "angle"
+js_CSSNumericBaseTypeTime :: JSString
+js_CSSNumericBaseTypeTime = "time"
+js_CSSNumericBaseTypeFrequency :: JSString
+js_CSSNumericBaseTypeFrequency = "frequency"
+js_CSSNumericBaseTypeResolution :: JSString
+js_CSSNumericBaseTypeResolution = "resolution"
+js_CSSNumericBaseTypeFlex :: JSString
+js_CSSNumericBaseTypeFlex = "flex"
+js_CSSNumericBaseTypePercent :: JSString
+js_CSSNumericBaseTypePercent = "percent"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanPlayTypeResult> (html)
+data CanPlayTypeResult = CanPlayTypeResult
+    | CanPlayTypeResultMaybe
+    | CanPlayTypeResultProbably
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanPlayTypeResult where
+  pToJSVal x = pToJSVal (case x of
+    CanPlayTypeResult -> js_CanPlayTypeResult
+    CanPlayTypeResultMaybe -> js_CanPlayTypeResultMaybe
+    CanPlayTypeResultProbably -> js_CanPlayTypeResultProbably
+    )
+
+instance ToJSVal CanPlayTypeResult where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanPlayTypeResult where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanPlayTypeResult value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanPlayTypeResult, CanPlayTypeResult), (js_CanPlayTypeResultMaybe, CanPlayTypeResultMaybe), (js_CanPlayTypeResultProbably, CanPlayTypeResultProbably)]
+
+instance FromJSVal CanPlayTypeResult where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanPlayTypeResult, CanPlayTypeResult), (js_CanPlayTypeResultMaybe, CanPlayTypeResultMaybe), (js_CanPlayTypeResultProbably, CanPlayTypeResultProbably)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanPlayTypeResult :: JSString
+js_CanPlayTypeResult = ""
+js_CanPlayTypeResultMaybe :: JSString
+js_CanPlayTypeResultMaybe = "maybe"
+js_CanPlayTypeResultProbably :: JSString
+js_CanPlayTypeResultProbably = "probably"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasColorType> (html)
+data CanvasColorType = CanvasColorTypeUnorm8
+    | CanvasColorTypeFloat16
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasColorType where
+  pToJSVal x = pToJSVal (case x of
+    CanvasColorTypeUnorm8 -> js_CanvasColorTypeUnorm8
+    CanvasColorTypeFloat16 -> js_CanvasColorTypeFloat16
+    )
+
+instance ToJSVal CanvasColorType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasColorType where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasColorType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasColorTypeUnorm8, CanvasColorTypeUnorm8), (js_CanvasColorTypeFloat16, CanvasColorTypeFloat16)]
+
+instance FromJSVal CanvasColorType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasColorTypeUnorm8, CanvasColorTypeUnorm8), (js_CanvasColorTypeFloat16, CanvasColorTypeFloat16)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasColorTypeUnorm8 :: JSString
+js_CanvasColorTypeUnorm8 = "unorm8"
+js_CanvasColorTypeFloat16 :: JSString
+js_CanvasColorTypeFloat16 = "float16"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasDirection> (html)
+data CanvasDirection = CanvasDirectionLtr
+    | CanvasDirectionRtl
+    | CanvasDirectionInherit
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasDirection where
+  pToJSVal x = pToJSVal (case x of
+    CanvasDirectionLtr -> js_CanvasDirectionLtr
+    CanvasDirectionRtl -> js_CanvasDirectionRtl
+    CanvasDirectionInherit -> js_CanvasDirectionInherit
+    )
+
+instance ToJSVal CanvasDirection where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasDirection where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasDirection value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasDirectionLtr, CanvasDirectionLtr), (js_CanvasDirectionRtl, CanvasDirectionRtl), (js_CanvasDirectionInherit, CanvasDirectionInherit)]
+
+instance FromJSVal CanvasDirection where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasDirectionLtr, CanvasDirectionLtr), (js_CanvasDirectionRtl, CanvasDirectionRtl), (js_CanvasDirectionInherit, CanvasDirectionInherit)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasDirectionLtr :: JSString
+js_CanvasDirectionLtr = "ltr"
+js_CanvasDirectionRtl :: JSString
+js_CanvasDirectionRtl = "rtl"
+js_CanvasDirectionInherit :: JSString
+js_CanvasDirectionInherit = "inherit"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasFillRule> (html)
+data CanvasFillRule = CanvasFillRuleNonzero
+    | CanvasFillRuleEvenodd
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasFillRule where
+  pToJSVal x = pToJSVal (case x of
+    CanvasFillRuleNonzero -> js_CanvasFillRuleNonzero
+    CanvasFillRuleEvenodd -> js_CanvasFillRuleEvenodd
+    )
+
+instance ToJSVal CanvasFillRule where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasFillRule where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasFillRule value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFillRuleNonzero, CanvasFillRuleNonzero), (js_CanvasFillRuleEvenodd, CanvasFillRuleEvenodd)]
+
+instance FromJSVal CanvasFillRule where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFillRuleNonzero, CanvasFillRuleNonzero), (js_CanvasFillRuleEvenodd, CanvasFillRuleEvenodd)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasFillRuleNonzero :: JSString
+js_CanvasFillRuleNonzero = "nonzero"
+js_CanvasFillRuleEvenodd :: JSString
+js_CanvasFillRuleEvenodd = "evenodd"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasFontKerning> (html)
+data CanvasFontKerning = CanvasFontKerningAuto
+    | CanvasFontKerningNormal
+    | CanvasFontKerningNone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasFontKerning where
+  pToJSVal x = pToJSVal (case x of
+    CanvasFontKerningAuto -> js_CanvasFontKerningAuto
+    CanvasFontKerningNormal -> js_CanvasFontKerningNormal
+    CanvasFontKerningNone -> js_CanvasFontKerningNone
+    )
+
+instance ToJSVal CanvasFontKerning where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasFontKerning where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasFontKerning value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFontKerningAuto, CanvasFontKerningAuto), (js_CanvasFontKerningNormal, CanvasFontKerningNormal), (js_CanvasFontKerningNone, CanvasFontKerningNone)]
+
+instance FromJSVal CanvasFontKerning where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFontKerningAuto, CanvasFontKerningAuto), (js_CanvasFontKerningNormal, CanvasFontKerningNormal), (js_CanvasFontKerningNone, CanvasFontKerningNone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasFontKerningAuto :: JSString
+js_CanvasFontKerningAuto = "auto"
+js_CanvasFontKerningNormal :: JSString
+js_CanvasFontKerningNormal = "normal"
+js_CanvasFontKerningNone :: JSString
+js_CanvasFontKerningNone = "none"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasFontStretch> (html)
+data CanvasFontStretch = CanvasFontStretchUltraCondensed
+    | CanvasFontStretchExtraCondensed
+    | CanvasFontStretchCondensed
+    | CanvasFontStretchSemiCondensed
+    | CanvasFontStretchNormal
+    | CanvasFontStretchSemiExpanded
+    | CanvasFontStretchExpanded
+    | CanvasFontStretchExtraExpanded
+    | CanvasFontStretchUltraExpanded
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasFontStretch where
+  pToJSVal x = pToJSVal (case x of
+    CanvasFontStretchUltraCondensed -> js_CanvasFontStretchUltraCondensed
+    CanvasFontStretchExtraCondensed -> js_CanvasFontStretchExtraCondensed
+    CanvasFontStretchCondensed -> js_CanvasFontStretchCondensed
+    CanvasFontStretchSemiCondensed -> js_CanvasFontStretchSemiCondensed
+    CanvasFontStretchNormal -> js_CanvasFontStretchNormal
+    CanvasFontStretchSemiExpanded -> js_CanvasFontStretchSemiExpanded
+    CanvasFontStretchExpanded -> js_CanvasFontStretchExpanded
+    CanvasFontStretchExtraExpanded -> js_CanvasFontStretchExtraExpanded
+    CanvasFontStretchUltraExpanded -> js_CanvasFontStretchUltraExpanded
+    )
+
+instance ToJSVal CanvasFontStretch where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasFontStretch where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasFontStretch value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFontStretchUltraCondensed, CanvasFontStretchUltraCondensed), (js_CanvasFontStretchExtraCondensed, CanvasFontStretchExtraCondensed), (js_CanvasFontStretchCondensed, CanvasFontStretchCondensed), (js_CanvasFontStretchSemiCondensed, CanvasFontStretchSemiCondensed), (js_CanvasFontStretchNormal, CanvasFontStretchNormal), (js_CanvasFontStretchSemiExpanded, CanvasFontStretchSemiExpanded), (js_CanvasFontStretchExpanded, CanvasFontStretchExpanded), (js_CanvasFontStretchExtraExpanded, CanvasFontStretchExtraExpanded), (js_CanvasFontStretchUltraExpanded, CanvasFontStretchUltraExpanded)]
+
+instance FromJSVal CanvasFontStretch where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFontStretchUltraCondensed, CanvasFontStretchUltraCondensed), (js_CanvasFontStretchExtraCondensed, CanvasFontStretchExtraCondensed), (js_CanvasFontStretchCondensed, CanvasFontStretchCondensed), (js_CanvasFontStretchSemiCondensed, CanvasFontStretchSemiCondensed), (js_CanvasFontStretchNormal, CanvasFontStretchNormal), (js_CanvasFontStretchSemiExpanded, CanvasFontStretchSemiExpanded), (js_CanvasFontStretchExpanded, CanvasFontStretchExpanded), (js_CanvasFontStretchExtraExpanded, CanvasFontStretchExtraExpanded), (js_CanvasFontStretchUltraExpanded, CanvasFontStretchUltraExpanded)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasFontStretchUltraCondensed :: JSString
+js_CanvasFontStretchUltraCondensed = "ultra-condensed"
+js_CanvasFontStretchExtraCondensed :: JSString
+js_CanvasFontStretchExtraCondensed = "extra-condensed"
+js_CanvasFontStretchCondensed :: JSString
+js_CanvasFontStretchCondensed = "condensed"
+js_CanvasFontStretchSemiCondensed :: JSString
+js_CanvasFontStretchSemiCondensed = "semi-condensed"
+js_CanvasFontStretchNormal :: JSString
+js_CanvasFontStretchNormal = "normal"
+js_CanvasFontStretchSemiExpanded :: JSString
+js_CanvasFontStretchSemiExpanded = "semi-expanded"
+js_CanvasFontStretchExpanded :: JSString
+js_CanvasFontStretchExpanded = "expanded"
+js_CanvasFontStretchExtraExpanded :: JSString
+js_CanvasFontStretchExtraExpanded = "extra-expanded"
+js_CanvasFontStretchUltraExpanded :: JSString
+js_CanvasFontStretchUltraExpanded = "ultra-expanded"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasFontVariantCaps> (html)
+data CanvasFontVariantCaps = CanvasFontVariantCapsNormal
+    | CanvasFontVariantCapsSmallCaps
+    | CanvasFontVariantCapsAllSmallCaps
+    | CanvasFontVariantCapsPetiteCaps
+    | CanvasFontVariantCapsAllPetiteCaps
+    | CanvasFontVariantCapsUnicase
+    | CanvasFontVariantCapsTitlingCaps
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasFontVariantCaps where
+  pToJSVal x = pToJSVal (case x of
+    CanvasFontVariantCapsNormal -> js_CanvasFontVariantCapsNormal
+    CanvasFontVariantCapsSmallCaps -> js_CanvasFontVariantCapsSmallCaps
+    CanvasFontVariantCapsAllSmallCaps -> js_CanvasFontVariantCapsAllSmallCaps
+    CanvasFontVariantCapsPetiteCaps -> js_CanvasFontVariantCapsPetiteCaps
+    CanvasFontVariantCapsAllPetiteCaps -> js_CanvasFontVariantCapsAllPetiteCaps
+    CanvasFontVariantCapsUnicase -> js_CanvasFontVariantCapsUnicase
+    CanvasFontVariantCapsTitlingCaps -> js_CanvasFontVariantCapsTitlingCaps
+    )
+
+instance ToJSVal CanvasFontVariantCaps where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasFontVariantCaps where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasFontVariantCaps value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFontVariantCapsNormal, CanvasFontVariantCapsNormal), (js_CanvasFontVariantCapsSmallCaps, CanvasFontVariantCapsSmallCaps), (js_CanvasFontVariantCapsAllSmallCaps, CanvasFontVariantCapsAllSmallCaps), (js_CanvasFontVariantCapsPetiteCaps, CanvasFontVariantCapsPetiteCaps), (js_CanvasFontVariantCapsAllPetiteCaps, CanvasFontVariantCapsAllPetiteCaps), (js_CanvasFontVariantCapsUnicase, CanvasFontVariantCapsUnicase), (js_CanvasFontVariantCapsTitlingCaps, CanvasFontVariantCapsTitlingCaps)]
+
+instance FromJSVal CanvasFontVariantCaps where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasFontVariantCapsNormal, CanvasFontVariantCapsNormal), (js_CanvasFontVariantCapsSmallCaps, CanvasFontVariantCapsSmallCaps), (js_CanvasFontVariantCapsAllSmallCaps, CanvasFontVariantCapsAllSmallCaps), (js_CanvasFontVariantCapsPetiteCaps, CanvasFontVariantCapsPetiteCaps), (js_CanvasFontVariantCapsAllPetiteCaps, CanvasFontVariantCapsAllPetiteCaps), (js_CanvasFontVariantCapsUnicase, CanvasFontVariantCapsUnicase), (js_CanvasFontVariantCapsTitlingCaps, CanvasFontVariantCapsTitlingCaps)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasFontVariantCapsNormal :: JSString
+js_CanvasFontVariantCapsNormal = "normal"
+js_CanvasFontVariantCapsSmallCaps :: JSString
+js_CanvasFontVariantCapsSmallCaps = "small-caps"
+js_CanvasFontVariantCapsAllSmallCaps :: JSString
+js_CanvasFontVariantCapsAllSmallCaps = "all-small-caps"
+js_CanvasFontVariantCapsPetiteCaps :: JSString
+js_CanvasFontVariantCapsPetiteCaps = "petite-caps"
+js_CanvasFontVariantCapsAllPetiteCaps :: JSString
+js_CanvasFontVariantCapsAllPetiteCaps = "all-petite-caps"
+js_CanvasFontVariantCapsUnicase :: JSString
+js_CanvasFontVariantCapsUnicase = "unicase"
+js_CanvasFontVariantCapsTitlingCaps :: JSString
+js_CanvasFontVariantCapsTitlingCaps = "titling-caps"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasLineCap> (html)
+data CanvasLineCap = CanvasLineCapButt
+    | CanvasLineCapRound
+    | CanvasLineCapSquare
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasLineCap where
+  pToJSVal x = pToJSVal (case x of
+    CanvasLineCapButt -> js_CanvasLineCapButt
+    CanvasLineCapRound -> js_CanvasLineCapRound
+    CanvasLineCapSquare -> js_CanvasLineCapSquare
+    )
+
+instance ToJSVal CanvasLineCap where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasLineCap where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasLineCap value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasLineCapButt, CanvasLineCapButt), (js_CanvasLineCapRound, CanvasLineCapRound), (js_CanvasLineCapSquare, CanvasLineCapSquare)]
+
+instance FromJSVal CanvasLineCap where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasLineCapButt, CanvasLineCapButt), (js_CanvasLineCapRound, CanvasLineCapRound), (js_CanvasLineCapSquare, CanvasLineCapSquare)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasLineCapButt :: JSString
+js_CanvasLineCapButt = "butt"
+js_CanvasLineCapRound :: JSString
+js_CanvasLineCapRound = "round"
+js_CanvasLineCapSquare :: JSString
+js_CanvasLineCapSquare = "square"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasLineJoin> (html)
+data CanvasLineJoin = CanvasLineJoinRound
+    | CanvasLineJoinBevel
+    | CanvasLineJoinMiter
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasLineJoin where
+  pToJSVal x = pToJSVal (case x of
+    CanvasLineJoinRound -> js_CanvasLineJoinRound
+    CanvasLineJoinBevel -> js_CanvasLineJoinBevel
+    CanvasLineJoinMiter -> js_CanvasLineJoinMiter
+    )
+
+instance ToJSVal CanvasLineJoin where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasLineJoin where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasLineJoin value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasLineJoinRound, CanvasLineJoinRound), (js_CanvasLineJoinBevel, CanvasLineJoinBevel), (js_CanvasLineJoinMiter, CanvasLineJoinMiter)]
+
+instance FromJSVal CanvasLineJoin where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasLineJoinRound, CanvasLineJoinRound), (js_CanvasLineJoinBevel, CanvasLineJoinBevel), (js_CanvasLineJoinMiter, CanvasLineJoinMiter)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasLineJoinRound :: JSString
+js_CanvasLineJoinRound = "round"
+js_CanvasLineJoinBevel :: JSString
+js_CanvasLineJoinBevel = "bevel"
+js_CanvasLineJoinMiter :: JSString
+js_CanvasLineJoinMiter = "miter"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasTextAlign> (html)
+data CanvasTextAlign = CanvasTextAlignStart
+    | CanvasTextAlignEnd
+    | CanvasTextAlignLeft
+    | CanvasTextAlignRight
+    | CanvasTextAlignCenter
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasTextAlign where
+  pToJSVal x = pToJSVal (case x of
+    CanvasTextAlignStart -> js_CanvasTextAlignStart
+    CanvasTextAlignEnd -> js_CanvasTextAlignEnd
+    CanvasTextAlignLeft -> js_CanvasTextAlignLeft
+    CanvasTextAlignRight -> js_CanvasTextAlignRight
+    CanvasTextAlignCenter -> js_CanvasTextAlignCenter
+    )
+
+instance ToJSVal CanvasTextAlign where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasTextAlign where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasTextAlign value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasTextAlignStart, CanvasTextAlignStart), (js_CanvasTextAlignEnd, CanvasTextAlignEnd), (js_CanvasTextAlignLeft, CanvasTextAlignLeft), (js_CanvasTextAlignRight, CanvasTextAlignRight), (js_CanvasTextAlignCenter, CanvasTextAlignCenter)]
+
+instance FromJSVal CanvasTextAlign where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasTextAlignStart, CanvasTextAlignStart), (js_CanvasTextAlignEnd, CanvasTextAlignEnd), (js_CanvasTextAlignLeft, CanvasTextAlignLeft), (js_CanvasTextAlignRight, CanvasTextAlignRight), (js_CanvasTextAlignCenter, CanvasTextAlignCenter)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasTextAlignStart :: JSString
+js_CanvasTextAlignStart = "start"
+js_CanvasTextAlignEnd :: JSString
+js_CanvasTextAlignEnd = "end"
+js_CanvasTextAlignLeft :: JSString
+js_CanvasTextAlignLeft = "left"
+js_CanvasTextAlignRight :: JSString
+js_CanvasTextAlignRight = "right"
+js_CanvasTextAlignCenter :: JSString
+js_CanvasTextAlignCenter = "center"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasTextBaseline> (html)
+data CanvasTextBaseline = CanvasTextBaselineTop
+    | CanvasTextBaselineHanging
+    | CanvasTextBaselineMiddle
+    | CanvasTextBaselineAlphabetic
+    | CanvasTextBaselineIdeographic
+    | CanvasTextBaselineBottom
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasTextBaseline where
+  pToJSVal x = pToJSVal (case x of
+    CanvasTextBaselineTop -> js_CanvasTextBaselineTop
+    CanvasTextBaselineHanging -> js_CanvasTextBaselineHanging
+    CanvasTextBaselineMiddle -> js_CanvasTextBaselineMiddle
+    CanvasTextBaselineAlphabetic -> js_CanvasTextBaselineAlphabetic
+    CanvasTextBaselineIdeographic -> js_CanvasTextBaselineIdeographic
+    CanvasTextBaselineBottom -> js_CanvasTextBaselineBottom
+    )
+
+instance ToJSVal CanvasTextBaseline where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasTextBaseline where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasTextBaseline value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasTextBaselineTop, CanvasTextBaselineTop), (js_CanvasTextBaselineHanging, CanvasTextBaselineHanging), (js_CanvasTextBaselineMiddle, CanvasTextBaselineMiddle), (js_CanvasTextBaselineAlphabetic, CanvasTextBaselineAlphabetic), (js_CanvasTextBaselineIdeographic, CanvasTextBaselineIdeographic), (js_CanvasTextBaselineBottom, CanvasTextBaselineBottom)]
+
+instance FromJSVal CanvasTextBaseline where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasTextBaselineTop, CanvasTextBaselineTop), (js_CanvasTextBaselineHanging, CanvasTextBaselineHanging), (js_CanvasTextBaselineMiddle, CanvasTextBaselineMiddle), (js_CanvasTextBaselineAlphabetic, CanvasTextBaselineAlphabetic), (js_CanvasTextBaselineIdeographic, CanvasTextBaselineIdeographic), (js_CanvasTextBaselineBottom, CanvasTextBaselineBottom)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasTextBaselineTop :: JSString
+js_CanvasTextBaselineTop = "top"
+js_CanvasTextBaselineHanging :: JSString
+js_CanvasTextBaselineHanging = "hanging"
+js_CanvasTextBaselineMiddle :: JSString
+js_CanvasTextBaselineMiddle = "middle"
+js_CanvasTextBaselineAlphabetic :: JSString
+js_CanvasTextBaselineAlphabetic = "alphabetic"
+js_CanvasTextBaselineIdeographic :: JSString
+js_CanvasTextBaselineIdeographic = "ideographic"
+js_CanvasTextBaselineBottom :: JSString
+js_CanvasTextBaselineBottom = "bottom"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CanvasTextRendering> (html)
+data CanvasTextRendering = CanvasTextRenderingAuto
+    | CanvasTextRenderingOptimizeSpeed
+    | CanvasTextRenderingOptimizeLegibility
+    | CanvasTextRenderingGeometricPrecision
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CanvasTextRendering where
+  pToJSVal x = pToJSVal (case x of
+    CanvasTextRenderingAuto -> js_CanvasTextRenderingAuto
+    CanvasTextRenderingOptimizeSpeed -> js_CanvasTextRenderingOptimizeSpeed
+    CanvasTextRenderingOptimizeLegibility -> js_CanvasTextRenderingOptimizeLegibility
+    CanvasTextRenderingGeometricPrecision -> js_CanvasTextRenderingGeometricPrecision
+    )
+
+instance ToJSVal CanvasTextRendering where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CanvasTextRendering where
+  pFromJSVal x = P.maybe (P.error "Unexpected CanvasTextRendering value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasTextRenderingAuto, CanvasTextRenderingAuto), (js_CanvasTextRenderingOptimizeSpeed, CanvasTextRenderingOptimizeSpeed), (js_CanvasTextRenderingOptimizeLegibility, CanvasTextRenderingOptimizeLegibility), (js_CanvasTextRenderingGeometricPrecision, CanvasTextRenderingGeometricPrecision)]
+
+instance FromJSVal CanvasTextRendering where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CanvasTextRenderingAuto, CanvasTextRenderingAuto), (js_CanvasTextRenderingOptimizeSpeed, CanvasTextRenderingOptimizeSpeed), (js_CanvasTextRenderingOptimizeLegibility, CanvasTextRenderingOptimizeLegibility), (js_CanvasTextRenderingGeometricPrecision, CanvasTextRenderingGeometricPrecision)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CanvasTextRenderingAuto :: JSString
+js_CanvasTextRenderingAuto = "auto"
+js_CanvasTextRenderingOptimizeSpeed :: JSString
+js_CanvasTextRenderingOptimizeSpeed = "optimizeSpeed"
+js_CanvasTextRenderingOptimizeLegibility :: JSString
+js_CanvasTextRenderingOptimizeLegibility = "optimizeLegibility"
+js_CanvasTextRenderingGeometricPrecision :: JSString
+js_CanvasTextRenderingGeometricPrecision = "geometricPrecision"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ChannelCountMode> (webaudio-1.1)
+data ChannelCountMode = ChannelCountModeMax
+    | ChannelCountModeClampedMax
+    | ChannelCountModeExplicit
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ChannelCountMode where
+  pToJSVal x = pToJSVal (case x of
+    ChannelCountModeMax -> js_ChannelCountModeMax
+    ChannelCountModeClampedMax -> js_ChannelCountModeClampedMax
+    ChannelCountModeExplicit -> js_ChannelCountModeExplicit
+    )
+
+instance ToJSVal ChannelCountMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ChannelCountMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected ChannelCountMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ChannelCountModeMax, ChannelCountModeMax), (js_ChannelCountModeClampedMax, ChannelCountModeClampedMax), (js_ChannelCountModeExplicit, ChannelCountModeExplicit)]
+
+instance FromJSVal ChannelCountMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ChannelCountModeMax, ChannelCountModeMax), (js_ChannelCountModeClampedMax, ChannelCountModeClampedMax), (js_ChannelCountModeExplicit, ChannelCountModeExplicit)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ChannelCountModeMax :: JSString
+js_ChannelCountModeMax = "max"
+js_ChannelCountModeClampedMax :: JSString
+js_ChannelCountModeClampedMax = "clamped-max"
+js_ChannelCountModeExplicit :: JSString
+js_ChannelCountModeExplicit = "explicit"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ChannelInterpretation> (webaudio-1.1)
+data ChannelInterpretation = ChannelInterpretationSpeakers
+    | ChannelInterpretationDiscrete
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ChannelInterpretation where
+  pToJSVal x = pToJSVal (case x of
+    ChannelInterpretationSpeakers -> js_ChannelInterpretationSpeakers
+    ChannelInterpretationDiscrete -> js_ChannelInterpretationDiscrete
+    )
+
+instance ToJSVal ChannelInterpretation where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ChannelInterpretation where
+  pFromJSVal x = P.maybe (P.error "Unexpected ChannelInterpretation value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ChannelInterpretationSpeakers, ChannelInterpretationSpeakers), (js_ChannelInterpretationDiscrete, ChannelInterpretationDiscrete)]
+
+instance FromJSVal ChannelInterpretation where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ChannelInterpretationSpeakers, ChannelInterpretationSpeakers), (js_ChannelInterpretationDiscrete, ChannelInterpretationDiscrete)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ChannelInterpretationSpeakers :: JSString
+js_ChannelInterpretationSpeakers = "speakers"
+js_ChannelInterpretationDiscrete :: JSString
+js_ChannelInterpretationDiscrete = "discrete"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ClientType> (service-workers)
+data ClientType = ClientTypeWindow
+    | ClientTypeWorker
+    | ClientTypeSharedworker
+    | ClientTypeAll
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ClientType where
+  pToJSVal x = pToJSVal (case x of
+    ClientTypeWindow -> js_ClientTypeWindow
+    ClientTypeWorker -> js_ClientTypeWorker
+    ClientTypeSharedworker -> js_ClientTypeSharedworker
+    ClientTypeAll -> js_ClientTypeAll
+    )
+
+instance ToJSVal ClientType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ClientType where
+  pFromJSVal x = P.maybe (P.error "Unexpected ClientType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ClientTypeWindow, ClientTypeWindow), (js_ClientTypeWorker, ClientTypeWorker), (js_ClientTypeSharedworker, ClientTypeSharedworker), (js_ClientTypeAll, ClientTypeAll)]
+
+instance FromJSVal ClientType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ClientTypeWindow, ClientTypeWindow), (js_ClientTypeWorker, ClientTypeWorker), (js_ClientTypeSharedworker, ClientTypeSharedworker), (js_ClientTypeAll, ClientTypeAll)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ClientTypeWindow :: JSString
+js_ClientTypeWindow = "window"
+js_ClientTypeWorker :: JSString
+js_ClientTypeWorker = "worker"
+js_ClientTypeSharedworker :: JSString
+js_ClientTypeSharedworker = "sharedworker"
+js_ClientTypeAll :: JSString
+js_ClientTypeAll = "all"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CodecState> (webcodecs)
+data CodecState = CodecStateUnconfigured
+    | CodecStateConfigured
+    | CodecStateClosed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CodecState where
+  pToJSVal x = pToJSVal (case x of
+    CodecStateUnconfigured -> js_CodecStateUnconfigured
+    CodecStateConfigured -> js_CodecStateConfigured
+    CodecStateClosed -> js_CodecStateClosed
+    )
+
+instance ToJSVal CodecState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CodecState where
+  pFromJSVal x = P.maybe (P.error "Unexpected CodecState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CodecStateUnconfigured, CodecStateUnconfigured), (js_CodecStateConfigured, CodecStateConfigured), (js_CodecStateClosed, CodecStateClosed)]
+
+instance FromJSVal CodecState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CodecStateUnconfigured, CodecStateUnconfigured), (js_CodecStateConfigured, CodecStateConfigured), (js_CodecStateClosed, CodecStateClosed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CodecStateUnconfigured :: JSString
+js_CodecStateUnconfigured = "unconfigured"
+js_CodecStateConfigured :: JSString
+js_CodecStateConfigured = "configured"
+js_CodecStateClosed :: JSString
+js_CodecStateClosed = "closed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ColorGamut> (media-capabilities)
+data ColorGamut = ColorGamutSrgb
+    | ColorGamutP3
+    | ColorGamutRec2020
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ColorGamut where
+  pToJSVal x = pToJSVal (case x of
+    ColorGamutSrgb -> js_ColorGamutSrgb
+    ColorGamutP3 -> js_ColorGamutP3
+    ColorGamutRec2020 -> js_ColorGamutRec2020
+    )
+
+instance ToJSVal ColorGamut where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ColorGamut where
+  pFromJSVal x = P.maybe (P.error "Unexpected ColorGamut value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ColorGamutSrgb, ColorGamutSrgb), (js_ColorGamutP3, ColorGamutP3), (js_ColorGamutRec2020, ColorGamutRec2020)]
+
+instance FromJSVal ColorGamut where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ColorGamutSrgb, ColorGamutSrgb), (js_ColorGamutP3, ColorGamutP3), (js_ColorGamutRec2020, ColorGamutRec2020)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ColorGamutSrgb :: JSString
+js_ColorGamutSrgb = "srgb"
+js_ColorGamutP3 :: JSString
+js_ColorGamutP3 = "p3"
+js_ColorGamutRec2020 :: JSString
+js_ColorGamutRec2020 = "rec2020"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ColorSpaceConversion> (html)
+data ColorSpaceConversion = ColorSpaceConversionNone
+    | ColorSpaceConversionDefault
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ColorSpaceConversion where
+  pToJSVal x = pToJSVal (case x of
+    ColorSpaceConversionNone -> js_ColorSpaceConversionNone
+    ColorSpaceConversionDefault -> js_ColorSpaceConversionDefault
+    )
+
+instance ToJSVal ColorSpaceConversion where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ColorSpaceConversion where
+  pFromJSVal x = P.maybe (P.error "Unexpected ColorSpaceConversion value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ColorSpaceConversionNone, ColorSpaceConversionNone), (js_ColorSpaceConversionDefault, ColorSpaceConversionDefault)]
+
+instance FromJSVal ColorSpaceConversion where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ColorSpaceConversionNone, ColorSpaceConversionNone), (js_ColorSpaceConversionDefault, ColorSpaceConversionDefault)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ColorSpaceConversionNone :: JSString
+js_ColorSpaceConversionNone = "none"
+js_ColorSpaceConversionDefault :: JSString
+js_ColorSpaceConversionDefault = "default"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CompositeOperation> (web-animations-1)
+data CompositeOperation = CompositeOperationReplace
+    | CompositeOperationAdd
+    | CompositeOperationAccumulate
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CompositeOperation where
+  pToJSVal x = pToJSVal (case x of
+    CompositeOperationReplace -> js_CompositeOperationReplace
+    CompositeOperationAdd -> js_CompositeOperationAdd
+    CompositeOperationAccumulate -> js_CompositeOperationAccumulate
+    )
+
+instance ToJSVal CompositeOperation where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CompositeOperation where
+  pFromJSVal x = P.maybe (P.error "Unexpected CompositeOperation value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CompositeOperationReplace, CompositeOperationReplace), (js_CompositeOperationAdd, CompositeOperationAdd), (js_CompositeOperationAccumulate, CompositeOperationAccumulate)]
+
+instance FromJSVal CompositeOperation where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CompositeOperationReplace, CompositeOperationReplace), (js_CompositeOperationAdd, CompositeOperationAdd), (js_CompositeOperationAccumulate, CompositeOperationAccumulate)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CompositeOperationReplace :: JSString
+js_CompositeOperationReplace = "replace"
+js_CompositeOperationAdd :: JSString
+js_CompositeOperationAdd = "add"
+js_CompositeOperationAccumulate :: JSString
+js_CompositeOperationAccumulate = "accumulate"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CompressionFormat> (compression)
+data CompressionFormat = CompressionFormatBrotli
+    | CompressionFormatDeflate
+    | CompressionFormatDeflateRaw
+    | CompressionFormatGzip
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CompressionFormat where
+  pToJSVal x = pToJSVal (case x of
+    CompressionFormatBrotli -> js_CompressionFormatBrotli
+    CompressionFormatDeflate -> js_CompressionFormatDeflate
+    CompressionFormatDeflateRaw -> js_CompressionFormatDeflateRaw
+    CompressionFormatGzip -> js_CompressionFormatGzip
+    )
+
+instance ToJSVal CompressionFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CompressionFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected CompressionFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CompressionFormatBrotli, CompressionFormatBrotli), (js_CompressionFormatDeflate, CompressionFormatDeflate), (js_CompressionFormatDeflateRaw, CompressionFormatDeflateRaw), (js_CompressionFormatGzip, CompressionFormatGzip)]
+
+instance FromJSVal CompressionFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CompressionFormatBrotli, CompressionFormatBrotli), (js_CompressionFormatDeflate, CompressionFormatDeflate), (js_CompressionFormatDeflateRaw, CompressionFormatDeflateRaw), (js_CompressionFormatGzip, CompressionFormatGzip)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CompressionFormatBrotli :: JSString
+js_CompressionFormatBrotli = "brotli"
+js_CompressionFormatDeflate :: JSString
+js_CompressionFormatDeflate = "deflate"
+js_CompressionFormatDeflateRaw :: JSString
+js_CompressionFormatDeflateRaw = "deflate-raw"
+js_CompressionFormatGzip :: JSString
+js_CompressionFormatGzip = "gzip"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CookieSameSite> (cookiestore)
+data CookieSameSite = CookieSameSiteStrict
+    | CookieSameSiteLax
+    | CookieSameSiteNone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CookieSameSite where
+  pToJSVal x = pToJSVal (case x of
+    CookieSameSiteStrict -> js_CookieSameSiteStrict
+    CookieSameSiteLax -> js_CookieSameSiteLax
+    CookieSameSiteNone -> js_CookieSameSiteNone
+    )
+
+instance ToJSVal CookieSameSite where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CookieSameSite where
+  pFromJSVal x = P.maybe (P.error "Unexpected CookieSameSite value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CookieSameSiteStrict, CookieSameSiteStrict), (js_CookieSameSiteLax, CookieSameSiteLax), (js_CookieSameSiteNone, CookieSameSiteNone)]
+
+instance FromJSVal CookieSameSite where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CookieSameSiteStrict, CookieSameSiteStrict), (js_CookieSameSiteLax, CookieSameSiteLax), (js_CookieSameSiteNone, CookieSameSiteNone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CookieSameSiteStrict :: JSString
+js_CookieSameSiteStrict = "strict"
+js_CookieSameSiteLax :: JSString
+js_CookieSameSiteLax = "lax"
+js_CookieSameSiteNone :: JSString
+js_CookieSameSiteNone = "none"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API CredentialMediationRequirement> (credential-management-1)
+data CredentialMediationRequirement = CredentialMediationRequirementSilent
+    | CredentialMediationRequirementOptional
+    | CredentialMediationRequirementConditional
+    | CredentialMediationRequirementRequired
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal CredentialMediationRequirement where
+  pToJSVal x = pToJSVal (case x of
+    CredentialMediationRequirementSilent -> js_CredentialMediationRequirementSilent
+    CredentialMediationRequirementOptional -> js_CredentialMediationRequirementOptional
+    CredentialMediationRequirementConditional -> js_CredentialMediationRequirementConditional
+    CredentialMediationRequirementRequired -> js_CredentialMediationRequirementRequired
+    )
+
+instance ToJSVal CredentialMediationRequirement where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal CredentialMediationRequirement where
+  pFromJSVal x = P.maybe (P.error "Unexpected CredentialMediationRequirement value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CredentialMediationRequirementSilent, CredentialMediationRequirementSilent), (js_CredentialMediationRequirementOptional, CredentialMediationRequirementOptional), (js_CredentialMediationRequirementConditional, CredentialMediationRequirementConditional), (js_CredentialMediationRequirementRequired, CredentialMediationRequirementRequired)]
+
+instance FromJSVal CredentialMediationRequirement where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_CredentialMediationRequirementSilent, CredentialMediationRequirementSilent), (js_CredentialMediationRequirementOptional, CredentialMediationRequirementOptional), (js_CredentialMediationRequirementConditional, CredentialMediationRequirementConditional), (js_CredentialMediationRequirementRequired, CredentialMediationRequirementRequired)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_CredentialMediationRequirementSilent :: JSString
+js_CredentialMediationRequirementSilent = "silent"
+js_CredentialMediationRequirementOptional :: JSString
+js_CredentialMediationRequirementOptional = "optional"
+js_CredentialMediationRequirementConditional :: JSString
+js_CredentialMediationRequirementConditional = "conditional"
+js_CredentialMediationRequirementRequired :: JSString
+js_CredentialMediationRequirementRequired = "required"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API DOMParserSupportedType> (html)
+data DOMParserSupportedType = DOMParserSupportedTypeTextHtml
+    | DOMParserSupportedTypeTextXml
+    | DOMParserSupportedTypeApplicationXml
+    | DOMParserSupportedTypeApplicationXhtmlXml
+    | DOMParserSupportedTypeImageSvgXml
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal DOMParserSupportedType where
+  pToJSVal x = pToJSVal (case x of
+    DOMParserSupportedTypeTextHtml -> js_DOMParserSupportedTypeTextHtml
+    DOMParserSupportedTypeTextXml -> js_DOMParserSupportedTypeTextXml
+    DOMParserSupportedTypeApplicationXml -> js_DOMParserSupportedTypeApplicationXml
+    DOMParserSupportedTypeApplicationXhtmlXml -> js_DOMParserSupportedTypeApplicationXhtmlXml
+    DOMParserSupportedTypeImageSvgXml -> js_DOMParserSupportedTypeImageSvgXml
+    )
+
+instance ToJSVal DOMParserSupportedType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal DOMParserSupportedType where
+  pFromJSVal x = P.maybe (P.error "Unexpected DOMParserSupportedType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DOMParserSupportedTypeTextHtml, DOMParserSupportedTypeTextHtml), (js_DOMParserSupportedTypeTextXml, DOMParserSupportedTypeTextXml), (js_DOMParserSupportedTypeApplicationXml, DOMParserSupportedTypeApplicationXml), (js_DOMParserSupportedTypeApplicationXhtmlXml, DOMParserSupportedTypeApplicationXhtmlXml), (js_DOMParserSupportedTypeImageSvgXml, DOMParserSupportedTypeImageSvgXml)]
+
+instance FromJSVal DOMParserSupportedType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DOMParserSupportedTypeTextHtml, DOMParserSupportedTypeTextHtml), (js_DOMParserSupportedTypeTextXml, DOMParserSupportedTypeTextXml), (js_DOMParserSupportedTypeApplicationXml, DOMParserSupportedTypeApplicationXml), (js_DOMParserSupportedTypeApplicationXhtmlXml, DOMParserSupportedTypeApplicationXhtmlXml), (js_DOMParserSupportedTypeImageSvgXml, DOMParserSupportedTypeImageSvgXml)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_DOMParserSupportedTypeTextHtml :: JSString
+js_DOMParserSupportedTypeTextHtml = "text/html"
+js_DOMParserSupportedTypeTextXml :: JSString
+js_DOMParserSupportedTypeTextXml = "text/xml"
+js_DOMParserSupportedTypeApplicationXml :: JSString
+js_DOMParserSupportedTypeApplicationXml = "application/xml"
+js_DOMParserSupportedTypeApplicationXhtmlXml :: JSString
+js_DOMParserSupportedTypeApplicationXhtmlXml = "application/xhtml+xml"
+js_DOMParserSupportedTypeImageSvgXml :: JSString
+js_DOMParserSupportedTypeImageSvgXml = "image/svg+xml"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API DigitalCredentialIssuanceProtocol> (digital-credentials)
+data DigitalCredentialIssuanceProtocol = DigitalCredentialIssuanceProtocolOpenid4vciV1
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal DigitalCredentialIssuanceProtocol where
+  pToJSVal x = pToJSVal (case x of
+    DigitalCredentialIssuanceProtocolOpenid4vciV1 -> js_DigitalCredentialIssuanceProtocolOpenid4vciV1
+    )
+
+instance ToJSVal DigitalCredentialIssuanceProtocol where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal DigitalCredentialIssuanceProtocol where
+  pFromJSVal x = P.maybe (P.error "Unexpected DigitalCredentialIssuanceProtocol value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DigitalCredentialIssuanceProtocolOpenid4vciV1, DigitalCredentialIssuanceProtocolOpenid4vciV1)]
+
+instance FromJSVal DigitalCredentialIssuanceProtocol where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DigitalCredentialIssuanceProtocolOpenid4vciV1, DigitalCredentialIssuanceProtocolOpenid4vciV1)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_DigitalCredentialIssuanceProtocolOpenid4vciV1 :: JSString
+js_DigitalCredentialIssuanceProtocolOpenid4vciV1 = "openid4vci-v1"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API DigitalCredentialPresentationProtocol> (digital-credentials)
+data DigitalCredentialPresentationProtocol = DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned
+    | DigitalCredentialPresentationProtocolOpenid4vpV1Signed
+    | DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned
+    | DigitalCredentialPresentationProtocolOrgIsoMdoc
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal DigitalCredentialPresentationProtocol where
+  pToJSVal x = pToJSVal (case x of
+    DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned -> js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned
+    DigitalCredentialPresentationProtocolOpenid4vpV1Signed -> js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed
+    DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned -> js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned
+    DigitalCredentialPresentationProtocolOrgIsoMdoc -> js_DigitalCredentialPresentationProtocolOrgIsoMdoc
+    )
+
+instance ToJSVal DigitalCredentialPresentationProtocol where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal DigitalCredentialPresentationProtocol where
+  pFromJSVal x = P.maybe (P.error "Unexpected DigitalCredentialPresentationProtocol value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned, DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned), (js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed, DigitalCredentialPresentationProtocolOpenid4vpV1Signed), (js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned, DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned), (js_DigitalCredentialPresentationProtocolOrgIsoMdoc, DigitalCredentialPresentationProtocolOrgIsoMdoc)]
+
+instance FromJSVal DigitalCredentialPresentationProtocol where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned, DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned), (js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed, DigitalCredentialPresentationProtocolOpenid4vpV1Signed), (js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned, DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned), (js_DigitalCredentialPresentationProtocolOrgIsoMdoc, DigitalCredentialPresentationProtocolOrgIsoMdoc)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned :: JSString
+js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned = "openid4vp-v1-unsigned"
+js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed :: JSString
+js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed = "openid4vp-v1-signed"
+js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned :: JSString
+js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned = "openid4vp-v1-multisigned"
+js_DigitalCredentialPresentationProtocolOrgIsoMdoc :: JSString
+js_DigitalCredentialPresentationProtocolOrgIsoMdoc = "org-iso-mdoc"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API DirectionSetting> (webvtt1)
+data DirectionSetting = DirectionSetting
+    | DirectionSettingRl
+    | DirectionSettingLr
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal DirectionSetting where
+  pToJSVal x = pToJSVal (case x of
+    DirectionSetting -> js_DirectionSetting
+    DirectionSettingRl -> js_DirectionSettingRl
+    DirectionSettingLr -> js_DirectionSettingLr
+    )
+
+instance ToJSVal DirectionSetting where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal DirectionSetting where
+  pFromJSVal x = P.maybe (P.error "Unexpected DirectionSetting value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DirectionSetting, DirectionSetting), (js_DirectionSettingRl, DirectionSettingRl), (js_DirectionSettingLr, DirectionSettingLr)]
+
+instance FromJSVal DirectionSetting where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DirectionSetting, DirectionSetting), (js_DirectionSettingRl, DirectionSettingRl), (js_DirectionSettingLr, DirectionSettingLr)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_DirectionSetting :: JSString
+js_DirectionSetting = ""
+js_DirectionSettingRl :: JSString
+js_DirectionSettingRl = "rl"
+js_DirectionSettingLr :: JSString
+js_DirectionSettingLr = "lr"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API DistanceModelType> (webaudio-1.1)
+data DistanceModelType = DistanceModelTypeLinear
+    | DistanceModelTypeInverse
+    | DistanceModelTypeExponential
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal DistanceModelType where
+  pToJSVal x = pToJSVal (case x of
+    DistanceModelTypeLinear -> js_DistanceModelTypeLinear
+    DistanceModelTypeInverse -> js_DistanceModelTypeInverse
+    DistanceModelTypeExponential -> js_DistanceModelTypeExponential
+    )
+
+instance ToJSVal DistanceModelType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal DistanceModelType where
+  pFromJSVal x = P.maybe (P.error "Unexpected DistanceModelType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DistanceModelTypeLinear, DistanceModelTypeLinear), (js_DistanceModelTypeInverse, DistanceModelTypeInverse), (js_DistanceModelTypeExponential, DistanceModelTypeExponential)]
+
+instance FromJSVal DistanceModelType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DistanceModelTypeLinear, DistanceModelTypeLinear), (js_DistanceModelTypeInverse, DistanceModelTypeInverse), (js_DistanceModelTypeExponential, DistanceModelTypeExponential)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_DistanceModelTypeLinear :: JSString
+js_DistanceModelTypeLinear = "linear"
+js_DistanceModelTypeInverse :: JSString
+js_DistanceModelTypeInverse = "inverse"
+js_DistanceModelTypeExponential :: JSString
+js_DistanceModelTypeExponential = "exponential"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API DocumentReadyState> (html)
+data DocumentReadyState = DocumentReadyStateLoading
+    | DocumentReadyStateInteractive
+    | DocumentReadyStateComplete
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal DocumentReadyState where
+  pToJSVal x = pToJSVal (case x of
+    DocumentReadyStateLoading -> js_DocumentReadyStateLoading
+    DocumentReadyStateInteractive -> js_DocumentReadyStateInteractive
+    DocumentReadyStateComplete -> js_DocumentReadyStateComplete
+    )
+
+instance ToJSVal DocumentReadyState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal DocumentReadyState where
+  pFromJSVal x = P.maybe (P.error "Unexpected DocumentReadyState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DocumentReadyStateLoading, DocumentReadyStateLoading), (js_DocumentReadyStateInteractive, DocumentReadyStateInteractive), (js_DocumentReadyStateComplete, DocumentReadyStateComplete)]
+
+instance FromJSVal DocumentReadyState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DocumentReadyStateLoading, DocumentReadyStateLoading), (js_DocumentReadyStateInteractive, DocumentReadyStateInteractive), (js_DocumentReadyStateComplete, DocumentReadyStateComplete)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_DocumentReadyStateLoading :: JSString
+js_DocumentReadyStateLoading = "loading"
+js_DocumentReadyStateInteractive :: JSString
+js_DocumentReadyStateInteractive = "interactive"
+js_DocumentReadyStateComplete :: JSString
+js_DocumentReadyStateComplete = "complete"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API DocumentVisibilityState> (html)
+data DocumentVisibilityState = DocumentVisibilityStateVisible
+    | DocumentVisibilityStateHidden
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal DocumentVisibilityState where
+  pToJSVal x = pToJSVal (case x of
+    DocumentVisibilityStateVisible -> js_DocumentVisibilityStateVisible
+    DocumentVisibilityStateHidden -> js_DocumentVisibilityStateHidden
+    )
+
+instance ToJSVal DocumentVisibilityState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal DocumentVisibilityState where
+  pFromJSVal x = P.maybe (P.error "Unexpected DocumentVisibilityState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DocumentVisibilityStateVisible, DocumentVisibilityStateVisible), (js_DocumentVisibilityStateHidden, DocumentVisibilityStateHidden)]
+
+instance FromJSVal DocumentVisibilityState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_DocumentVisibilityStateVisible, DocumentVisibilityStateVisible), (js_DocumentVisibilityStateHidden, DocumentVisibilityStateHidden)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_DocumentVisibilityStateVisible :: JSString
+js_DocumentVisibilityStateVisible = "visible"
+js_DocumentVisibilityStateHidden :: JSString
+js_DocumentVisibilityStateHidden = "hidden"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API EncodedAudioChunkType> (webcodecs)
+data EncodedAudioChunkType = EncodedAudioChunkTypeKey
+    | EncodedAudioChunkTypeDelta
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal EncodedAudioChunkType where
+  pToJSVal x = pToJSVal (case x of
+    EncodedAudioChunkTypeKey -> js_EncodedAudioChunkTypeKey
+    EncodedAudioChunkTypeDelta -> js_EncodedAudioChunkTypeDelta
+    )
+
+instance ToJSVal EncodedAudioChunkType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal EncodedAudioChunkType where
+  pFromJSVal x = P.maybe (P.error "Unexpected EncodedAudioChunkType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EncodedAudioChunkTypeKey, EncodedAudioChunkTypeKey), (js_EncodedAudioChunkTypeDelta, EncodedAudioChunkTypeDelta)]
+
+instance FromJSVal EncodedAudioChunkType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EncodedAudioChunkTypeKey, EncodedAudioChunkTypeKey), (js_EncodedAudioChunkTypeDelta, EncodedAudioChunkTypeDelta)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_EncodedAudioChunkTypeKey :: JSString
+js_EncodedAudioChunkTypeKey = "key"
+js_EncodedAudioChunkTypeDelta :: JSString
+js_EncodedAudioChunkTypeDelta = "delta"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API EncodedVideoChunkType> (webcodecs)
+data EncodedVideoChunkType = EncodedVideoChunkTypeKey
+    | EncodedVideoChunkTypeDelta
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal EncodedVideoChunkType where
+  pToJSVal x = pToJSVal (case x of
+    EncodedVideoChunkTypeKey -> js_EncodedVideoChunkTypeKey
+    EncodedVideoChunkTypeDelta -> js_EncodedVideoChunkTypeDelta
+    )
+
+instance ToJSVal EncodedVideoChunkType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal EncodedVideoChunkType where
+  pFromJSVal x = P.maybe (P.error "Unexpected EncodedVideoChunkType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EncodedVideoChunkTypeKey, EncodedVideoChunkTypeKey), (js_EncodedVideoChunkTypeDelta, EncodedVideoChunkTypeDelta)]
+
+instance FromJSVal EncodedVideoChunkType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EncodedVideoChunkTypeKey, EncodedVideoChunkTypeKey), (js_EncodedVideoChunkTypeDelta, EncodedVideoChunkTypeDelta)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_EncodedVideoChunkTypeKey :: JSString
+js_EncodedVideoChunkTypeKey = "key"
+js_EncodedVideoChunkTypeDelta :: JSString
+js_EncodedVideoChunkTypeDelta = "delta"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API EndOfStreamError> (media-source-2)
+data EndOfStreamError = EndOfStreamErrorNetwork
+    | EndOfStreamErrorDecode
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal EndOfStreamError where
+  pToJSVal x = pToJSVal (case x of
+    EndOfStreamErrorNetwork -> js_EndOfStreamErrorNetwork
+    EndOfStreamErrorDecode -> js_EndOfStreamErrorDecode
+    )
+
+instance ToJSVal EndOfStreamError where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal EndOfStreamError where
+  pFromJSVal x = P.maybe (P.error "Unexpected EndOfStreamError value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EndOfStreamErrorNetwork, EndOfStreamErrorNetwork), (js_EndOfStreamErrorDecode, EndOfStreamErrorDecode)]
+
+instance FromJSVal EndOfStreamError where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EndOfStreamErrorNetwork, EndOfStreamErrorNetwork), (js_EndOfStreamErrorDecode, EndOfStreamErrorDecode)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_EndOfStreamErrorNetwork :: JSString
+js_EndOfStreamErrorNetwork = "network"
+js_EndOfStreamErrorDecode :: JSString
+js_EndOfStreamErrorDecode = "decode"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API EndingType> (FileAPI)
+data EndingType = EndingTypeTransparent
+    | EndingTypeNative
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal EndingType where
+  pToJSVal x = pToJSVal (case x of
+    EndingTypeTransparent -> js_EndingTypeTransparent
+    EndingTypeNative -> js_EndingTypeNative
+    )
+
+instance ToJSVal EndingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal EndingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected EndingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EndingTypeTransparent, EndingTypeTransparent), (js_EndingTypeNative, EndingTypeNative)]
+
+instance FromJSVal EndingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_EndingTypeTransparent, EndingTypeTransparent), (js_EndingTypeNative, EndingTypeNative)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_EndingTypeTransparent :: JSString
+js_EndingTypeTransparent = "transparent"
+js_EndingTypeNative :: JSString
+js_EndingTypeNative = "native"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FileSystemHandleKind> (fs)
+data FileSystemHandleKind = FileSystemHandleKindFile
+    | FileSystemHandleKindDirectory
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FileSystemHandleKind where
+  pToJSVal x = pToJSVal (case x of
+    FileSystemHandleKindFile -> js_FileSystemHandleKindFile
+    FileSystemHandleKindDirectory -> js_FileSystemHandleKindDirectory
+    )
+
+instance ToJSVal FileSystemHandleKind where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FileSystemHandleKind where
+  pFromJSVal x = P.maybe (P.error "Unexpected FileSystemHandleKind value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FileSystemHandleKindFile, FileSystemHandleKindFile), (js_FileSystemHandleKindDirectory, FileSystemHandleKindDirectory)]
+
+instance FromJSVal FileSystemHandleKind where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FileSystemHandleKindFile, FileSystemHandleKindFile), (js_FileSystemHandleKindDirectory, FileSystemHandleKindDirectory)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FileSystemHandleKindFile :: JSString
+js_FileSystemHandleKindFile = "file"
+js_FileSystemHandleKindDirectory :: JSString
+js_FileSystemHandleKindDirectory = "directory"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FillLightMode> (image-capture)
+data FillLightMode = FillLightModeAuto
+    | FillLightModeOff
+    | FillLightModeFlash
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FillLightMode where
+  pToJSVal x = pToJSVal (case x of
+    FillLightModeAuto -> js_FillLightModeAuto
+    FillLightModeOff -> js_FillLightModeOff
+    FillLightModeFlash -> js_FillLightModeFlash
+    )
+
+instance ToJSVal FillLightMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FillLightMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected FillLightMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FillLightModeAuto, FillLightModeAuto), (js_FillLightModeOff, FillLightModeOff), (js_FillLightModeFlash, FillLightModeFlash)]
+
+instance FromJSVal FillLightMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FillLightModeAuto, FillLightModeAuto), (js_FillLightModeOff, FillLightModeOff), (js_FillLightModeFlash, FillLightModeFlash)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FillLightModeAuto :: JSString
+js_FillLightModeAuto = "auto"
+js_FillLightModeOff :: JSString
+js_FillLightModeOff = "off"
+js_FillLightModeFlash :: JSString
+js_FillLightModeFlash = "flash"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FillMode> (web-animations-1)
+data FillMode = FillModeNone
+    | FillModeForwards
+    | FillModeBackwards
+    | FillModeBoth
+    | FillModeAuto
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FillMode where
+  pToJSVal x = pToJSVal (case x of
+    FillModeNone -> js_FillModeNone
+    FillModeForwards -> js_FillModeForwards
+    FillModeBackwards -> js_FillModeBackwards
+    FillModeBoth -> js_FillModeBoth
+    FillModeAuto -> js_FillModeAuto
+    )
+
+instance ToJSVal FillMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FillMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected FillMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FillModeNone, FillModeNone), (js_FillModeForwards, FillModeForwards), (js_FillModeBackwards, FillModeBackwards), (js_FillModeBoth, FillModeBoth), (js_FillModeAuto, FillModeAuto)]
+
+instance FromJSVal FillMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FillModeNone, FillModeNone), (js_FillModeForwards, FillModeForwards), (js_FillModeBackwards, FillModeBackwards), (js_FillModeBoth, FillModeBoth), (js_FillModeAuto, FillModeAuto)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FillModeNone :: JSString
+js_FillModeNone = "none"
+js_FillModeForwards :: JSString
+js_FillModeForwards = "forwards"
+js_FillModeBackwards :: JSString
+js_FillModeBackwards = "backwards"
+js_FillModeBoth :: JSString
+js_FillModeBoth = "both"
+js_FillModeAuto :: JSString
+js_FillModeAuto = "auto"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FlowControlType> (serial)
+data FlowControlType = FlowControlTypeNone
+    | FlowControlTypeHardware
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FlowControlType where
+  pToJSVal x = pToJSVal (case x of
+    FlowControlTypeNone -> js_FlowControlTypeNone
+    FlowControlTypeHardware -> js_FlowControlTypeHardware
+    )
+
+instance ToJSVal FlowControlType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FlowControlType where
+  pFromJSVal x = P.maybe (P.error "Unexpected FlowControlType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FlowControlTypeNone, FlowControlTypeNone), (js_FlowControlTypeHardware, FlowControlTypeHardware)]
+
+instance FromJSVal FlowControlType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FlowControlTypeNone, FlowControlTypeNone), (js_FlowControlTypeHardware, FlowControlTypeHardware)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FlowControlTypeNone :: JSString
+js_FlowControlTypeNone = "none"
+js_FlowControlTypeHardware :: JSString
+js_FlowControlTypeHardware = "hardware"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FontFaceLoadStatus> (css-font-loading-3)
+data FontFaceLoadStatus = FontFaceLoadStatusUnloaded
+    | FontFaceLoadStatusLoading
+    | FontFaceLoadStatusLoaded
+    | FontFaceLoadStatusError
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FontFaceLoadStatus where
+  pToJSVal x = pToJSVal (case x of
+    FontFaceLoadStatusUnloaded -> js_FontFaceLoadStatusUnloaded
+    FontFaceLoadStatusLoading -> js_FontFaceLoadStatusLoading
+    FontFaceLoadStatusLoaded -> js_FontFaceLoadStatusLoaded
+    FontFaceLoadStatusError -> js_FontFaceLoadStatusError
+    )
+
+instance ToJSVal FontFaceLoadStatus where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FontFaceLoadStatus where
+  pFromJSVal x = P.maybe (P.error "Unexpected FontFaceLoadStatus value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FontFaceLoadStatusUnloaded, FontFaceLoadStatusUnloaded), (js_FontFaceLoadStatusLoading, FontFaceLoadStatusLoading), (js_FontFaceLoadStatusLoaded, FontFaceLoadStatusLoaded), (js_FontFaceLoadStatusError, FontFaceLoadStatusError)]
+
+instance FromJSVal FontFaceLoadStatus where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FontFaceLoadStatusUnloaded, FontFaceLoadStatusUnloaded), (js_FontFaceLoadStatusLoading, FontFaceLoadStatusLoading), (js_FontFaceLoadStatusLoaded, FontFaceLoadStatusLoaded), (js_FontFaceLoadStatusError, FontFaceLoadStatusError)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FontFaceLoadStatusUnloaded :: JSString
+js_FontFaceLoadStatusUnloaded = "unloaded"
+js_FontFaceLoadStatusLoading :: JSString
+js_FontFaceLoadStatusLoading = "loading"
+js_FontFaceLoadStatusLoaded :: JSString
+js_FontFaceLoadStatusLoaded = "loaded"
+js_FontFaceLoadStatusError :: JSString
+js_FontFaceLoadStatusError = "error"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FontFaceSetLoadStatus> (css-font-loading-3)
+data FontFaceSetLoadStatus = FontFaceSetLoadStatusLoading
+    | FontFaceSetLoadStatusLoaded
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FontFaceSetLoadStatus where
+  pToJSVal x = pToJSVal (case x of
+    FontFaceSetLoadStatusLoading -> js_FontFaceSetLoadStatusLoading
+    FontFaceSetLoadStatusLoaded -> js_FontFaceSetLoadStatusLoaded
+    )
+
+instance ToJSVal FontFaceSetLoadStatus where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FontFaceSetLoadStatus where
+  pFromJSVal x = P.maybe (P.error "Unexpected FontFaceSetLoadStatus value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FontFaceSetLoadStatusLoading, FontFaceSetLoadStatusLoading), (js_FontFaceSetLoadStatusLoaded, FontFaceSetLoadStatusLoaded)]
+
+instance FromJSVal FontFaceSetLoadStatus where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FontFaceSetLoadStatusLoading, FontFaceSetLoadStatusLoading), (js_FontFaceSetLoadStatusLoaded, FontFaceSetLoadStatusLoaded)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FontFaceSetLoadStatusLoading :: JSString
+js_FontFaceSetLoadStatusLoading = "loading"
+js_FontFaceSetLoadStatusLoaded :: JSString
+js_FontFaceSetLoadStatusLoaded = "loaded"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FrameType> (service-workers)
+data FrameType = FrameTypeAuxiliary
+    | FrameTypeTopLevel
+    | FrameTypeNested
+    | FrameTypeNone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FrameType where
+  pToJSVal x = pToJSVal (case x of
+    FrameTypeAuxiliary -> js_FrameTypeAuxiliary
+    FrameTypeTopLevel -> js_FrameTypeTopLevel
+    FrameTypeNested -> js_FrameTypeNested
+    FrameTypeNone -> js_FrameTypeNone
+    )
+
+instance ToJSVal FrameType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FrameType where
+  pFromJSVal x = P.maybe (P.error "Unexpected FrameType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FrameTypeAuxiliary, FrameTypeAuxiliary), (js_FrameTypeTopLevel, FrameTypeTopLevel), (js_FrameTypeNested, FrameTypeNested), (js_FrameTypeNone, FrameTypeNone)]
+
+instance FromJSVal FrameType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FrameTypeAuxiliary, FrameTypeAuxiliary), (js_FrameTypeTopLevel, FrameTypeTopLevel), (js_FrameTypeNested, FrameTypeNested), (js_FrameTypeNone, FrameTypeNone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FrameTypeAuxiliary :: JSString
+js_FrameTypeAuxiliary = "auxiliary"
+js_FrameTypeTopLevel :: JSString
+js_FrameTypeTopLevel = "top-level"
+js_FrameTypeNested :: JSString
+js_FrameTypeNested = "nested"
+js_FrameTypeNone :: JSString
+js_FrameTypeNone = "none"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FullscreenKeyboardLock> (fullscreen)
+data FullscreenKeyboardLock = FullscreenKeyboardLockBrowser
+    | FullscreenKeyboardLockNone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FullscreenKeyboardLock where
+  pToJSVal x = pToJSVal (case x of
+    FullscreenKeyboardLockBrowser -> js_FullscreenKeyboardLockBrowser
+    FullscreenKeyboardLockNone -> js_FullscreenKeyboardLockNone
+    )
+
+instance ToJSVal FullscreenKeyboardLock where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FullscreenKeyboardLock where
+  pFromJSVal x = P.maybe (P.error "Unexpected FullscreenKeyboardLock value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FullscreenKeyboardLockBrowser, FullscreenKeyboardLockBrowser), (js_FullscreenKeyboardLockNone, FullscreenKeyboardLockNone)]
+
+instance FromJSVal FullscreenKeyboardLock where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FullscreenKeyboardLockBrowser, FullscreenKeyboardLockBrowser), (js_FullscreenKeyboardLockNone, FullscreenKeyboardLockNone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FullscreenKeyboardLockBrowser :: JSString
+js_FullscreenKeyboardLockBrowser = "browser"
+js_FullscreenKeyboardLockNone :: JSString
+js_FullscreenKeyboardLockNone = "none"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API FullscreenNavigationUI> (fullscreen)
+data FullscreenNavigationUI = FullscreenNavigationUIAuto
+    | FullscreenNavigationUIShow
+    | FullscreenNavigationUIHide
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal FullscreenNavigationUI where
+  pToJSVal x = pToJSVal (case x of
+    FullscreenNavigationUIAuto -> js_FullscreenNavigationUIAuto
+    FullscreenNavigationUIShow -> js_FullscreenNavigationUIShow
+    FullscreenNavigationUIHide -> js_FullscreenNavigationUIHide
+    )
+
+instance ToJSVal FullscreenNavigationUI where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal FullscreenNavigationUI where
+  pFromJSVal x = P.maybe (P.error "Unexpected FullscreenNavigationUI value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FullscreenNavigationUIAuto, FullscreenNavigationUIAuto), (js_FullscreenNavigationUIShow, FullscreenNavigationUIShow), (js_FullscreenNavigationUIHide, FullscreenNavigationUIHide)]
+
+instance FromJSVal FullscreenNavigationUI where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_FullscreenNavigationUIAuto, FullscreenNavigationUIAuto), (js_FullscreenNavigationUIShow, FullscreenNavigationUIShow), (js_FullscreenNavigationUIHide, FullscreenNavigationUIHide)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_FullscreenNavigationUIAuto :: JSString
+js_FullscreenNavigationUIAuto = "auto"
+js_FullscreenNavigationUIShow :: JSString
+js_FullscreenNavigationUIShow = "show"
+js_FullscreenNavigationUIHide :: JSString
+js_FullscreenNavigationUIHide = "hide"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUAddressMode> (webgpu)
+data GPUAddressMode = GPUAddressModeClampToEdge
+    | GPUAddressModeRepeat
+    | GPUAddressModeMirrorRepeat
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUAddressMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUAddressModeClampToEdge -> js_GPUAddressModeClampToEdge
+    GPUAddressModeRepeat -> js_GPUAddressModeRepeat
+    GPUAddressModeMirrorRepeat -> js_GPUAddressModeMirrorRepeat
+    )
+
+instance ToJSVal GPUAddressMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUAddressMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUAddressMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUAddressModeClampToEdge, GPUAddressModeClampToEdge), (js_GPUAddressModeRepeat, GPUAddressModeRepeat), (js_GPUAddressModeMirrorRepeat, GPUAddressModeMirrorRepeat)]
+
+instance FromJSVal GPUAddressMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUAddressModeClampToEdge, GPUAddressModeClampToEdge), (js_GPUAddressModeRepeat, GPUAddressModeRepeat), (js_GPUAddressModeMirrorRepeat, GPUAddressModeMirrorRepeat)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUAddressModeClampToEdge :: JSString
+js_GPUAddressModeClampToEdge = "clamp-to-edge"
+js_GPUAddressModeRepeat :: JSString
+js_GPUAddressModeRepeat = "repeat"
+js_GPUAddressModeMirrorRepeat :: JSString
+js_GPUAddressModeMirrorRepeat = "mirror-repeat"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUAutoLayoutMode> (webgpu)
+data GPUAutoLayoutMode = GPUAutoLayoutModeAuto
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUAutoLayoutMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUAutoLayoutModeAuto -> js_GPUAutoLayoutModeAuto
+    )
+
+instance ToJSVal GPUAutoLayoutMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUAutoLayoutMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUAutoLayoutMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUAutoLayoutModeAuto, GPUAutoLayoutModeAuto)]
+
+instance FromJSVal GPUAutoLayoutMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUAutoLayoutModeAuto, GPUAutoLayoutModeAuto)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUAutoLayoutModeAuto :: JSString
+js_GPUAutoLayoutModeAuto = "auto"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUBlendFactor> (webgpu)
+data GPUBlendFactor = GPUBlendFactorZero
+    | GPUBlendFactorOne
+    | GPUBlendFactorSrc
+    | GPUBlendFactorOneMinusSrc
+    | GPUBlendFactorSrcAlpha
+    | GPUBlendFactorOneMinusSrcAlpha
+    | GPUBlendFactorDst
+    | GPUBlendFactorOneMinusDst
+    | GPUBlendFactorDstAlpha
+    | GPUBlendFactorOneMinusDstAlpha
+    | GPUBlendFactorSrcAlphaSaturated
+    | GPUBlendFactorConstant
+    | GPUBlendFactorOneMinusConstant
+    | GPUBlendFactorSrc1
+    | GPUBlendFactorOneMinusSrc1
+    | GPUBlendFactorSrc1Alpha
+    | GPUBlendFactorOneMinusSrc1Alpha
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUBlendFactor where
+  pToJSVal x = pToJSVal (case x of
+    GPUBlendFactorZero -> js_GPUBlendFactorZero
+    GPUBlendFactorOne -> js_GPUBlendFactorOne
+    GPUBlendFactorSrc -> js_GPUBlendFactorSrc
+    GPUBlendFactorOneMinusSrc -> js_GPUBlendFactorOneMinusSrc
+    GPUBlendFactorSrcAlpha -> js_GPUBlendFactorSrcAlpha
+    GPUBlendFactorOneMinusSrcAlpha -> js_GPUBlendFactorOneMinusSrcAlpha
+    GPUBlendFactorDst -> js_GPUBlendFactorDst
+    GPUBlendFactorOneMinusDst -> js_GPUBlendFactorOneMinusDst
+    GPUBlendFactorDstAlpha -> js_GPUBlendFactorDstAlpha
+    GPUBlendFactorOneMinusDstAlpha -> js_GPUBlendFactorOneMinusDstAlpha
+    GPUBlendFactorSrcAlphaSaturated -> js_GPUBlendFactorSrcAlphaSaturated
+    GPUBlendFactorConstant -> js_GPUBlendFactorConstant
+    GPUBlendFactorOneMinusConstant -> js_GPUBlendFactorOneMinusConstant
+    GPUBlendFactorSrc1 -> js_GPUBlendFactorSrc1
+    GPUBlendFactorOneMinusSrc1 -> js_GPUBlendFactorOneMinusSrc1
+    GPUBlendFactorSrc1Alpha -> js_GPUBlendFactorSrc1Alpha
+    GPUBlendFactorOneMinusSrc1Alpha -> js_GPUBlendFactorOneMinusSrc1Alpha
+    )
+
+instance ToJSVal GPUBlendFactor where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUBlendFactor where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUBlendFactor value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBlendFactorZero, GPUBlendFactorZero), (js_GPUBlendFactorOne, GPUBlendFactorOne), (js_GPUBlendFactorSrc, GPUBlendFactorSrc), (js_GPUBlendFactorOneMinusSrc, GPUBlendFactorOneMinusSrc), (js_GPUBlendFactorSrcAlpha, GPUBlendFactorSrcAlpha), (js_GPUBlendFactorOneMinusSrcAlpha, GPUBlendFactorOneMinusSrcAlpha), (js_GPUBlendFactorDst, GPUBlendFactorDst), (js_GPUBlendFactorOneMinusDst, GPUBlendFactorOneMinusDst), (js_GPUBlendFactorDstAlpha, GPUBlendFactorDstAlpha), (js_GPUBlendFactorOneMinusDstAlpha, GPUBlendFactorOneMinusDstAlpha), (js_GPUBlendFactorSrcAlphaSaturated, GPUBlendFactorSrcAlphaSaturated), (js_GPUBlendFactorConstant, GPUBlendFactorConstant), (js_GPUBlendFactorOneMinusConstant, GPUBlendFactorOneMinusConstant), (js_GPUBlendFactorSrc1, GPUBlendFactorSrc1), (js_GPUBlendFactorOneMinusSrc1, GPUBlendFactorOneMinusSrc1), (js_GPUBlendFactorSrc1Alpha, GPUBlendFactorSrc1Alpha), (js_GPUBlendFactorOneMinusSrc1Alpha, GPUBlendFactorOneMinusSrc1Alpha)]
+
+instance FromJSVal GPUBlendFactor where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBlendFactorZero, GPUBlendFactorZero), (js_GPUBlendFactorOne, GPUBlendFactorOne), (js_GPUBlendFactorSrc, GPUBlendFactorSrc), (js_GPUBlendFactorOneMinusSrc, GPUBlendFactorOneMinusSrc), (js_GPUBlendFactorSrcAlpha, GPUBlendFactorSrcAlpha), (js_GPUBlendFactorOneMinusSrcAlpha, GPUBlendFactorOneMinusSrcAlpha), (js_GPUBlendFactorDst, GPUBlendFactorDst), (js_GPUBlendFactorOneMinusDst, GPUBlendFactorOneMinusDst), (js_GPUBlendFactorDstAlpha, GPUBlendFactorDstAlpha), (js_GPUBlendFactorOneMinusDstAlpha, GPUBlendFactorOneMinusDstAlpha), (js_GPUBlendFactorSrcAlphaSaturated, GPUBlendFactorSrcAlphaSaturated), (js_GPUBlendFactorConstant, GPUBlendFactorConstant), (js_GPUBlendFactorOneMinusConstant, GPUBlendFactorOneMinusConstant), (js_GPUBlendFactorSrc1, GPUBlendFactorSrc1), (js_GPUBlendFactorOneMinusSrc1, GPUBlendFactorOneMinusSrc1), (js_GPUBlendFactorSrc1Alpha, GPUBlendFactorSrc1Alpha), (js_GPUBlendFactorOneMinusSrc1Alpha, GPUBlendFactorOneMinusSrc1Alpha)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUBlendFactorZero :: JSString
+js_GPUBlendFactorZero = "zero"
+js_GPUBlendFactorOne :: JSString
+js_GPUBlendFactorOne = "one"
+js_GPUBlendFactorSrc :: JSString
+js_GPUBlendFactorSrc = "src"
+js_GPUBlendFactorOneMinusSrc :: JSString
+js_GPUBlendFactorOneMinusSrc = "one-minus-src"
+js_GPUBlendFactorSrcAlpha :: JSString
+js_GPUBlendFactorSrcAlpha = "src-alpha"
+js_GPUBlendFactorOneMinusSrcAlpha :: JSString
+js_GPUBlendFactorOneMinusSrcAlpha = "one-minus-src-alpha"
+js_GPUBlendFactorDst :: JSString
+js_GPUBlendFactorDst = "dst"
+js_GPUBlendFactorOneMinusDst :: JSString
+js_GPUBlendFactorOneMinusDst = "one-minus-dst"
+js_GPUBlendFactorDstAlpha :: JSString
+js_GPUBlendFactorDstAlpha = "dst-alpha"
+js_GPUBlendFactorOneMinusDstAlpha :: JSString
+js_GPUBlendFactorOneMinusDstAlpha = "one-minus-dst-alpha"
+js_GPUBlendFactorSrcAlphaSaturated :: JSString
+js_GPUBlendFactorSrcAlphaSaturated = "src-alpha-saturated"
+js_GPUBlendFactorConstant :: JSString
+js_GPUBlendFactorConstant = "constant"
+js_GPUBlendFactorOneMinusConstant :: JSString
+js_GPUBlendFactorOneMinusConstant = "one-minus-constant"
+js_GPUBlendFactorSrc1 :: JSString
+js_GPUBlendFactorSrc1 = "src1"
+js_GPUBlendFactorOneMinusSrc1 :: JSString
+js_GPUBlendFactorOneMinusSrc1 = "one-minus-src1"
+js_GPUBlendFactorSrc1Alpha :: JSString
+js_GPUBlendFactorSrc1Alpha = "src1-alpha"
+js_GPUBlendFactorOneMinusSrc1Alpha :: JSString
+js_GPUBlendFactorOneMinusSrc1Alpha = "one-minus-src1-alpha"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUBlendOperation> (webgpu)
+data GPUBlendOperation = GPUBlendOperationAdd
+    | GPUBlendOperationSubtract
+    | GPUBlendOperationReverseSubtract
+    | GPUBlendOperationMin
+    | GPUBlendOperationMax
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUBlendOperation where
+  pToJSVal x = pToJSVal (case x of
+    GPUBlendOperationAdd -> js_GPUBlendOperationAdd
+    GPUBlendOperationSubtract -> js_GPUBlendOperationSubtract
+    GPUBlendOperationReverseSubtract -> js_GPUBlendOperationReverseSubtract
+    GPUBlendOperationMin -> js_GPUBlendOperationMin
+    GPUBlendOperationMax -> js_GPUBlendOperationMax
+    )
+
+instance ToJSVal GPUBlendOperation where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUBlendOperation where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUBlendOperation value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBlendOperationAdd, GPUBlendOperationAdd), (js_GPUBlendOperationSubtract, GPUBlendOperationSubtract), (js_GPUBlendOperationReverseSubtract, GPUBlendOperationReverseSubtract), (js_GPUBlendOperationMin, GPUBlendOperationMin), (js_GPUBlendOperationMax, GPUBlendOperationMax)]
+
+instance FromJSVal GPUBlendOperation where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBlendOperationAdd, GPUBlendOperationAdd), (js_GPUBlendOperationSubtract, GPUBlendOperationSubtract), (js_GPUBlendOperationReverseSubtract, GPUBlendOperationReverseSubtract), (js_GPUBlendOperationMin, GPUBlendOperationMin), (js_GPUBlendOperationMax, GPUBlendOperationMax)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUBlendOperationAdd :: JSString
+js_GPUBlendOperationAdd = "add"
+js_GPUBlendOperationSubtract :: JSString
+js_GPUBlendOperationSubtract = "subtract"
+js_GPUBlendOperationReverseSubtract :: JSString
+js_GPUBlendOperationReverseSubtract = "reverse-subtract"
+js_GPUBlendOperationMin :: JSString
+js_GPUBlendOperationMin = "min"
+js_GPUBlendOperationMax :: JSString
+js_GPUBlendOperationMax = "max"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUBufferBindingType> (webgpu)
+data GPUBufferBindingType = GPUBufferBindingTypeUniform
+    | GPUBufferBindingTypeStorage
+    | GPUBufferBindingTypeReadOnlyStorage
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUBufferBindingType where
+  pToJSVal x = pToJSVal (case x of
+    GPUBufferBindingTypeUniform -> js_GPUBufferBindingTypeUniform
+    GPUBufferBindingTypeStorage -> js_GPUBufferBindingTypeStorage
+    GPUBufferBindingTypeReadOnlyStorage -> js_GPUBufferBindingTypeReadOnlyStorage
+    )
+
+instance ToJSVal GPUBufferBindingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUBufferBindingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUBufferBindingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBufferBindingTypeUniform, GPUBufferBindingTypeUniform), (js_GPUBufferBindingTypeStorage, GPUBufferBindingTypeStorage), (js_GPUBufferBindingTypeReadOnlyStorage, GPUBufferBindingTypeReadOnlyStorage)]
+
+instance FromJSVal GPUBufferBindingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBufferBindingTypeUniform, GPUBufferBindingTypeUniform), (js_GPUBufferBindingTypeStorage, GPUBufferBindingTypeStorage), (js_GPUBufferBindingTypeReadOnlyStorage, GPUBufferBindingTypeReadOnlyStorage)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUBufferBindingTypeUniform :: JSString
+js_GPUBufferBindingTypeUniform = "uniform"
+js_GPUBufferBindingTypeStorage :: JSString
+js_GPUBufferBindingTypeStorage = "storage"
+js_GPUBufferBindingTypeReadOnlyStorage :: JSString
+js_GPUBufferBindingTypeReadOnlyStorage = "read-only-storage"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUBufferMapState> (webgpu)
+data GPUBufferMapState = GPUBufferMapStateUnmapped
+    | GPUBufferMapStatePending
+    | GPUBufferMapStateMapped
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUBufferMapState where
+  pToJSVal x = pToJSVal (case x of
+    GPUBufferMapStateUnmapped -> js_GPUBufferMapStateUnmapped
+    GPUBufferMapStatePending -> js_GPUBufferMapStatePending
+    GPUBufferMapStateMapped -> js_GPUBufferMapStateMapped
+    )
+
+instance ToJSVal GPUBufferMapState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUBufferMapState where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUBufferMapState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBufferMapStateUnmapped, GPUBufferMapStateUnmapped), (js_GPUBufferMapStatePending, GPUBufferMapStatePending), (js_GPUBufferMapStateMapped, GPUBufferMapStateMapped)]
+
+instance FromJSVal GPUBufferMapState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUBufferMapStateUnmapped, GPUBufferMapStateUnmapped), (js_GPUBufferMapStatePending, GPUBufferMapStatePending), (js_GPUBufferMapStateMapped, GPUBufferMapStateMapped)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUBufferMapStateUnmapped :: JSString
+js_GPUBufferMapStateUnmapped = "unmapped"
+js_GPUBufferMapStatePending :: JSString
+js_GPUBufferMapStatePending = "pending"
+js_GPUBufferMapStateMapped :: JSString
+js_GPUBufferMapStateMapped = "mapped"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUCanvasAlphaMode> (webgpu)
+data GPUCanvasAlphaMode = GPUCanvasAlphaModeOpaque
+    | GPUCanvasAlphaModePremultiplied
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUCanvasAlphaMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUCanvasAlphaModeOpaque -> js_GPUCanvasAlphaModeOpaque
+    GPUCanvasAlphaModePremultiplied -> js_GPUCanvasAlphaModePremultiplied
+    )
+
+instance ToJSVal GPUCanvasAlphaMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUCanvasAlphaMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUCanvasAlphaMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCanvasAlphaModeOpaque, GPUCanvasAlphaModeOpaque), (js_GPUCanvasAlphaModePremultiplied, GPUCanvasAlphaModePremultiplied)]
+
+instance FromJSVal GPUCanvasAlphaMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCanvasAlphaModeOpaque, GPUCanvasAlphaModeOpaque), (js_GPUCanvasAlphaModePremultiplied, GPUCanvasAlphaModePremultiplied)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUCanvasAlphaModeOpaque :: JSString
+js_GPUCanvasAlphaModeOpaque = "opaque"
+js_GPUCanvasAlphaModePremultiplied :: JSString
+js_GPUCanvasAlphaModePremultiplied = "premultiplied"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUCanvasToneMappingMode> (webgpu)
+data GPUCanvasToneMappingMode = GPUCanvasToneMappingModeStandard
+    | GPUCanvasToneMappingModeExtended
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUCanvasToneMappingMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUCanvasToneMappingModeStandard -> js_GPUCanvasToneMappingModeStandard
+    GPUCanvasToneMappingModeExtended -> js_GPUCanvasToneMappingModeExtended
+    )
+
+instance ToJSVal GPUCanvasToneMappingMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUCanvasToneMappingMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUCanvasToneMappingMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCanvasToneMappingModeStandard, GPUCanvasToneMappingModeStandard), (js_GPUCanvasToneMappingModeExtended, GPUCanvasToneMappingModeExtended)]
+
+instance FromJSVal GPUCanvasToneMappingMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCanvasToneMappingModeStandard, GPUCanvasToneMappingModeStandard), (js_GPUCanvasToneMappingModeExtended, GPUCanvasToneMappingModeExtended)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUCanvasToneMappingModeStandard :: JSString
+js_GPUCanvasToneMappingModeStandard = "standard"
+js_GPUCanvasToneMappingModeExtended :: JSString
+js_GPUCanvasToneMappingModeExtended = "extended"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUCompareFunction> (webgpu)
+data GPUCompareFunction = GPUCompareFunctionNever
+    | GPUCompareFunctionLess
+    | GPUCompareFunctionEqual
+    | GPUCompareFunctionLessEqual
+    | GPUCompareFunctionGreater
+    | GPUCompareFunctionNotEqual
+    | GPUCompareFunctionGreaterEqual
+    | GPUCompareFunctionAlways
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUCompareFunction where
+  pToJSVal x = pToJSVal (case x of
+    GPUCompareFunctionNever -> js_GPUCompareFunctionNever
+    GPUCompareFunctionLess -> js_GPUCompareFunctionLess
+    GPUCompareFunctionEqual -> js_GPUCompareFunctionEqual
+    GPUCompareFunctionLessEqual -> js_GPUCompareFunctionLessEqual
+    GPUCompareFunctionGreater -> js_GPUCompareFunctionGreater
+    GPUCompareFunctionNotEqual -> js_GPUCompareFunctionNotEqual
+    GPUCompareFunctionGreaterEqual -> js_GPUCompareFunctionGreaterEqual
+    GPUCompareFunctionAlways -> js_GPUCompareFunctionAlways
+    )
+
+instance ToJSVal GPUCompareFunction where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUCompareFunction where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUCompareFunction value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCompareFunctionNever, GPUCompareFunctionNever), (js_GPUCompareFunctionLess, GPUCompareFunctionLess), (js_GPUCompareFunctionEqual, GPUCompareFunctionEqual), (js_GPUCompareFunctionLessEqual, GPUCompareFunctionLessEqual), (js_GPUCompareFunctionGreater, GPUCompareFunctionGreater), (js_GPUCompareFunctionNotEqual, GPUCompareFunctionNotEqual), (js_GPUCompareFunctionGreaterEqual, GPUCompareFunctionGreaterEqual), (js_GPUCompareFunctionAlways, GPUCompareFunctionAlways)]
+
+instance FromJSVal GPUCompareFunction where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCompareFunctionNever, GPUCompareFunctionNever), (js_GPUCompareFunctionLess, GPUCompareFunctionLess), (js_GPUCompareFunctionEqual, GPUCompareFunctionEqual), (js_GPUCompareFunctionLessEqual, GPUCompareFunctionLessEqual), (js_GPUCompareFunctionGreater, GPUCompareFunctionGreater), (js_GPUCompareFunctionNotEqual, GPUCompareFunctionNotEqual), (js_GPUCompareFunctionGreaterEqual, GPUCompareFunctionGreaterEqual), (js_GPUCompareFunctionAlways, GPUCompareFunctionAlways)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUCompareFunctionNever :: JSString
+js_GPUCompareFunctionNever = "never"
+js_GPUCompareFunctionLess :: JSString
+js_GPUCompareFunctionLess = "less"
+js_GPUCompareFunctionEqual :: JSString
+js_GPUCompareFunctionEqual = "equal"
+js_GPUCompareFunctionLessEqual :: JSString
+js_GPUCompareFunctionLessEqual = "less-equal"
+js_GPUCompareFunctionGreater :: JSString
+js_GPUCompareFunctionGreater = "greater"
+js_GPUCompareFunctionNotEqual :: JSString
+js_GPUCompareFunctionNotEqual = "not-equal"
+js_GPUCompareFunctionGreaterEqual :: JSString
+js_GPUCompareFunctionGreaterEqual = "greater-equal"
+js_GPUCompareFunctionAlways :: JSString
+js_GPUCompareFunctionAlways = "always"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUCompilationMessageType> (webgpu)
+data GPUCompilationMessageType = GPUCompilationMessageTypeError
+    | GPUCompilationMessageTypeWarning
+    | GPUCompilationMessageTypeInfo
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUCompilationMessageType where
+  pToJSVal x = pToJSVal (case x of
+    GPUCompilationMessageTypeError -> js_GPUCompilationMessageTypeError
+    GPUCompilationMessageTypeWarning -> js_GPUCompilationMessageTypeWarning
+    GPUCompilationMessageTypeInfo -> js_GPUCompilationMessageTypeInfo
+    )
+
+instance ToJSVal GPUCompilationMessageType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUCompilationMessageType where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUCompilationMessageType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCompilationMessageTypeError, GPUCompilationMessageTypeError), (js_GPUCompilationMessageTypeWarning, GPUCompilationMessageTypeWarning), (js_GPUCompilationMessageTypeInfo, GPUCompilationMessageTypeInfo)]
+
+instance FromJSVal GPUCompilationMessageType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCompilationMessageTypeError, GPUCompilationMessageTypeError), (js_GPUCompilationMessageTypeWarning, GPUCompilationMessageTypeWarning), (js_GPUCompilationMessageTypeInfo, GPUCompilationMessageTypeInfo)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUCompilationMessageTypeError :: JSString
+js_GPUCompilationMessageTypeError = "error"
+js_GPUCompilationMessageTypeWarning :: JSString
+js_GPUCompilationMessageTypeWarning = "warning"
+js_GPUCompilationMessageTypeInfo :: JSString
+js_GPUCompilationMessageTypeInfo = "info"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUCullMode> (webgpu)
+data GPUCullMode = GPUCullModeNone
+    | GPUCullModeFront
+    | GPUCullModeBack
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUCullMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUCullModeNone -> js_GPUCullModeNone
+    GPUCullModeFront -> js_GPUCullModeFront
+    GPUCullModeBack -> js_GPUCullModeBack
+    )
+
+instance ToJSVal GPUCullMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUCullMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUCullMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCullModeNone, GPUCullModeNone), (js_GPUCullModeFront, GPUCullModeFront), (js_GPUCullModeBack, GPUCullModeBack)]
+
+instance FromJSVal GPUCullMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUCullModeNone, GPUCullModeNone), (js_GPUCullModeFront, GPUCullModeFront), (js_GPUCullModeBack, GPUCullModeBack)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUCullModeNone :: JSString
+js_GPUCullModeNone = "none"
+js_GPUCullModeFront :: JSString
+js_GPUCullModeFront = "front"
+js_GPUCullModeBack :: JSString
+js_GPUCullModeBack = "back"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUDeviceLostReason> (webgpu)
+data GPUDeviceLostReason = GPUDeviceLostReasonUnknown
+    | GPUDeviceLostReasonDestroyed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUDeviceLostReason where
+  pToJSVal x = pToJSVal (case x of
+    GPUDeviceLostReasonUnknown -> js_GPUDeviceLostReasonUnknown
+    GPUDeviceLostReasonDestroyed -> js_GPUDeviceLostReasonDestroyed
+    )
+
+instance ToJSVal GPUDeviceLostReason where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUDeviceLostReason where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUDeviceLostReason value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUDeviceLostReasonUnknown, GPUDeviceLostReasonUnknown), (js_GPUDeviceLostReasonDestroyed, GPUDeviceLostReasonDestroyed)]
+
+instance FromJSVal GPUDeviceLostReason where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUDeviceLostReasonUnknown, GPUDeviceLostReasonUnknown), (js_GPUDeviceLostReasonDestroyed, GPUDeviceLostReasonDestroyed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUDeviceLostReasonUnknown :: JSString
+js_GPUDeviceLostReasonUnknown = "unknown"
+js_GPUDeviceLostReasonDestroyed :: JSString
+js_GPUDeviceLostReasonDestroyed = "destroyed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUErrorFilter> (webgpu)
+data GPUErrorFilter = GPUErrorFilterValidation
+    | GPUErrorFilterOutOfMemory
+    | GPUErrorFilterInternal
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUErrorFilter where
+  pToJSVal x = pToJSVal (case x of
+    GPUErrorFilterValidation -> js_GPUErrorFilterValidation
+    GPUErrorFilterOutOfMemory -> js_GPUErrorFilterOutOfMemory
+    GPUErrorFilterInternal -> js_GPUErrorFilterInternal
+    )
+
+instance ToJSVal GPUErrorFilter where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUErrorFilter where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUErrorFilter value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUErrorFilterValidation, GPUErrorFilterValidation), (js_GPUErrorFilterOutOfMemory, GPUErrorFilterOutOfMemory), (js_GPUErrorFilterInternal, GPUErrorFilterInternal)]
+
+instance FromJSVal GPUErrorFilter where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUErrorFilterValidation, GPUErrorFilterValidation), (js_GPUErrorFilterOutOfMemory, GPUErrorFilterOutOfMemory), (js_GPUErrorFilterInternal, GPUErrorFilterInternal)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUErrorFilterValidation :: JSString
+js_GPUErrorFilterValidation = "validation"
+js_GPUErrorFilterOutOfMemory :: JSString
+js_GPUErrorFilterOutOfMemory = "out-of-memory"
+js_GPUErrorFilterInternal :: JSString
+js_GPUErrorFilterInternal = "internal"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUFeatureName> (webgpu)
+data GPUFeatureName = GPUFeatureNameCoreFeaturesAndLimits
+    | GPUFeatureNameDepthClipControl
+    | GPUFeatureNameDepth32floatStencil8
+    | GPUFeatureNameTextureCompressionBc
+    | GPUFeatureNameTextureCompressionBcSliced3d
+    | GPUFeatureNameTextureCompressionEtc2
+    | GPUFeatureNameTextureCompressionAstc
+    | GPUFeatureNameTextureCompressionAstcSliced3d
+    | GPUFeatureNameTimestampQuery
+    | GPUFeatureNameIndirectFirstInstance
+    | GPUFeatureNameShaderF16
+    | GPUFeatureNameRg11b10ufloatRenderable
+    | GPUFeatureNameBgra8unormStorage
+    | GPUFeatureNameFloat32Filterable
+    | GPUFeatureNameFloat32Blendable
+    | GPUFeatureNameClipDistances
+    | GPUFeatureNameDualSourceBlending
+    | GPUFeatureNameSubgroups
+    | GPUFeatureNameTextureFormatsTier1
+    | GPUFeatureNameTextureFormatsTier2
+    | GPUFeatureNamePrimitiveIndex
+    | GPUFeatureNameTextureComponentSwizzle
+    | GPUFeatureNameSubgroupSizeControl
+    | GPUFeatureNameTextureCompressionUnaligned
+    | GPUFeatureNameAtomicVec2uMinMax
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUFeatureName where
+  pToJSVal x = pToJSVal (case x of
+    GPUFeatureNameCoreFeaturesAndLimits -> js_GPUFeatureNameCoreFeaturesAndLimits
+    GPUFeatureNameDepthClipControl -> js_GPUFeatureNameDepthClipControl
+    GPUFeatureNameDepth32floatStencil8 -> js_GPUFeatureNameDepth32floatStencil8
+    GPUFeatureNameTextureCompressionBc -> js_GPUFeatureNameTextureCompressionBc
+    GPUFeatureNameTextureCompressionBcSliced3d -> js_GPUFeatureNameTextureCompressionBcSliced3d
+    GPUFeatureNameTextureCompressionEtc2 -> js_GPUFeatureNameTextureCompressionEtc2
+    GPUFeatureNameTextureCompressionAstc -> js_GPUFeatureNameTextureCompressionAstc
+    GPUFeatureNameTextureCompressionAstcSliced3d -> js_GPUFeatureNameTextureCompressionAstcSliced3d
+    GPUFeatureNameTimestampQuery -> js_GPUFeatureNameTimestampQuery
+    GPUFeatureNameIndirectFirstInstance -> js_GPUFeatureNameIndirectFirstInstance
+    GPUFeatureNameShaderF16 -> js_GPUFeatureNameShaderF16
+    GPUFeatureNameRg11b10ufloatRenderable -> js_GPUFeatureNameRg11b10ufloatRenderable
+    GPUFeatureNameBgra8unormStorage -> js_GPUFeatureNameBgra8unormStorage
+    GPUFeatureNameFloat32Filterable -> js_GPUFeatureNameFloat32Filterable
+    GPUFeatureNameFloat32Blendable -> js_GPUFeatureNameFloat32Blendable
+    GPUFeatureNameClipDistances -> js_GPUFeatureNameClipDistances
+    GPUFeatureNameDualSourceBlending -> js_GPUFeatureNameDualSourceBlending
+    GPUFeatureNameSubgroups -> js_GPUFeatureNameSubgroups
+    GPUFeatureNameTextureFormatsTier1 -> js_GPUFeatureNameTextureFormatsTier1
+    GPUFeatureNameTextureFormatsTier2 -> js_GPUFeatureNameTextureFormatsTier2
+    GPUFeatureNamePrimitiveIndex -> js_GPUFeatureNamePrimitiveIndex
+    GPUFeatureNameTextureComponentSwizzle -> js_GPUFeatureNameTextureComponentSwizzle
+    GPUFeatureNameSubgroupSizeControl -> js_GPUFeatureNameSubgroupSizeControl
+    GPUFeatureNameTextureCompressionUnaligned -> js_GPUFeatureNameTextureCompressionUnaligned
+    GPUFeatureNameAtomicVec2uMinMax -> js_GPUFeatureNameAtomicVec2uMinMax
+    )
+
+instance ToJSVal GPUFeatureName where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUFeatureName where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUFeatureName value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUFeatureNameCoreFeaturesAndLimits, GPUFeatureNameCoreFeaturesAndLimits), (js_GPUFeatureNameDepthClipControl, GPUFeatureNameDepthClipControl), (js_GPUFeatureNameDepth32floatStencil8, GPUFeatureNameDepth32floatStencil8), (js_GPUFeatureNameTextureCompressionBc, GPUFeatureNameTextureCompressionBc), (js_GPUFeatureNameTextureCompressionBcSliced3d, GPUFeatureNameTextureCompressionBcSliced3d), (js_GPUFeatureNameTextureCompressionEtc2, GPUFeatureNameTextureCompressionEtc2), (js_GPUFeatureNameTextureCompressionAstc, GPUFeatureNameTextureCompressionAstc), (js_GPUFeatureNameTextureCompressionAstcSliced3d, GPUFeatureNameTextureCompressionAstcSliced3d), (js_GPUFeatureNameTimestampQuery, GPUFeatureNameTimestampQuery), (js_GPUFeatureNameIndirectFirstInstance, GPUFeatureNameIndirectFirstInstance), (js_GPUFeatureNameShaderF16, GPUFeatureNameShaderF16), (js_GPUFeatureNameRg11b10ufloatRenderable, GPUFeatureNameRg11b10ufloatRenderable), (js_GPUFeatureNameBgra8unormStorage, GPUFeatureNameBgra8unormStorage), (js_GPUFeatureNameFloat32Filterable, GPUFeatureNameFloat32Filterable), (js_GPUFeatureNameFloat32Blendable, GPUFeatureNameFloat32Blendable), (js_GPUFeatureNameClipDistances, GPUFeatureNameClipDistances), (js_GPUFeatureNameDualSourceBlending, GPUFeatureNameDualSourceBlending), (js_GPUFeatureNameSubgroups, GPUFeatureNameSubgroups), (js_GPUFeatureNameTextureFormatsTier1, GPUFeatureNameTextureFormatsTier1), (js_GPUFeatureNameTextureFormatsTier2, GPUFeatureNameTextureFormatsTier2), (js_GPUFeatureNamePrimitiveIndex, GPUFeatureNamePrimitiveIndex), (js_GPUFeatureNameTextureComponentSwizzle, GPUFeatureNameTextureComponentSwizzle), (js_GPUFeatureNameSubgroupSizeControl, GPUFeatureNameSubgroupSizeControl), (js_GPUFeatureNameTextureCompressionUnaligned, GPUFeatureNameTextureCompressionUnaligned), (js_GPUFeatureNameAtomicVec2uMinMax, GPUFeatureNameAtomicVec2uMinMax)]
+
+instance FromJSVal GPUFeatureName where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUFeatureNameCoreFeaturesAndLimits, GPUFeatureNameCoreFeaturesAndLimits), (js_GPUFeatureNameDepthClipControl, GPUFeatureNameDepthClipControl), (js_GPUFeatureNameDepth32floatStencil8, GPUFeatureNameDepth32floatStencil8), (js_GPUFeatureNameTextureCompressionBc, GPUFeatureNameTextureCompressionBc), (js_GPUFeatureNameTextureCompressionBcSliced3d, GPUFeatureNameTextureCompressionBcSliced3d), (js_GPUFeatureNameTextureCompressionEtc2, GPUFeatureNameTextureCompressionEtc2), (js_GPUFeatureNameTextureCompressionAstc, GPUFeatureNameTextureCompressionAstc), (js_GPUFeatureNameTextureCompressionAstcSliced3d, GPUFeatureNameTextureCompressionAstcSliced3d), (js_GPUFeatureNameTimestampQuery, GPUFeatureNameTimestampQuery), (js_GPUFeatureNameIndirectFirstInstance, GPUFeatureNameIndirectFirstInstance), (js_GPUFeatureNameShaderF16, GPUFeatureNameShaderF16), (js_GPUFeatureNameRg11b10ufloatRenderable, GPUFeatureNameRg11b10ufloatRenderable), (js_GPUFeatureNameBgra8unormStorage, GPUFeatureNameBgra8unormStorage), (js_GPUFeatureNameFloat32Filterable, GPUFeatureNameFloat32Filterable), (js_GPUFeatureNameFloat32Blendable, GPUFeatureNameFloat32Blendable), (js_GPUFeatureNameClipDistances, GPUFeatureNameClipDistances), (js_GPUFeatureNameDualSourceBlending, GPUFeatureNameDualSourceBlending), (js_GPUFeatureNameSubgroups, GPUFeatureNameSubgroups), (js_GPUFeatureNameTextureFormatsTier1, GPUFeatureNameTextureFormatsTier1), (js_GPUFeatureNameTextureFormatsTier2, GPUFeatureNameTextureFormatsTier2), (js_GPUFeatureNamePrimitiveIndex, GPUFeatureNamePrimitiveIndex), (js_GPUFeatureNameTextureComponentSwizzle, GPUFeatureNameTextureComponentSwizzle), (js_GPUFeatureNameSubgroupSizeControl, GPUFeatureNameSubgroupSizeControl), (js_GPUFeatureNameTextureCompressionUnaligned, GPUFeatureNameTextureCompressionUnaligned), (js_GPUFeatureNameAtomicVec2uMinMax, GPUFeatureNameAtomicVec2uMinMax)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUFeatureNameCoreFeaturesAndLimits :: JSString
+js_GPUFeatureNameCoreFeaturesAndLimits = "core-features-and-limits"
+js_GPUFeatureNameDepthClipControl :: JSString
+js_GPUFeatureNameDepthClipControl = "depth-clip-control"
+js_GPUFeatureNameDepth32floatStencil8 :: JSString
+js_GPUFeatureNameDepth32floatStencil8 = "depth32float-stencil8"
+js_GPUFeatureNameTextureCompressionBc :: JSString
+js_GPUFeatureNameTextureCompressionBc = "texture-compression-bc"
+js_GPUFeatureNameTextureCompressionBcSliced3d :: JSString
+js_GPUFeatureNameTextureCompressionBcSliced3d = "texture-compression-bc-sliced-3d"
+js_GPUFeatureNameTextureCompressionEtc2 :: JSString
+js_GPUFeatureNameTextureCompressionEtc2 = "texture-compression-etc2"
+js_GPUFeatureNameTextureCompressionAstc :: JSString
+js_GPUFeatureNameTextureCompressionAstc = "texture-compression-astc"
+js_GPUFeatureNameTextureCompressionAstcSliced3d :: JSString
+js_GPUFeatureNameTextureCompressionAstcSliced3d = "texture-compression-astc-sliced-3d"
+js_GPUFeatureNameTimestampQuery :: JSString
+js_GPUFeatureNameTimestampQuery = "timestamp-query"
+js_GPUFeatureNameIndirectFirstInstance :: JSString
+js_GPUFeatureNameIndirectFirstInstance = "indirect-first-instance"
+js_GPUFeatureNameShaderF16 :: JSString
+js_GPUFeatureNameShaderF16 = "shader-f16"
+js_GPUFeatureNameRg11b10ufloatRenderable :: JSString
+js_GPUFeatureNameRg11b10ufloatRenderable = "rg11b10ufloat-renderable"
+js_GPUFeatureNameBgra8unormStorage :: JSString
+js_GPUFeatureNameBgra8unormStorage = "bgra8unorm-storage"
+js_GPUFeatureNameFloat32Filterable :: JSString
+js_GPUFeatureNameFloat32Filterable = "float32-filterable"
+js_GPUFeatureNameFloat32Blendable :: JSString
+js_GPUFeatureNameFloat32Blendable = "float32-blendable"
+js_GPUFeatureNameClipDistances :: JSString
+js_GPUFeatureNameClipDistances = "clip-distances"
+js_GPUFeatureNameDualSourceBlending :: JSString
+js_GPUFeatureNameDualSourceBlending = "dual-source-blending"
+js_GPUFeatureNameSubgroups :: JSString
+js_GPUFeatureNameSubgroups = "subgroups"
+js_GPUFeatureNameTextureFormatsTier1 :: JSString
+js_GPUFeatureNameTextureFormatsTier1 = "texture-formats-tier1"
+js_GPUFeatureNameTextureFormatsTier2 :: JSString
+js_GPUFeatureNameTextureFormatsTier2 = "texture-formats-tier2"
+js_GPUFeatureNamePrimitiveIndex :: JSString
+js_GPUFeatureNamePrimitiveIndex = "primitive-index"
+js_GPUFeatureNameTextureComponentSwizzle :: JSString
+js_GPUFeatureNameTextureComponentSwizzle = "texture-component-swizzle"
+js_GPUFeatureNameSubgroupSizeControl :: JSString
+js_GPUFeatureNameSubgroupSizeControl = "subgroup-size-control"
+js_GPUFeatureNameTextureCompressionUnaligned :: JSString
+js_GPUFeatureNameTextureCompressionUnaligned = "texture-compression-unaligned"
+js_GPUFeatureNameAtomicVec2uMinMax :: JSString
+js_GPUFeatureNameAtomicVec2uMinMax = "atomic-vec2u-min-max"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUFilterMode> (webgpu)
+data GPUFilterMode = GPUFilterModeNearest
+    | GPUFilterModeLinear
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUFilterMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUFilterModeNearest -> js_GPUFilterModeNearest
+    GPUFilterModeLinear -> js_GPUFilterModeLinear
+    )
+
+instance ToJSVal GPUFilterMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUFilterMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUFilterMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUFilterModeNearest, GPUFilterModeNearest), (js_GPUFilterModeLinear, GPUFilterModeLinear)]
+
+instance FromJSVal GPUFilterMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUFilterModeNearest, GPUFilterModeNearest), (js_GPUFilterModeLinear, GPUFilterModeLinear)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUFilterModeNearest :: JSString
+js_GPUFilterModeNearest = "nearest"
+js_GPUFilterModeLinear :: JSString
+js_GPUFilterModeLinear = "linear"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUFrontFace> (webgpu)
+data GPUFrontFace = GPUFrontFaceCcw
+    | GPUFrontFaceCw
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUFrontFace where
+  pToJSVal x = pToJSVal (case x of
+    GPUFrontFaceCcw -> js_GPUFrontFaceCcw
+    GPUFrontFaceCw -> js_GPUFrontFaceCw
+    )
+
+instance ToJSVal GPUFrontFace where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUFrontFace where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUFrontFace value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUFrontFaceCcw, GPUFrontFaceCcw), (js_GPUFrontFaceCw, GPUFrontFaceCw)]
+
+instance FromJSVal GPUFrontFace where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUFrontFaceCcw, GPUFrontFaceCcw), (js_GPUFrontFaceCw, GPUFrontFaceCw)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUFrontFaceCcw :: JSString
+js_GPUFrontFaceCcw = "ccw"
+js_GPUFrontFaceCw :: JSString
+js_GPUFrontFaceCw = "cw"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUIndexFormat> (webgpu)
+data GPUIndexFormat = GPUIndexFormatUint16
+    | GPUIndexFormatUint32
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUIndexFormat where
+  pToJSVal x = pToJSVal (case x of
+    GPUIndexFormatUint16 -> js_GPUIndexFormatUint16
+    GPUIndexFormatUint32 -> js_GPUIndexFormatUint32
+    )
+
+instance ToJSVal GPUIndexFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUIndexFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUIndexFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUIndexFormatUint16, GPUIndexFormatUint16), (js_GPUIndexFormatUint32, GPUIndexFormatUint32)]
+
+instance FromJSVal GPUIndexFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUIndexFormatUint16, GPUIndexFormatUint16), (js_GPUIndexFormatUint32, GPUIndexFormatUint32)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUIndexFormatUint16 :: JSString
+js_GPUIndexFormatUint16 = "uint16"
+js_GPUIndexFormatUint32 :: JSString
+js_GPUIndexFormatUint32 = "uint32"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPULoadOp> (webgpu)
+data GPULoadOp = GPULoadOpLoad
+    | GPULoadOpClear
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPULoadOp where
+  pToJSVal x = pToJSVal (case x of
+    GPULoadOpLoad -> js_GPULoadOpLoad
+    GPULoadOpClear -> js_GPULoadOpClear
+    )
+
+instance ToJSVal GPULoadOp where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPULoadOp where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPULoadOp value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPULoadOpLoad, GPULoadOpLoad), (js_GPULoadOpClear, GPULoadOpClear)]
+
+instance FromJSVal GPULoadOp where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPULoadOpLoad, GPULoadOpLoad), (js_GPULoadOpClear, GPULoadOpClear)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPULoadOpLoad :: JSString
+js_GPULoadOpLoad = "load"
+js_GPULoadOpClear :: JSString
+js_GPULoadOpClear = "clear"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUMipmapFilterMode> (webgpu)
+data GPUMipmapFilterMode = GPUMipmapFilterModeNearest
+    | GPUMipmapFilterModeLinear
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUMipmapFilterMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUMipmapFilterModeNearest -> js_GPUMipmapFilterModeNearest
+    GPUMipmapFilterModeLinear -> js_GPUMipmapFilterModeLinear
+    )
+
+instance ToJSVal GPUMipmapFilterMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUMipmapFilterMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUMipmapFilterMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUMipmapFilterModeNearest, GPUMipmapFilterModeNearest), (js_GPUMipmapFilterModeLinear, GPUMipmapFilterModeLinear)]
+
+instance FromJSVal GPUMipmapFilterMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUMipmapFilterModeNearest, GPUMipmapFilterModeNearest), (js_GPUMipmapFilterModeLinear, GPUMipmapFilterModeLinear)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUMipmapFilterModeNearest :: JSString
+js_GPUMipmapFilterModeNearest = "nearest"
+js_GPUMipmapFilterModeLinear :: JSString
+js_GPUMipmapFilterModeLinear = "linear"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUPipelineErrorReason> (webgpu)
+data GPUPipelineErrorReason = GPUPipelineErrorReasonValidation
+    | GPUPipelineErrorReasonInternal
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUPipelineErrorReason where
+  pToJSVal x = pToJSVal (case x of
+    GPUPipelineErrorReasonValidation -> js_GPUPipelineErrorReasonValidation
+    GPUPipelineErrorReasonInternal -> js_GPUPipelineErrorReasonInternal
+    )
+
+instance ToJSVal GPUPipelineErrorReason where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUPipelineErrorReason where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUPipelineErrorReason value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUPipelineErrorReasonValidation, GPUPipelineErrorReasonValidation), (js_GPUPipelineErrorReasonInternal, GPUPipelineErrorReasonInternal)]
+
+instance FromJSVal GPUPipelineErrorReason where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUPipelineErrorReasonValidation, GPUPipelineErrorReasonValidation), (js_GPUPipelineErrorReasonInternal, GPUPipelineErrorReasonInternal)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUPipelineErrorReasonValidation :: JSString
+js_GPUPipelineErrorReasonValidation = "validation"
+js_GPUPipelineErrorReasonInternal :: JSString
+js_GPUPipelineErrorReasonInternal = "internal"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUPowerPreference> (webgpu)
+data GPUPowerPreference = GPUPowerPreferenceLowPower
+    | GPUPowerPreferenceHighPerformance
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUPowerPreference where
+  pToJSVal x = pToJSVal (case x of
+    GPUPowerPreferenceLowPower -> js_GPUPowerPreferenceLowPower
+    GPUPowerPreferenceHighPerformance -> js_GPUPowerPreferenceHighPerformance
+    )
+
+instance ToJSVal GPUPowerPreference where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUPowerPreference where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUPowerPreference value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUPowerPreferenceLowPower, GPUPowerPreferenceLowPower), (js_GPUPowerPreferenceHighPerformance, GPUPowerPreferenceHighPerformance)]
+
+instance FromJSVal GPUPowerPreference where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUPowerPreferenceLowPower, GPUPowerPreferenceLowPower), (js_GPUPowerPreferenceHighPerformance, GPUPowerPreferenceHighPerformance)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUPowerPreferenceLowPower :: JSString
+js_GPUPowerPreferenceLowPower = "low-power"
+js_GPUPowerPreferenceHighPerformance :: JSString
+js_GPUPowerPreferenceHighPerformance = "high-performance"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUPrimitiveTopology> (webgpu)
+data GPUPrimitiveTopology = GPUPrimitiveTopologyPointList
+    | GPUPrimitiveTopologyLineList
+    | GPUPrimitiveTopologyLineStrip
+    | GPUPrimitiveTopologyTriangleList
+    | GPUPrimitiveTopologyTriangleStrip
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUPrimitiveTopology where
+  pToJSVal x = pToJSVal (case x of
+    GPUPrimitiveTopologyPointList -> js_GPUPrimitiveTopologyPointList
+    GPUPrimitiveTopologyLineList -> js_GPUPrimitiveTopologyLineList
+    GPUPrimitiveTopologyLineStrip -> js_GPUPrimitiveTopologyLineStrip
+    GPUPrimitiveTopologyTriangleList -> js_GPUPrimitiveTopologyTriangleList
+    GPUPrimitiveTopologyTriangleStrip -> js_GPUPrimitiveTopologyTriangleStrip
+    )
+
+instance ToJSVal GPUPrimitiveTopology where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUPrimitiveTopology where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUPrimitiveTopology value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUPrimitiveTopologyPointList, GPUPrimitiveTopologyPointList), (js_GPUPrimitiveTopologyLineList, GPUPrimitiveTopologyLineList), (js_GPUPrimitiveTopologyLineStrip, GPUPrimitiveTopologyLineStrip), (js_GPUPrimitiveTopologyTriangleList, GPUPrimitiveTopologyTriangleList), (js_GPUPrimitiveTopologyTriangleStrip, GPUPrimitiveTopologyTriangleStrip)]
+
+instance FromJSVal GPUPrimitiveTopology where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUPrimitiveTopologyPointList, GPUPrimitiveTopologyPointList), (js_GPUPrimitiveTopologyLineList, GPUPrimitiveTopologyLineList), (js_GPUPrimitiveTopologyLineStrip, GPUPrimitiveTopologyLineStrip), (js_GPUPrimitiveTopologyTriangleList, GPUPrimitiveTopologyTriangleList), (js_GPUPrimitiveTopologyTriangleStrip, GPUPrimitiveTopologyTriangleStrip)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUPrimitiveTopologyPointList :: JSString
+js_GPUPrimitiveTopologyPointList = "point-list"
+js_GPUPrimitiveTopologyLineList :: JSString
+js_GPUPrimitiveTopologyLineList = "line-list"
+js_GPUPrimitiveTopologyLineStrip :: JSString
+js_GPUPrimitiveTopologyLineStrip = "line-strip"
+js_GPUPrimitiveTopologyTriangleList :: JSString
+js_GPUPrimitiveTopologyTriangleList = "triangle-list"
+js_GPUPrimitiveTopologyTriangleStrip :: JSString
+js_GPUPrimitiveTopologyTriangleStrip = "triangle-strip"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUQueryType> (webgpu)
+data GPUQueryType = GPUQueryTypeOcclusion
+    | GPUQueryTypeTimestamp
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUQueryType where
+  pToJSVal x = pToJSVal (case x of
+    GPUQueryTypeOcclusion -> js_GPUQueryTypeOcclusion
+    GPUQueryTypeTimestamp -> js_GPUQueryTypeTimestamp
+    )
+
+instance ToJSVal GPUQueryType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUQueryType where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUQueryType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUQueryTypeOcclusion, GPUQueryTypeOcclusion), (js_GPUQueryTypeTimestamp, GPUQueryTypeTimestamp)]
+
+instance FromJSVal GPUQueryType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUQueryTypeOcclusion, GPUQueryTypeOcclusion), (js_GPUQueryTypeTimestamp, GPUQueryTypeTimestamp)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUQueryTypeOcclusion :: JSString
+js_GPUQueryTypeOcclusion = "occlusion"
+js_GPUQueryTypeTimestamp :: JSString
+js_GPUQueryTypeTimestamp = "timestamp"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUSamplerBindingType> (webgpu)
+data GPUSamplerBindingType = GPUSamplerBindingTypeFiltering
+    | GPUSamplerBindingTypeNonFiltering
+    | GPUSamplerBindingTypeComparison
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUSamplerBindingType where
+  pToJSVal x = pToJSVal (case x of
+    GPUSamplerBindingTypeFiltering -> js_GPUSamplerBindingTypeFiltering
+    GPUSamplerBindingTypeNonFiltering -> js_GPUSamplerBindingTypeNonFiltering
+    GPUSamplerBindingTypeComparison -> js_GPUSamplerBindingTypeComparison
+    )
+
+instance ToJSVal GPUSamplerBindingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUSamplerBindingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUSamplerBindingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUSamplerBindingTypeFiltering, GPUSamplerBindingTypeFiltering), (js_GPUSamplerBindingTypeNonFiltering, GPUSamplerBindingTypeNonFiltering), (js_GPUSamplerBindingTypeComparison, GPUSamplerBindingTypeComparison)]
+
+instance FromJSVal GPUSamplerBindingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUSamplerBindingTypeFiltering, GPUSamplerBindingTypeFiltering), (js_GPUSamplerBindingTypeNonFiltering, GPUSamplerBindingTypeNonFiltering), (js_GPUSamplerBindingTypeComparison, GPUSamplerBindingTypeComparison)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUSamplerBindingTypeFiltering :: JSString
+js_GPUSamplerBindingTypeFiltering = "filtering"
+js_GPUSamplerBindingTypeNonFiltering :: JSString
+js_GPUSamplerBindingTypeNonFiltering = "non-filtering"
+js_GPUSamplerBindingTypeComparison :: JSString
+js_GPUSamplerBindingTypeComparison = "comparison"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUStencilOperation> (webgpu)
+data GPUStencilOperation = GPUStencilOperationKeep
+    | GPUStencilOperationZero
+    | GPUStencilOperationReplace
+    | GPUStencilOperationInvert
+    | GPUStencilOperationIncrementClamp
+    | GPUStencilOperationDecrementClamp
+    | GPUStencilOperationIncrementWrap
+    | GPUStencilOperationDecrementWrap
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUStencilOperation where
+  pToJSVal x = pToJSVal (case x of
+    GPUStencilOperationKeep -> js_GPUStencilOperationKeep
+    GPUStencilOperationZero -> js_GPUStencilOperationZero
+    GPUStencilOperationReplace -> js_GPUStencilOperationReplace
+    GPUStencilOperationInvert -> js_GPUStencilOperationInvert
+    GPUStencilOperationIncrementClamp -> js_GPUStencilOperationIncrementClamp
+    GPUStencilOperationDecrementClamp -> js_GPUStencilOperationDecrementClamp
+    GPUStencilOperationIncrementWrap -> js_GPUStencilOperationIncrementWrap
+    GPUStencilOperationDecrementWrap -> js_GPUStencilOperationDecrementWrap
+    )
+
+instance ToJSVal GPUStencilOperation where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUStencilOperation where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUStencilOperation value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUStencilOperationKeep, GPUStencilOperationKeep), (js_GPUStencilOperationZero, GPUStencilOperationZero), (js_GPUStencilOperationReplace, GPUStencilOperationReplace), (js_GPUStencilOperationInvert, GPUStencilOperationInvert), (js_GPUStencilOperationIncrementClamp, GPUStencilOperationIncrementClamp), (js_GPUStencilOperationDecrementClamp, GPUStencilOperationDecrementClamp), (js_GPUStencilOperationIncrementWrap, GPUStencilOperationIncrementWrap), (js_GPUStencilOperationDecrementWrap, GPUStencilOperationDecrementWrap)]
+
+instance FromJSVal GPUStencilOperation where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUStencilOperationKeep, GPUStencilOperationKeep), (js_GPUStencilOperationZero, GPUStencilOperationZero), (js_GPUStencilOperationReplace, GPUStencilOperationReplace), (js_GPUStencilOperationInvert, GPUStencilOperationInvert), (js_GPUStencilOperationIncrementClamp, GPUStencilOperationIncrementClamp), (js_GPUStencilOperationDecrementClamp, GPUStencilOperationDecrementClamp), (js_GPUStencilOperationIncrementWrap, GPUStencilOperationIncrementWrap), (js_GPUStencilOperationDecrementWrap, GPUStencilOperationDecrementWrap)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUStencilOperationKeep :: JSString
+js_GPUStencilOperationKeep = "keep"
+js_GPUStencilOperationZero :: JSString
+js_GPUStencilOperationZero = "zero"
+js_GPUStencilOperationReplace :: JSString
+js_GPUStencilOperationReplace = "replace"
+js_GPUStencilOperationInvert :: JSString
+js_GPUStencilOperationInvert = "invert"
+js_GPUStencilOperationIncrementClamp :: JSString
+js_GPUStencilOperationIncrementClamp = "increment-clamp"
+js_GPUStencilOperationDecrementClamp :: JSString
+js_GPUStencilOperationDecrementClamp = "decrement-clamp"
+js_GPUStencilOperationIncrementWrap :: JSString
+js_GPUStencilOperationIncrementWrap = "increment-wrap"
+js_GPUStencilOperationDecrementWrap :: JSString
+js_GPUStencilOperationDecrementWrap = "decrement-wrap"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUStorageTextureAccess> (webgpu)
+data GPUStorageTextureAccess = GPUStorageTextureAccessWriteOnly
+    | GPUStorageTextureAccessReadOnly
+    | GPUStorageTextureAccessReadWrite
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUStorageTextureAccess where
+  pToJSVal x = pToJSVal (case x of
+    GPUStorageTextureAccessWriteOnly -> js_GPUStorageTextureAccessWriteOnly
+    GPUStorageTextureAccessReadOnly -> js_GPUStorageTextureAccessReadOnly
+    GPUStorageTextureAccessReadWrite -> js_GPUStorageTextureAccessReadWrite
+    )
+
+instance ToJSVal GPUStorageTextureAccess where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUStorageTextureAccess where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUStorageTextureAccess value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUStorageTextureAccessWriteOnly, GPUStorageTextureAccessWriteOnly), (js_GPUStorageTextureAccessReadOnly, GPUStorageTextureAccessReadOnly), (js_GPUStorageTextureAccessReadWrite, GPUStorageTextureAccessReadWrite)]
+
+instance FromJSVal GPUStorageTextureAccess where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUStorageTextureAccessWriteOnly, GPUStorageTextureAccessWriteOnly), (js_GPUStorageTextureAccessReadOnly, GPUStorageTextureAccessReadOnly), (js_GPUStorageTextureAccessReadWrite, GPUStorageTextureAccessReadWrite)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUStorageTextureAccessWriteOnly :: JSString
+js_GPUStorageTextureAccessWriteOnly = "write-only"
+js_GPUStorageTextureAccessReadOnly :: JSString
+js_GPUStorageTextureAccessReadOnly = "read-only"
+js_GPUStorageTextureAccessReadWrite :: JSString
+js_GPUStorageTextureAccessReadWrite = "read-write"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUStoreOp> (webgpu)
+data GPUStoreOp = GPUStoreOpStore
+    | GPUStoreOpDiscard
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUStoreOp where
+  pToJSVal x = pToJSVal (case x of
+    GPUStoreOpStore -> js_GPUStoreOpStore
+    GPUStoreOpDiscard -> js_GPUStoreOpDiscard
+    )
+
+instance ToJSVal GPUStoreOp where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUStoreOp where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUStoreOp value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUStoreOpStore, GPUStoreOpStore), (js_GPUStoreOpDiscard, GPUStoreOpDiscard)]
+
+instance FromJSVal GPUStoreOp where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUStoreOpStore, GPUStoreOpStore), (js_GPUStoreOpDiscard, GPUStoreOpDiscard)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUStoreOpStore :: JSString
+js_GPUStoreOpStore = "store"
+js_GPUStoreOpDiscard :: JSString
+js_GPUStoreOpDiscard = "discard"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUTextureAspect> (webgpu)
+data GPUTextureAspect = GPUTextureAspectAll
+    | GPUTextureAspectStencilOnly
+    | GPUTextureAspectDepthOnly
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUTextureAspect where
+  pToJSVal x = pToJSVal (case x of
+    GPUTextureAspectAll -> js_GPUTextureAspectAll
+    GPUTextureAspectStencilOnly -> js_GPUTextureAspectStencilOnly
+    GPUTextureAspectDepthOnly -> js_GPUTextureAspectDepthOnly
+    )
+
+instance ToJSVal GPUTextureAspect where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUTextureAspect where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUTextureAspect value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureAspectAll, GPUTextureAspectAll), (js_GPUTextureAspectStencilOnly, GPUTextureAspectStencilOnly), (js_GPUTextureAspectDepthOnly, GPUTextureAspectDepthOnly)]
+
+instance FromJSVal GPUTextureAspect where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureAspectAll, GPUTextureAspectAll), (js_GPUTextureAspectStencilOnly, GPUTextureAspectStencilOnly), (js_GPUTextureAspectDepthOnly, GPUTextureAspectDepthOnly)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUTextureAspectAll :: JSString
+js_GPUTextureAspectAll = "all"
+js_GPUTextureAspectStencilOnly :: JSString
+js_GPUTextureAspectStencilOnly = "stencil-only"
+js_GPUTextureAspectDepthOnly :: JSString
+js_GPUTextureAspectDepthOnly = "depth-only"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUTextureDimension> (webgpu)
+data GPUTextureDimension = GPUTextureDimension1d
+    | GPUTextureDimension2d
+    | GPUTextureDimension3d
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUTextureDimension where
+  pToJSVal x = pToJSVal (case x of
+    GPUTextureDimension1d -> js_GPUTextureDimension1d
+    GPUTextureDimension2d -> js_GPUTextureDimension2d
+    GPUTextureDimension3d -> js_GPUTextureDimension3d
+    )
+
+instance ToJSVal GPUTextureDimension where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUTextureDimension where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUTextureDimension value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureDimension1d, GPUTextureDimension1d), (js_GPUTextureDimension2d, GPUTextureDimension2d), (js_GPUTextureDimension3d, GPUTextureDimension3d)]
+
+instance FromJSVal GPUTextureDimension where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureDimension1d, GPUTextureDimension1d), (js_GPUTextureDimension2d, GPUTextureDimension2d), (js_GPUTextureDimension3d, GPUTextureDimension3d)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUTextureDimension1d :: JSString
+js_GPUTextureDimension1d = "1d"
+js_GPUTextureDimension2d :: JSString
+js_GPUTextureDimension2d = "2d"
+js_GPUTextureDimension3d :: JSString
+js_GPUTextureDimension3d = "3d"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUTextureFormat> (webgpu)
+data GPUTextureFormat = GPUTextureFormatR8unorm
+    | GPUTextureFormatR8snorm
+    | GPUTextureFormatR8uint
+    | GPUTextureFormatR8sint
+    | GPUTextureFormatR16unorm
+    | GPUTextureFormatR16snorm
+    | GPUTextureFormatR16uint
+    | GPUTextureFormatR16sint
+    | GPUTextureFormatR16float
+    | GPUTextureFormatRg8unorm
+    | GPUTextureFormatRg8snorm
+    | GPUTextureFormatRg8uint
+    | GPUTextureFormatRg8sint
+    | GPUTextureFormatR32uint
+    | GPUTextureFormatR32sint
+    | GPUTextureFormatR32float
+    | GPUTextureFormatRg16unorm
+    | GPUTextureFormatRg16snorm
+    | GPUTextureFormatRg16uint
+    | GPUTextureFormatRg16sint
+    | GPUTextureFormatRg16float
+    | GPUTextureFormatRgba8unorm
+    | GPUTextureFormatRgba8unormSrgb
+    | GPUTextureFormatRgba8snorm
+    | GPUTextureFormatRgba8uint
+    | GPUTextureFormatRgba8sint
+    | GPUTextureFormatBgra8unorm
+    | GPUTextureFormatBgra8unormSrgb
+    | GPUTextureFormatRgb9e5ufloat
+    | GPUTextureFormatRgb10a2uint
+    | GPUTextureFormatRgb10a2unorm
+    | GPUTextureFormatRg11b10ufloat
+    | GPUTextureFormatRg32uint
+    | GPUTextureFormatRg32sint
+    | GPUTextureFormatRg32float
+    | GPUTextureFormatRgba16unorm
+    | GPUTextureFormatRgba16snorm
+    | GPUTextureFormatRgba16uint
+    | GPUTextureFormatRgba16sint
+    | GPUTextureFormatRgba16float
+    | GPUTextureFormatRgba32uint
+    | GPUTextureFormatRgba32sint
+    | GPUTextureFormatRgba32float
+    | GPUTextureFormatStencil8
+    | GPUTextureFormatDepth16unorm
+    | GPUTextureFormatDepth24plus
+    | GPUTextureFormatDepth24plusStencil8
+    | GPUTextureFormatDepth32float
+    | GPUTextureFormatDepth32floatStencil8
+    | GPUTextureFormatBc1RgbaUnorm
+    | GPUTextureFormatBc1RgbaUnormSrgb
+    | GPUTextureFormatBc2RgbaUnorm
+    | GPUTextureFormatBc2RgbaUnormSrgb
+    | GPUTextureFormatBc3RgbaUnorm
+    | GPUTextureFormatBc3RgbaUnormSrgb
+    | GPUTextureFormatBc4RUnorm
+    | GPUTextureFormatBc4RSnorm
+    | GPUTextureFormatBc5RgUnorm
+    | GPUTextureFormatBc5RgSnorm
+    | GPUTextureFormatBc6hRgbUfloat
+    | GPUTextureFormatBc6hRgbFloat
+    | GPUTextureFormatBc7RgbaUnorm
+    | GPUTextureFormatBc7RgbaUnormSrgb
+    | GPUTextureFormatEtc2Rgb8unorm
+    | GPUTextureFormatEtc2Rgb8unormSrgb
+    | GPUTextureFormatEtc2Rgb8a1unorm
+    | GPUTextureFormatEtc2Rgb8a1unormSrgb
+    | GPUTextureFormatEtc2Rgba8unorm
+    | GPUTextureFormatEtc2Rgba8unormSrgb
+    | GPUTextureFormatEacR11unorm
+    | GPUTextureFormatEacR11snorm
+    | GPUTextureFormatEacRg11unorm
+    | GPUTextureFormatEacRg11snorm
+    | GPUTextureFormatAstc4x4Unorm
+    | GPUTextureFormatAstc4x4UnormSrgb
+    | GPUTextureFormatAstc5x4Unorm
+    | GPUTextureFormatAstc5x4UnormSrgb
+    | GPUTextureFormatAstc5x5Unorm
+    | GPUTextureFormatAstc5x5UnormSrgb
+    | GPUTextureFormatAstc6x5Unorm
+    | GPUTextureFormatAstc6x5UnormSrgb
+    | GPUTextureFormatAstc6x6Unorm
+    | GPUTextureFormatAstc6x6UnormSrgb
+    | GPUTextureFormatAstc8x5Unorm
+    | GPUTextureFormatAstc8x5UnormSrgb
+    | GPUTextureFormatAstc8x6Unorm
+    | GPUTextureFormatAstc8x6UnormSrgb
+    | GPUTextureFormatAstc8x8Unorm
+    | GPUTextureFormatAstc8x8UnormSrgb
+    | GPUTextureFormatAstc10x5Unorm
+    | GPUTextureFormatAstc10x5UnormSrgb
+    | GPUTextureFormatAstc10x6Unorm
+    | GPUTextureFormatAstc10x6UnormSrgb
+    | GPUTextureFormatAstc10x8Unorm
+    | GPUTextureFormatAstc10x8UnormSrgb
+    | GPUTextureFormatAstc10x10Unorm
+    | GPUTextureFormatAstc10x10UnormSrgb
+    | GPUTextureFormatAstc12x10Unorm
+    | GPUTextureFormatAstc12x10UnormSrgb
+    | GPUTextureFormatAstc12x12Unorm
+    | GPUTextureFormatAstc12x12UnormSrgb
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUTextureFormat where
+  pToJSVal x = pToJSVal (case x of
+    GPUTextureFormatR8unorm -> js_GPUTextureFormatR8unorm
+    GPUTextureFormatR8snorm -> js_GPUTextureFormatR8snorm
+    GPUTextureFormatR8uint -> js_GPUTextureFormatR8uint
+    GPUTextureFormatR8sint -> js_GPUTextureFormatR8sint
+    GPUTextureFormatR16unorm -> js_GPUTextureFormatR16unorm
+    GPUTextureFormatR16snorm -> js_GPUTextureFormatR16snorm
+    GPUTextureFormatR16uint -> js_GPUTextureFormatR16uint
+    GPUTextureFormatR16sint -> js_GPUTextureFormatR16sint
+    GPUTextureFormatR16float -> js_GPUTextureFormatR16float
+    GPUTextureFormatRg8unorm -> js_GPUTextureFormatRg8unorm
+    GPUTextureFormatRg8snorm -> js_GPUTextureFormatRg8snorm
+    GPUTextureFormatRg8uint -> js_GPUTextureFormatRg8uint
+    GPUTextureFormatRg8sint -> js_GPUTextureFormatRg8sint
+    GPUTextureFormatR32uint -> js_GPUTextureFormatR32uint
+    GPUTextureFormatR32sint -> js_GPUTextureFormatR32sint
+    GPUTextureFormatR32float -> js_GPUTextureFormatR32float
+    GPUTextureFormatRg16unorm -> js_GPUTextureFormatRg16unorm
+    GPUTextureFormatRg16snorm -> js_GPUTextureFormatRg16snorm
+    GPUTextureFormatRg16uint -> js_GPUTextureFormatRg16uint
+    GPUTextureFormatRg16sint -> js_GPUTextureFormatRg16sint
+    GPUTextureFormatRg16float -> js_GPUTextureFormatRg16float
+    GPUTextureFormatRgba8unorm -> js_GPUTextureFormatRgba8unorm
+    GPUTextureFormatRgba8unormSrgb -> js_GPUTextureFormatRgba8unormSrgb
+    GPUTextureFormatRgba8snorm -> js_GPUTextureFormatRgba8snorm
+    GPUTextureFormatRgba8uint -> js_GPUTextureFormatRgba8uint
+    GPUTextureFormatRgba8sint -> js_GPUTextureFormatRgba8sint
+    GPUTextureFormatBgra8unorm -> js_GPUTextureFormatBgra8unorm
+    GPUTextureFormatBgra8unormSrgb -> js_GPUTextureFormatBgra8unormSrgb
+    GPUTextureFormatRgb9e5ufloat -> js_GPUTextureFormatRgb9e5ufloat
+    GPUTextureFormatRgb10a2uint -> js_GPUTextureFormatRgb10a2uint
+    GPUTextureFormatRgb10a2unorm -> js_GPUTextureFormatRgb10a2unorm
+    GPUTextureFormatRg11b10ufloat -> js_GPUTextureFormatRg11b10ufloat
+    GPUTextureFormatRg32uint -> js_GPUTextureFormatRg32uint
+    GPUTextureFormatRg32sint -> js_GPUTextureFormatRg32sint
+    GPUTextureFormatRg32float -> js_GPUTextureFormatRg32float
+    GPUTextureFormatRgba16unorm -> js_GPUTextureFormatRgba16unorm
+    GPUTextureFormatRgba16snorm -> js_GPUTextureFormatRgba16snorm
+    GPUTextureFormatRgba16uint -> js_GPUTextureFormatRgba16uint
+    GPUTextureFormatRgba16sint -> js_GPUTextureFormatRgba16sint
+    GPUTextureFormatRgba16float -> js_GPUTextureFormatRgba16float
+    GPUTextureFormatRgba32uint -> js_GPUTextureFormatRgba32uint
+    GPUTextureFormatRgba32sint -> js_GPUTextureFormatRgba32sint
+    GPUTextureFormatRgba32float -> js_GPUTextureFormatRgba32float
+    GPUTextureFormatStencil8 -> js_GPUTextureFormatStencil8
+    GPUTextureFormatDepth16unorm -> js_GPUTextureFormatDepth16unorm
+    GPUTextureFormatDepth24plus -> js_GPUTextureFormatDepth24plus
+    GPUTextureFormatDepth24plusStencil8 -> js_GPUTextureFormatDepth24plusStencil8
+    GPUTextureFormatDepth32float -> js_GPUTextureFormatDepth32float
+    GPUTextureFormatDepth32floatStencil8 -> js_GPUTextureFormatDepth32floatStencil8
+    GPUTextureFormatBc1RgbaUnorm -> js_GPUTextureFormatBc1RgbaUnorm
+    GPUTextureFormatBc1RgbaUnormSrgb -> js_GPUTextureFormatBc1RgbaUnormSrgb
+    GPUTextureFormatBc2RgbaUnorm -> js_GPUTextureFormatBc2RgbaUnorm
+    GPUTextureFormatBc2RgbaUnormSrgb -> js_GPUTextureFormatBc2RgbaUnormSrgb
+    GPUTextureFormatBc3RgbaUnorm -> js_GPUTextureFormatBc3RgbaUnorm
+    GPUTextureFormatBc3RgbaUnormSrgb -> js_GPUTextureFormatBc3RgbaUnormSrgb
+    GPUTextureFormatBc4RUnorm -> js_GPUTextureFormatBc4RUnorm
+    GPUTextureFormatBc4RSnorm -> js_GPUTextureFormatBc4RSnorm
+    GPUTextureFormatBc5RgUnorm -> js_GPUTextureFormatBc5RgUnorm
+    GPUTextureFormatBc5RgSnorm -> js_GPUTextureFormatBc5RgSnorm
+    GPUTextureFormatBc6hRgbUfloat -> js_GPUTextureFormatBc6hRgbUfloat
+    GPUTextureFormatBc6hRgbFloat -> js_GPUTextureFormatBc6hRgbFloat
+    GPUTextureFormatBc7RgbaUnorm -> js_GPUTextureFormatBc7RgbaUnorm
+    GPUTextureFormatBc7RgbaUnormSrgb -> js_GPUTextureFormatBc7RgbaUnormSrgb
+    GPUTextureFormatEtc2Rgb8unorm -> js_GPUTextureFormatEtc2Rgb8unorm
+    GPUTextureFormatEtc2Rgb8unormSrgb -> js_GPUTextureFormatEtc2Rgb8unormSrgb
+    GPUTextureFormatEtc2Rgb8a1unorm -> js_GPUTextureFormatEtc2Rgb8a1unorm
+    GPUTextureFormatEtc2Rgb8a1unormSrgb -> js_GPUTextureFormatEtc2Rgb8a1unormSrgb
+    GPUTextureFormatEtc2Rgba8unorm -> js_GPUTextureFormatEtc2Rgba8unorm
+    GPUTextureFormatEtc2Rgba8unormSrgb -> js_GPUTextureFormatEtc2Rgba8unormSrgb
+    GPUTextureFormatEacR11unorm -> js_GPUTextureFormatEacR11unorm
+    GPUTextureFormatEacR11snorm -> js_GPUTextureFormatEacR11snorm
+    GPUTextureFormatEacRg11unorm -> js_GPUTextureFormatEacRg11unorm
+    GPUTextureFormatEacRg11snorm -> js_GPUTextureFormatEacRg11snorm
+    GPUTextureFormatAstc4x4Unorm -> js_GPUTextureFormatAstc4x4Unorm
+    GPUTextureFormatAstc4x4UnormSrgb -> js_GPUTextureFormatAstc4x4UnormSrgb
+    GPUTextureFormatAstc5x4Unorm -> js_GPUTextureFormatAstc5x4Unorm
+    GPUTextureFormatAstc5x4UnormSrgb -> js_GPUTextureFormatAstc5x4UnormSrgb
+    GPUTextureFormatAstc5x5Unorm -> js_GPUTextureFormatAstc5x5Unorm
+    GPUTextureFormatAstc5x5UnormSrgb -> js_GPUTextureFormatAstc5x5UnormSrgb
+    GPUTextureFormatAstc6x5Unorm -> js_GPUTextureFormatAstc6x5Unorm
+    GPUTextureFormatAstc6x5UnormSrgb -> js_GPUTextureFormatAstc6x5UnormSrgb
+    GPUTextureFormatAstc6x6Unorm -> js_GPUTextureFormatAstc6x6Unorm
+    GPUTextureFormatAstc6x6UnormSrgb -> js_GPUTextureFormatAstc6x6UnormSrgb
+    GPUTextureFormatAstc8x5Unorm -> js_GPUTextureFormatAstc8x5Unorm
+    GPUTextureFormatAstc8x5UnormSrgb -> js_GPUTextureFormatAstc8x5UnormSrgb
+    GPUTextureFormatAstc8x6Unorm -> js_GPUTextureFormatAstc8x6Unorm
+    GPUTextureFormatAstc8x6UnormSrgb -> js_GPUTextureFormatAstc8x6UnormSrgb
+    GPUTextureFormatAstc8x8Unorm -> js_GPUTextureFormatAstc8x8Unorm
+    GPUTextureFormatAstc8x8UnormSrgb -> js_GPUTextureFormatAstc8x8UnormSrgb
+    GPUTextureFormatAstc10x5Unorm -> js_GPUTextureFormatAstc10x5Unorm
+    GPUTextureFormatAstc10x5UnormSrgb -> js_GPUTextureFormatAstc10x5UnormSrgb
+    GPUTextureFormatAstc10x6Unorm -> js_GPUTextureFormatAstc10x6Unorm
+    GPUTextureFormatAstc10x6UnormSrgb -> js_GPUTextureFormatAstc10x6UnormSrgb
+    GPUTextureFormatAstc10x8Unorm -> js_GPUTextureFormatAstc10x8Unorm
+    GPUTextureFormatAstc10x8UnormSrgb -> js_GPUTextureFormatAstc10x8UnormSrgb
+    GPUTextureFormatAstc10x10Unorm -> js_GPUTextureFormatAstc10x10Unorm
+    GPUTextureFormatAstc10x10UnormSrgb -> js_GPUTextureFormatAstc10x10UnormSrgb
+    GPUTextureFormatAstc12x10Unorm -> js_GPUTextureFormatAstc12x10Unorm
+    GPUTextureFormatAstc12x10UnormSrgb -> js_GPUTextureFormatAstc12x10UnormSrgb
+    GPUTextureFormatAstc12x12Unorm -> js_GPUTextureFormatAstc12x12Unorm
+    GPUTextureFormatAstc12x12UnormSrgb -> js_GPUTextureFormatAstc12x12UnormSrgb
+    )
+
+instance ToJSVal GPUTextureFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUTextureFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUTextureFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureFormatR8unorm, GPUTextureFormatR8unorm), (js_GPUTextureFormatR8snorm, GPUTextureFormatR8snorm), (js_GPUTextureFormatR8uint, GPUTextureFormatR8uint), (js_GPUTextureFormatR8sint, GPUTextureFormatR8sint), (js_GPUTextureFormatR16unorm, GPUTextureFormatR16unorm), (js_GPUTextureFormatR16snorm, GPUTextureFormatR16snorm), (js_GPUTextureFormatR16uint, GPUTextureFormatR16uint), (js_GPUTextureFormatR16sint, GPUTextureFormatR16sint), (js_GPUTextureFormatR16float, GPUTextureFormatR16float), (js_GPUTextureFormatRg8unorm, GPUTextureFormatRg8unorm), (js_GPUTextureFormatRg8snorm, GPUTextureFormatRg8snorm), (js_GPUTextureFormatRg8uint, GPUTextureFormatRg8uint), (js_GPUTextureFormatRg8sint, GPUTextureFormatRg8sint), (js_GPUTextureFormatR32uint, GPUTextureFormatR32uint), (js_GPUTextureFormatR32sint, GPUTextureFormatR32sint), (js_GPUTextureFormatR32float, GPUTextureFormatR32float), (js_GPUTextureFormatRg16unorm, GPUTextureFormatRg16unorm), (js_GPUTextureFormatRg16snorm, GPUTextureFormatRg16snorm), (js_GPUTextureFormatRg16uint, GPUTextureFormatRg16uint), (js_GPUTextureFormatRg16sint, GPUTextureFormatRg16sint), (js_GPUTextureFormatRg16float, GPUTextureFormatRg16float), (js_GPUTextureFormatRgba8unorm, GPUTextureFormatRgba8unorm), (js_GPUTextureFormatRgba8unormSrgb, GPUTextureFormatRgba8unormSrgb), (js_GPUTextureFormatRgba8snorm, GPUTextureFormatRgba8snorm), (js_GPUTextureFormatRgba8uint, GPUTextureFormatRgba8uint), (js_GPUTextureFormatRgba8sint, GPUTextureFormatRgba8sint), (js_GPUTextureFormatBgra8unorm, GPUTextureFormatBgra8unorm), (js_GPUTextureFormatBgra8unormSrgb, GPUTextureFormatBgra8unormSrgb), (js_GPUTextureFormatRgb9e5ufloat, GPUTextureFormatRgb9e5ufloat), (js_GPUTextureFormatRgb10a2uint, GPUTextureFormatRgb10a2uint), (js_GPUTextureFormatRgb10a2unorm, GPUTextureFormatRgb10a2unorm), (js_GPUTextureFormatRg11b10ufloat, GPUTextureFormatRg11b10ufloat), (js_GPUTextureFormatRg32uint, GPUTextureFormatRg32uint), (js_GPUTextureFormatRg32sint, GPUTextureFormatRg32sint), (js_GPUTextureFormatRg32float, GPUTextureFormatRg32float), (js_GPUTextureFormatRgba16unorm, GPUTextureFormatRgba16unorm), (js_GPUTextureFormatRgba16snorm, GPUTextureFormatRgba16snorm), (js_GPUTextureFormatRgba16uint, GPUTextureFormatRgba16uint), (js_GPUTextureFormatRgba16sint, GPUTextureFormatRgba16sint), (js_GPUTextureFormatRgba16float, GPUTextureFormatRgba16float), (js_GPUTextureFormatRgba32uint, GPUTextureFormatRgba32uint), (js_GPUTextureFormatRgba32sint, GPUTextureFormatRgba32sint), (js_GPUTextureFormatRgba32float, GPUTextureFormatRgba32float), (js_GPUTextureFormatStencil8, GPUTextureFormatStencil8), (js_GPUTextureFormatDepth16unorm, GPUTextureFormatDepth16unorm), (js_GPUTextureFormatDepth24plus, GPUTextureFormatDepth24plus), (js_GPUTextureFormatDepth24plusStencil8, GPUTextureFormatDepth24plusStencil8), (js_GPUTextureFormatDepth32float, GPUTextureFormatDepth32float), (js_GPUTextureFormatDepth32floatStencil8, GPUTextureFormatDepth32floatStencil8), (js_GPUTextureFormatBc1RgbaUnorm, GPUTextureFormatBc1RgbaUnorm), (js_GPUTextureFormatBc1RgbaUnormSrgb, GPUTextureFormatBc1RgbaUnormSrgb), (js_GPUTextureFormatBc2RgbaUnorm, GPUTextureFormatBc2RgbaUnorm), (js_GPUTextureFormatBc2RgbaUnormSrgb, GPUTextureFormatBc2RgbaUnormSrgb), (js_GPUTextureFormatBc3RgbaUnorm, GPUTextureFormatBc3RgbaUnorm), (js_GPUTextureFormatBc3RgbaUnormSrgb, GPUTextureFormatBc3RgbaUnormSrgb), (js_GPUTextureFormatBc4RUnorm, GPUTextureFormatBc4RUnorm), (js_GPUTextureFormatBc4RSnorm, GPUTextureFormatBc4RSnorm), (js_GPUTextureFormatBc5RgUnorm, GPUTextureFormatBc5RgUnorm), (js_GPUTextureFormatBc5RgSnorm, GPUTextureFormatBc5RgSnorm), (js_GPUTextureFormatBc6hRgbUfloat, GPUTextureFormatBc6hRgbUfloat), (js_GPUTextureFormatBc6hRgbFloat, GPUTextureFormatBc6hRgbFloat), (js_GPUTextureFormatBc7RgbaUnorm, GPUTextureFormatBc7RgbaUnorm), (js_GPUTextureFormatBc7RgbaUnormSrgb, GPUTextureFormatBc7RgbaUnormSrgb), (js_GPUTextureFormatEtc2Rgb8unorm, GPUTextureFormatEtc2Rgb8unorm), (js_GPUTextureFormatEtc2Rgb8unormSrgb, GPUTextureFormatEtc2Rgb8unormSrgb), (js_GPUTextureFormatEtc2Rgb8a1unorm, GPUTextureFormatEtc2Rgb8a1unorm), (js_GPUTextureFormatEtc2Rgb8a1unormSrgb, GPUTextureFormatEtc2Rgb8a1unormSrgb), (js_GPUTextureFormatEtc2Rgba8unorm, GPUTextureFormatEtc2Rgba8unorm), (js_GPUTextureFormatEtc2Rgba8unormSrgb, GPUTextureFormatEtc2Rgba8unormSrgb), (js_GPUTextureFormatEacR11unorm, GPUTextureFormatEacR11unorm), (js_GPUTextureFormatEacR11snorm, GPUTextureFormatEacR11snorm), (js_GPUTextureFormatEacRg11unorm, GPUTextureFormatEacRg11unorm), (js_GPUTextureFormatEacRg11snorm, GPUTextureFormatEacRg11snorm), (js_GPUTextureFormatAstc4x4Unorm, GPUTextureFormatAstc4x4Unorm), (js_GPUTextureFormatAstc4x4UnormSrgb, GPUTextureFormatAstc4x4UnormSrgb), (js_GPUTextureFormatAstc5x4Unorm, GPUTextureFormatAstc5x4Unorm), (js_GPUTextureFormatAstc5x4UnormSrgb, GPUTextureFormatAstc5x4UnormSrgb), (js_GPUTextureFormatAstc5x5Unorm, GPUTextureFormatAstc5x5Unorm), (js_GPUTextureFormatAstc5x5UnormSrgb, GPUTextureFormatAstc5x5UnormSrgb), (js_GPUTextureFormatAstc6x5Unorm, GPUTextureFormatAstc6x5Unorm), (js_GPUTextureFormatAstc6x5UnormSrgb, GPUTextureFormatAstc6x5UnormSrgb), (js_GPUTextureFormatAstc6x6Unorm, GPUTextureFormatAstc6x6Unorm), (js_GPUTextureFormatAstc6x6UnormSrgb, GPUTextureFormatAstc6x6UnormSrgb), (js_GPUTextureFormatAstc8x5Unorm, GPUTextureFormatAstc8x5Unorm), (js_GPUTextureFormatAstc8x5UnormSrgb, GPUTextureFormatAstc8x5UnormSrgb), (js_GPUTextureFormatAstc8x6Unorm, GPUTextureFormatAstc8x6Unorm), (js_GPUTextureFormatAstc8x6UnormSrgb, GPUTextureFormatAstc8x6UnormSrgb), (js_GPUTextureFormatAstc8x8Unorm, GPUTextureFormatAstc8x8Unorm), (js_GPUTextureFormatAstc8x8UnormSrgb, GPUTextureFormatAstc8x8UnormSrgb), (js_GPUTextureFormatAstc10x5Unorm, GPUTextureFormatAstc10x5Unorm), (js_GPUTextureFormatAstc10x5UnormSrgb, GPUTextureFormatAstc10x5UnormSrgb), (js_GPUTextureFormatAstc10x6Unorm, GPUTextureFormatAstc10x6Unorm), (js_GPUTextureFormatAstc10x6UnormSrgb, GPUTextureFormatAstc10x6UnormSrgb), (js_GPUTextureFormatAstc10x8Unorm, GPUTextureFormatAstc10x8Unorm), (js_GPUTextureFormatAstc10x8UnormSrgb, GPUTextureFormatAstc10x8UnormSrgb), (js_GPUTextureFormatAstc10x10Unorm, GPUTextureFormatAstc10x10Unorm), (js_GPUTextureFormatAstc10x10UnormSrgb, GPUTextureFormatAstc10x10UnormSrgb), (js_GPUTextureFormatAstc12x10Unorm, GPUTextureFormatAstc12x10Unorm), (js_GPUTextureFormatAstc12x10UnormSrgb, GPUTextureFormatAstc12x10UnormSrgb), (js_GPUTextureFormatAstc12x12Unorm, GPUTextureFormatAstc12x12Unorm), (js_GPUTextureFormatAstc12x12UnormSrgb, GPUTextureFormatAstc12x12UnormSrgb)]
+
+instance FromJSVal GPUTextureFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureFormatR8unorm, GPUTextureFormatR8unorm), (js_GPUTextureFormatR8snorm, GPUTextureFormatR8snorm), (js_GPUTextureFormatR8uint, GPUTextureFormatR8uint), (js_GPUTextureFormatR8sint, GPUTextureFormatR8sint), (js_GPUTextureFormatR16unorm, GPUTextureFormatR16unorm), (js_GPUTextureFormatR16snorm, GPUTextureFormatR16snorm), (js_GPUTextureFormatR16uint, GPUTextureFormatR16uint), (js_GPUTextureFormatR16sint, GPUTextureFormatR16sint), (js_GPUTextureFormatR16float, GPUTextureFormatR16float), (js_GPUTextureFormatRg8unorm, GPUTextureFormatRg8unorm), (js_GPUTextureFormatRg8snorm, GPUTextureFormatRg8snorm), (js_GPUTextureFormatRg8uint, GPUTextureFormatRg8uint), (js_GPUTextureFormatRg8sint, GPUTextureFormatRg8sint), (js_GPUTextureFormatR32uint, GPUTextureFormatR32uint), (js_GPUTextureFormatR32sint, GPUTextureFormatR32sint), (js_GPUTextureFormatR32float, GPUTextureFormatR32float), (js_GPUTextureFormatRg16unorm, GPUTextureFormatRg16unorm), (js_GPUTextureFormatRg16snorm, GPUTextureFormatRg16snorm), (js_GPUTextureFormatRg16uint, GPUTextureFormatRg16uint), (js_GPUTextureFormatRg16sint, GPUTextureFormatRg16sint), (js_GPUTextureFormatRg16float, GPUTextureFormatRg16float), (js_GPUTextureFormatRgba8unorm, GPUTextureFormatRgba8unorm), (js_GPUTextureFormatRgba8unormSrgb, GPUTextureFormatRgba8unormSrgb), (js_GPUTextureFormatRgba8snorm, GPUTextureFormatRgba8snorm), (js_GPUTextureFormatRgba8uint, GPUTextureFormatRgba8uint), (js_GPUTextureFormatRgba8sint, GPUTextureFormatRgba8sint), (js_GPUTextureFormatBgra8unorm, GPUTextureFormatBgra8unorm), (js_GPUTextureFormatBgra8unormSrgb, GPUTextureFormatBgra8unormSrgb), (js_GPUTextureFormatRgb9e5ufloat, GPUTextureFormatRgb9e5ufloat), (js_GPUTextureFormatRgb10a2uint, GPUTextureFormatRgb10a2uint), (js_GPUTextureFormatRgb10a2unorm, GPUTextureFormatRgb10a2unorm), (js_GPUTextureFormatRg11b10ufloat, GPUTextureFormatRg11b10ufloat), (js_GPUTextureFormatRg32uint, GPUTextureFormatRg32uint), (js_GPUTextureFormatRg32sint, GPUTextureFormatRg32sint), (js_GPUTextureFormatRg32float, GPUTextureFormatRg32float), (js_GPUTextureFormatRgba16unorm, GPUTextureFormatRgba16unorm), (js_GPUTextureFormatRgba16snorm, GPUTextureFormatRgba16snorm), (js_GPUTextureFormatRgba16uint, GPUTextureFormatRgba16uint), (js_GPUTextureFormatRgba16sint, GPUTextureFormatRgba16sint), (js_GPUTextureFormatRgba16float, GPUTextureFormatRgba16float), (js_GPUTextureFormatRgba32uint, GPUTextureFormatRgba32uint), (js_GPUTextureFormatRgba32sint, GPUTextureFormatRgba32sint), (js_GPUTextureFormatRgba32float, GPUTextureFormatRgba32float), (js_GPUTextureFormatStencil8, GPUTextureFormatStencil8), (js_GPUTextureFormatDepth16unorm, GPUTextureFormatDepth16unorm), (js_GPUTextureFormatDepth24plus, GPUTextureFormatDepth24plus), (js_GPUTextureFormatDepth24plusStencil8, GPUTextureFormatDepth24plusStencil8), (js_GPUTextureFormatDepth32float, GPUTextureFormatDepth32float), (js_GPUTextureFormatDepth32floatStencil8, GPUTextureFormatDepth32floatStencil8), (js_GPUTextureFormatBc1RgbaUnorm, GPUTextureFormatBc1RgbaUnorm), (js_GPUTextureFormatBc1RgbaUnormSrgb, GPUTextureFormatBc1RgbaUnormSrgb), (js_GPUTextureFormatBc2RgbaUnorm, GPUTextureFormatBc2RgbaUnorm), (js_GPUTextureFormatBc2RgbaUnormSrgb, GPUTextureFormatBc2RgbaUnormSrgb), (js_GPUTextureFormatBc3RgbaUnorm, GPUTextureFormatBc3RgbaUnorm), (js_GPUTextureFormatBc3RgbaUnormSrgb, GPUTextureFormatBc3RgbaUnormSrgb), (js_GPUTextureFormatBc4RUnorm, GPUTextureFormatBc4RUnorm), (js_GPUTextureFormatBc4RSnorm, GPUTextureFormatBc4RSnorm), (js_GPUTextureFormatBc5RgUnorm, GPUTextureFormatBc5RgUnorm), (js_GPUTextureFormatBc5RgSnorm, GPUTextureFormatBc5RgSnorm), (js_GPUTextureFormatBc6hRgbUfloat, GPUTextureFormatBc6hRgbUfloat), (js_GPUTextureFormatBc6hRgbFloat, GPUTextureFormatBc6hRgbFloat), (js_GPUTextureFormatBc7RgbaUnorm, GPUTextureFormatBc7RgbaUnorm), (js_GPUTextureFormatBc7RgbaUnormSrgb, GPUTextureFormatBc7RgbaUnormSrgb), (js_GPUTextureFormatEtc2Rgb8unorm, GPUTextureFormatEtc2Rgb8unorm), (js_GPUTextureFormatEtc2Rgb8unormSrgb, GPUTextureFormatEtc2Rgb8unormSrgb), (js_GPUTextureFormatEtc2Rgb8a1unorm, GPUTextureFormatEtc2Rgb8a1unorm), (js_GPUTextureFormatEtc2Rgb8a1unormSrgb, GPUTextureFormatEtc2Rgb8a1unormSrgb), (js_GPUTextureFormatEtc2Rgba8unorm, GPUTextureFormatEtc2Rgba8unorm), (js_GPUTextureFormatEtc2Rgba8unormSrgb, GPUTextureFormatEtc2Rgba8unormSrgb), (js_GPUTextureFormatEacR11unorm, GPUTextureFormatEacR11unorm), (js_GPUTextureFormatEacR11snorm, GPUTextureFormatEacR11snorm), (js_GPUTextureFormatEacRg11unorm, GPUTextureFormatEacRg11unorm), (js_GPUTextureFormatEacRg11snorm, GPUTextureFormatEacRg11snorm), (js_GPUTextureFormatAstc4x4Unorm, GPUTextureFormatAstc4x4Unorm), (js_GPUTextureFormatAstc4x4UnormSrgb, GPUTextureFormatAstc4x4UnormSrgb), (js_GPUTextureFormatAstc5x4Unorm, GPUTextureFormatAstc5x4Unorm), (js_GPUTextureFormatAstc5x4UnormSrgb, GPUTextureFormatAstc5x4UnormSrgb), (js_GPUTextureFormatAstc5x5Unorm, GPUTextureFormatAstc5x5Unorm), (js_GPUTextureFormatAstc5x5UnormSrgb, GPUTextureFormatAstc5x5UnormSrgb), (js_GPUTextureFormatAstc6x5Unorm, GPUTextureFormatAstc6x5Unorm), (js_GPUTextureFormatAstc6x5UnormSrgb, GPUTextureFormatAstc6x5UnormSrgb), (js_GPUTextureFormatAstc6x6Unorm, GPUTextureFormatAstc6x6Unorm), (js_GPUTextureFormatAstc6x6UnormSrgb, GPUTextureFormatAstc6x6UnormSrgb), (js_GPUTextureFormatAstc8x5Unorm, GPUTextureFormatAstc8x5Unorm), (js_GPUTextureFormatAstc8x5UnormSrgb, GPUTextureFormatAstc8x5UnormSrgb), (js_GPUTextureFormatAstc8x6Unorm, GPUTextureFormatAstc8x6Unorm), (js_GPUTextureFormatAstc8x6UnormSrgb, GPUTextureFormatAstc8x6UnormSrgb), (js_GPUTextureFormatAstc8x8Unorm, GPUTextureFormatAstc8x8Unorm), (js_GPUTextureFormatAstc8x8UnormSrgb, GPUTextureFormatAstc8x8UnormSrgb), (js_GPUTextureFormatAstc10x5Unorm, GPUTextureFormatAstc10x5Unorm), (js_GPUTextureFormatAstc10x5UnormSrgb, GPUTextureFormatAstc10x5UnormSrgb), (js_GPUTextureFormatAstc10x6Unorm, GPUTextureFormatAstc10x6Unorm), (js_GPUTextureFormatAstc10x6UnormSrgb, GPUTextureFormatAstc10x6UnormSrgb), (js_GPUTextureFormatAstc10x8Unorm, GPUTextureFormatAstc10x8Unorm), (js_GPUTextureFormatAstc10x8UnormSrgb, GPUTextureFormatAstc10x8UnormSrgb), (js_GPUTextureFormatAstc10x10Unorm, GPUTextureFormatAstc10x10Unorm), (js_GPUTextureFormatAstc10x10UnormSrgb, GPUTextureFormatAstc10x10UnormSrgb), (js_GPUTextureFormatAstc12x10Unorm, GPUTextureFormatAstc12x10Unorm), (js_GPUTextureFormatAstc12x10UnormSrgb, GPUTextureFormatAstc12x10UnormSrgb), (js_GPUTextureFormatAstc12x12Unorm, GPUTextureFormatAstc12x12Unorm), (js_GPUTextureFormatAstc12x12UnormSrgb, GPUTextureFormatAstc12x12UnormSrgb)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUTextureFormatR8unorm :: JSString
+js_GPUTextureFormatR8unorm = "r8unorm"
+js_GPUTextureFormatR8snorm :: JSString
+js_GPUTextureFormatR8snorm = "r8snorm"
+js_GPUTextureFormatR8uint :: JSString
+js_GPUTextureFormatR8uint = "r8uint"
+js_GPUTextureFormatR8sint :: JSString
+js_GPUTextureFormatR8sint = "r8sint"
+js_GPUTextureFormatR16unorm :: JSString
+js_GPUTextureFormatR16unorm = "r16unorm"
+js_GPUTextureFormatR16snorm :: JSString
+js_GPUTextureFormatR16snorm = "r16snorm"
+js_GPUTextureFormatR16uint :: JSString
+js_GPUTextureFormatR16uint = "r16uint"
+js_GPUTextureFormatR16sint :: JSString
+js_GPUTextureFormatR16sint = "r16sint"
+js_GPUTextureFormatR16float :: JSString
+js_GPUTextureFormatR16float = "r16float"
+js_GPUTextureFormatRg8unorm :: JSString
+js_GPUTextureFormatRg8unorm = "rg8unorm"
+js_GPUTextureFormatRg8snorm :: JSString
+js_GPUTextureFormatRg8snorm = "rg8snorm"
+js_GPUTextureFormatRg8uint :: JSString
+js_GPUTextureFormatRg8uint = "rg8uint"
+js_GPUTextureFormatRg8sint :: JSString
+js_GPUTextureFormatRg8sint = "rg8sint"
+js_GPUTextureFormatR32uint :: JSString
+js_GPUTextureFormatR32uint = "r32uint"
+js_GPUTextureFormatR32sint :: JSString
+js_GPUTextureFormatR32sint = "r32sint"
+js_GPUTextureFormatR32float :: JSString
+js_GPUTextureFormatR32float = "r32float"
+js_GPUTextureFormatRg16unorm :: JSString
+js_GPUTextureFormatRg16unorm = "rg16unorm"
+js_GPUTextureFormatRg16snorm :: JSString
+js_GPUTextureFormatRg16snorm = "rg16snorm"
+js_GPUTextureFormatRg16uint :: JSString
+js_GPUTextureFormatRg16uint = "rg16uint"
+js_GPUTextureFormatRg16sint :: JSString
+js_GPUTextureFormatRg16sint = "rg16sint"
+js_GPUTextureFormatRg16float :: JSString
+js_GPUTextureFormatRg16float = "rg16float"
+js_GPUTextureFormatRgba8unorm :: JSString
+js_GPUTextureFormatRgba8unorm = "rgba8unorm"
+js_GPUTextureFormatRgba8unormSrgb :: JSString
+js_GPUTextureFormatRgba8unormSrgb = "rgba8unorm-srgb"
+js_GPUTextureFormatRgba8snorm :: JSString
+js_GPUTextureFormatRgba8snorm = "rgba8snorm"
+js_GPUTextureFormatRgba8uint :: JSString
+js_GPUTextureFormatRgba8uint = "rgba8uint"
+js_GPUTextureFormatRgba8sint :: JSString
+js_GPUTextureFormatRgba8sint = "rgba8sint"
+js_GPUTextureFormatBgra8unorm :: JSString
+js_GPUTextureFormatBgra8unorm = "bgra8unorm"
+js_GPUTextureFormatBgra8unormSrgb :: JSString
+js_GPUTextureFormatBgra8unormSrgb = "bgra8unorm-srgb"
+js_GPUTextureFormatRgb9e5ufloat :: JSString
+js_GPUTextureFormatRgb9e5ufloat = "rgb9e5ufloat"
+js_GPUTextureFormatRgb10a2uint :: JSString
+js_GPUTextureFormatRgb10a2uint = "rgb10a2uint"
+js_GPUTextureFormatRgb10a2unorm :: JSString
+js_GPUTextureFormatRgb10a2unorm = "rgb10a2unorm"
+js_GPUTextureFormatRg11b10ufloat :: JSString
+js_GPUTextureFormatRg11b10ufloat = "rg11b10ufloat"
+js_GPUTextureFormatRg32uint :: JSString
+js_GPUTextureFormatRg32uint = "rg32uint"
+js_GPUTextureFormatRg32sint :: JSString
+js_GPUTextureFormatRg32sint = "rg32sint"
+js_GPUTextureFormatRg32float :: JSString
+js_GPUTextureFormatRg32float = "rg32float"
+js_GPUTextureFormatRgba16unorm :: JSString
+js_GPUTextureFormatRgba16unorm = "rgba16unorm"
+js_GPUTextureFormatRgba16snorm :: JSString
+js_GPUTextureFormatRgba16snorm = "rgba16snorm"
+js_GPUTextureFormatRgba16uint :: JSString
+js_GPUTextureFormatRgba16uint = "rgba16uint"
+js_GPUTextureFormatRgba16sint :: JSString
+js_GPUTextureFormatRgba16sint = "rgba16sint"
+js_GPUTextureFormatRgba16float :: JSString
+js_GPUTextureFormatRgba16float = "rgba16float"
+js_GPUTextureFormatRgba32uint :: JSString
+js_GPUTextureFormatRgba32uint = "rgba32uint"
+js_GPUTextureFormatRgba32sint :: JSString
+js_GPUTextureFormatRgba32sint = "rgba32sint"
+js_GPUTextureFormatRgba32float :: JSString
+js_GPUTextureFormatRgba32float = "rgba32float"
+js_GPUTextureFormatStencil8 :: JSString
+js_GPUTextureFormatStencil8 = "stencil8"
+js_GPUTextureFormatDepth16unorm :: JSString
+js_GPUTextureFormatDepth16unorm = "depth16unorm"
+js_GPUTextureFormatDepth24plus :: JSString
+js_GPUTextureFormatDepth24plus = "depth24plus"
+js_GPUTextureFormatDepth24plusStencil8 :: JSString
+js_GPUTextureFormatDepth24plusStencil8 = "depth24plus-stencil8"
+js_GPUTextureFormatDepth32float :: JSString
+js_GPUTextureFormatDepth32float = "depth32float"
+js_GPUTextureFormatDepth32floatStencil8 :: JSString
+js_GPUTextureFormatDepth32floatStencil8 = "depth32float-stencil8"
+js_GPUTextureFormatBc1RgbaUnorm :: JSString
+js_GPUTextureFormatBc1RgbaUnorm = "bc1-rgba-unorm"
+js_GPUTextureFormatBc1RgbaUnormSrgb :: JSString
+js_GPUTextureFormatBc1RgbaUnormSrgb = "bc1-rgba-unorm-srgb"
+js_GPUTextureFormatBc2RgbaUnorm :: JSString
+js_GPUTextureFormatBc2RgbaUnorm = "bc2-rgba-unorm"
+js_GPUTextureFormatBc2RgbaUnormSrgb :: JSString
+js_GPUTextureFormatBc2RgbaUnormSrgb = "bc2-rgba-unorm-srgb"
+js_GPUTextureFormatBc3RgbaUnorm :: JSString
+js_GPUTextureFormatBc3RgbaUnorm = "bc3-rgba-unorm"
+js_GPUTextureFormatBc3RgbaUnormSrgb :: JSString
+js_GPUTextureFormatBc3RgbaUnormSrgb = "bc3-rgba-unorm-srgb"
+js_GPUTextureFormatBc4RUnorm :: JSString
+js_GPUTextureFormatBc4RUnorm = "bc4-r-unorm"
+js_GPUTextureFormatBc4RSnorm :: JSString
+js_GPUTextureFormatBc4RSnorm = "bc4-r-snorm"
+js_GPUTextureFormatBc5RgUnorm :: JSString
+js_GPUTextureFormatBc5RgUnorm = "bc5-rg-unorm"
+js_GPUTextureFormatBc5RgSnorm :: JSString
+js_GPUTextureFormatBc5RgSnorm = "bc5-rg-snorm"
+js_GPUTextureFormatBc6hRgbUfloat :: JSString
+js_GPUTextureFormatBc6hRgbUfloat = "bc6h-rgb-ufloat"
+js_GPUTextureFormatBc6hRgbFloat :: JSString
+js_GPUTextureFormatBc6hRgbFloat = "bc6h-rgb-float"
+js_GPUTextureFormatBc7RgbaUnorm :: JSString
+js_GPUTextureFormatBc7RgbaUnorm = "bc7-rgba-unorm"
+js_GPUTextureFormatBc7RgbaUnormSrgb :: JSString
+js_GPUTextureFormatBc7RgbaUnormSrgb = "bc7-rgba-unorm-srgb"
+js_GPUTextureFormatEtc2Rgb8unorm :: JSString
+js_GPUTextureFormatEtc2Rgb8unorm = "etc2-rgb8unorm"
+js_GPUTextureFormatEtc2Rgb8unormSrgb :: JSString
+js_GPUTextureFormatEtc2Rgb8unormSrgb = "etc2-rgb8unorm-srgb"
+js_GPUTextureFormatEtc2Rgb8a1unorm :: JSString
+js_GPUTextureFormatEtc2Rgb8a1unorm = "etc2-rgb8a1unorm"
+js_GPUTextureFormatEtc2Rgb8a1unormSrgb :: JSString
+js_GPUTextureFormatEtc2Rgb8a1unormSrgb = "etc2-rgb8a1unorm-srgb"
+js_GPUTextureFormatEtc2Rgba8unorm :: JSString
+js_GPUTextureFormatEtc2Rgba8unorm = "etc2-rgba8unorm"
+js_GPUTextureFormatEtc2Rgba8unormSrgb :: JSString
+js_GPUTextureFormatEtc2Rgba8unormSrgb = "etc2-rgba8unorm-srgb"
+js_GPUTextureFormatEacR11unorm :: JSString
+js_GPUTextureFormatEacR11unorm = "eac-r11unorm"
+js_GPUTextureFormatEacR11snorm :: JSString
+js_GPUTextureFormatEacR11snorm = "eac-r11snorm"
+js_GPUTextureFormatEacRg11unorm :: JSString
+js_GPUTextureFormatEacRg11unorm = "eac-rg11unorm"
+js_GPUTextureFormatEacRg11snorm :: JSString
+js_GPUTextureFormatEacRg11snorm = "eac-rg11snorm"
+js_GPUTextureFormatAstc4x4Unorm :: JSString
+js_GPUTextureFormatAstc4x4Unorm = "astc-4x4-unorm"
+js_GPUTextureFormatAstc4x4UnormSrgb :: JSString
+js_GPUTextureFormatAstc4x4UnormSrgb = "astc-4x4-unorm-srgb"
+js_GPUTextureFormatAstc5x4Unorm :: JSString
+js_GPUTextureFormatAstc5x4Unorm = "astc-5x4-unorm"
+js_GPUTextureFormatAstc5x4UnormSrgb :: JSString
+js_GPUTextureFormatAstc5x4UnormSrgb = "astc-5x4-unorm-srgb"
+js_GPUTextureFormatAstc5x5Unorm :: JSString
+js_GPUTextureFormatAstc5x5Unorm = "astc-5x5-unorm"
+js_GPUTextureFormatAstc5x5UnormSrgb :: JSString
+js_GPUTextureFormatAstc5x5UnormSrgb = "astc-5x5-unorm-srgb"
+js_GPUTextureFormatAstc6x5Unorm :: JSString
+js_GPUTextureFormatAstc6x5Unorm = "astc-6x5-unorm"
+js_GPUTextureFormatAstc6x5UnormSrgb :: JSString
+js_GPUTextureFormatAstc6x5UnormSrgb = "astc-6x5-unorm-srgb"
+js_GPUTextureFormatAstc6x6Unorm :: JSString
+js_GPUTextureFormatAstc6x6Unorm = "astc-6x6-unorm"
+js_GPUTextureFormatAstc6x6UnormSrgb :: JSString
+js_GPUTextureFormatAstc6x6UnormSrgb = "astc-6x6-unorm-srgb"
+js_GPUTextureFormatAstc8x5Unorm :: JSString
+js_GPUTextureFormatAstc8x5Unorm = "astc-8x5-unorm"
+js_GPUTextureFormatAstc8x5UnormSrgb :: JSString
+js_GPUTextureFormatAstc8x5UnormSrgb = "astc-8x5-unorm-srgb"
+js_GPUTextureFormatAstc8x6Unorm :: JSString
+js_GPUTextureFormatAstc8x6Unorm = "astc-8x6-unorm"
+js_GPUTextureFormatAstc8x6UnormSrgb :: JSString
+js_GPUTextureFormatAstc8x6UnormSrgb = "astc-8x6-unorm-srgb"
+js_GPUTextureFormatAstc8x8Unorm :: JSString
+js_GPUTextureFormatAstc8x8Unorm = "astc-8x8-unorm"
+js_GPUTextureFormatAstc8x8UnormSrgb :: JSString
+js_GPUTextureFormatAstc8x8UnormSrgb = "astc-8x8-unorm-srgb"
+js_GPUTextureFormatAstc10x5Unorm :: JSString
+js_GPUTextureFormatAstc10x5Unorm = "astc-10x5-unorm"
+js_GPUTextureFormatAstc10x5UnormSrgb :: JSString
+js_GPUTextureFormatAstc10x5UnormSrgb = "astc-10x5-unorm-srgb"
+js_GPUTextureFormatAstc10x6Unorm :: JSString
+js_GPUTextureFormatAstc10x6Unorm = "astc-10x6-unorm"
+js_GPUTextureFormatAstc10x6UnormSrgb :: JSString
+js_GPUTextureFormatAstc10x6UnormSrgb = "astc-10x6-unorm-srgb"
+js_GPUTextureFormatAstc10x8Unorm :: JSString
+js_GPUTextureFormatAstc10x8Unorm = "astc-10x8-unorm"
+js_GPUTextureFormatAstc10x8UnormSrgb :: JSString
+js_GPUTextureFormatAstc10x8UnormSrgb = "astc-10x8-unorm-srgb"
+js_GPUTextureFormatAstc10x10Unorm :: JSString
+js_GPUTextureFormatAstc10x10Unorm = "astc-10x10-unorm"
+js_GPUTextureFormatAstc10x10UnormSrgb :: JSString
+js_GPUTextureFormatAstc10x10UnormSrgb = "astc-10x10-unorm-srgb"
+js_GPUTextureFormatAstc12x10Unorm :: JSString
+js_GPUTextureFormatAstc12x10Unorm = "astc-12x10-unorm"
+js_GPUTextureFormatAstc12x10UnormSrgb :: JSString
+js_GPUTextureFormatAstc12x10UnormSrgb = "astc-12x10-unorm-srgb"
+js_GPUTextureFormatAstc12x12Unorm :: JSString
+js_GPUTextureFormatAstc12x12Unorm = "astc-12x12-unorm"
+js_GPUTextureFormatAstc12x12UnormSrgb :: JSString
+js_GPUTextureFormatAstc12x12UnormSrgb = "astc-12x12-unorm-srgb"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUTextureSampleType> (webgpu)
+data GPUTextureSampleType = GPUTextureSampleTypeFloat
+    | GPUTextureSampleTypeUnfilterableFloat
+    | GPUTextureSampleTypeDepth
+    | GPUTextureSampleTypeSint
+    | GPUTextureSampleTypeUint
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUTextureSampleType where
+  pToJSVal x = pToJSVal (case x of
+    GPUTextureSampleTypeFloat -> js_GPUTextureSampleTypeFloat
+    GPUTextureSampleTypeUnfilterableFloat -> js_GPUTextureSampleTypeUnfilterableFloat
+    GPUTextureSampleTypeDepth -> js_GPUTextureSampleTypeDepth
+    GPUTextureSampleTypeSint -> js_GPUTextureSampleTypeSint
+    GPUTextureSampleTypeUint -> js_GPUTextureSampleTypeUint
+    )
+
+instance ToJSVal GPUTextureSampleType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUTextureSampleType where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUTextureSampleType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureSampleTypeFloat, GPUTextureSampleTypeFloat), (js_GPUTextureSampleTypeUnfilterableFloat, GPUTextureSampleTypeUnfilterableFloat), (js_GPUTextureSampleTypeDepth, GPUTextureSampleTypeDepth), (js_GPUTextureSampleTypeSint, GPUTextureSampleTypeSint), (js_GPUTextureSampleTypeUint, GPUTextureSampleTypeUint)]
+
+instance FromJSVal GPUTextureSampleType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureSampleTypeFloat, GPUTextureSampleTypeFloat), (js_GPUTextureSampleTypeUnfilterableFloat, GPUTextureSampleTypeUnfilterableFloat), (js_GPUTextureSampleTypeDepth, GPUTextureSampleTypeDepth), (js_GPUTextureSampleTypeSint, GPUTextureSampleTypeSint), (js_GPUTextureSampleTypeUint, GPUTextureSampleTypeUint)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUTextureSampleTypeFloat :: JSString
+js_GPUTextureSampleTypeFloat = "float"
+js_GPUTextureSampleTypeUnfilterableFloat :: JSString
+js_GPUTextureSampleTypeUnfilterableFloat = "unfilterable-float"
+js_GPUTextureSampleTypeDepth :: JSString
+js_GPUTextureSampleTypeDepth = "depth"
+js_GPUTextureSampleTypeSint :: JSString
+js_GPUTextureSampleTypeSint = "sint"
+js_GPUTextureSampleTypeUint :: JSString
+js_GPUTextureSampleTypeUint = "uint"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUTextureViewDimension> (webgpu)
+data GPUTextureViewDimension = GPUTextureViewDimension1d
+    | GPUTextureViewDimension2d
+    | GPUTextureViewDimension2dArray
+    | GPUTextureViewDimensionCube
+    | GPUTextureViewDimensionCubeArray
+    | GPUTextureViewDimension3d
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUTextureViewDimension where
+  pToJSVal x = pToJSVal (case x of
+    GPUTextureViewDimension1d -> js_GPUTextureViewDimension1d
+    GPUTextureViewDimension2d -> js_GPUTextureViewDimension2d
+    GPUTextureViewDimension2dArray -> js_GPUTextureViewDimension2dArray
+    GPUTextureViewDimensionCube -> js_GPUTextureViewDimensionCube
+    GPUTextureViewDimensionCubeArray -> js_GPUTextureViewDimensionCubeArray
+    GPUTextureViewDimension3d -> js_GPUTextureViewDimension3d
+    )
+
+instance ToJSVal GPUTextureViewDimension where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUTextureViewDimension where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUTextureViewDimension value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureViewDimension1d, GPUTextureViewDimension1d), (js_GPUTextureViewDimension2d, GPUTextureViewDimension2d), (js_GPUTextureViewDimension2dArray, GPUTextureViewDimension2dArray), (js_GPUTextureViewDimensionCube, GPUTextureViewDimensionCube), (js_GPUTextureViewDimensionCubeArray, GPUTextureViewDimensionCubeArray), (js_GPUTextureViewDimension3d, GPUTextureViewDimension3d)]
+
+instance FromJSVal GPUTextureViewDimension where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUTextureViewDimension1d, GPUTextureViewDimension1d), (js_GPUTextureViewDimension2d, GPUTextureViewDimension2d), (js_GPUTextureViewDimension2dArray, GPUTextureViewDimension2dArray), (js_GPUTextureViewDimensionCube, GPUTextureViewDimensionCube), (js_GPUTextureViewDimensionCubeArray, GPUTextureViewDimensionCubeArray), (js_GPUTextureViewDimension3d, GPUTextureViewDimension3d)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUTextureViewDimension1d :: JSString
+js_GPUTextureViewDimension1d = "1d"
+js_GPUTextureViewDimension2d :: JSString
+js_GPUTextureViewDimension2d = "2d"
+js_GPUTextureViewDimension2dArray :: JSString
+js_GPUTextureViewDimension2dArray = "2d-array"
+js_GPUTextureViewDimensionCube :: JSString
+js_GPUTextureViewDimensionCube = "cube"
+js_GPUTextureViewDimensionCubeArray :: JSString
+js_GPUTextureViewDimensionCubeArray = "cube-array"
+js_GPUTextureViewDimension3d :: JSString
+js_GPUTextureViewDimension3d = "3d"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUVertexFormat> (webgpu)
+data GPUVertexFormat = GPUVertexFormatUint8
+    | GPUVertexFormatUint8x2
+    | GPUVertexFormatUint8x4
+    | GPUVertexFormatSint8
+    | GPUVertexFormatSint8x2
+    | GPUVertexFormatSint8x4
+    | GPUVertexFormatUnorm8
+    | GPUVertexFormatUnorm8x2
+    | GPUVertexFormatUnorm8x4
+    | GPUVertexFormatSnorm8
+    | GPUVertexFormatSnorm8x2
+    | GPUVertexFormatSnorm8x4
+    | GPUVertexFormatUint16
+    | GPUVertexFormatUint16x2
+    | GPUVertexFormatUint16x4
+    | GPUVertexFormatSint16
+    | GPUVertexFormatSint16x2
+    | GPUVertexFormatSint16x4
+    | GPUVertexFormatUnorm16
+    | GPUVertexFormatUnorm16x2
+    | GPUVertexFormatUnorm16x4
+    | GPUVertexFormatSnorm16
+    | GPUVertexFormatSnorm16x2
+    | GPUVertexFormatSnorm16x4
+    | GPUVertexFormatFloat16
+    | GPUVertexFormatFloat16x2
+    | GPUVertexFormatFloat16x4
+    | GPUVertexFormatFloat32
+    | GPUVertexFormatFloat32x2
+    | GPUVertexFormatFloat32x3
+    | GPUVertexFormatFloat32x4
+    | GPUVertexFormatUint32
+    | GPUVertexFormatUint32x2
+    | GPUVertexFormatUint32x3
+    | GPUVertexFormatUint32x4
+    | GPUVertexFormatSint32
+    | GPUVertexFormatSint32x2
+    | GPUVertexFormatSint32x3
+    | GPUVertexFormatSint32x4
+    | GPUVertexFormatUnorm1010102
+    | GPUVertexFormatUnorm8x4Bgra
+    | GPUVertexFormatSnorm1010102
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUVertexFormat where
+  pToJSVal x = pToJSVal (case x of
+    GPUVertexFormatUint8 -> js_GPUVertexFormatUint8
+    GPUVertexFormatUint8x2 -> js_GPUVertexFormatUint8x2
+    GPUVertexFormatUint8x4 -> js_GPUVertexFormatUint8x4
+    GPUVertexFormatSint8 -> js_GPUVertexFormatSint8
+    GPUVertexFormatSint8x2 -> js_GPUVertexFormatSint8x2
+    GPUVertexFormatSint8x4 -> js_GPUVertexFormatSint8x4
+    GPUVertexFormatUnorm8 -> js_GPUVertexFormatUnorm8
+    GPUVertexFormatUnorm8x2 -> js_GPUVertexFormatUnorm8x2
+    GPUVertexFormatUnorm8x4 -> js_GPUVertexFormatUnorm8x4
+    GPUVertexFormatSnorm8 -> js_GPUVertexFormatSnorm8
+    GPUVertexFormatSnorm8x2 -> js_GPUVertexFormatSnorm8x2
+    GPUVertexFormatSnorm8x4 -> js_GPUVertexFormatSnorm8x4
+    GPUVertexFormatUint16 -> js_GPUVertexFormatUint16
+    GPUVertexFormatUint16x2 -> js_GPUVertexFormatUint16x2
+    GPUVertexFormatUint16x4 -> js_GPUVertexFormatUint16x4
+    GPUVertexFormatSint16 -> js_GPUVertexFormatSint16
+    GPUVertexFormatSint16x2 -> js_GPUVertexFormatSint16x2
+    GPUVertexFormatSint16x4 -> js_GPUVertexFormatSint16x4
+    GPUVertexFormatUnorm16 -> js_GPUVertexFormatUnorm16
+    GPUVertexFormatUnorm16x2 -> js_GPUVertexFormatUnorm16x2
+    GPUVertexFormatUnorm16x4 -> js_GPUVertexFormatUnorm16x4
+    GPUVertexFormatSnorm16 -> js_GPUVertexFormatSnorm16
+    GPUVertexFormatSnorm16x2 -> js_GPUVertexFormatSnorm16x2
+    GPUVertexFormatSnorm16x4 -> js_GPUVertexFormatSnorm16x4
+    GPUVertexFormatFloat16 -> js_GPUVertexFormatFloat16
+    GPUVertexFormatFloat16x2 -> js_GPUVertexFormatFloat16x2
+    GPUVertexFormatFloat16x4 -> js_GPUVertexFormatFloat16x4
+    GPUVertexFormatFloat32 -> js_GPUVertexFormatFloat32
+    GPUVertexFormatFloat32x2 -> js_GPUVertexFormatFloat32x2
+    GPUVertexFormatFloat32x3 -> js_GPUVertexFormatFloat32x3
+    GPUVertexFormatFloat32x4 -> js_GPUVertexFormatFloat32x4
+    GPUVertexFormatUint32 -> js_GPUVertexFormatUint32
+    GPUVertexFormatUint32x2 -> js_GPUVertexFormatUint32x2
+    GPUVertexFormatUint32x3 -> js_GPUVertexFormatUint32x3
+    GPUVertexFormatUint32x4 -> js_GPUVertexFormatUint32x4
+    GPUVertexFormatSint32 -> js_GPUVertexFormatSint32
+    GPUVertexFormatSint32x2 -> js_GPUVertexFormatSint32x2
+    GPUVertexFormatSint32x3 -> js_GPUVertexFormatSint32x3
+    GPUVertexFormatSint32x4 -> js_GPUVertexFormatSint32x4
+    GPUVertexFormatUnorm1010102 -> js_GPUVertexFormatUnorm1010102
+    GPUVertexFormatUnorm8x4Bgra -> js_GPUVertexFormatUnorm8x4Bgra
+    GPUVertexFormatSnorm1010102 -> js_GPUVertexFormatSnorm1010102
+    )
+
+instance ToJSVal GPUVertexFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUVertexFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUVertexFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUVertexFormatUint8, GPUVertexFormatUint8), (js_GPUVertexFormatUint8x2, GPUVertexFormatUint8x2), (js_GPUVertexFormatUint8x4, GPUVertexFormatUint8x4), (js_GPUVertexFormatSint8, GPUVertexFormatSint8), (js_GPUVertexFormatSint8x2, GPUVertexFormatSint8x2), (js_GPUVertexFormatSint8x4, GPUVertexFormatSint8x4), (js_GPUVertexFormatUnorm8, GPUVertexFormatUnorm8), (js_GPUVertexFormatUnorm8x2, GPUVertexFormatUnorm8x2), (js_GPUVertexFormatUnorm8x4, GPUVertexFormatUnorm8x4), (js_GPUVertexFormatSnorm8, GPUVertexFormatSnorm8), (js_GPUVertexFormatSnorm8x2, GPUVertexFormatSnorm8x2), (js_GPUVertexFormatSnorm8x4, GPUVertexFormatSnorm8x4), (js_GPUVertexFormatUint16, GPUVertexFormatUint16), (js_GPUVertexFormatUint16x2, GPUVertexFormatUint16x2), (js_GPUVertexFormatUint16x4, GPUVertexFormatUint16x4), (js_GPUVertexFormatSint16, GPUVertexFormatSint16), (js_GPUVertexFormatSint16x2, GPUVertexFormatSint16x2), (js_GPUVertexFormatSint16x4, GPUVertexFormatSint16x4), (js_GPUVertexFormatUnorm16, GPUVertexFormatUnorm16), (js_GPUVertexFormatUnorm16x2, GPUVertexFormatUnorm16x2), (js_GPUVertexFormatUnorm16x4, GPUVertexFormatUnorm16x4), (js_GPUVertexFormatSnorm16, GPUVertexFormatSnorm16), (js_GPUVertexFormatSnorm16x2, GPUVertexFormatSnorm16x2), (js_GPUVertexFormatSnorm16x4, GPUVertexFormatSnorm16x4), (js_GPUVertexFormatFloat16, GPUVertexFormatFloat16), (js_GPUVertexFormatFloat16x2, GPUVertexFormatFloat16x2), (js_GPUVertexFormatFloat16x4, GPUVertexFormatFloat16x4), (js_GPUVertexFormatFloat32, GPUVertexFormatFloat32), (js_GPUVertexFormatFloat32x2, GPUVertexFormatFloat32x2), (js_GPUVertexFormatFloat32x3, GPUVertexFormatFloat32x3), (js_GPUVertexFormatFloat32x4, GPUVertexFormatFloat32x4), (js_GPUVertexFormatUint32, GPUVertexFormatUint32), (js_GPUVertexFormatUint32x2, GPUVertexFormatUint32x2), (js_GPUVertexFormatUint32x3, GPUVertexFormatUint32x3), (js_GPUVertexFormatUint32x4, GPUVertexFormatUint32x4), (js_GPUVertexFormatSint32, GPUVertexFormatSint32), (js_GPUVertexFormatSint32x2, GPUVertexFormatSint32x2), (js_GPUVertexFormatSint32x3, GPUVertexFormatSint32x3), (js_GPUVertexFormatSint32x4, GPUVertexFormatSint32x4), (js_GPUVertexFormatUnorm1010102, GPUVertexFormatUnorm1010102), (js_GPUVertexFormatUnorm8x4Bgra, GPUVertexFormatUnorm8x4Bgra), (js_GPUVertexFormatSnorm1010102, GPUVertexFormatSnorm1010102)]
+
+instance FromJSVal GPUVertexFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUVertexFormatUint8, GPUVertexFormatUint8), (js_GPUVertexFormatUint8x2, GPUVertexFormatUint8x2), (js_GPUVertexFormatUint8x4, GPUVertexFormatUint8x4), (js_GPUVertexFormatSint8, GPUVertexFormatSint8), (js_GPUVertexFormatSint8x2, GPUVertexFormatSint8x2), (js_GPUVertexFormatSint8x4, GPUVertexFormatSint8x4), (js_GPUVertexFormatUnorm8, GPUVertexFormatUnorm8), (js_GPUVertexFormatUnorm8x2, GPUVertexFormatUnorm8x2), (js_GPUVertexFormatUnorm8x4, GPUVertexFormatUnorm8x4), (js_GPUVertexFormatSnorm8, GPUVertexFormatSnorm8), (js_GPUVertexFormatSnorm8x2, GPUVertexFormatSnorm8x2), (js_GPUVertexFormatSnorm8x4, GPUVertexFormatSnorm8x4), (js_GPUVertexFormatUint16, GPUVertexFormatUint16), (js_GPUVertexFormatUint16x2, GPUVertexFormatUint16x2), (js_GPUVertexFormatUint16x4, GPUVertexFormatUint16x4), (js_GPUVertexFormatSint16, GPUVertexFormatSint16), (js_GPUVertexFormatSint16x2, GPUVertexFormatSint16x2), (js_GPUVertexFormatSint16x4, GPUVertexFormatSint16x4), (js_GPUVertexFormatUnorm16, GPUVertexFormatUnorm16), (js_GPUVertexFormatUnorm16x2, GPUVertexFormatUnorm16x2), (js_GPUVertexFormatUnorm16x4, GPUVertexFormatUnorm16x4), (js_GPUVertexFormatSnorm16, GPUVertexFormatSnorm16), (js_GPUVertexFormatSnorm16x2, GPUVertexFormatSnorm16x2), (js_GPUVertexFormatSnorm16x4, GPUVertexFormatSnorm16x4), (js_GPUVertexFormatFloat16, GPUVertexFormatFloat16), (js_GPUVertexFormatFloat16x2, GPUVertexFormatFloat16x2), (js_GPUVertexFormatFloat16x4, GPUVertexFormatFloat16x4), (js_GPUVertexFormatFloat32, GPUVertexFormatFloat32), (js_GPUVertexFormatFloat32x2, GPUVertexFormatFloat32x2), (js_GPUVertexFormatFloat32x3, GPUVertexFormatFloat32x3), (js_GPUVertexFormatFloat32x4, GPUVertexFormatFloat32x4), (js_GPUVertexFormatUint32, GPUVertexFormatUint32), (js_GPUVertexFormatUint32x2, GPUVertexFormatUint32x2), (js_GPUVertexFormatUint32x3, GPUVertexFormatUint32x3), (js_GPUVertexFormatUint32x4, GPUVertexFormatUint32x4), (js_GPUVertexFormatSint32, GPUVertexFormatSint32), (js_GPUVertexFormatSint32x2, GPUVertexFormatSint32x2), (js_GPUVertexFormatSint32x3, GPUVertexFormatSint32x3), (js_GPUVertexFormatSint32x4, GPUVertexFormatSint32x4), (js_GPUVertexFormatUnorm1010102, GPUVertexFormatUnorm1010102), (js_GPUVertexFormatUnorm8x4Bgra, GPUVertexFormatUnorm8x4Bgra), (js_GPUVertexFormatSnorm1010102, GPUVertexFormatSnorm1010102)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUVertexFormatUint8 :: JSString
+js_GPUVertexFormatUint8 = "uint8"
+js_GPUVertexFormatUint8x2 :: JSString
+js_GPUVertexFormatUint8x2 = "uint8x2"
+js_GPUVertexFormatUint8x4 :: JSString
+js_GPUVertexFormatUint8x4 = "uint8x4"
+js_GPUVertexFormatSint8 :: JSString
+js_GPUVertexFormatSint8 = "sint8"
+js_GPUVertexFormatSint8x2 :: JSString
+js_GPUVertexFormatSint8x2 = "sint8x2"
+js_GPUVertexFormatSint8x4 :: JSString
+js_GPUVertexFormatSint8x4 = "sint8x4"
+js_GPUVertexFormatUnorm8 :: JSString
+js_GPUVertexFormatUnorm8 = "unorm8"
+js_GPUVertexFormatUnorm8x2 :: JSString
+js_GPUVertexFormatUnorm8x2 = "unorm8x2"
+js_GPUVertexFormatUnorm8x4 :: JSString
+js_GPUVertexFormatUnorm8x4 = "unorm8x4"
+js_GPUVertexFormatSnorm8 :: JSString
+js_GPUVertexFormatSnorm8 = "snorm8"
+js_GPUVertexFormatSnorm8x2 :: JSString
+js_GPUVertexFormatSnorm8x2 = "snorm8x2"
+js_GPUVertexFormatSnorm8x4 :: JSString
+js_GPUVertexFormatSnorm8x4 = "snorm8x4"
+js_GPUVertexFormatUint16 :: JSString
+js_GPUVertexFormatUint16 = "uint16"
+js_GPUVertexFormatUint16x2 :: JSString
+js_GPUVertexFormatUint16x2 = "uint16x2"
+js_GPUVertexFormatUint16x4 :: JSString
+js_GPUVertexFormatUint16x4 = "uint16x4"
+js_GPUVertexFormatSint16 :: JSString
+js_GPUVertexFormatSint16 = "sint16"
+js_GPUVertexFormatSint16x2 :: JSString
+js_GPUVertexFormatSint16x2 = "sint16x2"
+js_GPUVertexFormatSint16x4 :: JSString
+js_GPUVertexFormatSint16x4 = "sint16x4"
+js_GPUVertexFormatUnorm16 :: JSString
+js_GPUVertexFormatUnorm16 = "unorm16"
+js_GPUVertexFormatUnorm16x2 :: JSString
+js_GPUVertexFormatUnorm16x2 = "unorm16x2"
+js_GPUVertexFormatUnorm16x4 :: JSString
+js_GPUVertexFormatUnorm16x4 = "unorm16x4"
+js_GPUVertexFormatSnorm16 :: JSString
+js_GPUVertexFormatSnorm16 = "snorm16"
+js_GPUVertexFormatSnorm16x2 :: JSString
+js_GPUVertexFormatSnorm16x2 = "snorm16x2"
+js_GPUVertexFormatSnorm16x4 :: JSString
+js_GPUVertexFormatSnorm16x4 = "snorm16x4"
+js_GPUVertexFormatFloat16 :: JSString
+js_GPUVertexFormatFloat16 = "float16"
+js_GPUVertexFormatFloat16x2 :: JSString
+js_GPUVertexFormatFloat16x2 = "float16x2"
+js_GPUVertexFormatFloat16x4 :: JSString
+js_GPUVertexFormatFloat16x4 = "float16x4"
+js_GPUVertexFormatFloat32 :: JSString
+js_GPUVertexFormatFloat32 = "float32"
+js_GPUVertexFormatFloat32x2 :: JSString
+js_GPUVertexFormatFloat32x2 = "float32x2"
+js_GPUVertexFormatFloat32x3 :: JSString
+js_GPUVertexFormatFloat32x3 = "float32x3"
+js_GPUVertexFormatFloat32x4 :: JSString
+js_GPUVertexFormatFloat32x4 = "float32x4"
+js_GPUVertexFormatUint32 :: JSString
+js_GPUVertexFormatUint32 = "uint32"
+js_GPUVertexFormatUint32x2 :: JSString
+js_GPUVertexFormatUint32x2 = "uint32x2"
+js_GPUVertexFormatUint32x3 :: JSString
+js_GPUVertexFormatUint32x3 = "uint32x3"
+js_GPUVertexFormatUint32x4 :: JSString
+js_GPUVertexFormatUint32x4 = "uint32x4"
+js_GPUVertexFormatSint32 :: JSString
+js_GPUVertexFormatSint32 = "sint32"
+js_GPUVertexFormatSint32x2 :: JSString
+js_GPUVertexFormatSint32x2 = "sint32x2"
+js_GPUVertexFormatSint32x3 :: JSString
+js_GPUVertexFormatSint32x3 = "sint32x3"
+js_GPUVertexFormatSint32x4 :: JSString
+js_GPUVertexFormatSint32x4 = "sint32x4"
+js_GPUVertexFormatUnorm1010102 :: JSString
+js_GPUVertexFormatUnorm1010102 = "unorm10-10-10-2"
+js_GPUVertexFormatUnorm8x4Bgra :: JSString
+js_GPUVertexFormatUnorm8x4Bgra = "unorm8x4-bgra"
+js_GPUVertexFormatSnorm1010102 :: JSString
+js_GPUVertexFormatSnorm1010102 = "snorm10-10-10-2"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GPUVertexStepMode> (webgpu)
+data GPUVertexStepMode = GPUVertexStepModeVertex
+    | GPUVertexStepModeInstance
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GPUVertexStepMode where
+  pToJSVal x = pToJSVal (case x of
+    GPUVertexStepModeVertex -> js_GPUVertexStepModeVertex
+    GPUVertexStepModeInstance -> js_GPUVertexStepModeInstance
+    )
+
+instance ToJSVal GPUVertexStepMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GPUVertexStepMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected GPUVertexStepMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUVertexStepModeVertex, GPUVertexStepModeVertex), (js_GPUVertexStepModeInstance, GPUVertexStepModeInstance)]
+
+instance FromJSVal GPUVertexStepMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GPUVertexStepModeVertex, GPUVertexStepModeVertex), (js_GPUVertexStepModeInstance, GPUVertexStepModeInstance)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GPUVertexStepModeVertex :: JSString
+js_GPUVertexStepModeVertex = "vertex"
+js_GPUVertexStepModeInstance :: JSString
+js_GPUVertexStepModeInstance = "instance"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GamepadHapticEffectType> (gamepad)
+data GamepadHapticEffectType = GamepadHapticEffectTypeDualRumble
+    | GamepadHapticEffectTypeTriggerRumble
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GamepadHapticEffectType where
+  pToJSVal x = pToJSVal (case x of
+    GamepadHapticEffectTypeDualRumble -> js_GamepadHapticEffectTypeDualRumble
+    GamepadHapticEffectTypeTriggerRumble -> js_GamepadHapticEffectTypeTriggerRumble
+    )
+
+instance ToJSVal GamepadHapticEffectType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GamepadHapticEffectType where
+  pFromJSVal x = P.maybe (P.error "Unexpected GamepadHapticEffectType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GamepadHapticEffectTypeDualRumble, GamepadHapticEffectTypeDualRumble), (js_GamepadHapticEffectTypeTriggerRumble, GamepadHapticEffectTypeTriggerRumble)]
+
+instance FromJSVal GamepadHapticEffectType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GamepadHapticEffectTypeDualRumble, GamepadHapticEffectTypeDualRumble), (js_GamepadHapticEffectTypeTriggerRumble, GamepadHapticEffectTypeTriggerRumble)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GamepadHapticEffectTypeDualRumble :: JSString
+js_GamepadHapticEffectTypeDualRumble = "dual-rumble"
+js_GamepadHapticEffectTypeTriggerRumble :: JSString
+js_GamepadHapticEffectTypeTriggerRumble = "trigger-rumble"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GamepadHapticsResult> (gamepad)
+data GamepadHapticsResult = GamepadHapticsResultComplete
+    | GamepadHapticsResultPreempted
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GamepadHapticsResult where
+  pToJSVal x = pToJSVal (case x of
+    GamepadHapticsResultComplete -> js_GamepadHapticsResultComplete
+    GamepadHapticsResultPreempted -> js_GamepadHapticsResultPreempted
+    )
+
+instance ToJSVal GamepadHapticsResult where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GamepadHapticsResult where
+  pFromJSVal x = P.maybe (P.error "Unexpected GamepadHapticsResult value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GamepadHapticsResultComplete, GamepadHapticsResultComplete), (js_GamepadHapticsResultPreempted, GamepadHapticsResultPreempted)]
+
+instance FromJSVal GamepadHapticsResult where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GamepadHapticsResultComplete, GamepadHapticsResultComplete), (js_GamepadHapticsResultPreempted, GamepadHapticsResultPreempted)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GamepadHapticsResultComplete :: JSString
+js_GamepadHapticsResultComplete = "complete"
+js_GamepadHapticsResultPreempted :: JSString
+js_GamepadHapticsResultPreempted = "preempted"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GamepadMappingType> (gamepad)
+data GamepadMappingType = GamepadMappingType
+    | GamepadMappingTypeStandard
+    | GamepadMappingTypeXrStandard
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GamepadMappingType where
+  pToJSVal x = pToJSVal (case x of
+    GamepadMappingType -> js_GamepadMappingType
+    GamepadMappingTypeStandard -> js_GamepadMappingTypeStandard
+    GamepadMappingTypeXrStandard -> js_GamepadMappingTypeXrStandard
+    )
+
+instance ToJSVal GamepadMappingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GamepadMappingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected GamepadMappingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GamepadMappingType, GamepadMappingType), (js_GamepadMappingTypeStandard, GamepadMappingTypeStandard), (js_GamepadMappingTypeXrStandard, GamepadMappingTypeXrStandard)]
+
+instance FromJSVal GamepadMappingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GamepadMappingType, GamepadMappingType), (js_GamepadMappingTypeStandard, GamepadMappingTypeStandard), (js_GamepadMappingTypeXrStandard, GamepadMappingTypeXrStandard)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GamepadMappingType :: JSString
+js_GamepadMappingType = ""
+js_GamepadMappingTypeStandard :: JSString
+js_GamepadMappingTypeStandard = "standard"
+js_GamepadMappingTypeXrStandard :: JSString
+js_GamepadMappingTypeXrStandard = "xr-standard"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API GetUserMediaSemantics> (mediacapture-extensions)
+data GetUserMediaSemantics = GetUserMediaSemanticsBrowserChooses
+    | GetUserMediaSemanticsUserChooses
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal GetUserMediaSemantics where
+  pToJSVal x = pToJSVal (case x of
+    GetUserMediaSemanticsBrowserChooses -> js_GetUserMediaSemanticsBrowserChooses
+    GetUserMediaSemanticsUserChooses -> js_GetUserMediaSemanticsUserChooses
+    )
+
+instance ToJSVal GetUserMediaSemantics where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal GetUserMediaSemantics where
+  pFromJSVal x = P.maybe (P.error "Unexpected GetUserMediaSemantics value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GetUserMediaSemanticsBrowserChooses, GetUserMediaSemanticsBrowserChooses), (js_GetUserMediaSemanticsUserChooses, GetUserMediaSemanticsUserChooses)]
+
+instance FromJSVal GetUserMediaSemantics where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_GetUserMediaSemanticsBrowserChooses, GetUserMediaSemanticsBrowserChooses), (js_GetUserMediaSemanticsUserChooses, GetUserMediaSemanticsUserChooses)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_GetUserMediaSemanticsBrowserChooses :: JSString
+js_GetUserMediaSemanticsBrowserChooses = "browser-chooses"
+js_GetUserMediaSemanticsUserChooses :: JSString
+js_GetUserMediaSemanticsUserChooses = "user-chooses"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API HardwareAcceleration> (webcodecs)
+data HardwareAcceleration = HardwareAccelerationNoPreference
+    | HardwareAccelerationPreferHardware
+    | HardwareAccelerationPreferSoftware
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal HardwareAcceleration where
+  pToJSVal x = pToJSVal (case x of
+    HardwareAccelerationNoPreference -> js_HardwareAccelerationNoPreference
+    HardwareAccelerationPreferHardware -> js_HardwareAccelerationPreferHardware
+    HardwareAccelerationPreferSoftware -> js_HardwareAccelerationPreferSoftware
+    )
+
+instance ToJSVal HardwareAcceleration where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal HardwareAcceleration where
+  pFromJSVal x = P.maybe (P.error "Unexpected HardwareAcceleration value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HardwareAccelerationNoPreference, HardwareAccelerationNoPreference), (js_HardwareAccelerationPreferHardware, HardwareAccelerationPreferHardware), (js_HardwareAccelerationPreferSoftware, HardwareAccelerationPreferSoftware)]
+
+instance FromJSVal HardwareAcceleration where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HardwareAccelerationNoPreference, HardwareAccelerationNoPreference), (js_HardwareAccelerationPreferHardware, HardwareAccelerationPreferHardware), (js_HardwareAccelerationPreferSoftware, HardwareAccelerationPreferSoftware)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_HardwareAccelerationNoPreference :: JSString
+js_HardwareAccelerationNoPreference = "no-preference"
+js_HardwareAccelerationPreferHardware :: JSString
+js_HardwareAccelerationPreferHardware = "prefer-hardware"
+js_HardwareAccelerationPreferSoftware :: JSString
+js_HardwareAccelerationPreferSoftware = "prefer-software"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API HdrMetadataType> (media-capabilities)
+data HdrMetadataType = HdrMetadataTypeSmpteSt2086
+    | HdrMetadataTypeSmpteSt209410
+    | HdrMetadataTypeSmpteSt209440
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal HdrMetadataType where
+  pToJSVal x = pToJSVal (case x of
+    HdrMetadataTypeSmpteSt2086 -> js_HdrMetadataTypeSmpteSt2086
+    HdrMetadataTypeSmpteSt209410 -> js_HdrMetadataTypeSmpteSt209410
+    HdrMetadataTypeSmpteSt209440 -> js_HdrMetadataTypeSmpteSt209440
+    )
+
+instance ToJSVal HdrMetadataType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal HdrMetadataType where
+  pFromJSVal x = P.maybe (P.error "Unexpected HdrMetadataType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HdrMetadataTypeSmpteSt2086, HdrMetadataTypeSmpteSt2086), (js_HdrMetadataTypeSmpteSt209410, HdrMetadataTypeSmpteSt209410), (js_HdrMetadataTypeSmpteSt209440, HdrMetadataTypeSmpteSt209440)]
+
+instance FromJSVal HdrMetadataType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HdrMetadataTypeSmpteSt2086, HdrMetadataTypeSmpteSt2086), (js_HdrMetadataTypeSmpteSt209410, HdrMetadataTypeSmpteSt209410), (js_HdrMetadataTypeSmpteSt209440, HdrMetadataTypeSmpteSt209440)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_HdrMetadataTypeSmpteSt2086 :: JSString
+js_HdrMetadataTypeSmpteSt2086 = "smpteSt2086"
+js_HdrMetadataTypeSmpteSt209410 :: JSString
+js_HdrMetadataTypeSmpteSt209410 = "smpteSt2094-10"
+js_HdrMetadataTypeSmpteSt209440 :: JSString
+js_HdrMetadataTypeSmpteSt209440 = "smpteSt2094-40"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API HevcBitstreamFormat> (webcodecs-hevc-codec-registration)
+data HevcBitstreamFormat = HevcBitstreamFormatAnnexb
+    | HevcBitstreamFormatHevc
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal HevcBitstreamFormat where
+  pToJSVal x = pToJSVal (case x of
+    HevcBitstreamFormatAnnexb -> js_HevcBitstreamFormatAnnexb
+    HevcBitstreamFormatHevc -> js_HevcBitstreamFormatHevc
+    )
+
+instance ToJSVal HevcBitstreamFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal HevcBitstreamFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected HevcBitstreamFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HevcBitstreamFormatAnnexb, HevcBitstreamFormatAnnexb), (js_HevcBitstreamFormatHevc, HevcBitstreamFormatHevc)]
+
+instance FromJSVal HevcBitstreamFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HevcBitstreamFormatAnnexb, HevcBitstreamFormatAnnexb), (js_HevcBitstreamFormatHevc, HevcBitstreamFormatHevc)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_HevcBitstreamFormatAnnexb :: JSString
+js_HevcBitstreamFormatAnnexb = "annexb"
+js_HevcBitstreamFormatHevc :: JSString
+js_HevcBitstreamFormatHevc = "hevc"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API HighlightType> (css-highlight-api-1)
+data HighlightType = HighlightTypeHighlight
+    | HighlightTypeSpellingError
+    | HighlightTypeGrammarError
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal HighlightType where
+  pToJSVal x = pToJSVal (case x of
+    HighlightTypeHighlight -> js_HighlightTypeHighlight
+    HighlightTypeSpellingError -> js_HighlightTypeSpellingError
+    HighlightTypeGrammarError -> js_HighlightTypeGrammarError
+    )
+
+instance ToJSVal HighlightType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal HighlightType where
+  pFromJSVal x = P.maybe (P.error "Unexpected HighlightType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HighlightTypeHighlight, HighlightTypeHighlight), (js_HighlightTypeSpellingError, HighlightTypeSpellingError), (js_HighlightTypeGrammarError, HighlightTypeGrammarError)]
+
+instance FromJSVal HighlightType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_HighlightTypeHighlight, HighlightTypeHighlight), (js_HighlightTypeSpellingError, HighlightTypeSpellingError), (js_HighlightTypeGrammarError, HighlightTypeGrammarError)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_HighlightTypeHighlight :: JSString
+js_HighlightTypeHighlight = "highlight"
+js_HighlightTypeSpellingError :: JSString
+js_HighlightTypeSpellingError = "spelling-error"
+js_HighlightTypeGrammarError :: JSString
+js_HighlightTypeGrammarError = "grammar-error"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IDBCursorDirection> (IndexedDB-3)
+data IDBCursorDirection = IDBCursorDirectionNext
+    | IDBCursorDirectionNextunique
+    | IDBCursorDirectionPrev
+    | IDBCursorDirectionPrevunique
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IDBCursorDirection where
+  pToJSVal x = pToJSVal (case x of
+    IDBCursorDirectionNext -> js_IDBCursorDirectionNext
+    IDBCursorDirectionNextunique -> js_IDBCursorDirectionNextunique
+    IDBCursorDirectionPrev -> js_IDBCursorDirectionPrev
+    IDBCursorDirectionPrevunique -> js_IDBCursorDirectionPrevunique
+    )
+
+instance ToJSVal IDBCursorDirection where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IDBCursorDirection where
+  pFromJSVal x = P.maybe (P.error "Unexpected IDBCursorDirection value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBCursorDirectionNext, IDBCursorDirectionNext), (js_IDBCursorDirectionNextunique, IDBCursorDirectionNextunique), (js_IDBCursorDirectionPrev, IDBCursorDirectionPrev), (js_IDBCursorDirectionPrevunique, IDBCursorDirectionPrevunique)]
+
+instance FromJSVal IDBCursorDirection where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBCursorDirectionNext, IDBCursorDirectionNext), (js_IDBCursorDirectionNextunique, IDBCursorDirectionNextunique), (js_IDBCursorDirectionPrev, IDBCursorDirectionPrev), (js_IDBCursorDirectionPrevunique, IDBCursorDirectionPrevunique)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IDBCursorDirectionNext :: JSString
+js_IDBCursorDirectionNext = "next"
+js_IDBCursorDirectionNextunique :: JSString
+js_IDBCursorDirectionNextunique = "nextunique"
+js_IDBCursorDirectionPrev :: JSString
+js_IDBCursorDirectionPrev = "prev"
+js_IDBCursorDirectionPrevunique :: JSString
+js_IDBCursorDirectionPrevunique = "prevunique"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IDBRequestReadyState> (IndexedDB-3)
+data IDBRequestReadyState = IDBRequestReadyStatePending
+    | IDBRequestReadyStateDone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IDBRequestReadyState where
+  pToJSVal x = pToJSVal (case x of
+    IDBRequestReadyStatePending -> js_IDBRequestReadyStatePending
+    IDBRequestReadyStateDone -> js_IDBRequestReadyStateDone
+    )
+
+instance ToJSVal IDBRequestReadyState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IDBRequestReadyState where
+  pFromJSVal x = P.maybe (P.error "Unexpected IDBRequestReadyState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBRequestReadyStatePending, IDBRequestReadyStatePending), (js_IDBRequestReadyStateDone, IDBRequestReadyStateDone)]
+
+instance FromJSVal IDBRequestReadyState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBRequestReadyStatePending, IDBRequestReadyStatePending), (js_IDBRequestReadyStateDone, IDBRequestReadyStateDone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IDBRequestReadyStatePending :: JSString
+js_IDBRequestReadyStatePending = "pending"
+js_IDBRequestReadyStateDone :: JSString
+js_IDBRequestReadyStateDone = "done"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IDBTransactionDurability> (IndexedDB-3)
+data IDBTransactionDurability = IDBTransactionDurabilityDefault
+    | IDBTransactionDurabilityStrict
+    | IDBTransactionDurabilityRelaxed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IDBTransactionDurability where
+  pToJSVal x = pToJSVal (case x of
+    IDBTransactionDurabilityDefault -> js_IDBTransactionDurabilityDefault
+    IDBTransactionDurabilityStrict -> js_IDBTransactionDurabilityStrict
+    IDBTransactionDurabilityRelaxed -> js_IDBTransactionDurabilityRelaxed
+    )
+
+instance ToJSVal IDBTransactionDurability where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IDBTransactionDurability where
+  pFromJSVal x = P.maybe (P.error "Unexpected IDBTransactionDurability value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBTransactionDurabilityDefault, IDBTransactionDurabilityDefault), (js_IDBTransactionDurabilityStrict, IDBTransactionDurabilityStrict), (js_IDBTransactionDurabilityRelaxed, IDBTransactionDurabilityRelaxed)]
+
+instance FromJSVal IDBTransactionDurability where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBTransactionDurabilityDefault, IDBTransactionDurabilityDefault), (js_IDBTransactionDurabilityStrict, IDBTransactionDurabilityStrict), (js_IDBTransactionDurabilityRelaxed, IDBTransactionDurabilityRelaxed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IDBTransactionDurabilityDefault :: JSString
+js_IDBTransactionDurabilityDefault = "default"
+js_IDBTransactionDurabilityStrict :: JSString
+js_IDBTransactionDurabilityStrict = "strict"
+js_IDBTransactionDurabilityRelaxed :: JSString
+js_IDBTransactionDurabilityRelaxed = "relaxed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IDBTransactionMode> (IndexedDB-3)
+data IDBTransactionMode = IDBTransactionModeReadonly
+    | IDBTransactionModeReadwrite
+    | IDBTransactionModeVersionchange
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IDBTransactionMode where
+  pToJSVal x = pToJSVal (case x of
+    IDBTransactionModeReadonly -> js_IDBTransactionModeReadonly
+    IDBTransactionModeReadwrite -> js_IDBTransactionModeReadwrite
+    IDBTransactionModeVersionchange -> js_IDBTransactionModeVersionchange
+    )
+
+instance ToJSVal IDBTransactionMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IDBTransactionMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected IDBTransactionMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBTransactionModeReadonly, IDBTransactionModeReadonly), (js_IDBTransactionModeReadwrite, IDBTransactionModeReadwrite), (js_IDBTransactionModeVersionchange, IDBTransactionModeVersionchange)]
+
+instance FromJSVal IDBTransactionMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IDBTransactionModeReadonly, IDBTransactionModeReadonly), (js_IDBTransactionModeReadwrite, IDBTransactionModeReadwrite), (js_IDBTransactionModeVersionchange, IDBTransactionModeVersionchange)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IDBTransactionModeReadonly :: JSString
+js_IDBTransactionModeReadonly = "readonly"
+js_IDBTransactionModeReadwrite :: JSString
+js_IDBTransactionModeReadwrite = "readwrite"
+js_IDBTransactionModeVersionchange :: JSString
+js_IDBTransactionModeVersionchange = "versionchange"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IPAddressSpace> (local-network-access)
+data IPAddressSpace = IPAddressSpacePublic
+    | IPAddressSpaceLocal
+    | IPAddressSpaceLoopback
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IPAddressSpace where
+  pToJSVal x = pToJSVal (case x of
+    IPAddressSpacePublic -> js_IPAddressSpacePublic
+    IPAddressSpaceLocal -> js_IPAddressSpaceLocal
+    IPAddressSpaceLoopback -> js_IPAddressSpaceLoopback
+    )
+
+instance ToJSVal IPAddressSpace where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IPAddressSpace where
+  pFromJSVal x = P.maybe (P.error "Unexpected IPAddressSpace value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IPAddressSpacePublic, IPAddressSpacePublic), (js_IPAddressSpaceLocal, IPAddressSpaceLocal), (js_IPAddressSpaceLoopback, IPAddressSpaceLoopback)]
+
+instance FromJSVal IPAddressSpace where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IPAddressSpacePublic, IPAddressSpacePublic), (js_IPAddressSpaceLocal, IPAddressSpaceLocal), (js_IPAddressSpaceLoopback, IPAddressSpaceLoopback)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IPAddressSpacePublic :: JSString
+js_IPAddressSpacePublic = "public"
+js_IPAddressSpaceLocal :: JSString
+js_IPAddressSpaceLocal = "local"
+js_IPAddressSpaceLoopback :: JSString
+js_IPAddressSpaceLoopback = "loopback"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IdentityCredentialRequestOptionsContext> (fedcm-1)
+data IdentityCredentialRequestOptionsContext = IdentityCredentialRequestOptionsContextSignin
+    | IdentityCredentialRequestOptionsContextSignup
+    | IdentityCredentialRequestOptionsContextUse
+    | IdentityCredentialRequestOptionsContextContinue
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IdentityCredentialRequestOptionsContext where
+  pToJSVal x = pToJSVal (case x of
+    IdentityCredentialRequestOptionsContextSignin -> js_IdentityCredentialRequestOptionsContextSignin
+    IdentityCredentialRequestOptionsContextSignup -> js_IdentityCredentialRequestOptionsContextSignup
+    IdentityCredentialRequestOptionsContextUse -> js_IdentityCredentialRequestOptionsContextUse
+    IdentityCredentialRequestOptionsContextContinue -> js_IdentityCredentialRequestOptionsContextContinue
+    )
+
+instance ToJSVal IdentityCredentialRequestOptionsContext where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IdentityCredentialRequestOptionsContext where
+  pFromJSVal x = P.maybe (P.error "Unexpected IdentityCredentialRequestOptionsContext value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IdentityCredentialRequestOptionsContextSignin, IdentityCredentialRequestOptionsContextSignin), (js_IdentityCredentialRequestOptionsContextSignup, IdentityCredentialRequestOptionsContextSignup), (js_IdentityCredentialRequestOptionsContextUse, IdentityCredentialRequestOptionsContextUse), (js_IdentityCredentialRequestOptionsContextContinue, IdentityCredentialRequestOptionsContextContinue)]
+
+instance FromJSVal IdentityCredentialRequestOptionsContext where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IdentityCredentialRequestOptionsContextSignin, IdentityCredentialRequestOptionsContextSignin), (js_IdentityCredentialRequestOptionsContextSignup, IdentityCredentialRequestOptionsContextSignup), (js_IdentityCredentialRequestOptionsContextUse, IdentityCredentialRequestOptionsContextUse), (js_IdentityCredentialRequestOptionsContextContinue, IdentityCredentialRequestOptionsContextContinue)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IdentityCredentialRequestOptionsContextSignin :: JSString
+js_IdentityCredentialRequestOptionsContextSignin = "signin"
+js_IdentityCredentialRequestOptionsContextSignup :: JSString
+js_IdentityCredentialRequestOptionsContextSignup = "signup"
+js_IdentityCredentialRequestOptionsContextUse :: JSString
+js_IdentityCredentialRequestOptionsContextUse = "use"
+js_IdentityCredentialRequestOptionsContextContinue :: JSString
+js_IdentityCredentialRequestOptionsContextContinue = "continue"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IdentityCredentialRequestOptionsMode> (fedcm-1)
+data IdentityCredentialRequestOptionsMode = IdentityCredentialRequestOptionsModeActive
+    | IdentityCredentialRequestOptionsModePassive
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IdentityCredentialRequestOptionsMode where
+  pToJSVal x = pToJSVal (case x of
+    IdentityCredentialRequestOptionsModeActive -> js_IdentityCredentialRequestOptionsModeActive
+    IdentityCredentialRequestOptionsModePassive -> js_IdentityCredentialRequestOptionsModePassive
+    )
+
+instance ToJSVal IdentityCredentialRequestOptionsMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IdentityCredentialRequestOptionsMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected IdentityCredentialRequestOptionsMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IdentityCredentialRequestOptionsModeActive, IdentityCredentialRequestOptionsModeActive), (js_IdentityCredentialRequestOptionsModePassive, IdentityCredentialRequestOptionsModePassive)]
+
+instance FromJSVal IdentityCredentialRequestOptionsMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IdentityCredentialRequestOptionsModeActive, IdentityCredentialRequestOptionsModeActive), (js_IdentityCredentialRequestOptionsModePassive, IdentityCredentialRequestOptionsModePassive)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IdentityCredentialRequestOptionsModeActive :: JSString
+js_IdentityCredentialRequestOptionsModeActive = "active"
+js_IdentityCredentialRequestOptionsModePassive :: JSString
+js_IdentityCredentialRequestOptionsModePassive = "passive"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ImageDataPixelFormat> (html)
+data ImageDataPixelFormat = ImageDataPixelFormatRgbaUnorm8
+    | ImageDataPixelFormatRgbaFloat16
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ImageDataPixelFormat where
+  pToJSVal x = pToJSVal (case x of
+    ImageDataPixelFormatRgbaUnorm8 -> js_ImageDataPixelFormatRgbaUnorm8
+    ImageDataPixelFormatRgbaFloat16 -> js_ImageDataPixelFormatRgbaFloat16
+    )
+
+instance ToJSVal ImageDataPixelFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ImageDataPixelFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected ImageDataPixelFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ImageDataPixelFormatRgbaUnorm8, ImageDataPixelFormatRgbaUnorm8), (js_ImageDataPixelFormatRgbaFloat16, ImageDataPixelFormatRgbaFloat16)]
+
+instance FromJSVal ImageDataPixelFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ImageDataPixelFormatRgbaUnorm8, ImageDataPixelFormatRgbaUnorm8), (js_ImageDataPixelFormatRgbaFloat16, ImageDataPixelFormatRgbaFloat16)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ImageDataPixelFormatRgbaUnorm8 :: JSString
+js_ImageDataPixelFormatRgbaUnorm8 = "rgba-unorm8"
+js_ImageDataPixelFormatRgbaFloat16 :: JSString
+js_ImageDataPixelFormatRgbaFloat16 = "rgba-float16"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ImageSmoothingQuality> (html)
+data ImageSmoothingQuality = ImageSmoothingQualityLow
+    | ImageSmoothingQualityMedium
+    | ImageSmoothingQualityHigh
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ImageSmoothingQuality where
+  pToJSVal x = pToJSVal (case x of
+    ImageSmoothingQualityLow -> js_ImageSmoothingQualityLow
+    ImageSmoothingQualityMedium -> js_ImageSmoothingQualityMedium
+    ImageSmoothingQualityHigh -> js_ImageSmoothingQualityHigh
+    )
+
+instance ToJSVal ImageSmoothingQuality where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ImageSmoothingQuality where
+  pFromJSVal x = P.maybe (P.error "Unexpected ImageSmoothingQuality value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ImageSmoothingQualityLow, ImageSmoothingQualityLow), (js_ImageSmoothingQualityMedium, ImageSmoothingQualityMedium), (js_ImageSmoothingQualityHigh, ImageSmoothingQualityHigh)]
+
+instance FromJSVal ImageSmoothingQuality where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ImageSmoothingQualityLow, ImageSmoothingQualityLow), (js_ImageSmoothingQualityMedium, ImageSmoothingQualityMedium), (js_ImageSmoothingQualityHigh, ImageSmoothingQualityHigh)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ImageSmoothingQualityLow :: JSString
+js_ImageSmoothingQualityLow = "low"
+js_ImageSmoothingQualityMedium :: JSString
+js_ImageSmoothingQualityMedium = "medium"
+js_ImageSmoothingQualityHigh :: JSString
+js_ImageSmoothingQualityHigh = "high"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API IterationCompositeOperation> (web-animations-2)
+data IterationCompositeOperation = IterationCompositeOperationReplace
+    | IterationCompositeOperationAccumulate
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal IterationCompositeOperation where
+  pToJSVal x = pToJSVal (case x of
+    IterationCompositeOperationReplace -> js_IterationCompositeOperationReplace
+    IterationCompositeOperationAccumulate -> js_IterationCompositeOperationAccumulate
+    )
+
+instance ToJSVal IterationCompositeOperation where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal IterationCompositeOperation where
+  pFromJSVal x = P.maybe (P.error "Unexpected IterationCompositeOperation value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IterationCompositeOperationReplace, IterationCompositeOperationReplace), (js_IterationCompositeOperationAccumulate, IterationCompositeOperationAccumulate)]
+
+instance FromJSVal IterationCompositeOperation where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_IterationCompositeOperationReplace, IterationCompositeOperationReplace), (js_IterationCompositeOperationAccumulate, IterationCompositeOperationAccumulate)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_IterationCompositeOperationReplace :: JSString
+js_IterationCompositeOperationReplace = "replace"
+js_IterationCompositeOperationAccumulate :: JSString
+js_IterationCompositeOperationAccumulate = "accumulate"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API KeyFormat> (webcrypto-modern-algos)
+data KeyFormat = KeyFormatRawPublic
+    | KeyFormatRawPrivate
+    | KeyFormatRawSeed
+    | KeyFormatRawSecret
+    | KeyFormatRaw
+    | KeyFormatSpki
+    | KeyFormatPkcs8
+    | KeyFormatJwk
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal KeyFormat where
+  pToJSVal x = pToJSVal (case x of
+    KeyFormatRawPublic -> js_KeyFormatRawPublic
+    KeyFormatRawPrivate -> js_KeyFormatRawPrivate
+    KeyFormatRawSeed -> js_KeyFormatRawSeed
+    KeyFormatRawSecret -> js_KeyFormatRawSecret
+    KeyFormatRaw -> js_KeyFormatRaw
+    KeyFormatSpki -> js_KeyFormatSpki
+    KeyFormatPkcs8 -> js_KeyFormatPkcs8
+    KeyFormatJwk -> js_KeyFormatJwk
+    )
+
+instance ToJSVal KeyFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal KeyFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected KeyFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_KeyFormatRawPublic, KeyFormatRawPublic), (js_KeyFormatRawPrivate, KeyFormatRawPrivate), (js_KeyFormatRawSeed, KeyFormatRawSeed), (js_KeyFormatRawSecret, KeyFormatRawSecret), (js_KeyFormatRaw, KeyFormatRaw), (js_KeyFormatSpki, KeyFormatSpki), (js_KeyFormatPkcs8, KeyFormatPkcs8), (js_KeyFormatJwk, KeyFormatJwk)]
+
+instance FromJSVal KeyFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_KeyFormatRawPublic, KeyFormatRawPublic), (js_KeyFormatRawPrivate, KeyFormatRawPrivate), (js_KeyFormatRawSeed, KeyFormatRawSeed), (js_KeyFormatRawSecret, KeyFormatRawSecret), (js_KeyFormatRaw, KeyFormatRaw), (js_KeyFormatSpki, KeyFormatSpki), (js_KeyFormatPkcs8, KeyFormatPkcs8), (js_KeyFormatJwk, KeyFormatJwk)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_KeyFormatRawPublic :: JSString
+js_KeyFormatRawPublic = "raw-public"
+js_KeyFormatRawPrivate :: JSString
+js_KeyFormatRawPrivate = "raw-private"
+js_KeyFormatRawSeed :: JSString
+js_KeyFormatRawSeed = "raw-seed"
+js_KeyFormatRawSecret :: JSString
+js_KeyFormatRawSecret = "raw-secret"
+js_KeyFormatRaw :: JSString
+js_KeyFormatRaw = "raw"
+js_KeyFormatSpki :: JSString
+js_KeyFormatSpki = "spki"
+js_KeyFormatPkcs8 :: JSString
+js_KeyFormatPkcs8 = "pkcs8"
+js_KeyFormatJwk :: JSString
+js_KeyFormatJwk = "jwk"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API KeyType> (webcrypto-2)
+data KeyType = KeyTypePublic
+    | KeyTypePrivate
+    | KeyTypeSecret
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal KeyType where
+  pToJSVal x = pToJSVal (case x of
+    KeyTypePublic -> js_KeyTypePublic
+    KeyTypePrivate -> js_KeyTypePrivate
+    KeyTypeSecret -> js_KeyTypeSecret
+    )
+
+instance ToJSVal KeyType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal KeyType where
+  pFromJSVal x = P.maybe (P.error "Unexpected KeyType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_KeyTypePublic, KeyTypePublic), (js_KeyTypePrivate, KeyTypePrivate), (js_KeyTypeSecret, KeyTypeSecret)]
+
+instance FromJSVal KeyType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_KeyTypePublic, KeyTypePublic), (js_KeyTypePrivate, KeyTypePrivate), (js_KeyTypeSecret, KeyTypeSecret)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_KeyTypePublic :: JSString
+js_KeyTypePublic = "public"
+js_KeyTypePrivate :: JSString
+js_KeyTypePrivate = "private"
+js_KeyTypeSecret :: JSString
+js_KeyTypeSecret = "secret"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API KeyUsage> (webcrypto-modern-algos)
+data KeyUsage = KeyUsageEncrypt
+    | KeyUsageDecrypt
+    | KeyUsageSign
+    | KeyUsageVerify
+    | KeyUsageDeriveKey
+    | KeyUsageDeriveBits
+    | KeyUsageWrapKey
+    | KeyUsageUnwrapKey
+    | KeyUsageEncapsulateKey
+    | KeyUsageEncapsulateBits
+    | KeyUsageDecapsulateKey
+    | KeyUsageDecapsulateBits
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal KeyUsage where
+  pToJSVal x = pToJSVal (case x of
+    KeyUsageEncrypt -> js_KeyUsageEncrypt
+    KeyUsageDecrypt -> js_KeyUsageDecrypt
+    KeyUsageSign -> js_KeyUsageSign
+    KeyUsageVerify -> js_KeyUsageVerify
+    KeyUsageDeriveKey -> js_KeyUsageDeriveKey
+    KeyUsageDeriveBits -> js_KeyUsageDeriveBits
+    KeyUsageWrapKey -> js_KeyUsageWrapKey
+    KeyUsageUnwrapKey -> js_KeyUsageUnwrapKey
+    KeyUsageEncapsulateKey -> js_KeyUsageEncapsulateKey
+    KeyUsageEncapsulateBits -> js_KeyUsageEncapsulateBits
+    KeyUsageDecapsulateKey -> js_KeyUsageDecapsulateKey
+    KeyUsageDecapsulateBits -> js_KeyUsageDecapsulateBits
+    )
+
+instance ToJSVal KeyUsage where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal KeyUsage where
+  pFromJSVal x = P.maybe (P.error "Unexpected KeyUsage value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_KeyUsageEncrypt, KeyUsageEncrypt), (js_KeyUsageDecrypt, KeyUsageDecrypt), (js_KeyUsageSign, KeyUsageSign), (js_KeyUsageVerify, KeyUsageVerify), (js_KeyUsageDeriveKey, KeyUsageDeriveKey), (js_KeyUsageDeriveBits, KeyUsageDeriveBits), (js_KeyUsageWrapKey, KeyUsageWrapKey), (js_KeyUsageUnwrapKey, KeyUsageUnwrapKey), (js_KeyUsageEncapsulateKey, KeyUsageEncapsulateKey), (js_KeyUsageEncapsulateBits, KeyUsageEncapsulateBits), (js_KeyUsageDecapsulateKey, KeyUsageDecapsulateKey), (js_KeyUsageDecapsulateBits, KeyUsageDecapsulateBits)]
+
+instance FromJSVal KeyUsage where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_KeyUsageEncrypt, KeyUsageEncrypt), (js_KeyUsageDecrypt, KeyUsageDecrypt), (js_KeyUsageSign, KeyUsageSign), (js_KeyUsageVerify, KeyUsageVerify), (js_KeyUsageDeriveKey, KeyUsageDeriveKey), (js_KeyUsageDeriveBits, KeyUsageDeriveBits), (js_KeyUsageWrapKey, KeyUsageWrapKey), (js_KeyUsageUnwrapKey, KeyUsageUnwrapKey), (js_KeyUsageEncapsulateKey, KeyUsageEncapsulateKey), (js_KeyUsageEncapsulateBits, KeyUsageEncapsulateBits), (js_KeyUsageDecapsulateKey, KeyUsageDecapsulateKey), (js_KeyUsageDecapsulateBits, KeyUsageDecapsulateBits)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_KeyUsageEncrypt :: JSString
+js_KeyUsageEncrypt = "encrypt"
+js_KeyUsageDecrypt :: JSString
+js_KeyUsageDecrypt = "decrypt"
+js_KeyUsageSign :: JSString
+js_KeyUsageSign = "sign"
+js_KeyUsageVerify :: JSString
+js_KeyUsageVerify = "verify"
+js_KeyUsageDeriveKey :: JSString
+js_KeyUsageDeriveKey = "deriveKey"
+js_KeyUsageDeriveBits :: JSString
+js_KeyUsageDeriveBits = "deriveBits"
+js_KeyUsageWrapKey :: JSString
+js_KeyUsageWrapKey = "wrapKey"
+js_KeyUsageUnwrapKey :: JSString
+js_KeyUsageUnwrapKey = "unwrapKey"
+js_KeyUsageEncapsulateKey :: JSString
+js_KeyUsageEncapsulateKey = "encapsulateKey"
+js_KeyUsageEncapsulateBits :: JSString
+js_KeyUsageEncapsulateBits = "encapsulateBits"
+js_KeyUsageDecapsulateKey :: JSString
+js_KeyUsageDecapsulateKey = "decapsulateKey"
+js_KeyUsageDecapsulateBits :: JSString
+js_KeyUsageDecapsulateBits = "decapsulateBits"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API LatencyMode> (webcodecs)
+data LatencyMode = LatencyModeQuality
+    | LatencyModeRealtime
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal LatencyMode where
+  pToJSVal x = pToJSVal (case x of
+    LatencyModeQuality -> js_LatencyModeQuality
+    LatencyModeRealtime -> js_LatencyModeRealtime
+    )
+
+instance ToJSVal LatencyMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal LatencyMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected LatencyMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LatencyModeQuality, LatencyModeQuality), (js_LatencyModeRealtime, LatencyModeRealtime)]
+
+instance FromJSVal LatencyMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LatencyModeQuality, LatencyModeQuality), (js_LatencyModeRealtime, LatencyModeRealtime)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_LatencyModeQuality :: JSString
+js_LatencyModeQuality = "quality"
+js_LatencyModeRealtime :: JSString
+js_LatencyModeRealtime = "realtime"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API LineAlignSetting> (webvtt1)
+data LineAlignSetting = LineAlignSettingStart
+    | LineAlignSettingCenter
+    | LineAlignSettingEnd
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal LineAlignSetting where
+  pToJSVal x = pToJSVal (case x of
+    LineAlignSettingStart -> js_LineAlignSettingStart
+    LineAlignSettingCenter -> js_LineAlignSettingCenter
+    LineAlignSettingEnd -> js_LineAlignSettingEnd
+    )
+
+instance ToJSVal LineAlignSetting where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal LineAlignSetting where
+  pFromJSVal x = P.maybe (P.error "Unexpected LineAlignSetting value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LineAlignSettingStart, LineAlignSettingStart), (js_LineAlignSettingCenter, LineAlignSettingCenter), (js_LineAlignSettingEnd, LineAlignSettingEnd)]
+
+instance FromJSVal LineAlignSetting where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LineAlignSettingStart, LineAlignSettingStart), (js_LineAlignSettingCenter, LineAlignSettingCenter), (js_LineAlignSettingEnd, LineAlignSettingEnd)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_LineAlignSettingStart :: JSString
+js_LineAlignSettingStart = "start"
+js_LineAlignSettingCenter :: JSString
+js_LineAlignSettingCenter = "center"
+js_LineAlignSettingEnd :: JSString
+js_LineAlignSettingEnd = "end"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API LockMode> (web-locks)
+data LockMode = LockModeShared
+    | LockModeExclusive
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal LockMode where
+  pToJSVal x = pToJSVal (case x of
+    LockModeShared -> js_LockModeShared
+    LockModeExclusive -> js_LockModeExclusive
+    )
+
+instance ToJSVal LockMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal LockMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected LockMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LockModeShared, LockModeShared), (js_LockModeExclusive, LockModeExclusive)]
+
+instance FromJSVal LockMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LockModeShared, LockModeShared), (js_LockModeExclusive, LockModeExclusive)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_LockModeShared :: JSString
+js_LockModeShared = "shared"
+js_LockModeExclusive :: JSString
+js_LockModeExclusive = "exclusive"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API LoginStatus> (login-status)
+data LoginStatus = LoginStatusLoggedIn
+    | LoginStatusLoggedOut
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal LoginStatus where
+  pToJSVal x = pToJSVal (case x of
+    LoginStatusLoggedIn -> js_LoginStatusLoggedIn
+    LoginStatusLoggedOut -> js_LoginStatusLoggedOut
+    )
+
+instance ToJSVal LoginStatus where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal LoginStatus where
+  pFromJSVal x = P.maybe (P.error "Unexpected LoginStatus value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LoginStatusLoggedIn, LoginStatusLoggedIn), (js_LoginStatusLoggedOut, LoginStatusLoggedOut)]
+
+instance FromJSVal LoginStatus where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_LoginStatusLoggedIn, LoginStatusLoggedIn), (js_LoginStatusLoggedOut, LoginStatusLoggedOut)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_LoginStatusLoggedIn :: JSString
+js_LoginStatusLoggedIn = "logged-in"
+js_LoginStatusLoggedOut :: JSString
+js_LoginStatusLoggedOut = "logged-out"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MIDIPortConnectionState> (webmidi)
+data MIDIPortConnectionState = MIDIPortConnectionStateOpen
+    | MIDIPortConnectionStateClosed
+    | MIDIPortConnectionStatePending
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MIDIPortConnectionState where
+  pToJSVal x = pToJSVal (case x of
+    MIDIPortConnectionStateOpen -> js_MIDIPortConnectionStateOpen
+    MIDIPortConnectionStateClosed -> js_MIDIPortConnectionStateClosed
+    MIDIPortConnectionStatePending -> js_MIDIPortConnectionStatePending
+    )
+
+instance ToJSVal MIDIPortConnectionState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MIDIPortConnectionState where
+  pFromJSVal x = P.maybe (P.error "Unexpected MIDIPortConnectionState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MIDIPortConnectionStateOpen, MIDIPortConnectionStateOpen), (js_MIDIPortConnectionStateClosed, MIDIPortConnectionStateClosed), (js_MIDIPortConnectionStatePending, MIDIPortConnectionStatePending)]
+
+instance FromJSVal MIDIPortConnectionState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MIDIPortConnectionStateOpen, MIDIPortConnectionStateOpen), (js_MIDIPortConnectionStateClosed, MIDIPortConnectionStateClosed), (js_MIDIPortConnectionStatePending, MIDIPortConnectionStatePending)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MIDIPortConnectionStateOpen :: JSString
+js_MIDIPortConnectionStateOpen = "open"
+js_MIDIPortConnectionStateClosed :: JSString
+js_MIDIPortConnectionStateClosed = "closed"
+js_MIDIPortConnectionStatePending :: JSString
+js_MIDIPortConnectionStatePending = "pending"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MIDIPortDeviceState> (webmidi)
+data MIDIPortDeviceState = MIDIPortDeviceStateDisconnected
+    | MIDIPortDeviceStateConnected
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MIDIPortDeviceState where
+  pToJSVal x = pToJSVal (case x of
+    MIDIPortDeviceStateDisconnected -> js_MIDIPortDeviceStateDisconnected
+    MIDIPortDeviceStateConnected -> js_MIDIPortDeviceStateConnected
+    )
+
+instance ToJSVal MIDIPortDeviceState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MIDIPortDeviceState where
+  pFromJSVal x = P.maybe (P.error "Unexpected MIDIPortDeviceState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MIDIPortDeviceStateDisconnected, MIDIPortDeviceStateDisconnected), (js_MIDIPortDeviceStateConnected, MIDIPortDeviceStateConnected)]
+
+instance FromJSVal MIDIPortDeviceState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MIDIPortDeviceStateDisconnected, MIDIPortDeviceStateDisconnected), (js_MIDIPortDeviceStateConnected, MIDIPortDeviceStateConnected)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MIDIPortDeviceStateDisconnected :: JSString
+js_MIDIPortDeviceStateDisconnected = "disconnected"
+js_MIDIPortDeviceStateConnected :: JSString
+js_MIDIPortDeviceStateConnected = "connected"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MIDIPortType> (webmidi)
+data MIDIPortType = MIDIPortTypeInput
+    | MIDIPortTypeOutput
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MIDIPortType where
+  pToJSVal x = pToJSVal (case x of
+    MIDIPortTypeInput -> js_MIDIPortTypeInput
+    MIDIPortTypeOutput -> js_MIDIPortTypeOutput
+    )
+
+instance ToJSVal MIDIPortType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MIDIPortType where
+  pFromJSVal x = P.maybe (P.error "Unexpected MIDIPortType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MIDIPortTypeInput, MIDIPortTypeInput), (js_MIDIPortTypeOutput, MIDIPortTypeOutput)]
+
+instance FromJSVal MIDIPortType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MIDIPortTypeInput, MIDIPortTypeInput), (js_MIDIPortTypeOutput, MIDIPortTypeOutput)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MIDIPortTypeInput :: JSString
+js_MIDIPortTypeInput = "input"
+js_MIDIPortTypeOutput :: JSString
+js_MIDIPortTypeOutput = "output"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaDecodingType> (media-capabilities)
+data MediaDecodingType = MediaDecodingTypeFile
+    | MediaDecodingTypeMediaSource
+    | MediaDecodingTypeWebrtc
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaDecodingType where
+  pToJSVal x = pToJSVal (case x of
+    MediaDecodingTypeFile -> js_MediaDecodingTypeFile
+    MediaDecodingTypeMediaSource -> js_MediaDecodingTypeMediaSource
+    MediaDecodingTypeWebrtc -> js_MediaDecodingTypeWebrtc
+    )
+
+instance ToJSVal MediaDecodingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaDecodingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaDecodingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaDecodingTypeFile, MediaDecodingTypeFile), (js_MediaDecodingTypeMediaSource, MediaDecodingTypeMediaSource), (js_MediaDecodingTypeWebrtc, MediaDecodingTypeWebrtc)]
+
+instance FromJSVal MediaDecodingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaDecodingTypeFile, MediaDecodingTypeFile), (js_MediaDecodingTypeMediaSource, MediaDecodingTypeMediaSource), (js_MediaDecodingTypeWebrtc, MediaDecodingTypeWebrtc)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaDecodingTypeFile :: JSString
+js_MediaDecodingTypeFile = "file"
+js_MediaDecodingTypeMediaSource :: JSString
+js_MediaDecodingTypeMediaSource = "media-source"
+js_MediaDecodingTypeWebrtc :: JSString
+js_MediaDecodingTypeWebrtc = "webrtc"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaDeviceKind> (mediacapture-streams)
+data MediaDeviceKind = MediaDeviceKindAudioinput
+    | MediaDeviceKindAudiooutput
+    | MediaDeviceKindVideoinput
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaDeviceKind where
+  pToJSVal x = pToJSVal (case x of
+    MediaDeviceKindAudioinput -> js_MediaDeviceKindAudioinput
+    MediaDeviceKindAudiooutput -> js_MediaDeviceKindAudiooutput
+    MediaDeviceKindVideoinput -> js_MediaDeviceKindVideoinput
+    )
+
+instance ToJSVal MediaDeviceKind where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaDeviceKind where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaDeviceKind value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaDeviceKindAudioinput, MediaDeviceKindAudioinput), (js_MediaDeviceKindAudiooutput, MediaDeviceKindAudiooutput), (js_MediaDeviceKindVideoinput, MediaDeviceKindVideoinput)]
+
+instance FromJSVal MediaDeviceKind where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaDeviceKindAudioinput, MediaDeviceKindAudioinput), (js_MediaDeviceKindAudiooutput, MediaDeviceKindAudiooutput), (js_MediaDeviceKindVideoinput, MediaDeviceKindVideoinput)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaDeviceKindAudioinput :: JSString
+js_MediaDeviceKindAudioinput = "audioinput"
+js_MediaDeviceKindAudiooutput :: JSString
+js_MediaDeviceKindAudiooutput = "audiooutput"
+js_MediaDeviceKindVideoinput :: JSString
+js_MediaDeviceKindVideoinput = "videoinput"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaEncodingType> (media-capabilities)
+data MediaEncodingType = MediaEncodingTypeRecord
+    | MediaEncodingTypeWebrtc
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaEncodingType where
+  pToJSVal x = pToJSVal (case x of
+    MediaEncodingTypeRecord -> js_MediaEncodingTypeRecord
+    MediaEncodingTypeWebrtc -> js_MediaEncodingTypeWebrtc
+    )
+
+instance ToJSVal MediaEncodingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaEncodingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaEncodingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaEncodingTypeRecord, MediaEncodingTypeRecord), (js_MediaEncodingTypeWebrtc, MediaEncodingTypeWebrtc)]
+
+instance FromJSVal MediaEncodingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaEncodingTypeRecord, MediaEncodingTypeRecord), (js_MediaEncodingTypeWebrtc, MediaEncodingTypeWebrtc)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaEncodingTypeRecord :: JSString
+js_MediaEncodingTypeRecord = "record"
+js_MediaEncodingTypeWebrtc :: JSString
+js_MediaEncodingTypeWebrtc = "webrtc"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaKeyMessageType> (encrypted-media-2)
+data MediaKeyMessageType = MediaKeyMessageTypeLicenseRequest
+    | MediaKeyMessageTypeLicenseRenewal
+    | MediaKeyMessageTypeLicenseRelease
+    | MediaKeyMessageTypeIndividualizationRequest
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaKeyMessageType where
+  pToJSVal x = pToJSVal (case x of
+    MediaKeyMessageTypeLicenseRequest -> js_MediaKeyMessageTypeLicenseRequest
+    MediaKeyMessageTypeLicenseRenewal -> js_MediaKeyMessageTypeLicenseRenewal
+    MediaKeyMessageTypeLicenseRelease -> js_MediaKeyMessageTypeLicenseRelease
+    MediaKeyMessageTypeIndividualizationRequest -> js_MediaKeyMessageTypeIndividualizationRequest
+    )
+
+instance ToJSVal MediaKeyMessageType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaKeyMessageType where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaKeyMessageType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeyMessageTypeLicenseRequest, MediaKeyMessageTypeLicenseRequest), (js_MediaKeyMessageTypeLicenseRenewal, MediaKeyMessageTypeLicenseRenewal), (js_MediaKeyMessageTypeLicenseRelease, MediaKeyMessageTypeLicenseRelease), (js_MediaKeyMessageTypeIndividualizationRequest, MediaKeyMessageTypeIndividualizationRequest)]
+
+instance FromJSVal MediaKeyMessageType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeyMessageTypeLicenseRequest, MediaKeyMessageTypeLicenseRequest), (js_MediaKeyMessageTypeLicenseRenewal, MediaKeyMessageTypeLicenseRenewal), (js_MediaKeyMessageTypeLicenseRelease, MediaKeyMessageTypeLicenseRelease), (js_MediaKeyMessageTypeIndividualizationRequest, MediaKeyMessageTypeIndividualizationRequest)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaKeyMessageTypeLicenseRequest :: JSString
+js_MediaKeyMessageTypeLicenseRequest = "license-request"
+js_MediaKeyMessageTypeLicenseRenewal :: JSString
+js_MediaKeyMessageTypeLicenseRenewal = "license-renewal"
+js_MediaKeyMessageTypeLicenseRelease :: JSString
+js_MediaKeyMessageTypeLicenseRelease = "license-release"
+js_MediaKeyMessageTypeIndividualizationRequest :: JSString
+js_MediaKeyMessageTypeIndividualizationRequest = "individualization-request"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaKeySessionClosedReason> (encrypted-media-2)
+data MediaKeySessionClosedReason = MediaKeySessionClosedReasonInternalError
+    | MediaKeySessionClosedReasonClosedByApplication
+    | MediaKeySessionClosedReasonReleaseAcknowledged
+    | MediaKeySessionClosedReasonHardwareContextReset
+    | MediaKeySessionClosedReasonResourceEvicted
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaKeySessionClosedReason where
+  pToJSVal x = pToJSVal (case x of
+    MediaKeySessionClosedReasonInternalError -> js_MediaKeySessionClosedReasonInternalError
+    MediaKeySessionClosedReasonClosedByApplication -> js_MediaKeySessionClosedReasonClosedByApplication
+    MediaKeySessionClosedReasonReleaseAcknowledged -> js_MediaKeySessionClosedReasonReleaseAcknowledged
+    MediaKeySessionClosedReasonHardwareContextReset -> js_MediaKeySessionClosedReasonHardwareContextReset
+    MediaKeySessionClosedReasonResourceEvicted -> js_MediaKeySessionClosedReasonResourceEvicted
+    )
+
+instance ToJSVal MediaKeySessionClosedReason where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaKeySessionClosedReason where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaKeySessionClosedReason value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeySessionClosedReasonInternalError, MediaKeySessionClosedReasonInternalError), (js_MediaKeySessionClosedReasonClosedByApplication, MediaKeySessionClosedReasonClosedByApplication), (js_MediaKeySessionClosedReasonReleaseAcknowledged, MediaKeySessionClosedReasonReleaseAcknowledged), (js_MediaKeySessionClosedReasonHardwareContextReset, MediaKeySessionClosedReasonHardwareContextReset), (js_MediaKeySessionClosedReasonResourceEvicted, MediaKeySessionClosedReasonResourceEvicted)]
+
+instance FromJSVal MediaKeySessionClosedReason where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeySessionClosedReasonInternalError, MediaKeySessionClosedReasonInternalError), (js_MediaKeySessionClosedReasonClosedByApplication, MediaKeySessionClosedReasonClosedByApplication), (js_MediaKeySessionClosedReasonReleaseAcknowledged, MediaKeySessionClosedReasonReleaseAcknowledged), (js_MediaKeySessionClosedReasonHardwareContextReset, MediaKeySessionClosedReasonHardwareContextReset), (js_MediaKeySessionClosedReasonResourceEvicted, MediaKeySessionClosedReasonResourceEvicted)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaKeySessionClosedReasonInternalError :: JSString
+js_MediaKeySessionClosedReasonInternalError = "internal-error"
+js_MediaKeySessionClosedReasonClosedByApplication :: JSString
+js_MediaKeySessionClosedReasonClosedByApplication = "closed-by-application"
+js_MediaKeySessionClosedReasonReleaseAcknowledged :: JSString
+js_MediaKeySessionClosedReasonReleaseAcknowledged = "release-acknowledged"
+js_MediaKeySessionClosedReasonHardwareContextReset :: JSString
+js_MediaKeySessionClosedReasonHardwareContextReset = "hardware-context-reset"
+js_MediaKeySessionClosedReasonResourceEvicted :: JSString
+js_MediaKeySessionClosedReasonResourceEvicted = "resource-evicted"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaKeySessionType> (encrypted-media-2)
+data MediaKeySessionType = MediaKeySessionTypeTemporary
+    | MediaKeySessionTypePersistentLicense
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaKeySessionType where
+  pToJSVal x = pToJSVal (case x of
+    MediaKeySessionTypeTemporary -> js_MediaKeySessionTypeTemporary
+    MediaKeySessionTypePersistentLicense -> js_MediaKeySessionTypePersistentLicense
+    )
+
+instance ToJSVal MediaKeySessionType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaKeySessionType where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaKeySessionType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeySessionTypeTemporary, MediaKeySessionTypeTemporary), (js_MediaKeySessionTypePersistentLicense, MediaKeySessionTypePersistentLicense)]
+
+instance FromJSVal MediaKeySessionType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeySessionTypeTemporary, MediaKeySessionTypeTemporary), (js_MediaKeySessionTypePersistentLicense, MediaKeySessionTypePersistentLicense)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaKeySessionTypeTemporary :: JSString
+js_MediaKeySessionTypeTemporary = "temporary"
+js_MediaKeySessionTypePersistentLicense :: JSString
+js_MediaKeySessionTypePersistentLicense = "persistent-license"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaKeyStatus> (encrypted-media-2)
+data MediaKeyStatus = MediaKeyStatusUsable
+    | MediaKeyStatusExpired
+    | MediaKeyStatusReleased
+    | MediaKeyStatusOutputRestricted
+    | MediaKeyStatusOutputDownscaled
+    | MediaKeyStatusUsableInFuture
+    | MediaKeyStatusStatusPending
+    | MediaKeyStatusInternalError
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaKeyStatus where
+  pToJSVal x = pToJSVal (case x of
+    MediaKeyStatusUsable -> js_MediaKeyStatusUsable
+    MediaKeyStatusExpired -> js_MediaKeyStatusExpired
+    MediaKeyStatusReleased -> js_MediaKeyStatusReleased
+    MediaKeyStatusOutputRestricted -> js_MediaKeyStatusOutputRestricted
+    MediaKeyStatusOutputDownscaled -> js_MediaKeyStatusOutputDownscaled
+    MediaKeyStatusUsableInFuture -> js_MediaKeyStatusUsableInFuture
+    MediaKeyStatusStatusPending -> js_MediaKeyStatusStatusPending
+    MediaKeyStatusInternalError -> js_MediaKeyStatusInternalError
+    )
+
+instance ToJSVal MediaKeyStatus where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaKeyStatus where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaKeyStatus value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeyStatusUsable, MediaKeyStatusUsable), (js_MediaKeyStatusExpired, MediaKeyStatusExpired), (js_MediaKeyStatusReleased, MediaKeyStatusReleased), (js_MediaKeyStatusOutputRestricted, MediaKeyStatusOutputRestricted), (js_MediaKeyStatusOutputDownscaled, MediaKeyStatusOutputDownscaled), (js_MediaKeyStatusUsableInFuture, MediaKeyStatusUsableInFuture), (js_MediaKeyStatusStatusPending, MediaKeyStatusStatusPending), (js_MediaKeyStatusInternalError, MediaKeyStatusInternalError)]
+
+instance FromJSVal MediaKeyStatus where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeyStatusUsable, MediaKeyStatusUsable), (js_MediaKeyStatusExpired, MediaKeyStatusExpired), (js_MediaKeyStatusReleased, MediaKeyStatusReleased), (js_MediaKeyStatusOutputRestricted, MediaKeyStatusOutputRestricted), (js_MediaKeyStatusOutputDownscaled, MediaKeyStatusOutputDownscaled), (js_MediaKeyStatusUsableInFuture, MediaKeyStatusUsableInFuture), (js_MediaKeyStatusStatusPending, MediaKeyStatusStatusPending), (js_MediaKeyStatusInternalError, MediaKeyStatusInternalError)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaKeyStatusUsable :: JSString
+js_MediaKeyStatusUsable = "usable"
+js_MediaKeyStatusExpired :: JSString
+js_MediaKeyStatusExpired = "expired"
+js_MediaKeyStatusReleased :: JSString
+js_MediaKeyStatusReleased = "released"
+js_MediaKeyStatusOutputRestricted :: JSString
+js_MediaKeyStatusOutputRestricted = "output-restricted"
+js_MediaKeyStatusOutputDownscaled :: JSString
+js_MediaKeyStatusOutputDownscaled = "output-downscaled"
+js_MediaKeyStatusUsableInFuture :: JSString
+js_MediaKeyStatusUsableInFuture = "usable-in-future"
+js_MediaKeyStatusStatusPending :: JSString
+js_MediaKeyStatusStatusPending = "status-pending"
+js_MediaKeyStatusInternalError :: JSString
+js_MediaKeyStatusInternalError = "internal-error"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaKeysRequirement> (encrypted-media-2)
+data MediaKeysRequirement = MediaKeysRequirementRequired
+    | MediaKeysRequirementOptional
+    | MediaKeysRequirementNotAllowed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaKeysRequirement where
+  pToJSVal x = pToJSVal (case x of
+    MediaKeysRequirementRequired -> js_MediaKeysRequirementRequired
+    MediaKeysRequirementOptional -> js_MediaKeysRequirementOptional
+    MediaKeysRequirementNotAllowed -> js_MediaKeysRequirementNotAllowed
+    )
+
+instance ToJSVal MediaKeysRequirement where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaKeysRequirement where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaKeysRequirement value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeysRequirementRequired, MediaKeysRequirementRequired), (js_MediaKeysRequirementOptional, MediaKeysRequirementOptional), (js_MediaKeysRequirementNotAllowed, MediaKeysRequirementNotAllowed)]
+
+instance FromJSVal MediaKeysRequirement where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaKeysRequirementRequired, MediaKeysRequirementRequired), (js_MediaKeysRequirementOptional, MediaKeysRequirementOptional), (js_MediaKeysRequirementNotAllowed, MediaKeysRequirementNotAllowed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaKeysRequirementRequired :: JSString
+js_MediaKeysRequirementRequired = "required"
+js_MediaKeysRequirementOptional :: JSString
+js_MediaKeysRequirementOptional = "optional"
+js_MediaKeysRequirementNotAllowed :: JSString
+js_MediaKeysRequirementNotAllowed = "not-allowed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaSessionAction> (mediasession)
+data MediaSessionAction = MediaSessionActionPlay
+    | MediaSessionActionPause
+    | MediaSessionActionSeekbackward
+    | MediaSessionActionSeekforward
+    | MediaSessionActionPrevioustrack
+    | MediaSessionActionNexttrack
+    | MediaSessionActionSkipad
+    | MediaSessionActionStop
+    | MediaSessionActionSeekto
+    | MediaSessionActionTogglemicrophone
+    | MediaSessionActionTogglecamera
+    | MediaSessionActionTogglescreenshare
+    | MediaSessionActionHangup
+    | MediaSessionActionPreviousslide
+    | MediaSessionActionNextslide
+    | MediaSessionActionEnterpictureinpicture
+    | MediaSessionActionVoiceactivity
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaSessionAction where
+  pToJSVal x = pToJSVal (case x of
+    MediaSessionActionPlay -> js_MediaSessionActionPlay
+    MediaSessionActionPause -> js_MediaSessionActionPause
+    MediaSessionActionSeekbackward -> js_MediaSessionActionSeekbackward
+    MediaSessionActionSeekforward -> js_MediaSessionActionSeekforward
+    MediaSessionActionPrevioustrack -> js_MediaSessionActionPrevioustrack
+    MediaSessionActionNexttrack -> js_MediaSessionActionNexttrack
+    MediaSessionActionSkipad -> js_MediaSessionActionSkipad
+    MediaSessionActionStop -> js_MediaSessionActionStop
+    MediaSessionActionSeekto -> js_MediaSessionActionSeekto
+    MediaSessionActionTogglemicrophone -> js_MediaSessionActionTogglemicrophone
+    MediaSessionActionTogglecamera -> js_MediaSessionActionTogglecamera
+    MediaSessionActionTogglescreenshare -> js_MediaSessionActionTogglescreenshare
+    MediaSessionActionHangup -> js_MediaSessionActionHangup
+    MediaSessionActionPreviousslide -> js_MediaSessionActionPreviousslide
+    MediaSessionActionNextslide -> js_MediaSessionActionNextslide
+    MediaSessionActionEnterpictureinpicture -> js_MediaSessionActionEnterpictureinpicture
+    MediaSessionActionVoiceactivity -> js_MediaSessionActionVoiceactivity
+    )
+
+instance ToJSVal MediaSessionAction where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaSessionAction where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaSessionAction value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaSessionActionPlay, MediaSessionActionPlay), (js_MediaSessionActionPause, MediaSessionActionPause), (js_MediaSessionActionSeekbackward, MediaSessionActionSeekbackward), (js_MediaSessionActionSeekforward, MediaSessionActionSeekforward), (js_MediaSessionActionPrevioustrack, MediaSessionActionPrevioustrack), (js_MediaSessionActionNexttrack, MediaSessionActionNexttrack), (js_MediaSessionActionSkipad, MediaSessionActionSkipad), (js_MediaSessionActionStop, MediaSessionActionStop), (js_MediaSessionActionSeekto, MediaSessionActionSeekto), (js_MediaSessionActionTogglemicrophone, MediaSessionActionTogglemicrophone), (js_MediaSessionActionTogglecamera, MediaSessionActionTogglecamera), (js_MediaSessionActionTogglescreenshare, MediaSessionActionTogglescreenshare), (js_MediaSessionActionHangup, MediaSessionActionHangup), (js_MediaSessionActionPreviousslide, MediaSessionActionPreviousslide), (js_MediaSessionActionNextslide, MediaSessionActionNextslide), (js_MediaSessionActionEnterpictureinpicture, MediaSessionActionEnterpictureinpicture), (js_MediaSessionActionVoiceactivity, MediaSessionActionVoiceactivity)]
+
+instance FromJSVal MediaSessionAction where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaSessionActionPlay, MediaSessionActionPlay), (js_MediaSessionActionPause, MediaSessionActionPause), (js_MediaSessionActionSeekbackward, MediaSessionActionSeekbackward), (js_MediaSessionActionSeekforward, MediaSessionActionSeekforward), (js_MediaSessionActionPrevioustrack, MediaSessionActionPrevioustrack), (js_MediaSessionActionNexttrack, MediaSessionActionNexttrack), (js_MediaSessionActionSkipad, MediaSessionActionSkipad), (js_MediaSessionActionStop, MediaSessionActionStop), (js_MediaSessionActionSeekto, MediaSessionActionSeekto), (js_MediaSessionActionTogglemicrophone, MediaSessionActionTogglemicrophone), (js_MediaSessionActionTogglecamera, MediaSessionActionTogglecamera), (js_MediaSessionActionTogglescreenshare, MediaSessionActionTogglescreenshare), (js_MediaSessionActionHangup, MediaSessionActionHangup), (js_MediaSessionActionPreviousslide, MediaSessionActionPreviousslide), (js_MediaSessionActionNextslide, MediaSessionActionNextslide), (js_MediaSessionActionEnterpictureinpicture, MediaSessionActionEnterpictureinpicture), (js_MediaSessionActionVoiceactivity, MediaSessionActionVoiceactivity)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaSessionActionPlay :: JSString
+js_MediaSessionActionPlay = "play"
+js_MediaSessionActionPause :: JSString
+js_MediaSessionActionPause = "pause"
+js_MediaSessionActionSeekbackward :: JSString
+js_MediaSessionActionSeekbackward = "seekbackward"
+js_MediaSessionActionSeekforward :: JSString
+js_MediaSessionActionSeekforward = "seekforward"
+js_MediaSessionActionPrevioustrack :: JSString
+js_MediaSessionActionPrevioustrack = "previoustrack"
+js_MediaSessionActionNexttrack :: JSString
+js_MediaSessionActionNexttrack = "nexttrack"
+js_MediaSessionActionSkipad :: JSString
+js_MediaSessionActionSkipad = "skipad"
+js_MediaSessionActionStop :: JSString
+js_MediaSessionActionStop = "stop"
+js_MediaSessionActionSeekto :: JSString
+js_MediaSessionActionSeekto = "seekto"
+js_MediaSessionActionTogglemicrophone :: JSString
+js_MediaSessionActionTogglemicrophone = "togglemicrophone"
+js_MediaSessionActionTogglecamera :: JSString
+js_MediaSessionActionTogglecamera = "togglecamera"
+js_MediaSessionActionTogglescreenshare :: JSString
+js_MediaSessionActionTogglescreenshare = "togglescreenshare"
+js_MediaSessionActionHangup :: JSString
+js_MediaSessionActionHangup = "hangup"
+js_MediaSessionActionPreviousslide :: JSString
+js_MediaSessionActionPreviousslide = "previousslide"
+js_MediaSessionActionNextslide :: JSString
+js_MediaSessionActionNextslide = "nextslide"
+js_MediaSessionActionEnterpictureinpicture :: JSString
+js_MediaSessionActionEnterpictureinpicture = "enterpictureinpicture"
+js_MediaSessionActionVoiceactivity :: JSString
+js_MediaSessionActionVoiceactivity = "voiceactivity"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaSessionEnterPictureInPictureReason> (mediasession)
+data MediaSessionEnterPictureInPictureReason = MediaSessionEnterPictureInPictureReasonOther
+    | MediaSessionEnterPictureInPictureReasonUseraction
+    | MediaSessionEnterPictureInPictureReasonContentoccluded
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaSessionEnterPictureInPictureReason where
+  pToJSVal x = pToJSVal (case x of
+    MediaSessionEnterPictureInPictureReasonOther -> js_MediaSessionEnterPictureInPictureReasonOther
+    MediaSessionEnterPictureInPictureReasonUseraction -> js_MediaSessionEnterPictureInPictureReasonUseraction
+    MediaSessionEnterPictureInPictureReasonContentoccluded -> js_MediaSessionEnterPictureInPictureReasonContentoccluded
+    )
+
+instance ToJSVal MediaSessionEnterPictureInPictureReason where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaSessionEnterPictureInPictureReason where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaSessionEnterPictureInPictureReason value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaSessionEnterPictureInPictureReasonOther, MediaSessionEnterPictureInPictureReasonOther), (js_MediaSessionEnterPictureInPictureReasonUseraction, MediaSessionEnterPictureInPictureReasonUseraction), (js_MediaSessionEnterPictureInPictureReasonContentoccluded, MediaSessionEnterPictureInPictureReasonContentoccluded)]
+
+instance FromJSVal MediaSessionEnterPictureInPictureReason where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaSessionEnterPictureInPictureReasonOther, MediaSessionEnterPictureInPictureReasonOther), (js_MediaSessionEnterPictureInPictureReasonUseraction, MediaSessionEnterPictureInPictureReasonUseraction), (js_MediaSessionEnterPictureInPictureReasonContentoccluded, MediaSessionEnterPictureInPictureReasonContentoccluded)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaSessionEnterPictureInPictureReasonOther :: JSString
+js_MediaSessionEnterPictureInPictureReasonOther = "other"
+js_MediaSessionEnterPictureInPictureReasonUseraction :: JSString
+js_MediaSessionEnterPictureInPictureReasonUseraction = "useraction"
+js_MediaSessionEnterPictureInPictureReasonContentoccluded :: JSString
+js_MediaSessionEnterPictureInPictureReasonContentoccluded = "contentoccluded"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaSessionPlaybackState> (mediasession)
+data MediaSessionPlaybackState = MediaSessionPlaybackStateNone
+    | MediaSessionPlaybackStatePaused
+    | MediaSessionPlaybackStatePlaying
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaSessionPlaybackState where
+  pToJSVal x = pToJSVal (case x of
+    MediaSessionPlaybackStateNone -> js_MediaSessionPlaybackStateNone
+    MediaSessionPlaybackStatePaused -> js_MediaSessionPlaybackStatePaused
+    MediaSessionPlaybackStatePlaying -> js_MediaSessionPlaybackStatePlaying
+    )
+
+instance ToJSVal MediaSessionPlaybackState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaSessionPlaybackState where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaSessionPlaybackState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaSessionPlaybackStateNone, MediaSessionPlaybackStateNone), (js_MediaSessionPlaybackStatePaused, MediaSessionPlaybackStatePaused), (js_MediaSessionPlaybackStatePlaying, MediaSessionPlaybackStatePlaying)]
+
+instance FromJSVal MediaSessionPlaybackState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaSessionPlaybackStateNone, MediaSessionPlaybackStateNone), (js_MediaSessionPlaybackStatePaused, MediaSessionPlaybackStatePaused), (js_MediaSessionPlaybackStatePlaying, MediaSessionPlaybackStatePlaying)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaSessionPlaybackStateNone :: JSString
+js_MediaSessionPlaybackStateNone = "none"
+js_MediaSessionPlaybackStatePaused :: JSString
+js_MediaSessionPlaybackStatePaused = "paused"
+js_MediaSessionPlaybackStatePlaying :: JSString
+js_MediaSessionPlaybackStatePlaying = "playing"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MediaStreamTrackState> (mediacapture-streams)
+data MediaStreamTrackState = MediaStreamTrackStateLive
+    | MediaStreamTrackStateEnded
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MediaStreamTrackState where
+  pToJSVal x = pToJSVal (case x of
+    MediaStreamTrackStateLive -> js_MediaStreamTrackStateLive
+    MediaStreamTrackStateEnded -> js_MediaStreamTrackStateEnded
+    )
+
+instance ToJSVal MediaStreamTrackState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MediaStreamTrackState where
+  pFromJSVal x = P.maybe (P.error "Unexpected MediaStreamTrackState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaStreamTrackStateLive, MediaStreamTrackStateLive), (js_MediaStreamTrackStateEnded, MediaStreamTrackStateEnded)]
+
+instance FromJSVal MediaStreamTrackState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MediaStreamTrackStateLive, MediaStreamTrackStateLive), (js_MediaStreamTrackStateEnded, MediaStreamTrackStateEnded)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MediaStreamTrackStateLive :: JSString
+js_MediaStreamTrackStateLive = "live"
+js_MediaStreamTrackStateEnded :: JSString
+js_MediaStreamTrackStateEnded = "ended"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API MonitorTypeSurfacesEnum> (screen-capture)
+data MonitorTypeSurfacesEnum = MonitorTypeSurfacesEnumInclude
+    | MonitorTypeSurfacesEnumExclude
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal MonitorTypeSurfacesEnum where
+  pToJSVal x = pToJSVal (case x of
+    MonitorTypeSurfacesEnumInclude -> js_MonitorTypeSurfacesEnumInclude
+    MonitorTypeSurfacesEnumExclude -> js_MonitorTypeSurfacesEnumExclude
+    )
+
+instance ToJSVal MonitorTypeSurfacesEnum where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal MonitorTypeSurfacesEnum where
+  pFromJSVal x = P.maybe (P.error "Unexpected MonitorTypeSurfacesEnum value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MonitorTypeSurfacesEnumInclude, MonitorTypeSurfacesEnumInclude), (js_MonitorTypeSurfacesEnumExclude, MonitorTypeSurfacesEnumExclude)]
+
+instance FromJSVal MonitorTypeSurfacesEnum where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_MonitorTypeSurfacesEnumInclude, MonitorTypeSurfacesEnumInclude), (js_MonitorTypeSurfacesEnumExclude, MonitorTypeSurfacesEnumExclude)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_MonitorTypeSurfacesEnumInclude :: JSString
+js_MonitorTypeSurfacesEnumInclude = "include"
+js_MonitorTypeSurfacesEnumExclude :: JSString
+js_MonitorTypeSurfacesEnumExclude = "exclude"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API NavigationFocusReset> (html)
+data NavigationFocusReset = NavigationFocusResetAfterTransition
+    | NavigationFocusResetManual
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal NavigationFocusReset where
+  pToJSVal x = pToJSVal (case x of
+    NavigationFocusResetAfterTransition -> js_NavigationFocusResetAfterTransition
+    NavigationFocusResetManual -> js_NavigationFocusResetManual
+    )
+
+instance ToJSVal NavigationFocusReset where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal NavigationFocusReset where
+  pFromJSVal x = P.maybe (P.error "Unexpected NavigationFocusReset value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationFocusResetAfterTransition, NavigationFocusResetAfterTransition), (js_NavigationFocusResetManual, NavigationFocusResetManual)]
+
+instance FromJSVal NavigationFocusReset where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationFocusResetAfterTransition, NavigationFocusResetAfterTransition), (js_NavigationFocusResetManual, NavigationFocusResetManual)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_NavigationFocusResetAfterTransition :: JSString
+js_NavigationFocusResetAfterTransition = "after-transition"
+js_NavigationFocusResetManual :: JSString
+js_NavigationFocusResetManual = "manual"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API NavigationHistoryBehavior> (html)
+data NavigationHistoryBehavior = NavigationHistoryBehaviorAuto
+    | NavigationHistoryBehaviorPush
+    | NavigationHistoryBehaviorReplace
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal NavigationHistoryBehavior where
+  pToJSVal x = pToJSVal (case x of
+    NavigationHistoryBehaviorAuto -> js_NavigationHistoryBehaviorAuto
+    NavigationHistoryBehaviorPush -> js_NavigationHistoryBehaviorPush
+    NavigationHistoryBehaviorReplace -> js_NavigationHistoryBehaviorReplace
+    )
+
+instance ToJSVal NavigationHistoryBehavior where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal NavigationHistoryBehavior where
+  pFromJSVal x = P.maybe (P.error "Unexpected NavigationHistoryBehavior value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationHistoryBehaviorAuto, NavigationHistoryBehaviorAuto), (js_NavigationHistoryBehaviorPush, NavigationHistoryBehaviorPush), (js_NavigationHistoryBehaviorReplace, NavigationHistoryBehaviorReplace)]
+
+instance FromJSVal NavigationHistoryBehavior where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationHistoryBehaviorAuto, NavigationHistoryBehaviorAuto), (js_NavigationHistoryBehaviorPush, NavigationHistoryBehaviorPush), (js_NavigationHistoryBehaviorReplace, NavigationHistoryBehaviorReplace)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_NavigationHistoryBehaviorAuto :: JSString
+js_NavigationHistoryBehaviorAuto = "auto"
+js_NavigationHistoryBehaviorPush :: JSString
+js_NavigationHistoryBehaviorPush = "push"
+js_NavigationHistoryBehaviorReplace :: JSString
+js_NavigationHistoryBehaviorReplace = "replace"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API NavigationScrollBehavior> (html)
+data NavigationScrollBehavior = NavigationScrollBehaviorAfterTransition
+    | NavigationScrollBehaviorManual
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal NavigationScrollBehavior where
+  pToJSVal x = pToJSVal (case x of
+    NavigationScrollBehaviorAfterTransition -> js_NavigationScrollBehaviorAfterTransition
+    NavigationScrollBehaviorManual -> js_NavigationScrollBehaviorManual
+    )
+
+instance ToJSVal NavigationScrollBehavior where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal NavigationScrollBehavior where
+  pFromJSVal x = P.maybe (P.error "Unexpected NavigationScrollBehavior value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationScrollBehaviorAfterTransition, NavigationScrollBehaviorAfterTransition), (js_NavigationScrollBehaviorManual, NavigationScrollBehaviorManual)]
+
+instance FromJSVal NavigationScrollBehavior where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationScrollBehaviorAfterTransition, NavigationScrollBehaviorAfterTransition), (js_NavigationScrollBehaviorManual, NavigationScrollBehaviorManual)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_NavigationScrollBehaviorAfterTransition :: JSString
+js_NavigationScrollBehaviorAfterTransition = "after-transition"
+js_NavigationScrollBehaviorManual :: JSString
+js_NavigationScrollBehaviorManual = "manual"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API NavigationTimingType> (navigation-timing-2)
+data NavigationTimingType = NavigationTimingTypeNavigate
+    | NavigationTimingTypeReload
+    | NavigationTimingTypeBackForward
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal NavigationTimingType where
+  pToJSVal x = pToJSVal (case x of
+    NavigationTimingTypeNavigate -> js_NavigationTimingTypeNavigate
+    NavigationTimingTypeReload -> js_NavigationTimingTypeReload
+    NavigationTimingTypeBackForward -> js_NavigationTimingTypeBackForward
+    )
+
+instance ToJSVal NavigationTimingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal NavigationTimingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected NavigationTimingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationTimingTypeNavigate, NavigationTimingTypeNavigate), (js_NavigationTimingTypeReload, NavigationTimingTypeReload), (js_NavigationTimingTypeBackForward, NavigationTimingTypeBackForward)]
+
+instance FromJSVal NavigationTimingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationTimingTypeNavigate, NavigationTimingTypeNavigate), (js_NavigationTimingTypeReload, NavigationTimingTypeReload), (js_NavigationTimingTypeBackForward, NavigationTimingTypeBackForward)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_NavigationTimingTypeNavigate :: JSString
+js_NavigationTimingTypeNavigate = "navigate"
+js_NavigationTimingTypeReload :: JSString
+js_NavigationTimingTypeReload = "reload"
+js_NavigationTimingTypeBackForward :: JSString
+js_NavigationTimingTypeBackForward = "back_forward"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API NavigationType> (html)
+data NavigationType = NavigationTypePush
+    | NavigationTypeReplace
+    | NavigationTypeReload
+    | NavigationTypeTraverse
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal NavigationType where
+  pToJSVal x = pToJSVal (case x of
+    NavigationTypePush -> js_NavigationTypePush
+    NavigationTypeReplace -> js_NavigationTypeReplace
+    NavigationTypeReload -> js_NavigationTypeReload
+    NavigationTypeTraverse -> js_NavigationTypeTraverse
+    )
+
+instance ToJSVal NavigationType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal NavigationType where
+  pFromJSVal x = P.maybe (P.error "Unexpected NavigationType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationTypePush, NavigationTypePush), (js_NavigationTypeReplace, NavigationTypeReplace), (js_NavigationTypeReload, NavigationTypeReload), (js_NavigationTypeTraverse, NavigationTypeTraverse)]
+
+instance FromJSVal NavigationType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NavigationTypePush, NavigationTypePush), (js_NavigationTypeReplace, NavigationTypeReplace), (js_NavigationTypeReload, NavigationTypeReload), (js_NavigationTypeTraverse, NavigationTypeTraverse)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_NavigationTypePush :: JSString
+js_NavigationTypePush = "push"
+js_NavigationTypeReplace :: JSString
+js_NavigationTypeReplace = "replace"
+js_NavigationTypeReload :: JSString
+js_NavigationTypeReload = "reload"
+js_NavigationTypeTraverse :: JSString
+js_NavigationTypeTraverse = "traverse"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API NotificationDirection> (notifications)
+data NotificationDirection = NotificationDirectionAuto
+    | NotificationDirectionLtr
+    | NotificationDirectionRtl
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal NotificationDirection where
+  pToJSVal x = pToJSVal (case x of
+    NotificationDirectionAuto -> js_NotificationDirectionAuto
+    NotificationDirectionLtr -> js_NotificationDirectionLtr
+    NotificationDirectionRtl -> js_NotificationDirectionRtl
+    )
+
+instance ToJSVal NotificationDirection where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal NotificationDirection where
+  pFromJSVal x = P.maybe (P.error "Unexpected NotificationDirection value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NotificationDirectionAuto, NotificationDirectionAuto), (js_NotificationDirectionLtr, NotificationDirectionLtr), (js_NotificationDirectionRtl, NotificationDirectionRtl)]
+
+instance FromJSVal NotificationDirection where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NotificationDirectionAuto, NotificationDirectionAuto), (js_NotificationDirectionLtr, NotificationDirectionLtr), (js_NotificationDirectionRtl, NotificationDirectionRtl)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_NotificationDirectionAuto :: JSString
+js_NotificationDirectionAuto = "auto"
+js_NotificationDirectionLtr :: JSString
+js_NotificationDirectionLtr = "ltr"
+js_NotificationDirectionRtl :: JSString
+js_NotificationDirectionRtl = "rtl"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API NotificationPermission> (notifications)
+data NotificationPermission = NotificationPermissionDefault
+    | NotificationPermissionDenied
+    | NotificationPermissionGranted
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal NotificationPermission where
+  pToJSVal x = pToJSVal (case x of
+    NotificationPermissionDefault -> js_NotificationPermissionDefault
+    NotificationPermissionDenied -> js_NotificationPermissionDenied
+    NotificationPermissionGranted -> js_NotificationPermissionGranted
+    )
+
+instance ToJSVal NotificationPermission where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal NotificationPermission where
+  pFromJSVal x = P.maybe (P.error "Unexpected NotificationPermission value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NotificationPermissionDefault, NotificationPermissionDefault), (js_NotificationPermissionDenied, NotificationPermissionDenied), (js_NotificationPermissionGranted, NotificationPermissionGranted)]
+
+instance FromJSVal NotificationPermission where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_NotificationPermissionDefault, NotificationPermissionDefault), (js_NotificationPermissionDenied, NotificationPermissionDenied), (js_NotificationPermissionGranted, NotificationPermissionGranted)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_NotificationPermissionDefault :: JSString
+js_NotificationPermissionDefault = "default"
+js_NotificationPermissionDenied :: JSString
+js_NotificationPermissionDenied = "denied"
+js_NotificationPermissionGranted :: JSString
+js_NotificationPermissionGranted = "granted"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OTPCredentialTransportType> (web-otp)
+data OTPCredentialTransportType = OTPCredentialTransportTypeSms
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OTPCredentialTransportType where
+  pToJSVal x = pToJSVal (case x of
+    OTPCredentialTransportTypeSms -> js_OTPCredentialTransportTypeSms
+    )
+
+instance ToJSVal OTPCredentialTransportType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OTPCredentialTransportType where
+  pFromJSVal x = P.maybe (P.error "Unexpected OTPCredentialTransportType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OTPCredentialTransportTypeSms, OTPCredentialTransportTypeSms)]
+
+instance FromJSVal OTPCredentialTransportType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OTPCredentialTransportTypeSms, OTPCredentialTransportTypeSms)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OTPCredentialTransportTypeSms :: JSString
+js_OTPCredentialTransportTypeSms = "sms"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OffscreenRenderingContextId> (html)
+data OffscreenRenderingContextId = OffscreenRenderingContextId2d
+    | OffscreenRenderingContextIdBitmaprenderer
+    | OffscreenRenderingContextIdWebgl
+    | OffscreenRenderingContextIdWebgl2
+    | OffscreenRenderingContextIdWebgpu
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OffscreenRenderingContextId where
+  pToJSVal x = pToJSVal (case x of
+    OffscreenRenderingContextId2d -> js_OffscreenRenderingContextId2d
+    OffscreenRenderingContextIdBitmaprenderer -> js_OffscreenRenderingContextIdBitmaprenderer
+    OffscreenRenderingContextIdWebgl -> js_OffscreenRenderingContextIdWebgl
+    OffscreenRenderingContextIdWebgl2 -> js_OffscreenRenderingContextIdWebgl2
+    OffscreenRenderingContextIdWebgpu -> js_OffscreenRenderingContextIdWebgpu
+    )
+
+instance ToJSVal OffscreenRenderingContextId where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OffscreenRenderingContextId where
+  pFromJSVal x = P.maybe (P.error "Unexpected OffscreenRenderingContextId value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OffscreenRenderingContextId2d, OffscreenRenderingContextId2d), (js_OffscreenRenderingContextIdBitmaprenderer, OffscreenRenderingContextIdBitmaprenderer), (js_OffscreenRenderingContextIdWebgl, OffscreenRenderingContextIdWebgl), (js_OffscreenRenderingContextIdWebgl2, OffscreenRenderingContextIdWebgl2), (js_OffscreenRenderingContextIdWebgpu, OffscreenRenderingContextIdWebgpu)]
+
+instance FromJSVal OffscreenRenderingContextId where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OffscreenRenderingContextId2d, OffscreenRenderingContextId2d), (js_OffscreenRenderingContextIdBitmaprenderer, OffscreenRenderingContextIdBitmaprenderer), (js_OffscreenRenderingContextIdWebgl, OffscreenRenderingContextIdWebgl), (js_OffscreenRenderingContextIdWebgl2, OffscreenRenderingContextIdWebgl2), (js_OffscreenRenderingContextIdWebgpu, OffscreenRenderingContextIdWebgpu)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OffscreenRenderingContextId2d :: JSString
+js_OffscreenRenderingContextId2d = "2d"
+js_OffscreenRenderingContextIdBitmaprenderer :: JSString
+js_OffscreenRenderingContextIdBitmaprenderer = "bitmaprenderer"
+js_OffscreenRenderingContextIdWebgl :: JSString
+js_OffscreenRenderingContextIdWebgl = "webgl"
+js_OffscreenRenderingContextIdWebgl2 :: JSString
+js_OffscreenRenderingContextIdWebgl2 = "webgl2"
+js_OffscreenRenderingContextIdWebgpu :: JSString
+js_OffscreenRenderingContextIdWebgpu = "webgpu"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OperationType> (trust-token-api)
+data OperationType = OperationTypeTokenRequest
+    | OperationTypeSendRedemptionRecord
+    | OperationTypeTokenRedemption
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OperationType where
+  pToJSVal x = pToJSVal (case x of
+    OperationTypeTokenRequest -> js_OperationTypeTokenRequest
+    OperationTypeSendRedemptionRecord -> js_OperationTypeSendRedemptionRecord
+    OperationTypeTokenRedemption -> js_OperationTypeTokenRedemption
+    )
+
+instance ToJSVal OperationType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OperationType where
+  pFromJSVal x = P.maybe (P.error "Unexpected OperationType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OperationTypeTokenRequest, OperationTypeTokenRequest), (js_OperationTypeSendRedemptionRecord, OperationTypeSendRedemptionRecord), (js_OperationTypeTokenRedemption, OperationTypeTokenRedemption)]
+
+instance FromJSVal OperationType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OperationTypeTokenRequest, OperationTypeTokenRequest), (js_OperationTypeSendRedemptionRecord, OperationTypeSendRedemptionRecord), (js_OperationTypeTokenRedemption, OperationTypeTokenRedemption)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OperationTypeTokenRequest :: JSString
+js_OperationTypeTokenRequest = "token-request"
+js_OperationTypeSendRedemptionRecord :: JSString
+js_OperationTypeSendRedemptionRecord = "send-redemption-record"
+js_OperationTypeTokenRedemption :: JSString
+js_OperationTypeTokenRedemption = "token-redemption"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OpusApplication> (webcodecs-opus-codec-registration)
+data OpusApplication = OpusApplicationVoip
+    | OpusApplicationAudio
+    | OpusApplicationLowdelay
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OpusApplication where
+  pToJSVal x = pToJSVal (case x of
+    OpusApplicationVoip -> js_OpusApplicationVoip
+    OpusApplicationAudio -> js_OpusApplicationAudio
+    OpusApplicationLowdelay -> js_OpusApplicationLowdelay
+    )
+
+instance ToJSVal OpusApplication where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OpusApplication where
+  pFromJSVal x = P.maybe (P.error "Unexpected OpusApplication value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OpusApplicationVoip, OpusApplicationVoip), (js_OpusApplicationAudio, OpusApplicationAudio), (js_OpusApplicationLowdelay, OpusApplicationLowdelay)]
+
+instance FromJSVal OpusApplication where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OpusApplicationVoip, OpusApplicationVoip), (js_OpusApplicationAudio, OpusApplicationAudio), (js_OpusApplicationLowdelay, OpusApplicationLowdelay)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OpusApplicationVoip :: JSString
+js_OpusApplicationVoip = "voip"
+js_OpusApplicationAudio :: JSString
+js_OpusApplicationAudio = "audio"
+js_OpusApplicationLowdelay :: JSString
+js_OpusApplicationLowdelay = "lowdelay"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OpusBitstreamFormat> (webcodecs-opus-codec-registration)
+data OpusBitstreamFormat = OpusBitstreamFormatOpus
+    | OpusBitstreamFormatOgg
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OpusBitstreamFormat where
+  pToJSVal x = pToJSVal (case x of
+    OpusBitstreamFormatOpus -> js_OpusBitstreamFormatOpus
+    OpusBitstreamFormatOgg -> js_OpusBitstreamFormatOgg
+    )
+
+instance ToJSVal OpusBitstreamFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OpusBitstreamFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected OpusBitstreamFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OpusBitstreamFormatOpus, OpusBitstreamFormatOpus), (js_OpusBitstreamFormatOgg, OpusBitstreamFormatOgg)]
+
+instance FromJSVal OpusBitstreamFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OpusBitstreamFormatOpus, OpusBitstreamFormatOpus), (js_OpusBitstreamFormatOgg, OpusBitstreamFormatOgg)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OpusBitstreamFormatOpus :: JSString
+js_OpusBitstreamFormatOpus = "opus"
+js_OpusBitstreamFormatOgg :: JSString
+js_OpusBitstreamFormatOgg = "ogg"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OpusSignal> (webcodecs-opus-codec-registration)
+data OpusSignal = OpusSignalAuto
+    | OpusSignalMusic
+    | OpusSignalVoice
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OpusSignal where
+  pToJSVal x = pToJSVal (case x of
+    OpusSignalAuto -> js_OpusSignalAuto
+    OpusSignalMusic -> js_OpusSignalMusic
+    OpusSignalVoice -> js_OpusSignalVoice
+    )
+
+instance ToJSVal OpusSignal where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OpusSignal where
+  pFromJSVal x = P.maybe (P.error "Unexpected OpusSignal value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OpusSignalAuto, OpusSignalAuto), (js_OpusSignalMusic, OpusSignalMusic), (js_OpusSignalVoice, OpusSignalVoice)]
+
+instance FromJSVal OpusSignal where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OpusSignalAuto, OpusSignalAuto), (js_OpusSignalMusic, OpusSignalMusic), (js_OpusSignalVoice, OpusSignalVoice)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OpusSignalAuto :: JSString
+js_OpusSignalAuto = "auto"
+js_OpusSignalMusic :: JSString
+js_OpusSignalMusic = "music"
+js_OpusSignalVoice :: JSString
+js_OpusSignalVoice = "voice"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OrientationLockType> (screen-orientation)
+data OrientationLockType = OrientationLockTypeAny
+    | OrientationLockTypeNatural
+    | OrientationLockTypeLandscape
+    | OrientationLockTypePortrait
+    | OrientationLockTypePortraitPrimary
+    | OrientationLockTypePortraitSecondary
+    | OrientationLockTypeLandscapePrimary
+    | OrientationLockTypeLandscapeSecondary
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OrientationLockType where
+  pToJSVal x = pToJSVal (case x of
+    OrientationLockTypeAny -> js_OrientationLockTypeAny
+    OrientationLockTypeNatural -> js_OrientationLockTypeNatural
+    OrientationLockTypeLandscape -> js_OrientationLockTypeLandscape
+    OrientationLockTypePortrait -> js_OrientationLockTypePortrait
+    OrientationLockTypePortraitPrimary -> js_OrientationLockTypePortraitPrimary
+    OrientationLockTypePortraitSecondary -> js_OrientationLockTypePortraitSecondary
+    OrientationLockTypeLandscapePrimary -> js_OrientationLockTypeLandscapePrimary
+    OrientationLockTypeLandscapeSecondary -> js_OrientationLockTypeLandscapeSecondary
+    )
+
+instance ToJSVal OrientationLockType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OrientationLockType where
+  pFromJSVal x = P.maybe (P.error "Unexpected OrientationLockType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OrientationLockTypeAny, OrientationLockTypeAny), (js_OrientationLockTypeNatural, OrientationLockTypeNatural), (js_OrientationLockTypeLandscape, OrientationLockTypeLandscape), (js_OrientationLockTypePortrait, OrientationLockTypePortrait), (js_OrientationLockTypePortraitPrimary, OrientationLockTypePortraitPrimary), (js_OrientationLockTypePortraitSecondary, OrientationLockTypePortraitSecondary), (js_OrientationLockTypeLandscapePrimary, OrientationLockTypeLandscapePrimary), (js_OrientationLockTypeLandscapeSecondary, OrientationLockTypeLandscapeSecondary)]
+
+instance FromJSVal OrientationLockType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OrientationLockTypeAny, OrientationLockTypeAny), (js_OrientationLockTypeNatural, OrientationLockTypeNatural), (js_OrientationLockTypeLandscape, OrientationLockTypeLandscape), (js_OrientationLockTypePortrait, OrientationLockTypePortrait), (js_OrientationLockTypePortraitPrimary, OrientationLockTypePortraitPrimary), (js_OrientationLockTypePortraitSecondary, OrientationLockTypePortraitSecondary), (js_OrientationLockTypeLandscapePrimary, OrientationLockTypeLandscapePrimary), (js_OrientationLockTypeLandscapeSecondary, OrientationLockTypeLandscapeSecondary)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OrientationLockTypeAny :: JSString
+js_OrientationLockTypeAny = "any"
+js_OrientationLockTypeNatural :: JSString
+js_OrientationLockTypeNatural = "natural"
+js_OrientationLockTypeLandscape :: JSString
+js_OrientationLockTypeLandscape = "landscape"
+js_OrientationLockTypePortrait :: JSString
+js_OrientationLockTypePortrait = "portrait"
+js_OrientationLockTypePortraitPrimary :: JSString
+js_OrientationLockTypePortraitPrimary = "portrait-primary"
+js_OrientationLockTypePortraitSecondary :: JSString
+js_OrientationLockTypePortraitSecondary = "portrait-secondary"
+js_OrientationLockTypeLandscapePrimary :: JSString
+js_OrientationLockTypeLandscapePrimary = "landscape-primary"
+js_OrientationLockTypeLandscapeSecondary :: JSString
+js_OrientationLockTypeLandscapeSecondary = "landscape-secondary"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OrientationType> (screen-orientation)
+data OrientationType = OrientationTypePortraitPrimary
+    | OrientationTypePortraitSecondary
+    | OrientationTypeLandscapePrimary
+    | OrientationTypeLandscapeSecondary
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OrientationType where
+  pToJSVal x = pToJSVal (case x of
+    OrientationTypePortraitPrimary -> js_OrientationTypePortraitPrimary
+    OrientationTypePortraitSecondary -> js_OrientationTypePortraitSecondary
+    OrientationTypeLandscapePrimary -> js_OrientationTypeLandscapePrimary
+    OrientationTypeLandscapeSecondary -> js_OrientationTypeLandscapeSecondary
+    )
+
+instance ToJSVal OrientationType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OrientationType where
+  pFromJSVal x = P.maybe (P.error "Unexpected OrientationType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OrientationTypePortraitPrimary, OrientationTypePortraitPrimary), (js_OrientationTypePortraitSecondary, OrientationTypePortraitSecondary), (js_OrientationTypeLandscapePrimary, OrientationTypeLandscapePrimary), (js_OrientationTypeLandscapeSecondary, OrientationTypeLandscapeSecondary)]
+
+instance FromJSVal OrientationType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OrientationTypePortraitPrimary, OrientationTypePortraitPrimary), (js_OrientationTypePortraitSecondary, OrientationTypePortraitSecondary), (js_OrientationTypeLandscapePrimary, OrientationTypeLandscapePrimary), (js_OrientationTypeLandscapeSecondary, OrientationTypeLandscapeSecondary)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OrientationTypePortraitPrimary :: JSString
+js_OrientationTypePortraitPrimary = "portrait-primary"
+js_OrientationTypePortraitSecondary :: JSString
+js_OrientationTypePortraitSecondary = "portrait-secondary"
+js_OrientationTypeLandscapePrimary :: JSString
+js_OrientationTypeLandscapePrimary = "landscape-primary"
+js_OrientationTypeLandscapeSecondary :: JSString
+js_OrientationTypeLandscapeSecondary = "landscape-secondary"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OscillatorType> (webaudio-1.1)
+data OscillatorType = OscillatorTypeSine
+    | OscillatorTypeSquare
+    | OscillatorTypeSawtooth
+    | OscillatorTypeTriangle
+    | OscillatorTypeCustom
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OscillatorType where
+  pToJSVal x = pToJSVal (case x of
+    OscillatorTypeSine -> js_OscillatorTypeSine
+    OscillatorTypeSquare -> js_OscillatorTypeSquare
+    OscillatorTypeSawtooth -> js_OscillatorTypeSawtooth
+    OscillatorTypeTriangle -> js_OscillatorTypeTriangle
+    OscillatorTypeCustom -> js_OscillatorTypeCustom
+    )
+
+instance ToJSVal OscillatorType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OscillatorType where
+  pFromJSVal x = P.maybe (P.error "Unexpected OscillatorType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OscillatorTypeSine, OscillatorTypeSine), (js_OscillatorTypeSquare, OscillatorTypeSquare), (js_OscillatorTypeSawtooth, OscillatorTypeSawtooth), (js_OscillatorTypeTriangle, OscillatorTypeTriangle), (js_OscillatorTypeCustom, OscillatorTypeCustom)]
+
+instance FromJSVal OscillatorType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OscillatorTypeSine, OscillatorTypeSine), (js_OscillatorTypeSquare, OscillatorTypeSquare), (js_OscillatorTypeSawtooth, OscillatorTypeSawtooth), (js_OscillatorTypeTriangle, OscillatorTypeTriangle), (js_OscillatorTypeCustom, OscillatorTypeCustom)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OscillatorTypeSine :: JSString
+js_OscillatorTypeSine = "sine"
+js_OscillatorTypeSquare :: JSString
+js_OscillatorTypeSquare = "square"
+js_OscillatorTypeSawtooth :: JSString
+js_OscillatorTypeSawtooth = "sawtooth"
+js_OscillatorTypeTriangle :: JSString
+js_OscillatorTypeTriangle = "triangle"
+js_OscillatorTypeCustom :: JSString
+js_OscillatorTypeCustom = "custom"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API OverSampleType> (webaudio-1.1)
+data OverSampleType = OverSampleTypeNone
+    | OverSampleType2x
+    | OverSampleType4x
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal OverSampleType where
+  pToJSVal x = pToJSVal (case x of
+    OverSampleTypeNone -> js_OverSampleTypeNone
+    OverSampleType2x -> js_OverSampleType2x
+    OverSampleType4x -> js_OverSampleType4x
+    )
+
+instance ToJSVal OverSampleType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal OverSampleType where
+  pFromJSVal x = P.maybe (P.error "Unexpected OverSampleType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OverSampleTypeNone, OverSampleTypeNone), (js_OverSampleType2x, OverSampleType2x), (js_OverSampleType4x, OverSampleType4x)]
+
+instance FromJSVal OverSampleType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_OverSampleTypeNone, OverSampleTypeNone), (js_OverSampleType2x, OverSampleType2x), (js_OverSampleType4x, OverSampleType4x)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_OverSampleTypeNone :: JSString
+js_OverSampleTypeNone = "none"
+js_OverSampleType2x :: JSString
+js_OverSampleType2x = "2x"
+js_OverSampleType4x :: JSString
+js_OverSampleType4x = "4x"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PanningModelType> (webaudio-1.1)
+data PanningModelType = PanningModelTypeEqualpower
+    | PanningModelTypeHRTF
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PanningModelType where
+  pToJSVal x = pToJSVal (case x of
+    PanningModelTypeEqualpower -> js_PanningModelTypeEqualpower
+    PanningModelTypeHRTF -> js_PanningModelTypeHRTF
+    )
+
+instance ToJSVal PanningModelType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PanningModelType where
+  pFromJSVal x = P.maybe (P.error "Unexpected PanningModelType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PanningModelTypeEqualpower, PanningModelTypeEqualpower), (js_PanningModelTypeHRTF, PanningModelTypeHRTF)]
+
+instance FromJSVal PanningModelType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PanningModelTypeEqualpower, PanningModelTypeEqualpower), (js_PanningModelTypeHRTF, PanningModelTypeHRTF)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PanningModelTypeEqualpower :: JSString
+js_PanningModelTypeEqualpower = "equalpower"
+js_PanningModelTypeHRTF :: JSString
+js_PanningModelTypeHRTF = "HRTF"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ParityType> (serial)
+data ParityType = ParityTypeNone
+    | ParityTypeEven
+    | ParityTypeOdd
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ParityType where
+  pToJSVal x = pToJSVal (case x of
+    ParityTypeNone -> js_ParityTypeNone
+    ParityTypeEven -> js_ParityTypeEven
+    ParityTypeOdd -> js_ParityTypeOdd
+    )
+
+instance ToJSVal ParityType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ParityType where
+  pFromJSVal x = P.maybe (P.error "Unexpected ParityType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ParityTypeNone, ParityTypeNone), (js_ParityTypeEven, ParityTypeEven), (js_ParityTypeOdd, ParityTypeOdd)]
+
+instance FromJSVal ParityType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ParityTypeNone, ParityTypeNone), (js_ParityTypeEven, ParityTypeEven), (js_ParityTypeOdd, ParityTypeOdd)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ParityTypeNone :: JSString
+js_ParityTypeNone = "none"
+js_ParityTypeEven :: JSString
+js_ParityTypeEven = "even"
+js_ParityTypeOdd :: JSString
+js_ParityTypeOdd = "odd"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PaymentComplete> (payment-request)
+data PaymentComplete = PaymentCompleteFail
+    | PaymentCompleteSuccess
+    | PaymentCompleteUnknown
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PaymentComplete where
+  pToJSVal x = pToJSVal (case x of
+    PaymentCompleteFail -> js_PaymentCompleteFail
+    PaymentCompleteSuccess -> js_PaymentCompleteSuccess
+    PaymentCompleteUnknown -> js_PaymentCompleteUnknown
+    )
+
+instance ToJSVal PaymentComplete where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PaymentComplete where
+  pFromJSVal x = P.maybe (P.error "Unexpected PaymentComplete value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PaymentCompleteFail, PaymentCompleteFail), (js_PaymentCompleteSuccess, PaymentCompleteSuccess), (js_PaymentCompleteUnknown, PaymentCompleteUnknown)]
+
+instance FromJSVal PaymentComplete where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PaymentCompleteFail, PaymentCompleteFail), (js_PaymentCompleteSuccess, PaymentCompleteSuccess), (js_PaymentCompleteUnknown, PaymentCompleteUnknown)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PaymentCompleteFail :: JSString
+js_PaymentCompleteFail = "fail"
+js_PaymentCompleteSuccess :: JSString
+js_PaymentCompleteSuccess = "success"
+js_PaymentCompleteUnknown :: JSString
+js_PaymentCompleteUnknown = "unknown"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PaymentShippingType> (payment-request)
+data PaymentShippingType = PaymentShippingTypeShipping
+    | PaymentShippingTypeDelivery
+    | PaymentShippingTypePickup
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PaymentShippingType where
+  pToJSVal x = pToJSVal (case x of
+    PaymentShippingTypeShipping -> js_PaymentShippingTypeShipping
+    PaymentShippingTypeDelivery -> js_PaymentShippingTypeDelivery
+    PaymentShippingTypePickup -> js_PaymentShippingTypePickup
+    )
+
+instance ToJSVal PaymentShippingType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PaymentShippingType where
+  pFromJSVal x = P.maybe (P.error "Unexpected PaymentShippingType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PaymentShippingTypeShipping, PaymentShippingTypeShipping), (js_PaymentShippingTypeDelivery, PaymentShippingTypeDelivery), (js_PaymentShippingTypePickup, PaymentShippingTypePickup)]
+
+instance FromJSVal PaymentShippingType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PaymentShippingTypeShipping, PaymentShippingTypeShipping), (js_PaymentShippingTypeDelivery, PaymentShippingTypeDelivery), (js_PaymentShippingTypePickup, PaymentShippingTypePickup)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PaymentShippingTypeShipping :: JSString
+js_PaymentShippingTypeShipping = "shipping"
+js_PaymentShippingTypeDelivery :: JSString
+js_PaymentShippingTypeDelivery = "delivery"
+js_PaymentShippingTypePickup :: JSString
+js_PaymentShippingTypePickup = "pickup"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PermissionState> (permissions)
+data PermissionState = PermissionStateGranted
+    | PermissionStateDenied
+    | PermissionStatePrompt
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PermissionState where
+  pToJSVal x = pToJSVal (case x of
+    PermissionStateGranted -> js_PermissionStateGranted
+    PermissionStateDenied -> js_PermissionStateDenied
+    PermissionStatePrompt -> js_PermissionStatePrompt
+    )
+
+instance ToJSVal PermissionState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PermissionState where
+  pFromJSVal x = P.maybe (P.error "Unexpected PermissionState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PermissionStateGranted, PermissionStateGranted), (js_PermissionStateDenied, PermissionStateDenied), (js_PermissionStatePrompt, PermissionStatePrompt)]
+
+instance FromJSVal PermissionState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PermissionStateGranted, PermissionStateGranted), (js_PermissionStateDenied, PermissionStateDenied), (js_PermissionStatePrompt, PermissionStatePrompt)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PermissionStateGranted :: JSString
+js_PermissionStateGranted = "granted"
+js_PermissionStateDenied :: JSString
+js_PermissionStateDenied = "denied"
+js_PermissionStatePrompt :: JSString
+js_PermissionStatePrompt = "prompt"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PlaybackDirection> (web-animations-1)
+data PlaybackDirection = PlaybackDirectionNormal
+    | PlaybackDirectionReverse
+    | PlaybackDirectionAlternate
+    | PlaybackDirectionAlternateReverse
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PlaybackDirection where
+  pToJSVal x = pToJSVal (case x of
+    PlaybackDirectionNormal -> js_PlaybackDirectionNormal
+    PlaybackDirectionReverse -> js_PlaybackDirectionReverse
+    PlaybackDirectionAlternate -> js_PlaybackDirectionAlternate
+    PlaybackDirectionAlternateReverse -> js_PlaybackDirectionAlternateReverse
+    )
+
+instance ToJSVal PlaybackDirection where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PlaybackDirection where
+  pFromJSVal x = P.maybe (P.error "Unexpected PlaybackDirection value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PlaybackDirectionNormal, PlaybackDirectionNormal), (js_PlaybackDirectionReverse, PlaybackDirectionReverse), (js_PlaybackDirectionAlternate, PlaybackDirectionAlternate), (js_PlaybackDirectionAlternateReverse, PlaybackDirectionAlternateReverse)]
+
+instance FromJSVal PlaybackDirection where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PlaybackDirectionNormal, PlaybackDirectionNormal), (js_PlaybackDirectionReverse, PlaybackDirectionReverse), (js_PlaybackDirectionAlternate, PlaybackDirectionAlternate), (js_PlaybackDirectionAlternateReverse, PlaybackDirectionAlternateReverse)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PlaybackDirectionNormal :: JSString
+js_PlaybackDirectionNormal = "normal"
+js_PlaybackDirectionReverse :: JSString
+js_PlaybackDirectionReverse = "reverse"
+js_PlaybackDirectionAlternate :: JSString
+js_PlaybackDirectionAlternate = "alternate"
+js_PlaybackDirectionAlternateReverse :: JSString
+js_PlaybackDirectionAlternateReverse = "alternate-reverse"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PositionAlignSetting> (webvtt1)
+data PositionAlignSetting = PositionAlignSettingLineLeft
+    | PositionAlignSettingCenter
+    | PositionAlignSettingLineRight
+    | PositionAlignSettingAuto
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PositionAlignSetting where
+  pToJSVal x = pToJSVal (case x of
+    PositionAlignSettingLineLeft -> js_PositionAlignSettingLineLeft
+    PositionAlignSettingCenter -> js_PositionAlignSettingCenter
+    PositionAlignSettingLineRight -> js_PositionAlignSettingLineRight
+    PositionAlignSettingAuto -> js_PositionAlignSettingAuto
+    )
+
+instance ToJSVal PositionAlignSetting where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PositionAlignSetting where
+  pFromJSVal x = P.maybe (P.error "Unexpected PositionAlignSetting value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PositionAlignSettingLineLeft, PositionAlignSettingLineLeft), (js_PositionAlignSettingCenter, PositionAlignSettingCenter), (js_PositionAlignSettingLineRight, PositionAlignSettingLineRight), (js_PositionAlignSettingAuto, PositionAlignSettingAuto)]
+
+instance FromJSVal PositionAlignSetting where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PositionAlignSettingLineLeft, PositionAlignSettingLineLeft), (js_PositionAlignSettingCenter, PositionAlignSettingCenter), (js_PositionAlignSettingLineRight, PositionAlignSettingLineRight), (js_PositionAlignSettingAuto, PositionAlignSettingAuto)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PositionAlignSettingLineLeft :: JSString
+js_PositionAlignSettingLineLeft = "line-left"
+js_PositionAlignSettingCenter :: JSString
+js_PositionAlignSettingCenter = "center"
+js_PositionAlignSettingLineRight :: JSString
+js_PositionAlignSettingLineRight = "line-right"
+js_PositionAlignSettingAuto :: JSString
+js_PositionAlignSettingAuto = "auto"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PredefinedColorSpace> (html)
+data PredefinedColorSpace = PredefinedColorSpaceSrgb
+    | PredefinedColorSpaceSrgbLinear
+    | PredefinedColorSpaceDisplayP3
+    | PredefinedColorSpaceDisplayP3Linear
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PredefinedColorSpace where
+  pToJSVal x = pToJSVal (case x of
+    PredefinedColorSpaceSrgb -> js_PredefinedColorSpaceSrgb
+    PredefinedColorSpaceSrgbLinear -> js_PredefinedColorSpaceSrgbLinear
+    PredefinedColorSpaceDisplayP3 -> js_PredefinedColorSpaceDisplayP3
+    PredefinedColorSpaceDisplayP3Linear -> js_PredefinedColorSpaceDisplayP3Linear
+    )
+
+instance ToJSVal PredefinedColorSpace where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PredefinedColorSpace where
+  pFromJSVal x = P.maybe (P.error "Unexpected PredefinedColorSpace value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PredefinedColorSpaceSrgb, PredefinedColorSpaceSrgb), (js_PredefinedColorSpaceSrgbLinear, PredefinedColorSpaceSrgbLinear), (js_PredefinedColorSpaceDisplayP3, PredefinedColorSpaceDisplayP3), (js_PredefinedColorSpaceDisplayP3Linear, PredefinedColorSpaceDisplayP3Linear)]
+
+instance FromJSVal PredefinedColorSpace where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PredefinedColorSpaceSrgb, PredefinedColorSpaceSrgb), (js_PredefinedColorSpaceSrgbLinear, PredefinedColorSpaceSrgbLinear), (js_PredefinedColorSpaceDisplayP3, PredefinedColorSpaceDisplayP3), (js_PredefinedColorSpaceDisplayP3Linear, PredefinedColorSpaceDisplayP3Linear)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PredefinedColorSpaceSrgb :: JSString
+js_PredefinedColorSpaceSrgb = "srgb"
+js_PredefinedColorSpaceSrgbLinear :: JSString
+js_PredefinedColorSpaceSrgbLinear = "srgb-linear"
+js_PredefinedColorSpaceDisplayP3 :: JSString
+js_PredefinedColorSpaceDisplayP3 = "display-p3"
+js_PredefinedColorSpaceDisplayP3Linear :: JSString
+js_PredefinedColorSpaceDisplayP3Linear = "display-p3-linear"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PresentationStyle> (clipboard-apis)
+data PresentationStyle = PresentationStyleUnspecified
+    | PresentationStyleInline
+    | PresentationStyleAttachment
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PresentationStyle where
+  pToJSVal x = pToJSVal (case x of
+    PresentationStyleUnspecified -> js_PresentationStyleUnspecified
+    PresentationStyleInline -> js_PresentationStyleInline
+    PresentationStyleAttachment -> js_PresentationStyleAttachment
+    )
+
+instance ToJSVal PresentationStyle where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PresentationStyle where
+  pFromJSVal x = P.maybe (P.error "Unexpected PresentationStyle value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PresentationStyleUnspecified, PresentationStyleUnspecified), (js_PresentationStyleInline, PresentationStyleInline), (js_PresentationStyleAttachment, PresentationStyleAttachment)]
+
+instance FromJSVal PresentationStyle where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PresentationStyleUnspecified, PresentationStyleUnspecified), (js_PresentationStyleInline, PresentationStyleInline), (js_PresentationStyleAttachment, PresentationStyleAttachment)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PresentationStyleUnspecified :: JSString
+js_PresentationStyleUnspecified = "unspecified"
+js_PresentationStyleInline :: JSString
+js_PresentationStyleInline = "inline"
+js_PresentationStyleAttachment :: JSString
+js_PresentationStyleAttachment = "attachment"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API PushEncryptionKeyName> (push-api)
+data PushEncryptionKeyName = PushEncryptionKeyNameP256dh
+    | PushEncryptionKeyNameAuth
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal PushEncryptionKeyName where
+  pToJSVal x = pToJSVal (case x of
+    PushEncryptionKeyNameP256dh -> js_PushEncryptionKeyNameP256dh
+    PushEncryptionKeyNameAuth -> js_PushEncryptionKeyNameAuth
+    )
+
+instance ToJSVal PushEncryptionKeyName where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal PushEncryptionKeyName where
+  pFromJSVal x = P.maybe (P.error "Unexpected PushEncryptionKeyName value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PushEncryptionKeyNameP256dh, PushEncryptionKeyNameP256dh), (js_PushEncryptionKeyNameAuth, PushEncryptionKeyNameAuth)]
+
+instance FromJSVal PushEncryptionKeyName where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_PushEncryptionKeyNameP256dh, PushEncryptionKeyNameP256dh), (js_PushEncryptionKeyNameAuth, PushEncryptionKeyNameAuth)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_PushEncryptionKeyNameP256dh :: JSString
+js_PushEncryptionKeyNameP256dh = "p256dh"
+js_PushEncryptionKeyNameAuth :: JSString
+js_PushEncryptionKeyNameAuth = "auth"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCBundlePolicy> (webrtc)
+data RTCBundlePolicy = RTCBundlePolicyBalanced
+    | RTCBundlePolicyMaxCompat
+    | RTCBundlePolicyMaxBundle
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCBundlePolicy where
+  pToJSVal x = pToJSVal (case x of
+    RTCBundlePolicyBalanced -> js_RTCBundlePolicyBalanced
+    RTCBundlePolicyMaxCompat -> js_RTCBundlePolicyMaxCompat
+    RTCBundlePolicyMaxBundle -> js_RTCBundlePolicyMaxBundle
+    )
+
+instance ToJSVal RTCBundlePolicy where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCBundlePolicy where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCBundlePolicy value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCBundlePolicyBalanced, RTCBundlePolicyBalanced), (js_RTCBundlePolicyMaxCompat, RTCBundlePolicyMaxCompat), (js_RTCBundlePolicyMaxBundle, RTCBundlePolicyMaxBundle)]
+
+instance FromJSVal RTCBundlePolicy where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCBundlePolicyBalanced, RTCBundlePolicyBalanced), (js_RTCBundlePolicyMaxCompat, RTCBundlePolicyMaxCompat), (js_RTCBundlePolicyMaxBundle, RTCBundlePolicyMaxBundle)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCBundlePolicyBalanced :: JSString
+js_RTCBundlePolicyBalanced = "balanced"
+js_RTCBundlePolicyMaxCompat :: JSString
+js_RTCBundlePolicyMaxCompat = "max-compat"
+js_RTCBundlePolicyMaxBundle :: JSString
+js_RTCBundlePolicyMaxBundle = "max-bundle"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCDataChannelState> (webrtc)
+data RTCDataChannelState = RTCDataChannelStateConnecting
+    | RTCDataChannelStateOpen
+    | RTCDataChannelStateClosing
+    | RTCDataChannelStateClosed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCDataChannelState where
+  pToJSVal x = pToJSVal (case x of
+    RTCDataChannelStateConnecting -> js_RTCDataChannelStateConnecting
+    RTCDataChannelStateOpen -> js_RTCDataChannelStateOpen
+    RTCDataChannelStateClosing -> js_RTCDataChannelStateClosing
+    RTCDataChannelStateClosed -> js_RTCDataChannelStateClosed
+    )
+
+instance ToJSVal RTCDataChannelState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCDataChannelState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCDataChannelState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCDataChannelStateConnecting, RTCDataChannelStateConnecting), (js_RTCDataChannelStateOpen, RTCDataChannelStateOpen), (js_RTCDataChannelStateClosing, RTCDataChannelStateClosing), (js_RTCDataChannelStateClosed, RTCDataChannelStateClosed)]
+
+instance FromJSVal RTCDataChannelState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCDataChannelStateConnecting, RTCDataChannelStateConnecting), (js_RTCDataChannelStateOpen, RTCDataChannelStateOpen), (js_RTCDataChannelStateClosing, RTCDataChannelStateClosing), (js_RTCDataChannelStateClosed, RTCDataChannelStateClosed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCDataChannelStateConnecting :: JSString
+js_RTCDataChannelStateConnecting = "connecting"
+js_RTCDataChannelStateOpen :: JSString
+js_RTCDataChannelStateOpen = "open"
+js_RTCDataChannelStateClosing :: JSString
+js_RTCDataChannelStateClosing = "closing"
+js_RTCDataChannelStateClosed :: JSString
+js_RTCDataChannelStateClosed = "closed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCDegradationPreference> (mst-content-hint)
+data RTCDegradationPreference = RTCDegradationPreferenceMaintainFramerate
+    | RTCDegradationPreferenceMaintainResolution
+    | RTCDegradationPreferenceBalanced
+    | RTCDegradationPreferenceMaintainFramerateAndResolution
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCDegradationPreference where
+  pToJSVal x = pToJSVal (case x of
+    RTCDegradationPreferenceMaintainFramerate -> js_RTCDegradationPreferenceMaintainFramerate
+    RTCDegradationPreferenceMaintainResolution -> js_RTCDegradationPreferenceMaintainResolution
+    RTCDegradationPreferenceBalanced -> js_RTCDegradationPreferenceBalanced
+    RTCDegradationPreferenceMaintainFramerateAndResolution -> js_RTCDegradationPreferenceMaintainFramerateAndResolution
+    )
+
+instance ToJSVal RTCDegradationPreference where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCDegradationPreference where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCDegradationPreference value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCDegradationPreferenceMaintainFramerate, RTCDegradationPreferenceMaintainFramerate), (js_RTCDegradationPreferenceMaintainResolution, RTCDegradationPreferenceMaintainResolution), (js_RTCDegradationPreferenceBalanced, RTCDegradationPreferenceBalanced), (js_RTCDegradationPreferenceMaintainFramerateAndResolution, RTCDegradationPreferenceMaintainFramerateAndResolution)]
+
+instance FromJSVal RTCDegradationPreference where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCDegradationPreferenceMaintainFramerate, RTCDegradationPreferenceMaintainFramerate), (js_RTCDegradationPreferenceMaintainResolution, RTCDegradationPreferenceMaintainResolution), (js_RTCDegradationPreferenceBalanced, RTCDegradationPreferenceBalanced), (js_RTCDegradationPreferenceMaintainFramerateAndResolution, RTCDegradationPreferenceMaintainFramerateAndResolution)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCDegradationPreferenceMaintainFramerate :: JSString
+js_RTCDegradationPreferenceMaintainFramerate = "maintain-framerate"
+js_RTCDegradationPreferenceMaintainResolution :: JSString
+js_RTCDegradationPreferenceMaintainResolution = "maintain-resolution"
+js_RTCDegradationPreferenceBalanced :: JSString
+js_RTCDegradationPreferenceBalanced = "balanced"
+js_RTCDegradationPreferenceMaintainFramerateAndResolution :: JSString
+js_RTCDegradationPreferenceMaintainFramerateAndResolution = "maintain-framerate-and-resolution"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCDtlsTransportState> (webrtc)
+data RTCDtlsTransportState = RTCDtlsTransportStateNew
+    | RTCDtlsTransportStateConnecting
+    | RTCDtlsTransportStateConnected
+    | RTCDtlsTransportStateClosed
+    | RTCDtlsTransportStateFailed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCDtlsTransportState where
+  pToJSVal x = pToJSVal (case x of
+    RTCDtlsTransportStateNew -> js_RTCDtlsTransportStateNew
+    RTCDtlsTransportStateConnecting -> js_RTCDtlsTransportStateConnecting
+    RTCDtlsTransportStateConnected -> js_RTCDtlsTransportStateConnected
+    RTCDtlsTransportStateClosed -> js_RTCDtlsTransportStateClosed
+    RTCDtlsTransportStateFailed -> js_RTCDtlsTransportStateFailed
+    )
+
+instance ToJSVal RTCDtlsTransportState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCDtlsTransportState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCDtlsTransportState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCDtlsTransportStateNew, RTCDtlsTransportStateNew), (js_RTCDtlsTransportStateConnecting, RTCDtlsTransportStateConnecting), (js_RTCDtlsTransportStateConnected, RTCDtlsTransportStateConnected), (js_RTCDtlsTransportStateClosed, RTCDtlsTransportStateClosed), (js_RTCDtlsTransportStateFailed, RTCDtlsTransportStateFailed)]
+
+instance FromJSVal RTCDtlsTransportState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCDtlsTransportStateNew, RTCDtlsTransportStateNew), (js_RTCDtlsTransportStateConnecting, RTCDtlsTransportStateConnecting), (js_RTCDtlsTransportStateConnected, RTCDtlsTransportStateConnected), (js_RTCDtlsTransportStateClosed, RTCDtlsTransportStateClosed), (js_RTCDtlsTransportStateFailed, RTCDtlsTransportStateFailed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCDtlsTransportStateNew :: JSString
+js_RTCDtlsTransportStateNew = "new"
+js_RTCDtlsTransportStateConnecting :: JSString
+js_RTCDtlsTransportStateConnecting = "connecting"
+js_RTCDtlsTransportStateConnected :: JSString
+js_RTCDtlsTransportStateConnected = "connected"
+js_RTCDtlsTransportStateClosed :: JSString
+js_RTCDtlsTransportStateClosed = "closed"
+js_RTCDtlsTransportStateFailed :: JSString
+js_RTCDtlsTransportStateFailed = "failed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCErrorDetailType> (webrtc)
+data RTCErrorDetailType = RTCErrorDetailTypeDataChannelFailure
+    | RTCErrorDetailTypeDtlsFailure
+    | RTCErrorDetailTypeFingerprintFailure
+    | RTCErrorDetailTypeSctpFailure
+    | RTCErrorDetailTypeSdpSyntaxError
+    | RTCErrorDetailTypeHardwareEncoderNotAvailable
+    | RTCErrorDetailTypeHardwareEncoderError
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCErrorDetailType where
+  pToJSVal x = pToJSVal (case x of
+    RTCErrorDetailTypeDataChannelFailure -> js_RTCErrorDetailTypeDataChannelFailure
+    RTCErrorDetailTypeDtlsFailure -> js_RTCErrorDetailTypeDtlsFailure
+    RTCErrorDetailTypeFingerprintFailure -> js_RTCErrorDetailTypeFingerprintFailure
+    RTCErrorDetailTypeSctpFailure -> js_RTCErrorDetailTypeSctpFailure
+    RTCErrorDetailTypeSdpSyntaxError -> js_RTCErrorDetailTypeSdpSyntaxError
+    RTCErrorDetailTypeHardwareEncoderNotAvailable -> js_RTCErrorDetailTypeHardwareEncoderNotAvailable
+    RTCErrorDetailTypeHardwareEncoderError -> js_RTCErrorDetailTypeHardwareEncoderError
+    )
+
+instance ToJSVal RTCErrorDetailType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCErrorDetailType where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCErrorDetailType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCErrorDetailTypeDataChannelFailure, RTCErrorDetailTypeDataChannelFailure), (js_RTCErrorDetailTypeDtlsFailure, RTCErrorDetailTypeDtlsFailure), (js_RTCErrorDetailTypeFingerprintFailure, RTCErrorDetailTypeFingerprintFailure), (js_RTCErrorDetailTypeSctpFailure, RTCErrorDetailTypeSctpFailure), (js_RTCErrorDetailTypeSdpSyntaxError, RTCErrorDetailTypeSdpSyntaxError), (js_RTCErrorDetailTypeHardwareEncoderNotAvailable, RTCErrorDetailTypeHardwareEncoderNotAvailable), (js_RTCErrorDetailTypeHardwareEncoderError, RTCErrorDetailTypeHardwareEncoderError)]
+
+instance FromJSVal RTCErrorDetailType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCErrorDetailTypeDataChannelFailure, RTCErrorDetailTypeDataChannelFailure), (js_RTCErrorDetailTypeDtlsFailure, RTCErrorDetailTypeDtlsFailure), (js_RTCErrorDetailTypeFingerprintFailure, RTCErrorDetailTypeFingerprintFailure), (js_RTCErrorDetailTypeSctpFailure, RTCErrorDetailTypeSctpFailure), (js_RTCErrorDetailTypeSdpSyntaxError, RTCErrorDetailTypeSdpSyntaxError), (js_RTCErrorDetailTypeHardwareEncoderNotAvailable, RTCErrorDetailTypeHardwareEncoderNotAvailable), (js_RTCErrorDetailTypeHardwareEncoderError, RTCErrorDetailTypeHardwareEncoderError)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCErrorDetailTypeDataChannelFailure :: JSString
+js_RTCErrorDetailTypeDataChannelFailure = "data-channel-failure"
+js_RTCErrorDetailTypeDtlsFailure :: JSString
+js_RTCErrorDetailTypeDtlsFailure = "dtls-failure"
+js_RTCErrorDetailTypeFingerprintFailure :: JSString
+js_RTCErrorDetailTypeFingerprintFailure = "fingerprint-failure"
+js_RTCErrorDetailTypeSctpFailure :: JSString
+js_RTCErrorDetailTypeSctpFailure = "sctp-failure"
+js_RTCErrorDetailTypeSdpSyntaxError :: JSString
+js_RTCErrorDetailTypeSdpSyntaxError = "sdp-syntax-error"
+js_RTCErrorDetailTypeHardwareEncoderNotAvailable :: JSString
+js_RTCErrorDetailTypeHardwareEncoderNotAvailable = "hardware-encoder-not-available"
+js_RTCErrorDetailTypeHardwareEncoderError :: JSString
+js_RTCErrorDetailTypeHardwareEncoderError = "hardware-encoder-error"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceCandidateType> (webrtc)
+data RTCIceCandidateType = RTCIceCandidateTypeHost
+    | RTCIceCandidateTypeSrflx
+    | RTCIceCandidateTypePrflx
+    | RTCIceCandidateTypeRelay
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceCandidateType where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceCandidateTypeHost -> js_RTCIceCandidateTypeHost
+    RTCIceCandidateTypeSrflx -> js_RTCIceCandidateTypeSrflx
+    RTCIceCandidateTypePrflx -> js_RTCIceCandidateTypePrflx
+    RTCIceCandidateTypeRelay -> js_RTCIceCandidateTypeRelay
+    )
+
+instance ToJSVal RTCIceCandidateType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceCandidateType where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceCandidateType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceCandidateTypeHost, RTCIceCandidateTypeHost), (js_RTCIceCandidateTypeSrflx, RTCIceCandidateTypeSrflx), (js_RTCIceCandidateTypePrflx, RTCIceCandidateTypePrflx), (js_RTCIceCandidateTypeRelay, RTCIceCandidateTypeRelay)]
+
+instance FromJSVal RTCIceCandidateType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceCandidateTypeHost, RTCIceCandidateTypeHost), (js_RTCIceCandidateTypeSrflx, RTCIceCandidateTypeSrflx), (js_RTCIceCandidateTypePrflx, RTCIceCandidateTypePrflx), (js_RTCIceCandidateTypeRelay, RTCIceCandidateTypeRelay)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceCandidateTypeHost :: JSString
+js_RTCIceCandidateTypeHost = "host"
+js_RTCIceCandidateTypeSrflx :: JSString
+js_RTCIceCandidateTypeSrflx = "srflx"
+js_RTCIceCandidateTypePrflx :: JSString
+js_RTCIceCandidateTypePrflx = "prflx"
+js_RTCIceCandidateTypeRelay :: JSString
+js_RTCIceCandidateTypeRelay = "relay"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceComponent> (webrtc)
+data RTCIceComponent = RTCIceComponentRtp
+    | RTCIceComponentRtcp
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceComponent where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceComponentRtp -> js_RTCIceComponentRtp
+    RTCIceComponentRtcp -> js_RTCIceComponentRtcp
+    )
+
+instance ToJSVal RTCIceComponent where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceComponent where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceComponent value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceComponentRtp, RTCIceComponentRtp), (js_RTCIceComponentRtcp, RTCIceComponentRtcp)]
+
+instance FromJSVal RTCIceComponent where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceComponentRtp, RTCIceComponentRtp), (js_RTCIceComponentRtcp, RTCIceComponentRtcp)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceComponentRtp :: JSString
+js_RTCIceComponentRtp = "rtp"
+js_RTCIceComponentRtcp :: JSString
+js_RTCIceComponentRtcp = "rtcp"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceConnectionState> (webrtc)
+data RTCIceConnectionState = RTCIceConnectionStateClosed
+    | RTCIceConnectionStateFailed
+    | RTCIceConnectionStateDisconnected
+    | RTCIceConnectionStateNew
+    | RTCIceConnectionStateChecking
+    | RTCIceConnectionStateCompleted
+    | RTCIceConnectionStateConnected
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceConnectionState where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceConnectionStateClosed -> js_RTCIceConnectionStateClosed
+    RTCIceConnectionStateFailed -> js_RTCIceConnectionStateFailed
+    RTCIceConnectionStateDisconnected -> js_RTCIceConnectionStateDisconnected
+    RTCIceConnectionStateNew -> js_RTCIceConnectionStateNew
+    RTCIceConnectionStateChecking -> js_RTCIceConnectionStateChecking
+    RTCIceConnectionStateCompleted -> js_RTCIceConnectionStateCompleted
+    RTCIceConnectionStateConnected -> js_RTCIceConnectionStateConnected
+    )
+
+instance ToJSVal RTCIceConnectionState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceConnectionState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceConnectionState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceConnectionStateClosed, RTCIceConnectionStateClosed), (js_RTCIceConnectionStateFailed, RTCIceConnectionStateFailed), (js_RTCIceConnectionStateDisconnected, RTCIceConnectionStateDisconnected), (js_RTCIceConnectionStateNew, RTCIceConnectionStateNew), (js_RTCIceConnectionStateChecking, RTCIceConnectionStateChecking), (js_RTCIceConnectionStateCompleted, RTCIceConnectionStateCompleted), (js_RTCIceConnectionStateConnected, RTCIceConnectionStateConnected)]
+
+instance FromJSVal RTCIceConnectionState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceConnectionStateClosed, RTCIceConnectionStateClosed), (js_RTCIceConnectionStateFailed, RTCIceConnectionStateFailed), (js_RTCIceConnectionStateDisconnected, RTCIceConnectionStateDisconnected), (js_RTCIceConnectionStateNew, RTCIceConnectionStateNew), (js_RTCIceConnectionStateChecking, RTCIceConnectionStateChecking), (js_RTCIceConnectionStateCompleted, RTCIceConnectionStateCompleted), (js_RTCIceConnectionStateConnected, RTCIceConnectionStateConnected)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceConnectionStateClosed :: JSString
+js_RTCIceConnectionStateClosed = "closed"
+js_RTCIceConnectionStateFailed :: JSString
+js_RTCIceConnectionStateFailed = "failed"
+js_RTCIceConnectionStateDisconnected :: JSString
+js_RTCIceConnectionStateDisconnected = "disconnected"
+js_RTCIceConnectionStateNew :: JSString
+js_RTCIceConnectionStateNew = "new"
+js_RTCIceConnectionStateChecking :: JSString
+js_RTCIceConnectionStateChecking = "checking"
+js_RTCIceConnectionStateCompleted :: JSString
+js_RTCIceConnectionStateCompleted = "completed"
+js_RTCIceConnectionStateConnected :: JSString
+js_RTCIceConnectionStateConnected = "connected"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceGathererState> (webrtc)
+data RTCIceGathererState = RTCIceGathererStateNew
+    | RTCIceGathererStateGathering
+    | RTCIceGathererStateComplete
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceGathererState where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceGathererStateNew -> js_RTCIceGathererStateNew
+    RTCIceGathererStateGathering -> js_RTCIceGathererStateGathering
+    RTCIceGathererStateComplete -> js_RTCIceGathererStateComplete
+    )
+
+instance ToJSVal RTCIceGathererState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceGathererState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceGathererState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceGathererStateNew, RTCIceGathererStateNew), (js_RTCIceGathererStateGathering, RTCIceGathererStateGathering), (js_RTCIceGathererStateComplete, RTCIceGathererStateComplete)]
+
+instance FromJSVal RTCIceGathererState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceGathererStateNew, RTCIceGathererStateNew), (js_RTCIceGathererStateGathering, RTCIceGathererStateGathering), (js_RTCIceGathererStateComplete, RTCIceGathererStateComplete)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceGathererStateNew :: JSString
+js_RTCIceGathererStateNew = "new"
+js_RTCIceGathererStateGathering :: JSString
+js_RTCIceGathererStateGathering = "gathering"
+js_RTCIceGathererStateComplete :: JSString
+js_RTCIceGathererStateComplete = "complete"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceGatheringState> (webrtc)
+data RTCIceGatheringState = RTCIceGatheringStateNew
+    | RTCIceGatheringStateGathering
+    | RTCIceGatheringStateComplete
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceGatheringState where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceGatheringStateNew -> js_RTCIceGatheringStateNew
+    RTCIceGatheringStateGathering -> js_RTCIceGatheringStateGathering
+    RTCIceGatheringStateComplete -> js_RTCIceGatheringStateComplete
+    )
+
+instance ToJSVal RTCIceGatheringState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceGatheringState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceGatheringState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceGatheringStateNew, RTCIceGatheringStateNew), (js_RTCIceGatheringStateGathering, RTCIceGatheringStateGathering), (js_RTCIceGatheringStateComplete, RTCIceGatheringStateComplete)]
+
+instance FromJSVal RTCIceGatheringState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceGatheringStateNew, RTCIceGatheringStateNew), (js_RTCIceGatheringStateGathering, RTCIceGatheringStateGathering), (js_RTCIceGatheringStateComplete, RTCIceGatheringStateComplete)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceGatheringStateNew :: JSString
+js_RTCIceGatheringStateNew = "new"
+js_RTCIceGatheringStateGathering :: JSString
+js_RTCIceGatheringStateGathering = "gathering"
+js_RTCIceGatheringStateComplete :: JSString
+js_RTCIceGatheringStateComplete = "complete"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceProtocol> (webrtc)
+data RTCIceProtocol = RTCIceProtocolUdp
+    | RTCIceProtocolTcp
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceProtocol where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceProtocolUdp -> js_RTCIceProtocolUdp
+    RTCIceProtocolTcp -> js_RTCIceProtocolTcp
+    )
+
+instance ToJSVal RTCIceProtocol where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceProtocol where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceProtocol value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceProtocolUdp, RTCIceProtocolUdp), (js_RTCIceProtocolTcp, RTCIceProtocolTcp)]
+
+instance FromJSVal RTCIceProtocol where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceProtocolUdp, RTCIceProtocolUdp), (js_RTCIceProtocolTcp, RTCIceProtocolTcp)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceProtocolUdp :: JSString
+js_RTCIceProtocolUdp = "udp"
+js_RTCIceProtocolTcp :: JSString
+js_RTCIceProtocolTcp = "tcp"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceRole> (webrtc)
+data RTCIceRole = RTCIceRoleUnknown
+    | RTCIceRoleControlling
+    | RTCIceRoleControlled
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceRole where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceRoleUnknown -> js_RTCIceRoleUnknown
+    RTCIceRoleControlling -> js_RTCIceRoleControlling
+    RTCIceRoleControlled -> js_RTCIceRoleControlled
+    )
+
+instance ToJSVal RTCIceRole where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceRole where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceRole value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceRoleUnknown, RTCIceRoleUnknown), (js_RTCIceRoleControlling, RTCIceRoleControlling), (js_RTCIceRoleControlled, RTCIceRoleControlled)]
+
+instance FromJSVal RTCIceRole where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceRoleUnknown, RTCIceRoleUnknown), (js_RTCIceRoleControlling, RTCIceRoleControlling), (js_RTCIceRoleControlled, RTCIceRoleControlled)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceRoleUnknown :: JSString
+js_RTCIceRoleUnknown = "unknown"
+js_RTCIceRoleControlling :: JSString
+js_RTCIceRoleControlling = "controlling"
+js_RTCIceRoleControlled :: JSString
+js_RTCIceRoleControlled = "controlled"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceServerTransportProtocol> (webrtc)
+data RTCIceServerTransportProtocol = RTCIceServerTransportProtocolUdp
+    | RTCIceServerTransportProtocolTcp
+    | RTCIceServerTransportProtocolTls
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceServerTransportProtocol where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceServerTransportProtocolUdp -> js_RTCIceServerTransportProtocolUdp
+    RTCIceServerTransportProtocolTcp -> js_RTCIceServerTransportProtocolTcp
+    RTCIceServerTransportProtocolTls -> js_RTCIceServerTransportProtocolTls
+    )
+
+instance ToJSVal RTCIceServerTransportProtocol where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceServerTransportProtocol where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceServerTransportProtocol value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceServerTransportProtocolUdp, RTCIceServerTransportProtocolUdp), (js_RTCIceServerTransportProtocolTcp, RTCIceServerTransportProtocolTcp), (js_RTCIceServerTransportProtocolTls, RTCIceServerTransportProtocolTls)]
+
+instance FromJSVal RTCIceServerTransportProtocol where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceServerTransportProtocolUdp, RTCIceServerTransportProtocolUdp), (js_RTCIceServerTransportProtocolTcp, RTCIceServerTransportProtocolTcp), (js_RTCIceServerTransportProtocolTls, RTCIceServerTransportProtocolTls)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceServerTransportProtocolUdp :: JSString
+js_RTCIceServerTransportProtocolUdp = "udp"
+js_RTCIceServerTransportProtocolTcp :: JSString
+js_RTCIceServerTransportProtocolTcp = "tcp"
+js_RTCIceServerTransportProtocolTls :: JSString
+js_RTCIceServerTransportProtocolTls = "tls"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceTcpCandidateType> (webrtc)
+data RTCIceTcpCandidateType = RTCIceTcpCandidateTypeActive
+    | RTCIceTcpCandidateTypePassive
+    | RTCIceTcpCandidateTypeSo
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceTcpCandidateType where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceTcpCandidateTypeActive -> js_RTCIceTcpCandidateTypeActive
+    RTCIceTcpCandidateTypePassive -> js_RTCIceTcpCandidateTypePassive
+    RTCIceTcpCandidateTypeSo -> js_RTCIceTcpCandidateTypeSo
+    )
+
+instance ToJSVal RTCIceTcpCandidateType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceTcpCandidateType where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceTcpCandidateType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceTcpCandidateTypeActive, RTCIceTcpCandidateTypeActive), (js_RTCIceTcpCandidateTypePassive, RTCIceTcpCandidateTypePassive), (js_RTCIceTcpCandidateTypeSo, RTCIceTcpCandidateTypeSo)]
+
+instance FromJSVal RTCIceTcpCandidateType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceTcpCandidateTypeActive, RTCIceTcpCandidateTypeActive), (js_RTCIceTcpCandidateTypePassive, RTCIceTcpCandidateTypePassive), (js_RTCIceTcpCandidateTypeSo, RTCIceTcpCandidateTypeSo)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceTcpCandidateTypeActive :: JSString
+js_RTCIceTcpCandidateTypeActive = "active"
+js_RTCIceTcpCandidateTypePassive :: JSString
+js_RTCIceTcpCandidateTypePassive = "passive"
+js_RTCIceTcpCandidateTypeSo :: JSString
+js_RTCIceTcpCandidateTypeSo = "so"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceTransportPolicy> (webrtc)
+data RTCIceTransportPolicy = RTCIceTransportPolicyRelay
+    | RTCIceTransportPolicyAll
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceTransportPolicy where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceTransportPolicyRelay -> js_RTCIceTransportPolicyRelay
+    RTCIceTransportPolicyAll -> js_RTCIceTransportPolicyAll
+    )
+
+instance ToJSVal RTCIceTransportPolicy where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceTransportPolicy where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceTransportPolicy value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceTransportPolicyRelay, RTCIceTransportPolicyRelay), (js_RTCIceTransportPolicyAll, RTCIceTransportPolicyAll)]
+
+instance FromJSVal RTCIceTransportPolicy where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceTransportPolicyRelay, RTCIceTransportPolicyRelay), (js_RTCIceTransportPolicyAll, RTCIceTransportPolicyAll)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceTransportPolicyRelay :: JSString
+js_RTCIceTransportPolicyRelay = "relay"
+js_RTCIceTransportPolicyAll :: JSString
+js_RTCIceTransportPolicyAll = "all"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCIceTransportState> (webrtc)
+data RTCIceTransportState = RTCIceTransportStateClosed
+    | RTCIceTransportStateFailed
+    | RTCIceTransportStateDisconnected
+    | RTCIceTransportStateNew
+    | RTCIceTransportStateChecking
+    | RTCIceTransportStateCompleted
+    | RTCIceTransportStateConnected
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCIceTransportState where
+  pToJSVal x = pToJSVal (case x of
+    RTCIceTransportStateClosed -> js_RTCIceTransportStateClosed
+    RTCIceTransportStateFailed -> js_RTCIceTransportStateFailed
+    RTCIceTransportStateDisconnected -> js_RTCIceTransportStateDisconnected
+    RTCIceTransportStateNew -> js_RTCIceTransportStateNew
+    RTCIceTransportStateChecking -> js_RTCIceTransportStateChecking
+    RTCIceTransportStateCompleted -> js_RTCIceTransportStateCompleted
+    RTCIceTransportStateConnected -> js_RTCIceTransportStateConnected
+    )
+
+instance ToJSVal RTCIceTransportState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCIceTransportState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCIceTransportState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceTransportStateClosed, RTCIceTransportStateClosed), (js_RTCIceTransportStateFailed, RTCIceTransportStateFailed), (js_RTCIceTransportStateDisconnected, RTCIceTransportStateDisconnected), (js_RTCIceTransportStateNew, RTCIceTransportStateNew), (js_RTCIceTransportStateChecking, RTCIceTransportStateChecking), (js_RTCIceTransportStateCompleted, RTCIceTransportStateCompleted), (js_RTCIceTransportStateConnected, RTCIceTransportStateConnected)]
+
+instance FromJSVal RTCIceTransportState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCIceTransportStateClosed, RTCIceTransportStateClosed), (js_RTCIceTransportStateFailed, RTCIceTransportStateFailed), (js_RTCIceTransportStateDisconnected, RTCIceTransportStateDisconnected), (js_RTCIceTransportStateNew, RTCIceTransportStateNew), (js_RTCIceTransportStateChecking, RTCIceTransportStateChecking), (js_RTCIceTransportStateCompleted, RTCIceTransportStateCompleted), (js_RTCIceTransportStateConnected, RTCIceTransportStateConnected)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCIceTransportStateClosed :: JSString
+js_RTCIceTransportStateClosed = "closed"
+js_RTCIceTransportStateFailed :: JSString
+js_RTCIceTransportStateFailed = "failed"
+js_RTCIceTransportStateDisconnected :: JSString
+js_RTCIceTransportStateDisconnected = "disconnected"
+js_RTCIceTransportStateNew :: JSString
+js_RTCIceTransportStateNew = "new"
+js_RTCIceTransportStateChecking :: JSString
+js_RTCIceTransportStateChecking = "checking"
+js_RTCIceTransportStateCompleted :: JSString
+js_RTCIceTransportStateCompleted = "completed"
+js_RTCIceTransportStateConnected :: JSString
+js_RTCIceTransportStateConnected = "connected"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCPeerConnectionState> (webrtc)
+data RTCPeerConnectionState = RTCPeerConnectionStateClosed
+    | RTCPeerConnectionStateFailed
+    | RTCPeerConnectionStateDisconnected
+    | RTCPeerConnectionStateNew
+    | RTCPeerConnectionStateConnecting
+    | RTCPeerConnectionStateConnected
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCPeerConnectionState where
+  pToJSVal x = pToJSVal (case x of
+    RTCPeerConnectionStateClosed -> js_RTCPeerConnectionStateClosed
+    RTCPeerConnectionStateFailed -> js_RTCPeerConnectionStateFailed
+    RTCPeerConnectionStateDisconnected -> js_RTCPeerConnectionStateDisconnected
+    RTCPeerConnectionStateNew -> js_RTCPeerConnectionStateNew
+    RTCPeerConnectionStateConnecting -> js_RTCPeerConnectionStateConnecting
+    RTCPeerConnectionStateConnected -> js_RTCPeerConnectionStateConnected
+    )
+
+instance ToJSVal RTCPeerConnectionState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCPeerConnectionState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCPeerConnectionState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCPeerConnectionStateClosed, RTCPeerConnectionStateClosed), (js_RTCPeerConnectionStateFailed, RTCPeerConnectionStateFailed), (js_RTCPeerConnectionStateDisconnected, RTCPeerConnectionStateDisconnected), (js_RTCPeerConnectionStateNew, RTCPeerConnectionStateNew), (js_RTCPeerConnectionStateConnecting, RTCPeerConnectionStateConnecting), (js_RTCPeerConnectionStateConnected, RTCPeerConnectionStateConnected)]
+
+instance FromJSVal RTCPeerConnectionState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCPeerConnectionStateClosed, RTCPeerConnectionStateClosed), (js_RTCPeerConnectionStateFailed, RTCPeerConnectionStateFailed), (js_RTCPeerConnectionStateDisconnected, RTCPeerConnectionStateDisconnected), (js_RTCPeerConnectionStateNew, RTCPeerConnectionStateNew), (js_RTCPeerConnectionStateConnecting, RTCPeerConnectionStateConnecting), (js_RTCPeerConnectionStateConnected, RTCPeerConnectionStateConnected)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCPeerConnectionStateClosed :: JSString
+js_RTCPeerConnectionStateClosed = "closed"
+js_RTCPeerConnectionStateFailed :: JSString
+js_RTCPeerConnectionStateFailed = "failed"
+js_RTCPeerConnectionStateDisconnected :: JSString
+js_RTCPeerConnectionStateDisconnected = "disconnected"
+js_RTCPeerConnectionStateNew :: JSString
+js_RTCPeerConnectionStateNew = "new"
+js_RTCPeerConnectionStateConnecting :: JSString
+js_RTCPeerConnectionStateConnecting = "connecting"
+js_RTCPeerConnectionStateConnected :: JSString
+js_RTCPeerConnectionStateConnected = "connected"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCPriorityType> (webrtc-priority)
+data RTCPriorityType = RTCPriorityTypeVeryLow
+    | RTCPriorityTypeLow
+    | RTCPriorityTypeMedium
+    | RTCPriorityTypeHigh
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCPriorityType where
+  pToJSVal x = pToJSVal (case x of
+    RTCPriorityTypeVeryLow -> js_RTCPriorityTypeVeryLow
+    RTCPriorityTypeLow -> js_RTCPriorityTypeLow
+    RTCPriorityTypeMedium -> js_RTCPriorityTypeMedium
+    RTCPriorityTypeHigh -> js_RTCPriorityTypeHigh
+    )
+
+instance ToJSVal RTCPriorityType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCPriorityType where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCPriorityType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCPriorityTypeVeryLow, RTCPriorityTypeVeryLow), (js_RTCPriorityTypeLow, RTCPriorityTypeLow), (js_RTCPriorityTypeMedium, RTCPriorityTypeMedium), (js_RTCPriorityTypeHigh, RTCPriorityTypeHigh)]
+
+instance FromJSVal RTCPriorityType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCPriorityTypeVeryLow, RTCPriorityTypeVeryLow), (js_RTCPriorityTypeLow, RTCPriorityTypeLow), (js_RTCPriorityTypeMedium, RTCPriorityTypeMedium), (js_RTCPriorityTypeHigh, RTCPriorityTypeHigh)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCPriorityTypeVeryLow :: JSString
+js_RTCPriorityTypeVeryLow = "very-low"
+js_RTCPriorityTypeLow :: JSString
+js_RTCPriorityTypeLow = "low"
+js_RTCPriorityTypeMedium :: JSString
+js_RTCPriorityTypeMedium = "medium"
+js_RTCPriorityTypeHigh :: JSString
+js_RTCPriorityTypeHigh = "high"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCRtcpMuxPolicy> (webrtc)
+data RTCRtcpMuxPolicy = RTCRtcpMuxPolicyRequire
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCRtcpMuxPolicy where
+  pToJSVal x = pToJSVal (case x of
+    RTCRtcpMuxPolicyRequire -> js_RTCRtcpMuxPolicyRequire
+    )
+
+instance ToJSVal RTCRtcpMuxPolicy where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCRtcpMuxPolicy where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCRtcpMuxPolicy value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCRtcpMuxPolicyRequire, RTCRtcpMuxPolicyRequire)]
+
+instance FromJSVal RTCRtcpMuxPolicy where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCRtcpMuxPolicyRequire, RTCRtcpMuxPolicyRequire)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCRtcpMuxPolicyRequire :: JSString
+js_RTCRtcpMuxPolicyRequire = "require"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCRtpScriptTransformType> (webrtc-encoded-transform)
+data RTCRtpScriptTransformType = RTCRtpScriptTransformTypeSframe
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCRtpScriptTransformType where
+  pToJSVal x = pToJSVal (case x of
+    RTCRtpScriptTransformTypeSframe -> js_RTCRtpScriptTransformTypeSframe
+    )
+
+instance ToJSVal RTCRtpScriptTransformType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCRtpScriptTransformType where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCRtpScriptTransformType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCRtpScriptTransformTypeSframe, RTCRtpScriptTransformTypeSframe)]
+
+instance FromJSVal RTCRtpScriptTransformType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCRtpScriptTransformTypeSframe, RTCRtpScriptTransformTypeSframe)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCRtpScriptTransformTypeSframe :: JSString
+js_RTCRtpScriptTransformTypeSframe = "sframe"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCRtpTransceiverDirection> (webrtc)
+data RTCRtpTransceiverDirection = RTCRtpTransceiverDirectionSendrecv
+    | RTCRtpTransceiverDirectionSendonly
+    | RTCRtpTransceiverDirectionRecvonly
+    | RTCRtpTransceiverDirectionInactive
+    | RTCRtpTransceiverDirectionStopped
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCRtpTransceiverDirection where
+  pToJSVal x = pToJSVal (case x of
+    RTCRtpTransceiverDirectionSendrecv -> js_RTCRtpTransceiverDirectionSendrecv
+    RTCRtpTransceiverDirectionSendonly -> js_RTCRtpTransceiverDirectionSendonly
+    RTCRtpTransceiverDirectionRecvonly -> js_RTCRtpTransceiverDirectionRecvonly
+    RTCRtpTransceiverDirectionInactive -> js_RTCRtpTransceiverDirectionInactive
+    RTCRtpTransceiverDirectionStopped -> js_RTCRtpTransceiverDirectionStopped
+    )
+
+instance ToJSVal RTCRtpTransceiverDirection where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCRtpTransceiverDirection where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCRtpTransceiverDirection value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCRtpTransceiverDirectionSendrecv, RTCRtpTransceiverDirectionSendrecv), (js_RTCRtpTransceiverDirectionSendonly, RTCRtpTransceiverDirectionSendonly), (js_RTCRtpTransceiverDirectionRecvonly, RTCRtpTransceiverDirectionRecvonly), (js_RTCRtpTransceiverDirectionInactive, RTCRtpTransceiverDirectionInactive), (js_RTCRtpTransceiverDirectionStopped, RTCRtpTransceiverDirectionStopped)]
+
+instance FromJSVal RTCRtpTransceiverDirection where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCRtpTransceiverDirectionSendrecv, RTCRtpTransceiverDirectionSendrecv), (js_RTCRtpTransceiverDirectionSendonly, RTCRtpTransceiverDirectionSendonly), (js_RTCRtpTransceiverDirectionRecvonly, RTCRtpTransceiverDirectionRecvonly), (js_RTCRtpTransceiverDirectionInactive, RTCRtpTransceiverDirectionInactive), (js_RTCRtpTransceiverDirectionStopped, RTCRtpTransceiverDirectionStopped)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCRtpTransceiverDirectionSendrecv :: JSString
+js_RTCRtpTransceiverDirectionSendrecv = "sendrecv"
+js_RTCRtpTransceiverDirectionSendonly :: JSString
+js_RTCRtpTransceiverDirectionSendonly = "sendonly"
+js_RTCRtpTransceiverDirectionRecvonly :: JSString
+js_RTCRtpTransceiverDirectionRecvonly = "recvonly"
+js_RTCRtpTransceiverDirectionInactive :: JSString
+js_RTCRtpTransceiverDirectionInactive = "inactive"
+js_RTCRtpTransceiverDirectionStopped :: JSString
+js_RTCRtpTransceiverDirectionStopped = "stopped"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCSctpTransportState> (webrtc)
+data RTCSctpTransportState = RTCSctpTransportStateConnecting
+    | RTCSctpTransportStateConnected
+    | RTCSctpTransportStateClosed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCSctpTransportState where
+  pToJSVal x = pToJSVal (case x of
+    RTCSctpTransportStateConnecting -> js_RTCSctpTransportStateConnecting
+    RTCSctpTransportStateConnected -> js_RTCSctpTransportStateConnected
+    RTCSctpTransportStateClosed -> js_RTCSctpTransportStateClosed
+    )
+
+instance ToJSVal RTCSctpTransportState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCSctpTransportState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCSctpTransportState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCSctpTransportStateConnecting, RTCSctpTransportStateConnecting), (js_RTCSctpTransportStateConnected, RTCSctpTransportStateConnected), (js_RTCSctpTransportStateClosed, RTCSctpTransportStateClosed)]
+
+instance FromJSVal RTCSctpTransportState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCSctpTransportStateConnecting, RTCSctpTransportStateConnecting), (js_RTCSctpTransportStateConnected, RTCSctpTransportStateConnected), (js_RTCSctpTransportStateClosed, RTCSctpTransportStateClosed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCSctpTransportStateConnecting :: JSString
+js_RTCSctpTransportStateConnecting = "connecting"
+js_RTCSctpTransportStateConnected :: JSString
+js_RTCSctpTransportStateConnected = "connected"
+js_RTCSctpTransportStateClosed :: JSString
+js_RTCSctpTransportStateClosed = "closed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCSdpType> (webrtc)
+data RTCSdpType = RTCSdpTypeOffer
+    | RTCSdpTypePranswer
+    | RTCSdpTypeAnswer
+    | RTCSdpTypeRollback
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCSdpType where
+  pToJSVal x = pToJSVal (case x of
+    RTCSdpTypeOffer -> js_RTCSdpTypeOffer
+    RTCSdpTypePranswer -> js_RTCSdpTypePranswer
+    RTCSdpTypeAnswer -> js_RTCSdpTypeAnswer
+    RTCSdpTypeRollback -> js_RTCSdpTypeRollback
+    )
+
+instance ToJSVal RTCSdpType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCSdpType where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCSdpType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCSdpTypeOffer, RTCSdpTypeOffer), (js_RTCSdpTypePranswer, RTCSdpTypePranswer), (js_RTCSdpTypeAnswer, RTCSdpTypeAnswer), (js_RTCSdpTypeRollback, RTCSdpTypeRollback)]
+
+instance FromJSVal RTCSdpType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCSdpTypeOffer, RTCSdpTypeOffer), (js_RTCSdpTypePranswer, RTCSdpTypePranswer), (js_RTCSdpTypeAnswer, RTCSdpTypeAnswer), (js_RTCSdpTypeRollback, RTCSdpTypeRollback)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCSdpTypeOffer :: JSString
+js_RTCSdpTypeOffer = "offer"
+js_RTCSdpTypePranswer :: JSString
+js_RTCSdpTypePranswer = "pranswer"
+js_RTCSdpTypeAnswer :: JSString
+js_RTCSdpTypeAnswer = "answer"
+js_RTCSdpTypeRollback :: JSString
+js_RTCSdpTypeRollback = "rollback"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RTCSignalingState> (webrtc)
+data RTCSignalingState = RTCSignalingStateStable
+    | RTCSignalingStateHaveLocalOffer
+    | RTCSignalingStateHaveRemoteOffer
+    | RTCSignalingStateHaveLocalPranswer
+    | RTCSignalingStateHaveRemotePranswer
+    | RTCSignalingStateClosed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RTCSignalingState where
+  pToJSVal x = pToJSVal (case x of
+    RTCSignalingStateStable -> js_RTCSignalingStateStable
+    RTCSignalingStateHaveLocalOffer -> js_RTCSignalingStateHaveLocalOffer
+    RTCSignalingStateHaveRemoteOffer -> js_RTCSignalingStateHaveRemoteOffer
+    RTCSignalingStateHaveLocalPranswer -> js_RTCSignalingStateHaveLocalPranswer
+    RTCSignalingStateHaveRemotePranswer -> js_RTCSignalingStateHaveRemotePranswer
+    RTCSignalingStateClosed -> js_RTCSignalingStateClosed
+    )
+
+instance ToJSVal RTCSignalingState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RTCSignalingState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RTCSignalingState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCSignalingStateStable, RTCSignalingStateStable), (js_RTCSignalingStateHaveLocalOffer, RTCSignalingStateHaveLocalOffer), (js_RTCSignalingStateHaveRemoteOffer, RTCSignalingStateHaveRemoteOffer), (js_RTCSignalingStateHaveLocalPranswer, RTCSignalingStateHaveLocalPranswer), (js_RTCSignalingStateHaveRemotePranswer, RTCSignalingStateHaveRemotePranswer), (js_RTCSignalingStateClosed, RTCSignalingStateClosed)]
+
+instance FromJSVal RTCSignalingState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RTCSignalingStateStable, RTCSignalingStateStable), (js_RTCSignalingStateHaveLocalOffer, RTCSignalingStateHaveLocalOffer), (js_RTCSignalingStateHaveRemoteOffer, RTCSignalingStateHaveRemoteOffer), (js_RTCSignalingStateHaveLocalPranswer, RTCSignalingStateHaveLocalPranswer), (js_RTCSignalingStateHaveRemotePranswer, RTCSignalingStateHaveRemotePranswer), (js_RTCSignalingStateClosed, RTCSignalingStateClosed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RTCSignalingStateStable :: JSString
+js_RTCSignalingStateStable = "stable"
+js_RTCSignalingStateHaveLocalOffer :: JSString
+js_RTCSignalingStateHaveLocalOffer = "have-local-offer"
+js_RTCSignalingStateHaveRemoteOffer :: JSString
+js_RTCSignalingStateHaveRemoteOffer = "have-remote-offer"
+js_RTCSignalingStateHaveLocalPranswer :: JSString
+js_RTCSignalingStateHaveLocalPranswer = "have-local-pranswer"
+js_RTCSignalingStateHaveRemotePranswer :: JSString
+js_RTCSignalingStateHaveRemotePranswer = "have-remote-pranswer"
+js_RTCSignalingStateClosed :: JSString
+js_RTCSignalingStateClosed = "closed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ReadableStreamReaderMode> (streams)
+data ReadableStreamReaderMode = ReadableStreamReaderModeByob
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ReadableStreamReaderMode where
+  pToJSVal x = pToJSVal (case x of
+    ReadableStreamReaderModeByob -> js_ReadableStreamReaderModeByob
+    )
+
+instance ToJSVal ReadableStreamReaderMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ReadableStreamReaderMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected ReadableStreamReaderMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReadableStreamReaderModeByob, ReadableStreamReaderModeByob)]
+
+instance FromJSVal ReadableStreamReaderMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReadableStreamReaderModeByob, ReadableStreamReaderModeByob)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ReadableStreamReaderModeByob :: JSString
+js_ReadableStreamReaderModeByob = "byob"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ReadableStreamType> (streams)
+data ReadableStreamType = ReadableStreamTypeBytes
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ReadableStreamType where
+  pToJSVal x = pToJSVal (case x of
+    ReadableStreamTypeBytes -> js_ReadableStreamTypeBytes
+    )
+
+instance ToJSVal ReadableStreamType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ReadableStreamType where
+  pFromJSVal x = P.maybe (P.error "Unexpected ReadableStreamType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReadableStreamTypeBytes, ReadableStreamTypeBytes)]
+
+instance FromJSVal ReadableStreamType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReadableStreamTypeBytes, ReadableStreamTypeBytes)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ReadableStreamTypeBytes :: JSString
+js_ReadableStreamTypeBytes = "bytes"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ReadyState> (media-source-2)
+data ReadyState = ReadyStateClosed
+    | ReadyStateOpen
+    | ReadyStateEnded
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ReadyState where
+  pToJSVal x = pToJSVal (case x of
+    ReadyStateClosed -> js_ReadyStateClosed
+    ReadyStateOpen -> js_ReadyStateOpen
+    ReadyStateEnded -> js_ReadyStateEnded
+    )
+
+instance ToJSVal ReadyState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ReadyState where
+  pFromJSVal x = P.maybe (P.error "Unexpected ReadyState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReadyStateClosed, ReadyStateClosed), (js_ReadyStateOpen, ReadyStateOpen), (js_ReadyStateEnded, ReadyStateEnded)]
+
+instance FromJSVal ReadyState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReadyStateClosed, ReadyStateClosed), (js_ReadyStateOpen, ReadyStateOpen), (js_ReadyStateEnded, ReadyStateEnded)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ReadyStateClosed :: JSString
+js_ReadyStateClosed = "closed"
+js_ReadyStateOpen :: JSString
+js_ReadyStateOpen = "open"
+js_ReadyStateEnded :: JSString
+js_ReadyStateEnded = "ended"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RecordingState> (mediastream-recording)
+data RecordingState = RecordingStateInactive
+    | RecordingStateRecording
+    | RecordingStatePaused
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RecordingState where
+  pToJSVal x = pToJSVal (case x of
+    RecordingStateInactive -> js_RecordingStateInactive
+    RecordingStateRecording -> js_RecordingStateRecording
+    RecordingStatePaused -> js_RecordingStatePaused
+    )
+
+instance ToJSVal RecordingState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RecordingState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RecordingState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RecordingStateInactive, RecordingStateInactive), (js_RecordingStateRecording, RecordingStateRecording), (js_RecordingStatePaused, RecordingStatePaused)]
+
+instance FromJSVal RecordingState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RecordingStateInactive, RecordingStateInactive), (js_RecordingStateRecording, RecordingStateRecording), (js_RecordingStatePaused, RecordingStatePaused)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RecordingStateInactive :: JSString
+js_RecordingStateInactive = "inactive"
+js_RecordingStateRecording :: JSString
+js_RecordingStateRecording = "recording"
+js_RecordingStatePaused :: JSString
+js_RecordingStatePaused = "paused"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RedEyeReduction> (image-capture)
+data RedEyeReduction = RedEyeReductionNever
+    | RedEyeReductionAlways
+    | RedEyeReductionControllable
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RedEyeReduction where
+  pToJSVal x = pToJSVal (case x of
+    RedEyeReductionNever -> js_RedEyeReductionNever
+    RedEyeReductionAlways -> js_RedEyeReductionAlways
+    RedEyeReductionControllable -> js_RedEyeReductionControllable
+    )
+
+instance ToJSVal RedEyeReduction where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RedEyeReduction where
+  pFromJSVal x = P.maybe (P.error "Unexpected RedEyeReduction value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RedEyeReductionNever, RedEyeReductionNever), (js_RedEyeReductionAlways, RedEyeReductionAlways), (js_RedEyeReductionControllable, RedEyeReductionControllable)]
+
+instance FromJSVal RedEyeReduction where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RedEyeReductionNever, RedEyeReductionNever), (js_RedEyeReductionAlways, RedEyeReductionAlways), (js_RedEyeReductionControllable, RedEyeReductionControllable)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RedEyeReductionNever :: JSString
+js_RedEyeReductionNever = "never"
+js_RedEyeReductionAlways :: JSString
+js_RedEyeReductionAlways = "always"
+js_RedEyeReductionControllable :: JSString
+js_RedEyeReductionControllable = "controllable"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ReferrerPolicy> (referrer-policy)
+data ReferrerPolicy = ReferrerPolicy
+    | ReferrerPolicyNoReferrer
+    | ReferrerPolicyNoReferrerWhenDowngrade
+    | ReferrerPolicySameOrigin
+    | ReferrerPolicyOrigin
+    | ReferrerPolicyStrictOrigin
+    | ReferrerPolicyOriginWhenCrossOrigin
+    | ReferrerPolicyStrictOriginWhenCrossOrigin
+    | ReferrerPolicyUnsafeUrl
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ReferrerPolicy where
+  pToJSVal x = pToJSVal (case x of
+    ReferrerPolicy -> js_ReferrerPolicy
+    ReferrerPolicyNoReferrer -> js_ReferrerPolicyNoReferrer
+    ReferrerPolicyNoReferrerWhenDowngrade -> js_ReferrerPolicyNoReferrerWhenDowngrade
+    ReferrerPolicySameOrigin -> js_ReferrerPolicySameOrigin
+    ReferrerPolicyOrigin -> js_ReferrerPolicyOrigin
+    ReferrerPolicyStrictOrigin -> js_ReferrerPolicyStrictOrigin
+    ReferrerPolicyOriginWhenCrossOrigin -> js_ReferrerPolicyOriginWhenCrossOrigin
+    ReferrerPolicyStrictOriginWhenCrossOrigin -> js_ReferrerPolicyStrictOriginWhenCrossOrigin
+    ReferrerPolicyUnsafeUrl -> js_ReferrerPolicyUnsafeUrl
+    )
+
+instance ToJSVal ReferrerPolicy where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ReferrerPolicy where
+  pFromJSVal x = P.maybe (P.error "Unexpected ReferrerPolicy value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReferrerPolicy, ReferrerPolicy), (js_ReferrerPolicyNoReferrer, ReferrerPolicyNoReferrer), (js_ReferrerPolicyNoReferrerWhenDowngrade, ReferrerPolicyNoReferrerWhenDowngrade), (js_ReferrerPolicySameOrigin, ReferrerPolicySameOrigin), (js_ReferrerPolicyOrigin, ReferrerPolicyOrigin), (js_ReferrerPolicyStrictOrigin, ReferrerPolicyStrictOrigin), (js_ReferrerPolicyOriginWhenCrossOrigin, ReferrerPolicyOriginWhenCrossOrigin), (js_ReferrerPolicyStrictOriginWhenCrossOrigin, ReferrerPolicyStrictOriginWhenCrossOrigin), (js_ReferrerPolicyUnsafeUrl, ReferrerPolicyUnsafeUrl)]
+
+instance FromJSVal ReferrerPolicy where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ReferrerPolicy, ReferrerPolicy), (js_ReferrerPolicyNoReferrer, ReferrerPolicyNoReferrer), (js_ReferrerPolicyNoReferrerWhenDowngrade, ReferrerPolicyNoReferrerWhenDowngrade), (js_ReferrerPolicySameOrigin, ReferrerPolicySameOrigin), (js_ReferrerPolicyOrigin, ReferrerPolicyOrigin), (js_ReferrerPolicyStrictOrigin, ReferrerPolicyStrictOrigin), (js_ReferrerPolicyOriginWhenCrossOrigin, ReferrerPolicyOriginWhenCrossOrigin), (js_ReferrerPolicyStrictOriginWhenCrossOrigin, ReferrerPolicyStrictOriginWhenCrossOrigin), (js_ReferrerPolicyUnsafeUrl, ReferrerPolicyUnsafeUrl)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ReferrerPolicy :: JSString
+js_ReferrerPolicy = ""
+js_ReferrerPolicyNoReferrer :: JSString
+js_ReferrerPolicyNoReferrer = "no-referrer"
+js_ReferrerPolicyNoReferrerWhenDowngrade :: JSString
+js_ReferrerPolicyNoReferrerWhenDowngrade = "no-referrer-when-downgrade"
+js_ReferrerPolicySameOrigin :: JSString
+js_ReferrerPolicySameOrigin = "same-origin"
+js_ReferrerPolicyOrigin :: JSString
+js_ReferrerPolicyOrigin = "origin"
+js_ReferrerPolicyStrictOrigin :: JSString
+js_ReferrerPolicyStrictOrigin = "strict-origin"
+js_ReferrerPolicyOriginWhenCrossOrigin :: JSString
+js_ReferrerPolicyOriginWhenCrossOrigin = "origin-when-cross-origin"
+js_ReferrerPolicyStrictOriginWhenCrossOrigin :: JSString
+js_ReferrerPolicyStrictOriginWhenCrossOrigin = "strict-origin-when-cross-origin"
+js_ReferrerPolicyUnsafeUrl :: JSString
+js_ReferrerPolicyUnsafeUrl = "unsafe-url"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RefreshPolicy> (trust-token-api)
+data RefreshPolicy = RefreshPolicyNone
+    | RefreshPolicyRefresh
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RefreshPolicy where
+  pToJSVal x = pToJSVal (case x of
+    RefreshPolicyNone -> js_RefreshPolicyNone
+    RefreshPolicyRefresh -> js_RefreshPolicyRefresh
+    )
+
+instance ToJSVal RefreshPolicy where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RefreshPolicy where
+  pFromJSVal x = P.maybe (P.error "Unexpected RefreshPolicy value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RefreshPolicyNone, RefreshPolicyNone), (js_RefreshPolicyRefresh, RefreshPolicyRefresh)]
+
+instance FromJSVal RefreshPolicy where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RefreshPolicyNone, RefreshPolicyNone), (js_RefreshPolicyRefresh, RefreshPolicyRefresh)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RefreshPolicyNone :: JSString
+js_RefreshPolicyNone = "none"
+js_RefreshPolicyRefresh :: JSString
+js_RefreshPolicyRefresh = "refresh"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RemotePlaybackState> (remote-playback)
+data RemotePlaybackState = RemotePlaybackStateConnecting
+    | RemotePlaybackStateConnected
+    | RemotePlaybackStateDisconnected
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RemotePlaybackState where
+  pToJSVal x = pToJSVal (case x of
+    RemotePlaybackStateConnecting -> js_RemotePlaybackStateConnecting
+    RemotePlaybackStateConnected -> js_RemotePlaybackStateConnected
+    RemotePlaybackStateDisconnected -> js_RemotePlaybackStateDisconnected
+    )
+
+instance ToJSVal RemotePlaybackState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RemotePlaybackState where
+  pFromJSVal x = P.maybe (P.error "Unexpected RemotePlaybackState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RemotePlaybackStateConnecting, RemotePlaybackStateConnecting), (js_RemotePlaybackStateConnected, RemotePlaybackStateConnected), (js_RemotePlaybackStateDisconnected, RemotePlaybackStateDisconnected)]
+
+instance FromJSVal RemotePlaybackState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RemotePlaybackStateConnecting, RemotePlaybackStateConnecting), (js_RemotePlaybackStateConnected, RemotePlaybackStateConnected), (js_RemotePlaybackStateDisconnected, RemotePlaybackStateDisconnected)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RemotePlaybackStateConnecting :: JSString
+js_RemotePlaybackStateConnecting = "connecting"
+js_RemotePlaybackStateConnected :: JSString
+js_RemotePlaybackStateConnected = "connected"
+js_RemotePlaybackStateDisconnected :: JSString
+js_RemotePlaybackStateDisconnected = "disconnected"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RequestCache> (fetch)
+data RequestCache = RequestCacheDefault
+    | RequestCacheNoStore
+    | RequestCacheReload
+    | RequestCacheNoCache
+    | RequestCacheForceCache
+    | RequestCacheOnlyIfCached
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RequestCache where
+  pToJSVal x = pToJSVal (case x of
+    RequestCacheDefault -> js_RequestCacheDefault
+    RequestCacheNoStore -> js_RequestCacheNoStore
+    RequestCacheReload -> js_RequestCacheReload
+    RequestCacheNoCache -> js_RequestCacheNoCache
+    RequestCacheForceCache -> js_RequestCacheForceCache
+    RequestCacheOnlyIfCached -> js_RequestCacheOnlyIfCached
+    )
+
+instance ToJSVal RequestCache where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RequestCache where
+  pFromJSVal x = P.maybe (P.error "Unexpected RequestCache value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestCacheDefault, RequestCacheDefault), (js_RequestCacheNoStore, RequestCacheNoStore), (js_RequestCacheReload, RequestCacheReload), (js_RequestCacheNoCache, RequestCacheNoCache), (js_RequestCacheForceCache, RequestCacheForceCache), (js_RequestCacheOnlyIfCached, RequestCacheOnlyIfCached)]
+
+instance FromJSVal RequestCache where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestCacheDefault, RequestCacheDefault), (js_RequestCacheNoStore, RequestCacheNoStore), (js_RequestCacheReload, RequestCacheReload), (js_RequestCacheNoCache, RequestCacheNoCache), (js_RequestCacheForceCache, RequestCacheForceCache), (js_RequestCacheOnlyIfCached, RequestCacheOnlyIfCached)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RequestCacheDefault :: JSString
+js_RequestCacheDefault = "default"
+js_RequestCacheNoStore :: JSString
+js_RequestCacheNoStore = "no-store"
+js_RequestCacheReload :: JSString
+js_RequestCacheReload = "reload"
+js_RequestCacheNoCache :: JSString
+js_RequestCacheNoCache = "no-cache"
+js_RequestCacheForceCache :: JSString
+js_RequestCacheForceCache = "force-cache"
+js_RequestCacheOnlyIfCached :: JSString
+js_RequestCacheOnlyIfCached = "only-if-cached"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RequestCredentials> (fetch)
+data RequestCredentials = RequestCredentialsOmit
+    | RequestCredentialsSameOrigin
+    | RequestCredentialsInclude
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RequestCredentials where
+  pToJSVal x = pToJSVal (case x of
+    RequestCredentialsOmit -> js_RequestCredentialsOmit
+    RequestCredentialsSameOrigin -> js_RequestCredentialsSameOrigin
+    RequestCredentialsInclude -> js_RequestCredentialsInclude
+    )
+
+instance ToJSVal RequestCredentials where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RequestCredentials where
+  pFromJSVal x = P.maybe (P.error "Unexpected RequestCredentials value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestCredentialsOmit, RequestCredentialsOmit), (js_RequestCredentialsSameOrigin, RequestCredentialsSameOrigin), (js_RequestCredentialsInclude, RequestCredentialsInclude)]
+
+instance FromJSVal RequestCredentials where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestCredentialsOmit, RequestCredentialsOmit), (js_RequestCredentialsSameOrigin, RequestCredentialsSameOrigin), (js_RequestCredentialsInclude, RequestCredentialsInclude)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RequestCredentialsOmit :: JSString
+js_RequestCredentialsOmit = "omit"
+js_RequestCredentialsSameOrigin :: JSString
+js_RequestCredentialsSameOrigin = "same-origin"
+js_RequestCredentialsInclude :: JSString
+js_RequestCredentialsInclude = "include"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RequestDestination> (fetch)
+data RequestDestination = RequestDestination
+    | RequestDestinationAudio
+    | RequestDestinationAudioworklet
+    | RequestDestinationDocument
+    | RequestDestinationEmbed
+    | RequestDestinationFont
+    | RequestDestinationFrame
+    | RequestDestinationIframe
+    | RequestDestinationImage
+    | RequestDestinationJson
+    | RequestDestinationManifest
+    | RequestDestinationObject
+    | RequestDestinationPaintworklet
+    | RequestDestinationReport
+    | RequestDestinationScript
+    | RequestDestinationSharedworker
+    | RequestDestinationStyle
+    | RequestDestinationText
+    | RequestDestinationTrack
+    | RequestDestinationVideo
+    | RequestDestinationWorker
+    | RequestDestinationXslt
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RequestDestination where
+  pToJSVal x = pToJSVal (case x of
+    RequestDestination -> js_RequestDestination
+    RequestDestinationAudio -> js_RequestDestinationAudio
+    RequestDestinationAudioworklet -> js_RequestDestinationAudioworklet
+    RequestDestinationDocument -> js_RequestDestinationDocument
+    RequestDestinationEmbed -> js_RequestDestinationEmbed
+    RequestDestinationFont -> js_RequestDestinationFont
+    RequestDestinationFrame -> js_RequestDestinationFrame
+    RequestDestinationIframe -> js_RequestDestinationIframe
+    RequestDestinationImage -> js_RequestDestinationImage
+    RequestDestinationJson -> js_RequestDestinationJson
+    RequestDestinationManifest -> js_RequestDestinationManifest
+    RequestDestinationObject -> js_RequestDestinationObject
+    RequestDestinationPaintworklet -> js_RequestDestinationPaintworklet
+    RequestDestinationReport -> js_RequestDestinationReport
+    RequestDestinationScript -> js_RequestDestinationScript
+    RequestDestinationSharedworker -> js_RequestDestinationSharedworker
+    RequestDestinationStyle -> js_RequestDestinationStyle
+    RequestDestinationText -> js_RequestDestinationText
+    RequestDestinationTrack -> js_RequestDestinationTrack
+    RequestDestinationVideo -> js_RequestDestinationVideo
+    RequestDestinationWorker -> js_RequestDestinationWorker
+    RequestDestinationXslt -> js_RequestDestinationXslt
+    )
+
+instance ToJSVal RequestDestination where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RequestDestination where
+  pFromJSVal x = P.maybe (P.error "Unexpected RequestDestination value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestDestination, RequestDestination), (js_RequestDestinationAudio, RequestDestinationAudio), (js_RequestDestinationAudioworklet, RequestDestinationAudioworklet), (js_RequestDestinationDocument, RequestDestinationDocument), (js_RequestDestinationEmbed, RequestDestinationEmbed), (js_RequestDestinationFont, RequestDestinationFont), (js_RequestDestinationFrame, RequestDestinationFrame), (js_RequestDestinationIframe, RequestDestinationIframe), (js_RequestDestinationImage, RequestDestinationImage), (js_RequestDestinationJson, RequestDestinationJson), (js_RequestDestinationManifest, RequestDestinationManifest), (js_RequestDestinationObject, RequestDestinationObject), (js_RequestDestinationPaintworklet, RequestDestinationPaintworklet), (js_RequestDestinationReport, RequestDestinationReport), (js_RequestDestinationScript, RequestDestinationScript), (js_RequestDestinationSharedworker, RequestDestinationSharedworker), (js_RequestDestinationStyle, RequestDestinationStyle), (js_RequestDestinationText, RequestDestinationText), (js_RequestDestinationTrack, RequestDestinationTrack), (js_RequestDestinationVideo, RequestDestinationVideo), (js_RequestDestinationWorker, RequestDestinationWorker), (js_RequestDestinationXslt, RequestDestinationXslt)]
+
+instance FromJSVal RequestDestination where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestDestination, RequestDestination), (js_RequestDestinationAudio, RequestDestinationAudio), (js_RequestDestinationAudioworklet, RequestDestinationAudioworklet), (js_RequestDestinationDocument, RequestDestinationDocument), (js_RequestDestinationEmbed, RequestDestinationEmbed), (js_RequestDestinationFont, RequestDestinationFont), (js_RequestDestinationFrame, RequestDestinationFrame), (js_RequestDestinationIframe, RequestDestinationIframe), (js_RequestDestinationImage, RequestDestinationImage), (js_RequestDestinationJson, RequestDestinationJson), (js_RequestDestinationManifest, RequestDestinationManifest), (js_RequestDestinationObject, RequestDestinationObject), (js_RequestDestinationPaintworklet, RequestDestinationPaintworklet), (js_RequestDestinationReport, RequestDestinationReport), (js_RequestDestinationScript, RequestDestinationScript), (js_RequestDestinationSharedworker, RequestDestinationSharedworker), (js_RequestDestinationStyle, RequestDestinationStyle), (js_RequestDestinationText, RequestDestinationText), (js_RequestDestinationTrack, RequestDestinationTrack), (js_RequestDestinationVideo, RequestDestinationVideo), (js_RequestDestinationWorker, RequestDestinationWorker), (js_RequestDestinationXslt, RequestDestinationXslt)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RequestDestination :: JSString
+js_RequestDestination = ""
+js_RequestDestinationAudio :: JSString
+js_RequestDestinationAudio = "audio"
+js_RequestDestinationAudioworklet :: JSString
+js_RequestDestinationAudioworklet = "audioworklet"
+js_RequestDestinationDocument :: JSString
+js_RequestDestinationDocument = "document"
+js_RequestDestinationEmbed :: JSString
+js_RequestDestinationEmbed = "embed"
+js_RequestDestinationFont :: JSString
+js_RequestDestinationFont = "font"
+js_RequestDestinationFrame :: JSString
+js_RequestDestinationFrame = "frame"
+js_RequestDestinationIframe :: JSString
+js_RequestDestinationIframe = "iframe"
+js_RequestDestinationImage :: JSString
+js_RequestDestinationImage = "image"
+js_RequestDestinationJson :: JSString
+js_RequestDestinationJson = "json"
+js_RequestDestinationManifest :: JSString
+js_RequestDestinationManifest = "manifest"
+js_RequestDestinationObject :: JSString
+js_RequestDestinationObject = "object"
+js_RequestDestinationPaintworklet :: JSString
+js_RequestDestinationPaintworklet = "paintworklet"
+js_RequestDestinationReport :: JSString
+js_RequestDestinationReport = "report"
+js_RequestDestinationScript :: JSString
+js_RequestDestinationScript = "script"
+js_RequestDestinationSharedworker :: JSString
+js_RequestDestinationSharedworker = "sharedworker"
+js_RequestDestinationStyle :: JSString
+js_RequestDestinationStyle = "style"
+js_RequestDestinationText :: JSString
+js_RequestDestinationText = "text"
+js_RequestDestinationTrack :: JSString
+js_RequestDestinationTrack = "track"
+js_RequestDestinationVideo :: JSString
+js_RequestDestinationVideo = "video"
+js_RequestDestinationWorker :: JSString
+js_RequestDestinationWorker = "worker"
+js_RequestDestinationXslt :: JSString
+js_RequestDestinationXslt = "xslt"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RequestDuplex> (fetch)
+data RequestDuplex = RequestDuplexHalf
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RequestDuplex where
+  pToJSVal x = pToJSVal (case x of
+    RequestDuplexHalf -> js_RequestDuplexHalf
+    )
+
+instance ToJSVal RequestDuplex where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RequestDuplex where
+  pFromJSVal x = P.maybe (P.error "Unexpected RequestDuplex value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestDuplexHalf, RequestDuplexHalf)]
+
+instance FromJSVal RequestDuplex where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestDuplexHalf, RequestDuplexHalf)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RequestDuplexHalf :: JSString
+js_RequestDuplexHalf = "half"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RequestMode> (fetch)
+data RequestMode = RequestModeNavigate
+    | RequestModeSameOrigin
+    | RequestModeNoCors
+    | RequestModeCors
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RequestMode where
+  pToJSVal x = pToJSVal (case x of
+    RequestModeNavigate -> js_RequestModeNavigate
+    RequestModeSameOrigin -> js_RequestModeSameOrigin
+    RequestModeNoCors -> js_RequestModeNoCors
+    RequestModeCors -> js_RequestModeCors
+    )
+
+instance ToJSVal RequestMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RequestMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected RequestMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestModeNavigate, RequestModeNavigate), (js_RequestModeSameOrigin, RequestModeSameOrigin), (js_RequestModeNoCors, RequestModeNoCors), (js_RequestModeCors, RequestModeCors)]
+
+instance FromJSVal RequestMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestModeNavigate, RequestModeNavigate), (js_RequestModeSameOrigin, RequestModeSameOrigin), (js_RequestModeNoCors, RequestModeNoCors), (js_RequestModeCors, RequestModeCors)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RequestModeNavigate :: JSString
+js_RequestModeNavigate = "navigate"
+js_RequestModeSameOrigin :: JSString
+js_RequestModeSameOrigin = "same-origin"
+js_RequestModeNoCors :: JSString
+js_RequestModeNoCors = "no-cors"
+js_RequestModeCors :: JSString
+js_RequestModeCors = "cors"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RequestPriority> (fetch)
+data RequestPriority = RequestPriorityHigh
+    | RequestPriorityLow
+    | RequestPriorityAuto
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RequestPriority where
+  pToJSVal x = pToJSVal (case x of
+    RequestPriorityHigh -> js_RequestPriorityHigh
+    RequestPriorityLow -> js_RequestPriorityLow
+    RequestPriorityAuto -> js_RequestPriorityAuto
+    )
+
+instance ToJSVal RequestPriority where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RequestPriority where
+  pFromJSVal x = P.maybe (P.error "Unexpected RequestPriority value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestPriorityHigh, RequestPriorityHigh), (js_RequestPriorityLow, RequestPriorityLow), (js_RequestPriorityAuto, RequestPriorityAuto)]
+
+instance FromJSVal RequestPriority where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestPriorityHigh, RequestPriorityHigh), (js_RequestPriorityLow, RequestPriorityLow), (js_RequestPriorityAuto, RequestPriorityAuto)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RequestPriorityHigh :: JSString
+js_RequestPriorityHigh = "high"
+js_RequestPriorityLow :: JSString
+js_RequestPriorityLow = "low"
+js_RequestPriorityAuto :: JSString
+js_RequestPriorityAuto = "auto"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RequestRedirect> (fetch)
+data RequestRedirect = RequestRedirectFollow
+    | RequestRedirectError
+    | RequestRedirectManual
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RequestRedirect where
+  pToJSVal x = pToJSVal (case x of
+    RequestRedirectFollow -> js_RequestRedirectFollow
+    RequestRedirectError -> js_RequestRedirectError
+    RequestRedirectManual -> js_RequestRedirectManual
+    )
+
+instance ToJSVal RequestRedirect where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RequestRedirect where
+  pFromJSVal x = P.maybe (P.error "Unexpected RequestRedirect value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestRedirectFollow, RequestRedirectFollow), (js_RequestRedirectError, RequestRedirectError), (js_RequestRedirectManual, RequestRedirectManual)]
+
+instance FromJSVal RequestRedirect where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RequestRedirectFollow, RequestRedirectFollow), (js_RequestRedirectError, RequestRedirectError), (js_RequestRedirectManual, RequestRedirectManual)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RequestRedirectFollow :: JSString
+js_RequestRedirectFollow = "follow"
+js_RequestRedirectError :: JSString
+js_RequestRedirectError = "error"
+js_RequestRedirectManual :: JSString
+js_RequestRedirectManual = "manual"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ResizeObserverBoxOptions> (resize-observer-1)
+data ResizeObserverBoxOptions = ResizeObserverBoxOptionsBorderBox
+    | ResizeObserverBoxOptionsContentBox
+    | ResizeObserverBoxOptionsDevicePixelContentBox
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ResizeObserverBoxOptions where
+  pToJSVal x = pToJSVal (case x of
+    ResizeObserverBoxOptionsBorderBox -> js_ResizeObserverBoxOptionsBorderBox
+    ResizeObserverBoxOptionsContentBox -> js_ResizeObserverBoxOptionsContentBox
+    ResizeObserverBoxOptionsDevicePixelContentBox -> js_ResizeObserverBoxOptionsDevicePixelContentBox
+    )
+
+instance ToJSVal ResizeObserverBoxOptions where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ResizeObserverBoxOptions where
+  pFromJSVal x = P.maybe (P.error "Unexpected ResizeObserverBoxOptions value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ResizeObserverBoxOptionsBorderBox, ResizeObserverBoxOptionsBorderBox), (js_ResizeObserverBoxOptionsContentBox, ResizeObserverBoxOptionsContentBox), (js_ResizeObserverBoxOptionsDevicePixelContentBox, ResizeObserverBoxOptionsDevicePixelContentBox)]
+
+instance FromJSVal ResizeObserverBoxOptions where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ResizeObserverBoxOptionsBorderBox, ResizeObserverBoxOptionsBorderBox), (js_ResizeObserverBoxOptionsContentBox, ResizeObserverBoxOptionsContentBox), (js_ResizeObserverBoxOptionsDevicePixelContentBox, ResizeObserverBoxOptionsDevicePixelContentBox)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ResizeObserverBoxOptionsBorderBox :: JSString
+js_ResizeObserverBoxOptionsBorderBox = "border-box"
+js_ResizeObserverBoxOptionsContentBox :: JSString
+js_ResizeObserverBoxOptionsContentBox = "content-box"
+js_ResizeObserverBoxOptionsDevicePixelContentBox :: JSString
+js_ResizeObserverBoxOptionsDevicePixelContentBox = "device-pixel-content-box"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ResponseType> (fetch)
+data ResponseType = ResponseTypeBasic
+    | ResponseTypeCors
+    | ResponseTypeDefault
+    | ResponseTypeError
+    | ResponseTypeOpaque
+    | ResponseTypeOpaqueredirect
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ResponseType where
+  pToJSVal x = pToJSVal (case x of
+    ResponseTypeBasic -> js_ResponseTypeBasic
+    ResponseTypeCors -> js_ResponseTypeCors
+    ResponseTypeDefault -> js_ResponseTypeDefault
+    ResponseTypeError -> js_ResponseTypeError
+    ResponseTypeOpaque -> js_ResponseTypeOpaque
+    ResponseTypeOpaqueredirect -> js_ResponseTypeOpaqueredirect
+    )
+
+instance ToJSVal ResponseType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ResponseType where
+  pFromJSVal x = P.maybe (P.error "Unexpected ResponseType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ResponseTypeBasic, ResponseTypeBasic), (js_ResponseTypeCors, ResponseTypeCors), (js_ResponseTypeDefault, ResponseTypeDefault), (js_ResponseTypeError, ResponseTypeError), (js_ResponseTypeOpaque, ResponseTypeOpaque), (js_ResponseTypeOpaqueredirect, ResponseTypeOpaqueredirect)]
+
+instance FromJSVal ResponseType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ResponseTypeBasic, ResponseTypeBasic), (js_ResponseTypeCors, ResponseTypeCors), (js_ResponseTypeDefault, ResponseTypeDefault), (js_ResponseTypeError, ResponseTypeError), (js_ResponseTypeOpaque, ResponseTypeOpaque), (js_ResponseTypeOpaqueredirect, ResponseTypeOpaqueredirect)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ResponseTypeBasic :: JSString
+js_ResponseTypeBasic = "basic"
+js_ResponseTypeCors :: JSString
+js_ResponseTypeCors = "cors"
+js_ResponseTypeDefault :: JSString
+js_ResponseTypeDefault = "default"
+js_ResponseTypeError :: JSString
+js_ResponseTypeError = "error"
+js_ResponseTypeOpaque :: JSString
+js_ResponseTypeOpaque = "opaque"
+js_ResponseTypeOpaqueredirect :: JSString
+js_ResponseTypeOpaqueredirect = "opaqueredirect"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RouterSourceEnum> (service-workers)
+data RouterSourceEnum = RouterSourceEnumCache
+    | RouterSourceEnumFetchEvent
+    | RouterSourceEnumNetwork
+    | RouterSourceEnumRaceNetworkAndFetchHandler
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RouterSourceEnum where
+  pToJSVal x = pToJSVal (case x of
+    RouterSourceEnumCache -> js_RouterSourceEnumCache
+    RouterSourceEnumFetchEvent -> js_RouterSourceEnumFetchEvent
+    RouterSourceEnumNetwork -> js_RouterSourceEnumNetwork
+    RouterSourceEnumRaceNetworkAndFetchHandler -> js_RouterSourceEnumRaceNetworkAndFetchHandler
+    )
+
+instance ToJSVal RouterSourceEnum where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RouterSourceEnum where
+  pFromJSVal x = P.maybe (P.error "Unexpected RouterSourceEnum value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RouterSourceEnumCache, RouterSourceEnumCache), (js_RouterSourceEnumFetchEvent, RouterSourceEnumFetchEvent), (js_RouterSourceEnumNetwork, RouterSourceEnumNetwork), (js_RouterSourceEnumRaceNetworkAndFetchHandler, RouterSourceEnumRaceNetworkAndFetchHandler)]
+
+instance FromJSVal RouterSourceEnum where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RouterSourceEnumCache, RouterSourceEnumCache), (js_RouterSourceEnumFetchEvent, RouterSourceEnumFetchEvent), (js_RouterSourceEnumNetwork, RouterSourceEnumNetwork), (js_RouterSourceEnumRaceNetworkAndFetchHandler, RouterSourceEnumRaceNetworkAndFetchHandler)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RouterSourceEnumCache :: JSString
+js_RouterSourceEnumCache = "cache"
+js_RouterSourceEnumFetchEvent :: JSString
+js_RouterSourceEnumFetchEvent = "fetch-event"
+js_RouterSourceEnumNetwork :: JSString
+js_RouterSourceEnumNetwork = "network"
+js_RouterSourceEnumRaceNetworkAndFetchHandler :: JSString
+js_RouterSourceEnumRaceNetworkAndFetchHandler = "race-network-and-fetch-handler"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API RunningStatus> (service-workers)
+data RunningStatus = RunningStatusRunning
+    | RunningStatusNotRunning
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal RunningStatus where
+  pToJSVal x = pToJSVal (case x of
+    RunningStatusRunning -> js_RunningStatusRunning
+    RunningStatusNotRunning -> js_RunningStatusNotRunning
+    )
+
+instance ToJSVal RunningStatus where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal RunningStatus where
+  pFromJSVal x = P.maybe (P.error "Unexpected RunningStatus value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RunningStatusRunning, RunningStatusRunning), (js_RunningStatusNotRunning, RunningStatusNotRunning)]
+
+instance FromJSVal RunningStatus where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_RunningStatusRunning, RunningStatusRunning), (js_RunningStatusNotRunning, RunningStatusNotRunning)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_RunningStatusRunning :: JSString
+js_RunningStatusRunning = "running"
+js_RunningStatusNotRunning :: JSString
+js_RunningStatusNotRunning = "not-running"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SameSiteCookiesType> (saa-non-cookie-storage)
+data SameSiteCookiesType = SameSiteCookiesTypeAll
+    | SameSiteCookiesTypeNone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SameSiteCookiesType where
+  pToJSVal x = pToJSVal (case x of
+    SameSiteCookiesTypeAll -> js_SameSiteCookiesTypeAll
+    SameSiteCookiesTypeNone -> js_SameSiteCookiesTypeNone
+    )
+
+instance ToJSVal SameSiteCookiesType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SameSiteCookiesType where
+  pFromJSVal x = P.maybe (P.error "Unexpected SameSiteCookiesType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SameSiteCookiesTypeAll, SameSiteCookiesTypeAll), (js_SameSiteCookiesTypeNone, SameSiteCookiesTypeNone)]
+
+instance FromJSVal SameSiteCookiesType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SameSiteCookiesTypeAll, SameSiteCookiesTypeAll), (js_SameSiteCookiesTypeNone, SameSiteCookiesTypeNone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SameSiteCookiesTypeAll :: JSString
+js_SameSiteCookiesTypeAll = "all"
+js_SameSiteCookiesTypeNone :: JSString
+js_SameSiteCookiesTypeNone = "none"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SanitizerPresets> (html)
+data SanitizerPresets = SanitizerPresetsDefault
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SanitizerPresets where
+  pToJSVal x = pToJSVal (case x of
+    SanitizerPresetsDefault -> js_SanitizerPresetsDefault
+    )
+
+instance ToJSVal SanitizerPresets where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SanitizerPresets where
+  pFromJSVal x = P.maybe (P.error "Unexpected SanitizerPresets value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SanitizerPresetsDefault, SanitizerPresetsDefault)]
+
+instance FromJSVal SanitizerPresets where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SanitizerPresetsDefault, SanitizerPresetsDefault)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SanitizerPresetsDefault :: JSString
+js_SanitizerPresetsDefault = "default"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ScrollAxis> (scroll-animations-1)
+data ScrollAxis = ScrollAxisBlock
+    | ScrollAxisInline
+    | ScrollAxisX
+    | ScrollAxisY
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ScrollAxis where
+  pToJSVal x = pToJSVal (case x of
+    ScrollAxisBlock -> js_ScrollAxisBlock
+    ScrollAxisInline -> js_ScrollAxisInline
+    ScrollAxisX -> js_ScrollAxisX
+    ScrollAxisY -> js_ScrollAxisY
+    )
+
+instance ToJSVal ScrollAxis where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ScrollAxis where
+  pFromJSVal x = P.maybe (P.error "Unexpected ScrollAxis value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollAxisBlock, ScrollAxisBlock), (js_ScrollAxisInline, ScrollAxisInline), (js_ScrollAxisX, ScrollAxisX), (js_ScrollAxisY, ScrollAxisY)]
+
+instance FromJSVal ScrollAxis where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollAxisBlock, ScrollAxisBlock), (js_ScrollAxisInline, ScrollAxisInline), (js_ScrollAxisX, ScrollAxisX), (js_ScrollAxisY, ScrollAxisY)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ScrollAxisBlock :: JSString
+js_ScrollAxisBlock = "block"
+js_ScrollAxisInline :: JSString
+js_ScrollAxisInline = "inline"
+js_ScrollAxisX :: JSString
+js_ScrollAxisX = "x"
+js_ScrollAxisY :: JSString
+js_ScrollAxisY = "y"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ScrollBehavior> (cssom-view-1)
+data ScrollBehavior = ScrollBehaviorAuto
+    | ScrollBehaviorInstant
+    | ScrollBehaviorSmooth
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ScrollBehavior where
+  pToJSVal x = pToJSVal (case x of
+    ScrollBehaviorAuto -> js_ScrollBehaviorAuto
+    ScrollBehaviorInstant -> js_ScrollBehaviorInstant
+    ScrollBehaviorSmooth -> js_ScrollBehaviorSmooth
+    )
+
+instance ToJSVal ScrollBehavior where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ScrollBehavior where
+  pFromJSVal x = P.maybe (P.error "Unexpected ScrollBehavior value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollBehaviorAuto, ScrollBehaviorAuto), (js_ScrollBehaviorInstant, ScrollBehaviorInstant), (js_ScrollBehaviorSmooth, ScrollBehaviorSmooth)]
+
+instance FromJSVal ScrollBehavior where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollBehaviorAuto, ScrollBehaviorAuto), (js_ScrollBehaviorInstant, ScrollBehaviorInstant), (js_ScrollBehaviorSmooth, ScrollBehaviorSmooth)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ScrollBehaviorAuto :: JSString
+js_ScrollBehaviorAuto = "auto"
+js_ScrollBehaviorInstant :: JSString
+js_ScrollBehaviorInstant = "instant"
+js_ScrollBehaviorSmooth :: JSString
+js_ScrollBehaviorSmooth = "smooth"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ScrollIntoViewContainer> (cssom-view-1)
+data ScrollIntoViewContainer = ScrollIntoViewContainerAll
+    | ScrollIntoViewContainerNearest
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ScrollIntoViewContainer where
+  pToJSVal x = pToJSVal (case x of
+    ScrollIntoViewContainerAll -> js_ScrollIntoViewContainerAll
+    ScrollIntoViewContainerNearest -> js_ScrollIntoViewContainerNearest
+    )
+
+instance ToJSVal ScrollIntoViewContainer where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ScrollIntoViewContainer where
+  pFromJSVal x = P.maybe (P.error "Unexpected ScrollIntoViewContainer value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollIntoViewContainerAll, ScrollIntoViewContainerAll), (js_ScrollIntoViewContainerNearest, ScrollIntoViewContainerNearest)]
+
+instance FromJSVal ScrollIntoViewContainer where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollIntoViewContainerAll, ScrollIntoViewContainerAll), (js_ScrollIntoViewContainerNearest, ScrollIntoViewContainerNearest)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ScrollIntoViewContainerAll :: JSString
+js_ScrollIntoViewContainerAll = "all"
+js_ScrollIntoViewContainerNearest :: JSString
+js_ScrollIntoViewContainerNearest = "nearest"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ScrollLogicalPosition> (cssom-view-1)
+data ScrollLogicalPosition = ScrollLogicalPositionStart
+    | ScrollLogicalPositionCenter
+    | ScrollLogicalPositionEnd
+    | ScrollLogicalPositionNearest
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ScrollLogicalPosition where
+  pToJSVal x = pToJSVal (case x of
+    ScrollLogicalPositionStart -> js_ScrollLogicalPositionStart
+    ScrollLogicalPositionCenter -> js_ScrollLogicalPositionCenter
+    ScrollLogicalPositionEnd -> js_ScrollLogicalPositionEnd
+    ScrollLogicalPositionNearest -> js_ScrollLogicalPositionNearest
+    )
+
+instance ToJSVal ScrollLogicalPosition where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ScrollLogicalPosition where
+  pFromJSVal x = P.maybe (P.error "Unexpected ScrollLogicalPosition value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollLogicalPositionStart, ScrollLogicalPositionStart), (js_ScrollLogicalPositionCenter, ScrollLogicalPositionCenter), (js_ScrollLogicalPositionEnd, ScrollLogicalPositionEnd), (js_ScrollLogicalPositionNearest, ScrollLogicalPositionNearest)]
+
+instance FromJSVal ScrollLogicalPosition where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollLogicalPositionStart, ScrollLogicalPositionStart), (js_ScrollLogicalPositionCenter, ScrollLogicalPositionCenter), (js_ScrollLogicalPositionEnd, ScrollLogicalPositionEnd), (js_ScrollLogicalPositionNearest, ScrollLogicalPositionNearest)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ScrollLogicalPositionStart :: JSString
+js_ScrollLogicalPositionStart = "start"
+js_ScrollLogicalPositionCenter :: JSString
+js_ScrollLogicalPositionCenter = "center"
+js_ScrollLogicalPositionEnd :: JSString
+js_ScrollLogicalPositionEnd = "end"
+js_ScrollLogicalPositionNearest :: JSString
+js_ScrollLogicalPositionNearest = "nearest"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ScrollRestoration> (html)
+data ScrollRestoration = ScrollRestorationAuto
+    | ScrollRestorationManual
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ScrollRestoration where
+  pToJSVal x = pToJSVal (case x of
+    ScrollRestorationAuto -> js_ScrollRestorationAuto
+    ScrollRestorationManual -> js_ScrollRestorationManual
+    )
+
+instance ToJSVal ScrollRestoration where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ScrollRestoration where
+  pFromJSVal x = P.maybe (P.error "Unexpected ScrollRestoration value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollRestorationAuto, ScrollRestorationAuto), (js_ScrollRestorationManual, ScrollRestorationManual)]
+
+instance FromJSVal ScrollRestoration where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollRestorationAuto, ScrollRestorationAuto), (js_ScrollRestorationManual, ScrollRestorationManual)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ScrollRestorationAuto :: JSString
+js_ScrollRestorationAuto = "auto"
+js_ScrollRestorationManual :: JSString
+js_ScrollRestorationManual = "manual"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ScrollSetting> (webvtt1)
+data ScrollSetting = ScrollSetting
+    | ScrollSettingUp
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ScrollSetting where
+  pToJSVal x = pToJSVal (case x of
+    ScrollSetting -> js_ScrollSetting
+    ScrollSettingUp -> js_ScrollSettingUp
+    )
+
+instance ToJSVal ScrollSetting where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ScrollSetting where
+  pFromJSVal x = P.maybe (P.error "Unexpected ScrollSetting value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollSetting, ScrollSetting), (js_ScrollSettingUp, ScrollSettingUp)]
+
+instance FromJSVal ScrollSetting where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ScrollSetting, ScrollSetting), (js_ScrollSettingUp, ScrollSettingUp)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ScrollSetting :: JSString
+js_ScrollSetting = ""
+js_ScrollSettingUp :: JSString
+js_ScrollSettingUp = "up"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SecurityPolicyViolationEventDisposition> (CSP3)
+data SecurityPolicyViolationEventDisposition = SecurityPolicyViolationEventDispositionEnforce
+    | SecurityPolicyViolationEventDispositionReport
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SecurityPolicyViolationEventDisposition where
+  pToJSVal x = pToJSVal (case x of
+    SecurityPolicyViolationEventDispositionEnforce -> js_SecurityPolicyViolationEventDispositionEnforce
+    SecurityPolicyViolationEventDispositionReport -> js_SecurityPolicyViolationEventDispositionReport
+    )
+
+instance ToJSVal SecurityPolicyViolationEventDisposition where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SecurityPolicyViolationEventDisposition where
+  pFromJSVal x = P.maybe (P.error "Unexpected SecurityPolicyViolationEventDisposition value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SecurityPolicyViolationEventDispositionEnforce, SecurityPolicyViolationEventDispositionEnforce), (js_SecurityPolicyViolationEventDispositionReport, SecurityPolicyViolationEventDispositionReport)]
+
+instance FromJSVal SecurityPolicyViolationEventDisposition where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SecurityPolicyViolationEventDispositionEnforce, SecurityPolicyViolationEventDispositionEnforce), (js_SecurityPolicyViolationEventDispositionReport, SecurityPolicyViolationEventDispositionReport)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SecurityPolicyViolationEventDispositionEnforce :: JSString
+js_SecurityPolicyViolationEventDispositionEnforce = "enforce"
+js_SecurityPolicyViolationEventDispositionReport :: JSString
+js_SecurityPolicyViolationEventDispositionReport = "report"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SegmentType> (mediacapture-extensions)
+data SegmentType = SegmentTypeHumanFace
+    | SegmentTypeLeftEye
+    | SegmentTypeRightEye
+    | SegmentTypeEye
+    | SegmentTypeMouth
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SegmentType where
+  pToJSVal x = pToJSVal (case x of
+    SegmentTypeHumanFace -> js_SegmentTypeHumanFace
+    SegmentTypeLeftEye -> js_SegmentTypeLeftEye
+    SegmentTypeRightEye -> js_SegmentTypeRightEye
+    SegmentTypeEye -> js_SegmentTypeEye
+    SegmentTypeMouth -> js_SegmentTypeMouth
+    )
+
+instance ToJSVal SegmentType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SegmentType where
+  pFromJSVal x = P.maybe (P.error "Unexpected SegmentType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SegmentTypeHumanFace, SegmentTypeHumanFace), (js_SegmentTypeLeftEye, SegmentTypeLeftEye), (js_SegmentTypeRightEye, SegmentTypeRightEye), (js_SegmentTypeEye, SegmentTypeEye), (js_SegmentTypeMouth, SegmentTypeMouth)]
+
+instance FromJSVal SegmentType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SegmentTypeHumanFace, SegmentTypeHumanFace), (js_SegmentTypeLeftEye, SegmentTypeLeftEye), (js_SegmentTypeRightEye, SegmentTypeRightEye), (js_SegmentTypeEye, SegmentTypeEye), (js_SegmentTypeMouth, SegmentTypeMouth)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SegmentTypeHumanFace :: JSString
+js_SegmentTypeHumanFace = "human-face"
+js_SegmentTypeLeftEye :: JSString
+js_SegmentTypeLeftEye = "left-eye"
+js_SegmentTypeRightEye :: JSString
+js_SegmentTypeRightEye = "right-eye"
+js_SegmentTypeEye :: JSString
+js_SegmentTypeEye = "eye"
+js_SegmentTypeMouth :: JSString
+js_SegmentTypeMouth = "mouth"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SelectionMode> (html)
+data SelectionMode = SelectionModeSelect
+    | SelectionModeStart
+    | SelectionModeEnd
+    | SelectionModePreserve
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SelectionMode where
+  pToJSVal x = pToJSVal (case x of
+    SelectionModeSelect -> js_SelectionModeSelect
+    SelectionModeStart -> js_SelectionModeStart
+    SelectionModeEnd -> js_SelectionModeEnd
+    SelectionModePreserve -> js_SelectionModePreserve
+    )
+
+instance ToJSVal SelectionMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SelectionMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected SelectionMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SelectionModeSelect, SelectionModeSelect), (js_SelectionModeStart, SelectionModeStart), (js_SelectionModeEnd, SelectionModeEnd), (js_SelectionModePreserve, SelectionModePreserve)]
+
+instance FromJSVal SelectionMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SelectionModeSelect, SelectionModeSelect), (js_SelectionModeStart, SelectionModeStart), (js_SelectionModeEnd, SelectionModeEnd), (js_SelectionModePreserve, SelectionModePreserve)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SelectionModeSelect :: JSString
+js_SelectionModeSelect = "select"
+js_SelectionModeStart :: JSString
+js_SelectionModeStart = "start"
+js_SelectionModeEnd :: JSString
+js_SelectionModeEnd = "end"
+js_SelectionModePreserve :: JSString
+js_SelectionModePreserve = "preserve"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SelfCapturePreferenceEnum> (screen-capture)
+data SelfCapturePreferenceEnum = SelfCapturePreferenceEnumInclude
+    | SelfCapturePreferenceEnumExclude
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SelfCapturePreferenceEnum where
+  pToJSVal x = pToJSVal (case x of
+    SelfCapturePreferenceEnumInclude -> js_SelfCapturePreferenceEnumInclude
+    SelfCapturePreferenceEnumExclude -> js_SelfCapturePreferenceEnumExclude
+    )
+
+instance ToJSVal SelfCapturePreferenceEnum where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SelfCapturePreferenceEnum where
+  pFromJSVal x = P.maybe (P.error "Unexpected SelfCapturePreferenceEnum value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SelfCapturePreferenceEnumInclude, SelfCapturePreferenceEnumInclude), (js_SelfCapturePreferenceEnumExclude, SelfCapturePreferenceEnumExclude)]
+
+instance FromJSVal SelfCapturePreferenceEnum where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SelfCapturePreferenceEnumInclude, SelfCapturePreferenceEnumInclude), (js_SelfCapturePreferenceEnumExclude, SelfCapturePreferenceEnumExclude)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SelfCapturePreferenceEnumInclude :: JSString
+js_SelfCapturePreferenceEnumInclude = "include"
+js_SelfCapturePreferenceEnumExclude :: JSString
+js_SelfCapturePreferenceEnumExclude = "exclude"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ServiceWorkerState> (service-workers)
+data ServiceWorkerState = ServiceWorkerStateParsed
+    | ServiceWorkerStateInstalling
+    | ServiceWorkerStateInstalled
+    | ServiceWorkerStateActivating
+    | ServiceWorkerStateActivated
+    | ServiceWorkerStateRedundant
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ServiceWorkerState where
+  pToJSVal x = pToJSVal (case x of
+    ServiceWorkerStateParsed -> js_ServiceWorkerStateParsed
+    ServiceWorkerStateInstalling -> js_ServiceWorkerStateInstalling
+    ServiceWorkerStateInstalled -> js_ServiceWorkerStateInstalled
+    ServiceWorkerStateActivating -> js_ServiceWorkerStateActivating
+    ServiceWorkerStateActivated -> js_ServiceWorkerStateActivated
+    ServiceWorkerStateRedundant -> js_ServiceWorkerStateRedundant
+    )
+
+instance ToJSVal ServiceWorkerState where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ServiceWorkerState where
+  pFromJSVal x = P.maybe (P.error "Unexpected ServiceWorkerState value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ServiceWorkerStateParsed, ServiceWorkerStateParsed), (js_ServiceWorkerStateInstalling, ServiceWorkerStateInstalling), (js_ServiceWorkerStateInstalled, ServiceWorkerStateInstalled), (js_ServiceWorkerStateActivating, ServiceWorkerStateActivating), (js_ServiceWorkerStateActivated, ServiceWorkerStateActivated), (js_ServiceWorkerStateRedundant, ServiceWorkerStateRedundant)]
+
+instance FromJSVal ServiceWorkerState where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ServiceWorkerStateParsed, ServiceWorkerStateParsed), (js_ServiceWorkerStateInstalling, ServiceWorkerStateInstalling), (js_ServiceWorkerStateInstalled, ServiceWorkerStateInstalled), (js_ServiceWorkerStateActivating, ServiceWorkerStateActivating), (js_ServiceWorkerStateActivated, ServiceWorkerStateActivated), (js_ServiceWorkerStateRedundant, ServiceWorkerStateRedundant)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ServiceWorkerStateParsed :: JSString
+js_ServiceWorkerStateParsed = "parsed"
+js_ServiceWorkerStateInstalling :: JSString
+js_ServiceWorkerStateInstalling = "installing"
+js_ServiceWorkerStateInstalled :: JSString
+js_ServiceWorkerStateInstalled = "installed"
+js_ServiceWorkerStateActivating :: JSString
+js_ServiceWorkerStateActivating = "activating"
+js_ServiceWorkerStateActivated :: JSString
+js_ServiceWorkerStateActivated = "activated"
+js_ServiceWorkerStateRedundant :: JSString
+js_ServiceWorkerStateRedundant = "redundant"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ServiceWorkerUpdateViaCache> (service-workers)
+data ServiceWorkerUpdateViaCache = ServiceWorkerUpdateViaCacheImports
+    | ServiceWorkerUpdateViaCacheAll
+    | ServiceWorkerUpdateViaCacheNone
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ServiceWorkerUpdateViaCache where
+  pToJSVal x = pToJSVal (case x of
+    ServiceWorkerUpdateViaCacheImports -> js_ServiceWorkerUpdateViaCacheImports
+    ServiceWorkerUpdateViaCacheAll -> js_ServiceWorkerUpdateViaCacheAll
+    ServiceWorkerUpdateViaCacheNone -> js_ServiceWorkerUpdateViaCacheNone
+    )
+
+instance ToJSVal ServiceWorkerUpdateViaCache where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ServiceWorkerUpdateViaCache where
+  pFromJSVal x = P.maybe (P.error "Unexpected ServiceWorkerUpdateViaCache value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ServiceWorkerUpdateViaCacheImports, ServiceWorkerUpdateViaCacheImports), (js_ServiceWorkerUpdateViaCacheAll, ServiceWorkerUpdateViaCacheAll), (js_ServiceWorkerUpdateViaCacheNone, ServiceWorkerUpdateViaCacheNone)]
+
+instance FromJSVal ServiceWorkerUpdateViaCache where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ServiceWorkerUpdateViaCacheImports, ServiceWorkerUpdateViaCacheImports), (js_ServiceWorkerUpdateViaCacheAll, ServiceWorkerUpdateViaCacheAll), (js_ServiceWorkerUpdateViaCacheNone, ServiceWorkerUpdateViaCacheNone)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ServiceWorkerUpdateViaCacheImports :: JSString
+js_ServiceWorkerUpdateViaCacheImports = "imports"
+js_ServiceWorkerUpdateViaCacheAll :: JSString
+js_ServiceWorkerUpdateViaCacheAll = "all"
+js_ServiceWorkerUpdateViaCacheNone :: JSString
+js_ServiceWorkerUpdateViaCacheNone = "none"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API ShadowRootMode> (dom)
+data ShadowRootMode = ShadowRootModeOpen
+    | ShadowRootModeClosed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal ShadowRootMode where
+  pToJSVal x = pToJSVal (case x of
+    ShadowRootModeOpen -> js_ShadowRootModeOpen
+    ShadowRootModeClosed -> js_ShadowRootModeClosed
+    )
+
+instance ToJSVal ShadowRootMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal ShadowRootMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected ShadowRootMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ShadowRootModeOpen, ShadowRootModeOpen), (js_ShadowRootModeClosed, ShadowRootModeClosed)]
+
+instance FromJSVal ShadowRootMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_ShadowRootModeOpen, ShadowRootModeOpen), (js_ShadowRootModeClosed, ShadowRootModeClosed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_ShadowRootModeOpen :: JSString
+js_ShadowRootModeOpen = "open"
+js_ShadowRootModeClosed :: JSString
+js_ShadowRootModeClosed = "closed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SlotAssignmentMode> (dom)
+data SlotAssignmentMode = SlotAssignmentModeManual
+    | SlotAssignmentModeNamed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SlotAssignmentMode where
+  pToJSVal x = pToJSVal (case x of
+    SlotAssignmentModeManual -> js_SlotAssignmentModeManual
+    SlotAssignmentModeNamed -> js_SlotAssignmentModeNamed
+    )
+
+instance ToJSVal SlotAssignmentMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SlotAssignmentMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected SlotAssignmentMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SlotAssignmentModeManual, SlotAssignmentModeManual), (js_SlotAssignmentModeNamed, SlotAssignmentModeNamed)]
+
+instance FromJSVal SlotAssignmentMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SlotAssignmentModeManual, SlotAssignmentModeManual), (js_SlotAssignmentModeNamed, SlotAssignmentModeNamed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SlotAssignmentModeManual :: JSString
+js_SlotAssignmentModeManual = "manual"
+js_SlotAssignmentModeNamed :: JSString
+js_SlotAssignmentModeNamed = "named"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SpeechRecognitionAvailabilityStatus> (speech-api)
+data SpeechRecognitionAvailabilityStatus = SpeechRecognitionAvailabilityStatusUnavailable
+    | SpeechRecognitionAvailabilityStatusDownloadable
+    | SpeechRecognitionAvailabilityStatusDownloading
+    | SpeechRecognitionAvailabilityStatusAvailable
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SpeechRecognitionAvailabilityStatus where
+  pToJSVal x = pToJSVal (case x of
+    SpeechRecognitionAvailabilityStatusUnavailable -> js_SpeechRecognitionAvailabilityStatusUnavailable
+    SpeechRecognitionAvailabilityStatusDownloadable -> js_SpeechRecognitionAvailabilityStatusDownloadable
+    SpeechRecognitionAvailabilityStatusDownloading -> js_SpeechRecognitionAvailabilityStatusDownloading
+    SpeechRecognitionAvailabilityStatusAvailable -> js_SpeechRecognitionAvailabilityStatusAvailable
+    )
+
+instance ToJSVal SpeechRecognitionAvailabilityStatus where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SpeechRecognitionAvailabilityStatus where
+  pFromJSVal x = P.maybe (P.error "Unexpected SpeechRecognitionAvailabilityStatus value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechRecognitionAvailabilityStatusUnavailable, SpeechRecognitionAvailabilityStatusUnavailable), (js_SpeechRecognitionAvailabilityStatusDownloadable, SpeechRecognitionAvailabilityStatusDownloadable), (js_SpeechRecognitionAvailabilityStatusDownloading, SpeechRecognitionAvailabilityStatusDownloading), (js_SpeechRecognitionAvailabilityStatusAvailable, SpeechRecognitionAvailabilityStatusAvailable)]
+
+instance FromJSVal SpeechRecognitionAvailabilityStatus where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechRecognitionAvailabilityStatusUnavailable, SpeechRecognitionAvailabilityStatusUnavailable), (js_SpeechRecognitionAvailabilityStatusDownloadable, SpeechRecognitionAvailabilityStatusDownloadable), (js_SpeechRecognitionAvailabilityStatusDownloading, SpeechRecognitionAvailabilityStatusDownloading), (js_SpeechRecognitionAvailabilityStatusAvailable, SpeechRecognitionAvailabilityStatusAvailable)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SpeechRecognitionAvailabilityStatusUnavailable :: JSString
+js_SpeechRecognitionAvailabilityStatusUnavailable = "unavailable"
+js_SpeechRecognitionAvailabilityStatusDownloadable :: JSString
+js_SpeechRecognitionAvailabilityStatusDownloadable = "downloadable"
+js_SpeechRecognitionAvailabilityStatusDownloading :: JSString
+js_SpeechRecognitionAvailabilityStatusDownloading = "downloading"
+js_SpeechRecognitionAvailabilityStatusAvailable :: JSString
+js_SpeechRecognitionAvailabilityStatusAvailable = "available"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SpeechRecognitionErrorCode> (speech-api)
+data SpeechRecognitionErrorCode = SpeechRecognitionErrorCodeNoSpeech
+    | SpeechRecognitionErrorCodeAborted
+    | SpeechRecognitionErrorCodeAudioCapture
+    | SpeechRecognitionErrorCodeNetwork
+    | SpeechRecognitionErrorCodeNotAllowed
+    | SpeechRecognitionErrorCodeServiceNotAllowed
+    | SpeechRecognitionErrorCodeLanguageNotSupported
+    | SpeechRecognitionErrorCodePhrasesNotSupported
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SpeechRecognitionErrorCode where
+  pToJSVal x = pToJSVal (case x of
+    SpeechRecognitionErrorCodeNoSpeech -> js_SpeechRecognitionErrorCodeNoSpeech
+    SpeechRecognitionErrorCodeAborted -> js_SpeechRecognitionErrorCodeAborted
+    SpeechRecognitionErrorCodeAudioCapture -> js_SpeechRecognitionErrorCodeAudioCapture
+    SpeechRecognitionErrorCodeNetwork -> js_SpeechRecognitionErrorCodeNetwork
+    SpeechRecognitionErrorCodeNotAllowed -> js_SpeechRecognitionErrorCodeNotAllowed
+    SpeechRecognitionErrorCodeServiceNotAllowed -> js_SpeechRecognitionErrorCodeServiceNotAllowed
+    SpeechRecognitionErrorCodeLanguageNotSupported -> js_SpeechRecognitionErrorCodeLanguageNotSupported
+    SpeechRecognitionErrorCodePhrasesNotSupported -> js_SpeechRecognitionErrorCodePhrasesNotSupported
+    )
+
+instance ToJSVal SpeechRecognitionErrorCode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SpeechRecognitionErrorCode where
+  pFromJSVal x = P.maybe (P.error "Unexpected SpeechRecognitionErrorCode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechRecognitionErrorCodeNoSpeech, SpeechRecognitionErrorCodeNoSpeech), (js_SpeechRecognitionErrorCodeAborted, SpeechRecognitionErrorCodeAborted), (js_SpeechRecognitionErrorCodeAudioCapture, SpeechRecognitionErrorCodeAudioCapture), (js_SpeechRecognitionErrorCodeNetwork, SpeechRecognitionErrorCodeNetwork), (js_SpeechRecognitionErrorCodeNotAllowed, SpeechRecognitionErrorCodeNotAllowed), (js_SpeechRecognitionErrorCodeServiceNotAllowed, SpeechRecognitionErrorCodeServiceNotAllowed), (js_SpeechRecognitionErrorCodeLanguageNotSupported, SpeechRecognitionErrorCodeLanguageNotSupported), (js_SpeechRecognitionErrorCodePhrasesNotSupported, SpeechRecognitionErrorCodePhrasesNotSupported)]
+
+instance FromJSVal SpeechRecognitionErrorCode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechRecognitionErrorCodeNoSpeech, SpeechRecognitionErrorCodeNoSpeech), (js_SpeechRecognitionErrorCodeAborted, SpeechRecognitionErrorCodeAborted), (js_SpeechRecognitionErrorCodeAudioCapture, SpeechRecognitionErrorCodeAudioCapture), (js_SpeechRecognitionErrorCodeNetwork, SpeechRecognitionErrorCodeNetwork), (js_SpeechRecognitionErrorCodeNotAllowed, SpeechRecognitionErrorCodeNotAllowed), (js_SpeechRecognitionErrorCodeServiceNotAllowed, SpeechRecognitionErrorCodeServiceNotAllowed), (js_SpeechRecognitionErrorCodeLanguageNotSupported, SpeechRecognitionErrorCodeLanguageNotSupported), (js_SpeechRecognitionErrorCodePhrasesNotSupported, SpeechRecognitionErrorCodePhrasesNotSupported)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SpeechRecognitionErrorCodeNoSpeech :: JSString
+js_SpeechRecognitionErrorCodeNoSpeech = "no-speech"
+js_SpeechRecognitionErrorCodeAborted :: JSString
+js_SpeechRecognitionErrorCodeAborted = "aborted"
+js_SpeechRecognitionErrorCodeAudioCapture :: JSString
+js_SpeechRecognitionErrorCodeAudioCapture = "audio-capture"
+js_SpeechRecognitionErrorCodeNetwork :: JSString
+js_SpeechRecognitionErrorCodeNetwork = "network"
+js_SpeechRecognitionErrorCodeNotAllowed :: JSString
+js_SpeechRecognitionErrorCodeNotAllowed = "not-allowed"
+js_SpeechRecognitionErrorCodeServiceNotAllowed :: JSString
+js_SpeechRecognitionErrorCodeServiceNotAllowed = "service-not-allowed"
+js_SpeechRecognitionErrorCodeLanguageNotSupported :: JSString
+js_SpeechRecognitionErrorCodeLanguageNotSupported = "language-not-supported"
+js_SpeechRecognitionErrorCodePhrasesNotSupported :: JSString
+js_SpeechRecognitionErrorCodePhrasesNotSupported = "phrases-not-supported"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SpeechRecognitionQuality> (speech-api)
+data SpeechRecognitionQuality = SpeechRecognitionQualityCommand
+    | SpeechRecognitionQualityDictation
+    | SpeechRecognitionQualityConversation
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SpeechRecognitionQuality where
+  pToJSVal x = pToJSVal (case x of
+    SpeechRecognitionQualityCommand -> js_SpeechRecognitionQualityCommand
+    SpeechRecognitionQualityDictation -> js_SpeechRecognitionQualityDictation
+    SpeechRecognitionQualityConversation -> js_SpeechRecognitionQualityConversation
+    )
+
+instance ToJSVal SpeechRecognitionQuality where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SpeechRecognitionQuality where
+  pFromJSVal x = P.maybe (P.error "Unexpected SpeechRecognitionQuality value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechRecognitionQualityCommand, SpeechRecognitionQualityCommand), (js_SpeechRecognitionQualityDictation, SpeechRecognitionQualityDictation), (js_SpeechRecognitionQualityConversation, SpeechRecognitionQualityConversation)]
+
+instance FromJSVal SpeechRecognitionQuality where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechRecognitionQualityCommand, SpeechRecognitionQualityCommand), (js_SpeechRecognitionQualityDictation, SpeechRecognitionQualityDictation), (js_SpeechRecognitionQualityConversation, SpeechRecognitionQualityConversation)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SpeechRecognitionQualityCommand :: JSString
+js_SpeechRecognitionQualityCommand = "command"
+js_SpeechRecognitionQualityDictation :: JSString
+js_SpeechRecognitionQualityDictation = "dictation"
+js_SpeechRecognitionQualityConversation :: JSString
+js_SpeechRecognitionQualityConversation = "conversation"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SpeechSynthesisErrorCode> (speech-api)
+data SpeechSynthesisErrorCode = SpeechSynthesisErrorCodeCanceled
+    | SpeechSynthesisErrorCodeInterrupted
+    | SpeechSynthesisErrorCodeAudioBusy
+    | SpeechSynthesisErrorCodeAudioHardware
+    | SpeechSynthesisErrorCodeNetwork
+    | SpeechSynthesisErrorCodeSynthesisUnavailable
+    | SpeechSynthesisErrorCodeSynthesisFailed
+    | SpeechSynthesisErrorCodeLanguageUnavailable
+    | SpeechSynthesisErrorCodeVoiceUnavailable
+    | SpeechSynthesisErrorCodeTextTooLong
+    | SpeechSynthesisErrorCodeInvalidArgument
+    | SpeechSynthesisErrorCodeNotAllowed
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SpeechSynthesisErrorCode where
+  pToJSVal x = pToJSVal (case x of
+    SpeechSynthesisErrorCodeCanceled -> js_SpeechSynthesisErrorCodeCanceled
+    SpeechSynthesisErrorCodeInterrupted -> js_SpeechSynthesisErrorCodeInterrupted
+    SpeechSynthesisErrorCodeAudioBusy -> js_SpeechSynthesisErrorCodeAudioBusy
+    SpeechSynthesisErrorCodeAudioHardware -> js_SpeechSynthesisErrorCodeAudioHardware
+    SpeechSynthesisErrorCodeNetwork -> js_SpeechSynthesisErrorCodeNetwork
+    SpeechSynthesisErrorCodeSynthesisUnavailable -> js_SpeechSynthesisErrorCodeSynthesisUnavailable
+    SpeechSynthesisErrorCodeSynthesisFailed -> js_SpeechSynthesisErrorCodeSynthesisFailed
+    SpeechSynthesisErrorCodeLanguageUnavailable -> js_SpeechSynthesisErrorCodeLanguageUnavailable
+    SpeechSynthesisErrorCodeVoiceUnavailable -> js_SpeechSynthesisErrorCodeVoiceUnavailable
+    SpeechSynthesisErrorCodeTextTooLong -> js_SpeechSynthesisErrorCodeTextTooLong
+    SpeechSynthesisErrorCodeInvalidArgument -> js_SpeechSynthesisErrorCodeInvalidArgument
+    SpeechSynthesisErrorCodeNotAllowed -> js_SpeechSynthesisErrorCodeNotAllowed
+    )
+
+instance ToJSVal SpeechSynthesisErrorCode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SpeechSynthesisErrorCode where
+  pFromJSVal x = P.maybe (P.error "Unexpected SpeechSynthesisErrorCode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechSynthesisErrorCodeCanceled, SpeechSynthesisErrorCodeCanceled), (js_SpeechSynthesisErrorCodeInterrupted, SpeechSynthesisErrorCodeInterrupted), (js_SpeechSynthesisErrorCodeAudioBusy, SpeechSynthesisErrorCodeAudioBusy), (js_SpeechSynthesisErrorCodeAudioHardware, SpeechSynthesisErrorCodeAudioHardware), (js_SpeechSynthesisErrorCodeNetwork, SpeechSynthesisErrorCodeNetwork), (js_SpeechSynthesisErrorCodeSynthesisUnavailable, SpeechSynthesisErrorCodeSynthesisUnavailable), (js_SpeechSynthesisErrorCodeSynthesisFailed, SpeechSynthesisErrorCodeSynthesisFailed), (js_SpeechSynthesisErrorCodeLanguageUnavailable, SpeechSynthesisErrorCodeLanguageUnavailable), (js_SpeechSynthesisErrorCodeVoiceUnavailable, SpeechSynthesisErrorCodeVoiceUnavailable), (js_SpeechSynthesisErrorCodeTextTooLong, SpeechSynthesisErrorCodeTextTooLong), (js_SpeechSynthesisErrorCodeInvalidArgument, SpeechSynthesisErrorCodeInvalidArgument), (js_SpeechSynthesisErrorCodeNotAllowed, SpeechSynthesisErrorCodeNotAllowed)]
+
+instance FromJSVal SpeechSynthesisErrorCode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SpeechSynthesisErrorCodeCanceled, SpeechSynthesisErrorCodeCanceled), (js_SpeechSynthesisErrorCodeInterrupted, SpeechSynthesisErrorCodeInterrupted), (js_SpeechSynthesisErrorCodeAudioBusy, SpeechSynthesisErrorCodeAudioBusy), (js_SpeechSynthesisErrorCodeAudioHardware, SpeechSynthesisErrorCodeAudioHardware), (js_SpeechSynthesisErrorCodeNetwork, SpeechSynthesisErrorCodeNetwork), (js_SpeechSynthesisErrorCodeSynthesisUnavailable, SpeechSynthesisErrorCodeSynthesisUnavailable), (js_SpeechSynthesisErrorCodeSynthesisFailed, SpeechSynthesisErrorCodeSynthesisFailed), (js_SpeechSynthesisErrorCodeLanguageUnavailable, SpeechSynthesisErrorCodeLanguageUnavailable), (js_SpeechSynthesisErrorCodeVoiceUnavailable, SpeechSynthesisErrorCodeVoiceUnavailable), (js_SpeechSynthesisErrorCodeTextTooLong, SpeechSynthesisErrorCodeTextTooLong), (js_SpeechSynthesisErrorCodeInvalidArgument, SpeechSynthesisErrorCodeInvalidArgument), (js_SpeechSynthesisErrorCodeNotAllowed, SpeechSynthesisErrorCodeNotAllowed)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SpeechSynthesisErrorCodeCanceled :: JSString
+js_SpeechSynthesisErrorCodeCanceled = "canceled"
+js_SpeechSynthesisErrorCodeInterrupted :: JSString
+js_SpeechSynthesisErrorCodeInterrupted = "interrupted"
+js_SpeechSynthesisErrorCodeAudioBusy :: JSString
+js_SpeechSynthesisErrorCodeAudioBusy = "audio-busy"
+js_SpeechSynthesisErrorCodeAudioHardware :: JSString
+js_SpeechSynthesisErrorCodeAudioHardware = "audio-hardware"
+js_SpeechSynthesisErrorCodeNetwork :: JSString
+js_SpeechSynthesisErrorCodeNetwork = "network"
+js_SpeechSynthesisErrorCodeSynthesisUnavailable :: JSString
+js_SpeechSynthesisErrorCodeSynthesisUnavailable = "synthesis-unavailable"
+js_SpeechSynthesisErrorCodeSynthesisFailed :: JSString
+js_SpeechSynthesisErrorCodeSynthesisFailed = "synthesis-failed"
+js_SpeechSynthesisErrorCodeLanguageUnavailable :: JSString
+js_SpeechSynthesisErrorCodeLanguageUnavailable = "language-unavailable"
+js_SpeechSynthesisErrorCodeVoiceUnavailable :: JSString
+js_SpeechSynthesisErrorCodeVoiceUnavailable = "voice-unavailable"
+js_SpeechSynthesisErrorCodeTextTooLong :: JSString
+js_SpeechSynthesisErrorCodeTextTooLong = "text-too-long"
+js_SpeechSynthesisErrorCodeInvalidArgument :: JSString
+js_SpeechSynthesisErrorCodeInvalidArgument = "invalid-argument"
+js_SpeechSynthesisErrorCodeNotAllowed :: JSString
+js_SpeechSynthesisErrorCodeNotAllowed = "not-allowed"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SurfaceSwitchingPreferenceEnum> (screen-capture)
+data SurfaceSwitchingPreferenceEnum = SurfaceSwitchingPreferenceEnumInclude
+    | SurfaceSwitchingPreferenceEnumExclude
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SurfaceSwitchingPreferenceEnum where
+  pToJSVal x = pToJSVal (case x of
+    SurfaceSwitchingPreferenceEnumInclude -> js_SurfaceSwitchingPreferenceEnumInclude
+    SurfaceSwitchingPreferenceEnumExclude -> js_SurfaceSwitchingPreferenceEnumExclude
+    )
+
+instance ToJSVal SurfaceSwitchingPreferenceEnum where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SurfaceSwitchingPreferenceEnum where
+  pFromJSVal x = P.maybe (P.error "Unexpected SurfaceSwitchingPreferenceEnum value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SurfaceSwitchingPreferenceEnumInclude, SurfaceSwitchingPreferenceEnumInclude), (js_SurfaceSwitchingPreferenceEnumExclude, SurfaceSwitchingPreferenceEnumExclude)]
+
+instance FromJSVal SurfaceSwitchingPreferenceEnum where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SurfaceSwitchingPreferenceEnumInclude, SurfaceSwitchingPreferenceEnumInclude), (js_SurfaceSwitchingPreferenceEnumExclude, SurfaceSwitchingPreferenceEnumExclude)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SurfaceSwitchingPreferenceEnumInclude :: JSString
+js_SurfaceSwitchingPreferenceEnumInclude = "include"
+js_SurfaceSwitchingPreferenceEnumExclude :: JSString
+js_SurfaceSwitchingPreferenceEnumExclude = "exclude"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API SystemAudioPreferenceEnum> (screen-capture)
+data SystemAudioPreferenceEnum = SystemAudioPreferenceEnumInclude
+    | SystemAudioPreferenceEnumExclude
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal SystemAudioPreferenceEnum where
+  pToJSVal x = pToJSVal (case x of
+    SystemAudioPreferenceEnumInclude -> js_SystemAudioPreferenceEnumInclude
+    SystemAudioPreferenceEnumExclude -> js_SystemAudioPreferenceEnumExclude
+    )
+
+instance ToJSVal SystemAudioPreferenceEnum where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal SystemAudioPreferenceEnum where
+  pFromJSVal x = P.maybe (P.error "Unexpected SystemAudioPreferenceEnum value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SystemAudioPreferenceEnumInclude, SystemAudioPreferenceEnumInclude), (js_SystemAudioPreferenceEnumExclude, SystemAudioPreferenceEnumExclude)]
+
+instance FromJSVal SystemAudioPreferenceEnum where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_SystemAudioPreferenceEnumInclude, SystemAudioPreferenceEnumInclude), (js_SystemAudioPreferenceEnumExclude, SystemAudioPreferenceEnumExclude)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_SystemAudioPreferenceEnumInclude :: JSString
+js_SystemAudioPreferenceEnumInclude = "include"
+js_SystemAudioPreferenceEnumExclude :: JSString
+js_SystemAudioPreferenceEnumExclude = "exclude"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API TaskPriority> (scheduling-apis)
+data TaskPriority = TaskPriorityUserBlocking
+    | TaskPriorityUserVisible
+    | TaskPriorityBackground
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal TaskPriority where
+  pToJSVal x = pToJSVal (case x of
+    TaskPriorityUserBlocking -> js_TaskPriorityUserBlocking
+    TaskPriorityUserVisible -> js_TaskPriorityUserVisible
+    TaskPriorityBackground -> js_TaskPriorityBackground
+    )
+
+instance ToJSVal TaskPriority where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal TaskPriority where
+  pFromJSVal x = P.maybe (P.error "Unexpected TaskPriority value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TaskPriorityUserBlocking, TaskPriorityUserBlocking), (js_TaskPriorityUserVisible, TaskPriorityUserVisible), (js_TaskPriorityBackground, TaskPriorityBackground)]
+
+instance FromJSVal TaskPriority where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TaskPriorityUserBlocking, TaskPriorityUserBlocking), (js_TaskPriorityUserVisible, TaskPriorityUserVisible), (js_TaskPriorityBackground, TaskPriorityBackground)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_TaskPriorityUserBlocking :: JSString
+js_TaskPriorityUserBlocking = "user-blocking"
+js_TaskPriorityUserVisible :: JSString
+js_TaskPriorityUserVisible = "user-visible"
+js_TaskPriorityBackground :: JSString
+js_TaskPriorityBackground = "background"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API TextTrackKind> (html)
+data TextTrackKind = TextTrackKindSubtitles
+    | TextTrackKindCaptions
+    | TextTrackKindDescriptions
+    | TextTrackKindChapters
+    | TextTrackKindMetadata
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal TextTrackKind where
+  pToJSVal x = pToJSVal (case x of
+    TextTrackKindSubtitles -> js_TextTrackKindSubtitles
+    TextTrackKindCaptions -> js_TextTrackKindCaptions
+    TextTrackKindDescriptions -> js_TextTrackKindDescriptions
+    TextTrackKindChapters -> js_TextTrackKindChapters
+    TextTrackKindMetadata -> js_TextTrackKindMetadata
+    )
+
+instance ToJSVal TextTrackKind where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal TextTrackKind where
+  pFromJSVal x = P.maybe (P.error "Unexpected TextTrackKind value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TextTrackKindSubtitles, TextTrackKindSubtitles), (js_TextTrackKindCaptions, TextTrackKindCaptions), (js_TextTrackKindDescriptions, TextTrackKindDescriptions), (js_TextTrackKindChapters, TextTrackKindChapters), (js_TextTrackKindMetadata, TextTrackKindMetadata)]
+
+instance FromJSVal TextTrackKind where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TextTrackKindSubtitles, TextTrackKindSubtitles), (js_TextTrackKindCaptions, TextTrackKindCaptions), (js_TextTrackKindDescriptions, TextTrackKindDescriptions), (js_TextTrackKindChapters, TextTrackKindChapters), (js_TextTrackKindMetadata, TextTrackKindMetadata)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_TextTrackKindSubtitles :: JSString
+js_TextTrackKindSubtitles = "subtitles"
+js_TextTrackKindCaptions :: JSString
+js_TextTrackKindCaptions = "captions"
+js_TextTrackKindDescriptions :: JSString
+js_TextTrackKindDescriptions = "descriptions"
+js_TextTrackKindChapters :: JSString
+js_TextTrackKindChapters = "chapters"
+js_TextTrackKindMetadata :: JSString
+js_TextTrackKindMetadata = "metadata"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API TextTrackMode> (html)
+data TextTrackMode = TextTrackModeDisabled
+    | TextTrackModeHidden
+    | TextTrackModeShowing
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal TextTrackMode where
+  pToJSVal x = pToJSVal (case x of
+    TextTrackModeDisabled -> js_TextTrackModeDisabled
+    TextTrackModeHidden -> js_TextTrackModeHidden
+    TextTrackModeShowing -> js_TextTrackModeShowing
+    )
+
+instance ToJSVal TextTrackMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal TextTrackMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected TextTrackMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TextTrackModeDisabled, TextTrackModeDisabled), (js_TextTrackModeHidden, TextTrackModeHidden), (js_TextTrackModeShowing, TextTrackModeShowing)]
+
+instance FromJSVal TextTrackMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TextTrackModeDisabled, TextTrackModeDisabled), (js_TextTrackModeHidden, TextTrackModeHidden), (js_TextTrackModeShowing, TextTrackModeShowing)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_TextTrackModeDisabled :: JSString
+js_TextTrackModeDisabled = "disabled"
+js_TextTrackModeHidden :: JSString
+js_TextTrackModeHidden = "hidden"
+js_TextTrackModeShowing :: JSString
+js_TextTrackModeShowing = "showing"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API TokenVersion> (trust-token-api)
+data TokenVersion = TokenVersion1
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal TokenVersion where
+  pToJSVal x = pToJSVal (case x of
+    TokenVersion1 -> js_TokenVersion1
+    )
+
+instance ToJSVal TokenVersion where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal TokenVersion where
+  pFromJSVal x = P.maybe (P.error "Unexpected TokenVersion value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TokenVersion1, TokenVersion1)]
+
+instance FromJSVal TokenVersion where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TokenVersion1, TokenVersion1)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_TokenVersion1 :: JSString
+js_TokenVersion1 = "1"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API TouchType> (touch-events)
+data TouchType = TouchTypeDirect
+    | TouchTypeStylus
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal TouchType where
+  pToJSVal x = pToJSVal (case x of
+    TouchTypeDirect -> js_TouchTypeDirect
+    TouchTypeStylus -> js_TouchTypeStylus
+    )
+
+instance ToJSVal TouchType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal TouchType where
+  pFromJSVal x = P.maybe (P.error "Unexpected TouchType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TouchTypeDirect, TouchTypeDirect), (js_TouchTypeStylus, TouchTypeStylus)]
+
+instance FromJSVal TouchType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TouchTypeDirect, TouchTypeDirect), (js_TouchTypeStylus, TouchTypeStylus)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_TouchTypeDirect :: JSString
+js_TouchTypeDirect = "direct"
+js_TouchTypeStylus :: JSString
+js_TouchTypeStylus = "stylus"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API TransferFunction> (media-capabilities)
+data TransferFunction = TransferFunctionSrgb
+    | TransferFunctionPq
+    | TransferFunctionHlg
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal TransferFunction where
+  pToJSVal x = pToJSVal (case x of
+    TransferFunctionSrgb -> js_TransferFunctionSrgb
+    TransferFunctionPq -> js_TransferFunctionPq
+    TransferFunctionHlg -> js_TransferFunctionHlg
+    )
+
+instance ToJSVal TransferFunction where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal TransferFunction where
+  pFromJSVal x = P.maybe (P.error "Unexpected TransferFunction value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TransferFunctionSrgb, TransferFunctionSrgb), (js_TransferFunctionPq, TransferFunctionPq), (js_TransferFunctionHlg, TransferFunctionHlg)]
+
+instance FromJSVal TransferFunction where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_TransferFunctionSrgb, TransferFunctionSrgb), (js_TransferFunctionPq, TransferFunctionPq), (js_TransferFunctionHlg, TransferFunctionHlg)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_TransferFunctionSrgb :: JSString
+js_TransferFunctionSrgb = "srgb"
+js_TransferFunctionPq :: JSString
+js_TransferFunctionPq = "pq"
+js_TransferFunctionHlg :: JSString
+js_TransferFunctionHlg = "hlg"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API VideoColorPrimaries> (webcodecs)
+data VideoColorPrimaries = VideoColorPrimariesBt709
+    | VideoColorPrimariesBt470bg
+    | VideoColorPrimariesSmpte170m
+    | VideoColorPrimariesBt2020
+    | VideoColorPrimariesSmpte432
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal VideoColorPrimaries where
+  pToJSVal x = pToJSVal (case x of
+    VideoColorPrimariesBt709 -> js_VideoColorPrimariesBt709
+    VideoColorPrimariesBt470bg -> js_VideoColorPrimariesBt470bg
+    VideoColorPrimariesSmpte170m -> js_VideoColorPrimariesSmpte170m
+    VideoColorPrimariesBt2020 -> js_VideoColorPrimariesBt2020
+    VideoColorPrimariesSmpte432 -> js_VideoColorPrimariesSmpte432
+    )
+
+instance ToJSVal VideoColorPrimaries where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal VideoColorPrimaries where
+  pFromJSVal x = P.maybe (P.error "Unexpected VideoColorPrimaries value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoColorPrimariesBt709, VideoColorPrimariesBt709), (js_VideoColorPrimariesBt470bg, VideoColorPrimariesBt470bg), (js_VideoColorPrimariesSmpte170m, VideoColorPrimariesSmpte170m), (js_VideoColorPrimariesBt2020, VideoColorPrimariesBt2020), (js_VideoColorPrimariesSmpte432, VideoColorPrimariesSmpte432)]
+
+instance FromJSVal VideoColorPrimaries where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoColorPrimariesBt709, VideoColorPrimariesBt709), (js_VideoColorPrimariesBt470bg, VideoColorPrimariesBt470bg), (js_VideoColorPrimariesSmpte170m, VideoColorPrimariesSmpte170m), (js_VideoColorPrimariesBt2020, VideoColorPrimariesBt2020), (js_VideoColorPrimariesSmpte432, VideoColorPrimariesSmpte432)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_VideoColorPrimariesBt709 :: JSString
+js_VideoColorPrimariesBt709 = "bt709"
+js_VideoColorPrimariesBt470bg :: JSString
+js_VideoColorPrimariesBt470bg = "bt470bg"
+js_VideoColorPrimariesSmpte170m :: JSString
+js_VideoColorPrimariesSmpte170m = "smpte170m"
+js_VideoColorPrimariesBt2020 :: JSString
+js_VideoColorPrimariesBt2020 = "bt2020"
+js_VideoColorPrimariesSmpte432 :: JSString
+js_VideoColorPrimariesSmpte432 = "smpte432"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API VideoEncoderBitrateMode> (webcodecs)
+data VideoEncoderBitrateMode = VideoEncoderBitrateModeConstant
+    | VideoEncoderBitrateModeVariable
+    | VideoEncoderBitrateModeQuantizer
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal VideoEncoderBitrateMode where
+  pToJSVal x = pToJSVal (case x of
+    VideoEncoderBitrateModeConstant -> js_VideoEncoderBitrateModeConstant
+    VideoEncoderBitrateModeVariable -> js_VideoEncoderBitrateModeVariable
+    VideoEncoderBitrateModeQuantizer -> js_VideoEncoderBitrateModeQuantizer
+    )
+
+instance ToJSVal VideoEncoderBitrateMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal VideoEncoderBitrateMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected VideoEncoderBitrateMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoEncoderBitrateModeConstant, VideoEncoderBitrateModeConstant), (js_VideoEncoderBitrateModeVariable, VideoEncoderBitrateModeVariable), (js_VideoEncoderBitrateModeQuantizer, VideoEncoderBitrateModeQuantizer)]
+
+instance FromJSVal VideoEncoderBitrateMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoEncoderBitrateModeConstant, VideoEncoderBitrateModeConstant), (js_VideoEncoderBitrateModeVariable, VideoEncoderBitrateModeVariable), (js_VideoEncoderBitrateModeQuantizer, VideoEncoderBitrateModeQuantizer)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_VideoEncoderBitrateModeConstant :: JSString
+js_VideoEncoderBitrateModeConstant = "constant"
+js_VideoEncoderBitrateModeVariable :: JSString
+js_VideoEncoderBitrateModeVariable = "variable"
+js_VideoEncoderBitrateModeQuantizer :: JSString
+js_VideoEncoderBitrateModeQuantizer = "quantizer"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API VideoMatrixCoefficients> (webcodecs)
+data VideoMatrixCoefficients = VideoMatrixCoefficientsRgb
+    | VideoMatrixCoefficientsBt709
+    | VideoMatrixCoefficientsBt470bg
+    | VideoMatrixCoefficientsSmpte170m
+    | VideoMatrixCoefficientsBt2020Ncl
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal VideoMatrixCoefficients where
+  pToJSVal x = pToJSVal (case x of
+    VideoMatrixCoefficientsRgb -> js_VideoMatrixCoefficientsRgb
+    VideoMatrixCoefficientsBt709 -> js_VideoMatrixCoefficientsBt709
+    VideoMatrixCoefficientsBt470bg -> js_VideoMatrixCoefficientsBt470bg
+    VideoMatrixCoefficientsSmpte170m -> js_VideoMatrixCoefficientsSmpte170m
+    VideoMatrixCoefficientsBt2020Ncl -> js_VideoMatrixCoefficientsBt2020Ncl
+    )
+
+instance ToJSVal VideoMatrixCoefficients where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal VideoMatrixCoefficients where
+  pFromJSVal x = P.maybe (P.error "Unexpected VideoMatrixCoefficients value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoMatrixCoefficientsRgb, VideoMatrixCoefficientsRgb), (js_VideoMatrixCoefficientsBt709, VideoMatrixCoefficientsBt709), (js_VideoMatrixCoefficientsBt470bg, VideoMatrixCoefficientsBt470bg), (js_VideoMatrixCoefficientsSmpte170m, VideoMatrixCoefficientsSmpte170m), (js_VideoMatrixCoefficientsBt2020Ncl, VideoMatrixCoefficientsBt2020Ncl)]
+
+instance FromJSVal VideoMatrixCoefficients where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoMatrixCoefficientsRgb, VideoMatrixCoefficientsRgb), (js_VideoMatrixCoefficientsBt709, VideoMatrixCoefficientsBt709), (js_VideoMatrixCoefficientsBt470bg, VideoMatrixCoefficientsBt470bg), (js_VideoMatrixCoefficientsSmpte170m, VideoMatrixCoefficientsSmpte170m), (js_VideoMatrixCoefficientsBt2020Ncl, VideoMatrixCoefficientsBt2020Ncl)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_VideoMatrixCoefficientsRgb :: JSString
+js_VideoMatrixCoefficientsRgb = "rgb"
+js_VideoMatrixCoefficientsBt709 :: JSString
+js_VideoMatrixCoefficientsBt709 = "bt709"
+js_VideoMatrixCoefficientsBt470bg :: JSString
+js_VideoMatrixCoefficientsBt470bg = "bt470bg"
+js_VideoMatrixCoefficientsSmpte170m :: JSString
+js_VideoMatrixCoefficientsSmpte170m = "smpte170m"
+js_VideoMatrixCoefficientsBt2020Ncl :: JSString
+js_VideoMatrixCoefficientsBt2020Ncl = "bt2020-ncl"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API VideoPixelFormat> (webcodecs)
+data VideoPixelFormat = VideoPixelFormatI420
+    | VideoPixelFormatI420P10
+    | VideoPixelFormatI420P12
+    | VideoPixelFormatI420A
+    | VideoPixelFormatI420AP10
+    | VideoPixelFormatI420AP12
+    | VideoPixelFormatI422
+    | VideoPixelFormatI422P10
+    | VideoPixelFormatI422P12
+    | VideoPixelFormatI422A
+    | VideoPixelFormatI422AP10
+    | VideoPixelFormatI422AP12
+    | VideoPixelFormatI444
+    | VideoPixelFormatI444P10
+    | VideoPixelFormatI444P12
+    | VideoPixelFormatI444A
+    | VideoPixelFormatI444AP10
+    | VideoPixelFormatI444AP12
+    | VideoPixelFormatNV12
+    | VideoPixelFormatRGBA
+    | VideoPixelFormatRGBX
+    | VideoPixelFormatBGRA
+    | VideoPixelFormatBGRX
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal VideoPixelFormat where
+  pToJSVal x = pToJSVal (case x of
+    VideoPixelFormatI420 -> js_VideoPixelFormatI420
+    VideoPixelFormatI420P10 -> js_VideoPixelFormatI420P10
+    VideoPixelFormatI420P12 -> js_VideoPixelFormatI420P12
+    VideoPixelFormatI420A -> js_VideoPixelFormatI420A
+    VideoPixelFormatI420AP10 -> js_VideoPixelFormatI420AP10
+    VideoPixelFormatI420AP12 -> js_VideoPixelFormatI420AP12
+    VideoPixelFormatI422 -> js_VideoPixelFormatI422
+    VideoPixelFormatI422P10 -> js_VideoPixelFormatI422P10
+    VideoPixelFormatI422P12 -> js_VideoPixelFormatI422P12
+    VideoPixelFormatI422A -> js_VideoPixelFormatI422A
+    VideoPixelFormatI422AP10 -> js_VideoPixelFormatI422AP10
+    VideoPixelFormatI422AP12 -> js_VideoPixelFormatI422AP12
+    VideoPixelFormatI444 -> js_VideoPixelFormatI444
+    VideoPixelFormatI444P10 -> js_VideoPixelFormatI444P10
+    VideoPixelFormatI444P12 -> js_VideoPixelFormatI444P12
+    VideoPixelFormatI444A -> js_VideoPixelFormatI444A
+    VideoPixelFormatI444AP10 -> js_VideoPixelFormatI444AP10
+    VideoPixelFormatI444AP12 -> js_VideoPixelFormatI444AP12
+    VideoPixelFormatNV12 -> js_VideoPixelFormatNV12
+    VideoPixelFormatRGBA -> js_VideoPixelFormatRGBA
+    VideoPixelFormatRGBX -> js_VideoPixelFormatRGBX
+    VideoPixelFormatBGRA -> js_VideoPixelFormatBGRA
+    VideoPixelFormatBGRX -> js_VideoPixelFormatBGRX
+    )
+
+instance ToJSVal VideoPixelFormat where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal VideoPixelFormat where
+  pFromJSVal x = P.maybe (P.error "Unexpected VideoPixelFormat value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoPixelFormatI420, VideoPixelFormatI420), (js_VideoPixelFormatI420P10, VideoPixelFormatI420P10), (js_VideoPixelFormatI420P12, VideoPixelFormatI420P12), (js_VideoPixelFormatI420A, VideoPixelFormatI420A), (js_VideoPixelFormatI420AP10, VideoPixelFormatI420AP10), (js_VideoPixelFormatI420AP12, VideoPixelFormatI420AP12), (js_VideoPixelFormatI422, VideoPixelFormatI422), (js_VideoPixelFormatI422P10, VideoPixelFormatI422P10), (js_VideoPixelFormatI422P12, VideoPixelFormatI422P12), (js_VideoPixelFormatI422A, VideoPixelFormatI422A), (js_VideoPixelFormatI422AP10, VideoPixelFormatI422AP10), (js_VideoPixelFormatI422AP12, VideoPixelFormatI422AP12), (js_VideoPixelFormatI444, VideoPixelFormatI444), (js_VideoPixelFormatI444P10, VideoPixelFormatI444P10), (js_VideoPixelFormatI444P12, VideoPixelFormatI444P12), (js_VideoPixelFormatI444A, VideoPixelFormatI444A), (js_VideoPixelFormatI444AP10, VideoPixelFormatI444AP10), (js_VideoPixelFormatI444AP12, VideoPixelFormatI444AP12), (js_VideoPixelFormatNV12, VideoPixelFormatNV12), (js_VideoPixelFormatRGBA, VideoPixelFormatRGBA), (js_VideoPixelFormatRGBX, VideoPixelFormatRGBX), (js_VideoPixelFormatBGRA, VideoPixelFormatBGRA), (js_VideoPixelFormatBGRX, VideoPixelFormatBGRX)]
+
+instance FromJSVal VideoPixelFormat where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoPixelFormatI420, VideoPixelFormatI420), (js_VideoPixelFormatI420P10, VideoPixelFormatI420P10), (js_VideoPixelFormatI420P12, VideoPixelFormatI420P12), (js_VideoPixelFormatI420A, VideoPixelFormatI420A), (js_VideoPixelFormatI420AP10, VideoPixelFormatI420AP10), (js_VideoPixelFormatI420AP12, VideoPixelFormatI420AP12), (js_VideoPixelFormatI422, VideoPixelFormatI422), (js_VideoPixelFormatI422P10, VideoPixelFormatI422P10), (js_VideoPixelFormatI422P12, VideoPixelFormatI422P12), (js_VideoPixelFormatI422A, VideoPixelFormatI422A), (js_VideoPixelFormatI422AP10, VideoPixelFormatI422AP10), (js_VideoPixelFormatI422AP12, VideoPixelFormatI422AP12), (js_VideoPixelFormatI444, VideoPixelFormatI444), (js_VideoPixelFormatI444P10, VideoPixelFormatI444P10), (js_VideoPixelFormatI444P12, VideoPixelFormatI444P12), (js_VideoPixelFormatI444A, VideoPixelFormatI444A), (js_VideoPixelFormatI444AP10, VideoPixelFormatI444AP10), (js_VideoPixelFormatI444AP12, VideoPixelFormatI444AP12), (js_VideoPixelFormatNV12, VideoPixelFormatNV12), (js_VideoPixelFormatRGBA, VideoPixelFormatRGBA), (js_VideoPixelFormatRGBX, VideoPixelFormatRGBX), (js_VideoPixelFormatBGRA, VideoPixelFormatBGRA), (js_VideoPixelFormatBGRX, VideoPixelFormatBGRX)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_VideoPixelFormatI420 :: JSString
+js_VideoPixelFormatI420 = "I420"
+js_VideoPixelFormatI420P10 :: JSString
+js_VideoPixelFormatI420P10 = "I420P10"
+js_VideoPixelFormatI420P12 :: JSString
+js_VideoPixelFormatI420P12 = "I420P12"
+js_VideoPixelFormatI420A :: JSString
+js_VideoPixelFormatI420A = "I420A"
+js_VideoPixelFormatI420AP10 :: JSString
+js_VideoPixelFormatI420AP10 = "I420AP10"
+js_VideoPixelFormatI420AP12 :: JSString
+js_VideoPixelFormatI420AP12 = "I420AP12"
+js_VideoPixelFormatI422 :: JSString
+js_VideoPixelFormatI422 = "I422"
+js_VideoPixelFormatI422P10 :: JSString
+js_VideoPixelFormatI422P10 = "I422P10"
+js_VideoPixelFormatI422P12 :: JSString
+js_VideoPixelFormatI422P12 = "I422P12"
+js_VideoPixelFormatI422A :: JSString
+js_VideoPixelFormatI422A = "I422A"
+js_VideoPixelFormatI422AP10 :: JSString
+js_VideoPixelFormatI422AP10 = "I422AP10"
+js_VideoPixelFormatI422AP12 :: JSString
+js_VideoPixelFormatI422AP12 = "I422AP12"
+js_VideoPixelFormatI444 :: JSString
+js_VideoPixelFormatI444 = "I444"
+js_VideoPixelFormatI444P10 :: JSString
+js_VideoPixelFormatI444P10 = "I444P10"
+js_VideoPixelFormatI444P12 :: JSString
+js_VideoPixelFormatI444P12 = "I444P12"
+js_VideoPixelFormatI444A :: JSString
+js_VideoPixelFormatI444A = "I444A"
+js_VideoPixelFormatI444AP10 :: JSString
+js_VideoPixelFormatI444AP10 = "I444AP10"
+js_VideoPixelFormatI444AP12 :: JSString
+js_VideoPixelFormatI444AP12 = "I444AP12"
+js_VideoPixelFormatNV12 :: JSString
+js_VideoPixelFormatNV12 = "NV12"
+js_VideoPixelFormatRGBA :: JSString
+js_VideoPixelFormatRGBA = "RGBA"
+js_VideoPixelFormatRGBX :: JSString
+js_VideoPixelFormatRGBX = "RGBX"
+js_VideoPixelFormatBGRA :: JSString
+js_VideoPixelFormatBGRA = "BGRA"
+js_VideoPixelFormatBGRX :: JSString
+js_VideoPixelFormatBGRX = "BGRX"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API VideoTransferCharacteristics> (webcodecs)
+data VideoTransferCharacteristics = VideoTransferCharacteristicsBt709
+    | VideoTransferCharacteristicsSmpte170m
+    | VideoTransferCharacteristicsIec6196621
+    | VideoTransferCharacteristicsLinear
+    | VideoTransferCharacteristicsPq
+    | VideoTransferCharacteristicsHlg
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal VideoTransferCharacteristics where
+  pToJSVal x = pToJSVal (case x of
+    VideoTransferCharacteristicsBt709 -> js_VideoTransferCharacteristicsBt709
+    VideoTransferCharacteristicsSmpte170m -> js_VideoTransferCharacteristicsSmpte170m
+    VideoTransferCharacteristicsIec6196621 -> js_VideoTransferCharacteristicsIec6196621
+    VideoTransferCharacteristicsLinear -> js_VideoTransferCharacteristicsLinear
+    VideoTransferCharacteristicsPq -> js_VideoTransferCharacteristicsPq
+    VideoTransferCharacteristicsHlg -> js_VideoTransferCharacteristicsHlg
+    )
+
+instance ToJSVal VideoTransferCharacteristics where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal VideoTransferCharacteristics where
+  pFromJSVal x = P.maybe (P.error "Unexpected VideoTransferCharacteristics value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoTransferCharacteristicsBt709, VideoTransferCharacteristicsBt709), (js_VideoTransferCharacteristicsSmpte170m, VideoTransferCharacteristicsSmpte170m), (js_VideoTransferCharacteristicsIec6196621, VideoTransferCharacteristicsIec6196621), (js_VideoTransferCharacteristicsLinear, VideoTransferCharacteristicsLinear), (js_VideoTransferCharacteristicsPq, VideoTransferCharacteristicsPq), (js_VideoTransferCharacteristicsHlg, VideoTransferCharacteristicsHlg)]
+
+instance FromJSVal VideoTransferCharacteristics where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_VideoTransferCharacteristicsBt709, VideoTransferCharacteristicsBt709), (js_VideoTransferCharacteristicsSmpte170m, VideoTransferCharacteristicsSmpte170m), (js_VideoTransferCharacteristicsIec6196621, VideoTransferCharacteristicsIec6196621), (js_VideoTransferCharacteristicsLinear, VideoTransferCharacteristicsLinear), (js_VideoTransferCharacteristicsPq, VideoTransferCharacteristicsPq), (js_VideoTransferCharacteristicsHlg, VideoTransferCharacteristicsHlg)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_VideoTransferCharacteristicsBt709 :: JSString
+js_VideoTransferCharacteristicsBt709 = "bt709"
+js_VideoTransferCharacteristicsSmpte170m :: JSString
+js_VideoTransferCharacteristicsSmpte170m = "smpte170m"
+js_VideoTransferCharacteristicsIec6196621 :: JSString
+js_VideoTransferCharacteristicsIec6196621 = "iec61966-2-1"
+js_VideoTransferCharacteristicsLinear :: JSString
+js_VideoTransferCharacteristicsLinear = "linear"
+js_VideoTransferCharacteristicsPq :: JSString
+js_VideoTransferCharacteristicsPq = "pq"
+js_VideoTransferCharacteristicsHlg :: JSString
+js_VideoTransferCharacteristicsHlg = "hlg"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WakeLockType> (screen-wake-lock)
+data WakeLockType = WakeLockTypeScreen
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WakeLockType where
+  pToJSVal x = pToJSVal (case x of
+    WakeLockTypeScreen -> js_WakeLockTypeScreen
+    )
+
+instance ToJSVal WakeLockType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WakeLockType where
+  pFromJSVal x = P.maybe (P.error "Unexpected WakeLockType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WakeLockTypeScreen, WakeLockTypeScreen)]
+
+instance FromJSVal WakeLockType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WakeLockTypeScreen, WakeLockTypeScreen)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WakeLockTypeScreen :: JSString
+js_WakeLockTypeScreen = "screen"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WebGLPowerPreference> (webgl1)
+data WebGLPowerPreference = WebGLPowerPreferenceDefault
+    | WebGLPowerPreferenceLowPower
+    | WebGLPowerPreferenceHighPerformance
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WebGLPowerPreference where
+  pToJSVal x = pToJSVal (case x of
+    WebGLPowerPreferenceDefault -> js_WebGLPowerPreferenceDefault
+    WebGLPowerPreferenceLowPower -> js_WebGLPowerPreferenceLowPower
+    WebGLPowerPreferenceHighPerformance -> js_WebGLPowerPreferenceHighPerformance
+    )
+
+instance ToJSVal WebGLPowerPreference where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WebGLPowerPreference where
+  pFromJSVal x = P.maybe (P.error "Unexpected WebGLPowerPreference value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebGLPowerPreferenceDefault, WebGLPowerPreferenceDefault), (js_WebGLPowerPreferenceLowPower, WebGLPowerPreferenceLowPower), (js_WebGLPowerPreferenceHighPerformance, WebGLPowerPreferenceHighPerformance)]
+
+instance FromJSVal WebGLPowerPreference where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebGLPowerPreferenceDefault, WebGLPowerPreferenceDefault), (js_WebGLPowerPreferenceLowPower, WebGLPowerPreferenceLowPower), (js_WebGLPowerPreferenceHighPerformance, WebGLPowerPreferenceHighPerformance)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WebGLPowerPreferenceDefault :: JSString
+js_WebGLPowerPreferenceDefault = "default"
+js_WebGLPowerPreferenceLowPower :: JSString
+js_WebGLPowerPreferenceLowPower = "low-power"
+js_WebGLPowerPreferenceHighPerformance :: JSString
+js_WebGLPowerPreferenceHighPerformance = "high-performance"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WebTransportCongestionControl> (webtransport)
+data WebTransportCongestionControl = WebTransportCongestionControlDefault
+    | WebTransportCongestionControlThroughput
+    | WebTransportCongestionControlLowLatency
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WebTransportCongestionControl where
+  pToJSVal x = pToJSVal (case x of
+    WebTransportCongestionControlDefault -> js_WebTransportCongestionControlDefault
+    WebTransportCongestionControlThroughput -> js_WebTransportCongestionControlThroughput
+    WebTransportCongestionControlLowLatency -> js_WebTransportCongestionControlLowLatency
+    )
+
+instance ToJSVal WebTransportCongestionControl where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WebTransportCongestionControl where
+  pFromJSVal x = P.maybe (P.error "Unexpected WebTransportCongestionControl value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebTransportCongestionControlDefault, WebTransportCongestionControlDefault), (js_WebTransportCongestionControlThroughput, WebTransportCongestionControlThroughput), (js_WebTransportCongestionControlLowLatency, WebTransportCongestionControlLowLatency)]
+
+instance FromJSVal WebTransportCongestionControl where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebTransportCongestionControlDefault, WebTransportCongestionControlDefault), (js_WebTransportCongestionControlThroughput, WebTransportCongestionControlThroughput), (js_WebTransportCongestionControlLowLatency, WebTransportCongestionControlLowLatency)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WebTransportCongestionControlDefault :: JSString
+js_WebTransportCongestionControlDefault = "default"
+js_WebTransportCongestionControlThroughput :: JSString
+js_WebTransportCongestionControlThroughput = "throughput"
+js_WebTransportCongestionControlLowLatency :: JSString
+js_WebTransportCongestionControlLowLatency = "low-latency"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WebTransportErrorSource> (webtransport)
+data WebTransportErrorSource = WebTransportErrorSourceStream
+    | WebTransportErrorSourceSession
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WebTransportErrorSource where
+  pToJSVal x = pToJSVal (case x of
+    WebTransportErrorSourceStream -> js_WebTransportErrorSourceStream
+    WebTransportErrorSourceSession -> js_WebTransportErrorSourceSession
+    )
+
+instance ToJSVal WebTransportErrorSource where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WebTransportErrorSource where
+  pFromJSVal x = P.maybe (P.error "Unexpected WebTransportErrorSource value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebTransportErrorSourceStream, WebTransportErrorSourceStream), (js_WebTransportErrorSourceSession, WebTransportErrorSourceSession)]
+
+instance FromJSVal WebTransportErrorSource where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebTransportErrorSourceStream, WebTransportErrorSourceStream), (js_WebTransportErrorSourceSession, WebTransportErrorSourceSession)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WebTransportErrorSourceStream :: JSString
+js_WebTransportErrorSourceStream = "stream"
+js_WebTransportErrorSourceSession :: JSString
+js_WebTransportErrorSourceSession = "session"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WebTransportReliabilityMode> (webtransport)
+data WebTransportReliabilityMode = WebTransportReliabilityModePending
+    | WebTransportReliabilityModeReliableOnly
+    | WebTransportReliabilityModeSupportsUnreliable
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WebTransportReliabilityMode where
+  pToJSVal x = pToJSVal (case x of
+    WebTransportReliabilityModePending -> js_WebTransportReliabilityModePending
+    WebTransportReliabilityModeReliableOnly -> js_WebTransportReliabilityModeReliableOnly
+    WebTransportReliabilityModeSupportsUnreliable -> js_WebTransportReliabilityModeSupportsUnreliable
+    )
+
+instance ToJSVal WebTransportReliabilityMode where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WebTransportReliabilityMode where
+  pFromJSVal x = P.maybe (P.error "Unexpected WebTransportReliabilityMode value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebTransportReliabilityModePending, WebTransportReliabilityModePending), (js_WebTransportReliabilityModeReliableOnly, WebTransportReliabilityModeReliableOnly), (js_WebTransportReliabilityModeSupportsUnreliable, WebTransportReliabilityModeSupportsUnreliable)]
+
+instance FromJSVal WebTransportReliabilityMode where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WebTransportReliabilityModePending, WebTransportReliabilityModePending), (js_WebTransportReliabilityModeReliableOnly, WebTransportReliabilityModeReliableOnly), (js_WebTransportReliabilityModeSupportsUnreliable, WebTransportReliabilityModeSupportsUnreliable)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WebTransportReliabilityModePending :: JSString
+js_WebTransportReliabilityModePending = "pending"
+js_WebTransportReliabilityModeReliableOnly :: JSString
+js_WebTransportReliabilityModeReliableOnly = "reliable-only"
+js_WebTransportReliabilityModeSupportsUnreliable :: JSString
+js_WebTransportReliabilityModeSupportsUnreliable = "supports-unreliable"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WindowAudioPreferenceEnum> (screen-capture)
+data WindowAudioPreferenceEnum = WindowAudioPreferenceEnumSystem
+    | WindowAudioPreferenceEnumWindow
+    | WindowAudioPreferenceEnumExclude
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WindowAudioPreferenceEnum where
+  pToJSVal x = pToJSVal (case x of
+    WindowAudioPreferenceEnumSystem -> js_WindowAudioPreferenceEnumSystem
+    WindowAudioPreferenceEnumWindow -> js_WindowAudioPreferenceEnumWindow
+    WindowAudioPreferenceEnumExclude -> js_WindowAudioPreferenceEnumExclude
+    )
+
+instance ToJSVal WindowAudioPreferenceEnum where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WindowAudioPreferenceEnum where
+  pFromJSVal x = P.maybe (P.error "Unexpected WindowAudioPreferenceEnum value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WindowAudioPreferenceEnumSystem, WindowAudioPreferenceEnumSystem), (js_WindowAudioPreferenceEnumWindow, WindowAudioPreferenceEnumWindow), (js_WindowAudioPreferenceEnumExclude, WindowAudioPreferenceEnumExclude)]
+
+instance FromJSVal WindowAudioPreferenceEnum where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WindowAudioPreferenceEnumSystem, WindowAudioPreferenceEnumSystem), (js_WindowAudioPreferenceEnumWindow, WindowAudioPreferenceEnumWindow), (js_WindowAudioPreferenceEnumExclude, WindowAudioPreferenceEnumExclude)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WindowAudioPreferenceEnumSystem :: JSString
+js_WindowAudioPreferenceEnumSystem = "system"
+js_WindowAudioPreferenceEnumWindow :: JSString
+js_WindowAudioPreferenceEnumWindow = "window"
+js_WindowAudioPreferenceEnumExclude :: JSString
+js_WindowAudioPreferenceEnumExclude = "exclude"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WorkerType> (html)
+data WorkerType = WorkerTypeClassic
+    | WorkerTypeModule
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WorkerType where
+  pToJSVal x = pToJSVal (case x of
+    WorkerTypeClassic -> js_WorkerTypeClassic
+    WorkerTypeModule -> js_WorkerTypeModule
+    )
+
+instance ToJSVal WorkerType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WorkerType where
+  pFromJSVal x = P.maybe (P.error "Unexpected WorkerType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WorkerTypeClassic, WorkerTypeClassic), (js_WorkerTypeModule, WorkerTypeModule)]
+
+instance FromJSVal WorkerType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WorkerTypeClassic, WorkerTypeClassic), (js_WorkerTypeModule, WorkerTypeModule)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WorkerTypeClassic :: JSString
+js_WorkerTypeClassic = "classic"
+js_WorkerTypeModule :: JSString
+js_WorkerTypeModule = "module"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API WriteCommandType> (fs)
+data WriteCommandType = WriteCommandTypeWrite
+    | WriteCommandTypeSeek
+    | WriteCommandTypeTruncate
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal WriteCommandType where
+  pToJSVal x = pToJSVal (case x of
+    WriteCommandTypeWrite -> js_WriteCommandTypeWrite
+    WriteCommandTypeSeek -> js_WriteCommandTypeSeek
+    WriteCommandTypeTruncate -> js_WriteCommandTypeTruncate
+    )
+
+instance ToJSVal WriteCommandType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal WriteCommandType where
+  pFromJSVal x = P.maybe (P.error "Unexpected WriteCommandType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WriteCommandTypeWrite, WriteCommandTypeWrite), (js_WriteCommandTypeSeek, WriteCommandTypeSeek), (js_WriteCommandTypeTruncate, WriteCommandTypeTruncate)]
+
+instance FromJSVal WriteCommandType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_WriteCommandTypeWrite, WriteCommandTypeWrite), (js_WriteCommandTypeSeek, WriteCommandTypeSeek), (js_WriteCommandTypeTruncate, WriteCommandTypeTruncate)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_WriteCommandTypeWrite :: JSString
+js_WriteCommandTypeWrite = "write"
+js_WriteCommandTypeSeek :: JSString
+js_WriteCommandTypeSeek = "seek"
+js_WriteCommandTypeTruncate :: JSString
+js_WriteCommandTypeTruncate = "truncate"
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API XMLHttpRequestResponseType> (xhr)
+data XMLHttpRequestResponseType = XMLHttpRequestResponseType
+    | XMLHttpRequestResponseTypeArraybuffer
+    | XMLHttpRequestResponseTypeBlob
+    | XMLHttpRequestResponseTypeDocument
+    | XMLHttpRequestResponseTypeJson
+    | XMLHttpRequestResponseTypeText
+    deriving (Show, Read, Eq, Ord, Bounded, Enum, Typeable)
+
+instance PToJSVal XMLHttpRequestResponseType where
+  pToJSVal x = pToJSVal (case x of
+    XMLHttpRequestResponseType -> js_XMLHttpRequestResponseType
+    XMLHttpRequestResponseTypeArraybuffer -> js_XMLHttpRequestResponseTypeArraybuffer
+    XMLHttpRequestResponseTypeBlob -> js_XMLHttpRequestResponseTypeBlob
+    XMLHttpRequestResponseTypeDocument -> js_XMLHttpRequestResponseTypeDocument
+    XMLHttpRequestResponseTypeJson -> js_XMLHttpRequestResponseTypeJson
+    XMLHttpRequestResponseTypeText -> js_XMLHttpRequestResponseTypeText
+    )
+
+instance ToJSVal XMLHttpRequestResponseType where
+  toJSVal = P.return . pToJSVal
+
+instance PFromJSVal XMLHttpRequestResponseType where
+  pFromJSVal x = P.maybe (P.error "Unexpected XMLHttpRequestResponseType value") P.id (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_XMLHttpRequestResponseType, XMLHttpRequestResponseType), (js_XMLHttpRequestResponseTypeArraybuffer, XMLHttpRequestResponseTypeArraybuffer), (js_XMLHttpRequestResponseTypeBlob, XMLHttpRequestResponseTypeBlob), (js_XMLHttpRequestResponseTypeDocument, XMLHttpRequestResponseTypeDocument), (js_XMLHttpRequestResponseTypeJson, XMLHttpRequestResponseTypeJson), (js_XMLHttpRequestResponseTypeText, XMLHttpRequestResponseTypeText)]
+
+instance FromJSVal XMLHttpRequestResponseType where
+  fromJSVal x = P.return (P.lookup (pFromJSVal x :: JSString) table)
+    where table = [(js_XMLHttpRequestResponseType, XMLHttpRequestResponseType), (js_XMLHttpRequestResponseTypeArraybuffer, XMLHttpRequestResponseTypeArraybuffer), (js_XMLHttpRequestResponseTypeBlob, XMLHttpRequestResponseTypeBlob), (js_XMLHttpRequestResponseTypeDocument, XMLHttpRequestResponseTypeDocument), (js_XMLHttpRequestResponseTypeJson, XMLHttpRequestResponseTypeJson), (js_XMLHttpRequestResponseTypeText, XMLHttpRequestResponseTypeText)]
+  fromJSValUnchecked = P.return . pFromJSVal
+
+js_XMLHttpRequestResponseType :: JSString
+js_XMLHttpRequestResponseType = ""
+js_XMLHttpRequestResponseTypeArraybuffer :: JSString
+js_XMLHttpRequestResponseTypeArraybuffer = "arraybuffer"
+js_XMLHttpRequestResponseTypeBlob :: JSString
+js_XMLHttpRequestResponseTypeBlob = "blob"
+js_XMLHttpRequestResponseTypeDocument :: JSString
+js_XMLHttpRequestResponseTypeDocument = "document"
+js_XMLHttpRequestResponseTypeJson :: JSString
+js_XMLHttpRequestResponseTypeJson = "json"
+js_XMLHttpRequestResponseTypeText :: JSString
+js_XMLHttpRequestResponseTypeText = "text"
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/ErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ErrorCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ErrorCallback
+       (newErrorCallback, newErrorCallbackSync, newErrorCallbackAsync, ErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newErrorCallback :: (MonadDOM m) => (DOMException -> IO ()) -> m ErrorCallback
+newErrorCallback callback = liftDOM ((ErrorCallback . coerce) <$> syncCallback1 ContinueAsync (\ err -> do
+          err' <- fromJSValUnchecked err
+          callback err'))
+
+newErrorCallbackSync :: (MonadDOM m) => (DOMException -> IO ()) -> m ErrorCallback
+newErrorCallbackSync callback = liftDOM ((ErrorCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ err -> do
+          err' <- fromJSValUnchecked err
+          callback err'))
+
+newErrorCallbackAsync :: (MonadDOM m) => (DOMException -> IO ()) -> m ErrorCallback
+newErrorCallbackAsync callback = liftDOM ((ErrorCallback . coerce) <$> asyncCallback1 (\ err -> do
+          err' <- fromJSValUnchecked err
+          callback err'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
@@ -1,78 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ErrorEvent
-       (js_newErrorEvent, newErrorEvent, js_getMessage, getMessage,
-        js_getFilename, getFilename, js_getLineno, getLineno, js_getColno,
-        getColno, js_getError, getError, ErrorEvent(..), gTypeErrorEvent)
+       (js_newErrorEvent, js_getMessage, js_getFilename, js_getLineno, js_getColno, js_getError, newErrorEvent, getMessage, getFilename, getLineno, getColno, getError, ErrorEvent(..), gTypeErrorEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"ErrorEvent\"]($1, $2); })" js_newErrorEvent ::
-        JSString -> Optional ErrorEventInit -> IO ErrorEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation> 
-newErrorEvent ::
-              (MonadIO m, ToJSString type') =>
-                type' -> Maybe ErrorEventInit -> m ErrorEvent
-newErrorEvent type' eventInitDict
-  = liftIO
-      (js_newErrorEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        ErrorEvent -> IO JSString
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ErrorEvent\"]($1, $2); })"
+        js_newErrorEvent :: JSString -> JSVal -> IO ErrorEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/ErrorEvent MDN ErrorEvent. documentation>
+newErrorEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe ErrorEventInit -> m ErrorEvent
+newErrorEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newErrorEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.message Mozilla ErrorEvent.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => ErrorEvent -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"filename\"]; })" js_getFilename
-        :: ErrorEvent -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: ErrorEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/message MDN ErrorEvent.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => ErrorEvent -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.filename Mozilla ErrorEvent.filename documentation> 
-getFilename ::
-            (MonadIO m, FromJSString result) => ErrorEvent -> m result
-getFilename self = liftIO (fromJSString <$> (js_getFilename self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lineno\"]; })" js_getLineno ::
-        ErrorEvent -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"filename\"]; })"
+        js_getFilename :: ErrorEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/filename MDN ErrorEvent.filename documentation>
+getFilename :: (MonadDOM m, FromJSString result) => ErrorEvent -> m result
+getFilename self = liftDOM ((fromJSString <$> (js_getFilename (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.lineno Mozilla ErrorEvent.lineno documentation> 
-getLineno :: (MonadIO m) => ErrorEvent -> m Word
-getLineno self = liftIO (js_getLineno self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"colno\"]; })" js_getColno ::
-        ErrorEvent -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"lineno\"]; })"
+        js_getLineno :: ErrorEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/lineno MDN ErrorEvent.lineno documentation>
+getLineno :: (MonadDOM m) => ErrorEvent -> m Word
+getLineno self = liftDOM ((js_getLineno (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.colno Mozilla ErrorEvent.colno documentation> 
-getColno :: (MonadIO m) => ErrorEvent -> m Word
-getColno self = liftIO (js_getColno self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        ErrorEvent -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"colno\"]; })"
+        js_getColno :: ErrorEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/colno MDN ErrorEvent.colno documentation>
+getColno :: (MonadDOM m) => ErrorEvent -> m Word
+getColno self = liftDOM ((js_getColno (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.error Mozilla ErrorEvent.error documentation> 
-getError :: (MonadIO m) => ErrorEvent -> m JSVal
-getError self = liftIO (js_getError self)
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: ErrorEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/error MDN ErrorEvent.error documentation>
+getError :: (MonadDOM m) => ErrorEvent -> m JSVal
+getError self = liftDOM ((js_getError (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ErrorEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ErrorEventInit.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ErrorEventInit
+       (js_newErrorEventInit, js_setMessage, js_getMessage, js_setFilename, js_getFilename, js_setLineno, js_getLineno, js_setColno, js_getColno, js_setError, js_getError, newErrorEventInit, setMessage, getMessage, getMessageUnsafe, getMessageUnchecked, setFilename, getFilename, getFilenameUnsafe, getFilenameUnchecked, setLineno, getLineno, getLinenoUnsafe, getLinenoUnchecked, setColno, getColno, getColnoUnsafe, getColnoUnchecked, setError, getError, ErrorEventInit(..), gTypeErrorEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newErrorEventInit :: IO ErrorEventInit
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#erroreventinit ErrorEventInit specification>
+newErrorEventInit :: (MonadDOM m) => m ErrorEventInit
+newErrorEventInit = liftDOM ((js_newErrorEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"message\"] = $2; })"
+        js_setMessage :: ErrorEventInit -> JSString -> IO ()
+setMessage :: (MonadDOM m, ToJSString val) => ErrorEventInit -> val -> m ()
+setMessage self val = liftDOM (void ((js_setMessage (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: ErrorEventInit -> IO JSVal
+getMessage :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m (Maybe result)
+getMessage self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMessage (self))))
+
+getMessageUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ErrorEventInit -> m result
+getMessageUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMessage (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getMessageUnchecked :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m result
+getMessageUnchecked self = liftDOM ((pFromJSVal <$> (js_getMessage (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"filename\"] = $2; })"
+        js_setFilename :: ErrorEventInit -> JSString -> IO ()
+setFilename :: (MonadDOM m, ToJSString val) => ErrorEventInit -> val -> m ()
+setFilename self val = liftDOM (void ((js_setFilename (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"filename\"]; })"
+        js_getFilename :: ErrorEventInit -> IO JSVal
+getFilename :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m (Maybe result)
+getFilename self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getFilename (self))))
+
+getFilenameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ErrorEventInit -> m result
+getFilenameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getFilename (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getFilenameUnchecked :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m result
+getFilenameUnchecked self = liftDOM ((pFromJSVal <$> (js_getFilename (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineno\"] = $2; })"
+        js_setLineno :: ErrorEventInit -> Word -> IO ()
+setLineno :: (MonadDOM m) => ErrorEventInit -> Word -> m ()
+setLineno self val = liftDOM (void ((js_setLineno (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineno\"]; })"
+        js_getLineno :: ErrorEventInit -> IO JSVal
+getLineno :: (MonadDOM m) => ErrorEventInit -> m (Maybe Word)
+getLineno self = liftDOM (((js_getLineno (self)) >>= fromJSValUnchecked))
+
+getLinenoUnsafe :: (MonadDOM m, HasCallStack) => ErrorEventInit -> m Word
+getLinenoUnsafe self = liftDOM ((((js_getLineno (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getLinenoUnchecked :: (MonadDOM m) => ErrorEventInit -> m Word
+getLinenoUnchecked self = liftDOM ((pFromJSVal <$> (js_getLineno (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colno\"] = $2; })"
+        js_setColno :: ErrorEventInit -> Word -> IO ()
+setColno :: (MonadDOM m) => ErrorEventInit -> Word -> m ()
+setColno self val = liftDOM (void ((js_setColno (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colno\"]; })"
+        js_getColno :: ErrorEventInit -> IO JSVal
+getColno :: (MonadDOM m) => ErrorEventInit -> m (Maybe Word)
+getColno self = liftDOM (((js_getColno (self)) >>= fromJSValUnchecked))
+
+getColnoUnsafe :: (MonadDOM m, HasCallStack) => ErrorEventInit -> m Word
+getColnoUnsafe self = liftDOM ((((js_getColno (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getColnoUnchecked :: (MonadDOM m) => ErrorEventInit -> m Word
+getColnoUnchecked self = liftDOM ((pFromJSVal <$> (js_getColno (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: ErrorEventInit -> JSVal -> IO ()
+setError :: (MonadDOM m) => ErrorEventInit -> JSVal -> m ()
+setError self val = liftDOM (void ((js_setError (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: ErrorEventInit -> IO JSVal
+getError :: (MonadDOM m) => ErrorEventInit -> m JSVal
+getError self = liftDOM ((js_getError (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Event.hs b/src/GHCJS/DOM/JSFFI/Generated/Event.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Event.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Event.hs
@@ -1,251 +1,179 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Event
-       (js_newEvent, newEvent, js_composedPath, composedPath,
-        composedPath_, js_stopPropagation, stopPropagation,
-        js_stopImmediatePropagation, stopImmediatePropagation,
-        js_preventDefault, preventDefault, js_initEvent, initEvent,
-        pattern NONE, pattern CAPTURING_PHASE, pattern AT_TARGET,
-        pattern BUBBLING_PHASE, js_getType, getType, js_getTarget,
-        getTarget, getTargetUnsafe, getTargetUnchecked,
-        js_getCurrentTarget, getCurrentTarget, getCurrentTargetUnsafe,
-        getCurrentTargetUnchecked, js_getEventPhase, getEventPhase,
-        js_setCancelBubble, setCancelBubble, js_getCancelBubble,
-        getCancelBubble, js_getBubbles, getBubbles, js_getCancelable,
-        getCancelable, js_getDefaultPrevented, getDefaultPrevented,
-        js_getComposed, getComposed, js_getIsTrusted, getIsTrusted,
-        js_getTimeStamp, getTimeStamp, js_getSrcElement, getSrcElement,
-        js_setReturnValue, setReturnValue, js_getReturnValue,
-        getReturnValue, Event(..), gTypeEvent, IsEvent, toEvent)
+       (js_newEvent, js_composedPath, js_initEvent, js_preventDefault, js_stopImmediatePropagation, js_stopPropagation, js_getType, js_getTarget, js_getSrcElement, js_getCurrentTarget, js_getEventPhase, js_setCancelBubble, js_getCancelBubble, js_getBubbles, js_getCancelable, js_setReturnValue, js_getReturnValue, js_getDefaultPrevented, js_getComposed, js_getIsTrusted, js_getTimeStamp, newEvent, composedPath, composedPath_, initEvent, preventDefault, stopImmediatePropagation, stopPropagation, getType, getTarget, getTargetUnsafe, getTargetUnchecked, getSrcElement, getSrcElementUnsafe, getSrcElementUnchecked, getCurrentTarget, getCurrentTargetUnsafe, getCurrentTargetUnchecked, getEventPhase, setCancelBubble, getCancelBubble, getBubbles, getCancelable, setReturnValue, getReturnValue, getDefaultPrevented, getComposed, getIsTrusted, getTimeStamp, pattern NONE, pattern CAPTURING_PHASE, pattern AT_TARGET, pattern BUBBLING_PHASE, Event(..), gTypeEvent, IsEvent, toEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return new window[\"Event\"]($1, $2); })"
-        js_newEvent :: JSString -> Optional EventInit -> IO Event
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event Mozilla Event documentation> 
-newEvent ::
-         (MonadIO m, ToJSString type', IsEventInit eventInitDict) =>
-           type' -> Maybe eventInitDict -> m Event
-newEvent type' eventInitDict
-  = liftIO
-      (js_newEvent (toJSString type')
-         (maybeToOptional (fmap toEventInit eventInitDict)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"composedPath\"](); })"
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"Event\"]($1, $2); })"
+        js_newEvent :: JSString -> JSVal -> IO Event
+-- | <https://developer.mozilla.org/docs/Web/API/Event/Event MDN Event. documentation>
+newEvent :: (MonadDOM m, ToJSString type', IsEventInit eventInitDict) => type' -> Maybe eventInitDict -> m Event
+newEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newEvent (toJSString type') a2'))
+
+foreign import javascript safe "(($1) => { return $1[\"composedPath\"](); })"
         js_composedPath :: Event -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Event/composedPath MDN Event.composedPath documentation>
+composedPath :: (MonadDOM m, IsEvent self) => self -> m [EventTarget]
+composedPath self = liftDOM (((js_composedPath ((Types.toEvent self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composedPath Mozilla Event.composedPath documentation> 
-composedPath ::
-             (MonadIO m, IsEvent self) => self -> m [EventTarget]
-composedPath self
-  = liftIO ((js_composedPath (toEvent self)) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Event/composedPath MDN Event.composedPath documentation>
+composedPath_ :: (MonadDOM m, IsEvent self) => self -> m ()
+composedPath_ self = liftDOM (void ((js_composedPath ((Types.toEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composedPath Mozilla Event.composedPath documentation> 
-composedPath_ :: (MonadIO m, IsEvent self) => self -> m ()
-composedPath_ self = liftIO (void (js_composedPath (toEvent self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stopPropagation\"](); })"
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"initEvent\"]($2, $3, $4); })"
+        js_initEvent :: Event -> JSString -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Event/initEvent MDN Event.initEvent documentation>
+initEvent :: (MonadDOM m, IsEvent self, ToJSString type') => self -> type' -> Maybe Bool -> Maybe Bool -> m ()
+initEvent self type' bubbles cancelable = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubbles) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelable) >>= \a4' -> js_initEvent ((Types.toEvent self)) (toJSString type') a3' a4')))
+
+foreign import javascript safe "(($1) => { return $1[\"preventDefault\"](); })"
+        js_preventDefault :: Event -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Event/preventDefault MDN Event.preventDefault documentation>
+preventDefault :: (MonadDOM m, IsEvent self) => self -> m ()
+preventDefault self = liftDOM (void ((js_preventDefault ((Types.toEvent self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"stopImmediatePropagation\"](); })"
+        js_stopImmediatePropagation :: Event -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Event/stopImmediatePropagation MDN Event.stopImmediatePropagation documentation>
+stopImmediatePropagation :: (MonadDOM m, IsEvent self) => self -> m ()
+stopImmediatePropagation self = liftDOM (void ((js_stopImmediatePropagation ((Types.toEvent self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"stopPropagation\"](); })"
         js_stopPropagation :: Event -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Event/stopPropagation MDN Event.stopPropagation documentation>
+stopPropagation :: (MonadDOM m, IsEvent self) => self -> m ()
+stopPropagation self = liftDOM (void ((js_stopPropagation ((Types.toEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopPropagation Mozilla Event.stopPropagation documentation> 
-stopPropagation :: (MonadIO m, IsEvent self) => self -> m ()
-stopPropagation self = liftIO (js_stopPropagation (toEvent self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"stopImmediatePropagation\"](); })" js_stopImmediatePropagation ::
-        Event -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Event -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Event/type MDN Event.type documentation>
+getType :: (MonadDOM m, IsEvent self, FromJSString result) => self -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType ((Types.toEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopImmediatePropagation Mozilla Event.stopImmediatePropagation documentation> 
-stopImmediatePropagation ::
-                         (MonadIO m, IsEvent self) => self -> m ()
-stopImmediatePropagation self
-  = liftIO (js_stopImmediatePropagation (toEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"preventDefault\"](); })"
-        js_preventDefault :: Event -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: Event -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Event/target MDN Event.target documentation>
+getTarget :: (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
+getTarget self = liftDOM (((js_getTarget ((Types.toEvent self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.preventDefault Mozilla Event.preventDefault documentation> 
-preventDefault :: (MonadIO m, IsEvent self) => self -> m ()
-preventDefault self = liftIO (js_preventDefault (toEvent self))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"initEvent\"]($2, $3, $4); })"
-        js_initEvent :: Event -> JSString -> Bool -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Event/target MDN Event.target documentation>
+getTargetUnsafe :: (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
+getTargetUnsafe self = liftDOM ((((js_getTarget ((Types.toEvent self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.initEvent Mozilla Event.initEvent documentation> 
-initEvent ::
-          (MonadIO m, IsEvent self, ToJSString type') =>
-            self -> type' -> Bool -> Bool -> m ()
-initEvent self type' bubbles cancelable
-  = liftIO
-      (js_initEvent (toEvent self) (toJSString type') bubbles cancelable)
-pattern NONE = 0
-pattern CAPTURING_PHASE = 1
-pattern AT_TARGET = 2
-pattern BUBBLING_PHASE = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        Event -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Event/target MDN Event.target documentation>
+getTargetUnchecked :: (MonadDOM m, IsEvent self) => self -> m EventTarget
+getTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getTarget ((Types.toEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.type Mozilla Event.type documentation> 
-getType ::
-        (MonadIO m, IsEvent self, FromJSString result) => self -> m result
-getType self
-  = liftIO (fromJSString <$> (js_getType (toEvent self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        Event -> IO (Nullable EventTarget)
+foreign import javascript unsafe "(($1) => { return $1[\"srcElement\"]; })"
+        js_getSrcElement :: Event -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Event/srcElement MDN Event.srcElement documentation>
+getSrcElement :: (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
+getSrcElement self = liftDOM (((js_getSrcElement ((Types.toEvent self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
-getTarget ::
-          (MonadIO m, IsEvent self) => self -> m (Maybe EventTarget)
-getTarget self
-  = liftIO (nullableToMaybe <$> (js_getTarget (toEvent self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Event/srcElement MDN Event.srcElement documentation>
+getSrcElementUnsafe :: (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
+getSrcElementUnsafe self = liftDOM ((((js_getSrcElement ((Types.toEvent self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
-getTargetUnsafe ::
-                (MonadIO m, IsEvent self, HasCallStack) => self -> m EventTarget
-getTargetUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getTarget (toEvent self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Event/srcElement MDN Event.srcElement documentation>
+getSrcElementUnchecked :: (MonadDOM m, IsEvent self) => self -> m EventTarget
+getSrcElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getSrcElement ((Types.toEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
-getTargetUnchecked ::
-                   (MonadIO m, IsEvent self) => self -> m EventTarget
-getTargetUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getTarget (toEvent self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"currentTarget\"]; })"
-        js_getCurrentTarget :: Event -> IO (Nullable EventTarget)
+        js_getCurrentTarget :: Event -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Event/currentTarget MDN Event.currentTarget documentation>
+getCurrentTarget :: (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
+getCurrentTarget self = liftDOM (((js_getCurrentTarget ((Types.toEvent self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
-getCurrentTarget ::
-                 (MonadIO m, IsEvent self) => self -> m (Maybe EventTarget)
-getCurrentTarget self
-  = liftIO (nullableToMaybe <$> (js_getCurrentTarget (toEvent self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Event/currentTarget MDN Event.currentTarget documentation>
+getCurrentTargetUnsafe :: (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
+getCurrentTargetUnsafe self = liftDOM ((((js_getCurrentTarget ((Types.toEvent self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
-getCurrentTargetUnsafe ::
-                       (MonadIO m, IsEvent self, HasCallStack) => self -> m EventTarget
-getCurrentTargetUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getCurrentTarget (toEvent self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Event/currentTarget MDN Event.currentTarget documentation>
+getCurrentTargetUnchecked :: (MonadDOM m, IsEvent self) => self -> m EventTarget
+getCurrentTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentTarget ((Types.toEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
-getCurrentTargetUnchecked ::
-                          (MonadIO m, IsEvent self) => self -> m EventTarget
-getCurrentTargetUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getCurrentTarget (toEvent self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"eventPhase\"]; })"
         js_getEventPhase :: Event -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Event/eventPhase MDN Event.eventPhase documentation>
+getEventPhase :: (MonadDOM m, IsEvent self) => self -> m Word
+getEventPhase self = liftDOM ((js_getEventPhase ((Types.toEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.eventPhase Mozilla Event.eventPhase documentation> 
-getEventPhase :: (MonadIO m, IsEvent self) => self -> m Word
-getEventPhase self = liftIO (js_getEventPhase (toEvent self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"cancelBubble\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"cancelBubble\"] = $2; })"
         js_setCancelBubble :: Event -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Event/cancelBubble MDN Event.cancelBubble documentation>
+setCancelBubble :: (MonadDOM m, IsEvent self) => self -> Bool -> m ()
+setCancelBubble self val = liftDOM (void ((js_setCancelBubble ((Types.toEvent self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
-setCancelBubble ::
-                (MonadIO m, IsEvent self) => self -> Bool -> m ()
-setCancelBubble self val
-  = liftIO (js_setCancelBubble (toEvent self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"cancelBubble\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"cancelBubble\"]; })"
         js_getCancelBubble :: Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Event/cancelBubble MDN Event.cancelBubble documentation>
+getCancelBubble :: (MonadDOM m, IsEvent self) => self -> m Bool
+getCancelBubble self = liftDOM ((js_getCancelBubble ((Types.toEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
-getCancelBubble :: (MonadIO m, IsEvent self) => self -> m Bool
-getCancelBubble self = liftIO (js_getCancelBubble (toEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"bubbles\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"bubbles\"]; })"
         js_getBubbles :: Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Event/bubbles MDN Event.bubbles documentation>
+getBubbles :: (MonadDOM m, IsEvent self) => self -> m Bool
+getBubbles self = liftDOM ((js_getBubbles ((Types.toEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.bubbles Mozilla Event.bubbles documentation> 
-getBubbles :: (MonadIO m, IsEvent self) => self -> m Bool
-getBubbles self = liftIO (js_getBubbles (toEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"cancelable\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"cancelable\"]; })"
         js_getCancelable :: Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Event/cancelable MDN Event.cancelable documentation>
+getCancelable :: (MonadDOM m, IsEvent self) => self -> m Bool
+getCancelable self = liftDOM ((js_getCancelable ((Types.toEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelable Mozilla Event.cancelable documentation> 
-getCancelable :: (MonadIO m, IsEvent self) => self -> m Bool
-getCancelable self = liftIO (js_getCancelable (toEvent self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"defaultPrevented\"] ? 1 : 0); })" js_getDefaultPrevented ::
-        Event -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"returnValue\"] = $2; })"
+        js_setReturnValue :: Event -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Event/returnValue MDN Event.returnValue documentation>
+setReturnValue :: (MonadDOM m, IsEvent self) => self -> Bool -> m ()
+setReturnValue self val = liftDOM (void ((js_setReturnValue ((Types.toEvent self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.defaultPrevented Mozilla Event.defaultPrevented documentation> 
-getDefaultPrevented :: (MonadIO m, IsEvent self) => self -> m Bool
-getDefaultPrevented self
-  = liftIO (js_getDefaultPrevented (toEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"composed\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"returnValue\"]; })"
+        js_getReturnValue :: Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Event/returnValue MDN Event.returnValue documentation>
+getReturnValue :: (MonadDOM m, IsEvent self) => self -> m Bool
+getReturnValue self = liftDOM ((js_getReturnValue ((Types.toEvent self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultPrevented\"]; })"
+        js_getDefaultPrevented :: Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented MDN Event.defaultPrevented documentation>
+getDefaultPrevented :: (MonadDOM m, IsEvent self) => self -> m Bool
+getDefaultPrevented self = liftDOM ((js_getDefaultPrevented ((Types.toEvent self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"composed\"]; })"
         js_getComposed :: Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Event/composed MDN Event.composed documentation>
+getComposed :: (MonadDOM m, IsEvent self) => self -> m Bool
+getComposed self = liftDOM ((js_getComposed ((Types.toEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composed Mozilla Event.composed documentation> 
-getComposed :: (MonadIO m, IsEvent self) => self -> m Bool
-getComposed self = liftIO (js_getComposed (toEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"isTrusted\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"isTrusted\"]; })"
         js_getIsTrusted :: Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Event/isTrusted MDN Event.isTrusted documentation>
+getIsTrusted :: (MonadDOM m, IsEvent self) => self -> m Bool
+getIsTrusted self = liftDOM ((js_getIsTrusted ((Types.toEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.isTrusted Mozilla Event.isTrusted documentation> 
-getIsTrusted :: (MonadIO m, IsEvent self) => self -> m Bool
-getIsTrusted self = liftIO (js_getIsTrusted (toEvent self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"timeStamp\"]; })"
-        js_getTimeStamp :: Event -> IO Word
+        js_getTimeStamp :: Event -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Event/timeStamp MDN Event.timeStamp documentation>
+getTimeStamp :: (MonadDOM m, IsEvent self) => self -> m Double
+getTimeStamp self = liftDOM ((js_getTimeStamp ((Types.toEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.timeStamp Mozilla Event.timeStamp documentation> 
-getTimeStamp :: (MonadIO m, IsEvent self) => self -> m Word
-getTimeStamp self = liftIO (js_getTimeStamp (toEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"srcElement\"]; })"
-        js_getSrcElement :: Event -> IO EventTarget
+pattern NONE = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.srcElement Mozilla Event.srcElement documentation> 
-getSrcElement :: (MonadIO m, IsEvent self) => self -> m EventTarget
-getSrcElement self = liftIO (js_getSrcElement (toEvent self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"returnValue\"] = $2; })"
-        js_setReturnValue :: Event -> Bool -> IO ()
+pattern CAPTURING_PHASE = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
-setReturnValue :: (MonadIO m, IsEvent self) => self -> Bool -> m ()
-setReturnValue self val
-  = liftIO (js_setReturnValue (toEvent self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"returnValue\"] ? 1 : 0); })"
-        js_getReturnValue :: Event -> IO Bool
+pattern AT_TARGET = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
-getReturnValue :: (MonadIO m, IsEvent self) => self -> m Bool
-getReturnValue self = liftIO (js_getReturnValue (toEvent self))
+pattern BUBBLING_PHASE = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventCounts.hs b/src/GHCJS/DOM/JSFFI/Generated/EventCounts.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventCounts.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from event-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EventCounts
+       (EventCounts(..), gTypeEventCounts)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/EventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EventInit
+       (js_newEventInit, js_setBubbles, js_getBubbles, js_setCancelable, js_getCancelable, js_setComposed, js_getComposed, newEventInit, setBubbles, getBubbles, getBubblesUnsafe, getBubblesUnchecked, setCancelable, getCancelable, getCancelableUnsafe, getCancelableUnchecked, setComposed, getComposed, getComposedUnsafe, getComposedUnchecked, EventInit(..), gTypeEventInit, IsEventInit, toEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newEventInit :: IO EventInit
+-- | <https://dom.spec.whatwg.org/#dictdef-eventinit EventInit specification>
+newEventInit :: (MonadDOM m) => m EventInit
+newEventInit = liftDOM ((js_newEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bubbles\"] = $2; })"
+        js_setBubbles :: EventInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-bubbles EventInit.bubbles specification>
+setBubbles :: (MonadDOM m, IsEventInit self) => self -> Bool -> m ()
+setBubbles self val = liftDOM (void ((js_setBubbles ((Types.toEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bubbles\"]; })"
+        js_getBubbles :: EventInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-bubbles EventInit.bubbles specification>
+getBubbles :: (MonadDOM m, IsEventInit self) => self -> m (Maybe Bool)
+getBubbles self = liftDOM (((js_getBubbles ((Types.toEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-bubbles EventInit.bubbles specification>
+getBubblesUnsafe :: (MonadDOM m, IsEventInit self, HasCallStack) => self -> m Bool
+getBubblesUnsafe self = liftDOM ((((js_getBubbles ((Types.toEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-bubbles EventInit.bubbles specification>
+getBubblesUnchecked :: (MonadDOM m, IsEventInit self) => self -> m Bool
+getBubblesUnchecked self = liftDOM ((pFromJSVal <$> (js_getBubbles ((Types.toEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cancelable\"] = $2; })"
+        js_setCancelable :: EventInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-cancelable EventInit.cancelable specification>
+setCancelable :: (MonadDOM m, IsEventInit self) => self -> Bool -> m ()
+setCancelable self val = liftDOM (void ((js_setCancelable ((Types.toEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cancelable\"]; })"
+        js_getCancelable :: EventInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-cancelable EventInit.cancelable specification>
+getCancelable :: (MonadDOM m, IsEventInit self) => self -> m (Maybe Bool)
+getCancelable self = liftDOM (((js_getCancelable ((Types.toEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-cancelable EventInit.cancelable specification>
+getCancelableUnsafe :: (MonadDOM m, IsEventInit self, HasCallStack) => self -> m Bool
+getCancelableUnsafe self = liftDOM ((((js_getCancelable ((Types.toEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-cancelable EventInit.cancelable specification>
+getCancelableUnchecked :: (MonadDOM m, IsEventInit self) => self -> m Bool
+getCancelableUnchecked self = liftDOM ((pFromJSVal <$> (js_getCancelable ((Types.toEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"composed\"] = $2; })"
+        js_setComposed :: EventInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-composed EventInit.composed specification>
+setComposed :: (MonadDOM m, IsEventInit self) => self -> Bool -> m ()
+setComposed self val = liftDOM (void ((js_setComposed ((Types.toEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"composed\"]; })"
+        js_getComposed :: EventInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-composed EventInit.composed specification>
+getComposed :: (MonadDOM m, IsEventInit self) => self -> m (Maybe Bool)
+getComposed self = liftDOM (((js_getComposed ((Types.toEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-composed EventInit.composed specification>
+getComposedUnsafe :: (MonadDOM m, IsEventInit self, HasCallStack) => self -> m Bool
+getComposedUnsafe self = liftDOM ((((js_getComposed ((Types.toEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-composed EventInit.composed specification>
+getComposedUnchecked :: (MonadDOM m, IsEventInit self) => self -> m Bool
+getComposedUnchecked self = liftDOM ((pFromJSVal <$> (js_getComposed ((Types.toEventInit self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs b/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.EventListener
-       (js_handleEvent, handleEvent, EventListener(..),
-        gTypeEventListener)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"handleEvent\"]($2); })"
-        js_handleEvent :: EventListener -> Event -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventListener.handleEvent Mozilla EventListener.handleEvent documentation> 
-handleEvent ::
-            (MonadIO m, IsEvent event) => EventListener -> event -> m ()
-handleEvent self event
-  = liftIO (js_handleEvent self (toEvent event))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventListenerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/EventListenerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventListenerOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EventListenerOptions
+       (js_newEventListenerOptions, js_setCapture, js_getCapture, newEventListenerOptions, setCapture, getCapture, getCaptureUnsafe, getCaptureUnchecked, EventListenerOptions(..), gTypeEventListenerOptions, IsEventListenerOptions, toEventListenerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newEventListenerOptions :: IO EventListenerOptions
+-- | <https://dom.spec.whatwg.org/#dictdef-eventlisteneroptions EventListenerOptions specification>
+newEventListenerOptions :: (MonadDOM m) => m EventListenerOptions
+newEventListenerOptions = liftDOM ((js_newEventListenerOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"capture\"] = $2; })"
+        js_setCapture :: EventListenerOptions -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture EventListenerOptions.capture specification>
+setCapture :: (MonadDOM m, IsEventListenerOptions self) => self -> Bool -> m ()
+setCapture self val = liftDOM (void ((js_setCapture ((Types.toEventListenerOptions self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"capture\"]; })"
+        js_getCapture :: EventListenerOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture EventListenerOptions.capture specification>
+getCapture :: (MonadDOM m, IsEventListenerOptions self) => self -> m (Maybe Bool)
+getCapture self = liftDOM (((js_getCapture ((Types.toEventListenerOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture EventListenerOptions.capture specification>
+getCaptureUnsafe :: (MonadDOM m, IsEventListenerOptions self, HasCallStack) => self -> m Bool
+getCaptureUnsafe self = liftDOM ((((js_getCapture ((Types.toEventListenerOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture EventListenerOptions.capture specification>
+getCaptureUnchecked :: (MonadDOM m, IsEventListenerOptions self) => self -> m Bool
+getCaptureUnchecked self = liftDOM ((pFromJSVal <$> (js_getCapture ((Types.toEventListenerOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventModifierInit.hs b/src/GHCJS/DOM/JSFFI/Generated/EventModifierInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventModifierInit.hs
@@ -0,0 +1,303 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EventModifierInit
+       (js_newEventModifierInit, js_setCtrlKey, js_getCtrlKey, js_setShiftKey, js_getShiftKey, js_setAltKey, js_getAltKey, js_setMetaKey, js_getMetaKey, js_setModifierAltGraph, js_getModifierAltGraph, js_setModifierCapsLock, js_getModifierCapsLock, js_setModifierFn, js_getModifierFn, js_setModifierFnLock, js_getModifierFnLock, js_setModifierHyper, js_getModifierHyper, js_setModifierNumLock, js_getModifierNumLock, js_setModifierScrollLock, js_getModifierScrollLock, js_setModifierSuper, js_getModifierSuper, js_setModifierSymbol, js_getModifierSymbol, js_setModifierSymbolLock, js_getModifierSymbolLock, newEventModifierInit, setCtrlKey, getCtrlKey, getCtrlKeyUnsafe, getCtrlKeyUnchecked, setShiftKey, getShiftKey, getShiftKeyUnsafe, getShiftKeyUnchecked, setAltKey, getAltKey, getAltKeyUnsafe, getAltKeyUnchecked, setMetaKey, getMetaKey, getMetaKeyUnsafe, getMetaKeyUnchecked, setModifierAltGraph, getModifierAltGraph, getModifierAltGraphUnsafe, getModifierAltGraphUnchecked, setModifierCapsLock, getModifierCapsLock, getModifierCapsLockUnsafe, getModifierCapsLockUnchecked, setModifierFn, getModifierFn, getModifierFnUnsafe, getModifierFnUnchecked, setModifierFnLock, getModifierFnLock, getModifierFnLockUnsafe, getModifierFnLockUnchecked, setModifierHyper, getModifierHyper, getModifierHyperUnsafe, getModifierHyperUnchecked, setModifierNumLock, getModifierNumLock, getModifierNumLockUnsafe, getModifierNumLockUnchecked, setModifierScrollLock, getModifierScrollLock, getModifierScrollLockUnsafe, getModifierScrollLockUnchecked, setModifierSuper, getModifierSuper, getModifierSuperUnsafe, getModifierSuperUnchecked, setModifierSymbol, getModifierSymbol, getModifierSymbolUnsafe, getModifierSymbolUnchecked, setModifierSymbolLock, getModifierSymbolLock, getModifierSymbolLockUnsafe, getModifierSymbolLockUnchecked, EventModifierInit(..), gTypeEventModifierInit, IsEventModifierInit, toEventModifierInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newEventModifierInit :: IO EventModifierInit
+-- | <https://w3c.github.io/uievents/#dictdef-eventmodifierinit EventModifierInit specification>
+newEventModifierInit :: (MonadDOM m) => m EventModifierInit
+newEventModifierInit = liftDOM ((js_newEventModifierInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ctrlKey\"] = $2; })"
+        js_setCtrlKey :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-ctrlkey EventModifierInit.ctrlKey specification>
+setCtrlKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setCtrlKey self val = liftDOM (void ((js_setCtrlKey ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ctrlKey\"]; })"
+        js_getCtrlKey :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-ctrlkey EventModifierInit.ctrlKey specification>
+getCtrlKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getCtrlKey self = liftDOM (((js_getCtrlKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-ctrlkey EventModifierInit.ctrlKey specification>
+getCtrlKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getCtrlKeyUnsafe self = liftDOM ((((js_getCtrlKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-ctrlkey EventModifierInit.ctrlKey specification>
+getCtrlKeyUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getCtrlKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getCtrlKey ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shiftKey\"] = $2; })"
+        js_setShiftKey :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-shiftkey EventModifierInit.shiftKey specification>
+setShiftKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setShiftKey self val = liftDOM (void ((js_setShiftKey ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shiftKey\"]; })"
+        js_getShiftKey :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-shiftkey EventModifierInit.shiftKey specification>
+getShiftKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getShiftKey self = liftDOM (((js_getShiftKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-shiftkey EventModifierInit.shiftKey specification>
+getShiftKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getShiftKeyUnsafe self = liftDOM ((((js_getShiftKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-shiftkey EventModifierInit.shiftKey specification>
+getShiftKeyUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getShiftKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getShiftKey ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"altKey\"] = $2; })"
+        js_setAltKey :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-altkey EventModifierInit.altKey specification>
+setAltKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setAltKey self val = liftDOM (void ((js_setAltKey ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"altKey\"]; })"
+        js_getAltKey :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-altkey EventModifierInit.altKey specification>
+getAltKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getAltKey self = liftDOM (((js_getAltKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-altkey EventModifierInit.altKey specification>
+getAltKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getAltKeyUnsafe self = liftDOM ((((js_getAltKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-altkey EventModifierInit.altKey specification>
+getAltKeyUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getAltKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getAltKey ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"metaKey\"] = $2; })"
+        js_setMetaKey :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-metakey EventModifierInit.metaKey specification>
+setMetaKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setMetaKey self val = liftDOM (void ((js_setMetaKey ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"metaKey\"]; })"
+        js_getMetaKey :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-metakey EventModifierInit.metaKey specification>
+getMetaKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getMetaKey self = liftDOM (((js_getMetaKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-metakey EventModifierInit.metaKey specification>
+getMetaKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getMetaKeyUnsafe self = liftDOM ((((js_getMetaKey ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-metakey EventModifierInit.metaKey specification>
+getMetaKeyUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getMetaKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getMetaKey ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierAltGraph\"] = $2; })"
+        js_setModifierAltGraph :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifieraltgraph EventModifierInit.modifierAltGraph specification>
+setModifierAltGraph :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierAltGraph self val = liftDOM (void ((js_setModifierAltGraph ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierAltGraph\"]; })"
+        js_getModifierAltGraph :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifieraltgraph EventModifierInit.modifierAltGraph specification>
+getModifierAltGraph :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierAltGraph self = liftDOM (((js_getModifierAltGraph ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifieraltgraph EventModifierInit.modifierAltGraph specification>
+getModifierAltGraphUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierAltGraphUnsafe self = liftDOM ((((js_getModifierAltGraph ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifieraltgraph EventModifierInit.modifierAltGraph specification>
+getModifierAltGraphUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierAltGraphUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierAltGraph ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierCapsLock\"] = $2; })"
+        js_setModifierCapsLock :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiercapslock EventModifierInit.modifierCapsLock specification>
+setModifierCapsLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierCapsLock self val = liftDOM (void ((js_setModifierCapsLock ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierCapsLock\"]; })"
+        js_getModifierCapsLock :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiercapslock EventModifierInit.modifierCapsLock specification>
+getModifierCapsLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierCapsLock self = liftDOM (((js_getModifierCapsLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiercapslock EventModifierInit.modifierCapsLock specification>
+getModifierCapsLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierCapsLockUnsafe self = liftDOM ((((js_getModifierCapsLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiercapslock EventModifierInit.modifierCapsLock specification>
+getModifierCapsLockUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierCapsLockUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierCapsLock ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierFn\"] = $2; })"
+        js_setModifierFn :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfn EventModifierInit.modifierFn specification>
+setModifierFn :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierFn self val = liftDOM (void ((js_setModifierFn ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierFn\"]; })"
+        js_getModifierFn :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfn EventModifierInit.modifierFn specification>
+getModifierFn :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierFn self = liftDOM (((js_getModifierFn ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfn EventModifierInit.modifierFn specification>
+getModifierFnUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierFnUnsafe self = liftDOM ((((js_getModifierFn ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfn EventModifierInit.modifierFn specification>
+getModifierFnUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierFnUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierFn ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierFnLock\"] = $2; })"
+        js_setModifierFnLock :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfnlock EventModifierInit.modifierFnLock specification>
+setModifierFnLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierFnLock self val = liftDOM (void ((js_setModifierFnLock ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierFnLock\"]; })"
+        js_getModifierFnLock :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfnlock EventModifierInit.modifierFnLock specification>
+getModifierFnLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierFnLock self = liftDOM (((js_getModifierFnLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfnlock EventModifierInit.modifierFnLock specification>
+getModifierFnLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierFnLockUnsafe self = liftDOM ((((js_getModifierFnLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfnlock EventModifierInit.modifierFnLock specification>
+getModifierFnLockUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierFnLockUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierFnLock ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierHyper\"] = $2; })"
+        js_setModifierHyper :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierhyper EventModifierInit.modifierHyper specification>
+setModifierHyper :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierHyper self val = liftDOM (void ((js_setModifierHyper ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierHyper\"]; })"
+        js_getModifierHyper :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierhyper EventModifierInit.modifierHyper specification>
+getModifierHyper :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierHyper self = liftDOM (((js_getModifierHyper ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierhyper EventModifierInit.modifierHyper specification>
+getModifierHyperUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierHyperUnsafe self = liftDOM ((((js_getModifierHyper ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierhyper EventModifierInit.modifierHyper specification>
+getModifierHyperUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierHyperUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierHyper ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierNumLock\"] = $2; })"
+        js_setModifierNumLock :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiernumlock EventModifierInit.modifierNumLock specification>
+setModifierNumLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierNumLock self val = liftDOM (void ((js_setModifierNumLock ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierNumLock\"]; })"
+        js_getModifierNumLock :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiernumlock EventModifierInit.modifierNumLock specification>
+getModifierNumLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierNumLock self = liftDOM (((js_getModifierNumLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiernumlock EventModifierInit.modifierNumLock specification>
+getModifierNumLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierNumLockUnsafe self = liftDOM ((((js_getModifierNumLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiernumlock EventModifierInit.modifierNumLock specification>
+getModifierNumLockUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierNumLockUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierNumLock ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierScrollLock\"] = $2; })"
+        js_setModifierScrollLock :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierscrolllock EventModifierInit.modifierScrollLock specification>
+setModifierScrollLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierScrollLock self val = liftDOM (void ((js_setModifierScrollLock ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierScrollLock\"]; })"
+        js_getModifierScrollLock :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierscrolllock EventModifierInit.modifierScrollLock specification>
+getModifierScrollLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierScrollLock self = liftDOM (((js_getModifierScrollLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierscrolllock EventModifierInit.modifierScrollLock specification>
+getModifierScrollLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierScrollLockUnsafe self = liftDOM ((((js_getModifierScrollLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierscrolllock EventModifierInit.modifierScrollLock specification>
+getModifierScrollLockUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierScrollLockUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierScrollLock ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierSuper\"] = $2; })"
+        js_setModifierSuper :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersuper EventModifierInit.modifierSuper specification>
+setModifierSuper :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierSuper self val = liftDOM (void ((js_setModifierSuper ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierSuper\"]; })"
+        js_getModifierSuper :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersuper EventModifierInit.modifierSuper specification>
+getModifierSuper :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierSuper self = liftDOM (((js_getModifierSuper ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersuper EventModifierInit.modifierSuper specification>
+getModifierSuperUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierSuperUnsafe self = liftDOM ((((js_getModifierSuper ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersuper EventModifierInit.modifierSuper specification>
+getModifierSuperUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierSuperUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierSuper ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierSymbol\"] = $2; })"
+        js_setModifierSymbol :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbol EventModifierInit.modifierSymbol specification>
+setModifierSymbol :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierSymbol self val = liftDOM (void ((js_setModifierSymbol ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierSymbol\"]; })"
+        js_getModifierSymbol :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbol EventModifierInit.modifierSymbol specification>
+getModifierSymbol :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierSymbol self = liftDOM (((js_getModifierSymbol ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbol EventModifierInit.modifierSymbol specification>
+getModifierSymbolUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierSymbolUnsafe self = liftDOM ((((js_getModifierSymbol ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbol EventModifierInit.modifierSymbol specification>
+getModifierSymbolUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierSymbolUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierSymbol ((Types.toEventModifierInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifierSymbolLock\"] = $2; })"
+        js_setModifierSymbolLock :: EventModifierInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbollock EventModifierInit.modifierSymbolLock specification>
+setModifierSymbolLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierSymbolLock self val = liftDOM (void ((js_setModifierSymbolLock ((Types.toEventModifierInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifierSymbolLock\"]; })"
+        js_getModifierSymbolLock :: EventModifierInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbollock EventModifierInit.modifierSymbolLock specification>
+getModifierSymbolLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierSymbolLock self = liftDOM (((js_getModifierSymbolLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbollock EventModifierInit.modifierSymbolLock specification>
+getModifierSymbolLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierSymbolLockUnsafe self = liftDOM ((((js_getModifierSymbolLock ((Types.toEventModifierInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbollock EventModifierInit.modifierSymbolLock specification>
+getModifierSymbolLockUnchecked :: (MonadDOM m, IsEventModifierInit self) => self -> m Bool
+getModifierSymbolLockUnchecked self = liftDOM ((pFromJSVal <$> (js_getModifierSymbolLock ((Types.toEventModifierInit self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs b/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
@@ -1,88 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.EventSource
-       (js_newEventSource, newEventSource, js_close, close,
-        pattern CONNECTING, pattern OPEN, pattern CLOSED, js_getUrl,
-        getUrl, js_getWithCredentials, getWithCredentials,
-        js_getReadyState, getReadyState, open, message, error,
-        EventSource(..), gTypeEventSource)
+       (js_newEventSource, js_close, js_getUrl, js_getWithCredentials, js_getReadyState, newEventSource, close, getUrl, getWithCredentials, getReadyState, pattern CONNECTING, pattern OPEN, pattern CLOSED, open, message, error, EventSource(..), gTypeEventSource)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2) => { return new window[\"EventSource\"]($1,\n$2); })" js_newEventSource ::
-        JSString -> Optional EventSourceInit -> IO EventSource
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation> 
-newEventSource ::
-               (MonadIO m, ToJSString url) =>
-                 url -> Maybe EventSourceInit -> m EventSource
-newEventSource url eventSourceInitDict
-  = liftIO
-      (js_newEventSource (toJSString url)
-         (maybeToOptional eventSourceInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        EventSource -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"EventSource\"]($1, $2); })"
+        js_newEventSource :: JSString -> JSVal -> IO EventSource
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/EventSource MDN EventSource. documentation>
+newEventSource :: (MonadDOM m, ToJSString url) => url -> Maybe EventSourceInit -> m EventSource
+newEventSource url eventSourceInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventSourceInitDict) >>= \a2' -> js_newEventSource (toJSString url) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.close Mozilla EventSource.close documentation> 
-close :: (MonadIO m) => EventSource -> m ()
-close self = liftIO (js_close self)
-pattern CONNECTING = 0
-pattern OPEN = 1
-pattern CLOSED = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
-        EventSource -> IO JSString
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: EventSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/close MDN EventSource.close documentation>
+close :: (MonadDOM m) => EventSource -> m ()
+close self = liftDOM (void ((js_close (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.url Mozilla EventSource.url documentation> 
-getUrl ::
-       (MonadIO m, FromJSString result) => EventSource -> m result
-getUrl self = liftIO (fromJSString <$> (js_getUrl self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"withCredentials\"] ? 1 : 0); })" js_getWithCredentials ::
-        EventSource -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: EventSource -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/url MDN EventSource.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => EventSource -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.withCredentials Mozilla EventSource.withCredentials documentation> 
-getWithCredentials :: (MonadIO m) => EventSource -> m Bool
-getWithCredentials self = liftIO (js_getWithCredentials self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"withCredentials\"]; })"
+        js_getWithCredentials :: EventSource -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials MDN EventSource.withCredentials documentation>
+getWithCredentials :: (MonadDOM m) => EventSource -> m Bool
+getWithCredentials self = liftDOM ((js_getWithCredentials (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
         js_getReadyState :: EventSource -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/readyState MDN EventSource.readyState documentation>
+getReadyState :: (MonadDOM m) => EventSource -> m Word
+getReadyState self = liftDOM ((js_getReadyState (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.readyState Mozilla EventSource.readyState documentation> 
-getReadyState :: (MonadIO m) => EventSource -> m Word
-getReadyState self = liftIO (js_getReadyState self)
+pattern CONNECTING = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onopen Mozilla EventSource.onopen documentation> 
+pattern OPEN = 1
+
+pattern CLOSED = 2
+
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#handler-eventsource-onopen open event>
 open :: EventName EventSource Event
 open = unsafeEventNameAsync (toJSString "open")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onmessage Mozilla EventSource.onmessage documentation> 
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#handler-eventsource-onmessage message event>
 message :: EventName EventSource MessageEvent
 message = unsafeEventNameAsync (toJSString "message")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onerror Mozilla EventSource.onerror documentation> 
-error :: EventName EventSource UIEvent
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#handler-eventsource-onerror error event>
+error :: EventName EventSource Event
 error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventSourceInit.hs b/src/GHCJS/DOM/JSFFI/Generated/EventSourceInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventSourceInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.EventSourceInit
+       (js_newEventSourceInit, js_setWithCredentials, js_getWithCredentials, newEventSourceInit, setWithCredentials, getWithCredentials, getWithCredentialsUnsafe, getWithCredentialsUnchecked, EventSourceInit(..), gTypeEventSourceInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newEventSourceInit :: IO EventSourceInit
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#eventsourceinit EventSourceInit specification>
+newEventSourceInit :: (MonadDOM m) => m EventSourceInit
+newEventSourceInit = liftDOM ((js_newEventSourceInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"withCredentials\"] = $2; })"
+        js_setWithCredentials :: EventSourceInit -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsourceinit-withcredentials EventSourceInit.withCredentials specification>
+setWithCredentials :: (MonadDOM m) => EventSourceInit -> Bool -> m ()
+setWithCredentials self val = liftDOM (void ((js_setWithCredentials (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"withCredentials\"]; })"
+        js_getWithCredentials :: EventSourceInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsourceinit-withcredentials EventSourceInit.withCredentials specification>
+getWithCredentials :: (MonadDOM m) => EventSourceInit -> m (Maybe Bool)
+getWithCredentials self = liftDOM (((js_getWithCredentials (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsourceinit-withcredentials EventSourceInit.withCredentials specification>
+getWithCredentialsUnsafe :: (MonadDOM m, HasCallStack) => EventSourceInit -> m Bool
+getWithCredentialsUnsafe self = liftDOM ((((js_getWithCredentials (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsourceinit-withcredentials EventSourceInit.withCredentials specification>
+getWithCredentialsUnchecked :: (MonadDOM m) => EventSourceInit -> m Bool
+getWithCredentialsUnchecked self = liftDOM ((pFromJSVal <$> (js_getWithCredentials (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs b/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
@@ -1,86 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.EventTarget
-       (js_addEventListener, addEventListener, js_removeEventListener,
-        removeEventListener, js_dispatchEvent, dispatchEvent,
-        dispatchEvent_, EventTarget(..), gTypeEventTarget, IsEventTarget,
-        toEventTarget)
+       (js_newEventTarget, js_addEventListener, js_dispatchEvent, js_removeEventListener, newEventTarget, addEventListener, dispatchEvent, dispatchEvent_, removeEventListener, EventTarget(..), gTypeEventTarget, IsEventTarget, toEventTarget)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"addEventListener\"]($2, $3,\n$4); })" js_addEventListener ::
-        EventTarget ->
-          JSString ->
-            Optional EventListener -> AddEventListenerOptionsOrBool -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener Mozilla EventTarget.addEventListener documentation> 
-addEventListener ::
-                 (MonadIO m, IsEventTarget self, ToJSString type',
-                  IsAddEventListenerOptionsOrBool options) =>
-                   self -> type' -> Maybe EventListener -> options -> m ()
-addEventListener self type' callback options
-  = liftIO
-      (toJSVal options >>=
-         \ options' ->
-           js_addEventListener (toEventTarget self) (toJSString type')
-             (maybeToOptional callback)
-             (AddEventListenerOptionsOrBool options'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"removeEventListener\"]($2,\n$3, $4); })" js_removeEventListener
-        ::
-        EventTarget ->
-          JSString ->
-            Optional EventListener -> EventListenerOptionsOrBool -> IO ()
+foreign import javascript safe "(() => { return new globalThis[\"EventTarget\"](); })"
+        js_newEventTarget :: IO EventTarget
+-- | <https://developer.mozilla.org/docs/Web/API/EventTarget/EventTarget MDN EventTarget. documentation>
+newEventTarget :: (MonadDOM m) => m EventTarget
+newEventTarget = liftDOM ((js_newEventTarget))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener Mozilla EventTarget.removeEventListener documentation> 
-removeEventListener ::
-                    (MonadIO m, IsEventTarget self, ToJSString type',
-                     IsEventListenerOptionsOrBool options) =>
-                      self -> type' -> Maybe EventListener -> options -> m ()
-removeEventListener self type' callback options
-  = liftIO
-      (toJSVal options >>=
-         \ options' ->
-           js_removeEventListener (toEventTarget self) (toJSString type')
-             (maybeToOptional callback)
-             (EventListenerOptionsOrBool options'))
- 
-foreign import javascript safe
-        "(($1, $2) => { return ($1[\"dispatchEvent\"]($2) ? 1 : 0); })" js_dispatchEvent ::
-        EventTarget -> Event -> IO Bool
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"addEventListener\"]($2, $3, $4); })"
+        js_addEventListener :: EventTarget -> JSString -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener MDN EventTarget.addEventListener documentation>
+addEventListener :: (MonadDOM m, IsEventTarget self, ToJSString type', IsAddEventListenerOptionsOrBool options) => self -> type' -> Maybe EventListener -> Maybe options -> m ()
+addEventListener self type' callback' options = liftDOM (void (((toJSVal callback') >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_addEventListener ((Types.toEventTarget self)) (toJSString type') a3' a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent Mozilla EventTarget.dispatchEvent documentation> 
-dispatchEvent ::
-              (MonadIO m, IsEventTarget self, IsEvent event) =>
-                self -> event -> m Bool
-dispatchEvent self event
-  = liftIO (js_dispatchEvent (toEventTarget self) (toEvent event))
+foreign import javascript safe "(($1, $2) => { return $1[\"dispatchEvent\"]($2); })"
+        js_dispatchEvent :: EventTarget -> Event -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent MDN EventTarget.dispatchEvent documentation>
+dispatchEvent :: (MonadDOM m, IsEventTarget self, IsEvent event) => self -> event -> m Bool
+dispatchEvent self event = liftDOM ((js_dispatchEvent ((Types.toEventTarget self)) (Types.toEvent event)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent Mozilla EventTarget.dispatchEvent documentation> 
-dispatchEvent_ ::
-               (MonadIO m, IsEventTarget self, IsEvent event) =>
-                 self -> event -> m ()
-dispatchEvent_ self event
-  = liftIO
-      (void (js_dispatchEvent (toEventTarget self) (toEvent event)))
+-- | <https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent MDN EventTarget.dispatchEvent documentation>
+dispatchEvent_ :: (MonadDOM m, IsEventTarget self, IsEvent event) => self -> event -> m ()
+dispatchEvent_ self event = liftDOM (void ((js_dispatchEvent ((Types.toEventTarget self)) (Types.toEvent event))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"removeEventListener\"]($2, $3, $4); })"
+        js_removeEventListener :: EventTarget -> JSString -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener MDN EventTarget.removeEventListener documentation>
+removeEventListener :: (MonadDOM m, IsEventTarget self, ToJSString type', IsEventListenerOptionsOrBool options) => self -> type' -> Maybe EventListener -> Maybe options -> m ()
+removeEventListener self type' callback' options = liftDOM (void (((toJSVal callback') >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_removeEventListener ((Types.toEventTarget self)) (toJSString type') a3' a4')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ExtendableCookieChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ExtendableCookieChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ExtendableCookieChangeEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ExtendableCookieChangeEvent
+       (js_newExtendableCookieChangeEvent, js_getChanged, js_getDeleted, newExtendableCookieChangeEvent, getChanged, getDeleted, ExtendableCookieChangeEvent(..), gTypeExtendableCookieChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ExtendableCookieChangeEvent\"]($1, $2); })"
+        js_newExtendableCookieChangeEvent :: JSString -> JSVal -> IO ExtendableCookieChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableCookieChangeEvent/ExtendableCookieChangeEvent MDN ExtendableCookieChangeEvent. documentation>
+newExtendableCookieChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe ExtendableCookieChangeEventInit -> m ExtendableCookieChangeEvent
+newExtendableCookieChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newExtendableCookieChangeEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"changed\"]; })"
+        js_getChanged :: ExtendableCookieChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableCookieChangeEvent/changed MDN ExtendableCookieChangeEvent.changed documentation>
+getChanged :: (MonadDOM m) => ExtendableCookieChangeEvent -> m [CookieListItem]
+getChanged self = liftDOM (((js_getChanged (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deleted\"]; })"
+        js_getDeleted :: ExtendableCookieChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableCookieChangeEvent/deleted MDN ExtendableCookieChangeEvent.deleted documentation>
+getDeleted :: (MonadDOM m) => ExtendableCookieChangeEvent -> m [CookieListItem]
+getDeleted self = liftDOM (((js_getDeleted (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ExtendableCookieChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ExtendableCookieChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ExtendableCookieChangeEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ExtendableCookieChangeEventInit
+       (js_newExtendableCookieChangeEventInit, js_setChanged, js_getChanged, js_setDeleted, js_getDeleted, newExtendableCookieChangeEventInit, setChanged, getChanged, getChangedUnsafe, getChangedUnchecked, setDeleted, getDeleted, getDeletedUnsafe, getDeletedUnchecked, ExtendableCookieChangeEventInit(..), gTypeExtendableCookieChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newExtendableCookieChangeEventInit :: IO ExtendableCookieChangeEventInit
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-extendablecookiechangeeventinit ExtendableCookieChangeEventInit specification>
+newExtendableCookieChangeEventInit :: (MonadDOM m) => m ExtendableCookieChangeEventInit
+newExtendableCookieChangeEventInit = liftDOM ((js_newExtendableCookieChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"changed\"] = $2; })"
+        js_setChanged :: ExtendableCookieChangeEventInit -> JSVal -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-changed ExtendableCookieChangeEventInit.changed specification>
+setChanged :: (MonadDOM m) => ExtendableCookieChangeEventInit -> [CookieListItem] -> m ()
+setChanged self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChanged (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"changed\"]; })"
+        js_getChanged :: ExtendableCookieChangeEventInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-changed ExtendableCookieChangeEventInit.changed specification>
+getChanged :: (MonadDOM m) => ExtendableCookieChangeEventInit -> m (Maybe [CookieListItem])
+getChanged self = liftDOM (((js_getChanged (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-changed ExtendableCookieChangeEventInit.changed specification>
+getChangedUnsafe :: (MonadDOM m, HasCallStack) => ExtendableCookieChangeEventInit -> m [CookieListItem]
+getChangedUnsafe self = liftDOM ((((js_getChanged (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-changed ExtendableCookieChangeEventInit.changed specification>
+getChangedUnchecked :: (MonadDOM m) => ExtendableCookieChangeEventInit -> m [CookieListItem]
+getChangedUnchecked self = liftDOM (((js_getChanged (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deleted\"] = $2; })"
+        js_setDeleted :: ExtendableCookieChangeEventInit -> JSVal -> IO ()
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-deleted ExtendableCookieChangeEventInit.deleted specification>
+setDeleted :: (MonadDOM m) => ExtendableCookieChangeEventInit -> [CookieListItem] -> m ()
+setDeleted self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDeleted (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deleted\"]; })"
+        js_getDeleted :: ExtendableCookieChangeEventInit -> IO JSVal
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-deleted ExtendableCookieChangeEventInit.deleted specification>
+getDeleted :: (MonadDOM m) => ExtendableCookieChangeEventInit -> m (Maybe [CookieListItem])
+getDeleted self = liftDOM (((js_getDeleted (self)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-deleted ExtendableCookieChangeEventInit.deleted specification>
+getDeletedUnsafe :: (MonadDOM m, HasCallStack) => ExtendableCookieChangeEventInit -> m [CookieListItem]
+getDeletedUnsafe self = liftDOM ((((js_getDeleted (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-deleted ExtendableCookieChangeEventInit.deleted specification>
+getDeletedUnchecked :: (MonadDOM m) => ExtendableCookieChangeEventInit -> m [CookieListItem]
+getDeletedUnchecked self = liftDOM (((js_getDeleted (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ExtendableEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ExtendableEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ExtendableEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ExtendableEvent
+       (js_newExtendableEvent, js_waitUntil, newExtendableEvent, waitUntil, ExtendableEvent(..), gTypeExtendableEvent, IsExtendableEvent, toExtendableEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ExtendableEvent\"]($1, $2); })"
+        js_newExtendableEvent :: JSString -> JSVal -> IO ExtendableEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableEvent/ExtendableEvent MDN ExtendableEvent. documentation>
+newExtendableEvent :: (MonadDOM m, ToJSString type', IsExtendableEventInit eventInitDict) => type' -> Maybe eventInitDict -> m ExtendableEvent
+newExtendableEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newExtendableEvent (toJSString type') a2'))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"waitUntil\"]($2); })"
+        js_waitUntil :: ExtendableEvent -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableEvent/waitUntil MDN ExtendableEvent.waitUntil documentation>
+waitUntil :: (MonadDOM m, IsExtendableEvent self) => self -> JSVal -> m ()
+waitUntil self f = liftDOM (void (((toJSVal f) >>= \a2' -> js_waitUntil ((Types.toExtendableEvent self)) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ExtendableEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ExtendableEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ExtendableEventInit.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ExtendableEventInit
+       (js_newExtendableEventInit, newExtendableEventInit, ExtendableEventInit(..), gTypeExtendableEventInit, IsExtendableEventInit, toExtendableEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newExtendableEventInit :: IO ExtendableEventInit
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-extendableeventinit ExtendableEventInit specification>
+newExtendableEventInit :: (MonadDOM m) => m ExtendableEventInit
+newExtendableEventInit = liftDOM ((js_newExtendableEventInit))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ExtendableMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ExtendableMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ExtendableMessageEvent.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ExtendableMessageEvent
+       (js_newExtendableMessageEvent, js_getData, js_getOrigin, js_getLastEventId, js_getSource, js_getPorts, newExtendableMessageEvent, getData, getOrigin, getLastEventId, getSource, getSourceUnsafe, getSourceUnchecked, getPorts, ExtendableMessageEvent(..), gTypeExtendableMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ExtendableMessageEvent\"]($1, $2); })"
+        js_newExtendableMessageEvent :: JSString -> JSVal -> IO ExtendableMessageEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/ExtendableMessageEvent MDN ExtendableMessageEvent. documentation>
+newExtendableMessageEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe ExtendableMessageEventInit -> m ExtendableMessageEvent
+newExtendableMessageEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newExtendableMessageEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: ExtendableMessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/data MDN ExtendableMessageEvent.data documentation>
+getData :: (MonadDOM m) => ExtendableMessageEvent -> m JSVal
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: ExtendableMessageEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/origin MDN ExtendableMessageEvent.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => ExtendableMessageEvent -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lastEventId\"]; })"
+        js_getLastEventId :: ExtendableMessageEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/lastEventId MDN ExtendableMessageEvent.lastEventId documentation>
+getLastEventId :: (MonadDOM m, FromJSString result) => ExtendableMessageEvent -> m result
+getLastEventId self = liftDOM ((fromJSString <$> (js_getLastEventId (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: ExtendableMessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/source MDN ExtendableMessageEvent.source documentation>
+getSource :: (MonadDOM m) => ExtendableMessageEvent -> m (Maybe ClientOrServiceWorkerOrMessagePort)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/source MDN ExtendableMessageEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ExtendableMessageEvent -> m ClientOrServiceWorkerOrMessagePort
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/source MDN ExtendableMessageEvent.source documentation>
+getSourceUnchecked :: (MonadDOM m) => ExtendableMessageEvent -> m ClientOrServiceWorkerOrMessagePort
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ports\"]; })"
+        js_getPorts :: ExtendableMessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/ports MDN ExtendableMessageEvent.ports documentation>
+getPorts :: (MonadDOM m) => ExtendableMessageEvent -> m [MessagePort]
+getPorts self = liftDOM (((js_getPorts (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ExtendableMessageEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ExtendableMessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ExtendableMessageEventInit.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ExtendableMessageEventInit
+       (js_newExtendableMessageEventInit, js_setData, js_getData, js_setOrigin, js_getOrigin, js_setLastEventId, js_getLastEventId, js_setSource, js_getSource, js_setPorts, js_getPorts, newExtendableMessageEventInit, setData, getData, setOrigin, getOrigin, getOriginUnsafe, getOriginUnchecked, setLastEventId, getLastEventId, getLastEventIdUnsafe, getLastEventIdUnchecked, setSource, getSource, getSourceUnsafe, getSourceUnchecked, setPorts, getPorts, getPortsUnsafe, getPortsUnchecked, ExtendableMessageEventInit(..), gTypeExtendableMessageEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newExtendableMessageEventInit :: IO ExtendableMessageEventInit
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-extendablemessageeventinit ExtendableMessageEventInit specification>
+newExtendableMessageEventInit :: (MonadDOM m) => m ExtendableMessageEventInit
+newExtendableMessageEventInit = liftDOM ((js_newExtendableMessageEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: ExtendableMessageEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-data ExtendableMessageEventInit.data specification>
+setData :: (MonadDOM m) => ExtendableMessageEventInit -> JSVal -> m ()
+setData self val = liftDOM (void ((js_setData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: ExtendableMessageEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-data ExtendableMessageEventInit.data specification>
+getData :: (MonadDOM m) => ExtendableMessageEventInit -> m JSVal
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"origin\"] = $2; })"
+        js_setOrigin :: ExtendableMessageEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-origin ExtendableMessageEventInit.origin specification>
+setOrigin :: (MonadDOM m, ToJSString val) => ExtendableMessageEventInit -> val -> m ()
+setOrigin self val = liftDOM (void ((js_setOrigin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: ExtendableMessageEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-origin ExtendableMessageEventInit.origin specification>
+getOrigin :: (MonadDOM m, FromJSString result) => ExtendableMessageEventInit -> m (Maybe result)
+getOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOrigin (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-origin ExtendableMessageEventInit.origin specification>
+getOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ExtendableMessageEventInit -> m result
+getOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-origin ExtendableMessageEventInit.origin specification>
+getOriginUnchecked :: (MonadDOM m, FromJSString result) => ExtendableMessageEventInit -> m result
+getOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lastEventId\"] = $2; })"
+        js_setLastEventId :: ExtendableMessageEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-lasteventid ExtendableMessageEventInit.lastEventId specification>
+setLastEventId :: (MonadDOM m, ToJSString val) => ExtendableMessageEventInit -> val -> m ()
+setLastEventId self val = liftDOM (void ((js_setLastEventId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lastEventId\"]; })"
+        js_getLastEventId :: ExtendableMessageEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-lasteventid ExtendableMessageEventInit.lastEventId specification>
+getLastEventId :: (MonadDOM m, FromJSString result) => ExtendableMessageEventInit -> m (Maybe result)
+getLastEventId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLastEventId (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-lasteventid ExtendableMessageEventInit.lastEventId specification>
+getLastEventIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ExtendableMessageEventInit -> m result
+getLastEventIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLastEventId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-lasteventid ExtendableMessageEventInit.lastEventId specification>
+getLastEventIdUnchecked :: (MonadDOM m, FromJSString result) => ExtendableMessageEventInit -> m result
+getLastEventIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getLastEventId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: ExtendableMessageEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-source ExtendableMessageEventInit.source specification>
+setSource :: (MonadDOM m, IsClientOrServiceWorkerOrMessagePort val) => ExtendableMessageEventInit -> Maybe val -> m ()
+setSource self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSource (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: ExtendableMessageEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-source ExtendableMessageEventInit.source specification>
+getSource :: (MonadDOM m) => ExtendableMessageEventInit -> m (Maybe ClientOrServiceWorkerOrMessagePort)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-source ExtendableMessageEventInit.source specification>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ExtendableMessageEventInit -> m ClientOrServiceWorkerOrMessagePort
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-source ExtendableMessageEventInit.source specification>
+getSourceUnchecked :: (MonadDOM m) => ExtendableMessageEventInit -> m ClientOrServiceWorkerOrMessagePort
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ports\"] = $2; })"
+        js_setPorts :: ExtendableMessageEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-ports ExtendableMessageEventInit.ports specification>
+setPorts :: (MonadDOM m) => ExtendableMessageEventInit -> [MessagePort] -> m ()
+setPorts self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPorts (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ports\"]; })"
+        js_getPorts :: ExtendableMessageEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-ports ExtendableMessageEventInit.ports specification>
+getPorts :: (MonadDOM m) => ExtendableMessageEventInit -> m (Maybe [MessagePort])
+getPorts self = liftDOM (((js_getPorts (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-ports ExtendableMessageEventInit.ports specification>
+getPortsUnsafe :: (MonadDOM m, HasCallStack) => ExtendableMessageEventInit -> m [MessagePort]
+getPortsUnsafe self = liftDOM ((((js_getPorts (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-ports ExtendableMessageEventInit.ports specification>
+getPortsUnchecked :: (MonadDOM m) => ExtendableMessageEventInit -> m [MessagePort]
+getPortsUnchecked self = liftDOM (((js_getPorts (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/External.hs b/src/GHCJS/DOM/JSFFI/Generated/External.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/External.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.External
+       (js_addSearchProvider, js_isSearchProviderInstalled, addSearchProvider, isSearchProviderInstalled, External(..), gTypeExternal)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"AddSearchProvider\"](); })"
+        js_addSearchProvider :: External -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-external-addsearchprovider External.AddSearchProvider specification>
+addSearchProvider :: (MonadDOM m) => External -> m ()
+addSearchProvider self = liftDOM (void ((js_addSearchProvider (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"IsSearchProviderInstalled\"](); })"
+        js_isSearchProviderInstalled :: External -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-external-issearchproviderinstalled External.IsSearchProviderInstalled specification>
+isSearchProviderInstalled :: (MonadDOM m) => External -> m ()
+isSearchProviderInstalled self = liftDOM (void ((js_isSearchProviderInstalled (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FederatedCredentialInit.hs b/src/GHCJS/DOM/JSFFI/Generated/FederatedCredentialInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FederatedCredentialInit.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FederatedCredentialInit
+       (js_newFederatedCredentialInit, js_setName, js_getName, js_setIconURL, js_getIconURL, js_setOrigin, js_getOrigin, js_setProvider, js_getProvider, js_setProtocol, js_getProtocol, newFederatedCredentialInit, setName, getName, getNameUnsafe, getNameUnchecked, setIconURL, getIconURL, getIconURLUnsafe, getIconURLUnchecked, setOrigin, getOrigin, setProvider, getProvider, setProtocol, getProtocol, getProtocolUnsafe, getProtocolUnchecked, FederatedCredentialInit(..), gTypeFederatedCredentialInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"id\": $1, \"origin\": $2, \"provider\": $3}); })"
+        js_newFederatedCredentialInit :: JSString -> JSString -> JSString -> IO FederatedCredentialInit
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-federatedcredentialinit FederatedCredentialInit specification>
+newFederatedCredentialInit :: (MonadDOM m, ToJSString id, ToJSString origin, ToJSString provider) => id -> origin -> provider -> m FederatedCredentialInit
+newFederatedCredentialInit id origin provider = liftDOM ((js_newFederatedCredentialInit (toJSString id) (toJSString origin) (toJSString provider)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: FederatedCredentialInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-name FederatedCredentialInit.name specification>
+setName :: (MonadDOM m, ToJSString val) => FederatedCredentialInit -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: FederatedCredentialInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-name FederatedCredentialInit.name specification>
+getName :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName (self))))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-name FederatedCredentialInit.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FederatedCredentialInit -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-name FederatedCredentialInit.name specification>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iconURL\"] = $2; })"
+        js_setIconURL :: FederatedCredentialInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-iconurl FederatedCredentialInit.iconURL specification>
+setIconURL :: (MonadDOM m, ToJSString val) => FederatedCredentialInit -> val -> m ()
+setIconURL self val = liftDOM (void ((js_setIconURL (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iconURL\"]; })"
+        js_getIconURL :: FederatedCredentialInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-iconurl FederatedCredentialInit.iconURL specification>
+getIconURL :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m (Maybe result)
+getIconURL self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getIconURL (self))))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-iconurl FederatedCredentialInit.iconURL specification>
+getIconURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FederatedCredentialInit -> m result
+getIconURLUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getIconURL (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-iconurl FederatedCredentialInit.iconURL specification>
+getIconURLUnchecked :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m result
+getIconURLUnchecked self = liftDOM ((pFromJSVal <$> (js_getIconURL (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"origin\"] = $2; })"
+        js_setOrigin :: FederatedCredentialInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-origin FederatedCredentialInit.origin specification>
+setOrigin :: (MonadDOM m, ToJSString val) => FederatedCredentialInit -> val -> m ()
+setOrigin self val = liftDOM (void ((js_setOrigin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: FederatedCredentialInit -> IO JSString
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-origin FederatedCredentialInit.origin specification>
+getOrigin :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"provider\"] = $2; })"
+        js_setProvider :: FederatedCredentialInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-provider FederatedCredentialInit.provider specification>
+setProvider :: (MonadDOM m, ToJSString val) => FederatedCredentialInit -> val -> m ()
+setProvider self val = liftDOM (void ((js_setProvider (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"provider\"]; })"
+        js_getProvider :: FederatedCredentialInit -> IO JSString
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-provider FederatedCredentialInit.provider specification>
+getProvider :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m result
+getProvider self = liftDOM ((fromJSString <$> (js_getProvider (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: FederatedCredentialInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-protocol FederatedCredentialInit.protocol specification>
+setProtocol :: (MonadDOM m, ToJSString val) => FederatedCredentialInit -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: FederatedCredentialInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-protocol FederatedCredentialInit.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m (Maybe result)
+getProtocol self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getProtocol (self))))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-protocol FederatedCredentialInit.protocol specification>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FederatedCredentialInit -> m result
+getProtocolUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getProtocol (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-protocol FederatedCredentialInit.protocol specification>
+getProtocolUnchecked :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m result
+getProtocolUnchecked self = liftDOM ((pFromJSVal <$> (js_getProtocol (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FederatedCredentialRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FederatedCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FederatedCredentialRequestOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FederatedCredentialRequestOptions
+       (js_newFederatedCredentialRequestOptions, js_setProviders, js_getProviders, js_setProtocols, js_getProtocols, newFederatedCredentialRequestOptions, setProviders, getProviders, getProvidersUnsafe, getProvidersUnchecked, setProtocols, getProtocols, getProtocolsUnsafe, getProtocolsUnchecked, FederatedCredentialRequestOptions(..), gTypeFederatedCredentialRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFederatedCredentialRequestOptions :: IO FederatedCredentialRequestOptions
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-federatedcredentialrequestoptions FederatedCredentialRequestOptions specification>
+newFederatedCredentialRequestOptions :: (MonadDOM m) => m FederatedCredentialRequestOptions
+newFederatedCredentialRequestOptions = liftDOM ((js_newFederatedCredentialRequestOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"providers\"] = $2; })"
+        js_setProviders :: FederatedCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-providers FederatedCredentialRequestOptions.providers specification>
+setProviders :: (MonadDOM m, ToJSString val) => FederatedCredentialRequestOptions -> [val] -> m ()
+setProviders self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setProviders (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"providers\"]; })"
+        js_getProviders :: FederatedCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-providers FederatedCredentialRequestOptions.providers specification>
+getProviders :: (MonadDOM m, FromJSString result) => FederatedCredentialRequestOptions -> m (Maybe [result])
+getProviders self = liftDOM (((js_getProviders (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-providers FederatedCredentialRequestOptions.providers specification>
+getProvidersUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FederatedCredentialRequestOptions -> m [result]
+getProvidersUnsafe self = liftDOM ((((js_getProviders (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-providers FederatedCredentialRequestOptions.providers specification>
+getProvidersUnchecked :: (MonadDOM m, FromJSString result) => FederatedCredentialRequestOptions -> m [result]
+getProvidersUnchecked self = liftDOM (((js_getProviders (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocols\"] = $2; })"
+        js_setProtocols :: FederatedCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-protocols FederatedCredentialRequestOptions.protocols specification>
+setProtocols :: (MonadDOM m, ToJSString val) => FederatedCredentialRequestOptions -> [val] -> m ()
+setProtocols self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setProtocols (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocols\"]; })"
+        js_getProtocols :: FederatedCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-protocols FederatedCredentialRequestOptions.protocols specification>
+getProtocols :: (MonadDOM m, FromJSString result) => FederatedCredentialRequestOptions -> m (Maybe [result])
+getProtocols self = liftDOM (((js_getProtocols (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-protocols FederatedCredentialRequestOptions.protocols specification>
+getProtocolsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FederatedCredentialRequestOptions -> m [result]
+getProtocolsUnsafe self = liftDOM ((((js_getProtocols (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialrequestoptions-protocols FederatedCredentialRequestOptions.protocols specification>
+getProtocolsUnchecked :: (MonadDOM m, FromJSString result) => FederatedCredentialRequestOptions -> m [result]
+getProtocolsUnchecked self = liftDOM (((js_getProtocols (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FetchEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/FetchEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FetchEvent.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FetchEvent
+       (js_newFetchEvent, js_respondWith, js_getRequest, js_getPreloadResponse, js_getClientId, js_getResultingClientId, js_getHandled, newFetchEvent, respondWith, getRequest, getPreloadResponse, getClientId, getResultingClientId, getHandled, FetchEvent(..), gTypeFetchEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"FetchEvent\"]($1, $2); })"
+        js_newFetchEvent :: JSString -> FetchEventInit -> IO FetchEvent
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/FetchEvent MDN FetchEvent. documentation>
+newFetchEvent :: (MonadDOM m, ToJSString type') => type' -> FetchEventInit -> m FetchEvent
+newFetchEvent type' eventInitDict = liftDOM ((js_newFetchEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"respondWith\"]($2); })"
+        js_respondWith :: FetchEvent -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/respondWith MDN FetchEvent.respondWith documentation>
+respondWith :: (MonadDOM m) => FetchEvent -> JSVal -> m ()
+respondWith self r = liftDOM (void (((toJSVal r) >>= \a2' -> js_respondWith (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"request\"]; })"
+        js_getRequest :: FetchEvent -> IO Request
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/request MDN FetchEvent.request documentation>
+getRequest :: (MonadDOM m) => FetchEvent -> m Request
+getRequest self = liftDOM ((js_getRequest (self)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"preloadResponse\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getPreloadResponse :: FetchEvent -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/preloadResponse MDN FetchEvent.preloadResponse documentation>
+getPreloadResponse :: (MonadDOM m) => FetchEvent -> m JSVal
+getPreloadResponse self = liftDOM (((js_getPreloadResponse (self)) >>= checkPromiseResult))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientId\"]; })"
+        js_getClientId :: FetchEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/clientId MDN FetchEvent.clientId documentation>
+getClientId :: (MonadDOM m, FromJSString result) => FetchEvent -> m result
+getClientId self = liftDOM ((fromJSString <$> (js_getClientId (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resultingClientId\"]; })"
+        js_getResultingClientId :: FetchEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/resultingClientId MDN FetchEvent.resultingClientId documentation>
+getResultingClientId :: (MonadDOM m, FromJSString result) => FetchEvent -> m result
+getResultingClientId self = liftDOM ((fromJSString <$> (js_getResultingClientId (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"handled\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getHandled :: FetchEvent -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/handled MDN FetchEvent.handled documentation>
+getHandled :: (MonadDOM m) => FetchEvent -> m ()
+getHandled self = liftDOM (void (((js_getHandled (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FetchEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/FetchEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FetchEventInit.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FetchEventInit
+       (js_newFetchEventInit, js_setRequest, js_getRequest, js_setPreloadResponse, js_getPreloadResponse, js_setClientId, js_getClientId, js_setResultingClientId, js_getResultingClientId, js_setReplacesClientId, js_getReplacesClientId, js_setHandled, js_getHandled, newFetchEventInit, setRequest, getRequest, setPreloadResponse, getPreloadResponse, getPreloadResponseUnsafe, getPreloadResponseUnchecked, setClientId, getClientId, getClientIdUnsafe, getClientIdUnchecked, setResultingClientId, getResultingClientId, getResultingClientIdUnsafe, getResultingClientIdUnchecked, setReplacesClientId, getReplacesClientId, getReplacesClientIdUnsafe, getReplacesClientIdUnchecked, setHandled, getHandled, getHandledUnsafe, getHandledUnchecked, FetchEventInit(..), gTypeFetchEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"request\": $1}); })"
+        js_newFetchEventInit :: Request -> IO FetchEventInit
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-fetcheventinit FetchEventInit specification>
+newFetchEventInit :: (MonadDOM m) => Request -> m FetchEventInit
+newFetchEventInit request = liftDOM ((js_newFetchEventInit (request)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"request\"] = $2; })"
+        js_setRequest :: FetchEventInit -> Request -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-request FetchEventInit.request specification>
+setRequest :: (MonadDOM m) => FetchEventInit -> Request -> m ()
+setRequest self val = liftDOM (void ((js_setRequest (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"request\"]; })"
+        js_getRequest :: FetchEventInit -> IO Request
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-request FetchEventInit.request specification>
+getRequest :: (MonadDOM m) => FetchEventInit -> m Request
+getRequest self = liftDOM ((js_getRequest (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preloadResponse\"] = $2; })"
+        js_setPreloadResponse :: FetchEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-preloadresponse FetchEventInit.preloadResponse specification>
+setPreloadResponse :: (MonadDOM m) => FetchEventInit -> JSVal -> m ()
+setPreloadResponse self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPreloadResponse (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preloadResponse\"]; })"
+        js_getPreloadResponse :: FetchEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-preloadresponse FetchEventInit.preloadResponse specification>
+getPreloadResponse :: (MonadDOM m) => FetchEventInit -> m (Maybe JSVal)
+getPreloadResponse self = liftDOM (((js_getPreloadResponse (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-preloadresponse FetchEventInit.preloadResponse specification>
+getPreloadResponseUnsafe :: (MonadDOM m, HasCallStack) => FetchEventInit -> m JSVal
+getPreloadResponseUnsafe self = liftDOM ((((js_getPreloadResponse (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-preloadresponse FetchEventInit.preloadResponse specification>
+getPreloadResponseUnchecked :: (MonadDOM m) => FetchEventInit -> m JSVal
+getPreloadResponseUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreloadResponse (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clientId\"] = $2; })"
+        js_setClientId :: FetchEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-clientid FetchEventInit.clientId specification>
+setClientId :: (MonadDOM m, ToJSString val) => FetchEventInit -> val -> m ()
+setClientId self val = liftDOM (void ((js_setClientId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientId\"]; })"
+        js_getClientId :: FetchEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-clientid FetchEventInit.clientId specification>
+getClientId :: (MonadDOM m, FromJSString result) => FetchEventInit -> m (Maybe result)
+getClientId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getClientId (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-clientid FetchEventInit.clientId specification>
+getClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FetchEventInit -> m result
+getClientIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getClientId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-clientid FetchEventInit.clientId specification>
+getClientIdUnchecked :: (MonadDOM m, FromJSString result) => FetchEventInit -> m result
+getClientIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getClientId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resultingClientId\"] = $2; })"
+        js_setResultingClientId :: FetchEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-resultingclientid FetchEventInit.resultingClientId specification>
+setResultingClientId :: (MonadDOM m, ToJSString val) => FetchEventInit -> val -> m ()
+setResultingClientId self val = liftDOM (void ((js_setResultingClientId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resultingClientId\"]; })"
+        js_getResultingClientId :: FetchEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-resultingclientid FetchEventInit.resultingClientId specification>
+getResultingClientId :: (MonadDOM m, FromJSString result) => FetchEventInit -> m (Maybe result)
+getResultingClientId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getResultingClientId (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-resultingclientid FetchEventInit.resultingClientId specification>
+getResultingClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FetchEventInit -> m result
+getResultingClientIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getResultingClientId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-resultingclientid FetchEventInit.resultingClientId specification>
+getResultingClientIdUnchecked :: (MonadDOM m, FromJSString result) => FetchEventInit -> m result
+getResultingClientIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getResultingClientId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"replacesClientId\"] = $2; })"
+        js_setReplacesClientId :: FetchEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-replacesclientid FetchEventInit.replacesClientId specification>
+setReplacesClientId :: (MonadDOM m, ToJSString val) => FetchEventInit -> val -> m ()
+setReplacesClientId self val = liftDOM (void ((js_setReplacesClientId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"replacesClientId\"]; })"
+        js_getReplacesClientId :: FetchEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-replacesclientid FetchEventInit.replacesClientId specification>
+getReplacesClientId :: (MonadDOM m, FromJSString result) => FetchEventInit -> m (Maybe result)
+getReplacesClientId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getReplacesClientId (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-replacesclientid FetchEventInit.replacesClientId specification>
+getReplacesClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FetchEventInit -> m result
+getReplacesClientIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getReplacesClientId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-replacesclientid FetchEventInit.replacesClientId specification>
+getReplacesClientIdUnchecked :: (MonadDOM m, FromJSString result) => FetchEventInit -> m result
+getReplacesClientIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getReplacesClientId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"handled\"] = $2; })"
+        js_setHandled :: FetchEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-handled FetchEventInit.handled specification>
+setHandled :: (MonadDOM m) => FetchEventInit -> JSVal -> m ()
+setHandled self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHandled (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"handled\"]; })"
+        js_getHandled :: FetchEventInit -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-handled FetchEventInit.handled specification>
+getHandled :: (MonadDOM m) => FetchEventInit -> m (Maybe ())
+getHandled self = liftDOM (((js_getHandled (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-handled FetchEventInit.handled specification>
+getHandledUnsafe :: (MonadDOM m, HasCallStack) => FetchEventInit -> m ()
+getHandledUnsafe self = liftDOM ((((js_getHandled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-handled FetchEventInit.handled specification>
+getHandledUnchecked :: (MonadDOM m) => FetchEventInit -> m ()
+getHandledUnchecked self = liftDOM ((pFromJSVal <$> (js_getHandled (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/File.hs b/src/GHCJS/DOM/JSFFI/Generated/File.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/File.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/File.hs
@@ -1,55 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.File
-       (js_newFile, newFile, js_getName, getName, js_getLastModified,
-        getLastModified, File(..), gTypeFile)
+       (js_newFile, js_getName, js_getLastModified, js_getWebkitRelativePath, newFile, getName, getLastModified, getWebkitRelativePath, File(..), gTypeFile)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return new window[\"File\"]($1, $2, $3); })"
-        js_newFile ::
-        JSVal -> JSString -> Optional FilePropertyBag -> IO File
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation> 
-newFile ::
-        (MonadIO m, IsBlobPart fileBits, ToJSString fileName) =>
-          [fileBits] -> fileName -> Maybe FilePropertyBag -> m File
-newFile fileBits fileName options
-  = liftIO
-      (toJSVal fileBits >>= \ fileBits' -> js_newFile fileBits'
-         (toJSString fileName)
-         (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        File -> IO JSString
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"File\"]($1, $2, $3); })"
+        js_newFile :: JSVal -> JSString -> JSVal -> IO File
+-- | <https://developer.mozilla.org/docs/Web/API/File/File MDN File. documentation>
+newFile :: (MonadDOM m, IsBlobPart fileBits, ToJSString fileName) => [fileBits] -> fileName -> Maybe FilePropertyBag -> m File
+newFile fileBits fileName options = liftDOM (((toJSVal fileBits) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_newFile a1' (toJSString fileName) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/File.name Mozilla File.name documentation> 
-getName :: (MonadIO m, FromJSString result) => File -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: File -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/File/name MDN File.name documentation>
+getName :: (MonadDOM m, FromJSString result) => File -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"lastModified\"]; })"
-        js_getLastModified :: File -> IO Double
+        js_getLastModified :: File -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/File/lastModified MDN File.lastModified documentation>
+getLastModified :: (MonadDOM m) => File -> m Int53
+getLastModified self = liftDOM (((js_getLastModified (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/File.lastModified Mozilla File.lastModified documentation> 
-getLastModified :: (MonadIO m) => File -> m Int64
-getLastModified self = liftIO (round <$> (js_getLastModified self))
+foreign import javascript unsafe "(($1) => { return $1[\"webkitRelativePath\"]; })"
+        js_getWebkitRelativePath :: File -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/File/webkitRelativePath MDN File.webkitRelativePath documentation>
+getWebkitRelativePath :: (MonadDOM m, FromJSString result) => File -> m result
+getWebkitRelativePath self = liftDOM ((fromJSString <$> (js_getWebkitRelativePath (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/FileCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileCallback
+       (newFileCallback, newFileCallbackSync, newFileCallbackAsync, FileCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newFileCallback :: (MonadDOM m) => (File -> IO ()) -> m FileCallback
+newFileCallback callback = liftDOM ((FileCallback . coerce) <$> syncCallback1 ContinueAsync (\ file -> do
+          file' <- fromJSValUnchecked file
+          callback file'))
+
+newFileCallbackSync :: (MonadDOM m) => (File -> IO ()) -> m FileCallback
+newFileCallbackSync callback = liftDOM ((FileCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ file -> do
+          file' <- fromJSValUnchecked file
+          callback file'))
+
+newFileCallbackAsync :: (MonadDOM m) => (File -> IO ()) -> m FileCallback
+newFileCallbackAsync callback = liftDOM ((FileCallback . coerce) <$> asyncCallback1 (\ file -> do
+          file' <- fromJSValUnchecked file
+          callback file'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileError.hs b/src/GHCJS/DOM/JSFFI/Generated/FileError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/FileError.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.FileError
-       (pattern NOT_FOUND_ERR, pattern SECURITY_ERR, pattern ABORT_ERR,
-        pattern NOT_READABLE_ERR, pattern ENCODING_ERR,
-        pattern NO_MODIFICATION_ALLOWED_ERR, pattern INVALID_STATE_ERR,
-        pattern SYNTAX_ERR, pattern INVALID_MODIFICATION_ERR,
-        pattern QUOTA_EXCEEDED_ERR, pattern TYPE_MISMATCH_ERR,
-        pattern PATH_EXISTS_ERR, js_getCode, getCode, FileError(..),
-        gTypeFileError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern NOT_FOUND_ERR = 1
-pattern SECURITY_ERR = 2
-pattern ABORT_ERR = 3
-pattern NOT_READABLE_ERR = 4
-pattern ENCODING_ERR = 5
-pattern NO_MODIFICATION_ALLOWED_ERR = 6
-pattern INVALID_STATE_ERR = 7
-pattern SYNTAX_ERR = 8
-pattern INVALID_MODIFICATION_ERR = 9
-pattern QUOTA_EXCEEDED_ERR = 10
-pattern TYPE_MISMATCH_ERR = 11
-pattern PATH_EXISTS_ERR = 12
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        FileError -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileError.code Mozilla FileError.code documentation> 
-getCode :: (MonadIO m) => FileError -> m Word
-getCode self = liftIO (js_getCode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileException.hs b/src/GHCJS/DOM/JSFFI/Generated/FileException.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/FileException.hs
+++ /dev/null
@@ -1,80 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.FileException
-       (js_toString, toString, toString_, pattern NOT_FOUND_ERR,
-        pattern SECURITY_ERR, pattern ABORT_ERR, pattern NOT_READABLE_ERR,
-        pattern ENCODING_ERR, pattern NO_MODIFICATION_ALLOWED_ERR,
-        pattern INVALID_STATE_ERR, pattern SYNTAX_ERR,
-        pattern INVALID_MODIFICATION_ERR, pattern QUOTA_EXCEEDED_ERR,
-        pattern TYPE_MISMATCH_ERR, pattern PATH_EXISTS_ERR, js_getCode,
-        getCode, js_getName, getName, js_getMessage, getMessage,
-        FileException(..), gTypeFileException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: FileException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.toString Mozilla FileException.toString documentation> 
-toString ::
-         (MonadIO m, FromJSString result) => FileException -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.toString Mozilla FileException.toString documentation> 
-toString_ :: (MonadIO m) => FileException -> m ()
-toString_ self = liftIO (void (js_toString self))
-pattern NOT_FOUND_ERR = 1
-pattern SECURITY_ERR = 2
-pattern ABORT_ERR = 3
-pattern NOT_READABLE_ERR = 4
-pattern ENCODING_ERR = 5
-pattern NO_MODIFICATION_ALLOWED_ERR = 6
-pattern INVALID_STATE_ERR = 7
-pattern SYNTAX_ERR = 8
-pattern INVALID_MODIFICATION_ERR = 9
-pattern QUOTA_EXCEEDED_ERR = 10
-pattern TYPE_MISMATCH_ERR = 11
-pattern PATH_EXISTS_ERR = 12
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        FileException -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.code Mozilla FileException.code documentation> 
-getCode :: (MonadIO m) => FileException -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        FileException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.name Mozilla FileException.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => FileException -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        FileException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.message Mozilla FileException.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => FileException -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileList.hs b/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
@@ -1,58 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.FileList
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getLength,
-        getLength, FileList(..), gTypeFileList)
+       (js_item, js_getLength, item, item_, itemUnsafe, itemUnchecked, getLength, FileList(..), gTypeFileList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        FileList -> Word -> IO (Nullable File)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
-item :: (MonadIO m) => FileList -> Word -> m (Maybe File)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: FileList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/item MDN FileList.item documentation>
+item :: (MonadDOM m) => FileList -> Word -> m (Maybe File)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
-item_ :: (MonadIO m) => FileList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/item MDN FileList.item documentation>
+item_ :: (MonadDOM m) => FileList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => FileList -> Word -> m File
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/item MDN FileList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => FileList -> Word -> m File
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
-itemUnchecked :: (MonadIO m) => FileList -> Word -> m File
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        FileList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/item MDN FileList.item documentation>
+itemUnchecked :: (MonadDOM m) => FileList -> Word -> m File
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.length Mozilla FileList.length documentation> 
-getLength :: (MonadIO m) => FileList -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: FileList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/length MDN FileList.length documentation>
+getLength :: (MonadDOM m) => FileList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FilePropertyBag.hs b/src/GHCJS/DOM/JSFFI/Generated/FilePropertyBag.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FilePropertyBag.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FilePropertyBag
+       (js_newFilePropertyBag, js_setLastModified, js_getLastModified, newFilePropertyBag, setLastModified, getLastModified, getLastModifiedUnsafe, getLastModifiedUnchecked, FilePropertyBag(..), gTypeFilePropertyBag)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFilePropertyBag :: IO FilePropertyBag
+-- | <https://w3c.github.io/FileAPI/#dfn-FilePropertyBag FilePropertyBag specification>
+newFilePropertyBag :: (MonadDOM m) => m FilePropertyBag
+newFilePropertyBag = liftDOM ((js_newFilePropertyBag))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lastModified\"] = $2; })"
+        js_setLastModified :: FilePropertyBag -> JSVal -> IO ()
+-- | <https://w3c.github.io/FileAPI/#dfn-FPdate FilePropertyBag.lastModified specification>
+setLastModified :: (MonadDOM m) => FilePropertyBag -> Int53 -> m ()
+setLastModified self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLastModified (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lastModified\"]; })"
+        js_getLastModified :: FilePropertyBag -> IO JSVal
+-- | <https://w3c.github.io/FileAPI/#dfn-FPdate FilePropertyBag.lastModified specification>
+getLastModified :: (MonadDOM m) => FilePropertyBag -> m (Maybe Int53)
+getLastModified self = liftDOM (((js_getLastModified (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-FPdate FilePropertyBag.lastModified specification>
+getLastModifiedUnsafe :: (MonadDOM m, HasCallStack) => FilePropertyBag -> m Int53
+getLastModifiedUnsafe self = liftDOM ((((js_getLastModified (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-FPdate FilePropertyBag.lastModified specification>
+getLastModifiedUnchecked :: (MonadDOM m) => FilePropertyBag -> m Int53
+getLastModifiedUnchecked self = liftDOM ((pFromJSVal <$> (js_getLastModified (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs b/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
@@ -1,153 +1,117 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.FileReader
-       (js_newFileReader, newFileReader, js_readAsArrayBuffer,
-        readAsArrayBuffer, js_readAsBinaryString, readAsBinaryString,
-        js_readAsText, readAsText, js_readAsDataURL, readAsDataURL,
-        js_abort, abort, pattern EMPTY, pattern LOADING, pattern DONE,
-        js_getReadyState, getReadyState, js_getResult, getResult,
-        getResultUnsafe, getResultUnchecked, js_getError, getError,
-        loadStart, progress, load, abortEvent, error, loadEnd,
-        FileReader(..), gTypeFileReader)
+       (js_newFileReader, js_abort, js_readAsArrayBuffer, js_readAsBinaryString, js_readAsDataURL, js_readAsText, js_getReadyState, js_getResult, js_getError, newFileReader, abort, readAsArrayBuffer, readAsBinaryString, readAsDataURL, readAsText, getReadyState, getResult, getResultUnsafe, getResultUnchecked, getError, getErrorUnsafe, getErrorUnchecked, pattern EMPTY, pattern LOADING, pattern DONE, loadStart, progress, load, abortEvent, error, loadEnd, FileReader(..), gTypeFileReader)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"FileReader\"](); })"
+
+foreign import javascript safe "(() => { return new globalThis[\"FileReader\"](); })"
         js_newFileReader :: IO FileReader
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/FileReader MDN FileReader. documentation>
+newFileReader :: (MonadDOM m) => m FileReader
+newFileReader = liftDOM ((js_newFileReader))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation> 
-newFileReader :: (MonadIO m) => m FileReader
-newFileReader = liftIO (js_newFileReader)
- 
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })"
+        js_abort :: FileReader -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/abort MDN FileReader.abort documentation>
+abort :: (MonadDOM m) => FileReader -> m ()
+abort self = liftDOM (void ((js_abort (self))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"readAsArrayBuffer\"]($2); })"
-        js_readAsArrayBuffer :: FileReader -> Optional Blob -> IO ()
+        js_readAsArrayBuffer :: FileReader -> Blob -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/readAsArrayBuffer MDN FileReader.readAsArrayBuffer documentation>
+readAsArrayBuffer :: (MonadDOM m, IsBlob blob) => FileReader -> blob -> m ()
+readAsArrayBuffer self blob = liftDOM (void ((js_readAsArrayBuffer (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsArrayBuffer Mozilla FileReader.readAsArrayBuffer documentation> 
-readAsArrayBuffer ::
-                  (MonadIO m, IsBlob blob) => FileReader -> Maybe blob -> m ()
-readAsArrayBuffer self blob
-  = liftIO
-      (js_readAsArrayBuffer self (maybeToOptional (fmap toBlob blob)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"readAsBinaryString\"]($2); })"
-        js_readAsBinaryString :: FileReader -> Optional Blob -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsBinaryString Mozilla FileReader.readAsBinaryString documentation> 
-readAsBinaryString ::
-                   (MonadIO m, IsBlob blob) => FileReader -> Maybe blob -> m ()
-readAsBinaryString self blob
-  = liftIO
-      (js_readAsBinaryString self (maybeToOptional (fmap toBlob blob)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"readAsText\"]($2, $3); })"
-        js_readAsText ::
-        FileReader -> Optional Blob -> Optional JSString -> IO ()
+        js_readAsBinaryString :: FileReader -> Blob -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/readAsBinaryString MDN FileReader.readAsBinaryString documentation>
+readAsBinaryString :: (MonadDOM m, IsBlob blob) => FileReader -> blob -> m ()
+readAsBinaryString self blob = liftDOM (void ((js_readAsBinaryString (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsText Mozilla FileReader.readAsText documentation> 
-readAsText ::
-           (MonadIO m, IsBlob blob, ToJSString encoding) =>
-             FileReader -> Maybe blob -> Maybe encoding -> m ()
-readAsText self blob encoding
-  = liftIO
-      (js_readAsText self (maybeToOptional (fmap toBlob blob))
-         (toOptionalJSString encoding))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"readAsDataURL\"]($2); })"
-        js_readAsDataURL :: FileReader -> Optional Blob -> IO ()
+        js_readAsDataURL :: FileReader -> Blob -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/readAsDataURL MDN FileReader.readAsDataURL documentation>
+readAsDataURL :: (MonadDOM m, IsBlob blob) => FileReader -> blob -> m ()
+readAsDataURL self blob = liftDOM (void ((js_readAsDataURL (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL Mozilla FileReader.readAsDataURL documentation> 
-readAsDataURL ::
-              (MonadIO m, IsBlob blob) => FileReader -> Maybe blob -> m ()
-readAsDataURL self blob
-  = liftIO
-      (js_readAsDataURL self (maybeToOptional (fmap toBlob blob)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"abort\"](); })" js_abort ::
-        FileReader -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"readAsText\"]($2, $3); })"
+        js_readAsText :: FileReader -> Blob -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/readAsText MDN FileReader.readAsText documentation>
+readAsText :: (MonadDOM m, IsBlob blob, ToJSString encoding) => FileReader -> blob -> Maybe encoding -> m ()
+readAsText self blob encoding = liftDOM (void ((js_readAsText (self) (Types.toBlob blob) (toOptionalJSString encoding))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.abort Mozilla FileReader.abort documentation> 
-abort :: (MonadIO m) => FileReader -> m ()
-abort self = liftIO (js_abort self)
-pattern EMPTY = 0
-pattern LOADING = 1
-pattern DONE = 2
- 
 foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
         js_getReadyState :: FileReader -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/readyState MDN FileReader.readyState documentation>
+getReadyState :: (MonadDOM m) => FileReader -> m Word
+getReadyState self = liftDOM ((js_getReadyState (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readyState Mozilla FileReader.readyState documentation> 
-getReadyState :: (MonadIO m) => FileReader -> m Word
-getReadyState self = liftIO (js_getReadyState self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"result\"]; })" js_getResult ::
-        FileReader -> IO (Nullable StringOrArrayBuffer)
+foreign import javascript unsafe "(($1) => { return $1[\"result\"]; })"
+        js_getResult :: FileReader -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/result MDN FileReader.result documentation>
+getResult :: (MonadDOM m) => FileReader -> m (Maybe StringOrArrayBuffer)
+getResult self = liftDOM (((js_getResult (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
-getResult ::
-          (MonadIO m) => FileReader -> m (Maybe StringOrArrayBuffer)
-getResult self = liftIO (nullableToMaybe <$> (js_getResult self))
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/result MDN FileReader.result documentation>
+getResultUnsafe :: (MonadDOM m, HasCallStack) => FileReader -> m StringOrArrayBuffer
+getResultUnsafe self = liftDOM ((((js_getResult (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
-getResultUnsafe ::
-                (MonadIO m, HasCallStack) => FileReader -> m StringOrArrayBuffer
-getResultUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getResult self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/result MDN FileReader.result documentation>
+getResultUnchecked :: (MonadDOM m) => FileReader -> m StringOrArrayBuffer
+getResultUnchecked self = liftDOM ((pFromJSVal <$> (js_getResult (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
-getResultUnchecked ::
-                   (MonadIO m) => FileReader -> m StringOrArrayBuffer
-getResultUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getResult self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        FileReader -> IO FileError
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: FileReader -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/error MDN FileReader.error documentation>
+getError :: (MonadDOM m) => FileReader -> m (Maybe DOMException)
+getError self = liftDOM (((js_getError (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
-getError :: (MonadIO m) => FileReader -> m FileError
-getError self = liftIO (js_getError self)
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/error MDN FileReader.error documentation>
+getErrorUnsafe :: (MonadDOM m, HasCallStack) => FileReader -> m DOMException
+getErrorUnsafe self = liftDOM ((((js_getError (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadstart Mozilla FileReader.onloadstart documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/error MDN FileReader.error documentation>
+getErrorUnchecked :: (MonadDOM m) => FileReader -> m DOMException
+getErrorUnchecked self = liftDOM ((pFromJSVal <$> (js_getError (self))))
+
+pattern EMPTY = 0
+
+pattern LOADING = 1
+
+pattern DONE = 2
+
+-- | <https://w3c.github.io/FileAPI/#dfn-onloadstart loadstart event>
 loadStart :: EventName FileReader ProgressEvent
 loadStart = unsafeEventNameAsync (toJSString "loadstart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onprogress Mozilla FileReader.onprogress documentation> 
+-- | <https://w3c.github.io/FileAPI/#dfn-onprogress progress event>
 progress :: EventName FileReader ProgressEvent
 progress = unsafeEventNameAsync (toJSString "progress")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onload Mozilla FileReader.onload documentation> 
-load :: EventName FileReader UIEvent
+-- | <https://w3c.github.io/FileAPI/#dfn-onload load event>
+load :: EventName FileReader ProgressEvent
 load = unsafeEventNameAsync (toJSString "load")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onabort Mozilla FileReader.onabort documentation> 
-abortEvent :: EventName FileReader UIEvent
+-- | <https://w3c.github.io/FileAPI/#dfn-onabort abort event>
+abortEvent :: EventName FileReader ProgressEvent
 abortEvent = unsafeEventNameAsync (toJSString "abort")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onerror Mozilla FileReader.onerror documentation> 
-error :: EventName FileReader UIEvent
+-- | <https://w3c.github.io/FileAPI/#dfn-onerror error event>
+error :: EventName FileReader ProgressEvent
 error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadend Mozilla FileReader.onloadend documentation> 
+-- | <https://w3c.github.io/FileAPI/#dfn-onloadend loadend event>
 loadEnd :: EventName FileReader ProgressEvent
 loadEnd = unsafeEventNameAsync (toJSString "loadend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs b/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
@@ -1,108 +1,63 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.FileReaderSync
-       (js_newFileReaderSync, newFileReaderSync, js_readAsArrayBuffer,
-        readAsArrayBuffer, readAsArrayBuffer_, js_readAsBinaryString,
-        readAsBinaryString, readAsBinaryString_, js_readAsText, readAsText,
-        readAsText_, js_readAsDataURL, readAsDataURL, readAsDataURL_,
-        FileReaderSync(..), gTypeFileReaderSync)
+       (js_newFileReaderSync, js_readAsArrayBuffer, js_readAsBinaryString, js_readAsDataURL, js_readAsText, newFileReaderSync, readAsArrayBuffer, readAsArrayBuffer_, readAsBinaryString, readAsBinaryString_, readAsDataURL, readAsDataURL_, readAsText, readAsText_, FileReaderSync(..), gTypeFileReaderSync)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"FileReaderSync\"](); })"
+
+foreign import javascript safe "(() => { return new globalThis[\"FileReaderSync\"](); })"
         js_newFileReaderSync :: IO FileReaderSync
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/FileReaderSync MDN FileReaderSync. documentation>
+newFileReaderSync :: (MonadDOM m) => m FileReaderSync
+newFileReaderSync = liftDOM ((js_newFileReaderSync))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation> 
-newFileReaderSync :: (MonadIO m) => m FileReaderSync
-newFileReaderSync = liftIO (js_newFileReaderSync)
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"readAsArrayBuffer\"]($2); })"
         js_readAsArrayBuffer :: FileReaderSync -> Blob -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsArrayBuffer MDN FileReaderSync.readAsArrayBuffer documentation>
+readAsArrayBuffer :: (MonadDOM m, IsBlob blob) => FileReaderSync -> blob -> m ArrayBuffer
+readAsArrayBuffer self blob = liftDOM ((js_readAsArrayBuffer (self) (Types.toBlob blob)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
-readAsArrayBuffer ::
-                  (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ArrayBuffer
-readAsArrayBuffer self blob
-  = liftIO (js_readAsArrayBuffer self (toBlob blob))
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsArrayBuffer MDN FileReaderSync.readAsArrayBuffer documentation>
+readAsArrayBuffer_ :: (MonadDOM m, IsBlob blob) => FileReaderSync -> blob -> m ()
+readAsArrayBuffer_ self blob = liftDOM (void ((js_readAsArrayBuffer (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
-readAsArrayBuffer_ ::
-                   (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ()
-readAsArrayBuffer_ self blob
-  = liftIO (void (js_readAsArrayBuffer self (toBlob blob)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"readAsBinaryString\"]($2); })"
         js_readAsBinaryString :: FileReaderSync -> Blob -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
-readAsBinaryString ::
-                   (MonadIO m, IsBlob blob, FromJSString result) =>
-                     FileReaderSync -> blob -> m result
-readAsBinaryString self blob
-  = liftIO
-      (fromJSString <$> (js_readAsBinaryString self (toBlob blob)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
-readAsBinaryString_ ::
-                    (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ()
-readAsBinaryString_ self blob
-  = liftIO (void (js_readAsBinaryString self (toBlob blob)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"readAsText\"]($2, $3); })"
-        js_readAsText ::
-        FileReaderSync -> Blob -> Optional JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsBinaryString MDN FileReaderSync.readAsBinaryString documentation>
+readAsBinaryString :: (MonadDOM m, IsBlob blob, FromJSString result) => FileReaderSync -> blob -> m result
+readAsBinaryString self blob = liftDOM ((fromJSString <$> (js_readAsBinaryString (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsText Mozilla FileReaderSync.readAsText documentation> 
-readAsText ::
-           (MonadIO m, IsBlob blob, ToJSString encoding,
-            FromJSString result) =>
-             FileReaderSync -> blob -> Maybe encoding -> m result
-readAsText self blob encoding
-  = liftIO
-      (fromJSString <$>
-         (js_readAsText self (toBlob blob) (toOptionalJSString encoding)))
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsBinaryString MDN FileReaderSync.readAsBinaryString documentation>
+readAsBinaryString_ :: (MonadDOM m, IsBlob blob) => FileReaderSync -> blob -> m ()
+readAsBinaryString_ self blob = liftDOM (void ((js_readAsBinaryString (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsText Mozilla FileReaderSync.readAsText documentation> 
-readAsText_ ::
-            (MonadIO m, IsBlob blob, ToJSString encoding) =>
-              FileReaderSync -> blob -> Maybe encoding -> m ()
-readAsText_ self blob encoding
-  = liftIO
-      (void
-         (js_readAsText self (toBlob blob) (toOptionalJSString encoding)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"readAsDataURL\"]($2); })"
         js_readAsDataURL :: FileReaderSync -> Blob -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsDataURL MDN FileReaderSync.readAsDataURL documentation>
+readAsDataURL :: (MonadDOM m, IsBlob blob, FromJSString result) => FileReaderSync -> blob -> m result
+readAsDataURL self blob = liftDOM ((fromJSString <$> (js_readAsDataURL (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
-readAsDataURL ::
-              (MonadIO m, IsBlob blob, FromJSString result) =>
-                FileReaderSync -> blob -> m result
-readAsDataURL self blob
-  = liftIO (fromJSString <$> (js_readAsDataURL self (toBlob blob)))
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsDataURL MDN FileReaderSync.readAsDataURL documentation>
+readAsDataURL_ :: (MonadDOM m, IsBlob blob) => FileReaderSync -> blob -> m ()
+readAsDataURL_ self blob = liftDOM (void ((js_readAsDataURL (self) (Types.toBlob blob))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
-readAsDataURL_ ::
-               (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ()
-readAsDataURL_ self blob
-  = liftIO (void (js_readAsDataURL self (toBlob blob)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"readAsText\"]($2, $3); })"
+        js_readAsText :: FileReaderSync -> Blob -> (Optional JSString) -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsText MDN FileReaderSync.readAsText documentation>
+readAsText :: (MonadDOM m, IsBlob blob, ToJSString encoding, FromJSString result) => FileReaderSync -> blob -> Maybe encoding -> m result
+readAsText self blob encoding = liftDOM ((fromJSString <$> (js_readAsText (self) (Types.toBlob blob) (toOptionalJSString encoding))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/readAsText MDN FileReaderSync.readAsText documentation>
+readAsText_ :: (MonadDOM m, IsBlob blob, ToJSString encoding) => FileReaderSync -> blob -> Maybe encoding -> m ()
+readAsText_ self blob encoding = liftDOM (void ((js_readAsText (self) (Types.toBlob blob) (toOptionalJSString encoding))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystem.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystem.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystem.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystem
+       (js_getName, js_getRoot, getName, getRoot, FileSystem(..), gTypeFileSystem)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: FileSystem -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystem/name MDN FileSystem.name documentation>
+getName :: (MonadDOM m, FromJSString result) => FileSystem -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })"
+        js_getRoot :: FileSystem -> IO FileSystemDirectoryEntry
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystem/root MDN FileSystem.root documentation>
+getRoot :: (MonadDOM m) => FileSystem -> m FileSystemDirectoryEntry
+getRoot self = liftDOM ((js_getRoot (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemCreateWritableOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemCreateWritableOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemCreateWritableOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemCreateWritableOptions
+       (js_newFileSystemCreateWritableOptions, js_setKeepExistingData, js_getKeepExistingData, newFileSystemCreateWritableOptions, setKeepExistingData, getKeepExistingData, getKeepExistingDataUnsafe, getKeepExistingDataUnchecked, FileSystemCreateWritableOptions(..), gTypeFileSystemCreateWritableOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFileSystemCreateWritableOptions :: IO FileSystemCreateWritableOptions
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemcreatewritableoptions FileSystemCreateWritableOptions specification>
+newFileSystemCreateWritableOptions :: (MonadDOM m) => m FileSystemCreateWritableOptions
+newFileSystemCreateWritableOptions = liftDOM ((js_newFileSystemCreateWritableOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keepExistingData\"] = $2; })"
+        js_setKeepExistingData :: FileSystemCreateWritableOptions -> Bool -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-filesystemcreatewritableoptions-keepexistingdata FileSystemCreateWritableOptions.keepExistingData specification>
+setKeepExistingData :: (MonadDOM m) => FileSystemCreateWritableOptions -> Bool -> m ()
+setKeepExistingData self val = liftDOM (void ((js_setKeepExistingData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keepExistingData\"]; })"
+        js_getKeepExistingData :: FileSystemCreateWritableOptions -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-filesystemcreatewritableoptions-keepexistingdata FileSystemCreateWritableOptions.keepExistingData specification>
+getKeepExistingData :: (MonadDOM m) => FileSystemCreateWritableOptions -> m (Maybe Bool)
+getKeepExistingData self = liftDOM (((js_getKeepExistingData (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemcreatewritableoptions-keepexistingdata FileSystemCreateWritableOptions.keepExistingData specification>
+getKeepExistingDataUnsafe :: (MonadDOM m, HasCallStack) => FileSystemCreateWritableOptions -> m Bool
+getKeepExistingDataUnsafe self = liftDOM ((((js_getKeepExistingData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemcreatewritableoptions-keepexistingdata FileSystemCreateWritableOptions.keepExistingData specification>
+getKeepExistingDataUnchecked :: (MonadDOM m) => FileSystemCreateWritableOptions -> m Bool
+getKeepExistingDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeepExistingData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryEntry.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryEntry
+       (js_createReader, js_getDirectory, js_getFile, createReader, createReader_, getDirectory, getFile, FileSystemDirectoryEntry(..), gTypeFileSystemDirectoryEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"createReader\"](); })"
+        js_createReader :: FileSystemDirectoryEntry -> IO FileSystemDirectoryReader
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/createReader MDN FileSystemDirectoryEntry.createReader documentation>
+createReader :: (MonadDOM m) => FileSystemDirectoryEntry -> m FileSystemDirectoryReader
+createReader self = liftDOM ((js_createReader (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/createReader MDN FileSystemDirectoryEntry.createReader documentation>
+createReader_ :: (MonadDOM m) => FileSystemDirectoryEntry -> m ()
+createReader_ self = liftDOM (void ((js_createReader (self))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"getDirectory\"]($2, $3, $4, $5); })"
+        js_getDirectory :: FileSystemDirectoryEntry -> (Nullable JSString) -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/getDirectory MDN FileSystemDirectoryEntry.getDirectory documentation>
+getDirectory :: (MonadDOM m, ToJSString path) => FileSystemDirectoryEntry -> Maybe path -> Maybe FileSystemFlags -> Maybe FileSystemEntryCallback -> Maybe ErrorCallback -> m ()
+getDirectory self path options successCallback errorCallback = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal successCallback) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal errorCallback) >>= \a5' -> js_getDirectory (self) (toMaybeJSString path) a3' a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"getFile\"]($2, $3, $4, $5); })"
+        js_getFile :: FileSystemDirectoryEntry -> (Nullable JSString) -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/getFile MDN FileSystemDirectoryEntry.getFile documentation>
+getFile :: (MonadDOM m, ToJSString path) => FileSystemDirectoryEntry -> Maybe path -> Maybe FileSystemFlags -> Maybe FileSystemEntryCallback -> Maybe ErrorCallback -> m ()
+getFile self path options successCallback errorCallback = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal successCallback) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal errorCallback) >>= \a5' -> js_getFile (self) (toMaybeJSString path) a3' a4' a5')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryHandle.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryHandle.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryHandle
+       (js_getDirectoryHandle, js_getFileHandle, js_removeEntry, js_resolve, getDirectoryHandle, getDirectoryHandle_, getFileHandle, getFileHandle_, removeEntry, resolve, resolve_, resolveUnsafe, resolveUnchecked, FileSystemDirectoryHandle(..), gTypeFileSystemDirectoryHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"getDirectoryHandle\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getDirectoryHandle :: FileSystemDirectoryHandle -> JSString -> JSVal -> IO (JSVal, FileSystemDirectoryHandle)
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/getDirectoryHandle MDN FileSystemDirectoryHandle.getDirectoryHandle documentation>
+getDirectoryHandle :: (MonadDOM m, ToJSString name) => FileSystemDirectoryHandle -> name -> Maybe FileSystemGetDirectoryOptions -> m FileSystemDirectoryHandle
+getDirectoryHandle self name options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_getDirectoryHandle (self) (toJSString name) a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/getDirectoryHandle MDN FileSystemDirectoryHandle.getDirectoryHandle documentation>
+getDirectoryHandle_ :: (MonadDOM m, ToJSString name) => FileSystemDirectoryHandle -> name -> Maybe FileSystemGetDirectoryOptions -> m ()
+getDirectoryHandle_ self name options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_getDirectoryHandle (self) (toJSString name) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"getFileHandle\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getFileHandle :: FileSystemDirectoryHandle -> JSString -> JSVal -> IO (JSVal, FileSystemFileHandle)
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/getFileHandle MDN FileSystemDirectoryHandle.getFileHandle documentation>
+getFileHandle :: (MonadDOM m, ToJSString name) => FileSystemDirectoryHandle -> name -> Maybe FileSystemGetFileOptions -> m FileSystemFileHandle
+getFileHandle self name options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_getFileHandle (self) (toJSString name) a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/getFileHandle MDN FileSystemDirectoryHandle.getFileHandle documentation>
+getFileHandle_ :: (MonadDOM m, ToJSString name) => FileSystemDirectoryHandle -> name -> Maybe FileSystemGetFileOptions -> m ()
+getFileHandle_ self name options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_getFileHandle (self) (toJSString name) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"removeEntry\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_removeEntry :: FileSystemDirectoryHandle -> JSString -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/removeEntry MDN FileSystemDirectoryHandle.removeEntry documentation>
+removeEntry :: (MonadDOM m, ToJSString name) => FileSystemDirectoryHandle -> name -> Maybe FileSystemRemoveOptions -> m ()
+removeEntry self name options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_removeEntry (self) (toJSString name) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"resolve\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_resolve :: FileSystemDirectoryHandle -> FileSystemHandle -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/resolve MDN FileSystemDirectoryHandle.resolve documentation>
+resolve :: (MonadDOM m, IsFileSystemHandle possibleDescendant, FromJSString result) => FileSystemDirectoryHandle -> possibleDescendant -> m (Maybe [result])
+resolve self possibleDescendant = liftDOM ((((js_resolve (self) (Types.toFileSystemHandle possibleDescendant)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/resolve MDN FileSystemDirectoryHandle.resolve documentation>
+resolve_ :: (MonadDOM m, IsFileSystemHandle possibleDescendant) => FileSystemDirectoryHandle -> possibleDescendant -> m ()
+resolve_ self possibleDescendant = liftDOM (void (((js_resolve (self) (Types.toFileSystemHandle possibleDescendant)) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/resolve MDN FileSystemDirectoryHandle.resolve documentation>
+resolveUnsafe :: (MonadDOM m, IsFileSystemHandle possibleDescendant, HasCallStack, FromJSString result) => FileSystemDirectoryHandle -> possibleDescendant -> m [result]
+resolveUnsafe self possibleDescendant = liftDOM (((((js_resolve (self) (Types.toFileSystemHandle possibleDescendant)) >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/resolve MDN FileSystemDirectoryHandle.resolve documentation>
+resolveUnchecked :: (MonadDOM m, IsFileSystemHandle possibleDescendant, FromJSString result) => FileSystemDirectoryHandle -> possibleDescendant -> m [result]
+resolveUnchecked self possibleDescendant = liftDOM ((((js_resolve (self) (Types.toFileSystemHandle possibleDescendant)) >>= checkPromiseResult) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryReader.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryReader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemDirectoryReader.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemDirectoryReader
+       (js_readEntries, readEntries, FileSystemDirectoryReader(..), gTypeFileSystemDirectoryReader)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"readEntries\"]($2, $3); })"
+        js_readEntries :: FileSystemDirectoryReader -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries MDN FileSystemDirectoryReader.readEntries documentation>
+readEntries :: (MonadDOM m) => FileSystemDirectoryReader -> FileSystemEntriesCallback -> Maybe ErrorCallback -> m ()
+readEntries self successCallback errorCallback = liftDOM (void (((toJSVal successCallback) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal errorCallback) >>= \a3' -> js_readEntries (self) a2' a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntriesCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntriesCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntriesCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemEntriesCallback
+       (newFileSystemEntriesCallback, newFileSystemEntriesCallbackSync, newFileSystemEntriesCallbackAsync, FileSystemEntriesCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newFileSystemEntriesCallback :: (MonadDOM m) => ([FileSystemEntry] -> IO ()) -> m FileSystemEntriesCallback
+newFileSystemEntriesCallback callback = liftDOM ((FileSystemEntriesCallback . coerce) <$> syncCallback1 ContinueAsync (\ entries -> do
+          entries' <- fromJSValUnchecked entries
+          callback entries'))
+
+newFileSystemEntriesCallbackSync :: (MonadDOM m) => ([FileSystemEntry] -> IO ()) -> m FileSystemEntriesCallback
+newFileSystemEntriesCallbackSync callback = liftDOM ((FileSystemEntriesCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ entries -> do
+          entries' <- fromJSValUnchecked entries
+          callback entries'))
+
+newFileSystemEntriesCallbackAsync :: (MonadDOM m) => ([FileSystemEntry] -> IO ()) -> m FileSystemEntriesCallback
+newFileSystemEntriesCallbackAsync callback = liftDOM ((FileSystemEntriesCallback . coerce) <$> asyncCallback1 (\ entries -> do
+          entries' <- fromJSValUnchecked entries
+          callback entries'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntry.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemEntry
+       (js_getParent, js_getIsFile, js_getIsDirectory, js_getName, js_getFullPath, js_getFilesystem, getParent, getIsFile, getIsDirectory, getName, getFullPath, getFilesystem, FileSystemEntry(..), gTypeFileSystemEntry, IsFileSystemEntry, toFileSystemEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getParent\"]($2, $3); })"
+        js_getParent :: FileSystemEntry -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/getParent MDN FileSystemEntry.getParent documentation>
+getParent :: (MonadDOM m, IsFileSystemEntry self) => self -> Maybe FileSystemEntryCallback -> Maybe ErrorCallback -> m ()
+getParent self successCallback errorCallback = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal successCallback) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal errorCallback) >>= \a3' -> js_getParent ((Types.toFileSystemEntry self)) a2' a3')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isFile\"]; })"
+        js_getIsFile :: FileSystemEntry -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/isFile MDN FileSystemEntry.isFile documentation>
+getIsFile :: (MonadDOM m, IsFileSystemEntry self) => self -> m Bool
+getIsFile self = liftDOM ((js_getIsFile ((Types.toFileSystemEntry self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isDirectory\"]; })"
+        js_getIsDirectory :: FileSystemEntry -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/isDirectory MDN FileSystemEntry.isDirectory documentation>
+getIsDirectory :: (MonadDOM m, IsFileSystemEntry self) => self -> m Bool
+getIsDirectory self = liftDOM ((js_getIsDirectory ((Types.toFileSystemEntry self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: FileSystemEntry -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/name MDN FileSystemEntry.name documentation>
+getName :: (MonadDOM m, IsFileSystemEntry self, FromJSString result) => self -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName ((Types.toFileSystemEntry self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fullPath\"]; })"
+        js_getFullPath :: FileSystemEntry -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/fullPath MDN FileSystemEntry.fullPath documentation>
+getFullPath :: (MonadDOM m, IsFileSystemEntry self, FromJSString result) => self -> m result
+getFullPath self = liftDOM ((fromJSString <$> (js_getFullPath ((Types.toFileSystemEntry self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"filesystem\"]; })"
+        js_getFilesystem :: FileSystemEntry -> IO FileSystem
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/filesystem MDN FileSystemEntry.filesystem documentation>
+getFilesystem :: (MonadDOM m, IsFileSystemEntry self) => self -> m FileSystem
+getFilesystem self = liftDOM ((js_getFilesystem ((Types.toFileSystemEntry self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntryCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntryCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemEntryCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemEntryCallback
+       (newFileSystemEntryCallback, newFileSystemEntryCallbackSync, newFileSystemEntryCallbackAsync, FileSystemEntryCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newFileSystemEntryCallback :: (MonadDOM m) => (FileSystemEntry -> IO ()) -> m FileSystemEntryCallback
+newFileSystemEntryCallback callback = liftDOM ((FileSystemEntryCallback . coerce) <$> syncCallback1 ContinueAsync (\ entry -> do
+          entry' <- fromJSValUnchecked entry
+          callback entry'))
+
+newFileSystemEntryCallbackSync :: (MonadDOM m) => (FileSystemEntry -> IO ()) -> m FileSystemEntryCallback
+newFileSystemEntryCallbackSync callback = liftDOM ((FileSystemEntryCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ entry -> do
+          entry' <- fromJSValUnchecked entry
+          callback entry'))
+
+newFileSystemEntryCallbackAsync :: (MonadDOM m) => (FileSystemEntry -> IO ()) -> m FileSystemEntryCallback
+newFileSystemEntryCallbackAsync callback = liftDOM ((FileSystemEntryCallback . coerce) <$> asyncCallback1 (\ entry -> do
+          entry' <- fromJSValUnchecked entry
+          callback entry'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemFileEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemFileEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemFileEntry.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemFileEntry
+       (js_file, file, FileSystemFileEntry(..), gTypeFileSystemFileEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"file\"]($2, $3); })"
+        js_file :: FileSystemFileEntry -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileEntry/file MDN FileSystemFileEntry.file documentation>
+file :: (MonadDOM m) => FileSystemFileEntry -> FileCallback -> Maybe ErrorCallback -> m ()
+file self successCallback errorCallback = liftDOM (void (((toJSVal successCallback) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal errorCallback) >>= \a3' -> js_file (self) a2' a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemFileHandle.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemFileHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemFileHandle.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemFileHandle
+       (js_createSyncAccessHandle, js_createWritable, js_getFile, createSyncAccessHandle, createSyncAccessHandle_, createWritable, createWritable_, getFile, getFile_, FileSystemFileHandle(..), gTypeFileSystemFileHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"createSyncAccessHandle\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createSyncAccessHandle :: FileSystemFileHandle -> IO (JSVal, FileSystemSyncAccessHandle)
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createSyncAccessHandle MDN FileSystemFileHandle.createSyncAccessHandle documentation>
+createSyncAccessHandle :: (MonadDOM m) => FileSystemFileHandle -> m FileSystemSyncAccessHandle
+createSyncAccessHandle self = liftDOM (((js_createSyncAccessHandle (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createSyncAccessHandle MDN FileSystemFileHandle.createSyncAccessHandle documentation>
+createSyncAccessHandle_ :: (MonadDOM m) => FileSystemFileHandle -> m ()
+createSyncAccessHandle_ self = liftDOM (void (((js_createSyncAccessHandle (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"createWritable\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createWritable :: FileSystemFileHandle -> JSVal -> IO (JSVal, FileSystemWritableFileStream)
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createWritable MDN FileSystemFileHandle.createWritable documentation>
+createWritable :: (MonadDOM m) => FileSystemFileHandle -> Maybe FileSystemCreateWritableOptions -> m FileSystemWritableFileStream
+createWritable self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createWritable (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createWritable MDN FileSystemFileHandle.createWritable documentation>
+createWritable_ :: (MonadDOM m) => FileSystemFileHandle -> Maybe FileSystemCreateWritableOptions -> m ()
+createWritable_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createWritable (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getFile\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getFile :: FileSystemFileHandle -> IO (JSVal, File)
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/getFile MDN FileSystemFileHandle.getFile documentation>
+getFile :: (MonadDOM m) => FileSystemFileHandle -> m File
+getFile self = liftDOM (((js_getFile (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/getFile MDN FileSystemFileHandle.getFile documentation>
+getFile_ :: (MonadDOM m) => FileSystemFileHandle -> m ()
+getFile_ self = liftDOM (void (((js_getFile (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemFlags.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemFlags.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemFlags.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemFlags
+       (js_newFileSystemFlags, js_setCreate, js_getCreate, js_setExclusive, js_getExclusive, newFileSystemFlags, setCreate, getCreate, getCreateUnsafe, getCreateUnchecked, setExclusive, getExclusive, getExclusiveUnsafe, getExclusiveUnchecked, FileSystemFlags(..), gTypeFileSystemFlags)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFileSystemFlags :: IO FileSystemFlags
+-- | <https://wicg.github.io/entries-api/#dictdef-filesystemflags FileSystemFlags specification>
+newFileSystemFlags :: (MonadDOM m) => m FileSystemFlags
+newFileSystemFlags = liftDOM ((js_newFileSystemFlags))
+
+foreign import javascript safe "(($1, $2) => { $1[\"create\"] = $2; })"
+        js_setCreate :: FileSystemFlags -> Bool -> IO ()
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-create FileSystemFlags.create specification>
+setCreate :: (MonadDOM m) => FileSystemFlags -> Bool -> m ()
+setCreate self val = liftDOM (void ((js_setCreate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"create\"]; })"
+        js_getCreate :: FileSystemFlags -> IO JSVal
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-create FileSystemFlags.create specification>
+getCreate :: (MonadDOM m) => FileSystemFlags -> m (Maybe Bool)
+getCreate self = liftDOM (((js_getCreate (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-create FileSystemFlags.create specification>
+getCreateUnsafe :: (MonadDOM m, HasCallStack) => FileSystemFlags -> m Bool
+getCreateUnsafe self = liftDOM ((((js_getCreate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-create FileSystemFlags.create specification>
+getCreateUnchecked :: (MonadDOM m) => FileSystemFlags -> m Bool
+getCreateUnchecked self = liftDOM ((pFromJSVal <$> (js_getCreate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exclusive\"] = $2; })"
+        js_setExclusive :: FileSystemFlags -> Bool -> IO ()
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-exclusive FileSystemFlags.exclusive specification>
+setExclusive :: (MonadDOM m) => FileSystemFlags -> Bool -> m ()
+setExclusive self val = liftDOM (void ((js_setExclusive (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exclusive\"]; })"
+        js_getExclusive :: FileSystemFlags -> IO JSVal
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-exclusive FileSystemFlags.exclusive specification>
+getExclusive :: (MonadDOM m) => FileSystemFlags -> m (Maybe Bool)
+getExclusive self = liftDOM (((js_getExclusive (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-exclusive FileSystemFlags.exclusive specification>
+getExclusiveUnsafe :: (MonadDOM m, HasCallStack) => FileSystemFlags -> m Bool
+getExclusiveUnsafe self = liftDOM ((((js_getExclusive (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-exclusive FileSystemFlags.exclusive specification>
+getExclusiveUnchecked :: (MonadDOM m) => FileSystemFlags -> m Bool
+getExclusiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getExclusive (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemGetDirectoryOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemGetDirectoryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemGetDirectoryOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemGetDirectoryOptions
+       (js_newFileSystemGetDirectoryOptions, js_setCreate, js_getCreate, newFileSystemGetDirectoryOptions, setCreate, getCreate, getCreateUnsafe, getCreateUnchecked, FileSystemGetDirectoryOptions(..), gTypeFileSystemGetDirectoryOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFileSystemGetDirectoryOptions :: IO FileSystemGetDirectoryOptions
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemgetdirectoryoptions FileSystemGetDirectoryOptions specification>
+newFileSystemGetDirectoryOptions :: (MonadDOM m) => m FileSystemGetDirectoryOptions
+newFileSystemGetDirectoryOptions = liftDOM ((js_newFileSystemGetDirectoryOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"create\"] = $2; })"
+        js_setCreate :: FileSystemGetDirectoryOptions -> Bool -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetdirectoryoptions-create FileSystemGetDirectoryOptions.create specification>
+setCreate :: (MonadDOM m) => FileSystemGetDirectoryOptions -> Bool -> m ()
+setCreate self val = liftDOM (void ((js_setCreate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"create\"]; })"
+        js_getCreate :: FileSystemGetDirectoryOptions -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetdirectoryoptions-create FileSystemGetDirectoryOptions.create specification>
+getCreate :: (MonadDOM m) => FileSystemGetDirectoryOptions -> m (Maybe Bool)
+getCreate self = liftDOM (((js_getCreate (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetdirectoryoptions-create FileSystemGetDirectoryOptions.create specification>
+getCreateUnsafe :: (MonadDOM m, HasCallStack) => FileSystemGetDirectoryOptions -> m Bool
+getCreateUnsafe self = liftDOM ((((js_getCreate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetdirectoryoptions-create FileSystemGetDirectoryOptions.create specification>
+getCreateUnchecked :: (MonadDOM m) => FileSystemGetDirectoryOptions -> m Bool
+getCreateUnchecked self = liftDOM ((pFromJSVal <$> (js_getCreate (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemGetFileOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemGetFileOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemGetFileOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemGetFileOptions
+       (js_newFileSystemGetFileOptions, js_setCreate, js_getCreate, newFileSystemGetFileOptions, setCreate, getCreate, getCreateUnsafe, getCreateUnchecked, FileSystemGetFileOptions(..), gTypeFileSystemGetFileOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFileSystemGetFileOptions :: IO FileSystemGetFileOptions
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemgetfileoptions FileSystemGetFileOptions specification>
+newFileSystemGetFileOptions :: (MonadDOM m) => m FileSystemGetFileOptions
+newFileSystemGetFileOptions = liftDOM ((js_newFileSystemGetFileOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"create\"] = $2; })"
+        js_setCreate :: FileSystemGetFileOptions -> Bool -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetfileoptions-create FileSystemGetFileOptions.create specification>
+setCreate :: (MonadDOM m) => FileSystemGetFileOptions -> Bool -> m ()
+setCreate self val = liftDOM (void ((js_setCreate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"create\"]; })"
+        js_getCreate :: FileSystemGetFileOptions -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetfileoptions-create FileSystemGetFileOptions.create specification>
+getCreate :: (MonadDOM m) => FileSystemGetFileOptions -> m (Maybe Bool)
+getCreate self = liftDOM (((js_getCreate (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetfileoptions-create FileSystemGetFileOptions.create specification>
+getCreateUnsafe :: (MonadDOM m, HasCallStack) => FileSystemGetFileOptions -> m Bool
+getCreateUnsafe self = liftDOM ((((js_getCreate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetfileoptions-create FileSystemGetFileOptions.create specification>
+getCreateUnchecked :: (MonadDOM m) => FileSystemGetFileOptions -> m Bool
+getCreateUnchecked self = liftDOM ((pFromJSVal <$> (js_getCreate (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemHandle.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemHandle.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemHandle
+       (js_isSameEntry, js_getKind, js_getName, isSameEntry, isSameEntry_, getKind, getName, FileSystemHandle(..), gTypeFileSystemHandle, IsFileSystemHandle, toFileSystemHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"isSameEntry\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isSameEntry :: FileSystemHandle -> FileSystemHandle -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemHandle/isSameEntry MDN FileSystemHandle.isSameEntry documentation>
+isSameEntry :: (MonadDOM m, IsFileSystemHandle self, IsFileSystemHandle other) => self -> other -> m Bool
+isSameEntry self other = liftDOM (((js_isSameEntry ((Types.toFileSystemHandle self)) (Types.toFileSystemHandle other)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemHandle/isSameEntry MDN FileSystemHandle.isSameEntry documentation>
+isSameEntry_ :: (MonadDOM m, IsFileSystemHandle self, IsFileSystemHandle other) => self -> other -> m ()
+isSameEntry_ self other = liftDOM (void (((js_isSameEntry ((Types.toFileSystemHandle self)) (Types.toFileSystemHandle other)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: FileSystemHandle -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemHandle/kind MDN FileSystemHandle.kind documentation>
+getKind :: (MonadDOM m, IsFileSystemHandle self) => self -> m FileSystemHandleKind
+getKind self = liftDOM (((js_getKind ((Types.toFileSystemHandle self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: FileSystemHandle -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemHandle/name MDN FileSystemHandle.name documentation>
+getName :: (MonadDOM m, IsFileSystemHandle self, FromJSString result) => self -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName ((Types.toFileSystemHandle self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemReadWriteOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemReadWriteOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemReadWriteOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemReadWriteOptions
+       (js_newFileSystemReadWriteOptions, js_setAt, js_getAt, newFileSystemReadWriteOptions, setAt, getAt, getAtUnsafe, getAtUnchecked, FileSystemReadWriteOptions(..), gTypeFileSystemReadWriteOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFileSystemReadWriteOptions :: IO FileSystemReadWriteOptions
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemreadwriteoptions FileSystemReadWriteOptions specification>
+newFileSystemReadWriteOptions :: (MonadDOM m) => m FileSystemReadWriteOptions
+newFileSystemReadWriteOptions = liftDOM ((js_newFileSystemReadWriteOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"at\"] = $2; })"
+        js_setAt :: FileSystemReadWriteOptions -> JSVal -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-filesystemreadwriteoptions-at FileSystemReadWriteOptions.at specification>
+setAt :: (MonadDOM m) => FileSystemReadWriteOptions -> Word53 -> m ()
+setAt self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAt (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"at\"]; })"
+        js_getAt :: FileSystemReadWriteOptions -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-filesystemreadwriteoptions-at FileSystemReadWriteOptions.at specification>
+getAt :: (MonadDOM m) => FileSystemReadWriteOptions -> m (Maybe Word53)
+getAt self = liftDOM (((js_getAt (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemreadwriteoptions-at FileSystemReadWriteOptions.at specification>
+getAtUnsafe :: (MonadDOM m, HasCallStack) => FileSystemReadWriteOptions -> m Word53
+getAtUnsafe self = liftDOM ((((js_getAt (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemreadwriteoptions-at FileSystemReadWriteOptions.at specification>
+getAtUnchecked :: (MonadDOM m) => FileSystemReadWriteOptions -> m Word53
+getAtUnchecked self = liftDOM ((pFromJSVal <$> (js_getAt (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemRemoveOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemRemoveOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemRemoveOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemRemoveOptions
+       (js_newFileSystemRemoveOptions, js_setRecursive, js_getRecursive, newFileSystemRemoveOptions, setRecursive, getRecursive, getRecursiveUnsafe, getRecursiveUnchecked, FileSystemRemoveOptions(..), gTypeFileSystemRemoveOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFileSystemRemoveOptions :: IO FileSystemRemoveOptions
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemremoveoptions FileSystemRemoveOptions specification>
+newFileSystemRemoveOptions :: (MonadDOM m) => m FileSystemRemoveOptions
+newFileSystemRemoveOptions = liftDOM ((js_newFileSystemRemoveOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"recursive\"] = $2; })"
+        js_setRecursive :: FileSystemRemoveOptions -> Bool -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-filesystemremoveoptions-recursive FileSystemRemoveOptions.recursive specification>
+setRecursive :: (MonadDOM m) => FileSystemRemoveOptions -> Bool -> m ()
+setRecursive self val = liftDOM (void ((js_setRecursive (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"recursive\"]; })"
+        js_getRecursive :: FileSystemRemoveOptions -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-filesystemremoveoptions-recursive FileSystemRemoveOptions.recursive specification>
+getRecursive :: (MonadDOM m) => FileSystemRemoveOptions -> m (Maybe Bool)
+getRecursive self = liftDOM (((js_getRecursive (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemremoveoptions-recursive FileSystemRemoveOptions.recursive specification>
+getRecursiveUnsafe :: (MonadDOM m, HasCallStack) => FileSystemRemoveOptions -> m Bool
+getRecursiveUnsafe self = liftDOM ((((js_getRecursive (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemremoveoptions-recursive FileSystemRemoveOptions.recursive specification>
+getRecursiveUnchecked :: (MonadDOM m) => FileSystemRemoveOptions -> m Bool
+getRecursiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getRecursive (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemSyncAccessHandle.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemSyncAccessHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemSyncAccessHandle.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemSyncAccessHandle
+       (js_close, js_flush, js_getSize, js_read, js_truncate, js_write, close, flush, getSize, getSize_, read, read_, truncate, write, write_, FileSystemSyncAccessHandle(..), gTypeFileSystemSyncAccessHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: FileSystemSyncAccessHandle -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/close MDN FileSystemSyncAccessHandle.close documentation>
+close :: (MonadDOM m) => FileSystemSyncAccessHandle -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"flush\"](); })"
+        js_flush :: FileSystemSyncAccessHandle -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/flush MDN FileSystemSyncAccessHandle.flush documentation>
+flush :: (MonadDOM m) => FileSystemSyncAccessHandle -> m ()
+flush self = liftDOM (void ((js_flush (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"getSize\"](); })"
+        js_getSize :: FileSystemSyncAccessHandle -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/getSize MDN FileSystemSyncAccessHandle.getSize documentation>
+getSize :: (MonadDOM m) => FileSystemSyncAccessHandle -> m Word53
+getSize self = liftDOM (((js_getSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/getSize MDN FileSystemSyncAccessHandle.getSize documentation>
+getSize_ :: (MonadDOM m) => FileSystemSyncAccessHandle -> m ()
+getSize_ self = liftDOM (void ((js_getSize (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"read\"]($2, $3); })"
+        js_read :: FileSystemSyncAccessHandle -> AllowSharedBufferSource -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/read MDN FileSystemSyncAccessHandle.read documentation>
+read :: (MonadDOM m, IsAllowSharedBufferSource buffer) => FileSystemSyncAccessHandle -> buffer -> Maybe FileSystemReadWriteOptions -> m Word53
+read self buffer options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_read (self) (Types.toAllowSharedBufferSource buffer) a3') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/read MDN FileSystemSyncAccessHandle.read documentation>
+read_ :: (MonadDOM m, IsAllowSharedBufferSource buffer) => FileSystemSyncAccessHandle -> buffer -> Maybe FileSystemReadWriteOptions -> m ()
+read_ self buffer options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_read (self) (Types.toAllowSharedBufferSource buffer) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"truncate\"]($2); })"
+        js_truncate :: FileSystemSyncAccessHandle -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/truncate MDN FileSystemSyncAccessHandle.truncate documentation>
+truncate :: (MonadDOM m) => FileSystemSyncAccessHandle -> Word53 -> m ()
+truncate self newSize = liftDOM (void (((toJSVal newSize) >>= \a2' -> js_truncate (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"write\"]($2, $3); })"
+        js_write :: FileSystemSyncAccessHandle -> AllowSharedBufferSource -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/write MDN FileSystemSyncAccessHandle.write documentation>
+write :: (MonadDOM m, IsAllowSharedBufferSource buffer) => FileSystemSyncAccessHandle -> buffer -> Maybe FileSystemReadWriteOptions -> m Word53
+write self buffer options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_write (self) (Types.toAllowSharedBufferSource buffer) a3') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/write MDN FileSystemSyncAccessHandle.write documentation>
+write_ :: (MonadDOM m, IsAllowSharedBufferSource buffer) => FileSystemSyncAccessHandle -> buffer -> Maybe FileSystemReadWriteOptions -> m ()
+write_ self buffer options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_write (self) (Types.toAllowSharedBufferSource buffer) a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileSystemWritableFileStream.hs b/src/GHCJS/DOM/JSFFI/Generated/FileSystemWritableFileStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileSystemWritableFileStream.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FileSystemWritableFileStream
+       (js_seek, js_truncate, js_write, seek, truncate, write, FileSystemWritableFileStream(..), gTypeFileSystemWritableFileStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"seek\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_seek :: FileSystemWritableFileStream -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/seek MDN FileSystemWritableFileStream.seek documentation>
+seek :: (MonadDOM m) => FileSystemWritableFileStream -> Word53 -> m ()
+seek self position = liftDOM (void ((((toJSVal position) >>= \a2' -> js_seek (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"truncate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_truncate :: FileSystemWritableFileStream -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/truncate MDN FileSystemWritableFileStream.truncate documentation>
+truncate :: (MonadDOM m) => FileSystemWritableFileStream -> Word53 -> m ()
+truncate self size = liftDOM (void ((((toJSVal size) >>= \a2' -> js_truncate (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"write\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_write :: FileSystemWritableFileStream -> FileSystemWriteChunkType -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/write MDN FileSystemWritableFileStream.write documentation>
+write :: (MonadDOM m, IsFileSystemWriteChunkType data') => FileSystemWritableFileStream -> data' -> m ()
+write self data' = liftDOM (void (((js_write (self) (Types.toFileSystemWriteChunkType data')) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FlacEncoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/FlacEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FlacEncoderConfig.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-flac-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FlacEncoderConfig
+       (js_newFlacEncoderConfig, js_setBlockSize, js_getBlockSize, js_setCompressLevel, js_getCompressLevel, newFlacEncoderConfig, setBlockSize, getBlockSize, getBlockSizeUnsafe, getBlockSizeUnchecked, setCompressLevel, getCompressLevel, getCompressLevelUnsafe, getCompressLevelUnchecked, FlacEncoderConfig(..), gTypeFlacEncoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFlacEncoderConfig :: IO FlacEncoderConfig
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dictdef-flacencoderconfig FlacEncoderConfig specification>
+newFlacEncoderConfig :: (MonadDOM m) => m FlacEncoderConfig
+newFlacEncoderConfig = liftDOM ((js_newFlacEncoderConfig))
+
+foreign import javascript safe "(($1, $2) => { $1[\"blockSize\"] = $2; })"
+        js_setBlockSize :: FlacEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-blocksize FlacEncoderConfig.blockSize specification>
+setBlockSize :: (MonadDOM m) => FlacEncoderConfig -> Word -> m ()
+setBlockSize self val = liftDOM (void ((js_setBlockSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"blockSize\"]; })"
+        js_getBlockSize :: FlacEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-blocksize FlacEncoderConfig.blockSize specification>
+getBlockSize :: (MonadDOM m) => FlacEncoderConfig -> m (Maybe Word)
+getBlockSize self = liftDOM (((js_getBlockSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-blocksize FlacEncoderConfig.blockSize specification>
+getBlockSizeUnsafe :: (MonadDOM m, HasCallStack) => FlacEncoderConfig -> m Word
+getBlockSizeUnsafe self = liftDOM ((((js_getBlockSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-blocksize FlacEncoderConfig.blockSize specification>
+getBlockSizeUnchecked :: (MonadDOM m) => FlacEncoderConfig -> m Word
+getBlockSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getBlockSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"compressLevel\"] = $2; })"
+        js_setCompressLevel :: FlacEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-compresslevel FlacEncoderConfig.compressLevel specification>
+setCompressLevel :: (MonadDOM m) => FlacEncoderConfig -> Word -> m ()
+setCompressLevel self val = liftDOM (void ((js_setCompressLevel (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"compressLevel\"]; })"
+        js_getCompressLevel :: FlacEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-compresslevel FlacEncoderConfig.compressLevel specification>
+getCompressLevel :: (MonadDOM m) => FlacEncoderConfig -> m (Maybe Word)
+getCompressLevel self = liftDOM (((js_getCompressLevel (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-compresslevel FlacEncoderConfig.compressLevel specification>
+getCompressLevelUnsafe :: (MonadDOM m, HasCallStack) => FlacEncoderConfig -> m Word
+getCompressLevelUnsafe self = liftDOM ((((js_getCompressLevel (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dom-flacencoderconfig-compresslevel FlacEncoderConfig.compressLevel specification>
+getCompressLevelUnchecked :: (MonadDOM m) => FlacEncoderConfig -> m Word
+getCompressLevelUnchecked self = liftDOM ((pFromJSVal <$> (js_getCompressLevel (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
@@ -1,65 +1,37 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.FocusEvent
-       (js_newFocusEvent, newFocusEvent, js_getRelatedTarget,
-        getRelatedTarget, getRelatedTargetUnsafe,
-        getRelatedTargetUnchecked, FocusEvent(..), gTypeFocusEvent)
+       (js_newFocusEvent, js_getRelatedTarget, newFocusEvent, getRelatedTarget, getRelatedTargetUnsafe, getRelatedTargetUnchecked, FocusEvent(..), gTypeFocusEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"FocusEvent\"]($1, $2); })" js_newFocusEvent ::
-        JSString -> Optional FocusEventInit -> IO FocusEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation> 
-newFocusEvent ::
-              (MonadIO m, ToJSString type') =>
-                type' -> Maybe FocusEventInit -> m FocusEvent
-newFocusEvent type' eventInitDict
-  = liftIO
-      (js_newFocusEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
-        js_getRelatedTarget :: FocusEvent -> IO (Nullable EventTarget)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"FocusEvent\"]($1, $2); })"
+        js_newFocusEvent :: JSString -> JSVal -> IO FocusEvent
+-- | <https://developer.mozilla.org/docs/Web/API/FocusEvent/FocusEvent MDN FocusEvent. documentation>
+newFocusEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe FocusEventInit -> m FocusEvent
+newFocusEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newFocusEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
-getRelatedTarget ::
-                 (MonadIO m) => FocusEvent -> m (Maybe EventTarget)
-getRelatedTarget self
-  = liftIO (nullableToMaybe <$> (js_getRelatedTarget self))
+foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
+        js_getRelatedTarget :: FocusEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FocusEvent/relatedTarget MDN FocusEvent.relatedTarget documentation>
+getRelatedTarget :: (MonadDOM m) => FocusEvent -> m (Maybe EventTarget)
+getRelatedTarget self = liftDOM (((js_getRelatedTarget (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
-getRelatedTargetUnsafe ::
-                       (MonadIO m, HasCallStack) => FocusEvent -> m EventTarget
-getRelatedTargetUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getRelatedTarget self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/FocusEvent/relatedTarget MDN FocusEvent.relatedTarget documentation>
+getRelatedTargetUnsafe :: (MonadDOM m, HasCallStack) => FocusEvent -> m EventTarget
+getRelatedTargetUnsafe self = liftDOM ((((js_getRelatedTarget (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
-getRelatedTargetUnchecked ::
-                          (MonadIO m) => FocusEvent -> m EventTarget
-getRelatedTargetUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getRelatedTarget self))
+-- | <https://developer.mozilla.org/docs/Web/API/FocusEvent/relatedTarget MDN FocusEvent.relatedTarget documentation>
+getRelatedTargetUnchecked :: (MonadDOM m) => FocusEvent -> m EventTarget
+getRelatedTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelatedTarget (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FocusEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/FocusEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FocusEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FocusEventInit
+       (js_newFocusEventInit, js_setRelatedTarget, js_getRelatedTarget, newFocusEventInit, setRelatedTarget, getRelatedTarget, getRelatedTargetUnsafe, getRelatedTargetUnchecked, FocusEventInit(..), gTypeFocusEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFocusEventInit :: IO FocusEventInit
+-- | <https://w3c.github.io/uievents/#dictdef-focuseventinit FocusEventInit specification>
+newFocusEventInit :: (MonadDOM m) => m FocusEventInit
+newFocusEventInit = liftDOM ((js_newFocusEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"relatedTarget\"] = $2; })"
+        js_setRelatedTarget :: FocusEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-focuseventinit-relatedtarget FocusEventInit.relatedTarget specification>
+setRelatedTarget :: (MonadDOM m, IsEventTarget val) => FocusEventInit -> Maybe val -> m ()
+setRelatedTarget self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRelatedTarget (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
+        js_getRelatedTarget :: FocusEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-focuseventinit-relatedtarget FocusEventInit.relatedTarget specification>
+getRelatedTarget :: (MonadDOM m) => FocusEventInit -> m (Maybe EventTarget)
+getRelatedTarget self = liftDOM (((js_getRelatedTarget (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-focuseventinit-relatedtarget FocusEventInit.relatedTarget specification>
+getRelatedTargetUnsafe :: (MonadDOM m, HasCallStack) => FocusEventInit -> m EventTarget
+getRelatedTargetUnsafe self = liftDOM ((((js_getRelatedTarget (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-focuseventinit-relatedtarget FocusEventInit.relatedTarget specification>
+getRelatedTargetUnchecked :: (MonadDOM m) => FocusEventInit -> m EventTarget
+getRelatedTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelatedTarget (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FocusOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FocusOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FocusOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FocusOptions
+       (js_newFocusOptions, js_setPreventScroll, js_getPreventScroll, js_setFocusVisible, js_getFocusVisible, newFocusOptions, setPreventScroll, getPreventScroll, getPreventScrollUnsafe, getPreventScrollUnchecked, setFocusVisible, getFocusVisible, getFocusVisibleUnsafe, getFocusVisibleUnchecked, FocusOptions(..), gTypeFocusOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFocusOptions :: IO FocusOptions
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#focusoptions FocusOptions specification>
+newFocusOptions :: (MonadDOM m) => m FocusOptions
+newFocusOptions = liftDOM ((js_newFocusOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preventScroll\"] = $2; })"
+        js_setPreventScroll :: FocusOptions -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-preventscroll FocusOptions.preventScroll specification>
+setPreventScroll :: (MonadDOM m) => FocusOptions -> Bool -> m ()
+setPreventScroll self val = liftDOM (void ((js_setPreventScroll (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preventScroll\"]; })"
+        js_getPreventScroll :: FocusOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-preventscroll FocusOptions.preventScroll specification>
+getPreventScroll :: (MonadDOM m) => FocusOptions -> m (Maybe Bool)
+getPreventScroll self = liftDOM (((js_getPreventScroll (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-preventscroll FocusOptions.preventScroll specification>
+getPreventScrollUnsafe :: (MonadDOM m, HasCallStack) => FocusOptions -> m Bool
+getPreventScrollUnsafe self = liftDOM ((((js_getPreventScroll (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-preventscroll FocusOptions.preventScroll specification>
+getPreventScrollUnchecked :: (MonadDOM m) => FocusOptions -> m Bool
+getPreventScrollUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreventScroll (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusVisible\"] = $2; })"
+        js_setFocusVisible :: FocusOptions -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-focusvisible FocusOptions.focusVisible specification>
+setFocusVisible :: (MonadDOM m) => FocusOptions -> Bool -> m ()
+setFocusVisible self val = liftDOM (void ((js_setFocusVisible (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusVisible\"]; })"
+        js_getFocusVisible :: FocusOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-focusvisible FocusOptions.focusVisible specification>
+getFocusVisible :: (MonadDOM m) => FocusOptions -> m (Maybe Bool)
+getFocusVisible self = liftDOM (((js_getFocusVisible (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-focusvisible FocusOptions.focusVisible specification>
+getFocusVisibleUnsafe :: (MonadDOM m, HasCallStack) => FocusOptions -> m Bool
+getFocusVisibleUnsafe self = liftDOM ((((js_getFocusVisible (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-focusvisible FocusOptions.focusVisible specification>
+getFocusVisibleUnchecked :: (MonadDOM m) => FocusOptions -> m Bool
+getFocusVisibleUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusVisible (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
@@ -1,192 +1,177 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.FontFace
-       (js_newFontFace, newFontFace, js_load, load, load_, js_setFamily,
-        setFamily, js_getFamily, getFamily, js_setStyle, setStyle,
-        js_getStyle, getStyle, js_setWeight, setWeight, js_getWeight,
-        getWeight, js_setStretch, setStretch, js_getStretch, getStretch,
-        js_setUnicodeRange, setUnicodeRange, js_getUnicodeRange,
-        getUnicodeRange, js_setVariant, setVariant, js_getVariant,
-        getVariant, js_setFeatureSettings, setFeatureSettings,
-        js_getFeatureSettings, getFeatureSettings, js_getStatus, getStatus,
-        js_getLoaded, getLoaded, FontFace(..), gTypeFontFace)
+       (js_newFontFace, js_load, js_setFamily, js_getFamily, js_setStyle, js_getStyle, js_setWeight, js_getWeight, js_setStretch, js_getStretch, js_setUnicodeRange, js_getUnicodeRange, js_setFeatureSettings, js_getFeatureSettings, js_setVariationSettings, js_getVariationSettings, js_setDisplay, js_getDisplay, js_setAscentOverride, js_getAscentOverride, js_setDescentOverride, js_getDescentOverride, js_setLineGapOverride, js_getLineGapOverride, js_getStatus, js_getLoaded, newFontFace, load, load_, setFamily, getFamily, setStyle, getStyle, setWeight, getWeight, setStretch, getStretch, setUnicodeRange, getUnicodeRange, setFeatureSettings, getFeatureSettings, setVariationSettings, getVariationSettings, setDisplay, getDisplay, setAscentOverride, getAscentOverride, setDescentOverride, getDescentOverride, setLineGapOverride, getLineGapOverride, getStatus, getLoaded, FontFace(..), gTypeFontFace)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return new window[\"FontFace\"]($1, $2,\n$3); })" js_newFontFace ::
-        JSString ->
-          StringOrBinaryData -> Optional FontFaceDescriptors -> IO FontFace
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace Mozilla FontFace documentation> 
-newFontFace ::
-            (MonadIO m, ToJSString family', IsStringOrBinaryData source) =>
-              family' -> source -> Maybe FontFaceDescriptors -> m FontFace
-newFontFace family' source descriptors
-  = liftIO
-      (toJSVal source >>=
-         \ source' ->
-           js_newFontFace (toJSString family') (StringOrBinaryData source')
-         (maybeToOptional descriptors))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"load\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"FontFace\"]($1, $2, $3); })"
+        js_newFontFace :: JSString -> PushMessageDataInit -> JSVal -> IO FontFace
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/FontFace MDN FontFace. documentation>
+newFontFace :: (MonadDOM m, ToJSString family', IsPushMessageDataInit source) => family' -> source -> Maybe FontFaceDescriptors -> m FontFace
+newFontFace family' source descriptors = liftDOM (((P.maybe (P.return jsUndefined) toJSVal descriptors) >>= \a3' -> js_newFontFace (toJSString family') (Types.toPushMessageDataInit source) a3'))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"load\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
         js_load :: FontFace -> IO (JSVal, FontFace)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/load MDN FontFace.load documentation>
+load :: (MonadDOM m) => FontFace -> m FontFace
+load self = liftDOM (((js_load (self)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.load Mozilla FontFace.load documentation> 
-load :: (MonadIO m) => FontFace -> m FontFace
-load self = liftIO ((js_load self) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/load MDN FontFace.load documentation>
+load_ :: (MonadDOM m) => FontFace -> m ()
+load_ self = liftDOM (void (((js_load (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.load Mozilla FontFace.load documentation> 
-load_ :: (MonadIO m) => FontFace -> m ()
-load_ self = liftIO (void (js_load self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"family\"] = $2; })" js_setFamily
-        :: FontFace -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"family\"] = $2; })"
+        js_setFamily :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/family MDN FontFace.family documentation>
+setFamily :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setFamily self val = liftDOM (void ((js_setFamily (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.family Mozilla FontFace.family documentation> 
-setFamily :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
-setFamily self val = liftIO (js_setFamily self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"family\"]; })" js_getFamily ::
-        FontFace -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"family\"]; })"
+        js_getFamily :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/family MDN FontFace.family documentation>
+getFamily :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getFamily self = liftDOM ((fromJSString <$> (js_getFamily (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.family Mozilla FontFace.family documentation> 
-getFamily ::
-          (MonadIO m, FromJSString result) => FontFace -> m result
-getFamily self = liftIO (fromJSString <$> (js_getFamily self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"style\"] = $2; })" js_setStyle ::
-        FontFace -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"style\"] = $2; })"
+        js_setStyle :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/style MDN FontFace.style documentation>
+setStyle :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setStyle self val = liftDOM (void ((js_setStyle (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.style Mozilla FontFace.style documentation> 
-setStyle :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
-setStyle self val = liftIO (js_setStyle self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
-        FontFace -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/style MDN FontFace.style documentation>
+getStyle :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getStyle self = liftDOM ((fromJSString <$> (js_getStyle (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.style Mozilla FontFace.style documentation> 
-getStyle ::
-         (MonadIO m, FromJSString result) => FontFace -> m result
-getStyle self = liftIO (fromJSString <$> (js_getStyle self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"weight\"] = $2; })" js_setWeight
-        :: FontFace -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"weight\"] = $2; })"
+        js_setWeight :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/weight MDN FontFace.weight documentation>
+setWeight :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setWeight self val = liftDOM (void ((js_setWeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.weight Mozilla FontFace.weight documentation> 
-setWeight :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
-setWeight self val = liftIO (js_setWeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"weight\"]; })" js_getWeight ::
-        FontFace -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"weight\"]; })"
+        js_getWeight :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/weight MDN FontFace.weight documentation>
+getWeight :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getWeight self = liftDOM ((fromJSString <$> (js_getWeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.weight Mozilla FontFace.weight documentation> 
-getWeight ::
-          (MonadIO m, FromJSString result) => FontFace -> m result
-getWeight self = liftIO (fromJSString <$> (js_getWeight self))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"stretch\"] = $2; })"
         js_setStretch :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/stretch MDN FontFace.stretch documentation>
+setStretch :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setStretch self val = liftDOM (void ((js_setStretch (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.stretch Mozilla FontFace.stretch documentation> 
-setStretch ::
-           (MonadIO m, ToJSString val) => FontFace -> val -> m ()
-setStretch self val = liftIO (js_setStretch self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stretch\"]; })" js_getStretch ::
-        FontFace -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"stretch\"]; })"
+        js_getStretch :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/stretch MDN FontFace.stretch documentation>
+getStretch :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getStretch self = liftDOM ((fromJSString <$> (js_getStretch (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.stretch Mozilla FontFace.stretch documentation> 
-getStretch ::
-           (MonadIO m, FromJSString result) => FontFace -> m result
-getStretch self = liftIO (fromJSString <$> (js_getStretch self))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"unicodeRange\"] = $2; })"
         js_setUnicodeRange :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/unicodeRange MDN FontFace.unicodeRange documentation>
+setUnicodeRange :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setUnicodeRange self val = liftDOM (void ((js_setUnicodeRange (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.unicodeRange Mozilla FontFace.unicodeRange documentation> 
-setUnicodeRange ::
-                (MonadIO m, ToJSString val) => FontFace -> val -> m ()
-setUnicodeRange self val
-  = liftIO (js_setUnicodeRange self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"unicodeRange\"]; })"
         js_getUnicodeRange :: FontFace -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.unicodeRange Mozilla FontFace.unicodeRange documentation> 
-getUnicodeRange ::
-                (MonadIO m, FromJSString result) => FontFace -> m result
-getUnicodeRange self
-  = liftIO (fromJSString <$> (js_getUnicodeRange self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"variant\"] = $2; })"
-        js_setVariant :: FontFace -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.variant Mozilla FontFace.variant documentation> 
-setVariant ::
-           (MonadIO m, ToJSString val) => FontFace -> val -> m ()
-setVariant self val = liftIO (js_setVariant self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"variant\"]; })" js_getVariant ::
-        FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/unicodeRange MDN FontFace.unicodeRange documentation>
+getUnicodeRange :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getUnicodeRange self = liftDOM ((fromJSString <$> (js_getUnicodeRange (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.variant Mozilla FontFace.variant documentation> 
-getVariant ::
-           (MonadIO m, FromJSString result) => FontFace -> m result
-getVariant self = liftIO (fromJSString <$> (js_getVariant self))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"featureSettings\"] = $2; })"
         js_setFeatureSettings :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/featureSettings MDN FontFace.featureSettings documentation>
+setFeatureSettings :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setFeatureSettings self val = liftDOM (void ((js_setFeatureSettings (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.featureSettings Mozilla FontFace.featureSettings documentation> 
-setFeatureSettings ::
-                   (MonadIO m, ToJSString val) => FontFace -> val -> m ()
-setFeatureSettings self val
-  = liftIO (js_setFeatureSettings self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"featureSettings\"]; })"
         js_getFeatureSettings :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/featureSettings MDN FontFace.featureSettings documentation>
+getFeatureSettings :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getFeatureSettings self = liftDOM ((fromJSString <$> (js_getFeatureSettings (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.featureSettings Mozilla FontFace.featureSettings documentation> 
-getFeatureSettings ::
-                   (MonadIO m, FromJSString result) => FontFace -> m result
-getFeatureSettings self
-  = liftIO (fromJSString <$> (js_getFeatureSettings self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
-        FontFace -> IO JSVal
+foreign import javascript safe "(($1, $2) => { $1[\"variationSettings\"] = $2; })"
+        js_setVariationSettings :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/variationSettings MDN FontFace.variationSettings documentation>
+setVariationSettings :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setVariationSettings self val = liftDOM (void ((js_setVariationSettings (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.status Mozilla FontFace.status documentation> 
-getStatus :: (MonadIO m) => FontFace -> m FontFaceLoadStatus
-getStatus self
-  = liftIO ((js_getStatus self) >>= fromJSValUnchecked)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"loaded\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getLoaded :: FontFace -> IO (JSVal, FontFace)
+foreign import javascript unsafe "(($1) => { return $1[\"variationSettings\"]; })"
+        js_getVariationSettings :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/variationSettings MDN FontFace.variationSettings documentation>
+getVariationSettings :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getVariationSettings self = liftDOM ((fromJSString <$> (js_getVariationSettings (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.loaded Mozilla FontFace.loaded documentation> 
-getLoaded :: (MonadIO m) => FontFace -> m FontFace
-getLoaded self
-  = liftIO ((js_getLoaded self) >>= checkPromiseResult)
+foreign import javascript safe "(($1, $2) => { $1[\"display\"] = $2; })"
+        js_setDisplay :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/display MDN FontFace.display documentation>
+setDisplay :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setDisplay self val = liftDOM (void ((js_setDisplay (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"display\"]; })"
+        js_getDisplay :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/display MDN FontFace.display documentation>
+getDisplay :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getDisplay self = liftDOM ((fromJSString <$> (js_getDisplay (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ascentOverride\"] = $2; })"
+        js_setAscentOverride :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/ascentOverride MDN FontFace.ascentOverride documentation>
+setAscentOverride :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setAscentOverride self val = liftDOM (void ((js_setAscentOverride (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ascentOverride\"]; })"
+        js_getAscentOverride :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/ascentOverride MDN FontFace.ascentOverride documentation>
+getAscentOverride :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getAscentOverride self = liftDOM ((fromJSString <$> (js_getAscentOverride (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"descentOverride\"] = $2; })"
+        js_setDescentOverride :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/descentOverride MDN FontFace.descentOverride documentation>
+setDescentOverride :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setDescentOverride self val = liftDOM (void ((js_setDescentOverride (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"descentOverride\"]; })"
+        js_getDescentOverride :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/descentOverride MDN FontFace.descentOverride documentation>
+getDescentOverride :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getDescentOverride self = liftDOM ((fromJSString <$> (js_getDescentOverride (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineGapOverride\"] = $2; })"
+        js_setLineGapOverride :: FontFace -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/lineGapOverride MDN FontFace.lineGapOverride documentation>
+setLineGapOverride :: (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
+setLineGapOverride self val = liftDOM (void ((js_setLineGapOverride (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineGapOverride\"]; })"
+        js_getLineGapOverride :: FontFace -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/lineGapOverride MDN FontFace.lineGapOverride documentation>
+getLineGapOverride :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getLineGapOverride self = liftDOM ((fromJSString <$> (js_getLineGapOverride (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })"
+        js_getStatus :: FontFace -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/status MDN FontFace.status documentation>
+getStatus :: (MonadDOM m) => FontFace -> m FontFaceLoadStatus
+getStatus self = liftDOM (((js_getStatus (self)) >>= fromJSValUnchecked))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"loaded\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getLoaded :: FontFace -> IO (JSVal, FontFace)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/loaded MDN FontFace.loaded documentation>
+getLoaded :: (MonadDOM m) => FontFace -> m FontFace
+getLoaded self = liftDOM (((js_getLoaded (self)) >>= checkPromiseResult))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFaceDescriptors.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFaceDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFaceDescriptors.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FontFaceDescriptors
+       (js_newFontFaceDescriptors, js_setStyle, js_getStyle, js_setWeight, js_getWeight, js_setStretch, js_getStretch, js_setUnicodeRange, js_getUnicodeRange, js_setFeatureSettings, js_getFeatureSettings, js_setVariationSettings, js_getVariationSettings, js_setDisplay, js_getDisplay, js_setAscentOverride, js_getAscentOverride, js_setDescentOverride, js_getDescentOverride, js_setLineGapOverride, js_getLineGapOverride, newFontFaceDescriptors, setStyle, getStyle, getStyleUnsafe, getStyleUnchecked, setWeight, getWeight, getWeightUnsafe, getWeightUnchecked, setStretch, getStretch, getStretchUnsafe, getStretchUnchecked, setUnicodeRange, getUnicodeRange, getUnicodeRangeUnsafe, getUnicodeRangeUnchecked, setFeatureSettings, getFeatureSettings, getFeatureSettingsUnsafe, getFeatureSettingsUnchecked, setVariationSettings, getVariationSettings, getVariationSettingsUnsafe, getVariationSettingsUnchecked, setDisplay, getDisplay, getDisplayUnsafe, getDisplayUnchecked, setAscentOverride, getAscentOverride, getAscentOverrideUnsafe, getAscentOverrideUnchecked, setDescentOverride, getDescentOverride, getDescentOverrideUnsafe, getDescentOverrideUnchecked, setLineGapOverride, getLineGapOverride, getLineGapOverrideUnsafe, getLineGapOverrideUnchecked, FontFaceDescriptors(..), gTypeFontFaceDescriptors)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFontFaceDescriptors :: IO FontFaceDescriptors
+-- | <https://drafts.csswg.org/css-font-loading-3/#dictdef-fontfacedescriptors FontFaceDescriptors specification>
+newFontFaceDescriptors :: (MonadDOM m) => m FontFaceDescriptors
+newFontFaceDescriptors = liftDOM ((js_newFontFaceDescriptors))
+
+foreign import javascript safe "(($1, $2) => { $1[\"style\"] = $2; })"
+        js_setStyle :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-style FontFaceDescriptors.style specification>
+setStyle :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setStyle self val = liftDOM (void ((js_setStyle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })"
+        js_getStyle :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-style FontFaceDescriptors.style specification>
+getStyle :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getStyle self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getStyle (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-style FontFaceDescriptors.style specification>
+getStyleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getStyleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getStyle (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-style FontFaceDescriptors.style specification>
+getStyleUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getStyleUnchecked self = liftDOM ((pFromJSVal <$> (js_getStyle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"weight\"] = $2; })"
+        js_setWeight :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-weight FontFaceDescriptors.weight specification>
+setWeight :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setWeight self val = liftDOM (void ((js_setWeight (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"weight\"]; })"
+        js_getWeight :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-weight FontFaceDescriptors.weight specification>
+getWeight :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getWeight self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getWeight (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-weight FontFaceDescriptors.weight specification>
+getWeightUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getWeightUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getWeight (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-weight FontFaceDescriptors.weight specification>
+getWeightUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getWeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getWeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stretch\"] = $2; })"
+        js_setStretch :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-stretch FontFaceDescriptors.stretch specification>
+setStretch :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setStretch self val = liftDOM (void ((js_setStretch (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stretch\"]; })"
+        js_getStretch :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-stretch FontFaceDescriptors.stretch specification>
+getStretch :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getStretch self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getStretch (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-stretch FontFaceDescriptors.stretch specification>
+getStretchUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getStretchUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getStretch (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-stretch FontFaceDescriptors.stretch specification>
+getStretchUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getStretchUnchecked self = liftDOM ((pFromJSVal <$> (js_getStretch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unicodeRange\"] = $2; })"
+        js_setUnicodeRange :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-unicoderange FontFaceDescriptors.unicodeRange specification>
+setUnicodeRange :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setUnicodeRange self val = liftDOM (void ((js_setUnicodeRange (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unicodeRange\"]; })"
+        js_getUnicodeRange :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-unicoderange FontFaceDescriptors.unicodeRange specification>
+getUnicodeRange :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getUnicodeRange self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUnicodeRange (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-unicoderange FontFaceDescriptors.unicodeRange specification>
+getUnicodeRangeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getUnicodeRangeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUnicodeRange (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-unicoderange FontFaceDescriptors.unicodeRange specification>
+getUnicodeRangeUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getUnicodeRangeUnchecked self = liftDOM ((pFromJSVal <$> (js_getUnicodeRange (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"featureSettings\"] = $2; })"
+        js_setFeatureSettings :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-featuresettings FontFaceDescriptors.featureSettings specification>
+setFeatureSettings :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setFeatureSettings self val = liftDOM (void ((js_setFeatureSettings (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"featureSettings\"]; })"
+        js_getFeatureSettings :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-featuresettings FontFaceDescriptors.featureSettings specification>
+getFeatureSettings :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getFeatureSettings self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getFeatureSettings (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-featuresettings FontFaceDescriptors.featureSettings specification>
+getFeatureSettingsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getFeatureSettingsUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getFeatureSettings (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-featuresettings FontFaceDescriptors.featureSettings specification>
+getFeatureSettingsUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getFeatureSettingsUnchecked self = liftDOM ((pFromJSVal <$> (js_getFeatureSettings (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"variationSettings\"] = $2; })"
+        js_setVariationSettings :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-variationsettings FontFaceDescriptors.variationSettings specification>
+setVariationSettings :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setVariationSettings self val = liftDOM (void ((js_setVariationSettings (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"variationSettings\"]; })"
+        js_getVariationSettings :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-variationsettings FontFaceDescriptors.variationSettings specification>
+getVariationSettings :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getVariationSettings self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getVariationSettings (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-variationsettings FontFaceDescriptors.variationSettings specification>
+getVariationSettingsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getVariationSettingsUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getVariationSettings (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-variationsettings FontFaceDescriptors.variationSettings specification>
+getVariationSettingsUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getVariationSettingsUnchecked self = liftDOM ((pFromJSVal <$> (js_getVariationSettings (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"display\"] = $2; })"
+        js_setDisplay :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-display FontFaceDescriptors.display specification>
+setDisplay :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setDisplay self val = liftDOM (void ((js_setDisplay (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"display\"]; })"
+        js_getDisplay :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-display FontFaceDescriptors.display specification>
+getDisplay :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getDisplay self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDisplay (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-display FontFaceDescriptors.display specification>
+getDisplayUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getDisplayUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDisplay (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-display FontFaceDescriptors.display specification>
+getDisplayUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getDisplayUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplay (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ascentOverride\"] = $2; })"
+        js_setAscentOverride :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-ascentoverride FontFaceDescriptors.ascentOverride specification>
+setAscentOverride :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setAscentOverride self val = liftDOM (void ((js_setAscentOverride (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ascentOverride\"]; })"
+        js_getAscentOverride :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-ascentoverride FontFaceDescriptors.ascentOverride specification>
+getAscentOverride :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getAscentOverride self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAscentOverride (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-ascentoverride FontFaceDescriptors.ascentOverride specification>
+getAscentOverrideUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getAscentOverrideUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAscentOverride (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-ascentoverride FontFaceDescriptors.ascentOverride specification>
+getAscentOverrideUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getAscentOverrideUnchecked self = liftDOM ((pFromJSVal <$> (js_getAscentOverride (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"descentOverride\"] = $2; })"
+        js_setDescentOverride :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-descentoverride FontFaceDescriptors.descentOverride specification>
+setDescentOverride :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setDescentOverride self val = liftDOM (void ((js_setDescentOverride (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"descentOverride\"]; })"
+        js_getDescentOverride :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-descentoverride FontFaceDescriptors.descentOverride specification>
+getDescentOverride :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getDescentOverride self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDescentOverride (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-descentoverride FontFaceDescriptors.descentOverride specification>
+getDescentOverrideUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getDescentOverrideUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDescentOverride (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-descentoverride FontFaceDescriptors.descentOverride specification>
+getDescentOverrideUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getDescentOverrideUnchecked self = liftDOM ((pFromJSVal <$> (js_getDescentOverride (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineGapOverride\"] = $2; })"
+        js_setLineGapOverride :: FontFaceDescriptors -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-linegapoverride FontFaceDescriptors.lineGapOverride specification>
+setLineGapOverride :: (MonadDOM m, ToJSString val) => FontFaceDescriptors -> val -> m ()
+setLineGapOverride self val = liftDOM (void ((js_setLineGapOverride (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineGapOverride\"]; })"
+        js_getLineGapOverride :: FontFaceDescriptors -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-linegapoverride FontFaceDescriptors.lineGapOverride specification>
+getLineGapOverride :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m (Maybe result)
+getLineGapOverride self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLineGapOverride (self))))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-linegapoverride FontFaceDescriptors.lineGapOverride specification>
+getLineGapOverrideUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FontFaceDescriptors -> m result
+getLineGapOverrideUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLineGapOverride (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacedescriptors-linegapoverride FontFaceDescriptors.lineGapOverride specification>
+getLineGapOverrideUnchecked :: (MonadDOM m, FromJSString result) => FontFaceDescriptors -> m result
+getLineGapOverrideUnchecked self = liftDOM ((pFromJSVal <$> (js_getLineGapOverride (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
@@ -1,157 +1,87 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.FontFaceSet
-       (js_newFontFaceSet, newFontFaceSet, js_has, has, has_, js_add, add,
-        add_, js_delete, delete, delete_, js_clear, clear, js_load, load,
-        load_, js_check, check, check_, js_getSize, getSize, loading,
-        loadingDone, loadingerror, js_getReady, getReady, js_getStatus,
-        getStatus, FontFaceSet(..), gTypeFontFaceSet)
+       (js_add, js_check, js_clear, js_delete, js_load, js_getReady, js_getStatus, add, add_, check, check_, clear, delete, delete_, load, load_, getReady, getStatus, loading, loadingDone, loadingerror, FontFaceSet(..), gTypeFontFaceSet)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return new window[\"FontFaceSet\"]($1); })"
-        js_newFontFaceSet :: JSVal -> IO FontFaceSet
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet Mozilla FontFaceSet documentation> 
-newFontFaceSet :: (MonadIO m) => [FontFace] -> m FontFaceSet
-newFontFaceSet initialFaces
-  = liftIO
-      (toJSVal initialFaces >>=
-         \ initialFaces' -> js_newFontFaceSet initialFaces')
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
-        :: FontFaceSet -> FontFace -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
-has :: (MonadIO m) => FontFaceSet -> FontFace -> m Bool
-has self font = liftIO (js_has self font)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
-has_ :: (MonadIO m) => FontFaceSet -> FontFace -> m ()
-has_ self font = liftIO (void (js_has self font))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"add\"]($2); })" js_add ::
-        FontFaceSet -> FontFace -> IO FontFaceSet
+foreign import javascript safe "(($1, $2) => { return $1[\"add\"]($2); })"
+        js_add :: FontFaceSet -> FontFace -> IO FontFaceSet
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/add MDN FontFaceSet.add documentation>
+add :: (MonadDOM m) => FontFaceSet -> FontFace -> m FontFaceSet
+add self font = liftDOM ((js_add (self) (font)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
-add :: (MonadIO m) => FontFaceSet -> FontFace -> m FontFaceSet
-add self font = liftIO (js_add self font)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/add MDN FontFaceSet.add documentation>
+add_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
+add_ self font = liftDOM (void ((js_add (self) (font))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
-add_ :: (MonadIO m) => FontFaceSet -> FontFace -> m ()
-add_ self font = liftIO (void (js_add self font))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"delete\"]($2) ? 1 : 0); })"
-        js_delete :: FontFaceSet -> FontFace -> IO Bool
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"check\"]($2, $3); })"
+        js_check :: FontFaceSet -> JSString -> (Optional JSString) -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/check MDN FontFaceSet.check documentation>
+check :: (MonadDOM m, ToJSString font, ToJSString text) => FontFaceSet -> font -> Maybe text -> m Bool
+check self font text = liftDOM ((js_check (self) (toJSString font) (toOptionalJSString text)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
-delete :: (MonadIO m) => FontFaceSet -> FontFace -> m Bool
-delete self font = liftIO (js_delete self font)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/check MDN FontFaceSet.check documentation>
+check_ :: (MonadDOM m, ToJSString font, ToJSString text) => FontFaceSet -> font -> Maybe text -> m ()
+check_ self font text = liftDOM (void ((js_check (self) (toJSString font) (toOptionalJSString text))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
-delete_ :: (MonadIO m) => FontFaceSet -> FontFace -> m ()
-delete_ self font = liftIO (void (js_delete self font))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        FontFaceSet -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: FontFaceSet -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/clear MDN FontFaceSet.clear documentation>
+clear :: (MonadDOM m) => FontFaceSet -> m ()
+clear self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.clear Mozilla FontFaceSet.clear documentation> 
-clear :: (MonadIO m) => FontFaceSet -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"load\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_load ::
-        FontFaceSet -> JSString -> Optional JSString -> IO (JSVal, JSVal)
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })"
+        js_delete :: FontFaceSet -> FontFace -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/delete MDN FontFaceSet.delete documentation>
+delete :: (MonadDOM m) => FontFaceSet -> FontFace -> m Bool
+delete self font = liftDOM ((js_delete (self) (font)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
-load ::
-     (MonadIO m, ToJSString font, ToJSString text) =>
-       FontFaceSet -> font -> Maybe text -> m [FontFace]
-load self font text
-  = liftIO
-      (((js_load self (toJSString font) (toOptionalJSString text)) >>=
-          checkPromiseResult)
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/delete MDN FontFaceSet.delete documentation>
+delete_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
+delete_ self font = liftDOM (void ((js_delete (self) (font))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
-load_ ::
-      (MonadIO m, ToJSString font, ToJSString text) =>
-        FontFaceSet -> font -> Maybe text -> m ()
-load_ self font text
-  = liftIO
-      (void (js_load self (toJSString font) (toOptionalJSString text)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return ($1[\"check\"]($2, $3) ? 1 : 0); })"
-        js_check :: FontFaceSet -> JSString -> Optional JSString -> IO Bool
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"load\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_load :: FontFaceSet -> JSString -> (Optional JSString) -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/load MDN FontFaceSet.load documentation>
+load :: (MonadDOM m, ToJSString font, ToJSString text) => FontFaceSet -> font -> Maybe text -> m [FontFace]
+load self font text = liftDOM ((((js_load (self) (toJSString font) (toOptionalJSString text)) >>= checkPromiseResult) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
-check ::
-      (MonadIO m, ToJSString font, ToJSString text) =>
-        FontFaceSet -> font -> Maybe text -> m Bool
-check self font text
-  = liftIO
-      (js_check self (toJSString font) (toOptionalJSString text))
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/load MDN FontFaceSet.load documentation>
+load_ :: (MonadDOM m, ToJSString font, ToJSString text) => FontFaceSet -> font -> Maybe text -> m ()
+load_ self font text = liftDOM (void (((js_load (self) (toJSString font) (toOptionalJSString text)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
-check_ ::
-       (MonadIO m, ToJSString font, ToJSString text) =>
-         FontFaceSet -> font -> Maybe text -> m ()
-check_ self font text
-  = liftIO
-      (void (js_check self (toJSString font) (toOptionalJSString text)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        FontFaceSet -> IO Int
+foreign import javascript interruptible "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: FontFaceSet -> IO (JSVal, FontFaceSet)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/ready MDN FontFaceSet.ready documentation>
+getReady :: (MonadDOM m) => FontFaceSet -> m FontFaceSet
+getReady self = liftDOM (((js_getReady (self)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.size Mozilla FontFaceSet.size documentation> 
-getSize :: (MonadIO m) => FontFaceSet -> m Int
-getSize self = liftIO (js_getSize self)
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })"
+        js_getStatus :: FontFaceSet -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/status MDN FontFaceSet.status documentation>
+getStatus :: (MonadDOM m) => FontFaceSet -> m FontFaceSetLoadStatus
+getStatus self = liftDOM (((js_getStatus (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloading Mozilla FontFaceSet.onloading documentation> 
-loading :: EventName FontFaceSet Event
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfaceset-onloading loading event>
+loading :: EventName FontFaceSet FontFaceSetLoadEvent
 loading = unsafeEventName (toJSString "loading")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloadingdone Mozilla FontFaceSet.onloadingdone documentation> 
-loadingDone :: EventName FontFaceSet Event
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfaceset-onloadingdone loadingdone event>
+loadingDone :: EventName FontFaceSet FontFaceSetLoadEvent
 loadingDone = unsafeEventName (toJSString "loadingdone")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloadingerror Mozilla FontFaceSet.onloadingerror documentation> 
-loadingerror :: EventName FontFaceSet onloadingerror
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfaceset-onloadingerror loadingerror event>
+loadingerror :: EventName FontFaceSet FontFaceSetLoadEvent
 loadingerror = unsafeEventName (toJSString "loadingerror")
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getReady :: FontFaceSet -> IO (JSVal, FontFaceSet)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.ready Mozilla FontFaceSet.ready documentation> 
-getReady :: (MonadIO m) => FontFaceSet -> m FontFaceSet
-getReady self = liftIO ((js_getReady self) >>= checkPromiseResult)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
-        FontFaceSet -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.status Mozilla FontFaceSet.status documentation> 
-getStatus :: (MonadIO m) => FontFaceSet -> m FontFaceSetLoadStatus
-getStatus self
-  = liftIO ((js_getStatus self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSetLoadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSetLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSetLoadEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FontFaceSetLoadEvent
+       (js_newFontFaceSetLoadEvent, js_getFontfaces, newFontFaceSetLoadEvent, getFontfaces, FontFaceSetLoadEvent(..), gTypeFontFaceSetLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"FontFaceSetLoadEvent\"]($1, $2); })"
+        js_newFontFaceSetLoadEvent :: JSString -> JSVal -> IO FontFaceSetLoadEvent
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSetLoadEvent/FontFaceSetLoadEvent MDN FontFaceSetLoadEvent. documentation>
+newFontFaceSetLoadEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe FontFaceSetLoadEventInit -> m FontFaceSetLoadEvent
+newFontFaceSetLoadEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newFontFaceSetLoadEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontfaces\"]; })"
+        js_getFontfaces :: FontFaceSetLoadEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSetLoadEvent/fontfaces MDN FontFaceSetLoadEvent.fontfaces documentation>
+getFontfaces :: (MonadDOM m) => FontFaceSetLoadEvent -> m [FontFace]
+getFontfaces self = liftDOM (((js_getFontfaces (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSetLoadEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSetLoadEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSetLoadEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FontFaceSetLoadEventInit
+       (js_newFontFaceSetLoadEventInit, js_setFontfaces, js_getFontfaces, newFontFaceSetLoadEventInit, setFontfaces, getFontfaces, getFontfacesUnsafe, getFontfacesUnchecked, FontFaceSetLoadEventInit(..), gTypeFontFaceSetLoadEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFontFaceSetLoadEventInit :: IO FontFaceSetLoadEventInit
+-- | <https://drafts.csswg.org/css-font-loading-3/#dictdef-fontfacesetloadeventinit FontFaceSetLoadEventInit specification>
+newFontFaceSetLoadEventInit :: (MonadDOM m) => m FontFaceSetLoadEventInit
+newFontFaceSetLoadEventInit = liftDOM ((js_newFontFaceSetLoadEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fontfaces\"] = $2; })"
+        js_setFontfaces :: FontFaceSetLoadEventInit -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacesetloadeventinit-fontfaces FontFaceSetLoadEventInit.fontfaces specification>
+setFontfaces :: (MonadDOM m) => FontFaceSetLoadEventInit -> [FontFace] -> m ()
+setFontfaces self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFontfaces (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontfaces\"]; })"
+        js_getFontfaces :: FontFaceSetLoadEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacesetloadeventinit-fontfaces FontFaceSetLoadEventInit.fontfaces specification>
+getFontfaces :: (MonadDOM m) => FontFaceSetLoadEventInit -> m (Maybe [FontFace])
+getFontfaces self = liftDOM (((js_getFontfaces (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacesetloadeventinit-fontfaces FontFaceSetLoadEventInit.fontfaces specification>
+getFontfacesUnsafe :: (MonadDOM m, HasCallStack) => FontFaceSetLoadEventInit -> m [FontFace]
+getFontfacesUnsafe self = liftDOM ((((js_getFontfaces (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacesetloadeventinit-fontfaces FontFaceSetLoadEventInit.fontfaces specification>
+getFontfacesUnchecked :: (MonadDOM m) => FontFaceSetLoadEventInit -> m [FontFace]
+getFontfacesUnchecked self = liftDOM (((js_getFontfaces (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSource.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSource.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FontFaceSource
+       (js_getFonts, getFonts, FontFaceSource(..), gTypeFontFaceSource, IsFontFaceSource, toFontFaceSource)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"fonts\"]; })"
+        js_getFonts :: FontFaceSource -> IO FontFaceSet
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fonts MDN FontFaceSource.fonts documentation>
+getFonts :: (MonadDOM m, IsFontFaceSource self) => self -> m FontFaceSet
+getFonts self = liftDOM ((js_getFonts ((Types.toFontFaceSource self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FormData.hs b/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
@@ -1,57 +1,97 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.FormData
-       (js_newFormData, newFormData, js_append, append, js_appendBlob,
-        appendBlob, FormData(..), gTypeFormData)
+       (js_newFormData, js_newFormData', js_append, js_appendBlob, js_delete, js_get, js_getAll, js_has, js_set, js_setBlobValueFilename, newFormData, newFormData', append, appendBlob, delete, get, get_, getUnsafe, getUnchecked, getAll, getAll_, has, has_, set, setBlobValueFilename, FormData(..), gTypeFormData)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return new window[\"FormData\"]($1); })"
-        js_newFormData :: Optional HTMLFormElement -> IO FormData
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
-newFormData :: (MonadIO m) => Maybe HTMLFormElement -> m FormData
-newFormData form = liftIO (js_newFormData (maybeToOptional form))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
-        :: FormData -> JSString -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"FormData\"]($1); })"
+        js_newFormData :: JSVal -> IO FormData
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/FormData MDN FormData. documentation>
+newFormData :: (MonadDOM m) => Maybe HTMLFormElement -> m FormData
+newFormData form = liftDOM (((P.maybe (P.return jsUndefined) toJSVal form) >>= \a1' -> js_newFormData a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData.append Mozilla FormData.append documentation> 
-append ::
-       (MonadIO m, ToJSString name, ToJSString value) =>
-         FormData -> name -> value -> m ()
-append self name value
-  = liftIO (js_append self (toJSString name) (toJSString value))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"append\"]($2, $3, $4); })"
-        js_appendBlob ::
-        FormData -> JSString -> Blob -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"FormData\"]($1, $2); })"
+        js_newFormData' :: JSVal -> JSVal -> IO FormData
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/FormData MDN FormData. documentation>
+newFormData' :: (MonadDOM m, IsHTMLElement submitter) => Maybe HTMLFormElement -> Maybe submitter -> m FormData
+newFormData' form submitter = liftDOM (((P.maybe (P.return jsUndefined) toJSVal form) >>= \a1' -> (toJSVal submitter) >>= \a2' -> js_newFormData' a1' a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData.append Mozilla FormData.append documentation> 
-appendBlob ::
-           (MonadIO m, ToJSString name, IsBlob value, ToJSString filename) =>
-             FormData -> name -> value -> Maybe filename -> m ()
-appendBlob self name value filename
-  = liftIO
-      (js_appendBlob self (toJSString name) (toBlob value)
-         (toOptionalJSString filename))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })"
+        js_append :: FormData -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/append MDN FormData.append documentation>
+append :: (MonadDOM m, ToJSString name, ToJSString value) => FormData -> name -> value -> m ()
+append self name value = liftDOM (void ((js_append (self) (toJSString name) (toJSString value))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"append\"]($2, $3, $4); })"
+        js_appendBlob :: FormData -> JSString -> Blob -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/append MDN FormData.append documentation>
+appendBlob :: (MonadDOM m, ToJSString name, IsBlob blobValue, ToJSString filename) => FormData -> name -> blobValue -> Maybe filename -> m ()
+appendBlob self name blobValue filename = liftDOM (void ((js_appendBlob (self) (toJSString name) (Types.toBlob blobValue) (toOptionalJSString filename))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })"
+        js_delete :: FormData -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/delete MDN FormData.delete documentation>
+delete :: (MonadDOM m, ToJSString name) => FormData -> name -> m ()
+delete self name = liftDOM (void ((js_delete (self) (toJSString name))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: FormData -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/get MDN FormData.get documentation>
+get :: (MonadDOM m, ToJSString name) => FormData -> name -> m (Maybe FormDataEntryValue)
+get self name = liftDOM (((js_get (self) (toJSString name)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/get MDN FormData.get documentation>
+get_ :: (MonadDOM m, ToJSString name) => FormData -> name -> m ()
+get_ self name = liftDOM (void ((js_get (self) (toJSString name))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/get MDN FormData.get documentation>
+getUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => FormData -> name -> m FormDataEntryValue
+getUnsafe self name = liftDOM ((((js_get (self) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/get MDN FormData.get documentation>
+getUnchecked :: (MonadDOM m, ToJSString name) => FormData -> name -> m FormDataEntryValue
+getUnchecked self name = liftDOM ((pFromJSVal <$> (js_get (self) (toJSString name))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getAll\"]($2); })"
+        js_getAll :: FormData -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/getAll MDN FormData.getAll documentation>
+getAll :: (MonadDOM m, ToJSString name) => FormData -> name -> m [FormDataEntryValue]
+getAll self name = liftDOM (((js_getAll (self) (toJSString name)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/getAll MDN FormData.getAll documentation>
+getAll_ :: (MonadDOM m, ToJSString name) => FormData -> name -> m ()
+getAll_ self name = liftDOM (void ((js_getAll (self) (toJSString name))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"has\"]($2); })"
+        js_has :: FormData -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/has MDN FormData.has documentation>
+has :: (MonadDOM m, ToJSString name) => FormData -> name -> m Bool
+has self name = liftDOM ((js_has (self) (toJSString name)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/has MDN FormData.has documentation>
+has_ :: (MonadDOM m, ToJSString name) => FormData -> name -> m ()
+has_ self name = liftDOM (void ((js_has (self) (toJSString name))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"set\"]($2, $3); })"
+        js_set :: FormData -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/set MDN FormData.set documentation>
+set :: (MonadDOM m, ToJSString name, ToJSString value) => FormData -> name -> value -> m ()
+set self name value = liftDOM (void ((js_set (self) (toJSString name) (toJSString value))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"set\"]($2, $3, $4); })"
+        js_setBlobValueFilename :: FormData -> JSString -> Blob -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/set MDN FormData.set documentation>
+setBlobValueFilename :: (MonadDOM m, ToJSString name, IsBlob blobValue, ToJSString filename) => FormData -> name -> blobValue -> Maybe filename -> m ()
+setBlobValueFilename self name blobValue filename = liftDOM (void ((js_setBlobValueFilename (self) (toJSString name) (Types.toBlob blobValue) (toOptionalJSString filename))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FormDataEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/FormDataEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FormDataEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FormDataEvent
+       (js_newFormDataEvent, js_getFormData, newFormDataEvent, getFormData, FormDataEvent(..), gTypeFormDataEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"FormDataEvent\"]($1, $2); })"
+        js_newFormDataEvent :: JSString -> FormDataEventInit -> IO FormDataEvent
+-- | <https://developer.mozilla.org/docs/Web/API/FormDataEvent/FormDataEvent MDN FormDataEvent. documentation>
+newFormDataEvent :: (MonadDOM m, ToJSString type') => type' -> FormDataEventInit -> m FormDataEvent
+newFormDataEvent type' eventInitDict = liftDOM ((js_newFormDataEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formData\"]; })"
+        js_getFormData :: FormDataEvent -> IO FormData
+-- | <https://developer.mozilla.org/docs/Web/API/FormDataEvent/formData MDN FormDataEvent.formData documentation>
+getFormData :: (MonadDOM m) => FormDataEvent -> m FormData
+getFormData self = liftDOM ((js_getFormData (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FormDataEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/FormDataEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FormDataEventInit.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FormDataEventInit
+       (js_newFormDataEventInit, js_setFormData, js_getFormData, newFormDataEventInit, setFormData, getFormData, FormDataEventInit(..), gTypeFormDataEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"formData\": $1}); })"
+        js_newFormDataEventInit :: FormData -> IO FormDataEventInit
+-- | <https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#formdataeventinit FormDataEventInit specification>
+newFormDataEventInit :: (MonadDOM m) => FormData -> m FormDataEventInit
+newFormDataEventInit formData = liftDOM ((js_newFormDataEventInit (formData)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formData\"] = $2; })"
+        js_setFormData :: FormDataEventInit -> FormData -> IO ()
+setFormData :: (MonadDOM m) => FormDataEventInit -> FormData -> m ()
+setFormData self val = liftDOM (void ((js_setFormData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formData\"]; })"
+        js_getFormData :: FormDataEventInit -> IO FormData
+getFormData :: (MonadDOM m) => FormDataEventInit -> m FormData
+getFormData self = liftDOM ((js_getFormData (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FragmentDirective.hs b/src/GHCJS/DOM/JSFFI/Generated/FragmentDirective.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FragmentDirective.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-to-text-fragment (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FragmentDirective
+       (FragmentDirective(..), gTypeFragmentDirective)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FrameRequestCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/FrameRequestCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FrameRequestCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FrameRequestCallback
+       (newFrameRequestCallback, newFrameRequestCallbackSync, newFrameRequestCallbackAsync, FrameRequestCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newFrameRequestCallback :: (MonadDOM m) => (Double -> IO ()) -> m FrameRequestCallback
+newFrameRequestCallback callback = liftDOM ((FrameRequestCallback . coerce) <$> syncCallback1 ContinueAsync (\ time -> do
+          time' <- fromJSValUnchecked time
+          callback time'))
+
+newFrameRequestCallbackSync :: (MonadDOM m) => (Double -> IO ()) -> m FrameRequestCallback
+newFrameRequestCallbackSync callback = liftDOM ((FrameRequestCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ time -> do
+          time' <- fromJSValUnchecked time
+          callback time'))
+
+newFrameRequestCallbackAsync :: (MonadDOM m) => (Double -> IO ()) -> m FrameRequestCallback
+newFrameRequestCallbackAsync callback = liftDOM ((FrameRequestCallback . coerce) <$> asyncCallback1 (\ time -> do
+          time' <- fromJSValUnchecked time
+          callback time'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FullscreenOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/FullscreenOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FullscreenOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fullscreen (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FullscreenOptions
+       (js_newFullscreenOptions, js_setKeyboardLock, js_getKeyboardLock, js_setNavigationUI, js_getNavigationUI, js_setScreen, js_getScreen, newFullscreenOptions, setKeyboardLock, getKeyboardLock, getKeyboardLockUnsafe, getKeyboardLockUnchecked, setNavigationUI, getNavigationUI, getNavigationUIUnsafe, getNavigationUIUnchecked, setScreen, getScreen, getScreenUnsafe, getScreenUnchecked, FullscreenOptions(..), gTypeFullscreenOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newFullscreenOptions :: IO FullscreenOptions
+-- | <https://fullscreen.spec.whatwg.org/#dictdef-fullscreenoptions FullscreenOptions specification>
+newFullscreenOptions :: (MonadDOM m) => m FullscreenOptions
+newFullscreenOptions = liftDOM ((js_newFullscreenOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keyboardLock\"] = $2; })"
+        js_setKeyboardLock :: FullscreenOptions -> JSVal -> IO ()
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-keyboardlock FullscreenOptions.keyboardLock specification>
+setKeyboardLock :: (MonadDOM m) => FullscreenOptions -> FullscreenKeyboardLock -> m ()
+setKeyboardLock self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setKeyboardLock (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keyboardLock\"]; })"
+        js_getKeyboardLock :: FullscreenOptions -> IO JSVal
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-keyboardlock FullscreenOptions.keyboardLock specification>
+getKeyboardLock :: (MonadDOM m) => FullscreenOptions -> m (Maybe FullscreenKeyboardLock)
+getKeyboardLock self = liftDOM (((js_getKeyboardLock (self)) >>= fromJSValUnchecked))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-keyboardlock FullscreenOptions.keyboardLock specification>
+getKeyboardLockUnsafe :: (MonadDOM m, HasCallStack) => FullscreenOptions -> m FullscreenKeyboardLock
+getKeyboardLockUnsafe self = liftDOM ((((js_getKeyboardLock (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-keyboardlock FullscreenOptions.keyboardLock specification>
+getKeyboardLockUnchecked :: (MonadDOM m) => FullscreenOptions -> m FullscreenKeyboardLock
+getKeyboardLockUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeyboardLock (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"navigationUI\"] = $2; })"
+        js_setNavigationUI :: FullscreenOptions -> JSVal -> IO ()
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-navigationui FullscreenOptions.navigationUI specification>
+setNavigationUI :: (MonadDOM m) => FullscreenOptions -> FullscreenNavigationUI -> m ()
+setNavigationUI self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setNavigationUI (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationUI\"]; })"
+        js_getNavigationUI :: FullscreenOptions -> IO JSVal
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-navigationui FullscreenOptions.navigationUI specification>
+getNavigationUI :: (MonadDOM m) => FullscreenOptions -> m (Maybe FullscreenNavigationUI)
+getNavigationUI self = liftDOM (((js_getNavigationUI (self)) >>= fromJSValUnchecked))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-navigationui FullscreenOptions.navigationUI specification>
+getNavigationUIUnsafe :: (MonadDOM m, HasCallStack) => FullscreenOptions -> m FullscreenNavigationUI
+getNavigationUIUnsafe self = liftDOM ((((js_getNavigationUI (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-navigationui FullscreenOptions.navigationUI specification>
+getNavigationUIUnchecked :: (MonadDOM m) => FullscreenOptions -> m FullscreenNavigationUI
+getNavigationUIUnchecked self = liftDOM ((pFromJSVal <$> (js_getNavigationUI (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"screen\"] = $2; })"
+        js_setScreen :: FullscreenOptions -> ScreenDetailed -> IO ()
+-- | <https://w3c.github.io/window-management/#dom-fullscreenoptions-screen FullscreenOptions.screen specification>
+setScreen :: (MonadDOM m) => FullscreenOptions -> ScreenDetailed -> m ()
+setScreen self val = liftDOM (void ((js_setScreen (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screen\"]; })"
+        js_getScreen :: FullscreenOptions -> IO JSVal
+-- | <https://w3c.github.io/window-management/#dom-fullscreenoptions-screen FullscreenOptions.screen specification>
+getScreen :: (MonadDOM m) => FullscreenOptions -> m (Maybe ScreenDetailed)
+getScreen self = liftDOM (((js_getScreen (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/window-management/#dom-fullscreenoptions-screen FullscreenOptions.screen specification>
+getScreenUnsafe :: (MonadDOM m, HasCallStack) => FullscreenOptions -> m ScreenDetailed
+getScreenUnsafe self = liftDOM ((((js_getScreen (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/window-management/#dom-fullscreenoptions-screen FullscreenOptions.screen specification>
+getScreenUnchecked :: (MonadDOM m) => FullscreenOptions -> m ScreenDetailed
+getScreenUnchecked self = liftDOM ((pFromJSVal <$> (js_getScreen (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FunctionStringCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/FunctionStringCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FunctionStringCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.FunctionStringCallback
+       (newFunctionStringCallback, newFunctionStringCallbackSync, newFunctionStringCallbackAsync, FunctionStringCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newFunctionStringCallback :: (MonadDOM m) => (JSString -> IO ()) -> m FunctionStringCallback
+newFunctionStringCallback callback = liftDOM ((FunctionStringCallback . coerce) <$> syncCallback1 ContinueAsync (\ data' -> do
+          data'' <- fromJSValUnchecked data'
+          callback data''))
+
+newFunctionStringCallbackSync :: (MonadDOM m) => (JSString -> IO ()) -> m FunctionStringCallback
+newFunctionStringCallbackSync callback = liftDOM ((FunctionStringCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ data' -> do
+          data'' <- fromJSValUnchecked data'
+          callback data''))
+
+newFunctionStringCallbackAsync :: (MonadDOM m) => (JSString -> IO ()) -> m FunctionStringCallback
+newFunctionStringCallbackAsync callback = liftDOM ((FunctionStringCallback . coerce) <$> asyncCallback1 (\ data' -> do
+          data'' <- fromJSValUnchecked data'
+          callback data''))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPU.hs b/src/GHCJS/DOM/JSFFI/Generated/GPU.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPU.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPU
+       (js_getPreferredCanvasFormat, js_requestAdapter, js_getWgslLanguageFeatures, getPreferredCanvasFormat, getPreferredCanvasFormat_, requestAdapter, requestAdapter_, requestAdapterUnsafe, requestAdapterUnchecked, getWgslLanguageFeatures, GPU(..), gTypeGPU)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getPreferredCanvasFormat\"](); })"
+        js_getPreferredCanvasFormat :: GPU -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/getPreferredCanvasFormat MDN GPU.getPreferredCanvasFormat documentation>
+getPreferredCanvasFormat :: (MonadDOM m) => GPU -> m GPUTextureFormat
+getPreferredCanvasFormat self = liftDOM (((js_getPreferredCanvasFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/getPreferredCanvasFormat MDN GPU.getPreferredCanvasFormat documentation>
+getPreferredCanvasFormat_ :: (MonadDOM m) => GPU -> m ()
+getPreferredCanvasFormat_ self = liftDOM (void ((js_getPreferredCanvasFormat (self))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"requestAdapter\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestAdapter :: GPU -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/requestAdapter MDN GPU.requestAdapter documentation>
+requestAdapter :: (MonadDOM m) => GPU -> Maybe GPURequestAdapterOptions -> m (Maybe GPUAdapter)
+requestAdapter self options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestAdapter (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/requestAdapter MDN GPU.requestAdapter documentation>
+requestAdapter_ :: (MonadDOM m) => GPU -> Maybe GPURequestAdapterOptions -> m ()
+requestAdapter_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestAdapter (self) a2') >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/requestAdapter MDN GPU.requestAdapter documentation>
+requestAdapterUnsafe :: (MonadDOM m, HasCallStack) => GPU -> Maybe GPURequestAdapterOptions -> m GPUAdapter
+requestAdapterUnsafe self options = liftDOM ((((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestAdapter (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/requestAdapter MDN GPU.requestAdapter documentation>
+requestAdapterUnchecked :: (MonadDOM m) => GPU -> Maybe GPURequestAdapterOptions -> m GPUAdapter
+requestAdapterUnchecked self options = liftDOM ((pFromJSVal <$> (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestAdapter (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"wgslLanguageFeatures\"]; })"
+        js_getWgslLanguageFeatures :: GPU -> IO WGSLLanguageFeatures
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/wgslLanguageFeatures MDN GPU.wgslLanguageFeatures documentation>
+getWgslLanguageFeatures :: (MonadDOM m) => GPU -> m WGSLLanguageFeatures
+getWgslLanguageFeatures self = liftDOM ((js_getWgslLanguageFeatures (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUAdapter.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUAdapter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUAdapter.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUAdapter
+       (js_requestDevice, js_getFeatures, js_getLimits, js_getInfo, requestDevice, requestDevice_, getFeatures, getLimits, getInfo, GPUAdapter(..), gTypeGPUAdapter)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"requestDevice\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestDevice :: GPUAdapter -> JSVal -> IO (JSVal, GPUDevice)
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/requestDevice MDN GPUAdapter.requestDevice documentation>
+requestDevice :: (MonadDOM m) => GPUAdapter -> Maybe GPUDeviceDescriptor -> m GPUDevice
+requestDevice self descriptor = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_requestDevice (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/requestDevice MDN GPUAdapter.requestDevice documentation>
+requestDevice_ :: (MonadDOM m) => GPUAdapter -> Maybe GPUDeviceDescriptor -> m ()
+requestDevice_ self descriptor = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_requestDevice (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"features\"]; })"
+        js_getFeatures :: GPUAdapter -> IO GPUSupportedFeatures
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/features MDN GPUAdapter.features documentation>
+getFeatures :: (MonadDOM m) => GPUAdapter -> m GPUSupportedFeatures
+getFeatures self = liftDOM ((js_getFeatures (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"limits\"]; })"
+        js_getLimits :: GPUAdapter -> IO GPUSupportedLimits
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/limits MDN GPUAdapter.limits documentation>
+getLimits :: (MonadDOM m) => GPUAdapter -> m GPUSupportedLimits
+getLimits self = liftDOM ((js_getLimits (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"info\"]; })"
+        js_getInfo :: GPUAdapter -> IO GPUAdapterInfo
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/info MDN GPUAdapter.info documentation>
+getInfo :: (MonadDOM m) => GPUAdapter -> m GPUAdapterInfo
+getInfo self = liftDOM ((js_getInfo (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUAdapterInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUAdapterInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUAdapterInfo.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUAdapterInfo
+       (js_getVendor, js_getArchitecture, js_getDevice, js_getDescription, js_getSubgroupMinSize, js_getSubgroupMaxSize, js_getIsFallbackAdapter, getVendor, getArchitecture, getDevice, getDescription, getSubgroupMinSize, getSubgroupMaxSize, getIsFallbackAdapter, GPUAdapterInfo(..), gTypeGPUAdapterInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"vendor\"]; })"
+        js_getVendor :: GPUAdapterInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/vendor MDN GPUAdapterInfo.vendor documentation>
+getVendor :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getVendor self = liftDOM ((fromJSString <$> (js_getVendor (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"architecture\"]; })"
+        js_getArchitecture :: GPUAdapterInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/architecture MDN GPUAdapterInfo.architecture documentation>
+getArchitecture :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getArchitecture self = liftDOM ((fromJSString <$> (js_getArchitecture (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"device\"]; })"
+        js_getDevice :: GPUAdapterInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/device MDN GPUAdapterInfo.device documentation>
+getDevice :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getDevice self = liftDOM ((fromJSString <$> (js_getDevice (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
+        js_getDescription :: GPUAdapterInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/description MDN GPUAdapterInfo.description documentation>
+getDescription :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getDescription self = liftDOM ((fromJSString <$> (js_getDescription (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"subgroupMinSize\"]; })"
+        js_getSubgroupMinSize :: GPUAdapterInfo -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/subgroupMinSize MDN GPUAdapterInfo.subgroupMinSize documentation>
+getSubgroupMinSize :: (MonadDOM m) => GPUAdapterInfo -> m Word
+getSubgroupMinSize self = liftDOM ((js_getSubgroupMinSize (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"subgroupMaxSize\"]; })"
+        js_getSubgroupMaxSize :: GPUAdapterInfo -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/subgroupMaxSize MDN GPUAdapterInfo.subgroupMaxSize documentation>
+getSubgroupMaxSize :: (MonadDOM m) => GPUAdapterInfo -> m Word
+getSubgroupMaxSize self = liftDOM ((js_getSubgroupMaxSize (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isFallbackAdapter\"]; })"
+        js_getIsFallbackAdapter :: GPUAdapterInfo -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/isFallbackAdapter MDN GPUAdapterInfo.isFallbackAdapter documentation>
+getIsFallbackAdapter :: (MonadDOM m) => GPUAdapterInfo -> m Bool
+getIsFallbackAdapter self = liftDOM ((js_getIsFallbackAdapter (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroup.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroup.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroup.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBindGroup
+       (GPUBindGroup(..), gTypeGPUBindGroup)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupDescriptor.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBindGroupDescriptor
+       (js_newGPUBindGroupDescriptor, js_setLayout, js_getLayout, js_setEntries, js_getEntries, newGPUBindGroupDescriptor, setLayout, getLayout, setEntries, getEntries, GPUBindGroupDescriptor(..), gTypeGPUBindGroupDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"layout\": $1, \"entries\": $2}); })"
+        js_newGPUBindGroupDescriptor :: GPUBindGroupLayout -> JSVal -> IO GPUBindGroupDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgroupdescriptor GPUBindGroupDescriptor specification>
+newGPUBindGroupDescriptor :: (MonadDOM m) => GPUBindGroupLayout -> [GPUBindGroupEntry] -> m GPUBindGroupDescriptor
+newGPUBindGroupDescriptor layout entries = liftDOM (((toJSVal entries) >>= \a2' -> js_newGPUBindGroupDescriptor (layout) a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"layout\"] = $2; })"
+        js_setLayout :: GPUBindGroupDescriptor -> GPUBindGroupLayout -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-layout GPUBindGroupDescriptor.layout specification>
+setLayout :: (MonadDOM m) => GPUBindGroupDescriptor -> GPUBindGroupLayout -> m ()
+setLayout self val = liftDOM (void ((js_setLayout (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"layout\"]; })"
+        js_getLayout :: GPUBindGroupDescriptor -> IO GPUBindGroupLayout
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-layout GPUBindGroupDescriptor.layout specification>
+getLayout :: (MonadDOM m) => GPUBindGroupDescriptor -> m GPUBindGroupLayout
+getLayout self = liftDOM ((js_getLayout (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"entries\"] = $2; })"
+        js_setEntries :: GPUBindGroupDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-entries GPUBindGroupDescriptor.entries specification>
+setEntries :: (MonadDOM m) => GPUBindGroupDescriptor -> [GPUBindGroupEntry] -> m ()
+setEntries self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEntries (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"entries\"]; })"
+        js_getEntries :: GPUBindGroupDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-entries GPUBindGroupDescriptor.entries specification>
+getEntries :: (MonadDOM m) => GPUBindGroupDescriptor -> m [GPUBindGroupEntry]
+getEntries self = liftDOM (((js_getEntries (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupEntry.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBindGroupEntry
+       (js_newGPUBindGroupEntry, js_setBinding, js_getBinding, js_setResource, js_getResource, newGPUBindGroupEntry, setBinding, getBinding, setResource, getResource, GPUBindGroupEntry(..), gTypeGPUBindGroupEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"binding\": $1, \"resource\": $2}); })"
+        js_newGPUBindGroupEntry :: Word -> GPUBindingResource -> IO GPUBindGroupEntry
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgroupentry GPUBindGroupEntry specification>
+newGPUBindGroupEntry :: (MonadDOM m, IsGPUBindingResource resource) => Word -> resource -> m GPUBindGroupEntry
+newGPUBindGroupEntry binding resource = liftDOM ((js_newGPUBindGroupEntry (binding) (Types.toGPUBindingResource resource)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"binding\"] = $2; })"
+        js_setBinding :: GPUBindGroupEntry -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-binding GPUBindGroupEntry.binding specification>
+setBinding :: (MonadDOM m) => GPUBindGroupEntry -> Word -> m ()
+setBinding self val = liftDOM (void ((js_setBinding (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"binding\"]; })"
+        js_getBinding :: GPUBindGroupEntry -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-binding GPUBindGroupEntry.binding specification>
+getBinding :: (MonadDOM m) => GPUBindGroupEntry -> m Word
+getBinding self = liftDOM ((js_getBinding (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resource\"] = $2; })"
+        js_setResource :: GPUBindGroupEntry -> GPUBindingResource -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-resource GPUBindGroupEntry.resource specification>
+setResource :: (MonadDOM m, IsGPUBindingResource val) => GPUBindGroupEntry -> val -> m ()
+setResource self val = liftDOM (void ((js_setResource (self) (Types.toGPUBindingResource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resource\"]; })"
+        js_getResource :: GPUBindGroupEntry -> IO GPUBindingResource
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-resource GPUBindGroupEntry.resource specification>
+getResource :: (MonadDOM m) => GPUBindGroupEntry -> m GPUBindingResource
+getResource self = liftDOM ((js_getResource (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayout.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayout
+       (GPUBindGroupLayout(..), gTypeGPUBindGroupLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayoutDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayoutDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayoutDescriptor.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayoutDescriptor
+       (js_newGPUBindGroupLayoutDescriptor, js_setEntries, js_getEntries, newGPUBindGroupLayoutDescriptor, setEntries, getEntries, GPUBindGroupLayoutDescriptor(..), gTypeGPUBindGroupLayoutDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"entries\": $1}); })"
+        js_newGPUBindGroupLayoutDescriptor :: JSVal -> IO GPUBindGroupLayoutDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgrouplayoutdescriptor GPUBindGroupLayoutDescriptor specification>
+newGPUBindGroupLayoutDescriptor :: (MonadDOM m) => [GPUBindGroupLayoutEntry] -> m GPUBindGroupLayoutDescriptor
+newGPUBindGroupLayoutDescriptor entries = liftDOM (((toJSVal entries) >>= \a1' -> js_newGPUBindGroupLayoutDescriptor a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"entries\"] = $2; })"
+        js_setEntries :: GPUBindGroupLayoutDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutdescriptor-entries GPUBindGroupLayoutDescriptor.entries specification>
+setEntries :: (MonadDOM m) => GPUBindGroupLayoutDescriptor -> [GPUBindGroupLayoutEntry] -> m ()
+setEntries self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEntries (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"entries\"]; })"
+        js_getEntries :: GPUBindGroupLayoutDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutdescriptor-entries GPUBindGroupLayoutDescriptor.entries specification>
+getEntries :: (MonadDOM m) => GPUBindGroupLayoutDescriptor -> m [GPUBindGroupLayoutEntry]
+getEntries self = liftDOM (((js_getEntries (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayoutEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayoutEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBindGroupLayoutEntry.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBindGroupLayoutEntry
+       (js_newGPUBindGroupLayoutEntry, js_setBinding, js_getBinding, js_setVisibility, js_getVisibility, js_setBuffer, js_getBuffer, js_setSampler, js_getSampler, js_setTexture, js_getTexture, js_setStorageTexture, js_getStorageTexture, js_setExternalTexture, js_getExternalTexture, newGPUBindGroupLayoutEntry, setBinding, getBinding, setVisibility, getVisibility, setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked, setSampler, getSampler, getSamplerUnsafe, getSamplerUnchecked, setTexture, getTexture, getTextureUnsafe, getTextureUnchecked, setStorageTexture, getStorageTexture, getStorageTextureUnsafe, getStorageTextureUnchecked, setExternalTexture, getExternalTexture, getExternalTextureUnsafe, getExternalTextureUnchecked, GPUBindGroupLayoutEntry(..), gTypeGPUBindGroupLayoutEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"binding\": $1, \"visibility\": $2}); })"
+        js_newGPUBindGroupLayoutEntry :: Word -> Word -> IO GPUBindGroupLayoutEntry
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgrouplayoutentry GPUBindGroupLayoutEntry specification>
+newGPUBindGroupLayoutEntry :: (MonadDOM m) => Word -> Word -> m GPUBindGroupLayoutEntry
+newGPUBindGroupLayoutEntry binding visibility = liftDOM ((js_newGPUBindGroupLayoutEntry (binding) (visibility)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"binding\"] = $2; })"
+        js_setBinding :: GPUBindGroupLayoutEntry -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-binding GPUBindGroupLayoutEntry.binding specification>
+setBinding :: (MonadDOM m) => GPUBindGroupLayoutEntry -> Word -> m ()
+setBinding self val = liftDOM (void ((js_setBinding (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"binding\"]; })"
+        js_getBinding :: GPUBindGroupLayoutEntry -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-binding GPUBindGroupLayoutEntry.binding specification>
+getBinding :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m Word
+getBinding self = liftDOM ((js_getBinding (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"visibility\"] = $2; })"
+        js_setVisibility :: GPUBindGroupLayoutEntry -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-visibility GPUBindGroupLayoutEntry.visibility specification>
+setVisibility :: (MonadDOM m) => GPUBindGroupLayoutEntry -> Word -> m ()
+setVisibility self val = liftDOM (void ((js_setVisibility (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visibility\"]; })"
+        js_getVisibility :: GPUBindGroupLayoutEntry -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-visibility GPUBindGroupLayoutEntry.visibility specification>
+getVisibility :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m Word
+getVisibility self = liftDOM ((js_getVisibility (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer :: GPUBindGroupLayoutEntry -> GPUBufferBindingLayout -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-buffer GPUBindGroupLayoutEntry.buffer specification>
+setBuffer :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUBufferBindingLayout -> m ()
+setBuffer self val = liftDOM (void ((js_setBuffer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })"
+        js_getBuffer :: GPUBindGroupLayoutEntry -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-buffer GPUBindGroupLayoutEntry.buffer specification>
+getBuffer :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUBufferBindingLayout)
+getBuffer self = liftDOM (((js_getBuffer (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-buffer GPUBindGroupLayoutEntry.buffer specification>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUBufferBindingLayout
+getBufferUnsafe self = liftDOM ((((js_getBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-buffer GPUBindGroupLayoutEntry.buffer specification>
+getBufferUnchecked :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m GPUBufferBindingLayout
+getBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getBuffer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampler\"] = $2; })"
+        js_setSampler :: GPUBindGroupLayoutEntry -> GPUSamplerBindingLayout -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-sampler GPUBindGroupLayoutEntry.sampler specification>
+setSampler :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUSamplerBindingLayout -> m ()
+setSampler self val = liftDOM (void ((js_setSampler (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampler\"]; })"
+        js_getSampler :: GPUBindGroupLayoutEntry -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-sampler GPUBindGroupLayoutEntry.sampler specification>
+getSampler :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUSamplerBindingLayout)
+getSampler self = liftDOM (((js_getSampler (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-sampler GPUBindGroupLayoutEntry.sampler specification>
+getSamplerUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUSamplerBindingLayout
+getSamplerUnsafe self = liftDOM ((((js_getSampler (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-sampler GPUBindGroupLayoutEntry.sampler specification>
+getSamplerUnchecked :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m GPUSamplerBindingLayout
+getSamplerUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampler (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"texture\"] = $2; })"
+        js_setTexture :: GPUBindGroupLayoutEntry -> GPUTextureBindingLayout -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-texture GPUBindGroupLayoutEntry.texture specification>
+setTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUTextureBindingLayout -> m ()
+setTexture self val = liftDOM (void ((js_setTexture (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"texture\"]; })"
+        js_getTexture :: GPUBindGroupLayoutEntry -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-texture GPUBindGroupLayoutEntry.texture specification>
+getTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUTextureBindingLayout)
+getTexture self = liftDOM (((js_getTexture (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-texture GPUBindGroupLayoutEntry.texture specification>
+getTextureUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUTextureBindingLayout
+getTextureUnsafe self = liftDOM ((((js_getTexture (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-texture GPUBindGroupLayoutEntry.texture specification>
+getTextureUnchecked :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m GPUTextureBindingLayout
+getTextureUnchecked self = liftDOM ((pFromJSVal <$> (js_getTexture (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"storageTexture\"] = $2; })"
+        js_setStorageTexture :: GPUBindGroupLayoutEntry -> GPUStorageTextureBindingLayout -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-storagetexture GPUBindGroupLayoutEntry.storageTexture specification>
+setStorageTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUStorageTextureBindingLayout -> m ()
+setStorageTexture self val = liftDOM (void ((js_setStorageTexture (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"storageTexture\"]; })"
+        js_getStorageTexture :: GPUBindGroupLayoutEntry -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-storagetexture GPUBindGroupLayoutEntry.storageTexture specification>
+getStorageTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUStorageTextureBindingLayout)
+getStorageTexture self = liftDOM (((js_getStorageTexture (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-storagetexture GPUBindGroupLayoutEntry.storageTexture specification>
+getStorageTextureUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUStorageTextureBindingLayout
+getStorageTextureUnsafe self = liftDOM ((((js_getStorageTexture (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-storagetexture GPUBindGroupLayoutEntry.storageTexture specification>
+getStorageTextureUnchecked :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m GPUStorageTextureBindingLayout
+getStorageTextureUnchecked self = liftDOM ((pFromJSVal <$> (js_getStorageTexture (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"externalTexture\"] = $2; })"
+        js_setExternalTexture :: GPUBindGroupLayoutEntry -> GPUExternalTextureBindingLayout -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-externaltexture GPUBindGroupLayoutEntry.externalTexture specification>
+setExternalTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUExternalTextureBindingLayout -> m ()
+setExternalTexture self val = liftDOM (void ((js_setExternalTexture (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"externalTexture\"]; })"
+        js_getExternalTexture :: GPUBindGroupLayoutEntry -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-externaltexture GPUBindGroupLayoutEntry.externalTexture specification>
+getExternalTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUExternalTextureBindingLayout)
+getExternalTexture self = liftDOM (((js_getExternalTexture (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-externaltexture GPUBindGroupLayoutEntry.externalTexture specification>
+getExternalTextureUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUExternalTextureBindingLayout
+getExternalTextureUnsafe self = liftDOM ((((js_getExternalTexture (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-externaltexture GPUBindGroupLayoutEntry.externalTexture specification>
+getExternalTextureUnchecked :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m GPUExternalTextureBindingLayout
+getExternalTextureUnchecked self = liftDOM ((pFromJSVal <$> (js_getExternalTexture (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBindingCommandsMixin.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBindingCommandsMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBindingCommandsMixin.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBindingCommandsMixin
+       (js_setBindGroup, js_setBindGroupDynamicOffsetsDataDynamicOffsetsDataStartDynamicOffsetsDataLength, setBindGroup, setBindGroupDynamicOffsetsDataDynamicOffsetsDataStartDynamicOffsetsDataLength, GPUBindingCommandsMixin(..), gTypeGPUBindingCommandsMixin, IsGPUBindingCommandsMixin, toGPUBindingCommandsMixin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setBindGroup\"]($2, $3, $4); })"
+        js_setBindGroup :: GPUBindingCommandsMixin -> Word -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/setBindGroup MDN GPUBindingCommandsMixin.setBindGroup documentation>
+setBindGroup :: (MonadDOM m, IsGPUBindingCommandsMixin self) => self -> Word -> Maybe GPUBindGroup -> Maybe [Word] -> m ()
+setBindGroup self index bindGroup dynamicOffsets = liftDOM (void (((toJSVal bindGroup) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal dynamicOffsets) >>= \a4' -> js_setBindGroup ((Types.toGPUBindingCommandsMixin self)) (index) a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"setBindGroup\"]($2, $3, $4, $5, $6); })"
+        js_setBindGroupDynamicOffsetsDataDynamicOffsetsDataStartDynamicOffsetsDataLength :: GPUBindingCommandsMixin -> Word -> JSVal -> Uint32Array -> JSVal -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/setBindGroup MDN GPUBindingCommandsMixin.setBindGroup documentation>
+setBindGroupDynamicOffsetsDataDynamicOffsetsDataStartDynamicOffsetsDataLength :: (MonadDOM m, IsGPUBindingCommandsMixin self, IsUint32Array dynamicOffsetsData) => self -> Word -> Maybe GPUBindGroup -> dynamicOffsetsData -> Word53 -> Word -> m ()
+setBindGroupDynamicOffsetsDataDynamicOffsetsDataStartDynamicOffsetsDataLength self index bindGroup dynamicOffsetsData dynamicOffsetsDataStart dynamicOffsetsDataLength = liftDOM (void (((toJSVal bindGroup) >>= \a3' -> (toJSVal dynamicOffsetsDataStart) >>= \a5' -> js_setBindGroupDynamicOffsetsDataDynamicOffsetsDataStartDynamicOffsetsDataLength ((Types.toGPUBindingCommandsMixin self)) (index) a3' (Types.toUint32Array dynamicOffsetsData) a5' (dynamicOffsetsDataLength))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBlendComponent.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBlendComponent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBlendComponent.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBlendComponent
+       (js_newGPUBlendComponent, js_setOperation, js_getOperation, js_setSrcFactor, js_getSrcFactor, js_setDstFactor, js_getDstFactor, newGPUBlendComponent, setOperation, getOperation, getOperationUnsafe, getOperationUnchecked, setSrcFactor, getSrcFactor, getSrcFactorUnsafe, getSrcFactorUnchecked, setDstFactor, getDstFactor, getDstFactorUnsafe, getDstFactorUnchecked, GPUBlendComponent(..), gTypeGPUBlendComponent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUBlendComponent :: IO GPUBlendComponent
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpublendcomponent GPUBlendComponent specification>
+newGPUBlendComponent :: (MonadDOM m) => m GPUBlendComponent
+newGPUBlendComponent = liftDOM ((js_newGPUBlendComponent))
+
+foreign import javascript safe "(($1, $2) => { $1[\"operation\"] = $2; })"
+        js_setOperation :: GPUBlendComponent -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-operation GPUBlendComponent.operation specification>
+setOperation :: (MonadDOM m) => GPUBlendComponent -> GPUBlendOperation -> m ()
+setOperation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOperation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"operation\"]; })"
+        js_getOperation :: GPUBlendComponent -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-operation GPUBlendComponent.operation specification>
+getOperation :: (MonadDOM m) => GPUBlendComponent -> m (Maybe GPUBlendOperation)
+getOperation self = liftDOM (((js_getOperation (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-operation GPUBlendComponent.operation specification>
+getOperationUnsafe :: (MonadDOM m, HasCallStack) => GPUBlendComponent -> m GPUBlendOperation
+getOperationUnsafe self = liftDOM ((((js_getOperation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-operation GPUBlendComponent.operation specification>
+getOperationUnchecked :: (MonadDOM m) => GPUBlendComponent -> m GPUBlendOperation
+getOperationUnchecked self = liftDOM ((pFromJSVal <$> (js_getOperation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"srcFactor\"] = $2; })"
+        js_setSrcFactor :: GPUBlendComponent -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-srcfactor GPUBlendComponent.srcFactor specification>
+setSrcFactor :: (MonadDOM m) => GPUBlendComponent -> GPUBlendFactor -> m ()
+setSrcFactor self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSrcFactor (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"srcFactor\"]; })"
+        js_getSrcFactor :: GPUBlendComponent -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-srcfactor GPUBlendComponent.srcFactor specification>
+getSrcFactor :: (MonadDOM m) => GPUBlendComponent -> m (Maybe GPUBlendFactor)
+getSrcFactor self = liftDOM (((js_getSrcFactor (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-srcfactor GPUBlendComponent.srcFactor specification>
+getSrcFactorUnsafe :: (MonadDOM m, HasCallStack) => GPUBlendComponent -> m GPUBlendFactor
+getSrcFactorUnsafe self = liftDOM ((((js_getSrcFactor (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-srcfactor GPUBlendComponent.srcFactor specification>
+getSrcFactorUnchecked :: (MonadDOM m) => GPUBlendComponent -> m GPUBlendFactor
+getSrcFactorUnchecked self = liftDOM ((pFromJSVal <$> (js_getSrcFactor (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dstFactor\"] = $2; })"
+        js_setDstFactor :: GPUBlendComponent -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-dstfactor GPUBlendComponent.dstFactor specification>
+setDstFactor :: (MonadDOM m) => GPUBlendComponent -> GPUBlendFactor -> m ()
+setDstFactor self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDstFactor (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dstFactor\"]; })"
+        js_getDstFactor :: GPUBlendComponent -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-dstfactor GPUBlendComponent.dstFactor specification>
+getDstFactor :: (MonadDOM m) => GPUBlendComponent -> m (Maybe GPUBlendFactor)
+getDstFactor self = liftDOM (((js_getDstFactor (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-dstfactor GPUBlendComponent.dstFactor specification>
+getDstFactorUnsafe :: (MonadDOM m, HasCallStack) => GPUBlendComponent -> m GPUBlendFactor
+getDstFactorUnsafe self = liftDOM ((((js_getDstFactor (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-dstfactor GPUBlendComponent.dstFactor specification>
+getDstFactorUnchecked :: (MonadDOM m) => GPUBlendComponent -> m GPUBlendFactor
+getDstFactorUnchecked self = liftDOM ((pFromJSVal <$> (js_getDstFactor (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBlendState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBlendState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBlendState.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBlendState
+       (js_newGPUBlendState, js_setColor, js_getColor, js_setAlpha, js_getAlpha, newGPUBlendState, setColor, getColor, setAlpha, getAlpha, GPUBlendState(..), gTypeGPUBlendState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"color\": $1, \"alpha\": $2}); })"
+        js_newGPUBlendState :: GPUBlendComponent -> GPUBlendComponent -> IO GPUBlendState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpublendstate GPUBlendState specification>
+newGPUBlendState :: (MonadDOM m) => GPUBlendComponent -> GPUBlendComponent -> m GPUBlendState
+newGPUBlendState color alpha = liftDOM ((js_newGPUBlendState (color) (alpha)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"color\"] = $2; })"
+        js_setColor :: GPUBlendState -> GPUBlendComponent -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-color GPUBlendState.color specification>
+setColor :: (MonadDOM m) => GPUBlendState -> GPUBlendComponent -> m ()
+setColor self val = liftDOM (void ((js_setColor (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"color\"]; })"
+        js_getColor :: GPUBlendState -> IO GPUBlendComponent
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-color GPUBlendState.color specification>
+getColor :: (MonadDOM m) => GPUBlendState -> m GPUBlendComponent
+getColor self = liftDOM ((js_getColor (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alpha\"] = $2; })"
+        js_setAlpha :: GPUBlendState -> GPUBlendComponent -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-alpha GPUBlendState.alpha specification>
+setAlpha :: (MonadDOM m) => GPUBlendState -> GPUBlendComponent -> m ()
+setAlpha self val = liftDOM (void ((js_setAlpha (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: GPUBlendState -> IO GPUBlendComponent
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-alpha GPUBlendState.alpha specification>
+getAlpha :: (MonadDOM m) => GPUBlendState -> m GPUBlendComponent
+getAlpha self = liftDOM ((js_getAlpha (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBuffer.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBuffer
+       (js_destroy, js_getMappedRange, js_mapAsync, js_unmap, js_getSize, js_getUsage, js_getMapState, destroy, getMappedRange, getMappedRange_, mapAsync, unmap, getSize, getUsage, getMapState, GPUBuffer(..), gTypeGPUBuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"destroy\"](); })"
+        js_destroy :: GPUBuffer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/destroy MDN GPUBuffer.destroy documentation>
+destroy :: (MonadDOM m) => GPUBuffer -> m ()
+destroy self = liftDOM (void ((js_destroy (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getMappedRange\"]($2, $3); })"
+        js_getMappedRange :: GPUBuffer -> JSVal -> JSVal -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/getMappedRange MDN GPUBuffer.getMappedRange documentation>
+getMappedRange :: (MonadDOM m) => GPUBuffer -> Maybe Word53 -> Maybe Word53 -> m ArrayBuffer
+getMappedRange self offset size = liftDOM (((P.maybe (P.return jsUndefined) toJSVal offset) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a3' -> js_getMappedRange (self) a2' a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/getMappedRange MDN GPUBuffer.getMappedRange documentation>
+getMappedRange_ :: (MonadDOM m) => GPUBuffer -> Maybe Word53 -> Maybe Word53 -> m ()
+getMappedRange_ self offset size = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal offset) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a3' -> js_getMappedRange (self) a2' a3')))
+
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"mapAsync\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_mapAsync :: GPUBuffer -> Word -> JSVal -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/mapAsync MDN GPUBuffer.mapAsync documentation>
+mapAsync :: (MonadDOM m) => GPUBuffer -> Word -> Maybe Word53 -> Maybe Word53 -> m ()
+mapAsync self mode offset size = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal offset) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a4' -> js_mapAsync (self) (mode) a3' a4') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"unmap\"](); })"
+        js_unmap :: GPUBuffer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/unmap MDN GPUBuffer.unmap documentation>
+unmap :: (MonadDOM m) => GPUBuffer -> m ()
+unmap self = liftDOM (void ((js_unmap (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: GPUBuffer -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/size MDN GPUBuffer.size documentation>
+getSize :: (MonadDOM m) => GPUBuffer -> m Word53
+getSize self = liftDOM (((js_getSize (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })"
+        js_getUsage :: GPUBuffer -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/usage MDN GPUBuffer.usage documentation>
+getUsage :: (MonadDOM m) => GPUBuffer -> m Word
+getUsage self = liftDOM ((js_getUsage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mapState\"]; })"
+        js_getMapState :: GPUBuffer -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/mapState MDN GPUBuffer.mapState documentation>
+getMapState :: (MonadDOM m) => GPUBuffer -> m GPUBufferMapState
+getMapState self = liftDOM (((js_getMapState (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBufferBinding.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBufferBinding.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBufferBinding.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBufferBinding
+       (js_newGPUBufferBinding, js_setBuffer, js_getBuffer, js_setOffset, js_getOffset, js_setSize, js_getSize, newGPUBufferBinding, setBuffer, getBuffer, setOffset, getOffset, getOffsetUnsafe, getOffsetUnchecked, setSize, getSize, getSizeUnsafe, getSizeUnchecked, GPUBufferBinding(..), gTypeGPUBufferBinding)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"buffer\": $1}); })"
+        js_newGPUBufferBinding :: GPUBuffer -> IO GPUBufferBinding
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubufferbinding GPUBufferBinding specification>
+newGPUBufferBinding :: (MonadDOM m) => GPUBuffer -> m GPUBufferBinding
+newGPUBufferBinding buffer = liftDOM ((js_newGPUBufferBinding (buffer)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer :: GPUBufferBinding -> GPUBuffer -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-buffer GPUBufferBinding.buffer specification>
+setBuffer :: (MonadDOM m) => GPUBufferBinding -> GPUBuffer -> m ()
+setBuffer self val = liftDOM (void ((js_setBuffer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })"
+        js_getBuffer :: GPUBufferBinding -> IO GPUBuffer
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-buffer GPUBufferBinding.buffer specification>
+getBuffer :: (MonadDOM m) => GPUBufferBinding -> m GPUBuffer
+getBuffer self = liftDOM ((js_getBuffer (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offset\"] = $2; })"
+        js_setOffset :: GPUBufferBinding -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-offset GPUBufferBinding.offset specification>
+setOffset :: (MonadDOM m) => GPUBufferBinding -> Word53 -> m ()
+setOffset self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOffset (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: GPUBufferBinding -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-offset GPUBufferBinding.offset specification>
+getOffset :: (MonadDOM m) => GPUBufferBinding -> m (Maybe Word53)
+getOffset self = liftDOM (((js_getOffset (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-offset GPUBufferBinding.offset specification>
+getOffsetUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBinding -> m Word53
+getOffsetUnsafe self = liftDOM ((((js_getOffset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-offset GPUBufferBinding.offset specification>
+getOffsetUnchecked :: (MonadDOM m) => GPUBufferBinding -> m Word53
+getOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getOffset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: GPUBufferBinding -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-size GPUBufferBinding.size specification>
+setSize :: (MonadDOM m) => GPUBufferBinding -> Word53 -> m ()
+setSize self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSize (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: GPUBufferBinding -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-size GPUBufferBinding.size specification>
+getSize :: (MonadDOM m) => GPUBufferBinding -> m (Maybe Word53)
+getSize self = liftDOM (((js_getSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-size GPUBufferBinding.size specification>
+getSizeUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBinding -> m Word53
+getSizeUnsafe self = liftDOM ((((js_getSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-size GPUBufferBinding.size specification>
+getSizeUnchecked :: (MonadDOM m) => GPUBufferBinding -> m Word53
+getSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBufferBindingLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBufferBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBufferBindingLayout.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBufferBindingLayout
+       (js_newGPUBufferBindingLayout, js_setType, js_getType, js_setHasDynamicOffset, js_getHasDynamicOffset, js_setMinBindingSize, js_getMinBindingSize, newGPUBufferBindingLayout, setType, getType, getTypeUnsafe, getTypeUnchecked, setHasDynamicOffset, getHasDynamicOffset, getHasDynamicOffsetUnsafe, getHasDynamicOffsetUnchecked, setMinBindingSize, getMinBindingSize, getMinBindingSizeUnsafe, getMinBindingSizeUnchecked, GPUBufferBindingLayout(..), gTypeGPUBufferBindingLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUBufferBindingLayout :: IO GPUBufferBindingLayout
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubufferbindinglayout GPUBufferBindingLayout specification>
+newGPUBufferBindingLayout :: (MonadDOM m) => m GPUBufferBindingLayout
+newGPUBufferBindingLayout = liftDOM ((js_newGPUBufferBindingLayout))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: GPUBufferBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-type GPUBufferBindingLayout.type specification>
+setType :: (MonadDOM m) => GPUBufferBindingLayout -> GPUBufferBindingType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: GPUBufferBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-type GPUBufferBindingLayout.type specification>
+getType :: (MonadDOM m) => GPUBufferBindingLayout -> m (Maybe GPUBufferBindingType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-type GPUBufferBindingLayout.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBindingLayout -> m GPUBufferBindingType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-type GPUBufferBindingLayout.type specification>
+getTypeUnchecked :: (MonadDOM m) => GPUBufferBindingLayout -> m GPUBufferBindingType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hasDynamicOffset\"] = $2; })"
+        js_setHasDynamicOffset :: GPUBufferBindingLayout -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-hasdynamicoffset GPUBufferBindingLayout.hasDynamicOffset specification>
+setHasDynamicOffset :: (MonadDOM m) => GPUBufferBindingLayout -> Bool -> m ()
+setHasDynamicOffset self val = liftDOM (void ((js_setHasDynamicOffset (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasDynamicOffset\"]; })"
+        js_getHasDynamicOffset :: GPUBufferBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-hasdynamicoffset GPUBufferBindingLayout.hasDynamicOffset specification>
+getHasDynamicOffset :: (MonadDOM m) => GPUBufferBindingLayout -> m (Maybe Bool)
+getHasDynamicOffset self = liftDOM (((js_getHasDynamicOffset (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-hasdynamicoffset GPUBufferBindingLayout.hasDynamicOffset specification>
+getHasDynamicOffsetUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBindingLayout -> m Bool
+getHasDynamicOffsetUnsafe self = liftDOM ((((js_getHasDynamicOffset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-hasdynamicoffset GPUBufferBindingLayout.hasDynamicOffset specification>
+getHasDynamicOffsetUnchecked :: (MonadDOM m) => GPUBufferBindingLayout -> m Bool
+getHasDynamicOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getHasDynamicOffset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minBindingSize\"] = $2; })"
+        js_setMinBindingSize :: GPUBufferBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-minbindingsize GPUBufferBindingLayout.minBindingSize specification>
+setMinBindingSize :: (MonadDOM m) => GPUBufferBindingLayout -> Word53 -> m ()
+setMinBindingSize self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMinBindingSize (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minBindingSize\"]; })"
+        js_getMinBindingSize :: GPUBufferBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-minbindingsize GPUBufferBindingLayout.minBindingSize specification>
+getMinBindingSize :: (MonadDOM m) => GPUBufferBindingLayout -> m (Maybe Word53)
+getMinBindingSize self = liftDOM (((js_getMinBindingSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-minbindingsize GPUBufferBindingLayout.minBindingSize specification>
+getMinBindingSizeUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBindingLayout -> m Word53
+getMinBindingSizeUnsafe self = liftDOM ((((js_getMinBindingSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-minbindingsize GPUBufferBindingLayout.minBindingSize specification>
+getMinBindingSizeUnchecked :: (MonadDOM m) => GPUBufferBindingLayout -> m Word53
+getMinBindingSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMinBindingSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUBufferDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUBufferDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUBufferDescriptor.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUBufferDescriptor
+       (js_newGPUBufferDescriptor, js_setSize, js_getSize, js_setUsage, js_getUsage, js_setMappedAtCreation, js_getMappedAtCreation, newGPUBufferDescriptor, setSize, getSize, setUsage, getUsage, setMappedAtCreation, getMappedAtCreation, getMappedAtCreationUnsafe, getMappedAtCreationUnchecked, GPUBufferDescriptor(..), gTypeGPUBufferDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"size\": $1, \"usage\": $2}); })"
+        js_newGPUBufferDescriptor :: JSVal -> Word -> IO GPUBufferDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#gpubufferdescriptor GPUBufferDescriptor specification>
+newGPUBufferDescriptor :: (MonadDOM m) => Word53 -> Word -> m GPUBufferDescriptor
+newGPUBufferDescriptor size usage = liftDOM (((toJSVal size) >>= \a1' -> js_newGPUBufferDescriptor a1' (usage)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: GPUBufferDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-size GPUBufferDescriptor.size specification>
+setSize :: (MonadDOM m) => GPUBufferDescriptor -> Word53 -> m ()
+setSize self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSize (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: GPUBufferDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-size GPUBufferDescriptor.size specification>
+getSize :: (MonadDOM m) => GPUBufferDescriptor -> m Word53
+getSize self = liftDOM (((js_getSize (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usage\"] = $2; })"
+        js_setUsage :: GPUBufferDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-usage GPUBufferDescriptor.usage specification>
+setUsage :: (MonadDOM m) => GPUBufferDescriptor -> Word -> m ()
+setUsage self val = liftDOM (void ((js_setUsage (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })"
+        js_getUsage :: GPUBufferDescriptor -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-usage GPUBufferDescriptor.usage specification>
+getUsage :: (MonadDOM m) => GPUBufferDescriptor -> m Word
+getUsage self = liftDOM ((js_getUsage (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mappedAtCreation\"] = $2; })"
+        js_setMappedAtCreation :: GPUBufferDescriptor -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-mappedatcreation GPUBufferDescriptor.mappedAtCreation specification>
+setMappedAtCreation :: (MonadDOM m) => GPUBufferDescriptor -> Bool -> m ()
+setMappedAtCreation self val = liftDOM (void ((js_setMappedAtCreation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mappedAtCreation\"]; })"
+        js_getMappedAtCreation :: GPUBufferDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-mappedatcreation GPUBufferDescriptor.mappedAtCreation specification>
+getMappedAtCreation :: (MonadDOM m) => GPUBufferDescriptor -> m (Maybe Bool)
+getMappedAtCreation self = liftDOM (((js_getMappedAtCreation (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-mappedatcreation GPUBufferDescriptor.mappedAtCreation specification>
+getMappedAtCreationUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferDescriptor -> m Bool
+getMappedAtCreationUnsafe self = liftDOM ((((js_getMappedAtCreation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-mappedatcreation GPUBufferDescriptor.mappedAtCreation specification>
+getMappedAtCreationUnchecked :: (MonadDOM m) => GPUBufferDescriptor -> m Bool
+getMappedAtCreationUnchecked self = liftDOM ((pFromJSVal <$> (js_getMappedAtCreation (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasConfiguration.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCanvasConfiguration
+       (js_newGPUCanvasConfiguration, js_setDevice, js_getDevice, js_setFormat, js_getFormat, js_setUsage, js_getUsage, js_setViewFormats, js_getViewFormats, js_setColorSpace, js_getColorSpace, js_setToneMapping, js_getToneMapping, js_setAlphaMode, js_getAlphaMode, newGPUCanvasConfiguration, setDevice, getDevice, setFormat, getFormat, setUsage, getUsage, getUsageUnsafe, getUsageUnchecked, setViewFormats, getViewFormats, getViewFormatsUnsafe, getViewFormatsUnchecked, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, setToneMapping, getToneMapping, getToneMappingUnsafe, getToneMappingUnchecked, setAlphaMode, getAlphaMode, getAlphaModeUnsafe, getAlphaModeUnchecked, GPUCanvasConfiguration(..), gTypeGPUCanvasConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"device\": $1, \"format\": $2}); })"
+        js_newGPUCanvasConfiguration :: GPUDevice -> JSVal -> IO GPUCanvasConfiguration
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucanvasconfiguration GPUCanvasConfiguration specification>
+newGPUCanvasConfiguration :: (MonadDOM m) => GPUDevice -> GPUTextureFormat -> m GPUCanvasConfiguration
+newGPUCanvasConfiguration device format = liftDOM (((toJSVal format) >>= \a2' -> js_newGPUCanvasConfiguration (device) a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"device\"] = $2; })"
+        js_setDevice :: GPUCanvasConfiguration -> GPUDevice -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-device GPUCanvasConfiguration.device specification>
+setDevice :: (MonadDOM m) => GPUCanvasConfiguration -> GPUDevice -> m ()
+setDevice self val = liftDOM (void ((js_setDevice (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"device\"]; })"
+        js_getDevice :: GPUCanvasConfiguration -> IO GPUDevice
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-device GPUCanvasConfiguration.device specification>
+getDevice :: (MonadDOM m) => GPUCanvasConfiguration -> m GPUDevice
+getDevice self = liftDOM ((js_getDevice (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: GPUCanvasConfiguration -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-format GPUCanvasConfiguration.format specification>
+setFormat :: (MonadDOM m) => GPUCanvasConfiguration -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUCanvasConfiguration -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-format GPUCanvasConfiguration.format specification>
+getFormat :: (MonadDOM m) => GPUCanvasConfiguration -> m GPUTextureFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usage\"] = $2; })"
+        js_setUsage :: GPUCanvasConfiguration -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-usage GPUCanvasConfiguration.usage specification>
+setUsage :: (MonadDOM m) => GPUCanvasConfiguration -> Word -> m ()
+setUsage self val = liftDOM (void ((js_setUsage (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })"
+        js_getUsage :: GPUCanvasConfiguration -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-usage GPUCanvasConfiguration.usage specification>
+getUsage :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe Word)
+getUsage self = liftDOM (((js_getUsage (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-usage GPUCanvasConfiguration.usage specification>
+getUsageUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m Word
+getUsageUnsafe self = liftDOM ((((js_getUsage (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-usage GPUCanvasConfiguration.usage specification>
+getUsageUnchecked :: (MonadDOM m) => GPUCanvasConfiguration -> m Word
+getUsageUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsage (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"viewFormats\"] = $2; })"
+        js_setViewFormats :: GPUCanvasConfiguration -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-viewformats GPUCanvasConfiguration.viewFormats specification>
+setViewFormats :: (MonadDOM m) => GPUCanvasConfiguration -> [GPUTextureFormat] -> m ()
+setViewFormats self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setViewFormats (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewFormats\"]; })"
+        js_getViewFormats :: GPUCanvasConfiguration -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-viewformats GPUCanvasConfiguration.viewFormats specification>
+getViewFormats :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe [GPUTextureFormat])
+getViewFormats self = liftDOM (((js_getViewFormats (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-viewformats GPUCanvasConfiguration.viewFormats specification>
+getViewFormatsUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m [GPUTextureFormat]
+getViewFormatsUnsafe self = liftDOM ((((js_getViewFormats (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-viewformats GPUCanvasConfiguration.viewFormats specification>
+getViewFormatsUnchecked :: (MonadDOM m) => GPUCanvasConfiguration -> m [GPUTextureFormat]
+getViewFormatsUnchecked self = liftDOM (((js_getViewFormats (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: GPUCanvasConfiguration -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-colorspace GPUCanvasConfiguration.colorSpace specification>
+setColorSpace :: (MonadDOM m) => GPUCanvasConfiguration -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorSpace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: GPUCanvasConfiguration -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-colorspace GPUCanvasConfiguration.colorSpace specification>
+getColorSpace :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-colorspace GPUCanvasConfiguration.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-colorspace GPUCanvasConfiguration.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => GPUCanvasConfiguration -> m PredefinedColorSpace
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"toneMapping\"] = $2; })"
+        js_setToneMapping :: GPUCanvasConfiguration -> GPUCanvasToneMapping -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-tonemapping GPUCanvasConfiguration.toneMapping specification>
+setToneMapping :: (MonadDOM m) => GPUCanvasConfiguration -> GPUCanvasToneMapping -> m ()
+setToneMapping self val = liftDOM (void ((js_setToneMapping (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"toneMapping\"]; })"
+        js_getToneMapping :: GPUCanvasConfiguration -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-tonemapping GPUCanvasConfiguration.toneMapping specification>
+getToneMapping :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe GPUCanvasToneMapping)
+getToneMapping self = liftDOM (((js_getToneMapping (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-tonemapping GPUCanvasConfiguration.toneMapping specification>
+getToneMappingUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m GPUCanvasToneMapping
+getToneMappingUnsafe self = liftDOM ((((js_getToneMapping (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-tonemapping GPUCanvasConfiguration.toneMapping specification>
+getToneMappingUnchecked :: (MonadDOM m) => GPUCanvasConfiguration -> m GPUCanvasToneMapping
+getToneMappingUnchecked self = liftDOM ((pFromJSVal <$> (js_getToneMapping (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alphaMode\"] = $2; })"
+        js_setAlphaMode :: GPUCanvasConfiguration -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-alphamode GPUCanvasConfiguration.alphaMode specification>
+setAlphaMode :: (MonadDOM m) => GPUCanvasConfiguration -> GPUCanvasAlphaMode -> m ()
+setAlphaMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAlphaMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alphaMode\"]; })"
+        js_getAlphaMode :: GPUCanvasConfiguration -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-alphamode GPUCanvasConfiguration.alphaMode specification>
+getAlphaMode :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe GPUCanvasAlphaMode)
+getAlphaMode self = liftDOM (((js_getAlphaMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-alphamode GPUCanvasConfiguration.alphaMode specification>
+getAlphaModeUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m GPUCanvasAlphaMode
+getAlphaModeUnsafe self = liftDOM ((((js_getAlphaMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-alphamode GPUCanvasConfiguration.alphaMode specification>
+getAlphaModeUnchecked :: (MonadDOM m) => GPUCanvasConfiguration -> m GPUCanvasAlphaMode
+getAlphaModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlphaMode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasContext.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasContext.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCanvasContext
+       (js_configure, js_getConfiguration, js_getCurrentTexture, js_unconfigure, js_getCanvas, configure, getConfiguration, getConfiguration_, getConfigurationUnsafe, getConfigurationUnchecked, getCurrentTexture, getCurrentTexture_, unconfigure, getCanvas, GPUCanvasContext(..), gTypeGPUCanvasContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"configure\"]($2); })"
+        js_configure :: GPUCanvasContext -> GPUCanvasConfiguration -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/configure MDN GPUCanvasContext.configure documentation>
+configure :: (MonadDOM m) => GPUCanvasContext -> GPUCanvasConfiguration -> m ()
+configure self configuration = liftDOM (void ((js_configure (self) (configuration))))
+
+foreign import javascript safe "(($1) => { return $1[\"getConfiguration\"](); })"
+        js_getConfiguration :: GPUCanvasContext -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getConfiguration MDN GPUCanvasContext.getConfiguration documentation>
+getConfiguration :: (MonadDOM m) => GPUCanvasContext -> m (Maybe GPUCanvasConfiguration)
+getConfiguration self = liftDOM (((js_getConfiguration (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getConfiguration MDN GPUCanvasContext.getConfiguration documentation>
+getConfiguration_ :: (MonadDOM m) => GPUCanvasContext -> m ()
+getConfiguration_ self = liftDOM (void ((js_getConfiguration (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getConfiguration MDN GPUCanvasContext.getConfiguration documentation>
+getConfigurationUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasContext -> m GPUCanvasConfiguration
+getConfigurationUnsafe self = liftDOM ((((js_getConfiguration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getConfiguration MDN GPUCanvasContext.getConfiguration documentation>
+getConfigurationUnchecked :: (MonadDOM m) => GPUCanvasContext -> m GPUCanvasConfiguration
+getConfigurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getConfiguration (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"getCurrentTexture\"](); })"
+        js_getCurrentTexture :: GPUCanvasContext -> IO GPUTexture
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getCurrentTexture MDN GPUCanvasContext.getCurrentTexture documentation>
+getCurrentTexture :: (MonadDOM m) => GPUCanvasContext -> m GPUTexture
+getCurrentTexture self = liftDOM ((js_getCurrentTexture (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getCurrentTexture MDN GPUCanvasContext.getCurrentTexture documentation>
+getCurrentTexture_ :: (MonadDOM m) => GPUCanvasContext -> m ()
+getCurrentTexture_ self = liftDOM (void ((js_getCurrentTexture (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"unconfigure\"](); })"
+        js_unconfigure :: GPUCanvasContext -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/unconfigure MDN GPUCanvasContext.unconfigure documentation>
+unconfigure :: (MonadDOM m) => GPUCanvasContext -> m ()
+unconfigure self = liftDOM (void ((js_unconfigure (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })"
+        js_getCanvas :: GPUCanvasContext -> IO HTMLCanvasElementOrOffscreenCanvas
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/canvas MDN GPUCanvasContext.canvas documentation>
+getCanvas :: (MonadDOM m) => GPUCanvasContext -> m HTMLCanvasElementOrOffscreenCanvas
+getCanvas self = liftDOM ((js_getCanvas (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasToneMapping.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasToneMapping.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCanvasToneMapping.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCanvasToneMapping
+       (js_newGPUCanvasToneMapping, js_setMode, js_getMode, newGPUCanvasToneMapping, setMode, getMode, getModeUnsafe, getModeUnchecked, GPUCanvasToneMapping(..), gTypeGPUCanvasToneMapping)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUCanvasToneMapping :: IO GPUCanvasToneMapping
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucanvastonemapping GPUCanvasToneMapping specification>
+newGPUCanvasToneMapping :: (MonadDOM m) => m GPUCanvasToneMapping
+newGPUCanvasToneMapping = liftDOM ((js_newGPUCanvasToneMapping))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: GPUCanvasToneMapping -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvastonemapping-mode GPUCanvasToneMapping.mode specification>
+setMode :: (MonadDOM m) => GPUCanvasToneMapping -> GPUCanvasToneMappingMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: GPUCanvasToneMapping -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvastonemapping-mode GPUCanvasToneMapping.mode specification>
+getMode :: (MonadDOM m) => GPUCanvasToneMapping -> m (Maybe GPUCanvasToneMappingMode)
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvastonemapping-mode GPUCanvasToneMapping.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasToneMapping -> m GPUCanvasToneMappingMode
+getModeUnsafe self = liftDOM ((((js_getMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvastonemapping-mode GPUCanvasToneMapping.mode specification>
+getModeUnchecked :: (MonadDOM m) => GPUCanvasToneMapping -> m GPUCanvasToneMappingMode
+getModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUColorDict.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUColorDict.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUColorDict.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUColorDict
+       (js_newGPUColorDict, js_setR, js_getR, js_setG, js_getG, js_setB, js_getB, js_setA, js_getA, newGPUColorDict, setR, getR, setG, getG, setB, getB, setA, getA, GPUColorDict(..), gTypeGPUColorDict)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"r\": $1, \"g\": $2, \"b\": $3, \"a\": $4}); })"
+        js_newGPUColorDict :: Double -> Double -> Double -> Double -> IO GPUColorDict
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucolordict GPUColorDict specification>
+newGPUColorDict :: (MonadDOM m) => Double -> Double -> Double -> Double -> m GPUColorDict
+newGPUColorDict r g b a = liftDOM ((js_newGPUColorDict (r) (g) (b) (a)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"r\"] = $2; })"
+        js_setR :: GPUColorDict -> Double -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-r GPUColorDict.r specification>
+setR :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setR self val = liftDOM (void ((js_setR (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })"
+        js_getR :: GPUColorDict -> IO Double
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-r GPUColorDict.r specification>
+getR :: (MonadDOM m) => GPUColorDict -> m Double
+getR self = liftDOM ((js_getR (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"g\"] = $2; })"
+        js_setG :: GPUColorDict -> Double -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-g GPUColorDict.g specification>
+setG :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setG self val = liftDOM (void ((js_setG (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"g\"]; })"
+        js_getG :: GPUColorDict -> IO Double
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-g GPUColorDict.g specification>
+getG :: (MonadDOM m) => GPUColorDict -> m Double
+getG self = liftDOM ((js_getG (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"b\"] = $2; })"
+        js_setB :: GPUColorDict -> Double -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-b GPUColorDict.b specification>
+setB :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setB self val = liftDOM (void ((js_setB (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })"
+        js_getB :: GPUColorDict -> IO Double
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-b GPUColorDict.b specification>
+getB :: (MonadDOM m) => GPUColorDict -> m Double
+getB self = liftDOM ((js_getB (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"a\"] = $2; })"
+        js_setA :: GPUColorDict -> Double -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-a GPUColorDict.a specification>
+setA :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setA self val = liftDOM (void ((js_setA (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })"
+        js_getA :: GPUColorDict -> IO Double
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-a GPUColorDict.a specification>
+getA :: (MonadDOM m) => GPUColorDict -> m Double
+getA self = liftDOM ((js_getA (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUColorTargetState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUColorTargetState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUColorTargetState.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUColorTargetState
+       (js_newGPUColorTargetState, js_setFormat, js_getFormat, js_setBlend, js_getBlend, js_setWriteMask, js_getWriteMask, newGPUColorTargetState, setFormat, getFormat, setBlend, getBlend, getBlendUnsafe, getBlendUnchecked, setWriteMask, getWriteMask, getWriteMaskUnsafe, getWriteMaskUnchecked, GPUColorTargetState(..), gTypeGPUColorTargetState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"format\": $1}); })"
+        js_newGPUColorTargetState :: JSVal -> IO GPUColorTargetState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucolortargetstate GPUColorTargetState specification>
+newGPUColorTargetState :: (MonadDOM m) => GPUTextureFormat -> m GPUColorTargetState
+newGPUColorTargetState format = liftDOM (((toJSVal format) >>= \a1' -> js_newGPUColorTargetState a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: GPUColorTargetState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-format GPUColorTargetState.format specification>
+setFormat :: (MonadDOM m) => GPUColorTargetState -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUColorTargetState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-format GPUColorTargetState.format specification>
+getFormat :: (MonadDOM m) => GPUColorTargetState -> m GPUTextureFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"blend\"] = $2; })"
+        js_setBlend :: GPUColorTargetState -> GPUBlendState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-blend GPUColorTargetState.blend specification>
+setBlend :: (MonadDOM m) => GPUColorTargetState -> GPUBlendState -> m ()
+setBlend self val = liftDOM (void ((js_setBlend (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"blend\"]; })"
+        js_getBlend :: GPUColorTargetState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-blend GPUColorTargetState.blend specification>
+getBlend :: (MonadDOM m) => GPUColorTargetState -> m (Maybe GPUBlendState)
+getBlend self = liftDOM (((js_getBlend (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-blend GPUColorTargetState.blend specification>
+getBlendUnsafe :: (MonadDOM m, HasCallStack) => GPUColorTargetState -> m GPUBlendState
+getBlendUnsafe self = liftDOM ((((js_getBlend (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-blend GPUColorTargetState.blend specification>
+getBlendUnchecked :: (MonadDOM m) => GPUColorTargetState -> m GPUBlendState
+getBlendUnchecked self = liftDOM ((pFromJSVal <$> (js_getBlend (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"writeMask\"] = $2; })"
+        js_setWriteMask :: GPUColorTargetState -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-writemask GPUColorTargetState.writeMask specification>
+setWriteMask :: (MonadDOM m) => GPUColorTargetState -> Word -> m ()
+setWriteMask self val = liftDOM (void ((js_setWriteMask (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writeMask\"]; })"
+        js_getWriteMask :: GPUColorTargetState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-writemask GPUColorTargetState.writeMask specification>
+getWriteMask :: (MonadDOM m) => GPUColorTargetState -> m (Maybe Word)
+getWriteMask self = liftDOM (((js_getWriteMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-writemask GPUColorTargetState.writeMask specification>
+getWriteMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUColorTargetState -> m Word
+getWriteMaskUnsafe self = liftDOM ((((js_getWriteMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-writemask GPUColorTargetState.writeMask specification>
+getWriteMaskUnchecked :: (MonadDOM m) => GPUColorTargetState -> m Word
+getWriteMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getWriteMask (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCommandBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandBuffer.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCommandBuffer
+       (GPUCommandBuffer(..), gTypeGPUCommandBuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCommandBufferDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandBufferDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandBufferDescriptor.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCommandBufferDescriptor
+       (js_newGPUCommandBufferDescriptor, newGPUCommandBufferDescriptor, GPUCommandBufferDescriptor(..), gTypeGPUCommandBufferDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUCommandBufferDescriptor :: IO GPUCommandBufferDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucommandbufferdescriptor GPUCommandBufferDescriptor specification>
+newGPUCommandBufferDescriptor :: (MonadDOM m) => m GPUCommandBufferDescriptor
+newGPUCommandBufferDescriptor = liftDOM ((js_newGPUCommandBufferDescriptor))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCommandEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandEncoder.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCommandEncoder
+       (js_beginComputePass, js_beginRenderPass, js_clearBuffer, js_copyBufferToBuffer, js_copyBufferToBufferSourceOffsetDestinationOffset, js_copyBufferToTexture, js_copyTextureToBuffer, js_copyTextureToTexture, js_finish, js_resolveQuerySet, beginComputePass, beginComputePass_, beginRenderPass, beginRenderPass_, clearBuffer, copyBufferToBuffer, copyBufferToBufferSourceOffsetDestinationOffset, copyBufferToTexture, copyTextureToBuffer, copyTextureToTexture, finish, finish_, resolveQuerySet, GPUCommandEncoder(..), gTypeGPUCommandEncoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"beginComputePass\"]($2); })"
+        js_beginComputePass :: GPUCommandEncoder -> JSVal -> IO GPUComputePassEncoder
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/beginComputePass MDN GPUCommandEncoder.beginComputePass documentation>
+beginComputePass :: (MonadDOM m) => GPUCommandEncoder -> Maybe GPUComputePassDescriptor -> m GPUComputePassEncoder
+beginComputePass self descriptor = liftDOM (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_beginComputePass (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/beginComputePass MDN GPUCommandEncoder.beginComputePass documentation>
+beginComputePass_ :: (MonadDOM m) => GPUCommandEncoder -> Maybe GPUComputePassDescriptor -> m ()
+beginComputePass_ self descriptor = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_beginComputePass (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"beginRenderPass\"]($2); })"
+        js_beginRenderPass :: GPUCommandEncoder -> GPURenderPassDescriptor -> IO GPURenderPassEncoder
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/beginRenderPass MDN GPUCommandEncoder.beginRenderPass documentation>
+beginRenderPass :: (MonadDOM m) => GPUCommandEncoder -> GPURenderPassDescriptor -> m GPURenderPassEncoder
+beginRenderPass self descriptor = liftDOM ((js_beginRenderPass (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/beginRenderPass MDN GPUCommandEncoder.beginRenderPass documentation>
+beginRenderPass_ :: (MonadDOM m) => GPUCommandEncoder -> GPURenderPassDescriptor -> m ()
+beginRenderPass_ self descriptor = liftDOM (void ((js_beginRenderPass (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"clearBuffer\"]($2, $3, $4); })"
+        js_clearBuffer :: GPUCommandEncoder -> GPUBuffer -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/clearBuffer MDN GPUCommandEncoder.clearBuffer documentation>
+clearBuffer :: (MonadDOM m) => GPUCommandEncoder -> GPUBuffer -> Maybe Word53 -> Maybe Word53 -> m ()
+clearBuffer self buffer offset size = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal offset) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a4' -> js_clearBuffer (self) (buffer) a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"copyBufferToBuffer\"]($2, $3, $4); })"
+        js_copyBufferToBuffer :: GPUCommandEncoder -> GPUBuffer -> GPUBuffer -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/copyBufferToBuffer MDN GPUCommandEncoder.copyBufferToBuffer documentation>
+copyBufferToBuffer :: (MonadDOM m) => GPUCommandEncoder -> GPUBuffer -> GPUBuffer -> Maybe Word53 -> m ()
+copyBufferToBuffer self source destination size = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal size) >>= \a4' -> js_copyBufferToBuffer (self) (source) (destination) a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"copyBufferToBuffer\"]($2, $3, $4, $5, $6); })"
+        js_copyBufferToBufferSourceOffsetDestinationOffset :: GPUCommandEncoder -> GPUBuffer -> JSVal -> GPUBuffer -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/copyBufferToBuffer MDN GPUCommandEncoder.copyBufferToBuffer documentation>
+copyBufferToBufferSourceOffsetDestinationOffset :: (MonadDOM m) => GPUCommandEncoder -> GPUBuffer -> Word53 -> GPUBuffer -> Word53 -> Maybe Word53 -> m ()
+copyBufferToBufferSourceOffsetDestinationOffset self source sourceOffset destination destinationOffset size = liftDOM (void (((toJSVal sourceOffset) >>= \a3' -> (toJSVal destinationOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a6' -> js_copyBufferToBufferSourceOffsetDestinationOffset (self) (source) a3' (destination) a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"copyBufferToTexture\"]($2, $3, $4); })"
+        js_copyBufferToTexture :: GPUCommandEncoder -> GPUTexelCopyBufferInfo -> GPUTexelCopyTextureInfo -> GPUExtent3D -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/copyBufferToTexture MDN GPUCommandEncoder.copyBufferToTexture documentation>
+copyBufferToTexture :: (MonadDOM m, IsGPUTexelCopyTextureInfo destination, IsGPUExtent3D copySize) => GPUCommandEncoder -> GPUTexelCopyBufferInfo -> destination -> copySize -> m ()
+copyBufferToTexture self source destination copySize = liftDOM (void ((js_copyBufferToTexture (self) (source) (Types.toGPUTexelCopyTextureInfo destination) (Types.toGPUExtent3D copySize))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"copyTextureToBuffer\"]($2, $3, $4); })"
+        js_copyTextureToBuffer :: GPUCommandEncoder -> GPUTexelCopyTextureInfo -> GPUTexelCopyBufferInfo -> GPUExtent3D -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/copyTextureToBuffer MDN GPUCommandEncoder.copyTextureToBuffer documentation>
+copyTextureToBuffer :: (MonadDOM m, IsGPUTexelCopyTextureInfo source, IsGPUExtent3D copySize) => GPUCommandEncoder -> source -> GPUTexelCopyBufferInfo -> copySize -> m ()
+copyTextureToBuffer self source destination copySize = liftDOM (void ((js_copyTextureToBuffer (self) (Types.toGPUTexelCopyTextureInfo source) (destination) (Types.toGPUExtent3D copySize))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"copyTextureToTexture\"]($2, $3, $4); })"
+        js_copyTextureToTexture :: GPUCommandEncoder -> GPUTexelCopyTextureInfo -> GPUTexelCopyTextureInfo -> GPUExtent3D -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/copyTextureToTexture MDN GPUCommandEncoder.copyTextureToTexture documentation>
+copyTextureToTexture :: (MonadDOM m, IsGPUTexelCopyTextureInfo source, IsGPUTexelCopyTextureInfo destination, IsGPUExtent3D copySize) => GPUCommandEncoder -> source -> destination -> copySize -> m ()
+copyTextureToTexture self source destination copySize = liftDOM (void ((js_copyTextureToTexture (self) (Types.toGPUTexelCopyTextureInfo source) (Types.toGPUTexelCopyTextureInfo destination) (Types.toGPUExtent3D copySize))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"finish\"]($2); })"
+        js_finish :: GPUCommandEncoder -> JSVal -> IO GPUCommandBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/finish MDN GPUCommandEncoder.finish documentation>
+finish :: (MonadDOM m) => GPUCommandEncoder -> Maybe GPUCommandBufferDescriptor -> m GPUCommandBuffer
+finish self descriptor = liftDOM (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_finish (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/finish MDN GPUCommandEncoder.finish documentation>
+finish_ :: (MonadDOM m) => GPUCommandEncoder -> Maybe GPUCommandBufferDescriptor -> m ()
+finish_ self descriptor = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_finish (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"resolveQuerySet\"]($2, $3, $4, $5, $6); })"
+        js_resolveQuerySet :: GPUCommandEncoder -> GPUQuerySet -> Word -> Word -> GPUBuffer -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/resolveQuerySet MDN GPUCommandEncoder.resolveQuerySet documentation>
+resolveQuerySet :: (MonadDOM m) => GPUCommandEncoder -> GPUQuerySet -> Word -> Word -> GPUBuffer -> Word53 -> m ()
+resolveQuerySet self querySet firstQuery queryCount destination destinationOffset = liftDOM (void (((toJSVal destinationOffset) >>= \a6' -> js_resolveQuerySet (self) (querySet) (firstQuery) (queryCount) (destination) a6')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCommandEncoderDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandEncoderDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCommandEncoderDescriptor.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCommandEncoderDescriptor
+       (js_newGPUCommandEncoderDescriptor, newGPUCommandEncoderDescriptor, GPUCommandEncoderDescriptor(..), gTypeGPUCommandEncoderDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUCommandEncoderDescriptor :: IO GPUCommandEncoderDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucommandencoderdescriptor GPUCommandEncoderDescriptor specification>
+newGPUCommandEncoderDescriptor :: (MonadDOM m) => m GPUCommandEncoderDescriptor
+newGPUCommandEncoderDescriptor = liftDOM ((js_newGPUCommandEncoderDescriptor))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCompilationInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCompilationInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCompilationInfo.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCompilationInfo
+       (js_getMessages, getMessages, GPUCompilationInfo(..), gTypeGPUCompilationInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"messages\"]; })"
+        js_getMessages :: GPUCompilationInfo -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationInfo/messages MDN GPUCompilationInfo.messages documentation>
+getMessages :: (MonadDOM m) => GPUCompilationInfo -> m [GPUCompilationMessage]
+getMessages self = liftDOM (((js_getMessages (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCompilationMessage.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCompilationMessage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCompilationMessage.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCompilationMessage
+       (js_getMessage, js_getType, js_getLineNum, js_getLinePos, js_getOffset, js_getLength, getMessage, getType, getLineNum, getLinePos, getOffset, getLength, GPUCompilationMessage(..), gTypeGPUCompilationMessage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: GPUCompilationMessage -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/message MDN GPUCompilationMessage.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => GPUCompilationMessage -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: GPUCompilationMessage -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/type MDN GPUCompilationMessage.type documentation>
+getType :: (MonadDOM m) => GPUCompilationMessage -> m GPUCompilationMessageType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineNum\"]; })"
+        js_getLineNum :: GPUCompilationMessage -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/lineNum MDN GPUCompilationMessage.lineNum documentation>
+getLineNum :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getLineNum self = liftDOM (((js_getLineNum (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"linePos\"]; })"
+        js_getLinePos :: GPUCompilationMessage -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/linePos MDN GPUCompilationMessage.linePos documentation>
+getLinePos :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getLinePos self = liftDOM (((js_getLinePos (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: GPUCompilationMessage -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/offset MDN GPUCompilationMessage.offset documentation>
+getOffset :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getOffset self = liftDOM (((js_getOffset (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: GPUCompilationMessage -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/length MDN GPUCompilationMessage.length documentation>
+getLength :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getLength self = liftDOM (((js_getLength (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassDescriptor.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUComputePassDescriptor
+       (js_newGPUComputePassDescriptor, js_setTimestampWrites, js_getTimestampWrites, newGPUComputePassDescriptor, setTimestampWrites, getTimestampWrites, getTimestampWritesUnsafe, getTimestampWritesUnchecked, GPUComputePassDescriptor(..), gTypeGPUComputePassDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUComputePassDescriptor :: IO GPUComputePassDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucomputepassdescriptor GPUComputePassDescriptor specification>
+newGPUComputePassDescriptor :: (MonadDOM m) => m GPUComputePassDescriptor
+newGPUComputePassDescriptor = liftDOM ((js_newGPUComputePassDescriptor))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestampWrites\"] = $2; })"
+        js_setTimestampWrites :: GPUComputePassDescriptor -> GPUComputePassTimestampWrites -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassdescriptor-timestampwrites GPUComputePassDescriptor.timestampWrites specification>
+setTimestampWrites :: (MonadDOM m) => GPUComputePassDescriptor -> GPUComputePassTimestampWrites -> m ()
+setTimestampWrites self val = liftDOM (void ((js_setTimestampWrites (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestampWrites\"]; })"
+        js_getTimestampWrites :: GPUComputePassDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassdescriptor-timestampwrites GPUComputePassDescriptor.timestampWrites specification>
+getTimestampWrites :: (MonadDOM m) => GPUComputePassDescriptor -> m (Maybe GPUComputePassTimestampWrites)
+getTimestampWrites self = liftDOM (((js_getTimestampWrites (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassdescriptor-timestampwrites GPUComputePassDescriptor.timestampWrites specification>
+getTimestampWritesUnsafe :: (MonadDOM m, HasCallStack) => GPUComputePassDescriptor -> m GPUComputePassTimestampWrites
+getTimestampWritesUnsafe self = liftDOM ((((js_getTimestampWrites (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassdescriptor-timestampwrites GPUComputePassDescriptor.timestampWrites specification>
+getTimestampWritesUnchecked :: (MonadDOM m) => GPUComputePassDescriptor -> m GPUComputePassTimestampWrites
+getTimestampWritesUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimestampWrites (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassEncoder.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUComputePassEncoder
+       (js_dispatchWorkgroups, js_dispatchWorkgroupsIndirect, js_end, js_setPipeline, dispatchWorkgroups, dispatchWorkgroupsIndirect, end, setPipeline, GPUComputePassEncoder(..), gTypeGPUComputePassEncoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"dispatchWorkgroups\"]($2, $3, $4); })"
+        js_dispatchWorkgroups :: GPUComputePassEncoder -> Word -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/dispatchWorkgroups MDN GPUComputePassEncoder.dispatchWorkgroups documentation>
+dispatchWorkgroups :: (MonadDOM m) => GPUComputePassEncoder -> Word -> Maybe Word -> Maybe Word -> m ()
+dispatchWorkgroups self workgroupCountX workgroupCountY workgroupCountZ = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal workgroupCountY) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal workgroupCountZ) >>= \a4' -> js_dispatchWorkgroups (self) (workgroupCountX) a3' a4')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"dispatchWorkgroupsIndirect\"]($2, $3); })"
+        js_dispatchWorkgroupsIndirect :: GPUComputePassEncoder -> GPUBuffer -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/dispatchWorkgroupsIndirect MDN GPUComputePassEncoder.dispatchWorkgroupsIndirect documentation>
+dispatchWorkgroupsIndirect :: (MonadDOM m) => GPUComputePassEncoder -> GPUBuffer -> Word53 -> m ()
+dispatchWorkgroupsIndirect self indirectBuffer indirectOffset = liftDOM (void (((toJSVal indirectOffset) >>= \a3' -> js_dispatchWorkgroupsIndirect (self) (indirectBuffer) a3')))
+
+foreign import javascript safe "(($1) => { return $1[\"end\"](); })"
+        js_end :: GPUComputePassEncoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/end MDN GPUComputePassEncoder.end documentation>
+end :: (MonadDOM m) => GPUComputePassEncoder -> m ()
+end self = liftDOM (void ((js_end (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setPipeline\"]($2); })"
+        js_setPipeline :: GPUComputePassEncoder -> GPUComputePipeline -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/setPipeline MDN GPUComputePassEncoder.setPipeline documentation>
+setPipeline :: (MonadDOM m) => GPUComputePassEncoder -> GPUComputePipeline -> m ()
+setPipeline self pipeline = liftDOM (void ((js_setPipeline (self) (pipeline))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassTimestampWrites.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassTimestampWrites.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePassTimestampWrites.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUComputePassTimestampWrites
+       (js_newGPUComputePassTimestampWrites, js_setQuerySet, js_getQuerySet, js_setBeginningOfPassWriteIndex, js_getBeginningOfPassWriteIndex, js_setEndOfPassWriteIndex, js_getEndOfPassWriteIndex, newGPUComputePassTimestampWrites, setQuerySet, getQuerySet, setBeginningOfPassWriteIndex, getBeginningOfPassWriteIndex, getBeginningOfPassWriteIndexUnsafe, getBeginningOfPassWriteIndexUnchecked, setEndOfPassWriteIndex, getEndOfPassWriteIndex, getEndOfPassWriteIndexUnsafe, getEndOfPassWriteIndexUnchecked, GPUComputePassTimestampWrites(..), gTypeGPUComputePassTimestampWrites)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"querySet\": $1}); })"
+        js_newGPUComputePassTimestampWrites :: GPUQuerySet -> IO GPUComputePassTimestampWrites
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucomputepasstimestampwrites GPUComputePassTimestampWrites specification>
+newGPUComputePassTimestampWrites :: (MonadDOM m) => GPUQuerySet -> m GPUComputePassTimestampWrites
+newGPUComputePassTimestampWrites querySet = liftDOM ((js_newGPUComputePassTimestampWrites (querySet)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"querySet\"] = $2; })"
+        js_setQuerySet :: GPUComputePassTimestampWrites -> GPUQuerySet -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-queryset GPUComputePassTimestampWrites.querySet specification>
+setQuerySet :: (MonadDOM m) => GPUComputePassTimestampWrites -> GPUQuerySet -> m ()
+setQuerySet self val = liftDOM (void ((js_setQuerySet (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"querySet\"]; })"
+        js_getQuerySet :: GPUComputePassTimestampWrites -> IO GPUQuerySet
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-queryset GPUComputePassTimestampWrites.querySet specification>
+getQuerySet :: (MonadDOM m) => GPUComputePassTimestampWrites -> m GPUQuerySet
+getQuerySet self = liftDOM ((js_getQuerySet (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"beginningOfPassWriteIndex\"] = $2; })"
+        js_setBeginningOfPassWriteIndex :: GPUComputePassTimestampWrites -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-beginningofpasswriteindex GPUComputePassTimestampWrites.beginningOfPassWriteIndex specification>
+setBeginningOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> Word -> m ()
+setBeginningOfPassWriteIndex self val = liftDOM (void ((js_setBeginningOfPassWriteIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"beginningOfPassWriteIndex\"]; })"
+        js_getBeginningOfPassWriteIndex :: GPUComputePassTimestampWrites -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-beginningofpasswriteindex GPUComputePassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> m (Maybe Word)
+getBeginningOfPassWriteIndex self = liftDOM (((js_getBeginningOfPassWriteIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-beginningofpasswriteindex GPUComputePassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPUComputePassTimestampWrites -> m Word
+getBeginningOfPassWriteIndexUnsafe self = liftDOM ((((js_getBeginningOfPassWriteIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-beginningofpasswriteindex GPUComputePassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndexUnchecked :: (MonadDOM m) => GPUComputePassTimestampWrites -> m Word
+getBeginningOfPassWriteIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getBeginningOfPassWriteIndex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endOfPassWriteIndex\"] = $2; })"
+        js_setEndOfPassWriteIndex :: GPUComputePassTimestampWrites -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-endofpasswriteindex GPUComputePassTimestampWrites.endOfPassWriteIndex specification>
+setEndOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> Word -> m ()
+setEndOfPassWriteIndex self val = liftDOM (void ((js_setEndOfPassWriteIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endOfPassWriteIndex\"]; })"
+        js_getEndOfPassWriteIndex :: GPUComputePassTimestampWrites -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-endofpasswriteindex GPUComputePassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> m (Maybe Word)
+getEndOfPassWriteIndex self = liftDOM (((js_getEndOfPassWriteIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-endofpasswriteindex GPUComputePassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPUComputePassTimestampWrites -> m Word
+getEndOfPassWriteIndexUnsafe self = liftDOM ((((js_getEndOfPassWriteIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-endofpasswriteindex GPUComputePassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndexUnchecked :: (MonadDOM m) => GPUComputePassTimestampWrites -> m Word
+getEndOfPassWriteIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getEndOfPassWriteIndex (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUComputePipeline.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePipeline.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePipeline.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUComputePipeline
+       (GPUComputePipeline(..), gTypeGPUComputePipeline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUComputePipelineDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePipelineDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUComputePipelineDescriptor.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUComputePipelineDescriptor
+       (js_newGPUComputePipelineDescriptor, js_setCompute, js_getCompute, newGPUComputePipelineDescriptor, setCompute, getCompute, GPUComputePipelineDescriptor(..), gTypeGPUComputePipelineDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"layout\": $1, \"compute\": $2}); })"
+        js_newGPUComputePipelineDescriptor :: GPUPipelineLayoutOrGPUAutoLayoutMode -> GPUProgrammableStage -> IO GPUComputePipelineDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucomputepipelinedescriptor GPUComputePipelineDescriptor specification>
+newGPUComputePipelineDescriptor :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode layout, IsGPUProgrammableStage compute) => layout -> compute -> m GPUComputePipelineDescriptor
+newGPUComputePipelineDescriptor layout compute = liftDOM ((js_newGPUComputePipelineDescriptor (Types.toGPUPipelineLayoutOrGPUAutoLayoutMode layout) (Types.toGPUProgrammableStage compute)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"compute\"] = $2; })"
+        js_setCompute :: GPUComputePipelineDescriptor -> GPUProgrammableStage -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepipelinedescriptor-compute GPUComputePipelineDescriptor.compute specification>
+setCompute :: (MonadDOM m, IsGPUProgrammableStage val) => GPUComputePipelineDescriptor -> val -> m ()
+setCompute self val = liftDOM (void ((js_setCompute (self) (Types.toGPUProgrammableStage val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"compute\"]; })"
+        js_getCompute :: GPUComputePipelineDescriptor -> IO GPUProgrammableStage
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepipelinedescriptor-compute GPUComputePipelineDescriptor.compute specification>
+getCompute :: (MonadDOM m) => GPUComputePipelineDescriptor -> m GPUProgrammableStage
+getCompute self = liftDOM ((js_getCompute (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCopyExternalImageDestInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCopyExternalImageDestInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCopyExternalImageDestInfo.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCopyExternalImageDestInfo
+       (js_newGPUCopyExternalImageDestInfo, js_setColorSpace, js_getColorSpace, js_setPremultipliedAlpha, js_getPremultipliedAlpha, newGPUCopyExternalImageDestInfo, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, setPremultipliedAlpha, getPremultipliedAlpha, getPremultipliedAlphaUnsafe, getPremultipliedAlphaUnchecked, GPUCopyExternalImageDestInfo(..), gTypeGPUCopyExternalImageDestInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"texture\": $1}); })"
+        js_newGPUCopyExternalImageDestInfo :: GPUTexture -> IO GPUCopyExternalImageDestInfo
+-- | <https://gpuweb.github.io/gpuweb/#gpucopyexternalimagedestinfo GPUCopyExternalImageDestInfo specification>
+newGPUCopyExternalImageDestInfo :: (MonadDOM m) => GPUTexture -> m GPUCopyExternalImageDestInfo
+newGPUCopyExternalImageDestInfo texture = liftDOM ((js_newGPUCopyExternalImageDestInfo (texture)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: GPUCopyExternalImageDestInfo -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-colorspace GPUCopyExternalImageDestInfo.colorSpace specification>
+setColorSpace :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorSpace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: GPUCopyExternalImageDestInfo -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-colorspace GPUCopyExternalImageDestInfo.colorSpace specification>
+getColorSpace :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-colorspace GPUCopyExternalImageDestInfo.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageDestInfo -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-colorspace GPUCopyExternalImageDestInfo.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> m PredefinedColorSpace
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"premultipliedAlpha\"] = $2; })"
+        js_setPremultipliedAlpha :: GPUCopyExternalImageDestInfo -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-premultipliedalpha GPUCopyExternalImageDestInfo.premultipliedAlpha specification>
+setPremultipliedAlpha :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> Bool -> m ()
+setPremultipliedAlpha self val = liftDOM (void ((js_setPremultipliedAlpha (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"premultipliedAlpha\"]; })"
+        js_getPremultipliedAlpha :: GPUCopyExternalImageDestInfo -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-premultipliedalpha GPUCopyExternalImageDestInfo.premultipliedAlpha specification>
+getPremultipliedAlpha :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> m (Maybe Bool)
+getPremultipliedAlpha self = liftDOM (((js_getPremultipliedAlpha (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-premultipliedalpha GPUCopyExternalImageDestInfo.premultipliedAlpha specification>
+getPremultipliedAlphaUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageDestInfo -> m Bool
+getPremultipliedAlphaUnsafe self = liftDOM ((((js_getPremultipliedAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-premultipliedalpha GPUCopyExternalImageDestInfo.premultipliedAlpha specification>
+getPremultipliedAlphaUnchecked :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> m Bool
+getPremultipliedAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getPremultipliedAlpha (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUCopyExternalImageSourceInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUCopyExternalImageSourceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUCopyExternalImageSourceInfo.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUCopyExternalImageSourceInfo
+       (js_newGPUCopyExternalImageSourceInfo, js_setSource, js_getSource, js_setOrigin, js_getOrigin, js_setFlipY, js_getFlipY, newGPUCopyExternalImageSourceInfo, setSource, getSource, setOrigin, getOrigin, getOriginUnsafe, getOriginUnchecked, setFlipY, getFlipY, getFlipYUnsafe, getFlipYUnchecked, GPUCopyExternalImageSourceInfo(..), gTypeGPUCopyExternalImageSourceInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"source\": $1}); })"
+        js_newGPUCopyExternalImageSourceInfo :: GPUCopyExternalImageSource -> IO GPUCopyExternalImageSourceInfo
+-- | <https://gpuweb.github.io/gpuweb/#gpucopyexternalimagesourceinfo GPUCopyExternalImageSourceInfo specification>
+newGPUCopyExternalImageSourceInfo :: (MonadDOM m, IsGPUCopyExternalImageSource source) => source -> m GPUCopyExternalImageSourceInfo
+newGPUCopyExternalImageSourceInfo source = liftDOM ((js_newGPUCopyExternalImageSourceInfo (Types.toGPUCopyExternalImageSource source)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: GPUCopyExternalImageSourceInfo -> GPUCopyExternalImageSource -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-source GPUCopyExternalImageSourceInfo.source specification>
+setSource :: (MonadDOM m, IsGPUCopyExternalImageSource val) => GPUCopyExternalImageSourceInfo -> val -> m ()
+setSource self val = liftDOM (void ((js_setSource (self) (Types.toGPUCopyExternalImageSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: GPUCopyExternalImageSourceInfo -> IO GPUCopyExternalImageSource
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-source GPUCopyExternalImageSourceInfo.source specification>
+getSource :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m GPUCopyExternalImageSource
+getSource self = liftDOM ((js_getSource (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"origin\"] = $2; })"
+        js_setOrigin :: GPUCopyExternalImageSourceInfo -> GPUOrigin2D -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-origin GPUCopyExternalImageSourceInfo.origin specification>
+setOrigin :: (MonadDOM m, IsGPUOrigin2D val) => GPUCopyExternalImageSourceInfo -> val -> m ()
+setOrigin self val = liftDOM (void ((js_setOrigin (self) (Types.toGPUOrigin2D val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: GPUCopyExternalImageSourceInfo -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-origin GPUCopyExternalImageSourceInfo.origin specification>
+getOrigin :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m (Maybe GPUOrigin2D)
+getOrigin self = liftDOM (((js_getOrigin (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-origin GPUCopyExternalImageSourceInfo.origin specification>
+getOriginUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageSourceInfo -> m GPUOrigin2D
+getOriginUnsafe self = liftDOM ((((js_getOrigin (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-origin GPUCopyExternalImageSourceInfo.origin specification>
+getOriginUnchecked :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m GPUOrigin2D
+getOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flipY\"] = $2; })"
+        js_setFlipY :: GPUCopyExternalImageSourceInfo -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-flipy GPUCopyExternalImageSourceInfo.flipY specification>
+setFlipY :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> Bool -> m ()
+setFlipY self val = liftDOM (void ((js_setFlipY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flipY\"]; })"
+        js_getFlipY :: GPUCopyExternalImageSourceInfo -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-flipy GPUCopyExternalImageSourceInfo.flipY specification>
+getFlipY :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m (Maybe Bool)
+getFlipY self = liftDOM (((js_getFlipY (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-flipy GPUCopyExternalImageSourceInfo.flipY specification>
+getFlipYUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageSourceInfo -> m Bool
+getFlipYUnsafe self = liftDOM ((((js_getFlipY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-flipy GPUCopyExternalImageSourceInfo.flipY specification>
+getFlipYUnchecked :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m Bool
+getFlipYUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlipY (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUDebugCommandsMixin.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUDebugCommandsMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUDebugCommandsMixin.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUDebugCommandsMixin
+       (js_insertDebugMarker, js_popDebugGroup, js_pushDebugGroup, insertDebugMarker, popDebugGroup, pushDebugGroup, GPUDebugCommandsMixin(..), gTypeGPUDebugCommandsMixin, IsGPUDebugCommandsMixin, toGPUDebugCommandsMixin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"insertDebugMarker\"]($2); })"
+        js_insertDebugMarker :: GPUDebugCommandsMixin -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/insertDebugMarker MDN GPUDebugCommandsMixin.insertDebugMarker documentation>
+insertDebugMarker :: (MonadDOM m, IsGPUDebugCommandsMixin self, ToJSString markerLabel) => self -> markerLabel -> m ()
+insertDebugMarker self markerLabel = liftDOM (void ((js_insertDebugMarker ((Types.toGPUDebugCommandsMixin self)) (toJSString markerLabel))))
+
+foreign import javascript safe "(($1) => { return $1[\"popDebugGroup\"](); })"
+        js_popDebugGroup :: GPUDebugCommandsMixin -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/popDebugGroup MDN GPUDebugCommandsMixin.popDebugGroup documentation>
+popDebugGroup :: (MonadDOM m, IsGPUDebugCommandsMixin self) => self -> m ()
+popDebugGroup self = liftDOM (void ((js_popDebugGroup ((Types.toGPUDebugCommandsMixin self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"pushDebugGroup\"]($2); })"
+        js_pushDebugGroup :: GPUDebugCommandsMixin -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/pushDebugGroup MDN GPUDebugCommandsMixin.pushDebugGroup documentation>
+pushDebugGroup :: (MonadDOM m, IsGPUDebugCommandsMixin self, ToJSString groupLabel) => self -> groupLabel -> m ()
+pushDebugGroup self groupLabel = liftDOM (void ((js_pushDebugGroup ((Types.toGPUDebugCommandsMixin self)) (toJSString groupLabel))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUDepthStencilState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUDepthStencilState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUDepthStencilState.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUDepthStencilState
+       (js_newGPUDepthStencilState, js_setFormat, js_getFormat, js_setDepthWriteEnabled, js_getDepthWriteEnabled, js_setDepthCompare, js_getDepthCompare, js_setStencilFront, js_getStencilFront, js_setStencilBack, js_getStencilBack, js_setStencilReadMask, js_getStencilReadMask, js_setStencilWriteMask, js_getStencilWriteMask, js_setDepthBias, js_getDepthBias, js_setDepthBiasSlopeScale, js_getDepthBiasSlopeScale, js_setDepthBiasClamp, js_getDepthBiasClamp, newGPUDepthStencilState, setFormat, getFormat, setDepthWriteEnabled, getDepthWriteEnabled, getDepthWriteEnabledUnsafe, getDepthWriteEnabledUnchecked, setDepthCompare, getDepthCompare, getDepthCompareUnsafe, getDepthCompareUnchecked, setStencilFront, getStencilFront, getStencilFrontUnsafe, getStencilFrontUnchecked, setStencilBack, getStencilBack, getStencilBackUnsafe, getStencilBackUnchecked, setStencilReadMask, getStencilReadMask, getStencilReadMaskUnsafe, getStencilReadMaskUnchecked, setStencilWriteMask, getStencilWriteMask, getStencilWriteMaskUnsafe, getStencilWriteMaskUnchecked, setDepthBias, getDepthBias, getDepthBiasUnsafe, getDepthBiasUnchecked, setDepthBiasSlopeScale, getDepthBiasSlopeScale, getDepthBiasSlopeScaleUnsafe, getDepthBiasSlopeScaleUnchecked, setDepthBiasClamp, getDepthBiasClamp, getDepthBiasClampUnsafe, getDepthBiasClampUnchecked, GPUDepthStencilState(..), gTypeGPUDepthStencilState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"format\": $1}); })"
+        js_newGPUDepthStencilState :: JSVal -> IO GPUDepthStencilState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpudepthstencilstate GPUDepthStencilState specification>
+newGPUDepthStencilState :: (MonadDOM m) => GPUTextureFormat -> m GPUDepthStencilState
+newGPUDepthStencilState format = liftDOM (((toJSVal format) >>= \a1' -> js_newGPUDepthStencilState a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: GPUDepthStencilState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-format GPUDepthStencilState.format specification>
+setFormat :: (MonadDOM m) => GPUDepthStencilState -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-format GPUDepthStencilState.format specification>
+getFormat :: (MonadDOM m) => GPUDepthStencilState -> m GPUTextureFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthWriteEnabled\"] = $2; })"
+        js_setDepthWriteEnabled :: GPUDepthStencilState -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthwriteenabled GPUDepthStencilState.depthWriteEnabled specification>
+setDepthWriteEnabled :: (MonadDOM m) => GPUDepthStencilState -> Bool -> m ()
+setDepthWriteEnabled self val = liftDOM (void ((js_setDepthWriteEnabled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthWriteEnabled\"]; })"
+        js_getDepthWriteEnabled :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthwriteenabled GPUDepthStencilState.depthWriteEnabled specification>
+getDepthWriteEnabled :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Bool)
+getDepthWriteEnabled self = liftDOM (((js_getDepthWriteEnabled (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthwriteenabled GPUDepthStencilState.depthWriteEnabled specification>
+getDepthWriteEnabledUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Bool
+getDepthWriteEnabledUnsafe self = liftDOM ((((js_getDepthWriteEnabled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthwriteenabled GPUDepthStencilState.depthWriteEnabled specification>
+getDepthWriteEnabledUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m Bool
+getDepthWriteEnabledUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthWriteEnabled (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthCompare\"] = $2; })"
+        js_setDepthCompare :: GPUDepthStencilState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthcompare GPUDepthStencilState.depthCompare specification>
+setDepthCompare :: (MonadDOM m) => GPUDepthStencilState -> GPUCompareFunction -> m ()
+setDepthCompare self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDepthCompare (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthCompare\"]; })"
+        js_getDepthCompare :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthcompare GPUDepthStencilState.depthCompare specification>
+getDepthCompare :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe GPUCompareFunction)
+getDepthCompare self = liftDOM (((js_getDepthCompare (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthcompare GPUDepthStencilState.depthCompare specification>
+getDepthCompareUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m GPUCompareFunction
+getDepthCompareUnsafe self = liftDOM ((((js_getDepthCompare (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthcompare GPUDepthStencilState.depthCompare specification>
+getDepthCompareUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m GPUCompareFunction
+getDepthCompareUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthCompare (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilFront\"] = $2; })"
+        js_setStencilFront :: GPUDepthStencilState -> GPUStencilFaceState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilfront GPUDepthStencilState.stencilFront specification>
+setStencilFront :: (MonadDOM m) => GPUDepthStencilState -> GPUStencilFaceState -> m ()
+setStencilFront self val = liftDOM (void ((js_setStencilFront (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilFront\"]; })"
+        js_getStencilFront :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilfront GPUDepthStencilState.stencilFront specification>
+getStencilFront :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe GPUStencilFaceState)
+getStencilFront self = liftDOM (((js_getStencilFront (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilfront GPUDepthStencilState.stencilFront specification>
+getStencilFrontUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m GPUStencilFaceState
+getStencilFrontUnsafe self = liftDOM ((((js_getStencilFront (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilfront GPUDepthStencilState.stencilFront specification>
+getStencilFrontUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m GPUStencilFaceState
+getStencilFrontUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilFront (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilBack\"] = $2; })"
+        js_setStencilBack :: GPUDepthStencilState -> GPUStencilFaceState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilback GPUDepthStencilState.stencilBack specification>
+setStencilBack :: (MonadDOM m) => GPUDepthStencilState -> GPUStencilFaceState -> m ()
+setStencilBack self val = liftDOM (void ((js_setStencilBack (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilBack\"]; })"
+        js_getStencilBack :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilback GPUDepthStencilState.stencilBack specification>
+getStencilBack :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe GPUStencilFaceState)
+getStencilBack self = liftDOM (((js_getStencilBack (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilback GPUDepthStencilState.stencilBack specification>
+getStencilBackUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m GPUStencilFaceState
+getStencilBackUnsafe self = liftDOM ((((js_getStencilBack (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilback GPUDepthStencilState.stencilBack specification>
+getStencilBackUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m GPUStencilFaceState
+getStencilBackUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilBack (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilReadMask\"] = $2; })"
+        js_setStencilReadMask :: GPUDepthStencilState -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilreadmask GPUDepthStencilState.stencilReadMask specification>
+setStencilReadMask :: (MonadDOM m) => GPUDepthStencilState -> Word -> m ()
+setStencilReadMask self val = liftDOM (void ((js_setStencilReadMask (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilReadMask\"]; })"
+        js_getStencilReadMask :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilreadmask GPUDepthStencilState.stencilReadMask specification>
+getStencilReadMask :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Word)
+getStencilReadMask self = liftDOM (((js_getStencilReadMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilreadmask GPUDepthStencilState.stencilReadMask specification>
+getStencilReadMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Word
+getStencilReadMaskUnsafe self = liftDOM ((((js_getStencilReadMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilreadmask GPUDepthStencilState.stencilReadMask specification>
+getStencilReadMaskUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m Word
+getStencilReadMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilReadMask (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilWriteMask\"] = $2; })"
+        js_setStencilWriteMask :: GPUDepthStencilState -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilwritemask GPUDepthStencilState.stencilWriteMask specification>
+setStencilWriteMask :: (MonadDOM m) => GPUDepthStencilState -> Word -> m ()
+setStencilWriteMask self val = liftDOM (void ((js_setStencilWriteMask (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilWriteMask\"]; })"
+        js_getStencilWriteMask :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilwritemask GPUDepthStencilState.stencilWriteMask specification>
+getStencilWriteMask :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Word)
+getStencilWriteMask self = liftDOM (((js_getStencilWriteMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilwritemask GPUDepthStencilState.stencilWriteMask specification>
+getStencilWriteMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Word
+getStencilWriteMaskUnsafe self = liftDOM ((((js_getStencilWriteMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilwritemask GPUDepthStencilState.stencilWriteMask specification>
+getStencilWriteMaskUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m Word
+getStencilWriteMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilWriteMask (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthBias\"] = $2; })"
+        js_setDepthBias :: GPUDepthStencilState -> Int -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbias GPUDepthStencilState.depthBias specification>
+setDepthBias :: (MonadDOM m) => GPUDepthStencilState -> Int -> m ()
+setDepthBias self val = liftDOM (void ((js_setDepthBias (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthBias\"]; })"
+        js_getDepthBias :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbias GPUDepthStencilState.depthBias specification>
+getDepthBias :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Int)
+getDepthBias self = liftDOM (((js_getDepthBias (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbias GPUDepthStencilState.depthBias specification>
+getDepthBiasUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Int
+getDepthBiasUnsafe self = liftDOM ((((js_getDepthBias (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbias GPUDepthStencilState.depthBias specification>
+getDepthBiasUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m Int
+getDepthBiasUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthBias (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthBiasSlopeScale\"] = $2; })"
+        js_setDepthBiasSlopeScale :: GPUDepthStencilState -> Float -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasslopescale GPUDepthStencilState.depthBiasSlopeScale specification>
+setDepthBiasSlopeScale :: (MonadDOM m) => GPUDepthStencilState -> Float -> m ()
+setDepthBiasSlopeScale self val = liftDOM (void ((js_setDepthBiasSlopeScale (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthBiasSlopeScale\"]; })"
+        js_getDepthBiasSlopeScale :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasslopescale GPUDepthStencilState.depthBiasSlopeScale specification>
+getDepthBiasSlopeScale :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Float)
+getDepthBiasSlopeScale self = liftDOM (((js_getDepthBiasSlopeScale (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasslopescale GPUDepthStencilState.depthBiasSlopeScale specification>
+getDepthBiasSlopeScaleUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Float
+getDepthBiasSlopeScaleUnsafe self = liftDOM ((((js_getDepthBiasSlopeScale (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasslopescale GPUDepthStencilState.depthBiasSlopeScale specification>
+getDepthBiasSlopeScaleUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m Float
+getDepthBiasSlopeScaleUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthBiasSlopeScale (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthBiasClamp\"] = $2; })"
+        js_setDepthBiasClamp :: GPUDepthStencilState -> Float -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasclamp GPUDepthStencilState.depthBiasClamp specification>
+setDepthBiasClamp :: (MonadDOM m) => GPUDepthStencilState -> Float -> m ()
+setDepthBiasClamp self val = liftDOM (void ((js_setDepthBiasClamp (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthBiasClamp\"]; })"
+        js_getDepthBiasClamp :: GPUDepthStencilState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasclamp GPUDepthStencilState.depthBiasClamp specification>
+getDepthBiasClamp :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Float)
+getDepthBiasClamp self = liftDOM (((js_getDepthBiasClamp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasclamp GPUDepthStencilState.depthBiasClamp specification>
+getDepthBiasClampUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Float
+getDepthBiasClampUnsafe self = liftDOM ((((js_getDepthBiasClamp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasclamp GPUDepthStencilState.depthBiasClamp specification>
+getDepthBiasClampUnchecked :: (MonadDOM m) => GPUDepthStencilState -> m Float
+getDepthBiasClampUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthBiasClamp (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUDevice.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUDevice.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUDevice.hs
@@ -0,0 +1,231 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUDevice
+       (js_createBindGroup, js_createBindGroupLayout, js_createBuffer, js_createCommandEncoder, js_createComputePipeline, js_createComputePipelineAsync, js_createPipelineLayout, js_createQuerySet, js_createRenderBundleEncoder, js_createRenderPipeline, js_createRenderPipelineAsync, js_createSampler, js_createShaderModule, js_createTexture, js_destroy, js_importExternalTexture, js_popErrorScope, js_pushErrorScope, js_getFeatures, js_getLimits, js_getAdapterInfo, js_getQueue, js_getLost, createBindGroup, createBindGroup_, createBindGroupLayout, createBindGroupLayout_, createBuffer, createBuffer_, createCommandEncoder, createCommandEncoder_, createComputePipeline, createComputePipeline_, createComputePipelineAsync, createComputePipelineAsync_, createPipelineLayout, createPipelineLayout_, createQuerySet, createQuerySet_, createRenderBundleEncoder, createRenderBundleEncoder_, createRenderPipeline, createRenderPipeline_, createRenderPipelineAsync, createRenderPipelineAsync_, createSampler, createSampler_, createShaderModule, createShaderModule_, createTexture, createTexture_, destroy, importExternalTexture, importExternalTexture_, popErrorScope, popErrorScope_, popErrorScopeUnsafe, popErrorScopeUnchecked, pushErrorScope, getFeatures, getLimits, getAdapterInfo, getQueue, getLost, uncapturederror, GPUDevice(..), gTypeGPUDevice)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createBindGroup\"]($2); })"
+        js_createBindGroup :: GPUDevice -> GPUBindGroupDescriptor -> IO GPUBindGroup
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroup MDN GPUDevice.createBindGroup documentation>
+createBindGroup :: (MonadDOM m) => GPUDevice -> GPUBindGroupDescriptor -> m GPUBindGroup
+createBindGroup self descriptor = liftDOM ((js_createBindGroup (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroup MDN GPUDevice.createBindGroup documentation>
+createBindGroup_ :: (MonadDOM m) => GPUDevice -> GPUBindGroupDescriptor -> m ()
+createBindGroup_ self descriptor = liftDOM (void ((js_createBindGroup (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createBindGroupLayout\"]($2); })"
+        js_createBindGroupLayout :: GPUDevice -> GPUBindGroupLayoutDescriptor -> IO GPUBindGroupLayout
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroupLayout MDN GPUDevice.createBindGroupLayout documentation>
+createBindGroupLayout :: (MonadDOM m) => GPUDevice -> GPUBindGroupLayoutDescriptor -> m GPUBindGroupLayout
+createBindGroupLayout self descriptor = liftDOM ((js_createBindGroupLayout (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroupLayout MDN GPUDevice.createBindGroupLayout documentation>
+createBindGroupLayout_ :: (MonadDOM m) => GPUDevice -> GPUBindGroupLayoutDescriptor -> m ()
+createBindGroupLayout_ self descriptor = liftDOM (void ((js_createBindGroupLayout (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createBuffer\"]($2); })"
+        js_createBuffer :: GPUDevice -> GPUBufferDescriptor -> IO GPUBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBuffer MDN GPUDevice.createBuffer documentation>
+createBuffer :: (MonadDOM m) => GPUDevice -> GPUBufferDescriptor -> m GPUBuffer
+createBuffer self descriptor = liftDOM ((js_createBuffer (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBuffer MDN GPUDevice.createBuffer documentation>
+createBuffer_ :: (MonadDOM m) => GPUDevice -> GPUBufferDescriptor -> m ()
+createBuffer_ self descriptor = liftDOM (void ((js_createBuffer (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createCommandEncoder\"]($2); })"
+        js_createCommandEncoder :: GPUDevice -> JSVal -> IO GPUCommandEncoder
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createCommandEncoder MDN GPUDevice.createCommandEncoder documentation>
+createCommandEncoder :: (MonadDOM m) => GPUDevice -> Maybe GPUCommandEncoderDescriptor -> m GPUCommandEncoder
+createCommandEncoder self descriptor = liftDOM (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_createCommandEncoder (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createCommandEncoder MDN GPUDevice.createCommandEncoder documentation>
+createCommandEncoder_ :: (MonadDOM m) => GPUDevice -> Maybe GPUCommandEncoderDescriptor -> m ()
+createCommandEncoder_ self descriptor = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_createCommandEncoder (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createComputePipeline\"]($2); })"
+        js_createComputePipeline :: GPUDevice -> GPUComputePipelineDescriptor -> IO GPUComputePipeline
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipeline MDN GPUDevice.createComputePipeline documentation>
+createComputePipeline :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m GPUComputePipeline
+createComputePipeline self descriptor = liftDOM ((js_createComputePipeline (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipeline MDN GPUDevice.createComputePipeline documentation>
+createComputePipeline_ :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m ()
+createComputePipeline_ self descriptor = liftDOM (void ((js_createComputePipeline (self) (descriptor))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"createComputePipelineAsync\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createComputePipelineAsync :: GPUDevice -> GPUComputePipelineDescriptor -> IO (JSVal, GPUComputePipeline)
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipelineAsync MDN GPUDevice.createComputePipelineAsync documentation>
+createComputePipelineAsync :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m GPUComputePipeline
+createComputePipelineAsync self descriptor = liftDOM (((js_createComputePipelineAsync (self) (descriptor)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipelineAsync MDN GPUDevice.createComputePipelineAsync documentation>
+createComputePipelineAsync_ :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m ()
+createComputePipelineAsync_ self descriptor = liftDOM (void (((js_createComputePipelineAsync (self) (descriptor)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createPipelineLayout\"]($2); })"
+        js_createPipelineLayout :: GPUDevice -> GPUPipelineLayoutDescriptor -> IO GPUPipelineLayout
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createPipelineLayout MDN GPUDevice.createPipelineLayout documentation>
+createPipelineLayout :: (MonadDOM m) => GPUDevice -> GPUPipelineLayoutDescriptor -> m GPUPipelineLayout
+createPipelineLayout self descriptor = liftDOM ((js_createPipelineLayout (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createPipelineLayout MDN GPUDevice.createPipelineLayout documentation>
+createPipelineLayout_ :: (MonadDOM m) => GPUDevice -> GPUPipelineLayoutDescriptor -> m ()
+createPipelineLayout_ self descriptor = liftDOM (void ((js_createPipelineLayout (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createQuerySet\"]($2); })"
+        js_createQuerySet :: GPUDevice -> GPUQuerySetDescriptor -> IO GPUQuerySet
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createQuerySet MDN GPUDevice.createQuerySet documentation>
+createQuerySet :: (MonadDOM m) => GPUDevice -> GPUQuerySetDescriptor -> m GPUQuerySet
+createQuerySet self descriptor = liftDOM ((js_createQuerySet (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createQuerySet MDN GPUDevice.createQuerySet documentation>
+createQuerySet_ :: (MonadDOM m) => GPUDevice -> GPUQuerySetDescriptor -> m ()
+createQuerySet_ self descriptor = liftDOM (void ((js_createQuerySet (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createRenderBundleEncoder\"]($2); })"
+        js_createRenderBundleEncoder :: GPUDevice -> GPURenderBundleEncoderDescriptor -> IO GPURenderBundleEncoder
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderBundleEncoder MDN GPUDevice.createRenderBundleEncoder documentation>
+createRenderBundleEncoder :: (MonadDOM m) => GPUDevice -> GPURenderBundleEncoderDescriptor -> m GPURenderBundleEncoder
+createRenderBundleEncoder self descriptor = liftDOM ((js_createRenderBundleEncoder (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderBundleEncoder MDN GPUDevice.createRenderBundleEncoder documentation>
+createRenderBundleEncoder_ :: (MonadDOM m) => GPUDevice -> GPURenderBundleEncoderDescriptor -> m ()
+createRenderBundleEncoder_ self descriptor = liftDOM (void ((js_createRenderBundleEncoder (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createRenderPipeline\"]($2); })"
+        js_createRenderPipeline :: GPUDevice -> GPURenderPipelineDescriptor -> IO GPURenderPipeline
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipeline MDN GPUDevice.createRenderPipeline documentation>
+createRenderPipeline :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m GPURenderPipeline
+createRenderPipeline self descriptor = liftDOM ((js_createRenderPipeline (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipeline MDN GPUDevice.createRenderPipeline documentation>
+createRenderPipeline_ :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m ()
+createRenderPipeline_ self descriptor = liftDOM (void ((js_createRenderPipeline (self) (descriptor))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"createRenderPipelineAsync\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createRenderPipelineAsync :: GPUDevice -> GPURenderPipelineDescriptor -> IO (JSVal, GPURenderPipeline)
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipelineAsync MDN GPUDevice.createRenderPipelineAsync documentation>
+createRenderPipelineAsync :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m GPURenderPipeline
+createRenderPipelineAsync self descriptor = liftDOM (((js_createRenderPipelineAsync (self) (descriptor)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipelineAsync MDN GPUDevice.createRenderPipelineAsync documentation>
+createRenderPipelineAsync_ :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m ()
+createRenderPipelineAsync_ self descriptor = liftDOM (void (((js_createRenderPipelineAsync (self) (descriptor)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createSampler\"]($2); })"
+        js_createSampler :: GPUDevice -> JSVal -> IO GPUSampler
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createSampler MDN GPUDevice.createSampler documentation>
+createSampler :: (MonadDOM m) => GPUDevice -> Maybe GPUSamplerDescriptor -> m GPUSampler
+createSampler self descriptor = liftDOM (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_createSampler (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createSampler MDN GPUDevice.createSampler documentation>
+createSampler_ :: (MonadDOM m) => GPUDevice -> Maybe GPUSamplerDescriptor -> m ()
+createSampler_ self descriptor = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_createSampler (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createShaderModule\"]($2); })"
+        js_createShaderModule :: GPUDevice -> GPUShaderModuleDescriptor -> IO GPUShaderModule
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createShaderModule MDN GPUDevice.createShaderModule documentation>
+createShaderModule :: (MonadDOM m) => GPUDevice -> GPUShaderModuleDescriptor -> m GPUShaderModule
+createShaderModule self descriptor = liftDOM ((js_createShaderModule (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createShaderModule MDN GPUDevice.createShaderModule documentation>
+createShaderModule_ :: (MonadDOM m) => GPUDevice -> GPUShaderModuleDescriptor -> m ()
+createShaderModule_ self descriptor = liftDOM (void ((js_createShaderModule (self) (descriptor))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createTexture\"]($2); })"
+        js_createTexture :: GPUDevice -> GPUTextureDescriptor -> IO GPUTexture
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createTexture MDN GPUDevice.createTexture documentation>
+createTexture :: (MonadDOM m) => GPUDevice -> GPUTextureDescriptor -> m GPUTexture
+createTexture self descriptor = liftDOM ((js_createTexture (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createTexture MDN GPUDevice.createTexture documentation>
+createTexture_ :: (MonadDOM m) => GPUDevice -> GPUTextureDescriptor -> m ()
+createTexture_ self descriptor = liftDOM (void ((js_createTexture (self) (descriptor))))
+
+foreign import javascript safe "(($1) => { return $1[\"destroy\"](); })"
+        js_destroy :: GPUDevice -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/destroy MDN GPUDevice.destroy documentation>
+destroy :: (MonadDOM m) => GPUDevice -> m ()
+destroy self = liftDOM (void ((js_destroy (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"importExternalTexture\"]($2); })"
+        js_importExternalTexture :: GPUDevice -> GPUExternalTextureDescriptor -> IO GPUExternalTexture
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/importExternalTexture MDN GPUDevice.importExternalTexture documentation>
+importExternalTexture :: (MonadDOM m) => GPUDevice -> GPUExternalTextureDescriptor -> m GPUExternalTexture
+importExternalTexture self descriptor = liftDOM ((js_importExternalTexture (self) (descriptor)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/importExternalTexture MDN GPUDevice.importExternalTexture documentation>
+importExternalTexture_ :: (MonadDOM m) => GPUDevice -> GPUExternalTextureDescriptor -> m ()
+importExternalTexture_ self descriptor = liftDOM (void ((js_importExternalTexture (self) (descriptor))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"popErrorScope\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_popErrorScope :: GPUDevice -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/popErrorScope MDN GPUDevice.popErrorScope documentation>
+popErrorScope :: (MonadDOM m) => GPUDevice -> m (Maybe GPUError)
+popErrorScope self = liftDOM ((((js_popErrorScope (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/popErrorScope MDN GPUDevice.popErrorScope documentation>
+popErrorScope_ :: (MonadDOM m) => GPUDevice -> m ()
+popErrorScope_ self = liftDOM (void (((js_popErrorScope (self)) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/popErrorScope MDN GPUDevice.popErrorScope documentation>
+popErrorScopeUnsafe :: (MonadDOM m, HasCallStack) => GPUDevice -> m GPUError
+popErrorScopeUnsafe self = liftDOM (((((js_popErrorScope (self)) >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/popErrorScope MDN GPUDevice.popErrorScope documentation>
+popErrorScopeUnchecked :: (MonadDOM m) => GPUDevice -> m GPUError
+popErrorScopeUnchecked self = liftDOM ((pFromJSVal <$> ((js_popErrorScope (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"pushErrorScope\"]($2); })"
+        js_pushErrorScope :: GPUDevice -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/pushErrorScope MDN GPUDevice.pushErrorScope documentation>
+pushErrorScope :: (MonadDOM m) => GPUDevice -> GPUErrorFilter -> m ()
+pushErrorScope self filter = liftDOM (void (((toJSVal filter) >>= \a2' -> js_pushErrorScope (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"features\"]; })"
+        js_getFeatures :: GPUDevice -> IO GPUSupportedFeatures
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/features MDN GPUDevice.features documentation>
+getFeatures :: (MonadDOM m) => GPUDevice -> m GPUSupportedFeatures
+getFeatures self = liftDOM ((js_getFeatures (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"limits\"]; })"
+        js_getLimits :: GPUDevice -> IO GPUSupportedLimits
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/limits MDN GPUDevice.limits documentation>
+getLimits :: (MonadDOM m) => GPUDevice -> m GPUSupportedLimits
+getLimits self = liftDOM ((js_getLimits (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"adapterInfo\"]; })"
+        js_getAdapterInfo :: GPUDevice -> IO GPUAdapterInfo
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/adapterInfo MDN GPUDevice.adapterInfo documentation>
+getAdapterInfo :: (MonadDOM m) => GPUDevice -> m GPUAdapterInfo
+getAdapterInfo self = liftDOM ((js_getAdapterInfo (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"queue\"]; })"
+        js_getQueue :: GPUDevice -> IO GPUQueue
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/queue MDN GPUDevice.queue documentation>
+getQueue :: (MonadDOM m) => GPUDevice -> m GPUQueue
+getQueue self = liftDOM ((js_getQueue (self)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"lost\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getLost :: GPUDevice -> IO (JSVal, GPUDeviceLostInfo)
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/lost MDN GPUDevice.lost documentation>
+getLost :: (MonadDOM m) => GPUDevice -> m GPUDeviceLostInfo
+getLost self = liftDOM (((js_getLost (self)) >>= checkPromiseResult))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevice-onuncapturederror uncapturederror event>
+uncapturederror :: EventName GPUDevice GPUUncapturedErrorEvent
+uncapturederror = unsafeEventName (toJSString "uncapturederror")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUDeviceDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUDeviceDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUDeviceDescriptor.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUDeviceDescriptor
+       (js_newGPUDeviceDescriptor, js_setRequiredFeatures, js_getRequiredFeatures, js_setRequiredLimits, js_getRequiredLimits, js_setDefaultQueue, js_getDefaultQueue, newGPUDeviceDescriptor, setRequiredFeatures, getRequiredFeatures, getRequiredFeaturesUnsafe, getRequiredFeaturesUnchecked, setRequiredLimits, getRequiredLimits, getRequiredLimitsUnsafe, getRequiredLimitsUnchecked, setDefaultQueue, getDefaultQueue, getDefaultQueueUnsafe, getDefaultQueueUnchecked, GPUDeviceDescriptor(..), gTypeGPUDeviceDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUDeviceDescriptor :: IO GPUDeviceDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#gpudevicedescriptor GPUDeviceDescriptor specification>
+newGPUDeviceDescriptor :: (MonadDOM m) => m GPUDeviceDescriptor
+newGPUDeviceDescriptor = liftDOM ((js_newGPUDeviceDescriptor))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requiredFeatures\"] = $2; })"
+        js_setRequiredFeatures :: GPUDeviceDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredfeatures GPUDeviceDescriptor.requiredFeatures specification>
+setRequiredFeatures :: (MonadDOM m) => GPUDeviceDescriptor -> [GPUFeatureName] -> m ()
+setRequiredFeatures self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRequiredFeatures (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requiredFeatures\"]; })"
+        js_getRequiredFeatures :: GPUDeviceDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredfeatures GPUDeviceDescriptor.requiredFeatures specification>
+getRequiredFeatures :: (MonadDOM m) => GPUDeviceDescriptor -> m (Maybe [GPUFeatureName])
+getRequiredFeatures self = liftDOM (((js_getRequiredFeatures (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredfeatures GPUDeviceDescriptor.requiredFeatures specification>
+getRequiredFeaturesUnsafe :: (MonadDOM m, HasCallStack) => GPUDeviceDescriptor -> m [GPUFeatureName]
+getRequiredFeaturesUnsafe self = liftDOM ((((js_getRequiredFeatures (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredfeatures GPUDeviceDescriptor.requiredFeatures specification>
+getRequiredFeaturesUnchecked :: (MonadDOM m) => GPUDeviceDescriptor -> m [GPUFeatureName]
+getRequiredFeaturesUnchecked self = liftDOM (((js_getRequiredFeatures (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requiredLimits\"] = $2; })"
+        js_setRequiredLimits :: GPUDeviceDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredlimits GPUDeviceDescriptor.requiredLimits specification>
+setRequiredLimits :: (MonadDOM m) => GPUDeviceDescriptor -> (Record JSString JSVal) -> m ()
+setRequiredLimits self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRequiredLimits (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requiredLimits\"]; })"
+        js_getRequiredLimits :: GPUDeviceDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredlimits GPUDeviceDescriptor.requiredLimits specification>
+getRequiredLimits :: (MonadDOM m) => GPUDeviceDescriptor -> m (Maybe (Record JSString JSVal))
+getRequiredLimits self = liftDOM (((js_getRequiredLimits (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredlimits GPUDeviceDescriptor.requiredLimits specification>
+getRequiredLimitsUnsafe :: (MonadDOM m, HasCallStack) => GPUDeviceDescriptor -> m (Record JSString JSVal)
+getRequiredLimitsUnsafe self = liftDOM ((((js_getRequiredLimits (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredlimits GPUDeviceDescriptor.requiredLimits specification>
+getRequiredLimitsUnchecked :: (MonadDOM m) => GPUDeviceDescriptor -> m (Record JSString JSVal)
+getRequiredLimitsUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequiredLimits (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"defaultQueue\"] = $2; })"
+        js_setDefaultQueue :: GPUDeviceDescriptor -> GPUQueueDescriptor -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-defaultqueue GPUDeviceDescriptor.defaultQueue specification>
+setDefaultQueue :: (MonadDOM m) => GPUDeviceDescriptor -> GPUQueueDescriptor -> m ()
+setDefaultQueue self val = liftDOM (void ((js_setDefaultQueue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultQueue\"]; })"
+        js_getDefaultQueue :: GPUDeviceDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-defaultqueue GPUDeviceDescriptor.defaultQueue specification>
+getDefaultQueue :: (MonadDOM m) => GPUDeviceDescriptor -> m (Maybe GPUQueueDescriptor)
+getDefaultQueue self = liftDOM (((js_getDefaultQueue (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-defaultqueue GPUDeviceDescriptor.defaultQueue specification>
+getDefaultQueueUnsafe :: (MonadDOM m, HasCallStack) => GPUDeviceDescriptor -> m GPUQueueDescriptor
+getDefaultQueueUnsafe self = liftDOM ((((js_getDefaultQueue (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-defaultqueue GPUDeviceDescriptor.defaultQueue specification>
+getDefaultQueueUnchecked :: (MonadDOM m) => GPUDeviceDescriptor -> m GPUQueueDescriptor
+getDefaultQueueUnchecked self = liftDOM ((pFromJSVal <$> (js_getDefaultQueue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUDeviceLostInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUDeviceLostInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUDeviceLostInfo.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUDeviceLostInfo
+       (js_getReason, js_getMessage, getReason, getMessage, GPUDeviceLostInfo(..), gTypeGPUDeviceLostInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: GPUDeviceLostInfo -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDeviceLostInfo/reason MDN GPUDeviceLostInfo.reason documentation>
+getReason :: (MonadDOM m) => GPUDeviceLostInfo -> m GPUDeviceLostReason
+getReason self = liftDOM (((js_getReason (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: GPUDeviceLostInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDeviceLostInfo/message MDN GPUDeviceLostInfo.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => GPUDeviceLostInfo -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUError.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUError.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUError
+       (js_getMessage, getMessage, GPUError(..), gTypeGPUError, IsGPUError, toGPUError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: GPUError -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUError/message MDN GPUError.message documentation>
+getMessage :: (MonadDOM m, IsGPUError self, FromJSString result) => self -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage ((Types.toGPUError self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUExtent3DDict.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUExtent3DDict.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUExtent3DDict.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUExtent3DDict
+       (js_newGPUExtent3DDict, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setDepthOrArrayLayers, js_getDepthOrArrayLayers, newGPUExtent3DDict, setWidth, getWidth, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setDepthOrArrayLayers, getDepthOrArrayLayers, getDepthOrArrayLayersUnsafe, getDepthOrArrayLayersUnchecked, GPUExtent3DDict(..), gTypeGPUExtent3DDict)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"width\": $1}); })"
+        js_newGPUExtent3DDict :: Word -> IO GPUExtent3DDict
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuextent3ddict GPUExtent3DDict specification>
+newGPUExtent3DDict :: (MonadDOM m) => Word -> m GPUExtent3DDict
+newGPUExtent3DDict width = liftDOM ((js_newGPUExtent3DDict (width)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: GPUExtent3DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-width GPUExtent3DDict.width specification>
+setWidth :: (MonadDOM m) => GPUExtent3DDict -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: GPUExtent3DDict -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-width GPUExtent3DDict.width specification>
+getWidth :: (MonadDOM m) => GPUExtent3DDict -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: GPUExtent3DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-height GPUExtent3DDict.height specification>
+setHeight :: (MonadDOM m) => GPUExtent3DDict -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: GPUExtent3DDict -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-height GPUExtent3DDict.height specification>
+getHeight :: (MonadDOM m) => GPUExtent3DDict -> m (Maybe Word)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-height GPUExtent3DDict.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => GPUExtent3DDict -> m Word
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-height GPUExtent3DDict.height specification>
+getHeightUnchecked :: (MonadDOM m) => GPUExtent3DDict -> m Word
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthOrArrayLayers\"] = $2; })"
+        js_setDepthOrArrayLayers :: GPUExtent3DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-depthorarraylayers GPUExtent3DDict.depthOrArrayLayers specification>
+setDepthOrArrayLayers :: (MonadDOM m) => GPUExtent3DDict -> Word -> m ()
+setDepthOrArrayLayers self val = liftDOM (void ((js_setDepthOrArrayLayers (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthOrArrayLayers\"]; })"
+        js_getDepthOrArrayLayers :: GPUExtent3DDict -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-depthorarraylayers GPUExtent3DDict.depthOrArrayLayers specification>
+getDepthOrArrayLayers :: (MonadDOM m) => GPUExtent3DDict -> m (Maybe Word)
+getDepthOrArrayLayers self = liftDOM (((js_getDepthOrArrayLayers (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-depthorarraylayers GPUExtent3DDict.depthOrArrayLayers specification>
+getDepthOrArrayLayersUnsafe :: (MonadDOM m, HasCallStack) => GPUExtent3DDict -> m Word
+getDepthOrArrayLayersUnsafe self = liftDOM ((((js_getDepthOrArrayLayers (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-depthorarraylayers GPUExtent3DDict.depthOrArrayLayers specification>
+getDepthOrArrayLayersUnchecked :: (MonadDOM m) => GPUExtent3DDict -> m Word
+getDepthOrArrayLayersUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthOrArrayLayers (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTexture.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUExternalTexture
+       (GPUExternalTexture(..), gTypeGPUExternalTexture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTextureBindingLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTextureBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTextureBindingLayout.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUExternalTextureBindingLayout
+       (js_newGPUExternalTextureBindingLayout, newGPUExternalTextureBindingLayout, GPUExternalTextureBindingLayout(..), gTypeGPUExternalTextureBindingLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUExternalTextureBindingLayout :: IO GPUExternalTextureBindingLayout
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuexternaltexturebindinglayout GPUExternalTextureBindingLayout specification>
+newGPUExternalTextureBindingLayout :: (MonadDOM m) => m GPUExternalTextureBindingLayout
+newGPUExternalTextureBindingLayout = liftDOM ((js_newGPUExternalTextureBindingLayout))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTextureDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTextureDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUExternalTextureDescriptor.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUExternalTextureDescriptor
+       (js_newGPUExternalTextureDescriptor, js_setSource, js_getSource, js_setColorSpace, js_getColorSpace, newGPUExternalTextureDescriptor, setSource, getSource, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, GPUExternalTextureDescriptor(..), gTypeGPUExternalTextureDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"source\": $1}); })"
+        js_newGPUExternalTextureDescriptor :: HTMLVideoElementOrVideoFrame -> IO GPUExternalTextureDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuexternaltexturedescriptor GPUExternalTextureDescriptor specification>
+newGPUExternalTextureDescriptor :: (MonadDOM m, IsHTMLVideoElementOrVideoFrame source) => source -> m GPUExternalTextureDescriptor
+newGPUExternalTextureDescriptor source = liftDOM ((js_newGPUExternalTextureDescriptor (Types.toHTMLVideoElementOrVideoFrame source)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: GPUExternalTextureDescriptor -> HTMLVideoElementOrVideoFrame -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-source GPUExternalTextureDescriptor.source specification>
+setSource :: (MonadDOM m, IsHTMLVideoElementOrVideoFrame val) => GPUExternalTextureDescriptor -> val -> m ()
+setSource self val = liftDOM (void ((js_setSource (self) (Types.toHTMLVideoElementOrVideoFrame val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: GPUExternalTextureDescriptor -> IO HTMLVideoElementOrVideoFrame
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-source GPUExternalTextureDescriptor.source specification>
+getSource :: (MonadDOM m) => GPUExternalTextureDescriptor -> m HTMLVideoElementOrVideoFrame
+getSource self = liftDOM ((js_getSource (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: GPUExternalTextureDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-colorspace GPUExternalTextureDescriptor.colorSpace specification>
+setColorSpace :: (MonadDOM m) => GPUExternalTextureDescriptor -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorSpace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: GPUExternalTextureDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-colorspace GPUExternalTextureDescriptor.colorSpace specification>
+getColorSpace :: (MonadDOM m) => GPUExternalTextureDescriptor -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-colorspace GPUExternalTextureDescriptor.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => GPUExternalTextureDescriptor -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-colorspace GPUExternalTextureDescriptor.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => GPUExternalTextureDescriptor -> m PredefinedColorSpace
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUFragmentState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUFragmentState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUFragmentState.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUFragmentState
+       (js_newGPUFragmentState, js_setTargets, js_getTargets, newGPUFragmentState, setTargets, getTargets, GPUFragmentState(..), gTypeGPUFragmentState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"module\": $1, \"targets\": $2}); })"
+        js_newGPUFragmentState :: GPUShaderModule -> JSVal -> IO GPUFragmentState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpufragmentstate GPUFragmentState specification>
+newGPUFragmentState :: (MonadDOM m) => GPUShaderModule -> [Maybe GPUColorTargetState] -> m GPUFragmentState
+newGPUFragmentState module' targets = liftDOM (((toJSVal targets) >>= \a2' -> js_newGPUFragmentState (module') a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"targets\"] = $2; })"
+        js_setTargets :: GPUFragmentState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpufragmentstate-targets GPUFragmentState.targets specification>
+setTargets :: (MonadDOM m) => GPUFragmentState -> [Maybe GPUColorTargetState] -> m ()
+setTargets self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTargets (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"targets\"]; })"
+        js_getTargets :: GPUFragmentState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpufragmentstate-targets GPUFragmentState.targets specification>
+getTargets :: (MonadDOM m) => GPUFragmentState -> m [Maybe GPUColorTargetState]
+getTargets self = liftDOM (((js_getTargets (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUInternalError.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUInternalError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUInternalError.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUInternalError
+       (js_newGPUInternalError, newGPUInternalError, GPUInternalError(..), gTypeGPUInternalError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"GPUInternalError\"]($1); })"
+        js_newGPUInternalError :: JSString -> IO GPUInternalError
+-- | <https://developer.mozilla.org/docs/Web/API/GPUInternalError/GPUInternalError MDN GPUInternalError. documentation>
+newGPUInternalError :: (MonadDOM m, ToJSString message) => message -> m GPUInternalError
+newGPUInternalError message = liftDOM ((js_newGPUInternalError (toJSString message)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUMultisampleState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUMultisampleState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUMultisampleState.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUMultisampleState
+       (js_newGPUMultisampleState, js_setCount, js_getCount, js_setMask, js_getMask, js_setAlphaToCoverageEnabled, js_getAlphaToCoverageEnabled, newGPUMultisampleState, setCount, getCount, getCountUnsafe, getCountUnchecked, setMask, getMask, getMaskUnsafe, getMaskUnchecked, setAlphaToCoverageEnabled, getAlphaToCoverageEnabled, getAlphaToCoverageEnabledUnsafe, getAlphaToCoverageEnabledUnchecked, GPUMultisampleState(..), gTypeGPUMultisampleState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUMultisampleState :: IO GPUMultisampleState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpumultisamplestate GPUMultisampleState specification>
+newGPUMultisampleState :: (MonadDOM m) => m GPUMultisampleState
+newGPUMultisampleState = liftDOM ((js_newGPUMultisampleState))
+
+foreign import javascript safe "(($1, $2) => { $1[\"count\"] = $2; })"
+        js_setCount :: GPUMultisampleState -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-count GPUMultisampleState.count specification>
+setCount :: (MonadDOM m) => GPUMultisampleState -> Word -> m ()
+setCount self val = liftDOM (void ((js_setCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"count\"]; })"
+        js_getCount :: GPUMultisampleState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-count GPUMultisampleState.count specification>
+getCount :: (MonadDOM m) => GPUMultisampleState -> m (Maybe Word)
+getCount self = liftDOM (((js_getCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-count GPUMultisampleState.count specification>
+getCountUnsafe :: (MonadDOM m, HasCallStack) => GPUMultisampleState -> m Word
+getCountUnsafe self = liftDOM ((((js_getCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-count GPUMultisampleState.count specification>
+getCountUnchecked :: (MonadDOM m) => GPUMultisampleState -> m Word
+getCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mask\"] = $2; })"
+        js_setMask :: GPUMultisampleState -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-mask GPUMultisampleState.mask specification>
+setMask :: (MonadDOM m) => GPUMultisampleState -> Word -> m ()
+setMask self val = liftDOM (void ((js_setMask (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mask\"]; })"
+        js_getMask :: GPUMultisampleState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-mask GPUMultisampleState.mask specification>
+getMask :: (MonadDOM m) => GPUMultisampleState -> m (Maybe Word)
+getMask self = liftDOM (((js_getMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-mask GPUMultisampleState.mask specification>
+getMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUMultisampleState -> m Word
+getMaskUnsafe self = liftDOM ((((js_getMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-mask GPUMultisampleState.mask specification>
+getMaskUnchecked :: (MonadDOM m) => GPUMultisampleState -> m Word
+getMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getMask (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alphaToCoverageEnabled\"] = $2; })"
+        js_setAlphaToCoverageEnabled :: GPUMultisampleState -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-alphatocoverageenabled GPUMultisampleState.alphaToCoverageEnabled specification>
+setAlphaToCoverageEnabled :: (MonadDOM m) => GPUMultisampleState -> Bool -> m ()
+setAlphaToCoverageEnabled self val = liftDOM (void ((js_setAlphaToCoverageEnabled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alphaToCoverageEnabled\"]; })"
+        js_getAlphaToCoverageEnabled :: GPUMultisampleState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-alphatocoverageenabled GPUMultisampleState.alphaToCoverageEnabled specification>
+getAlphaToCoverageEnabled :: (MonadDOM m) => GPUMultisampleState -> m (Maybe Bool)
+getAlphaToCoverageEnabled self = liftDOM (((js_getAlphaToCoverageEnabled (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-alphatocoverageenabled GPUMultisampleState.alphaToCoverageEnabled specification>
+getAlphaToCoverageEnabledUnsafe :: (MonadDOM m, HasCallStack) => GPUMultisampleState -> m Bool
+getAlphaToCoverageEnabledUnsafe self = liftDOM ((((js_getAlphaToCoverageEnabled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-alphatocoverageenabled GPUMultisampleState.alphaToCoverageEnabled specification>
+getAlphaToCoverageEnabledUnchecked :: (MonadDOM m) => GPUMultisampleState -> m Bool
+getAlphaToCoverageEnabledUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlphaToCoverageEnabled (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUObjectBase.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUObjectBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUObjectBase.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUObjectBase
+       (js_setLabel, js_getLabel, setLabel, getLabel, GPUObjectBase(..), gTypeGPUObjectBase, IsGPUObjectBase, toGPUObjectBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: GPUObjectBase -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBindGroup/label MDN GPUObjectBase.label documentation>
+setLabel :: (MonadDOM m, IsGPUObjectBase self, ToJSString val) => self -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel ((Types.toGPUObjectBase self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: GPUObjectBase -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBindGroup/label MDN GPUObjectBase.label documentation>
+getLabel :: (MonadDOM m, IsGPUObjectBase self, FromJSString result) => self -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel ((Types.toGPUObjectBase self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUObjectDescriptorBase.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUObjectDescriptorBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUObjectDescriptorBase.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUObjectDescriptorBase
+       (js_newGPUObjectDescriptorBase, js_setLabel, js_getLabel, newGPUObjectDescriptorBase, setLabel, getLabel, getLabelUnsafe, getLabelUnchecked, GPUObjectDescriptorBase(..), gTypeGPUObjectDescriptorBase, IsGPUObjectDescriptorBase, toGPUObjectDescriptorBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUObjectDescriptorBase :: IO GPUObjectDescriptorBase
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuobjectdescriptorbase GPUObjectDescriptorBase specification>
+newGPUObjectDescriptorBase :: (MonadDOM m) => m GPUObjectDescriptorBase
+newGPUObjectDescriptorBase = liftDOM ((js_newGPUObjectDescriptorBase))
+
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: GPUObjectDescriptorBase -> JSString -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuobjectdescriptorbase-label GPUObjectDescriptorBase.label specification>
+setLabel :: (MonadDOM m, IsGPUObjectDescriptorBase self, ToJSString val) => self -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel ((Types.toGPUObjectDescriptorBase self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: GPUObjectDescriptorBase -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuobjectdescriptorbase-label GPUObjectDescriptorBase.label specification>
+getLabel :: (MonadDOM m, IsGPUObjectDescriptorBase self, FromJSString result) => self -> m (Maybe result)
+getLabel self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLabel ((Types.toGPUObjectDescriptorBase self)))))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuobjectdescriptorbase-label GPUObjectDescriptorBase.label specification>
+getLabelUnsafe :: (MonadDOM m, IsGPUObjectDescriptorBase self, HasCallStack, FromJSString result) => self -> m result
+getLabelUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLabel ((Types.toGPUObjectDescriptorBase self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuobjectdescriptorbase-label GPUObjectDescriptorBase.label specification>
+getLabelUnchecked :: (MonadDOM m, IsGPUObjectDescriptorBase self, FromJSString result) => self -> m result
+getLabelUnchecked self = liftDOM ((pFromJSVal <$> (js_getLabel ((Types.toGPUObjectDescriptorBase self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUOrigin2DDict.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUOrigin2DDict.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUOrigin2DDict.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUOrigin2DDict
+       (js_newGPUOrigin2DDict, js_setX, js_getX, js_setY, js_getY, newGPUOrigin2DDict, setX, getX, getXUnsafe, getXUnchecked, setY, getY, getYUnsafe, getYUnchecked, GPUOrigin2DDict(..), gTypeGPUOrigin2DDict)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUOrigin2DDict :: IO GPUOrigin2DDict
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuorigin2ddict GPUOrigin2DDict specification>
+newGPUOrigin2DDict :: (MonadDOM m) => m GPUOrigin2DDict
+newGPUOrigin2DDict = liftDOM ((js_newGPUOrigin2DDict))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: GPUOrigin2DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-x GPUOrigin2DDict.x specification>
+setX :: (MonadDOM m) => GPUOrigin2DDict -> Word -> m ()
+setX self val = liftDOM (void ((js_setX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: GPUOrigin2DDict -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-x GPUOrigin2DDict.x specification>
+getX :: (MonadDOM m) => GPUOrigin2DDict -> m (Maybe Word)
+getX self = liftDOM (((js_getX (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-x GPUOrigin2DDict.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin2DDict -> m Word
+getXUnsafe self = liftDOM ((((js_getX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-x GPUOrigin2DDict.x specification>
+getXUnchecked :: (MonadDOM m) => GPUOrigin2DDict -> m Word
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: GPUOrigin2DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-y GPUOrigin2DDict.y specification>
+setY :: (MonadDOM m) => GPUOrigin2DDict -> Word -> m ()
+setY self val = liftDOM (void ((js_setY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: GPUOrigin2DDict -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-y GPUOrigin2DDict.y specification>
+getY :: (MonadDOM m) => GPUOrigin2DDict -> m (Maybe Word)
+getY self = liftDOM (((js_getY (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-y GPUOrigin2DDict.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin2DDict -> m Word
+getYUnsafe self = liftDOM ((((js_getY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-y GPUOrigin2DDict.y specification>
+getYUnchecked :: (MonadDOM m) => GPUOrigin2DDict -> m Word
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUOrigin3DDict.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUOrigin3DDict.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUOrigin3DDict.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUOrigin3DDict
+       (js_newGPUOrigin3DDict, js_setX, js_getX, js_setY, js_getY, js_setZ, js_getZ, newGPUOrigin3DDict, setX, getX, getXUnsafe, getXUnchecked, setY, getY, getYUnsafe, getYUnchecked, setZ, getZ, getZUnsafe, getZUnchecked, GPUOrigin3DDict(..), gTypeGPUOrigin3DDict)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUOrigin3DDict :: IO GPUOrigin3DDict
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuorigin3ddict GPUOrigin3DDict specification>
+newGPUOrigin3DDict :: (MonadDOM m) => m GPUOrigin3DDict
+newGPUOrigin3DDict = liftDOM ((js_newGPUOrigin3DDict))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: GPUOrigin3DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-x GPUOrigin3DDict.x specification>
+setX :: (MonadDOM m) => GPUOrigin3DDict -> Word -> m ()
+setX self val = liftDOM (void ((js_setX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: GPUOrigin3DDict -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-x GPUOrigin3DDict.x specification>
+getX :: (MonadDOM m) => GPUOrigin3DDict -> m (Maybe Word)
+getX self = liftDOM (((js_getX (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-x GPUOrigin3DDict.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin3DDict -> m Word
+getXUnsafe self = liftDOM ((((js_getX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-x GPUOrigin3DDict.x specification>
+getXUnchecked :: (MonadDOM m) => GPUOrigin3DDict -> m Word
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: GPUOrigin3DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-y GPUOrigin3DDict.y specification>
+setY :: (MonadDOM m) => GPUOrigin3DDict -> Word -> m ()
+setY self val = liftDOM (void ((js_setY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: GPUOrigin3DDict -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-y GPUOrigin3DDict.y specification>
+getY :: (MonadDOM m) => GPUOrigin3DDict -> m (Maybe Word)
+getY self = liftDOM (((js_getY (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-y GPUOrigin3DDict.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin3DDict -> m Word
+getYUnsafe self = liftDOM ((((js_getY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-y GPUOrigin3DDict.y specification>
+getYUnchecked :: (MonadDOM m) => GPUOrigin3DDict -> m Word
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"z\"] = $2; })"
+        js_setZ :: GPUOrigin3DDict -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-z GPUOrigin3DDict.z specification>
+setZ :: (MonadDOM m) => GPUOrigin3DDict -> Word -> m ()
+setZ self val = liftDOM (void ((js_setZ (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: GPUOrigin3DDict -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-z GPUOrigin3DDict.z specification>
+getZ :: (MonadDOM m) => GPUOrigin3DDict -> m (Maybe Word)
+getZ self = liftDOM (((js_getZ (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-z GPUOrigin3DDict.z specification>
+getZUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin3DDict -> m Word
+getZUnsafe self = liftDOM ((((js_getZ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-z GPUOrigin3DDict.z specification>
+getZUnchecked :: (MonadDOM m) => GPUOrigin3DDict -> m Word
+getZUnchecked self = liftDOM ((pFromJSVal <$> (js_getZ (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUOutOfMemoryError.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUOutOfMemoryError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUOutOfMemoryError.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUOutOfMemoryError
+       (js_newGPUOutOfMemoryError, newGPUOutOfMemoryError, GPUOutOfMemoryError(..), gTypeGPUOutOfMemoryError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"GPUOutOfMemoryError\"]($1); })"
+        js_newGPUOutOfMemoryError :: JSString -> IO GPUOutOfMemoryError
+-- | <https://developer.mozilla.org/docs/Web/API/GPUOutOfMemoryError/GPUOutOfMemoryError MDN GPUOutOfMemoryError. documentation>
+newGPUOutOfMemoryError :: (MonadDOM m, ToJSString message) => message -> m GPUOutOfMemoryError
+newGPUOutOfMemoryError message = liftDOM ((js_newGPUOutOfMemoryError (toJSString message)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineBase.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineBase.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUPipelineBase
+       (js_getBindGroupLayout, getBindGroupLayout, getBindGroupLayout_, GPUPipelineBase(..), gTypeGPUPipelineBase, IsGPUPipelineBase, toGPUPipelineBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getBindGroupLayout\"]($2); })"
+        js_getBindGroupLayout :: GPUPipelineBase -> Word -> IO GPUBindGroupLayout
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePipeline/getBindGroupLayout MDN GPUPipelineBase.getBindGroupLayout documentation>
+getBindGroupLayout :: (MonadDOM m, IsGPUPipelineBase self) => self -> Word -> m GPUBindGroupLayout
+getBindGroupLayout self index = liftDOM ((js_getBindGroupLayout ((Types.toGPUPipelineBase self)) (index)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePipeline/getBindGroupLayout MDN GPUPipelineBase.getBindGroupLayout documentation>
+getBindGroupLayout_ :: (MonadDOM m, IsGPUPipelineBase self) => self -> Word -> m ()
+getBindGroupLayout_ self index = liftDOM (void ((js_getBindGroupLayout ((Types.toGPUPipelineBase self)) (index))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineDescriptorBase.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineDescriptorBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineDescriptorBase.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUPipelineDescriptorBase
+       (js_newGPUPipelineDescriptorBase, js_setLayout, js_getLayout, newGPUPipelineDescriptorBase, setLayout, getLayout, GPUPipelineDescriptorBase(..), gTypeGPUPipelineDescriptorBase, IsGPUPipelineDescriptorBase, toGPUPipelineDescriptorBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"layout\": $1}); })"
+        js_newGPUPipelineDescriptorBase :: GPUPipelineLayoutOrGPUAutoLayoutMode -> IO GPUPipelineDescriptorBase
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpupipelinedescriptorbase GPUPipelineDescriptorBase specification>
+newGPUPipelineDescriptorBase :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode layout) => layout -> m GPUPipelineDescriptorBase
+newGPUPipelineDescriptorBase layout = liftDOM ((js_newGPUPipelineDescriptorBase (Types.toGPUPipelineLayoutOrGPUAutoLayoutMode layout)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"layout\"] = $2; })"
+        js_setLayout :: GPUPipelineDescriptorBase -> GPUPipelineLayoutOrGPUAutoLayoutMode -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinedescriptorbase-layout GPUPipelineDescriptorBase.layout specification>
+setLayout :: (MonadDOM m, IsGPUPipelineDescriptorBase self, IsGPUPipelineLayoutOrGPUAutoLayoutMode val) => self -> val -> m ()
+setLayout self val = liftDOM (void ((js_setLayout ((Types.toGPUPipelineDescriptorBase self)) (Types.toGPUPipelineLayoutOrGPUAutoLayoutMode val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"layout\"]; })"
+        js_getLayout :: GPUPipelineDescriptorBase -> IO GPUPipelineLayoutOrGPUAutoLayoutMode
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinedescriptorbase-layout GPUPipelineDescriptorBase.layout specification>
+getLayout :: (MonadDOM m, IsGPUPipelineDescriptorBase self) => self -> m GPUPipelineLayoutOrGPUAutoLayoutMode
+getLayout self = liftDOM ((js_getLayout ((Types.toGPUPipelineDescriptorBase self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineError.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineError.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUPipelineError
+       (js_newGPUPipelineError, js_getReason, newGPUPipelineError, getReason, GPUPipelineError(..), gTypeGPUPipelineError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"GPUPipelineError\"]($1, $2); })"
+        js_newGPUPipelineError :: (Optional JSString) -> GPUPipelineErrorInit -> IO GPUPipelineError
+-- | <https://developer.mozilla.org/docs/Web/API/GPUPipelineError/GPUPipelineError MDN GPUPipelineError. documentation>
+newGPUPipelineError :: (MonadDOM m, ToJSString message) => Maybe message -> GPUPipelineErrorInit -> m GPUPipelineError
+newGPUPipelineError message options = liftDOM ((js_newGPUPipelineError (toOptionalJSString message) (options)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: GPUPipelineError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUPipelineError/reason MDN GPUPipelineError.reason documentation>
+getReason :: (MonadDOM m) => GPUPipelineError -> m GPUPipelineErrorReason
+getReason self = liftDOM (((js_getReason (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineErrorInit.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineErrorInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineErrorInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUPipelineErrorInit
+       (js_newGPUPipelineErrorInit, js_setReason, js_getReason, newGPUPipelineErrorInit, setReason, getReason, GPUPipelineErrorInit(..), gTypeGPUPipelineErrorInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"reason\": $1}); })"
+        js_newGPUPipelineErrorInit :: JSVal -> IO GPUPipelineErrorInit
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpupipelineerrorinit GPUPipelineErrorInit specification>
+newGPUPipelineErrorInit :: (MonadDOM m) => GPUPipelineErrorReason -> m GPUPipelineErrorInit
+newGPUPipelineErrorInit reason = liftDOM (((toJSVal reason) >>= \a1' -> js_newGPUPipelineErrorInit a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"reason\"] = $2; })"
+        js_setReason :: GPUPipelineErrorInit -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelineerrorinit-reason GPUPipelineErrorInit.reason specification>
+setReason :: (MonadDOM m) => GPUPipelineErrorInit -> GPUPipelineErrorReason -> m ()
+setReason self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setReason (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: GPUPipelineErrorInit -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelineerrorinit-reason GPUPipelineErrorInit.reason specification>
+getReason :: (MonadDOM m) => GPUPipelineErrorInit -> m GPUPipelineErrorReason
+getReason self = liftDOM (((js_getReason (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineLayout.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUPipelineLayout
+       (GPUPipelineLayout(..), gTypeGPUPipelineLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineLayoutDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineLayoutDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUPipelineLayoutDescriptor.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUPipelineLayoutDescriptor
+       (js_newGPUPipelineLayoutDescriptor, js_setBindGroupLayouts, js_getBindGroupLayouts, js_setImmediateSize, js_getImmediateSize, newGPUPipelineLayoutDescriptor, setBindGroupLayouts, getBindGroupLayouts, setImmediateSize, getImmediateSize, getImmediateSizeUnsafe, getImmediateSizeUnchecked, GPUPipelineLayoutDescriptor(..), gTypeGPUPipelineLayoutDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"bindGroupLayouts\": $1}); })"
+        js_newGPUPipelineLayoutDescriptor :: JSVal -> IO GPUPipelineLayoutDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpupipelinelayoutdescriptor GPUPipelineLayoutDescriptor specification>
+newGPUPipelineLayoutDescriptor :: (MonadDOM m) => [Maybe GPUBindGroupLayout] -> m GPUPipelineLayoutDescriptor
+newGPUPipelineLayoutDescriptor bindGroupLayouts = liftDOM (((toJSVal bindGroupLayouts) >>= \a1' -> js_newGPUPipelineLayoutDescriptor a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bindGroupLayouts\"] = $2; })"
+        js_setBindGroupLayouts :: GPUPipelineLayoutDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-bindgrouplayouts GPUPipelineLayoutDescriptor.bindGroupLayouts specification>
+setBindGroupLayouts :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> [Maybe GPUBindGroupLayout] -> m ()
+setBindGroupLayouts self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBindGroupLayouts (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bindGroupLayouts\"]; })"
+        js_getBindGroupLayouts :: GPUPipelineLayoutDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-bindgrouplayouts GPUPipelineLayoutDescriptor.bindGroupLayouts specification>
+getBindGroupLayouts :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> m [Maybe GPUBindGroupLayout]
+getBindGroupLayouts self = liftDOM (((js_getBindGroupLayouts (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"immediateSize\"] = $2; })"
+        js_setImmediateSize :: GPUPipelineLayoutDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-immediatesize GPUPipelineLayoutDescriptor.immediateSize specification>
+setImmediateSize :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> Word -> m ()
+setImmediateSize self val = liftDOM (void ((js_setImmediateSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"immediateSize\"]; })"
+        js_getImmediateSize :: GPUPipelineLayoutDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-immediatesize GPUPipelineLayoutDescriptor.immediateSize specification>
+getImmediateSize :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> m (Maybe Word)
+getImmediateSize self = liftDOM (((js_getImmediateSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-immediatesize GPUPipelineLayoutDescriptor.immediateSize specification>
+getImmediateSizeUnsafe :: (MonadDOM m, HasCallStack) => GPUPipelineLayoutDescriptor -> m Word
+getImmediateSizeUnsafe self = liftDOM ((((js_getImmediateSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-immediatesize GPUPipelineLayoutDescriptor.immediateSize specification>
+getImmediateSizeUnchecked :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> m Word
+getImmediateSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getImmediateSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUPrimitiveState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUPrimitiveState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUPrimitiveState.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUPrimitiveState
+       (js_newGPUPrimitiveState, js_setTopology, js_getTopology, js_setStripIndexFormat, js_getStripIndexFormat, js_setFrontFace, js_getFrontFace, js_setCullMode, js_getCullMode, js_setUnclippedDepth, js_getUnclippedDepth, newGPUPrimitiveState, setTopology, getTopology, getTopologyUnsafe, getTopologyUnchecked, setStripIndexFormat, getStripIndexFormat, getStripIndexFormatUnsafe, getStripIndexFormatUnchecked, setFrontFace, getFrontFace, getFrontFaceUnsafe, getFrontFaceUnchecked, setCullMode, getCullMode, getCullModeUnsafe, getCullModeUnchecked, setUnclippedDepth, getUnclippedDepth, getUnclippedDepthUnsafe, getUnclippedDepthUnchecked, GPUPrimitiveState(..), gTypeGPUPrimitiveState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUPrimitiveState :: IO GPUPrimitiveState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuprimitivestate GPUPrimitiveState specification>
+newGPUPrimitiveState :: (MonadDOM m) => m GPUPrimitiveState
+newGPUPrimitiveState = liftDOM ((js_newGPUPrimitiveState))
+
+foreign import javascript safe "(($1, $2) => { $1[\"topology\"] = $2; })"
+        js_setTopology :: GPUPrimitiveState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-topology GPUPrimitiveState.topology specification>
+setTopology :: (MonadDOM m) => GPUPrimitiveState -> GPUPrimitiveTopology -> m ()
+setTopology self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTopology (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"topology\"]; })"
+        js_getTopology :: GPUPrimitiveState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-topology GPUPrimitiveState.topology specification>
+getTopology :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUPrimitiveTopology)
+getTopology self = liftDOM (((js_getTopology (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-topology GPUPrimitiveState.topology specification>
+getTopologyUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUPrimitiveTopology
+getTopologyUnsafe self = liftDOM ((((js_getTopology (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-topology GPUPrimitiveState.topology specification>
+getTopologyUnchecked :: (MonadDOM m) => GPUPrimitiveState -> m GPUPrimitiveTopology
+getTopologyUnchecked self = liftDOM ((pFromJSVal <$> (js_getTopology (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stripIndexFormat\"] = $2; })"
+        js_setStripIndexFormat :: GPUPrimitiveState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-stripindexformat GPUPrimitiveState.stripIndexFormat specification>
+setStripIndexFormat :: (MonadDOM m) => GPUPrimitiveState -> GPUIndexFormat -> m ()
+setStripIndexFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStripIndexFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stripIndexFormat\"]; })"
+        js_getStripIndexFormat :: GPUPrimitiveState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-stripindexformat GPUPrimitiveState.stripIndexFormat specification>
+getStripIndexFormat :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUIndexFormat)
+getStripIndexFormat self = liftDOM (((js_getStripIndexFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-stripindexformat GPUPrimitiveState.stripIndexFormat specification>
+getStripIndexFormatUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUIndexFormat
+getStripIndexFormatUnsafe self = liftDOM ((((js_getStripIndexFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-stripindexformat GPUPrimitiveState.stripIndexFormat specification>
+getStripIndexFormatUnchecked :: (MonadDOM m) => GPUPrimitiveState -> m GPUIndexFormat
+getStripIndexFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getStripIndexFormat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frontFace\"] = $2; })"
+        js_setFrontFace :: GPUPrimitiveState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-frontface GPUPrimitiveState.frontFace specification>
+setFrontFace :: (MonadDOM m) => GPUPrimitiveState -> GPUFrontFace -> m ()
+setFrontFace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFrontFace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frontFace\"]; })"
+        js_getFrontFace :: GPUPrimitiveState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-frontface GPUPrimitiveState.frontFace specification>
+getFrontFace :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUFrontFace)
+getFrontFace self = liftDOM (((js_getFrontFace (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-frontface GPUPrimitiveState.frontFace specification>
+getFrontFaceUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUFrontFace
+getFrontFaceUnsafe self = liftDOM ((((js_getFrontFace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-frontface GPUPrimitiveState.frontFace specification>
+getFrontFaceUnchecked :: (MonadDOM m) => GPUPrimitiveState -> m GPUFrontFace
+getFrontFaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrontFace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cullMode\"] = $2; })"
+        js_setCullMode :: GPUPrimitiveState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-cullmode GPUPrimitiveState.cullMode specification>
+setCullMode :: (MonadDOM m) => GPUPrimitiveState -> GPUCullMode -> m ()
+setCullMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCullMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cullMode\"]; })"
+        js_getCullMode :: GPUPrimitiveState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-cullmode GPUPrimitiveState.cullMode specification>
+getCullMode :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUCullMode)
+getCullMode self = liftDOM (((js_getCullMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-cullmode GPUPrimitiveState.cullMode specification>
+getCullModeUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUCullMode
+getCullModeUnsafe self = liftDOM ((((js_getCullMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-cullmode GPUPrimitiveState.cullMode specification>
+getCullModeUnchecked :: (MonadDOM m) => GPUPrimitiveState -> m GPUCullMode
+getCullModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCullMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unclippedDepth\"] = $2; })"
+        js_setUnclippedDepth :: GPUPrimitiveState -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-unclippeddepth GPUPrimitiveState.unclippedDepth specification>
+setUnclippedDepth :: (MonadDOM m) => GPUPrimitiveState -> Bool -> m ()
+setUnclippedDepth self val = liftDOM (void ((js_setUnclippedDepth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unclippedDepth\"]; })"
+        js_getUnclippedDepth :: GPUPrimitiveState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-unclippeddepth GPUPrimitiveState.unclippedDepth specification>
+getUnclippedDepth :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe Bool)
+getUnclippedDepth self = liftDOM (((js_getUnclippedDepth (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-unclippeddepth GPUPrimitiveState.unclippedDepth specification>
+getUnclippedDepthUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m Bool
+getUnclippedDepthUnsafe self = liftDOM ((((js_getUnclippedDepth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-unclippeddepth GPUPrimitiveState.unclippedDepth specification>
+getUnclippedDepthUnchecked :: (MonadDOM m) => GPUPrimitiveState -> m Bool
+getUnclippedDepthUnchecked self = liftDOM ((pFromJSVal <$> (js_getUnclippedDepth (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUProgrammableStage.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUProgrammableStage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUProgrammableStage.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUProgrammableStage
+       (js_newGPUProgrammableStage, js_setModule, js_getModule, js_setEntryPoint, js_getEntryPoint, js_setConstants, js_getConstants, newGPUProgrammableStage, setModule, getModule, setEntryPoint, getEntryPoint, getEntryPointUnsafe, getEntryPointUnchecked, setConstants, getConstants, getConstantsUnsafe, getConstantsUnchecked, GPUProgrammableStage(..), gTypeGPUProgrammableStage, IsGPUProgrammableStage, toGPUProgrammableStage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"module\": $1}); })"
+        js_newGPUProgrammableStage :: GPUShaderModule -> IO GPUProgrammableStage
+-- | <https://gpuweb.github.io/gpuweb/#gpuprogrammablestage GPUProgrammableStage specification>
+newGPUProgrammableStage :: (MonadDOM m) => GPUShaderModule -> m GPUProgrammableStage
+newGPUProgrammableStage module' = liftDOM ((js_newGPUProgrammableStage (module')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"module\"] = $2; })"
+        js_setModule :: GPUProgrammableStage -> GPUShaderModule -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-module GPUProgrammableStage.module specification>
+setModule :: (MonadDOM m, IsGPUProgrammableStage self) => self -> GPUShaderModule -> m ()
+setModule self val = liftDOM (void ((js_setModule ((Types.toGPUProgrammableStage self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"module\"]; })"
+        js_getModule :: GPUProgrammableStage -> IO GPUShaderModule
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-module GPUProgrammableStage.module specification>
+getModule :: (MonadDOM m, IsGPUProgrammableStage self) => self -> m GPUShaderModule
+getModule self = liftDOM ((js_getModule ((Types.toGPUProgrammableStage self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"entryPoint\"] = $2; })"
+        js_setEntryPoint :: GPUProgrammableStage -> JSString -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-entrypoint GPUProgrammableStage.entryPoint specification>
+setEntryPoint :: (MonadDOM m, IsGPUProgrammableStage self, ToJSString val) => self -> val -> m ()
+setEntryPoint self val = liftDOM (void ((js_setEntryPoint ((Types.toGPUProgrammableStage self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"entryPoint\"]; })"
+        js_getEntryPoint :: GPUProgrammableStage -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-entrypoint GPUProgrammableStage.entryPoint specification>
+getEntryPoint :: (MonadDOM m, IsGPUProgrammableStage self, FromJSString result) => self -> m (Maybe result)
+getEntryPoint self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEntryPoint ((Types.toGPUProgrammableStage self)))))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-entrypoint GPUProgrammableStage.entryPoint specification>
+getEntryPointUnsafe :: (MonadDOM m, IsGPUProgrammableStage self, HasCallStack, FromJSString result) => self -> m result
+getEntryPointUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEntryPoint ((Types.toGPUProgrammableStage self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-entrypoint GPUProgrammableStage.entryPoint specification>
+getEntryPointUnchecked :: (MonadDOM m, IsGPUProgrammableStage self, FromJSString result) => self -> m result
+getEntryPointUnchecked self = liftDOM ((pFromJSVal <$> (js_getEntryPoint ((Types.toGPUProgrammableStage self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"constants\"] = $2; })"
+        js_setConstants :: GPUProgrammableStage -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-constants GPUProgrammableStage.constants specification>
+setConstants :: (MonadDOM m, IsGPUProgrammableStage self) => self -> (Record JSString JSVal) -> m ()
+setConstants self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setConstants ((Types.toGPUProgrammableStage self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"constants\"]; })"
+        js_getConstants :: GPUProgrammableStage -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-constants GPUProgrammableStage.constants specification>
+getConstants :: (MonadDOM m, IsGPUProgrammableStage self) => self -> m (Maybe (Record JSString JSVal))
+getConstants self = liftDOM (((js_getConstants ((Types.toGPUProgrammableStage self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-constants GPUProgrammableStage.constants specification>
+getConstantsUnsafe :: (MonadDOM m, IsGPUProgrammableStage self, HasCallStack) => self -> m (Record JSString JSVal)
+getConstantsUnsafe self = liftDOM ((((js_getConstants ((Types.toGPUProgrammableStage self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-constants GPUProgrammableStage.constants specification>
+getConstantsUnchecked :: (MonadDOM m, IsGPUProgrammableStage self) => self -> m (Record JSString JSVal)
+getConstantsUnchecked self = liftDOM ((pFromJSVal <$> (js_getConstants ((Types.toGPUProgrammableStage self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUQuerySet.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUQuerySet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUQuerySet.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUQuerySet
+       (js_destroy, js_getType, js_getCount, destroy, getType, getCount, GPUQuerySet(..), gTypeGPUQuerySet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"destroy\"](); })"
+        js_destroy :: GPUQuerySet -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQuerySet/destroy MDN GPUQuerySet.destroy documentation>
+destroy :: (MonadDOM m) => GPUQuerySet -> m ()
+destroy self = liftDOM (void ((js_destroy (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: GPUQuerySet -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQuerySet/type MDN GPUQuerySet.type documentation>
+getType :: (MonadDOM m) => GPUQuerySet -> m GPUQueryType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"count\"]; })"
+        js_getCount :: GPUQuerySet -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQuerySet/count MDN GPUQuerySet.count documentation>
+getCount :: (MonadDOM m) => GPUQuerySet -> m Word
+getCount self = liftDOM ((js_getCount (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUQuerySetDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUQuerySetDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUQuerySetDescriptor.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUQuerySetDescriptor
+       (js_newGPUQuerySetDescriptor, js_setType, js_getType, js_setCount, js_getCount, newGPUQuerySetDescriptor, setType, getType, setCount, getCount, GPUQuerySetDescriptor(..), gTypeGPUQuerySetDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"type\": $1, \"count\": $2}); })"
+        js_newGPUQuerySetDescriptor :: JSVal -> Word -> IO GPUQuerySetDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuquerysetdescriptor GPUQuerySetDescriptor specification>
+newGPUQuerySetDescriptor :: (MonadDOM m) => GPUQueryType -> Word -> m GPUQuerySetDescriptor
+newGPUQuerySetDescriptor type' count = liftDOM (((toJSVal type') >>= \a1' -> js_newGPUQuerySetDescriptor a1' (count)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: GPUQuerySetDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-type GPUQuerySetDescriptor.type specification>
+setType :: (MonadDOM m) => GPUQuerySetDescriptor -> GPUQueryType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: GPUQuerySetDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-type GPUQuerySetDescriptor.type specification>
+getType :: (MonadDOM m) => GPUQuerySetDescriptor -> m GPUQueryType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"count\"] = $2; })"
+        js_setCount :: GPUQuerySetDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-count GPUQuerySetDescriptor.count specification>
+setCount :: (MonadDOM m) => GPUQuerySetDescriptor -> Word -> m ()
+setCount self val = liftDOM (void ((js_setCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"count\"]; })"
+        js_getCount :: GPUQuerySetDescriptor -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-count GPUQuerySetDescriptor.count specification>
+getCount :: (MonadDOM m) => GPUQuerySetDescriptor -> m Word
+getCount self = liftDOM ((js_getCount (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUQueue.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUQueue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUQueue.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUQueue
+       (js_copyExternalImageToTexture, js_onSubmittedWorkDone, js_submit, js_writeBuffer, js_writeTexture, copyExternalImageToTexture, onSubmittedWorkDone, submit, writeBuffer, writeTexture, GPUQueue(..), gTypeGPUQueue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"copyExternalImageToTexture\"]($2, $3, $4); })"
+        js_copyExternalImageToTexture :: GPUQueue -> GPUCopyExternalImageSourceInfo -> GPUCopyExternalImageDestInfo -> GPUExtent3D -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQueue/copyExternalImageToTexture MDN GPUQueue.copyExternalImageToTexture documentation>
+copyExternalImageToTexture :: (MonadDOM m, IsGPUExtent3D copySize) => GPUQueue -> GPUCopyExternalImageSourceInfo -> GPUCopyExternalImageDestInfo -> copySize -> m ()
+copyExternalImageToTexture self source destination copySize = liftDOM (void ((js_copyExternalImageToTexture (self) (source) (destination) (Types.toGPUExtent3D copySize))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"onSubmittedWorkDone\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_onSubmittedWorkDone :: GPUQueue -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQueue/onSubmittedWorkDone MDN GPUQueue.onSubmittedWorkDone documentation>
+onSubmittedWorkDone :: (MonadDOM m) => GPUQueue -> m ()
+onSubmittedWorkDone self = liftDOM (void (((js_onSubmittedWorkDone (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"submit\"]($2); })"
+        js_submit :: GPUQueue -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQueue/submit MDN GPUQueue.submit documentation>
+submit :: (MonadDOM m) => GPUQueue -> [GPUCommandBuffer] -> m ()
+submit self commandBuffers = liftDOM (void (((toJSVal commandBuffers) >>= \a2' -> js_submit (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"writeBuffer\"]($2, $3, $4, $5, $6); })"
+        js_writeBuffer :: GPUQueue -> GPUBuffer -> JSVal -> AllowSharedBufferSource -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQueue/writeBuffer MDN GPUQueue.writeBuffer documentation>
+writeBuffer :: (MonadDOM m, IsAllowSharedBufferSource data') => GPUQueue -> GPUBuffer -> Word53 -> data' -> Maybe Word53 -> Maybe Word53 -> m ()
+writeBuffer self buffer bufferOffset data' dataOffset size = liftDOM (void (((toJSVal bufferOffset) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal dataOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a6' -> js_writeBuffer (self) (buffer) a3' (Types.toAllowSharedBufferSource data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"writeTexture\"]($2, $3, $4, $5); })"
+        js_writeTexture :: GPUQueue -> GPUTexelCopyTextureInfo -> AllowSharedBufferSource -> GPUTexelCopyBufferLayout -> GPUExtent3D -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQueue/writeTexture MDN GPUQueue.writeTexture documentation>
+writeTexture :: (MonadDOM m, IsGPUTexelCopyTextureInfo destination, IsAllowSharedBufferSource data', IsGPUTexelCopyBufferLayout dataLayout, IsGPUExtent3D size) => GPUQueue -> destination -> data' -> dataLayout -> size -> m ()
+writeTexture self destination data' dataLayout size = liftDOM (void ((js_writeTexture (self) (Types.toGPUTexelCopyTextureInfo destination) (Types.toAllowSharedBufferSource data') (Types.toGPUTexelCopyBufferLayout dataLayout) (Types.toGPUExtent3D size))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUQueueDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUQueueDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUQueueDescriptor.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUQueueDescriptor
+       (js_newGPUQueueDescriptor, newGPUQueueDescriptor, GPUQueueDescriptor(..), gTypeGPUQueueDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUQueueDescriptor :: IO GPUQueueDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#gpuqueuedescriptor GPUQueueDescriptor specification>
+newGPUQueueDescriptor :: (MonadDOM m) => m GPUQueueDescriptor
+newGPUQueueDescriptor = liftDOM ((js_newGPUQueueDescriptor))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundle.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundle.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderBundle
+       (GPURenderBundle(..), gTypeGPURenderBundle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleDescriptor.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderBundleDescriptor
+       (js_newGPURenderBundleDescriptor, newGPURenderBundleDescriptor, GPURenderBundleDescriptor(..), gTypeGPURenderBundleDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPURenderBundleDescriptor :: IO GPURenderBundleDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderbundledescriptor GPURenderBundleDescriptor specification>
+newGPURenderBundleDescriptor :: (MonadDOM m) => m GPURenderBundleDescriptor
+newGPURenderBundleDescriptor = liftDOM ((js_newGPURenderBundleDescriptor))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleEncoder.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderBundleEncoder
+       (js_finish, finish, finish_, GPURenderBundleEncoder(..), gTypeGPURenderBundleEncoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"finish\"]($2); })"
+        js_finish :: GPURenderBundleEncoder -> JSVal -> IO GPURenderBundle
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/finish MDN GPURenderBundleEncoder.finish documentation>
+finish :: (MonadDOM m) => GPURenderBundleEncoder -> Maybe GPURenderBundleDescriptor -> m GPURenderBundle
+finish self descriptor = liftDOM (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_finish (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/finish MDN GPURenderBundleEncoder.finish documentation>
+finish_ :: (MonadDOM m) => GPURenderBundleEncoder -> Maybe GPURenderBundleDescriptor -> m ()
+finish_ self descriptor = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_finish (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleEncoderDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleEncoderDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderBundleEncoderDescriptor.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderBundleEncoderDescriptor
+       (js_newGPURenderBundleEncoderDescriptor, js_setDepthReadOnly, js_getDepthReadOnly, js_setStencilReadOnly, js_getStencilReadOnly, newGPURenderBundleEncoderDescriptor, setDepthReadOnly, getDepthReadOnly, getDepthReadOnlyUnsafe, getDepthReadOnlyUnchecked, setStencilReadOnly, getStencilReadOnly, getStencilReadOnlyUnsafe, getStencilReadOnlyUnchecked, GPURenderBundleEncoderDescriptor(..), gTypeGPURenderBundleEncoderDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"colorFormats\": $1}); })"
+        js_newGPURenderBundleEncoderDescriptor :: JSVal -> IO GPURenderBundleEncoderDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderbundleencoderdescriptor GPURenderBundleEncoderDescriptor specification>
+newGPURenderBundleEncoderDescriptor :: (MonadDOM m) => [Maybe GPUTextureFormat] -> m GPURenderBundleEncoderDescriptor
+newGPURenderBundleEncoderDescriptor colorFormats = liftDOM (((toJSVal colorFormats) >>= \a1' -> js_newGPURenderBundleEncoderDescriptor a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthReadOnly\"] = $2; })"
+        js_setDepthReadOnly :: GPURenderBundleEncoderDescriptor -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-depthreadonly GPURenderBundleEncoderDescriptor.depthReadOnly specification>
+setDepthReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> Bool -> m ()
+setDepthReadOnly self val = liftDOM (void ((js_setDepthReadOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthReadOnly\"]; })"
+        js_getDepthReadOnly :: GPURenderBundleEncoderDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-depthreadonly GPURenderBundleEncoderDescriptor.depthReadOnly specification>
+getDepthReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> m (Maybe Bool)
+getDepthReadOnly self = liftDOM (((js_getDepthReadOnly (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-depthreadonly GPURenderBundleEncoderDescriptor.depthReadOnly specification>
+getDepthReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderBundleEncoderDescriptor -> m Bool
+getDepthReadOnlyUnsafe self = liftDOM ((((js_getDepthReadOnly (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-depthreadonly GPURenderBundleEncoderDescriptor.depthReadOnly specification>
+getDepthReadOnlyUnchecked :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> m Bool
+getDepthReadOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthReadOnly (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilReadOnly\"] = $2; })"
+        js_setStencilReadOnly :: GPURenderBundleEncoderDescriptor -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-stencilreadonly GPURenderBundleEncoderDescriptor.stencilReadOnly specification>
+setStencilReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> Bool -> m ()
+setStencilReadOnly self val = liftDOM (void ((js_setStencilReadOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilReadOnly\"]; })"
+        js_getStencilReadOnly :: GPURenderBundleEncoderDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-stencilreadonly GPURenderBundleEncoderDescriptor.stencilReadOnly specification>
+getStencilReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> m (Maybe Bool)
+getStencilReadOnly self = liftDOM (((js_getStencilReadOnly (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-stencilreadonly GPURenderBundleEncoderDescriptor.stencilReadOnly specification>
+getStencilReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderBundleEncoderDescriptor -> m Bool
+getStencilReadOnlyUnsafe self = liftDOM ((((js_getStencilReadOnly (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-stencilreadonly GPURenderBundleEncoderDescriptor.stencilReadOnly specification>
+getStencilReadOnlyUnchecked :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> m Bool
+getStencilReadOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilReadOnly (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderCommandsMixin.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderCommandsMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderCommandsMixin.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderCommandsMixin
+       (js_draw, js_drawIndexed, js_drawIndexedIndirect, js_drawIndirect, js_setIndexBuffer, js_setPipeline, js_setVertexBuffer, draw, drawIndexed, drawIndexedIndirect, drawIndirect, setIndexBuffer, setPipeline, setVertexBuffer, GPURenderCommandsMixin(..), gTypeGPURenderCommandsMixin, IsGPURenderCommandsMixin, toGPURenderCommandsMixin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"draw\"]($2, $3, $4, $5); })"
+        js_draw :: GPURenderCommandsMixin -> Word -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/draw MDN GPURenderCommandsMixin.draw documentation>
+draw :: (MonadDOM m, IsGPURenderCommandsMixin self) => self -> Word -> Maybe Word -> Maybe Word -> Maybe Word -> m ()
+draw self vertexCount instanceCount firstVertex firstInstance = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal instanceCount) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal firstVertex) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal firstInstance) >>= \a5' -> js_draw ((Types.toGPURenderCommandsMixin self)) (vertexCount) a3' a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawIndexed\"]($2, $3, $4, $5, $6); })"
+        js_drawIndexed :: GPURenderCommandsMixin -> Word -> JSVal -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/drawIndexed MDN GPURenderCommandsMixin.drawIndexed documentation>
+drawIndexed :: (MonadDOM m, IsGPURenderCommandsMixin self) => self -> Word -> Maybe Word -> Maybe Word -> Maybe Int -> Maybe Word -> m ()
+drawIndexed self indexCount instanceCount firstIndex baseVertex firstInstance = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal instanceCount) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal firstIndex) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal baseVertex) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal firstInstance) >>= \a6' -> js_drawIndexed ((Types.toGPURenderCommandsMixin self)) (indexCount) a3' a4' a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"drawIndexedIndirect\"]($2, $3); })"
+        js_drawIndexedIndirect :: GPURenderCommandsMixin -> GPUBuffer -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/drawIndexedIndirect MDN GPURenderCommandsMixin.drawIndexedIndirect documentation>
+drawIndexedIndirect :: (MonadDOM m, IsGPURenderCommandsMixin self) => self -> GPUBuffer -> Word53 -> m ()
+drawIndexedIndirect self indirectBuffer indirectOffset = liftDOM (void (((toJSVal indirectOffset) >>= \a3' -> js_drawIndexedIndirect ((Types.toGPURenderCommandsMixin self)) (indirectBuffer) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"drawIndirect\"]($2, $3); })"
+        js_drawIndirect :: GPURenderCommandsMixin -> GPUBuffer -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/drawIndirect MDN GPURenderCommandsMixin.drawIndirect documentation>
+drawIndirect :: (MonadDOM m, IsGPURenderCommandsMixin self) => self -> GPUBuffer -> Word53 -> m ()
+drawIndirect self indirectBuffer indirectOffset = liftDOM (void (((toJSVal indirectOffset) >>= \a3' -> js_drawIndirect ((Types.toGPURenderCommandsMixin self)) (indirectBuffer) a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"setIndexBuffer\"]($2, $3, $4, $5); })"
+        js_setIndexBuffer :: GPURenderCommandsMixin -> GPUBuffer -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/setIndexBuffer MDN GPURenderCommandsMixin.setIndexBuffer documentation>
+setIndexBuffer :: (MonadDOM m, IsGPURenderCommandsMixin self) => self -> GPUBuffer -> GPUIndexFormat -> Maybe Word53 -> Maybe Word53 -> m ()
+setIndexBuffer self buffer indexFormat offset size = liftDOM (void (((toJSVal indexFormat) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal offset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a5' -> js_setIndexBuffer ((Types.toGPURenderCommandsMixin self)) (buffer) a3' a4' a5')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setPipeline\"]($2); })"
+        js_setPipeline :: GPURenderCommandsMixin -> GPURenderPipeline -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/setPipeline MDN GPURenderCommandsMixin.setPipeline documentation>
+setPipeline :: (MonadDOM m, IsGPURenderCommandsMixin self) => self -> GPURenderPipeline -> m ()
+setPipeline self pipeline = liftDOM (void ((js_setPipeline ((Types.toGPURenderCommandsMixin self)) (pipeline))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"setVertexBuffer\"]($2, $3, $4, $5); })"
+        js_setVertexBuffer :: GPURenderCommandsMixin -> Word -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/setVertexBuffer MDN GPURenderCommandsMixin.setVertexBuffer documentation>
+setVertexBuffer :: (MonadDOM m, IsGPURenderCommandsMixin self) => self -> Word -> Maybe GPUBuffer -> Maybe Word53 -> Maybe Word53 -> m ()
+setVertexBuffer self slot buffer offset size = liftDOM (void (((toJSVal buffer) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal offset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal size) >>= \a5' -> js_setVertexBuffer ((Types.toGPURenderCommandsMixin self)) (slot) a3' a4' a5')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassColorAttachment.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassColorAttachment.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassColorAttachment.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPassColorAttachment
+       (js_newGPURenderPassColorAttachment, js_setView, js_getView, js_setDepthSlice, js_getDepthSlice, js_setResolveTarget, js_getResolveTarget, js_setClearValue, js_getClearValue, js_setLoadOp, js_getLoadOp, js_setStoreOp, js_getStoreOp, newGPURenderPassColorAttachment, setView, getView, setDepthSlice, getDepthSlice, getDepthSliceUnsafe, getDepthSliceUnchecked, setResolveTarget, getResolveTarget, getResolveTargetUnsafe, getResolveTargetUnchecked, setClearValue, getClearValue, getClearValueUnsafe, getClearValueUnchecked, setLoadOp, getLoadOp, setStoreOp, getStoreOp, GPURenderPassColorAttachment(..), gTypeGPURenderPassColorAttachment)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"view\": $1, \"loadOp\": $2, \"storeOp\": $3}); })"
+        js_newGPURenderPassColorAttachment :: GPUTextureOrGPUTextureView -> JSVal -> JSVal -> IO GPURenderPassColorAttachment
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpasscolorattachment GPURenderPassColorAttachment specification>
+newGPURenderPassColorAttachment :: (MonadDOM m, IsGPUTextureOrGPUTextureView view) => view -> GPULoadOp -> GPUStoreOp -> m GPURenderPassColorAttachment
+newGPURenderPassColorAttachment view loadOp storeOp = liftDOM (((toJSVal loadOp) >>= \a2' -> (toJSVal storeOp) >>= \a3' -> js_newGPURenderPassColorAttachment (Types.toGPUTextureOrGPUTextureView view) a2' a3'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"view\"] = $2; })"
+        js_setView :: GPURenderPassColorAttachment -> GPUTextureOrGPUTextureView -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-view GPURenderPassColorAttachment.view specification>
+setView :: (MonadDOM m, IsGPUTextureOrGPUTextureView val) => GPURenderPassColorAttachment -> val -> m ()
+setView self val = liftDOM (void ((js_setView (self) (Types.toGPUTextureOrGPUTextureView val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })"
+        js_getView :: GPURenderPassColorAttachment -> IO GPUTextureOrGPUTextureView
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-view GPURenderPassColorAttachment.view specification>
+getView :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPUTextureOrGPUTextureView
+getView self = liftDOM ((js_getView (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthSlice\"] = $2; })"
+        js_setDepthSlice :: GPURenderPassColorAttachment -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-depthslice GPURenderPassColorAttachment.depthSlice specification>
+setDepthSlice :: (MonadDOM m) => GPURenderPassColorAttachment -> Word -> m ()
+setDepthSlice self val = liftDOM (void ((js_setDepthSlice (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthSlice\"]; })"
+        js_getDepthSlice :: GPURenderPassColorAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-depthslice GPURenderPassColorAttachment.depthSlice specification>
+getDepthSlice :: (MonadDOM m) => GPURenderPassColorAttachment -> m (Maybe Word)
+getDepthSlice self = liftDOM (((js_getDepthSlice (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-depthslice GPURenderPassColorAttachment.depthSlice specification>
+getDepthSliceUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassColorAttachment -> m Word
+getDepthSliceUnsafe self = liftDOM ((((js_getDepthSlice (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-depthslice GPURenderPassColorAttachment.depthSlice specification>
+getDepthSliceUnchecked :: (MonadDOM m) => GPURenderPassColorAttachment -> m Word
+getDepthSliceUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthSlice (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resolveTarget\"] = $2; })"
+        js_setResolveTarget :: GPURenderPassColorAttachment -> GPUTextureOrGPUTextureView -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-resolvetarget GPURenderPassColorAttachment.resolveTarget specification>
+setResolveTarget :: (MonadDOM m, IsGPUTextureOrGPUTextureView val) => GPURenderPassColorAttachment -> val -> m ()
+setResolveTarget self val = liftDOM (void ((js_setResolveTarget (self) (Types.toGPUTextureOrGPUTextureView val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resolveTarget\"]; })"
+        js_getResolveTarget :: GPURenderPassColorAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-resolvetarget GPURenderPassColorAttachment.resolveTarget specification>
+getResolveTarget :: (MonadDOM m) => GPURenderPassColorAttachment -> m (Maybe GPUTextureOrGPUTextureView)
+getResolveTarget self = liftDOM (((js_getResolveTarget (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-resolvetarget GPURenderPassColorAttachment.resolveTarget specification>
+getResolveTargetUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassColorAttachment -> m GPUTextureOrGPUTextureView
+getResolveTargetUnsafe self = liftDOM ((((js_getResolveTarget (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-resolvetarget GPURenderPassColorAttachment.resolveTarget specification>
+getResolveTargetUnchecked :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPUTextureOrGPUTextureView
+getResolveTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getResolveTarget (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clearValue\"] = $2; })"
+        js_setClearValue :: GPURenderPassColorAttachment -> GPUColor -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-clearvalue GPURenderPassColorAttachment.clearValue specification>
+setClearValue :: (MonadDOM m, IsGPUColor val) => GPURenderPassColorAttachment -> val -> m ()
+setClearValue self val = liftDOM (void ((js_setClearValue (self) (Types.toGPUColor val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clearValue\"]; })"
+        js_getClearValue :: GPURenderPassColorAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-clearvalue GPURenderPassColorAttachment.clearValue specification>
+getClearValue :: (MonadDOM m) => GPURenderPassColorAttachment -> m (Maybe GPUColor)
+getClearValue self = liftDOM (((js_getClearValue (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-clearvalue GPURenderPassColorAttachment.clearValue specification>
+getClearValueUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassColorAttachment -> m GPUColor
+getClearValueUnsafe self = liftDOM ((((js_getClearValue (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-clearvalue GPURenderPassColorAttachment.clearValue specification>
+getClearValueUnchecked :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPUColor
+getClearValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getClearValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"loadOp\"] = $2; })"
+        js_setLoadOp :: GPURenderPassColorAttachment -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-loadop GPURenderPassColorAttachment.loadOp specification>
+setLoadOp :: (MonadDOM m) => GPURenderPassColorAttachment -> GPULoadOp -> m ()
+setLoadOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLoadOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loadOp\"]; })"
+        js_getLoadOp :: GPURenderPassColorAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-loadop GPURenderPassColorAttachment.loadOp specification>
+getLoadOp :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPULoadOp
+getLoadOp self = liftDOM (((js_getLoadOp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"storeOp\"] = $2; })"
+        js_setStoreOp :: GPURenderPassColorAttachment -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-storeop GPURenderPassColorAttachment.storeOp specification>
+setStoreOp :: (MonadDOM m) => GPURenderPassColorAttachment -> GPUStoreOp -> m ()
+setStoreOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStoreOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"storeOp\"]; })"
+        js_getStoreOp :: GPURenderPassColorAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-storeop GPURenderPassColorAttachment.storeOp specification>
+getStoreOp :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPUStoreOp
+getStoreOp self = liftDOM (((js_getStoreOp (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassDepthStencilAttachment.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassDepthStencilAttachment.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassDepthStencilAttachment.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPassDepthStencilAttachment
+       (js_newGPURenderPassDepthStencilAttachment, js_setView, js_getView, js_setDepthClearValue, js_getDepthClearValue, js_setDepthLoadOp, js_getDepthLoadOp, js_setDepthStoreOp, js_getDepthStoreOp, js_setDepthReadOnly, js_getDepthReadOnly, js_setStencilClearValue, js_getStencilClearValue, js_setStencilLoadOp, js_getStencilLoadOp, js_setStencilStoreOp, js_getStencilStoreOp, js_setStencilReadOnly, js_getStencilReadOnly, newGPURenderPassDepthStencilAttachment, setView, getView, setDepthClearValue, getDepthClearValue, getDepthClearValueUnsafe, getDepthClearValueUnchecked, setDepthLoadOp, getDepthLoadOp, getDepthLoadOpUnsafe, getDepthLoadOpUnchecked, setDepthStoreOp, getDepthStoreOp, getDepthStoreOpUnsafe, getDepthStoreOpUnchecked, setDepthReadOnly, getDepthReadOnly, getDepthReadOnlyUnsafe, getDepthReadOnlyUnchecked, setStencilClearValue, getStencilClearValue, getStencilClearValueUnsafe, getStencilClearValueUnchecked, setStencilLoadOp, getStencilLoadOp, getStencilLoadOpUnsafe, getStencilLoadOpUnchecked, setStencilStoreOp, getStencilStoreOp, getStencilStoreOpUnsafe, getStencilStoreOpUnchecked, setStencilReadOnly, getStencilReadOnly, getStencilReadOnlyUnsafe, getStencilReadOnlyUnchecked, GPURenderPassDepthStencilAttachment(..), gTypeGPURenderPassDepthStencilAttachment)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"view\": $1}); })"
+        js_newGPURenderPassDepthStencilAttachment :: GPUTextureOrGPUTextureView -> IO GPURenderPassDepthStencilAttachment
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpassdepthstencilattachment GPURenderPassDepthStencilAttachment specification>
+newGPURenderPassDepthStencilAttachment :: (MonadDOM m, IsGPUTextureOrGPUTextureView view) => view -> m GPURenderPassDepthStencilAttachment
+newGPURenderPassDepthStencilAttachment view = liftDOM ((js_newGPURenderPassDepthStencilAttachment (Types.toGPUTextureOrGPUTextureView view)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"view\"] = $2; })"
+        js_setView :: GPURenderPassDepthStencilAttachment -> GPUTextureOrGPUTextureView -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-view GPURenderPassDepthStencilAttachment.view specification>
+setView :: (MonadDOM m, IsGPUTextureOrGPUTextureView val) => GPURenderPassDepthStencilAttachment -> val -> m ()
+setView self val = liftDOM (void ((js_setView (self) (Types.toGPUTextureOrGPUTextureView val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })"
+        js_getView :: GPURenderPassDepthStencilAttachment -> IO GPUTextureOrGPUTextureView
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-view GPURenderPassDepthStencilAttachment.view specification>
+getView :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m GPUTextureOrGPUTextureView
+getView self = liftDOM ((js_getView (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthClearValue\"] = $2; })"
+        js_setDepthClearValue :: GPURenderPassDepthStencilAttachment -> Float -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthclearvalue GPURenderPassDepthStencilAttachment.depthClearValue specification>
+setDepthClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Float -> m ()
+setDepthClearValue self val = liftDOM (void ((js_setDepthClearValue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthClearValue\"]; })"
+        js_getDepthClearValue :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthclearvalue GPURenderPassDepthStencilAttachment.depthClearValue specification>
+getDepthClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Float)
+getDepthClearValue self = liftDOM (((js_getDepthClearValue (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthclearvalue GPURenderPassDepthStencilAttachment.depthClearValue specification>
+getDepthClearValueUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Float
+getDepthClearValueUnsafe self = liftDOM ((((js_getDepthClearValue (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthclearvalue GPURenderPassDepthStencilAttachment.depthClearValue specification>
+getDepthClearValueUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m Float
+getDepthClearValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthClearValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthLoadOp\"] = $2; })"
+        js_setDepthLoadOp :: GPURenderPassDepthStencilAttachment -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthloadop GPURenderPassDepthStencilAttachment.depthLoadOp specification>
+setDepthLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPULoadOp -> m ()
+setDepthLoadOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDepthLoadOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthLoadOp\"]; })"
+        js_getDepthLoadOp :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthloadop GPURenderPassDepthStencilAttachment.depthLoadOp specification>
+getDepthLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPULoadOp)
+getDepthLoadOp self = liftDOM (((js_getDepthLoadOp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthloadop GPURenderPassDepthStencilAttachment.depthLoadOp specification>
+getDepthLoadOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPULoadOp
+getDepthLoadOpUnsafe self = liftDOM ((((js_getDepthLoadOp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthloadop GPURenderPassDepthStencilAttachment.depthLoadOp specification>
+getDepthLoadOpUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m GPULoadOp
+getDepthLoadOpUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthLoadOp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthStoreOp\"] = $2; })"
+        js_setDepthStoreOp :: GPURenderPassDepthStencilAttachment -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthstoreop GPURenderPassDepthStencilAttachment.depthStoreOp specification>
+setDepthStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPUStoreOp -> m ()
+setDepthStoreOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDepthStoreOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthStoreOp\"]; })"
+        js_getDepthStoreOp :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthstoreop GPURenderPassDepthStencilAttachment.depthStoreOp specification>
+getDepthStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPUStoreOp)
+getDepthStoreOp self = liftDOM (((js_getDepthStoreOp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthstoreop GPURenderPassDepthStencilAttachment.depthStoreOp specification>
+getDepthStoreOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPUStoreOp
+getDepthStoreOpUnsafe self = liftDOM ((((js_getDepthStoreOp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthstoreop GPURenderPassDepthStencilAttachment.depthStoreOp specification>
+getDepthStoreOpUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m GPUStoreOp
+getDepthStoreOpUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthStoreOp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthReadOnly\"] = $2; })"
+        js_setDepthReadOnly :: GPURenderPassDepthStencilAttachment -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthreadonly GPURenderPassDepthStencilAttachment.depthReadOnly specification>
+setDepthReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Bool -> m ()
+setDepthReadOnly self val = liftDOM (void ((js_setDepthReadOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthReadOnly\"]; })"
+        js_getDepthReadOnly :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthreadonly GPURenderPassDepthStencilAttachment.depthReadOnly specification>
+getDepthReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Bool)
+getDepthReadOnly self = liftDOM (((js_getDepthReadOnly (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthreadonly GPURenderPassDepthStencilAttachment.depthReadOnly specification>
+getDepthReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Bool
+getDepthReadOnlyUnsafe self = liftDOM ((((js_getDepthReadOnly (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthreadonly GPURenderPassDepthStencilAttachment.depthReadOnly specification>
+getDepthReadOnlyUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m Bool
+getDepthReadOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthReadOnly (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilClearValue\"] = $2; })"
+        js_setStencilClearValue :: GPURenderPassDepthStencilAttachment -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilclearvalue GPURenderPassDepthStencilAttachment.stencilClearValue specification>
+setStencilClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Word -> m ()
+setStencilClearValue self val = liftDOM (void ((js_setStencilClearValue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilClearValue\"]; })"
+        js_getStencilClearValue :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilclearvalue GPURenderPassDepthStencilAttachment.stencilClearValue specification>
+getStencilClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Word)
+getStencilClearValue self = liftDOM (((js_getStencilClearValue (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilclearvalue GPURenderPassDepthStencilAttachment.stencilClearValue specification>
+getStencilClearValueUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Word
+getStencilClearValueUnsafe self = liftDOM ((((js_getStencilClearValue (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilclearvalue GPURenderPassDepthStencilAttachment.stencilClearValue specification>
+getStencilClearValueUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m Word
+getStencilClearValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilClearValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilLoadOp\"] = $2; })"
+        js_setStencilLoadOp :: GPURenderPassDepthStencilAttachment -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilloadop GPURenderPassDepthStencilAttachment.stencilLoadOp specification>
+setStencilLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPULoadOp -> m ()
+setStencilLoadOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStencilLoadOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilLoadOp\"]; })"
+        js_getStencilLoadOp :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilloadop GPURenderPassDepthStencilAttachment.stencilLoadOp specification>
+getStencilLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPULoadOp)
+getStencilLoadOp self = liftDOM (((js_getStencilLoadOp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilloadop GPURenderPassDepthStencilAttachment.stencilLoadOp specification>
+getStencilLoadOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPULoadOp
+getStencilLoadOpUnsafe self = liftDOM ((((js_getStencilLoadOp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilloadop GPURenderPassDepthStencilAttachment.stencilLoadOp specification>
+getStencilLoadOpUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m GPULoadOp
+getStencilLoadOpUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilLoadOp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilStoreOp\"] = $2; })"
+        js_setStencilStoreOp :: GPURenderPassDepthStencilAttachment -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilstoreop GPURenderPassDepthStencilAttachment.stencilStoreOp specification>
+setStencilStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPUStoreOp -> m ()
+setStencilStoreOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStencilStoreOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilStoreOp\"]; })"
+        js_getStencilStoreOp :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilstoreop GPURenderPassDepthStencilAttachment.stencilStoreOp specification>
+getStencilStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPUStoreOp)
+getStencilStoreOp self = liftDOM (((js_getStencilStoreOp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilstoreop GPURenderPassDepthStencilAttachment.stencilStoreOp specification>
+getStencilStoreOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPUStoreOp
+getStencilStoreOpUnsafe self = liftDOM ((((js_getStencilStoreOp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilstoreop GPURenderPassDepthStencilAttachment.stencilStoreOp specification>
+getStencilStoreOpUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m GPUStoreOp
+getStencilStoreOpUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilStoreOp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencilReadOnly\"] = $2; })"
+        js_setStencilReadOnly :: GPURenderPassDepthStencilAttachment -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilreadonly GPURenderPassDepthStencilAttachment.stencilReadOnly specification>
+setStencilReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Bool -> m ()
+setStencilReadOnly self val = liftDOM (void ((js_setStencilReadOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencilReadOnly\"]; })"
+        js_getStencilReadOnly :: GPURenderPassDepthStencilAttachment -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilreadonly GPURenderPassDepthStencilAttachment.stencilReadOnly specification>
+getStencilReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Bool)
+getStencilReadOnly self = liftDOM (((js_getStencilReadOnly (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilreadonly GPURenderPassDepthStencilAttachment.stencilReadOnly specification>
+getStencilReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Bool
+getStencilReadOnlyUnsafe self = liftDOM ((((js_getStencilReadOnly (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilreadonly GPURenderPassDepthStencilAttachment.stencilReadOnly specification>
+getStencilReadOnlyUnchecked :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m Bool
+getStencilReadOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencilReadOnly (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassDescriptor.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPassDescriptor
+       (js_newGPURenderPassDescriptor, js_setColorAttachments, js_getColorAttachments, js_setDepthStencilAttachment, js_getDepthStencilAttachment, js_setOcclusionQuerySet, js_getOcclusionQuerySet, js_setTimestampWrites, js_getTimestampWrites, js_setMaxDrawCount, js_getMaxDrawCount, newGPURenderPassDescriptor, setColorAttachments, getColorAttachments, setDepthStencilAttachment, getDepthStencilAttachment, getDepthStencilAttachmentUnsafe, getDepthStencilAttachmentUnchecked, setOcclusionQuerySet, getOcclusionQuerySet, getOcclusionQuerySetUnsafe, getOcclusionQuerySetUnchecked, setTimestampWrites, getTimestampWrites, getTimestampWritesUnsafe, getTimestampWritesUnchecked, setMaxDrawCount, getMaxDrawCount, getMaxDrawCountUnsafe, getMaxDrawCountUnchecked, GPURenderPassDescriptor(..), gTypeGPURenderPassDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"colorAttachments\": $1}); })"
+        js_newGPURenderPassDescriptor :: JSVal -> IO GPURenderPassDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpassdescriptor GPURenderPassDescriptor specification>
+newGPURenderPassDescriptor :: (MonadDOM m) => [Maybe GPURenderPassColorAttachment] -> m GPURenderPassDescriptor
+newGPURenderPassDescriptor colorAttachments = liftDOM (((toJSVal colorAttachments) >>= \a1' -> js_newGPURenderPassDescriptor a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorAttachments\"] = $2; })"
+        js_setColorAttachments :: GPURenderPassDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-colorattachments GPURenderPassDescriptor.colorAttachments specification>
+setColorAttachments :: (MonadDOM m) => GPURenderPassDescriptor -> [Maybe GPURenderPassColorAttachment] -> m ()
+setColorAttachments self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorAttachments (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorAttachments\"]; })"
+        js_getColorAttachments :: GPURenderPassDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-colorattachments GPURenderPassDescriptor.colorAttachments specification>
+getColorAttachments :: (MonadDOM m) => GPURenderPassDescriptor -> m [Maybe GPURenderPassColorAttachment]
+getColorAttachments self = liftDOM (((js_getColorAttachments (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthStencilAttachment\"] = $2; })"
+        js_setDepthStencilAttachment :: GPURenderPassDescriptor -> GPURenderPassDepthStencilAttachment -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-depthstencilattachment GPURenderPassDescriptor.depthStencilAttachment specification>
+setDepthStencilAttachment :: (MonadDOM m) => GPURenderPassDescriptor -> GPURenderPassDepthStencilAttachment -> m ()
+setDepthStencilAttachment self val = liftDOM (void ((js_setDepthStencilAttachment (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthStencilAttachment\"]; })"
+        js_getDepthStencilAttachment :: GPURenderPassDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-depthstencilattachment GPURenderPassDescriptor.depthStencilAttachment specification>
+getDepthStencilAttachment :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe GPURenderPassDepthStencilAttachment)
+getDepthStencilAttachment self = liftDOM (((js_getDepthStencilAttachment (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-depthstencilattachment GPURenderPassDescriptor.depthStencilAttachment specification>
+getDepthStencilAttachmentUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m GPURenderPassDepthStencilAttachment
+getDepthStencilAttachmentUnsafe self = liftDOM ((((js_getDepthStencilAttachment (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-depthstencilattachment GPURenderPassDescriptor.depthStencilAttachment specification>
+getDepthStencilAttachmentUnchecked :: (MonadDOM m) => GPURenderPassDescriptor -> m GPURenderPassDepthStencilAttachment
+getDepthStencilAttachmentUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthStencilAttachment (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"occlusionQuerySet\"] = $2; })"
+        js_setOcclusionQuerySet :: GPURenderPassDescriptor -> GPUQuerySet -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-occlusionqueryset GPURenderPassDescriptor.occlusionQuerySet specification>
+setOcclusionQuerySet :: (MonadDOM m) => GPURenderPassDescriptor -> GPUQuerySet -> m ()
+setOcclusionQuerySet self val = liftDOM (void ((js_setOcclusionQuerySet (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"occlusionQuerySet\"]; })"
+        js_getOcclusionQuerySet :: GPURenderPassDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-occlusionqueryset GPURenderPassDescriptor.occlusionQuerySet specification>
+getOcclusionQuerySet :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe GPUQuerySet)
+getOcclusionQuerySet self = liftDOM (((js_getOcclusionQuerySet (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-occlusionqueryset GPURenderPassDescriptor.occlusionQuerySet specification>
+getOcclusionQuerySetUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m GPUQuerySet
+getOcclusionQuerySetUnsafe self = liftDOM ((((js_getOcclusionQuerySet (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-occlusionqueryset GPURenderPassDescriptor.occlusionQuerySet specification>
+getOcclusionQuerySetUnchecked :: (MonadDOM m) => GPURenderPassDescriptor -> m GPUQuerySet
+getOcclusionQuerySetUnchecked self = liftDOM ((pFromJSVal <$> (js_getOcclusionQuerySet (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestampWrites\"] = $2; })"
+        js_setTimestampWrites :: GPURenderPassDescriptor -> GPURenderPassTimestampWrites -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-timestampwrites GPURenderPassDescriptor.timestampWrites specification>
+setTimestampWrites :: (MonadDOM m) => GPURenderPassDescriptor -> GPURenderPassTimestampWrites -> m ()
+setTimestampWrites self val = liftDOM (void ((js_setTimestampWrites (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestampWrites\"]; })"
+        js_getTimestampWrites :: GPURenderPassDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-timestampwrites GPURenderPassDescriptor.timestampWrites specification>
+getTimestampWrites :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe GPURenderPassTimestampWrites)
+getTimestampWrites self = liftDOM (((js_getTimestampWrites (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-timestampwrites GPURenderPassDescriptor.timestampWrites specification>
+getTimestampWritesUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m GPURenderPassTimestampWrites
+getTimestampWritesUnsafe self = liftDOM ((((js_getTimestampWrites (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-timestampwrites GPURenderPassDescriptor.timestampWrites specification>
+getTimestampWritesUnchecked :: (MonadDOM m) => GPURenderPassDescriptor -> m GPURenderPassTimestampWrites
+getTimestampWritesUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimestampWrites (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxDrawCount\"] = $2; })"
+        js_setMaxDrawCount :: GPURenderPassDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-maxdrawcount GPURenderPassDescriptor.maxDrawCount specification>
+setMaxDrawCount :: (MonadDOM m) => GPURenderPassDescriptor -> Word53 -> m ()
+setMaxDrawCount self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMaxDrawCount (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxDrawCount\"]; })"
+        js_getMaxDrawCount :: GPURenderPassDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-maxdrawcount GPURenderPassDescriptor.maxDrawCount specification>
+getMaxDrawCount :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe Word53)
+getMaxDrawCount self = liftDOM (((js_getMaxDrawCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-maxdrawcount GPURenderPassDescriptor.maxDrawCount specification>
+getMaxDrawCountUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m Word53
+getMaxDrawCountUnsafe self = liftDOM ((((js_getMaxDrawCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-maxdrawcount GPURenderPassDescriptor.maxDrawCount specification>
+getMaxDrawCountUnchecked :: (MonadDOM m) => GPURenderPassDescriptor -> m Word53
+getMaxDrawCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxDrawCount (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassEncoder.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPassEncoder
+       (js_beginOcclusionQuery, js_end, js_endOcclusionQuery, js_executeBundles, js_setBlendConstant, js_setScissorRect, js_setStencilReference, js_setViewport, beginOcclusionQuery, end, endOcclusionQuery, executeBundles, setBlendConstant, setScissorRect, setStencilReference, setViewport, GPURenderPassEncoder(..), gTypeGPURenderPassEncoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"beginOcclusionQuery\"]($2); })"
+        js_beginOcclusionQuery :: GPURenderPassEncoder -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/beginOcclusionQuery MDN GPURenderPassEncoder.beginOcclusionQuery documentation>
+beginOcclusionQuery :: (MonadDOM m) => GPURenderPassEncoder -> Word -> m ()
+beginOcclusionQuery self queryIndex = liftDOM (void ((js_beginOcclusionQuery (self) (queryIndex))))
+
+foreign import javascript safe "(($1) => { return $1[\"end\"](); })"
+        js_end :: GPURenderPassEncoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/end MDN GPURenderPassEncoder.end documentation>
+end :: (MonadDOM m) => GPURenderPassEncoder -> m ()
+end self = liftDOM (void ((js_end (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"endOcclusionQuery\"](); })"
+        js_endOcclusionQuery :: GPURenderPassEncoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/endOcclusionQuery MDN GPURenderPassEncoder.endOcclusionQuery documentation>
+endOcclusionQuery :: (MonadDOM m) => GPURenderPassEncoder -> m ()
+endOcclusionQuery self = liftDOM (void ((js_endOcclusionQuery (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"executeBundles\"]($2); })"
+        js_executeBundles :: GPURenderPassEncoder -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/executeBundles MDN GPURenderPassEncoder.executeBundles documentation>
+executeBundles :: (MonadDOM m) => GPURenderPassEncoder -> [GPURenderBundle] -> m ()
+executeBundles self bundles = liftDOM (void (((toJSVal bundles) >>= \a2' -> js_executeBundles (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setBlendConstant\"]($2); })"
+        js_setBlendConstant :: GPURenderPassEncoder -> GPUColor -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/setBlendConstant MDN GPURenderPassEncoder.setBlendConstant documentation>
+setBlendConstant :: (MonadDOM m, IsGPUColor color) => GPURenderPassEncoder -> color -> m ()
+setBlendConstant self color = liftDOM (void ((js_setBlendConstant (self) (Types.toGPUColor color))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"setScissorRect\"]($2, $3, $4, $5); })"
+        js_setScissorRect :: GPURenderPassEncoder -> Word -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/setScissorRect MDN GPURenderPassEncoder.setScissorRect documentation>
+setScissorRect :: (MonadDOM m) => GPURenderPassEncoder -> Word -> Word -> Word -> Word -> m ()
+setScissorRect self x y width height = liftDOM (void ((js_setScissorRect (self) (x) (y) (width) (height))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setStencilReference\"]($2); })"
+        js_setStencilReference :: GPURenderPassEncoder -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/setStencilReference MDN GPURenderPassEncoder.setStencilReference documentation>
+setStencilReference :: (MonadDOM m) => GPURenderPassEncoder -> Word -> m ()
+setStencilReference self reference = liftDOM (void ((js_setStencilReference (self) (reference))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"setViewport\"]($2, $3, $4, $5, $6, $7); })"
+        js_setViewport :: GPURenderPassEncoder -> Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/setViewport MDN GPURenderPassEncoder.setViewport documentation>
+setViewport :: (MonadDOM m) => GPURenderPassEncoder -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setViewport self x y width height minDepth maxDepth = liftDOM (void ((js_setViewport (self) (x) (y) (width) (height) (minDepth) (maxDepth))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassLayout.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPassLayout
+       (js_newGPURenderPassLayout, js_setColorFormats, js_getColorFormats, js_setDepthStencilFormat, js_getDepthStencilFormat, js_setSampleCount, js_getSampleCount, newGPURenderPassLayout, setColorFormats, getColorFormats, setDepthStencilFormat, getDepthStencilFormat, getDepthStencilFormatUnsafe, getDepthStencilFormatUnchecked, setSampleCount, getSampleCount, getSampleCountUnsafe, getSampleCountUnchecked, GPURenderPassLayout(..), gTypeGPURenderPassLayout, IsGPURenderPassLayout, toGPURenderPassLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"colorFormats\": $1}); })"
+        js_newGPURenderPassLayout :: JSVal -> IO GPURenderPassLayout
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpasslayout GPURenderPassLayout specification>
+newGPURenderPassLayout :: (MonadDOM m) => [Maybe GPUTextureFormat] -> m GPURenderPassLayout
+newGPURenderPassLayout colorFormats = liftDOM (((toJSVal colorFormats) >>= \a1' -> js_newGPURenderPassLayout a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorFormats\"] = $2; })"
+        js_setColorFormats :: GPURenderPassLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-colorformats GPURenderPassLayout.colorFormats specification>
+setColorFormats :: (MonadDOM m, IsGPURenderPassLayout self) => self -> [Maybe GPUTextureFormat] -> m ()
+setColorFormats self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorFormats ((Types.toGPURenderPassLayout self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorFormats\"]; })"
+        js_getColorFormats :: GPURenderPassLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-colorformats GPURenderPassLayout.colorFormats specification>
+getColorFormats :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m [Maybe GPUTextureFormat]
+getColorFormats self = liftDOM (((js_getColorFormats ((Types.toGPURenderPassLayout self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthStencilFormat\"] = $2; })"
+        js_setDepthStencilFormat :: GPURenderPassLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-depthstencilformat GPURenderPassLayout.depthStencilFormat specification>
+setDepthStencilFormat :: (MonadDOM m, IsGPURenderPassLayout self) => self -> GPUTextureFormat -> m ()
+setDepthStencilFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDepthStencilFormat ((Types.toGPURenderPassLayout self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthStencilFormat\"]; })"
+        js_getDepthStencilFormat :: GPURenderPassLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-depthstencilformat GPURenderPassLayout.depthStencilFormat specification>
+getDepthStencilFormat :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m (Maybe GPUTextureFormat)
+getDepthStencilFormat self = liftDOM (((js_getDepthStencilFormat ((Types.toGPURenderPassLayout self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-depthstencilformat GPURenderPassLayout.depthStencilFormat specification>
+getDepthStencilFormatUnsafe :: (MonadDOM m, IsGPURenderPassLayout self, HasCallStack) => self -> m GPUTextureFormat
+getDepthStencilFormatUnsafe self = liftDOM ((((js_getDepthStencilFormat ((Types.toGPURenderPassLayout self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-depthstencilformat GPURenderPassLayout.depthStencilFormat specification>
+getDepthStencilFormatUnchecked :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m GPUTextureFormat
+getDepthStencilFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthStencilFormat ((Types.toGPURenderPassLayout self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleCount\"] = $2; })"
+        js_setSampleCount :: GPURenderPassLayout -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-samplecount GPURenderPassLayout.sampleCount specification>
+setSampleCount :: (MonadDOM m, IsGPURenderPassLayout self) => self -> Word -> m ()
+setSampleCount self val = liftDOM (void ((js_setSampleCount ((Types.toGPURenderPassLayout self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleCount\"]; })"
+        js_getSampleCount :: GPURenderPassLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-samplecount GPURenderPassLayout.sampleCount specification>
+getSampleCount :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m (Maybe Word)
+getSampleCount self = liftDOM (((js_getSampleCount ((Types.toGPURenderPassLayout self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-samplecount GPURenderPassLayout.sampleCount specification>
+getSampleCountUnsafe :: (MonadDOM m, IsGPURenderPassLayout self, HasCallStack) => self -> m Word
+getSampleCountUnsafe self = liftDOM ((((js_getSampleCount ((Types.toGPURenderPassLayout self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-samplecount GPURenderPassLayout.sampleCount specification>
+getSampleCountUnchecked :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m Word
+getSampleCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleCount ((Types.toGPURenderPassLayout self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassTimestampWrites.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassTimestampWrites.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPassTimestampWrites.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPassTimestampWrites
+       (js_newGPURenderPassTimestampWrites, js_setQuerySet, js_getQuerySet, js_setBeginningOfPassWriteIndex, js_getBeginningOfPassWriteIndex, js_setEndOfPassWriteIndex, js_getEndOfPassWriteIndex, newGPURenderPassTimestampWrites, setQuerySet, getQuerySet, setBeginningOfPassWriteIndex, getBeginningOfPassWriteIndex, getBeginningOfPassWriteIndexUnsafe, getBeginningOfPassWriteIndexUnchecked, setEndOfPassWriteIndex, getEndOfPassWriteIndex, getEndOfPassWriteIndexUnsafe, getEndOfPassWriteIndexUnchecked, GPURenderPassTimestampWrites(..), gTypeGPURenderPassTimestampWrites)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"querySet\": $1}); })"
+        js_newGPURenderPassTimestampWrites :: GPUQuerySet -> IO GPURenderPassTimestampWrites
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpasstimestampwrites GPURenderPassTimestampWrites specification>
+newGPURenderPassTimestampWrites :: (MonadDOM m) => GPUQuerySet -> m GPURenderPassTimestampWrites
+newGPURenderPassTimestampWrites querySet = liftDOM ((js_newGPURenderPassTimestampWrites (querySet)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"querySet\"] = $2; })"
+        js_setQuerySet :: GPURenderPassTimestampWrites -> GPUQuerySet -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-queryset GPURenderPassTimestampWrites.querySet specification>
+setQuerySet :: (MonadDOM m) => GPURenderPassTimestampWrites -> GPUQuerySet -> m ()
+setQuerySet self val = liftDOM (void ((js_setQuerySet (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"querySet\"]; })"
+        js_getQuerySet :: GPURenderPassTimestampWrites -> IO GPUQuerySet
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-queryset GPURenderPassTimestampWrites.querySet specification>
+getQuerySet :: (MonadDOM m) => GPURenderPassTimestampWrites -> m GPUQuerySet
+getQuerySet self = liftDOM ((js_getQuerySet (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"beginningOfPassWriteIndex\"] = $2; })"
+        js_setBeginningOfPassWriteIndex :: GPURenderPassTimestampWrites -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-beginningofpasswriteindex GPURenderPassTimestampWrites.beginningOfPassWriteIndex specification>
+setBeginningOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> Word -> m ()
+setBeginningOfPassWriteIndex self val = liftDOM (void ((js_setBeginningOfPassWriteIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"beginningOfPassWriteIndex\"]; })"
+        js_getBeginningOfPassWriteIndex :: GPURenderPassTimestampWrites -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-beginningofpasswriteindex GPURenderPassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> m (Maybe Word)
+getBeginningOfPassWriteIndex self = liftDOM (((js_getBeginningOfPassWriteIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-beginningofpasswriteindex GPURenderPassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassTimestampWrites -> m Word
+getBeginningOfPassWriteIndexUnsafe self = liftDOM ((((js_getBeginningOfPassWriteIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-beginningofpasswriteindex GPURenderPassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndexUnchecked :: (MonadDOM m) => GPURenderPassTimestampWrites -> m Word
+getBeginningOfPassWriteIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getBeginningOfPassWriteIndex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endOfPassWriteIndex\"] = $2; })"
+        js_setEndOfPassWriteIndex :: GPURenderPassTimestampWrites -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-endofpasswriteindex GPURenderPassTimestampWrites.endOfPassWriteIndex specification>
+setEndOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> Word -> m ()
+setEndOfPassWriteIndex self val = liftDOM (void ((js_setEndOfPassWriteIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endOfPassWriteIndex\"]; })"
+        js_getEndOfPassWriteIndex :: GPURenderPassTimestampWrites -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-endofpasswriteindex GPURenderPassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> m (Maybe Word)
+getEndOfPassWriteIndex self = liftDOM (((js_getEndOfPassWriteIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-endofpasswriteindex GPURenderPassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassTimestampWrites -> m Word
+getEndOfPassWriteIndexUnsafe self = liftDOM ((((js_getEndOfPassWriteIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-endofpasswriteindex GPURenderPassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndexUnchecked :: (MonadDOM m) => GPURenderPassTimestampWrites -> m Word
+getEndOfPassWriteIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getEndOfPassWriteIndex (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPipeline.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPipeline.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPipeline.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPipeline
+       (GPURenderPipeline(..), gTypeGPURenderPipeline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURenderPipelineDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPipelineDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURenderPipelineDescriptor.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURenderPipelineDescriptor
+       (js_newGPURenderPipelineDescriptor, js_setVertex, js_getVertex, js_setPrimitive, js_getPrimitive, js_setDepthStencil, js_getDepthStencil, js_setMultisample, js_getMultisample, js_setFragment, js_getFragment, newGPURenderPipelineDescriptor, setVertex, getVertex, setPrimitive, getPrimitive, getPrimitiveUnsafe, getPrimitiveUnchecked, setDepthStencil, getDepthStencil, getDepthStencilUnsafe, getDepthStencilUnchecked, setMultisample, getMultisample, getMultisampleUnsafe, getMultisampleUnchecked, setFragment, getFragment, getFragmentUnsafe, getFragmentUnchecked, GPURenderPipelineDescriptor(..), gTypeGPURenderPipelineDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"layout\": $1, \"vertex\": $2}); })"
+        js_newGPURenderPipelineDescriptor :: GPUPipelineLayoutOrGPUAutoLayoutMode -> GPUVertexState -> IO GPURenderPipelineDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpipelinedescriptor GPURenderPipelineDescriptor specification>
+newGPURenderPipelineDescriptor :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode layout) => layout -> GPUVertexState -> m GPURenderPipelineDescriptor
+newGPURenderPipelineDescriptor layout vertex = liftDOM ((js_newGPURenderPipelineDescriptor (Types.toGPUPipelineLayoutOrGPUAutoLayoutMode layout) (vertex)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"vertex\"] = $2; })"
+        js_setVertex :: GPURenderPipelineDescriptor -> GPUVertexState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-vertex GPURenderPipelineDescriptor.vertex specification>
+setVertex :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUVertexState -> m ()
+setVertex self val = liftDOM (void ((js_setVertex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"vertex\"]; })"
+        js_getVertex :: GPURenderPipelineDescriptor -> IO GPUVertexState
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-vertex GPURenderPipelineDescriptor.vertex specification>
+getVertex :: (MonadDOM m) => GPURenderPipelineDescriptor -> m GPUVertexState
+getVertex self = liftDOM ((js_getVertex (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"primitive\"] = $2; })"
+        js_setPrimitive :: GPURenderPipelineDescriptor -> GPUPrimitiveState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-primitive GPURenderPipelineDescriptor.primitive specification>
+setPrimitive :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUPrimitiveState -> m ()
+setPrimitive self val = liftDOM (void ((js_setPrimitive (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"primitive\"]; })"
+        js_getPrimitive :: GPURenderPipelineDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-primitive GPURenderPipelineDescriptor.primitive specification>
+getPrimitive :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUPrimitiveState)
+getPrimitive self = liftDOM (((js_getPrimitive (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-primitive GPURenderPipelineDescriptor.primitive specification>
+getPrimitiveUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUPrimitiveState
+getPrimitiveUnsafe self = liftDOM ((((js_getPrimitive (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-primitive GPURenderPipelineDescriptor.primitive specification>
+getPrimitiveUnchecked :: (MonadDOM m) => GPURenderPipelineDescriptor -> m GPUPrimitiveState
+getPrimitiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrimitive (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthStencil\"] = $2; })"
+        js_setDepthStencil :: GPURenderPipelineDescriptor -> GPUDepthStencilState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-depthstencil GPURenderPipelineDescriptor.depthStencil specification>
+setDepthStencil :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUDepthStencilState -> m ()
+setDepthStencil self val = liftDOM (void ((js_setDepthStencil (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthStencil\"]; })"
+        js_getDepthStencil :: GPURenderPipelineDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-depthstencil GPURenderPipelineDescriptor.depthStencil specification>
+getDepthStencil :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUDepthStencilState)
+getDepthStencil self = liftDOM (((js_getDepthStencil (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-depthstencil GPURenderPipelineDescriptor.depthStencil specification>
+getDepthStencilUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUDepthStencilState
+getDepthStencilUnsafe self = liftDOM ((((js_getDepthStencil (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-depthstencil GPURenderPipelineDescriptor.depthStencil specification>
+getDepthStencilUnchecked :: (MonadDOM m) => GPURenderPipelineDescriptor -> m GPUDepthStencilState
+getDepthStencilUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthStencil (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"multisample\"] = $2; })"
+        js_setMultisample :: GPURenderPipelineDescriptor -> GPUMultisampleState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-multisample GPURenderPipelineDescriptor.multisample specification>
+setMultisample :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUMultisampleState -> m ()
+setMultisample self val = liftDOM (void ((js_setMultisample (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"multisample\"]; })"
+        js_getMultisample :: GPURenderPipelineDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-multisample GPURenderPipelineDescriptor.multisample specification>
+getMultisample :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUMultisampleState)
+getMultisample self = liftDOM (((js_getMultisample (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-multisample GPURenderPipelineDescriptor.multisample specification>
+getMultisampleUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUMultisampleState
+getMultisampleUnsafe self = liftDOM ((((js_getMultisample (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-multisample GPURenderPipelineDescriptor.multisample specification>
+getMultisampleUnchecked :: (MonadDOM m) => GPURenderPipelineDescriptor -> m GPUMultisampleState
+getMultisampleUnchecked self = liftDOM ((pFromJSVal <$> (js_getMultisample (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fragment\"] = $2; })"
+        js_setFragment :: GPURenderPipelineDescriptor -> GPUFragmentState -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-fragment GPURenderPipelineDescriptor.fragment specification>
+setFragment :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUFragmentState -> m ()
+setFragment self val = liftDOM (void ((js_setFragment (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fragment\"]; })"
+        js_getFragment :: GPURenderPipelineDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-fragment GPURenderPipelineDescriptor.fragment specification>
+getFragment :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUFragmentState)
+getFragment self = liftDOM (((js_getFragment (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-fragment GPURenderPipelineDescriptor.fragment specification>
+getFragmentUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUFragmentState
+getFragmentUnsafe self = liftDOM ((((js_getFragment (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-fragment GPURenderPipelineDescriptor.fragment specification>
+getFragmentUnchecked :: (MonadDOM m) => GPURenderPipelineDescriptor -> m GPUFragmentState
+getFragmentUnchecked self = liftDOM ((pFromJSVal <$> (js_getFragment (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPURequestAdapterOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/GPURequestAdapterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPURequestAdapterOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPURequestAdapterOptions
+       (js_newGPURequestAdapterOptions, js_setFeatureLevel, js_getFeatureLevel, js_setPowerPreference, js_getPowerPreference, js_setForceFallbackAdapter, js_getForceFallbackAdapter, js_setXrCompatible, js_getXrCompatible, newGPURequestAdapterOptions, setFeatureLevel, getFeatureLevel, getFeatureLevelUnsafe, getFeatureLevelUnchecked, setPowerPreference, getPowerPreference, getPowerPreferenceUnsafe, getPowerPreferenceUnchecked, setForceFallbackAdapter, getForceFallbackAdapter, getForceFallbackAdapterUnsafe, getForceFallbackAdapterUnchecked, setXrCompatible, getXrCompatible, getXrCompatibleUnsafe, getXrCompatibleUnchecked, GPURequestAdapterOptions(..), gTypeGPURequestAdapterOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPURequestAdapterOptions :: IO GPURequestAdapterOptions
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurequestadapteroptions GPURequestAdapterOptions specification>
+newGPURequestAdapterOptions :: (MonadDOM m) => m GPURequestAdapterOptions
+newGPURequestAdapterOptions = liftDOM ((js_newGPURequestAdapterOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"featureLevel\"] = $2; })"
+        js_setFeatureLevel :: GPURequestAdapterOptions -> JSString -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-featurelevel GPURequestAdapterOptions.featureLevel specification>
+setFeatureLevel :: (MonadDOM m, ToJSString val) => GPURequestAdapterOptions -> val -> m ()
+setFeatureLevel self val = liftDOM (void ((js_setFeatureLevel (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"featureLevel\"]; })"
+        js_getFeatureLevel :: GPURequestAdapterOptions -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-featurelevel GPURequestAdapterOptions.featureLevel specification>
+getFeatureLevel :: (MonadDOM m, FromJSString result) => GPURequestAdapterOptions -> m (Maybe result)
+getFeatureLevel self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getFeatureLevel (self))))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-featurelevel GPURequestAdapterOptions.featureLevel specification>
+getFeatureLevelUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => GPURequestAdapterOptions -> m result
+getFeatureLevelUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getFeatureLevel (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-featurelevel GPURequestAdapterOptions.featureLevel specification>
+getFeatureLevelUnchecked :: (MonadDOM m, FromJSString result) => GPURequestAdapterOptions -> m result
+getFeatureLevelUnchecked self = liftDOM ((pFromJSVal <$> (js_getFeatureLevel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerPreference\"] = $2; })"
+        js_setPowerPreference :: GPURequestAdapterOptions -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-powerpreference GPURequestAdapterOptions.powerPreference specification>
+setPowerPreference :: (MonadDOM m) => GPURequestAdapterOptions -> GPUPowerPreference -> m ()
+setPowerPreference self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPowerPreference (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerPreference\"]; })"
+        js_getPowerPreference :: GPURequestAdapterOptions -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-powerpreference GPURequestAdapterOptions.powerPreference specification>
+getPowerPreference :: (MonadDOM m) => GPURequestAdapterOptions -> m (Maybe GPUPowerPreference)
+getPowerPreference self = liftDOM (((js_getPowerPreference (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-powerpreference GPURequestAdapterOptions.powerPreference specification>
+getPowerPreferenceUnsafe :: (MonadDOM m, HasCallStack) => GPURequestAdapterOptions -> m GPUPowerPreference
+getPowerPreferenceUnsafe self = liftDOM ((((js_getPowerPreference (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-powerpreference GPURequestAdapterOptions.powerPreference specification>
+getPowerPreferenceUnchecked :: (MonadDOM m) => GPURequestAdapterOptions -> m GPUPowerPreference
+getPowerPreferenceUnchecked self = liftDOM ((pFromJSVal <$> (js_getPowerPreference (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"forceFallbackAdapter\"] = $2; })"
+        js_setForceFallbackAdapter :: GPURequestAdapterOptions -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-forcefallbackadapter GPURequestAdapterOptions.forceFallbackAdapter specification>
+setForceFallbackAdapter :: (MonadDOM m) => GPURequestAdapterOptions -> Bool -> m ()
+setForceFallbackAdapter self val = liftDOM (void ((js_setForceFallbackAdapter (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"forceFallbackAdapter\"]; })"
+        js_getForceFallbackAdapter :: GPURequestAdapterOptions -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-forcefallbackadapter GPURequestAdapterOptions.forceFallbackAdapter specification>
+getForceFallbackAdapter :: (MonadDOM m) => GPURequestAdapterOptions -> m (Maybe Bool)
+getForceFallbackAdapter self = liftDOM (((js_getForceFallbackAdapter (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-forcefallbackadapter GPURequestAdapterOptions.forceFallbackAdapter specification>
+getForceFallbackAdapterUnsafe :: (MonadDOM m, HasCallStack) => GPURequestAdapterOptions -> m Bool
+getForceFallbackAdapterUnsafe self = liftDOM ((((js_getForceFallbackAdapter (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-forcefallbackadapter GPURequestAdapterOptions.forceFallbackAdapter specification>
+getForceFallbackAdapterUnchecked :: (MonadDOM m) => GPURequestAdapterOptions -> m Bool
+getForceFallbackAdapterUnchecked self = liftDOM ((pFromJSVal <$> (js_getForceFallbackAdapter (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"xrCompatible\"] = $2; })"
+        js_setXrCompatible :: GPURequestAdapterOptions -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-xrcompatible GPURequestAdapterOptions.xrCompatible specification>
+setXrCompatible :: (MonadDOM m) => GPURequestAdapterOptions -> Bool -> m ()
+setXrCompatible self val = liftDOM (void ((js_setXrCompatible (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"xrCompatible\"]; })"
+        js_getXrCompatible :: GPURequestAdapterOptions -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-xrcompatible GPURequestAdapterOptions.xrCompatible specification>
+getXrCompatible :: (MonadDOM m) => GPURequestAdapterOptions -> m (Maybe Bool)
+getXrCompatible self = liftDOM (((js_getXrCompatible (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-xrcompatible GPURequestAdapterOptions.xrCompatible specification>
+getXrCompatibleUnsafe :: (MonadDOM m, HasCallStack) => GPURequestAdapterOptions -> m Bool
+getXrCompatibleUnsafe self = liftDOM ((((js_getXrCompatible (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-xrcompatible GPURequestAdapterOptions.xrCompatible specification>
+getXrCompatibleUnchecked :: (MonadDOM m) => GPURequestAdapterOptions -> m Bool
+getXrCompatibleUnchecked self = liftDOM ((pFromJSVal <$> (js_getXrCompatible (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUSampler.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUSampler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUSampler.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUSampler
+       (GPUSampler(..), gTypeGPUSampler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUSamplerBindingLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUSamplerBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUSamplerBindingLayout.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUSamplerBindingLayout
+       (js_newGPUSamplerBindingLayout, js_setType, js_getType, newGPUSamplerBindingLayout, setType, getType, getTypeUnsafe, getTypeUnchecked, GPUSamplerBindingLayout(..), gTypeGPUSamplerBindingLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUSamplerBindingLayout :: IO GPUSamplerBindingLayout
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpusamplerbindinglayout GPUSamplerBindingLayout specification>
+newGPUSamplerBindingLayout :: (MonadDOM m) => m GPUSamplerBindingLayout
+newGPUSamplerBindingLayout = liftDOM ((js_newGPUSamplerBindingLayout))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: GPUSamplerBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerbindinglayout-type GPUSamplerBindingLayout.type specification>
+setType :: (MonadDOM m) => GPUSamplerBindingLayout -> GPUSamplerBindingType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: GPUSamplerBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerbindinglayout-type GPUSamplerBindingLayout.type specification>
+getType :: (MonadDOM m) => GPUSamplerBindingLayout -> m (Maybe GPUSamplerBindingType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerbindinglayout-type GPUSamplerBindingLayout.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerBindingLayout -> m GPUSamplerBindingType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerbindinglayout-type GPUSamplerBindingLayout.type specification>
+getTypeUnchecked :: (MonadDOM m) => GPUSamplerBindingLayout -> m GPUSamplerBindingType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUSamplerDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUSamplerDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUSamplerDescriptor.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUSamplerDescriptor
+       (js_newGPUSamplerDescriptor, js_setAddressModeU, js_getAddressModeU, js_setAddressModeV, js_getAddressModeV, js_setAddressModeW, js_getAddressModeW, js_setMagFilter, js_getMagFilter, js_setMinFilter, js_getMinFilter, js_setMipmapFilter, js_getMipmapFilter, js_setLodMinClamp, js_getLodMinClamp, js_setLodMaxClamp, js_getLodMaxClamp, js_setCompare, js_getCompare, js_setMaxAnisotropy, js_getMaxAnisotropy, newGPUSamplerDescriptor, setAddressModeU, getAddressModeU, getAddressModeUUnsafe, getAddressModeUUnchecked, setAddressModeV, getAddressModeV, getAddressModeVUnsafe, getAddressModeVUnchecked, setAddressModeW, getAddressModeW, getAddressModeWUnsafe, getAddressModeWUnchecked, setMagFilter, getMagFilter, getMagFilterUnsafe, getMagFilterUnchecked, setMinFilter, getMinFilter, getMinFilterUnsafe, getMinFilterUnchecked, setMipmapFilter, getMipmapFilter, getMipmapFilterUnsafe, getMipmapFilterUnchecked, setLodMinClamp, getLodMinClamp, getLodMinClampUnsafe, getLodMinClampUnchecked, setLodMaxClamp, getLodMaxClamp, getLodMaxClampUnsafe, getLodMaxClampUnchecked, setCompare, getCompare, getCompareUnsafe, getCompareUnchecked, setMaxAnisotropy, getMaxAnisotropy, getMaxAnisotropyUnsafe, getMaxAnisotropyUnchecked, GPUSamplerDescriptor(..), gTypeGPUSamplerDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUSamplerDescriptor :: IO GPUSamplerDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpusamplerdescriptor GPUSamplerDescriptor specification>
+newGPUSamplerDescriptor :: (MonadDOM m) => m GPUSamplerDescriptor
+newGPUSamplerDescriptor = liftDOM ((js_newGPUSamplerDescriptor))
+
+foreign import javascript safe "(($1, $2) => { $1[\"addressModeU\"] = $2; })"
+        js_setAddressModeU :: GPUSamplerDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodeu GPUSamplerDescriptor.addressModeU specification>
+setAddressModeU :: (MonadDOM m) => GPUSamplerDescriptor -> GPUAddressMode -> m ()
+setAddressModeU self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAddressModeU (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"addressModeU\"]; })"
+        js_getAddressModeU :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodeu GPUSamplerDescriptor.addressModeU specification>
+getAddressModeU :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUAddressMode)
+getAddressModeU self = liftDOM (((js_getAddressModeU (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodeu GPUSamplerDescriptor.addressModeU specification>
+getAddressModeUUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeUUnsafe self = liftDOM ((((js_getAddressModeU (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodeu GPUSamplerDescriptor.addressModeU specification>
+getAddressModeUUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeUUnchecked self = liftDOM ((pFromJSVal <$> (js_getAddressModeU (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"addressModeV\"] = $2; })"
+        js_setAddressModeV :: GPUSamplerDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodev GPUSamplerDescriptor.addressModeV specification>
+setAddressModeV :: (MonadDOM m) => GPUSamplerDescriptor -> GPUAddressMode -> m ()
+setAddressModeV self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAddressModeV (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"addressModeV\"]; })"
+        js_getAddressModeV :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodev GPUSamplerDescriptor.addressModeV specification>
+getAddressModeV :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUAddressMode)
+getAddressModeV self = liftDOM (((js_getAddressModeV (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodev GPUSamplerDescriptor.addressModeV specification>
+getAddressModeVUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeVUnsafe self = liftDOM ((((js_getAddressModeV (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodev GPUSamplerDescriptor.addressModeV specification>
+getAddressModeVUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeVUnchecked self = liftDOM ((pFromJSVal <$> (js_getAddressModeV (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"addressModeW\"] = $2; })"
+        js_setAddressModeW :: GPUSamplerDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodew GPUSamplerDescriptor.addressModeW specification>
+setAddressModeW :: (MonadDOM m) => GPUSamplerDescriptor -> GPUAddressMode -> m ()
+setAddressModeW self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAddressModeW (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"addressModeW\"]; })"
+        js_getAddressModeW :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodew GPUSamplerDescriptor.addressModeW specification>
+getAddressModeW :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUAddressMode)
+getAddressModeW self = liftDOM (((js_getAddressModeW (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodew GPUSamplerDescriptor.addressModeW specification>
+getAddressModeWUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeWUnsafe self = liftDOM ((((js_getAddressModeW (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodew GPUSamplerDescriptor.addressModeW specification>
+getAddressModeWUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeWUnchecked self = liftDOM ((pFromJSVal <$> (js_getAddressModeW (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"magFilter\"] = $2; })"
+        js_setMagFilter :: GPUSamplerDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-magfilter GPUSamplerDescriptor.magFilter specification>
+setMagFilter :: (MonadDOM m) => GPUSamplerDescriptor -> GPUFilterMode -> m ()
+setMagFilter self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMagFilter (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"magFilter\"]; })"
+        js_getMagFilter :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-magfilter GPUSamplerDescriptor.magFilter specification>
+getMagFilter :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUFilterMode)
+getMagFilter self = liftDOM (((js_getMagFilter (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-magfilter GPUSamplerDescriptor.magFilter specification>
+getMagFilterUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUFilterMode
+getMagFilterUnsafe self = liftDOM ((((js_getMagFilter (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-magfilter GPUSamplerDescriptor.magFilter specification>
+getMagFilterUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m GPUFilterMode
+getMagFilterUnchecked self = liftDOM ((pFromJSVal <$> (js_getMagFilter (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minFilter\"] = $2; })"
+        js_setMinFilter :: GPUSamplerDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-minfilter GPUSamplerDescriptor.minFilter specification>
+setMinFilter :: (MonadDOM m) => GPUSamplerDescriptor -> GPUFilterMode -> m ()
+setMinFilter self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMinFilter (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minFilter\"]; })"
+        js_getMinFilter :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-minfilter GPUSamplerDescriptor.minFilter specification>
+getMinFilter :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUFilterMode)
+getMinFilter self = liftDOM (((js_getMinFilter (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-minfilter GPUSamplerDescriptor.minFilter specification>
+getMinFilterUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUFilterMode
+getMinFilterUnsafe self = liftDOM ((((js_getMinFilter (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-minfilter GPUSamplerDescriptor.minFilter specification>
+getMinFilterUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m GPUFilterMode
+getMinFilterUnchecked self = liftDOM ((pFromJSVal <$> (js_getMinFilter (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mipmapFilter\"] = $2; })"
+        js_setMipmapFilter :: GPUSamplerDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-mipmapfilter GPUSamplerDescriptor.mipmapFilter specification>
+setMipmapFilter :: (MonadDOM m) => GPUSamplerDescriptor -> GPUMipmapFilterMode -> m ()
+setMipmapFilter self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMipmapFilter (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mipmapFilter\"]; })"
+        js_getMipmapFilter :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-mipmapfilter GPUSamplerDescriptor.mipmapFilter specification>
+getMipmapFilter :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUMipmapFilterMode)
+getMipmapFilter self = liftDOM (((js_getMipmapFilter (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-mipmapfilter GPUSamplerDescriptor.mipmapFilter specification>
+getMipmapFilterUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUMipmapFilterMode
+getMipmapFilterUnsafe self = liftDOM ((((js_getMipmapFilter (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-mipmapfilter GPUSamplerDescriptor.mipmapFilter specification>
+getMipmapFilterUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m GPUMipmapFilterMode
+getMipmapFilterUnchecked self = liftDOM ((pFromJSVal <$> (js_getMipmapFilter (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lodMinClamp\"] = $2; })"
+        js_setLodMinClamp :: GPUSamplerDescriptor -> Float -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodminclamp GPUSamplerDescriptor.lodMinClamp specification>
+setLodMinClamp :: (MonadDOM m) => GPUSamplerDescriptor -> Float -> m ()
+setLodMinClamp self val = liftDOM (void ((js_setLodMinClamp (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lodMinClamp\"]; })"
+        js_getLodMinClamp :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodminclamp GPUSamplerDescriptor.lodMinClamp specification>
+getLodMinClamp :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe Float)
+getLodMinClamp self = liftDOM (((js_getLodMinClamp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodminclamp GPUSamplerDescriptor.lodMinClamp specification>
+getLodMinClampUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m Float
+getLodMinClampUnsafe self = liftDOM ((((js_getLodMinClamp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodminclamp GPUSamplerDescriptor.lodMinClamp specification>
+getLodMinClampUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m Float
+getLodMinClampUnchecked self = liftDOM ((pFromJSVal <$> (js_getLodMinClamp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lodMaxClamp\"] = $2; })"
+        js_setLodMaxClamp :: GPUSamplerDescriptor -> Float -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodmaxclamp GPUSamplerDescriptor.lodMaxClamp specification>
+setLodMaxClamp :: (MonadDOM m) => GPUSamplerDescriptor -> Float -> m ()
+setLodMaxClamp self val = liftDOM (void ((js_setLodMaxClamp (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lodMaxClamp\"]; })"
+        js_getLodMaxClamp :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodmaxclamp GPUSamplerDescriptor.lodMaxClamp specification>
+getLodMaxClamp :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe Float)
+getLodMaxClamp self = liftDOM (((js_getLodMaxClamp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodmaxclamp GPUSamplerDescriptor.lodMaxClamp specification>
+getLodMaxClampUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m Float
+getLodMaxClampUnsafe self = liftDOM ((((js_getLodMaxClamp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodmaxclamp GPUSamplerDescriptor.lodMaxClamp specification>
+getLodMaxClampUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m Float
+getLodMaxClampUnchecked self = liftDOM ((pFromJSVal <$> (js_getLodMaxClamp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"compare\"] = $2; })"
+        js_setCompare :: GPUSamplerDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-compare GPUSamplerDescriptor.compare specification>
+setCompare :: (MonadDOM m) => GPUSamplerDescriptor -> GPUCompareFunction -> m ()
+setCompare self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCompare (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"compare\"]; })"
+        js_getCompare :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-compare GPUSamplerDescriptor.compare specification>
+getCompare :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUCompareFunction)
+getCompare self = liftDOM (((js_getCompare (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-compare GPUSamplerDescriptor.compare specification>
+getCompareUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUCompareFunction
+getCompareUnsafe self = liftDOM ((((js_getCompare (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-compare GPUSamplerDescriptor.compare specification>
+getCompareUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m GPUCompareFunction
+getCompareUnchecked self = liftDOM ((pFromJSVal <$> (js_getCompare (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxAnisotropy\"] = $2; })"
+        js_setMaxAnisotropy :: GPUSamplerDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy GPUSamplerDescriptor.maxAnisotropy specification>
+setMaxAnisotropy :: (MonadDOM m) => GPUSamplerDescriptor -> Word -> m ()
+setMaxAnisotropy self val = liftDOM (void ((js_setMaxAnisotropy (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxAnisotropy\"]; })"
+        js_getMaxAnisotropy :: GPUSamplerDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy GPUSamplerDescriptor.maxAnisotropy specification>
+getMaxAnisotropy :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe Word)
+getMaxAnisotropy self = liftDOM (((js_getMaxAnisotropy (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy GPUSamplerDescriptor.maxAnisotropy specification>
+getMaxAnisotropyUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m Word
+getMaxAnisotropyUnsafe self = liftDOM ((((js_getMaxAnisotropy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy GPUSamplerDescriptor.maxAnisotropy specification>
+getMaxAnisotropyUnchecked :: (MonadDOM m) => GPUSamplerDescriptor -> m Word
+getMaxAnisotropyUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxAnisotropy (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModule.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModule.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUShaderModule
+       (js_getCompilationInfo, getCompilationInfo, getCompilationInfo_, GPUShaderModule(..), gTypeGPUShaderModule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getCompilationInfo\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getCompilationInfo :: GPUShaderModule -> IO (JSVal, GPUCompilationInfo)
+-- | <https://developer.mozilla.org/docs/Web/API/GPUShaderModule/getCompilationInfo MDN GPUShaderModule.getCompilationInfo documentation>
+getCompilationInfo :: (MonadDOM m) => GPUShaderModule -> m GPUCompilationInfo
+getCompilationInfo self = liftDOM (((js_getCompilationInfo (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUShaderModule/getCompilationInfo MDN GPUShaderModule.getCompilationInfo documentation>
+getCompilationInfo_ :: (MonadDOM m) => GPUShaderModule -> m ()
+getCompilationInfo_ self = liftDOM (void (((js_getCompilationInfo (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModuleCompilationHint.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModuleCompilationHint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModuleCompilationHint.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUShaderModuleCompilationHint
+       (js_newGPUShaderModuleCompilationHint, js_setEntryPoint, js_getEntryPoint, js_setLayout, js_getLayout, newGPUShaderModuleCompilationHint, setEntryPoint, getEntryPoint, setLayout, getLayout, getLayoutUnsafe, getLayoutUnchecked, GPUShaderModuleCompilationHint(..), gTypeGPUShaderModuleCompilationHint)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"entryPoint\": $1}); })"
+        js_newGPUShaderModuleCompilationHint :: JSString -> IO GPUShaderModuleCompilationHint
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpushadermodulecompilationhint GPUShaderModuleCompilationHint specification>
+newGPUShaderModuleCompilationHint :: (MonadDOM m, ToJSString entryPoint) => entryPoint -> m GPUShaderModuleCompilationHint
+newGPUShaderModuleCompilationHint entryPoint = liftDOM ((js_newGPUShaderModuleCompilationHint (toJSString entryPoint)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"entryPoint\"] = $2; })"
+        js_setEntryPoint :: GPUShaderModuleCompilationHint -> JSString -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-entrypoint GPUShaderModuleCompilationHint.entryPoint specification>
+setEntryPoint :: (MonadDOM m, ToJSString val) => GPUShaderModuleCompilationHint -> val -> m ()
+setEntryPoint self val = liftDOM (void ((js_setEntryPoint (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"entryPoint\"]; })"
+        js_getEntryPoint :: GPUShaderModuleCompilationHint -> IO JSString
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-entrypoint GPUShaderModuleCompilationHint.entryPoint specification>
+getEntryPoint :: (MonadDOM m, FromJSString result) => GPUShaderModuleCompilationHint -> m result
+getEntryPoint self = liftDOM ((fromJSString <$> (js_getEntryPoint (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"layout\"] = $2; })"
+        js_setLayout :: GPUShaderModuleCompilationHint -> GPUPipelineLayoutOrGPUAutoLayoutMode -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-layout GPUShaderModuleCompilationHint.layout specification>
+setLayout :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode val) => GPUShaderModuleCompilationHint -> val -> m ()
+setLayout self val = liftDOM (void ((js_setLayout (self) (Types.toGPUPipelineLayoutOrGPUAutoLayoutMode val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"layout\"]; })"
+        js_getLayout :: GPUShaderModuleCompilationHint -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-layout GPUShaderModuleCompilationHint.layout specification>
+getLayout :: (MonadDOM m) => GPUShaderModuleCompilationHint -> m (Maybe GPUPipelineLayoutOrGPUAutoLayoutMode)
+getLayout self = liftDOM (((js_getLayout (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-layout GPUShaderModuleCompilationHint.layout specification>
+getLayoutUnsafe :: (MonadDOM m, HasCallStack) => GPUShaderModuleCompilationHint -> m GPUPipelineLayoutOrGPUAutoLayoutMode
+getLayoutUnsafe self = liftDOM ((((js_getLayout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-layout GPUShaderModuleCompilationHint.layout specification>
+getLayoutUnchecked :: (MonadDOM m) => GPUShaderModuleCompilationHint -> m GPUPipelineLayoutOrGPUAutoLayoutMode
+getLayoutUnchecked self = liftDOM ((pFromJSVal <$> (js_getLayout (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModuleDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModuleDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUShaderModuleDescriptor.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUShaderModuleDescriptor
+       (js_newGPUShaderModuleDescriptor, js_setCode, js_getCode, js_setCompilationHints, js_getCompilationHints, newGPUShaderModuleDescriptor, setCode, getCode, setCompilationHints, getCompilationHints, getCompilationHintsUnsafe, getCompilationHintsUnchecked, GPUShaderModuleDescriptor(..), gTypeGPUShaderModuleDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"code\": $1}); })"
+        js_newGPUShaderModuleDescriptor :: JSString -> IO GPUShaderModuleDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpushadermoduledescriptor GPUShaderModuleDescriptor specification>
+newGPUShaderModuleDescriptor :: (MonadDOM m, ToJSString code) => code -> m GPUShaderModuleDescriptor
+newGPUShaderModuleDescriptor code = liftDOM ((js_newGPUShaderModuleDescriptor (toJSString code)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"code\"] = $2; })"
+        js_setCode :: GPUShaderModuleDescriptor -> JSString -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-code GPUShaderModuleDescriptor.code specification>
+setCode :: (MonadDOM m, ToJSString val) => GPUShaderModuleDescriptor -> val -> m ()
+setCode self val = liftDOM (void ((js_setCode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: GPUShaderModuleDescriptor -> IO JSString
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-code GPUShaderModuleDescriptor.code specification>
+getCode :: (MonadDOM m, FromJSString result) => GPUShaderModuleDescriptor -> m result
+getCode self = liftDOM ((fromJSString <$> (js_getCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"compilationHints\"] = $2; })"
+        js_setCompilationHints :: GPUShaderModuleDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-compilationhints GPUShaderModuleDescriptor.compilationHints specification>
+setCompilationHints :: (MonadDOM m) => GPUShaderModuleDescriptor -> [GPUShaderModuleCompilationHint] -> m ()
+setCompilationHints self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCompilationHints (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"compilationHints\"]; })"
+        js_getCompilationHints :: GPUShaderModuleDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-compilationhints GPUShaderModuleDescriptor.compilationHints specification>
+getCompilationHints :: (MonadDOM m) => GPUShaderModuleDescriptor -> m (Maybe [GPUShaderModuleCompilationHint])
+getCompilationHints self = liftDOM (((js_getCompilationHints (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-compilationhints GPUShaderModuleDescriptor.compilationHints specification>
+getCompilationHintsUnsafe :: (MonadDOM m, HasCallStack) => GPUShaderModuleDescriptor -> m [GPUShaderModuleCompilationHint]
+getCompilationHintsUnsafe self = liftDOM ((((js_getCompilationHints (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-compilationhints GPUShaderModuleDescriptor.compilationHints specification>
+getCompilationHintsUnchecked :: (MonadDOM m) => GPUShaderModuleDescriptor -> m [GPUShaderModuleCompilationHint]
+getCompilationHintsUnchecked self = liftDOM (((js_getCompilationHints (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUStencilFaceState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUStencilFaceState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUStencilFaceState.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUStencilFaceState
+       (js_newGPUStencilFaceState, js_setCompare, js_getCompare, js_setFailOp, js_getFailOp, js_setDepthFailOp, js_getDepthFailOp, js_setPassOp, js_getPassOp, newGPUStencilFaceState, setCompare, getCompare, getCompareUnsafe, getCompareUnchecked, setFailOp, getFailOp, getFailOpUnsafe, getFailOpUnchecked, setDepthFailOp, getDepthFailOp, getDepthFailOpUnsafe, getDepthFailOpUnchecked, setPassOp, getPassOp, getPassOpUnsafe, getPassOpUnchecked, GPUStencilFaceState(..), gTypeGPUStencilFaceState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUStencilFaceState :: IO GPUStencilFaceState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpustencilfacestate GPUStencilFaceState specification>
+newGPUStencilFaceState :: (MonadDOM m) => m GPUStencilFaceState
+newGPUStencilFaceState = liftDOM ((js_newGPUStencilFaceState))
+
+foreign import javascript safe "(($1, $2) => { $1[\"compare\"] = $2; })"
+        js_setCompare :: GPUStencilFaceState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-compare GPUStencilFaceState.compare specification>
+setCompare :: (MonadDOM m) => GPUStencilFaceState -> GPUCompareFunction -> m ()
+setCompare self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCompare (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"compare\"]; })"
+        js_getCompare :: GPUStencilFaceState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-compare GPUStencilFaceState.compare specification>
+getCompare :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUCompareFunction)
+getCompare self = liftDOM (((js_getCompare (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-compare GPUStencilFaceState.compare specification>
+getCompareUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUCompareFunction
+getCompareUnsafe self = liftDOM ((((js_getCompare (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-compare GPUStencilFaceState.compare specification>
+getCompareUnchecked :: (MonadDOM m) => GPUStencilFaceState -> m GPUCompareFunction
+getCompareUnchecked self = liftDOM ((pFromJSVal <$> (js_getCompare (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"failOp\"] = $2; })"
+        js_setFailOp :: GPUStencilFaceState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-failop GPUStencilFaceState.failOp specification>
+setFailOp :: (MonadDOM m) => GPUStencilFaceState -> GPUStencilOperation -> m ()
+setFailOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFailOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"failOp\"]; })"
+        js_getFailOp :: GPUStencilFaceState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-failop GPUStencilFaceState.failOp specification>
+getFailOp :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUStencilOperation)
+getFailOp self = liftDOM (((js_getFailOp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-failop GPUStencilFaceState.failOp specification>
+getFailOpUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUStencilOperation
+getFailOpUnsafe self = liftDOM ((((js_getFailOp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-failop GPUStencilFaceState.failOp specification>
+getFailOpUnchecked :: (MonadDOM m) => GPUStencilFaceState -> m GPUStencilOperation
+getFailOpUnchecked self = liftDOM ((pFromJSVal <$> (js_getFailOp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depthFailOp\"] = $2; })"
+        js_setDepthFailOp :: GPUStencilFaceState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-depthfailop GPUStencilFaceState.depthFailOp specification>
+setDepthFailOp :: (MonadDOM m) => GPUStencilFaceState -> GPUStencilOperation -> m ()
+setDepthFailOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDepthFailOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthFailOp\"]; })"
+        js_getDepthFailOp :: GPUStencilFaceState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-depthfailop GPUStencilFaceState.depthFailOp specification>
+getDepthFailOp :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUStencilOperation)
+getDepthFailOp self = liftDOM (((js_getDepthFailOp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-depthfailop GPUStencilFaceState.depthFailOp specification>
+getDepthFailOpUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUStencilOperation
+getDepthFailOpUnsafe self = liftDOM ((((js_getDepthFailOp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-depthfailop GPUStencilFaceState.depthFailOp specification>
+getDepthFailOpUnchecked :: (MonadDOM m) => GPUStencilFaceState -> m GPUStencilOperation
+getDepthFailOpUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepthFailOp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"passOp\"] = $2; })"
+        js_setPassOp :: GPUStencilFaceState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-passop GPUStencilFaceState.passOp specification>
+setPassOp :: (MonadDOM m) => GPUStencilFaceState -> GPUStencilOperation -> m ()
+setPassOp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPassOp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"passOp\"]; })"
+        js_getPassOp :: GPUStencilFaceState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-passop GPUStencilFaceState.passOp specification>
+getPassOp :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUStencilOperation)
+getPassOp self = liftDOM (((js_getPassOp (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-passop GPUStencilFaceState.passOp specification>
+getPassOpUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUStencilOperation
+getPassOpUnsafe self = liftDOM ((((js_getPassOp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-passop GPUStencilFaceState.passOp specification>
+getPassOpUnchecked :: (MonadDOM m) => GPUStencilFaceState -> m GPUStencilOperation
+getPassOpUnchecked self = liftDOM ((pFromJSVal <$> (js_getPassOp (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUStorageTextureBindingLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUStorageTextureBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUStorageTextureBindingLayout.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUStorageTextureBindingLayout
+       (js_newGPUStorageTextureBindingLayout, js_setAccess, js_getAccess, js_setFormat, js_getFormat, js_setViewDimension, js_getViewDimension, newGPUStorageTextureBindingLayout, setAccess, getAccess, getAccessUnsafe, getAccessUnchecked, setFormat, getFormat, setViewDimension, getViewDimension, getViewDimensionUnsafe, getViewDimensionUnchecked, GPUStorageTextureBindingLayout(..), gTypeGPUStorageTextureBindingLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"format\": $1}); })"
+        js_newGPUStorageTextureBindingLayout :: JSVal -> IO GPUStorageTextureBindingLayout
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpustoragetexturebindinglayout GPUStorageTextureBindingLayout specification>
+newGPUStorageTextureBindingLayout :: (MonadDOM m) => GPUTextureFormat -> m GPUStorageTextureBindingLayout
+newGPUStorageTextureBindingLayout format = liftDOM (((toJSVal format) >>= \a1' -> js_newGPUStorageTextureBindingLayout a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"access\"] = $2; })"
+        js_setAccess :: GPUStorageTextureBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-access GPUStorageTextureBindingLayout.access specification>
+setAccess :: (MonadDOM m) => GPUStorageTextureBindingLayout -> GPUStorageTextureAccess -> m ()
+setAccess self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAccess (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"access\"]; })"
+        js_getAccess :: GPUStorageTextureBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-access GPUStorageTextureBindingLayout.access specification>
+getAccess :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m (Maybe GPUStorageTextureAccess)
+getAccess self = liftDOM (((js_getAccess (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-access GPUStorageTextureBindingLayout.access specification>
+getAccessUnsafe :: (MonadDOM m, HasCallStack) => GPUStorageTextureBindingLayout -> m GPUStorageTextureAccess
+getAccessUnsafe self = liftDOM ((((js_getAccess (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-access GPUStorageTextureBindingLayout.access specification>
+getAccessUnchecked :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m GPUStorageTextureAccess
+getAccessUnchecked self = liftDOM ((pFromJSVal <$> (js_getAccess (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: GPUStorageTextureBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-format GPUStorageTextureBindingLayout.format specification>
+setFormat :: (MonadDOM m) => GPUStorageTextureBindingLayout -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUStorageTextureBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-format GPUStorageTextureBindingLayout.format specification>
+getFormat :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m GPUTextureFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"viewDimension\"] = $2; })"
+        js_setViewDimension :: GPUStorageTextureBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-viewdimension GPUStorageTextureBindingLayout.viewDimension specification>
+setViewDimension :: (MonadDOM m) => GPUStorageTextureBindingLayout -> GPUTextureViewDimension -> m ()
+setViewDimension self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setViewDimension (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewDimension\"]; })"
+        js_getViewDimension :: GPUStorageTextureBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-viewdimension GPUStorageTextureBindingLayout.viewDimension specification>
+getViewDimension :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m (Maybe GPUTextureViewDimension)
+getViewDimension self = liftDOM (((js_getViewDimension (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-viewdimension GPUStorageTextureBindingLayout.viewDimension specification>
+getViewDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUStorageTextureBindingLayout -> m GPUTextureViewDimension
+getViewDimensionUnsafe self = liftDOM ((((js_getViewDimension (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-viewdimension GPUStorageTextureBindingLayout.viewDimension specification>
+getViewDimensionUnchecked :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m GPUTextureViewDimension
+getViewDimensionUnchecked self = liftDOM ((pFromJSVal <$> (js_getViewDimension (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUSupportedFeatures.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUSupportedFeatures.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUSupportedFeatures.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUSupportedFeatures
+       (GPUSupportedFeatures(..), gTypeGPUSupportedFeatures)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUSupportedLimits.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUSupportedLimits.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUSupportedLimits.hs
@@ -0,0 +1,227 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUSupportedLimits
+       (js_getMaxTextureDimension1D, js_getMaxTextureDimension2D, js_getMaxTextureDimension3D, js_getMaxTextureArrayLayers, js_getMaxBindGroups, js_getMaxBindGroupsPlusVertexBuffers, js_getMaxBindingsPerBindGroup, js_getMaxDynamicUniformBuffersPerPipelineLayout, js_getMaxDynamicStorageBuffersPerPipelineLayout, js_getMaxSampledTexturesPerShaderStage, js_getMaxSamplersPerShaderStage, js_getMaxStorageBuffersPerShaderStage, js_getMaxStorageBuffersInVertexStage, js_getMaxStorageBuffersInFragmentStage, js_getMaxStorageTexturesPerShaderStage, js_getMaxStorageTexturesInVertexStage, js_getMaxStorageTexturesInFragmentStage, js_getMaxUniformBuffersPerShaderStage, js_getMaxUniformBufferBindingSize, js_getMaxStorageBufferBindingSize, js_getMinUniformBufferOffsetAlignment, js_getMinStorageBufferOffsetAlignment, js_getMaxVertexBuffers, js_getMaxBufferSize, js_getMaxVertexAttributes, js_getMaxVertexBufferArrayStride, js_getMaxInterStageShaderVariables, js_getMaxColorAttachments, js_getMaxColorAttachmentBytesPerSample, js_getMaxComputeWorkgroupStorageSize, js_getMaxComputeInvocationsPerWorkgroup, js_getMaxComputeWorkgroupSizeX, js_getMaxComputeWorkgroupSizeY, js_getMaxComputeWorkgroupSizeZ, js_getMaxComputeWorkgroupsPerDimension, getMaxTextureDimension1D, getMaxTextureDimension2D, getMaxTextureDimension3D, getMaxTextureArrayLayers, getMaxBindGroups, getMaxBindGroupsPlusVertexBuffers, getMaxBindingsPerBindGroup, getMaxDynamicUniformBuffersPerPipelineLayout, getMaxDynamicStorageBuffersPerPipelineLayout, getMaxSampledTexturesPerShaderStage, getMaxSamplersPerShaderStage, getMaxStorageBuffersPerShaderStage, getMaxStorageBuffersInVertexStage, getMaxStorageBuffersInFragmentStage, getMaxStorageTexturesPerShaderStage, getMaxStorageTexturesInVertexStage, getMaxStorageTexturesInFragmentStage, getMaxUniformBuffersPerShaderStage, getMaxUniformBufferBindingSize, getMaxStorageBufferBindingSize, getMinUniformBufferOffsetAlignment, getMinStorageBufferOffsetAlignment, getMaxVertexBuffers, getMaxBufferSize, getMaxVertexAttributes, getMaxVertexBufferArrayStride, getMaxInterStageShaderVariables, getMaxColorAttachments, getMaxColorAttachmentBytesPerSample, getMaxComputeWorkgroupStorageSize, getMaxComputeInvocationsPerWorkgroup, getMaxComputeWorkgroupSizeX, getMaxComputeWorkgroupSizeY, getMaxComputeWorkgroupSizeZ, getMaxComputeWorkgroupsPerDimension, GPUSupportedLimits(..), gTypeGPUSupportedLimits)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxTextureDimension1D\"]; })"
+        js_getMaxTextureDimension1D :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureDimension1D documentation>
+getMaxTextureDimension1D :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureDimension1D self = liftDOM ((js_getMaxTextureDimension1D (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxTextureDimension2D\"]; })"
+        js_getMaxTextureDimension2D :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureDimension2D documentation>
+getMaxTextureDimension2D :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureDimension2D self = liftDOM ((js_getMaxTextureDimension2D (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxTextureDimension3D\"]; })"
+        js_getMaxTextureDimension3D :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureDimension3D documentation>
+getMaxTextureDimension3D :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureDimension3D self = liftDOM ((js_getMaxTextureDimension3D (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxTextureArrayLayers\"]; })"
+        js_getMaxTextureArrayLayers :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureArrayLayers documentation>
+getMaxTextureArrayLayers :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureArrayLayers self = liftDOM ((js_getMaxTextureArrayLayers (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxBindGroups\"]; })"
+        js_getMaxBindGroups :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBindGroups documentation>
+getMaxBindGroups :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxBindGroups self = liftDOM ((js_getMaxBindGroups (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxBindGroupsPlusVertexBuffers\"]; })"
+        js_getMaxBindGroupsPlusVertexBuffers :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBindGroupsPlusVertexBuffers documentation>
+getMaxBindGroupsPlusVertexBuffers :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxBindGroupsPlusVertexBuffers self = liftDOM ((js_getMaxBindGroupsPlusVertexBuffers (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxBindingsPerBindGroup\"]; })"
+        js_getMaxBindingsPerBindGroup :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBindingsPerBindGroup documentation>
+getMaxBindingsPerBindGroup :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxBindingsPerBindGroup self = liftDOM ((js_getMaxBindingsPerBindGroup (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxDynamicUniformBuffersPerPipelineLayout\"]; })"
+        js_getMaxDynamicUniformBuffersPerPipelineLayout :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxDynamicUniformBuffersPerPipelineLayout documentation>
+getMaxDynamicUniformBuffersPerPipelineLayout :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxDynamicUniformBuffersPerPipelineLayout self = liftDOM ((js_getMaxDynamicUniformBuffersPerPipelineLayout (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxDynamicStorageBuffersPerPipelineLayout\"]; })"
+        js_getMaxDynamicStorageBuffersPerPipelineLayout :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxDynamicStorageBuffersPerPipelineLayout documentation>
+getMaxDynamicStorageBuffersPerPipelineLayout :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxDynamicStorageBuffersPerPipelineLayout self = liftDOM ((js_getMaxDynamicStorageBuffersPerPipelineLayout (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxSampledTexturesPerShaderStage\"]; })"
+        js_getMaxSampledTexturesPerShaderStage :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxSampledTexturesPerShaderStage documentation>
+getMaxSampledTexturesPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxSampledTexturesPerShaderStage self = liftDOM ((js_getMaxSampledTexturesPerShaderStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxSamplersPerShaderStage\"]; })"
+        js_getMaxSamplersPerShaderStage :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxSamplersPerShaderStage documentation>
+getMaxSamplersPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxSamplersPerShaderStage self = liftDOM ((js_getMaxSamplersPerShaderStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxStorageBuffersPerShaderStage\"]; })"
+        js_getMaxStorageBuffersPerShaderStage :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxStorageBuffersPerShaderStage documentation>
+getMaxStorageBuffersPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageBuffersPerShaderStage self = liftDOM ((js_getMaxStorageBuffersPerShaderStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxStorageBuffersInVertexStage\"]; })"
+        js_getMaxStorageBuffersInVertexStage :: GPUSupportedLimits -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebuffersinvertexstage GPUSupportedLimits.maxStorageBuffersInVertexStage specification>
+getMaxStorageBuffersInVertexStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageBuffersInVertexStage self = liftDOM ((js_getMaxStorageBuffersInVertexStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxStorageBuffersInFragmentStage\"]; })"
+        js_getMaxStorageBuffersInFragmentStage :: GPUSupportedLimits -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebuffersinfragmentstage GPUSupportedLimits.maxStorageBuffersInFragmentStage specification>
+getMaxStorageBuffersInFragmentStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageBuffersInFragmentStage self = liftDOM ((js_getMaxStorageBuffersInFragmentStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxStorageTexturesPerShaderStage\"]; })"
+        js_getMaxStorageTexturesPerShaderStage :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxStorageTexturesPerShaderStage documentation>
+getMaxStorageTexturesPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageTexturesPerShaderStage self = liftDOM ((js_getMaxStorageTexturesPerShaderStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxStorageTexturesInVertexStage\"]; })"
+        js_getMaxStorageTexturesInVertexStage :: GPUSupportedLimits -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragetexturesinvertexstage GPUSupportedLimits.maxStorageTexturesInVertexStage specification>
+getMaxStorageTexturesInVertexStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageTexturesInVertexStage self = liftDOM ((js_getMaxStorageTexturesInVertexStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxStorageTexturesInFragmentStage\"]; })"
+        js_getMaxStorageTexturesInFragmentStage :: GPUSupportedLimits -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragetexturesinfragmentstage GPUSupportedLimits.maxStorageTexturesInFragmentStage specification>
+getMaxStorageTexturesInFragmentStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageTexturesInFragmentStage self = liftDOM ((js_getMaxStorageTexturesInFragmentStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxUniformBuffersPerShaderStage\"]; })"
+        js_getMaxUniformBuffersPerShaderStage :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxUniformBuffersPerShaderStage documentation>
+getMaxUniformBuffersPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxUniformBuffersPerShaderStage self = liftDOM ((js_getMaxUniformBuffersPerShaderStage (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxUniformBufferBindingSize\"]; })"
+        js_getMaxUniformBufferBindingSize :: GPUSupportedLimits -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxUniformBufferBindingSize documentation>
+getMaxUniformBufferBindingSize :: (MonadDOM m) => GPUSupportedLimits -> m Word53
+getMaxUniformBufferBindingSize self = liftDOM (((js_getMaxUniformBufferBindingSize (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxStorageBufferBindingSize\"]; })"
+        js_getMaxStorageBufferBindingSize :: GPUSupportedLimits -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxStorageBufferBindingSize documentation>
+getMaxStorageBufferBindingSize :: (MonadDOM m) => GPUSupportedLimits -> m Word53
+getMaxStorageBufferBindingSize self = liftDOM (((js_getMaxStorageBufferBindingSize (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minUniformBufferOffsetAlignment\"]; })"
+        js_getMinUniformBufferOffsetAlignment :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.minUniformBufferOffsetAlignment documentation>
+getMinUniformBufferOffsetAlignment :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMinUniformBufferOffsetAlignment self = liftDOM ((js_getMinUniformBufferOffsetAlignment (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minStorageBufferOffsetAlignment\"]; })"
+        js_getMinStorageBufferOffsetAlignment :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.minStorageBufferOffsetAlignment documentation>
+getMinStorageBufferOffsetAlignment :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMinStorageBufferOffsetAlignment self = liftDOM ((js_getMinStorageBufferOffsetAlignment (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxVertexBuffers\"]; })"
+        js_getMaxVertexBuffers :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxVertexBuffers documentation>
+getMaxVertexBuffers :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxVertexBuffers self = liftDOM ((js_getMaxVertexBuffers (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxBufferSize\"]; })"
+        js_getMaxBufferSize :: GPUSupportedLimits -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBufferSize documentation>
+getMaxBufferSize :: (MonadDOM m) => GPUSupportedLimits -> m Word53
+getMaxBufferSize self = liftDOM (((js_getMaxBufferSize (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxVertexAttributes\"]; })"
+        js_getMaxVertexAttributes :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxVertexAttributes documentation>
+getMaxVertexAttributes :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxVertexAttributes self = liftDOM ((js_getMaxVertexAttributes (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxVertexBufferArrayStride\"]; })"
+        js_getMaxVertexBufferArrayStride :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxVertexBufferArrayStride documentation>
+getMaxVertexBufferArrayStride :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxVertexBufferArrayStride self = liftDOM ((js_getMaxVertexBufferArrayStride (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxInterStageShaderVariables\"]; })"
+        js_getMaxInterStageShaderVariables :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxInterStageShaderVariables documentation>
+getMaxInterStageShaderVariables :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxInterStageShaderVariables self = liftDOM ((js_getMaxInterStageShaderVariables (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxColorAttachments\"]; })"
+        js_getMaxColorAttachments :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxColorAttachments documentation>
+getMaxColorAttachments :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxColorAttachments self = liftDOM ((js_getMaxColorAttachments (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxColorAttachmentBytesPerSample\"]; })"
+        js_getMaxColorAttachmentBytesPerSample :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxColorAttachmentBytesPerSample documentation>
+getMaxColorAttachmentBytesPerSample :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxColorAttachmentBytesPerSample self = liftDOM ((js_getMaxColorAttachmentBytesPerSample (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxComputeWorkgroupStorageSize\"]; })"
+        js_getMaxComputeWorkgroupStorageSize :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupStorageSize documentation>
+getMaxComputeWorkgroupStorageSize :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupStorageSize self = liftDOM ((js_getMaxComputeWorkgroupStorageSize (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxComputeInvocationsPerWorkgroup\"]; })"
+        js_getMaxComputeInvocationsPerWorkgroup :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeInvocationsPerWorkgroup documentation>
+getMaxComputeInvocationsPerWorkgroup :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeInvocationsPerWorkgroup self = liftDOM ((js_getMaxComputeInvocationsPerWorkgroup (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxComputeWorkgroupSizeX\"]; })"
+        js_getMaxComputeWorkgroupSizeX :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupSizeX documentation>
+getMaxComputeWorkgroupSizeX :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupSizeX self = liftDOM ((js_getMaxComputeWorkgroupSizeX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxComputeWorkgroupSizeY\"]; })"
+        js_getMaxComputeWorkgroupSizeY :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupSizeY documentation>
+getMaxComputeWorkgroupSizeY :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupSizeY self = liftDOM ((js_getMaxComputeWorkgroupSizeY (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxComputeWorkgroupSizeZ\"]; })"
+        js_getMaxComputeWorkgroupSizeZ :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupSizeZ documentation>
+getMaxComputeWorkgroupSizeZ :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupSizeZ self = liftDOM ((js_getMaxComputeWorkgroupSizeZ (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxComputeWorkgroupsPerDimension\"]; })"
+        js_getMaxComputeWorkgroupsPerDimension :: GPUSupportedLimits -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupsPerDimension documentation>
+getMaxComputeWorkgroupsPerDimension :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupsPerDimension self = liftDOM ((js_getMaxComputeWorkgroupsPerDimension (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyBufferInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyBufferInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyBufferInfo.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTexelCopyBufferInfo
+       (js_newGPUTexelCopyBufferInfo, js_setBuffer, js_getBuffer, newGPUTexelCopyBufferInfo, setBuffer, getBuffer, GPUTexelCopyBufferInfo(..), gTypeGPUTexelCopyBufferInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"buffer\": $1}); })"
+        js_newGPUTexelCopyBufferInfo :: GPUBuffer -> IO GPUTexelCopyBufferInfo
+-- | <https://gpuweb.github.io/gpuweb/#gputexelcopybufferinfo GPUTexelCopyBufferInfo specification>
+newGPUTexelCopyBufferInfo :: (MonadDOM m) => GPUBuffer -> m GPUTexelCopyBufferInfo
+newGPUTexelCopyBufferInfo buffer = liftDOM ((js_newGPUTexelCopyBufferInfo (buffer)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer :: GPUTexelCopyBufferInfo -> GPUBuffer -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferinfo-buffer GPUTexelCopyBufferInfo.buffer specification>
+setBuffer :: (MonadDOM m) => GPUTexelCopyBufferInfo -> GPUBuffer -> m ()
+setBuffer self val = liftDOM (void ((js_setBuffer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })"
+        js_getBuffer :: GPUTexelCopyBufferInfo -> IO GPUBuffer
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferinfo-buffer GPUTexelCopyBufferInfo.buffer specification>
+getBuffer :: (MonadDOM m) => GPUTexelCopyBufferInfo -> m GPUBuffer
+getBuffer self = liftDOM ((js_getBuffer (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyBufferLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyBufferLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyBufferLayout.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTexelCopyBufferLayout
+       (js_newGPUTexelCopyBufferLayout, js_setOffset, js_getOffset, js_setBytesPerRow, js_getBytesPerRow, js_setRowsPerImage, js_getRowsPerImage, newGPUTexelCopyBufferLayout, setOffset, getOffset, getOffsetUnsafe, getOffsetUnchecked, setBytesPerRow, getBytesPerRow, getBytesPerRowUnsafe, getBytesPerRowUnchecked, setRowsPerImage, getRowsPerImage, getRowsPerImageUnsafe, getRowsPerImageUnchecked, GPUTexelCopyBufferLayout(..), gTypeGPUTexelCopyBufferLayout, IsGPUTexelCopyBufferLayout, toGPUTexelCopyBufferLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUTexelCopyBufferLayout :: IO GPUTexelCopyBufferLayout
+-- | <https://gpuweb.github.io/gpuweb/#gputexelcopybufferlayout GPUTexelCopyBufferLayout specification>
+newGPUTexelCopyBufferLayout :: (MonadDOM m) => m GPUTexelCopyBufferLayout
+newGPUTexelCopyBufferLayout = liftDOM ((js_newGPUTexelCopyBufferLayout))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offset\"] = $2; })"
+        js_setOffset :: GPUTexelCopyBufferLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-offset GPUTexelCopyBufferLayout.offset specification>
+setOffset :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> Word53 -> m ()
+setOffset self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOffset ((Types.toGPUTexelCopyBufferLayout self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: GPUTexelCopyBufferLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-offset GPUTexelCopyBufferLayout.offset specification>
+getOffset :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m (Maybe Word53)
+getOffset self = liftDOM (((js_getOffset ((Types.toGPUTexelCopyBufferLayout self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-offset GPUTexelCopyBufferLayout.offset specification>
+getOffsetUnsafe :: (MonadDOM m, IsGPUTexelCopyBufferLayout self, HasCallStack) => self -> m Word53
+getOffsetUnsafe self = liftDOM ((((js_getOffset ((Types.toGPUTexelCopyBufferLayout self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-offset GPUTexelCopyBufferLayout.offset specification>
+getOffsetUnchecked :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m Word53
+getOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getOffset ((Types.toGPUTexelCopyBufferLayout self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesPerRow\"] = $2; })"
+        js_setBytesPerRow :: GPUTexelCopyBufferLayout -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-bytesperrow GPUTexelCopyBufferLayout.bytesPerRow specification>
+setBytesPerRow :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> Word -> m ()
+setBytesPerRow self val = liftDOM (void ((js_setBytesPerRow ((Types.toGPUTexelCopyBufferLayout self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesPerRow\"]; })"
+        js_getBytesPerRow :: GPUTexelCopyBufferLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-bytesperrow GPUTexelCopyBufferLayout.bytesPerRow specification>
+getBytesPerRow :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m (Maybe Word)
+getBytesPerRow self = liftDOM (((js_getBytesPerRow ((Types.toGPUTexelCopyBufferLayout self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-bytesperrow GPUTexelCopyBufferLayout.bytesPerRow specification>
+getBytesPerRowUnsafe :: (MonadDOM m, IsGPUTexelCopyBufferLayout self, HasCallStack) => self -> m Word
+getBytesPerRowUnsafe self = liftDOM ((((js_getBytesPerRow ((Types.toGPUTexelCopyBufferLayout self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-bytesperrow GPUTexelCopyBufferLayout.bytesPerRow specification>
+getBytesPerRowUnchecked :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m Word
+getBytesPerRowUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesPerRow ((Types.toGPUTexelCopyBufferLayout self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rowsPerImage\"] = $2; })"
+        js_setRowsPerImage :: GPUTexelCopyBufferLayout -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-rowsperimage GPUTexelCopyBufferLayout.rowsPerImage specification>
+setRowsPerImage :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> Word -> m ()
+setRowsPerImage self val = liftDOM (void ((js_setRowsPerImage ((Types.toGPUTexelCopyBufferLayout self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rowsPerImage\"]; })"
+        js_getRowsPerImage :: GPUTexelCopyBufferLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-rowsperimage GPUTexelCopyBufferLayout.rowsPerImage specification>
+getRowsPerImage :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m (Maybe Word)
+getRowsPerImage self = liftDOM (((js_getRowsPerImage ((Types.toGPUTexelCopyBufferLayout self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-rowsperimage GPUTexelCopyBufferLayout.rowsPerImage specification>
+getRowsPerImageUnsafe :: (MonadDOM m, IsGPUTexelCopyBufferLayout self, HasCallStack) => self -> m Word
+getRowsPerImageUnsafe self = liftDOM ((((js_getRowsPerImage ((Types.toGPUTexelCopyBufferLayout self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-rowsperimage GPUTexelCopyBufferLayout.rowsPerImage specification>
+getRowsPerImageUnchecked :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m Word
+getRowsPerImageUnchecked self = liftDOM ((pFromJSVal <$> (js_getRowsPerImage ((Types.toGPUTexelCopyBufferLayout self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyTextureInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyTextureInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTexelCopyTextureInfo.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTexelCopyTextureInfo
+       (js_newGPUTexelCopyTextureInfo, js_setTexture, js_getTexture, js_setMipLevel, js_getMipLevel, js_setOrigin, js_getOrigin, js_setAspect, js_getAspect, newGPUTexelCopyTextureInfo, setTexture, getTexture, setMipLevel, getMipLevel, getMipLevelUnsafe, getMipLevelUnchecked, setOrigin, getOrigin, getOriginUnsafe, getOriginUnchecked, setAspect, getAspect, getAspectUnsafe, getAspectUnchecked, GPUTexelCopyTextureInfo(..), gTypeGPUTexelCopyTextureInfo, IsGPUTexelCopyTextureInfo, toGPUTexelCopyTextureInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"texture\": $1}); })"
+        js_newGPUTexelCopyTextureInfo :: GPUTexture -> IO GPUTexelCopyTextureInfo
+-- | <https://gpuweb.github.io/gpuweb/#gputexelcopytextureinfo GPUTexelCopyTextureInfo specification>
+newGPUTexelCopyTextureInfo :: (MonadDOM m) => GPUTexture -> m GPUTexelCopyTextureInfo
+newGPUTexelCopyTextureInfo texture = liftDOM ((js_newGPUTexelCopyTextureInfo (texture)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"texture\"] = $2; })"
+        js_setTexture :: GPUTexelCopyTextureInfo -> GPUTexture -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-texture GPUTexelCopyTextureInfo.texture specification>
+setTexture :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> GPUTexture -> m ()
+setTexture self val = liftDOM (void ((js_setTexture ((Types.toGPUTexelCopyTextureInfo self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"texture\"]; })"
+        js_getTexture :: GPUTexelCopyTextureInfo -> IO GPUTexture
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-texture GPUTexelCopyTextureInfo.texture specification>
+getTexture :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m GPUTexture
+getTexture self = liftDOM ((js_getTexture ((Types.toGPUTexelCopyTextureInfo self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mipLevel\"] = $2; })"
+        js_setMipLevel :: GPUTexelCopyTextureInfo -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-miplevel GPUTexelCopyTextureInfo.mipLevel specification>
+setMipLevel :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> Word -> m ()
+setMipLevel self val = liftDOM (void ((js_setMipLevel ((Types.toGPUTexelCopyTextureInfo self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mipLevel\"]; })"
+        js_getMipLevel :: GPUTexelCopyTextureInfo -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-miplevel GPUTexelCopyTextureInfo.mipLevel specification>
+getMipLevel :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m (Maybe Word)
+getMipLevel self = liftDOM (((js_getMipLevel ((Types.toGPUTexelCopyTextureInfo self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-miplevel GPUTexelCopyTextureInfo.mipLevel specification>
+getMipLevelUnsafe :: (MonadDOM m, IsGPUTexelCopyTextureInfo self, HasCallStack) => self -> m Word
+getMipLevelUnsafe self = liftDOM ((((js_getMipLevel ((Types.toGPUTexelCopyTextureInfo self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-miplevel GPUTexelCopyTextureInfo.mipLevel specification>
+getMipLevelUnchecked :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m Word
+getMipLevelUnchecked self = liftDOM ((pFromJSVal <$> (js_getMipLevel ((Types.toGPUTexelCopyTextureInfo self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"origin\"] = $2; })"
+        js_setOrigin :: GPUTexelCopyTextureInfo -> GPUOrigin3D -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-origin GPUTexelCopyTextureInfo.origin specification>
+setOrigin :: (MonadDOM m, IsGPUTexelCopyTextureInfo self, IsGPUOrigin3D val) => self -> val -> m ()
+setOrigin self val = liftDOM (void ((js_setOrigin ((Types.toGPUTexelCopyTextureInfo self)) (Types.toGPUOrigin3D val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: GPUTexelCopyTextureInfo -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-origin GPUTexelCopyTextureInfo.origin specification>
+getOrigin :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m (Maybe GPUOrigin3D)
+getOrigin self = liftDOM (((js_getOrigin ((Types.toGPUTexelCopyTextureInfo self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-origin GPUTexelCopyTextureInfo.origin specification>
+getOriginUnsafe :: (MonadDOM m, IsGPUTexelCopyTextureInfo self, HasCallStack) => self -> m GPUOrigin3D
+getOriginUnsafe self = liftDOM ((((js_getOrigin ((Types.toGPUTexelCopyTextureInfo self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-origin GPUTexelCopyTextureInfo.origin specification>
+getOriginUnchecked :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m GPUOrigin3D
+getOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrigin ((Types.toGPUTexelCopyTextureInfo self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"aspect\"] = $2; })"
+        js_setAspect :: GPUTexelCopyTextureInfo -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-aspect GPUTexelCopyTextureInfo.aspect specification>
+setAspect :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> GPUTextureAspect -> m ()
+setAspect self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAspect ((Types.toGPUTexelCopyTextureInfo self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aspect\"]; })"
+        js_getAspect :: GPUTexelCopyTextureInfo -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-aspect GPUTexelCopyTextureInfo.aspect specification>
+getAspect :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m (Maybe GPUTextureAspect)
+getAspect self = liftDOM (((js_getAspect ((Types.toGPUTexelCopyTextureInfo self))) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-aspect GPUTexelCopyTextureInfo.aspect specification>
+getAspectUnsafe :: (MonadDOM m, IsGPUTexelCopyTextureInfo self, HasCallStack) => self -> m GPUTextureAspect
+getAspectUnsafe self = liftDOM ((((js_getAspect ((Types.toGPUTexelCopyTextureInfo self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-aspect GPUTexelCopyTextureInfo.aspect specification>
+getAspectUnchecked :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m GPUTextureAspect
+getAspectUnchecked self = liftDOM ((pFromJSVal <$> (js_getAspect ((Types.toGPUTexelCopyTextureInfo self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTexture.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTexture
+       (js_createView, js_destroy, js_getWidth, js_getHeight, js_getDepthOrArrayLayers, js_getMipLevelCount, js_getSampleCount, js_getDimension, js_getFormat, js_getUsage, createView, createView_, destroy, getWidth, getHeight, getDepthOrArrayLayers, getMipLevelCount, getSampleCount, getDimension, getFormat, getUsage, GPUTexture(..), gTypeGPUTexture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createView\"]($2); })"
+        js_createView :: GPUTexture -> JSVal -> IO GPUTextureView
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/createView MDN GPUTexture.createView documentation>
+createView :: (MonadDOM m) => GPUTexture -> Maybe GPUTextureViewDescriptor -> m GPUTextureView
+createView self descriptor = liftDOM (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_createView (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/createView MDN GPUTexture.createView documentation>
+createView_ :: (MonadDOM m) => GPUTexture -> Maybe GPUTextureViewDescriptor -> m ()
+createView_ self descriptor = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal descriptor) >>= \a2' -> js_createView (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"destroy\"](); })"
+        js_destroy :: GPUTexture -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/destroy MDN GPUTexture.destroy documentation>
+destroy :: (MonadDOM m) => GPUTexture -> m ()
+destroy self = liftDOM (void ((js_destroy (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: GPUTexture -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/width MDN GPUTexture.width documentation>
+getWidth :: (MonadDOM m) => GPUTexture -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: GPUTexture -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/height MDN GPUTexture.height documentation>
+getHeight :: (MonadDOM m) => GPUTexture -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depthOrArrayLayers\"]; })"
+        js_getDepthOrArrayLayers :: GPUTexture -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/depthOrArrayLayers MDN GPUTexture.depthOrArrayLayers documentation>
+getDepthOrArrayLayers :: (MonadDOM m) => GPUTexture -> m Word
+getDepthOrArrayLayers self = liftDOM ((js_getDepthOrArrayLayers (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mipLevelCount\"]; })"
+        js_getMipLevelCount :: GPUTexture -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/mipLevelCount MDN GPUTexture.mipLevelCount documentation>
+getMipLevelCount :: (MonadDOM m) => GPUTexture -> m Word
+getMipLevelCount self = liftDOM ((js_getMipLevelCount (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleCount\"]; })"
+        js_getSampleCount :: GPUTexture -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/sampleCount MDN GPUTexture.sampleCount documentation>
+getSampleCount :: (MonadDOM m) => GPUTexture -> m Word
+getSampleCount self = liftDOM ((js_getSampleCount (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dimension\"]; })"
+        js_getDimension :: GPUTexture -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/dimension MDN GPUTexture.dimension documentation>
+getDimension :: (MonadDOM m) => GPUTexture -> m GPUTextureDimension
+getDimension self = liftDOM (((js_getDimension (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUTexture -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/format MDN GPUTexture.format documentation>
+getFormat :: (MonadDOM m) => GPUTexture -> m GPUTextureFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })"
+        js_getUsage :: GPUTexture -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/usage MDN GPUTexture.usage documentation>
+getUsage :: (MonadDOM m) => GPUTexture -> m Word
+getUsage self = liftDOM ((js_getUsage (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTextureBindingLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureBindingLayout.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTextureBindingLayout
+       (js_newGPUTextureBindingLayout, js_setSampleType, js_getSampleType, js_setViewDimension, js_getViewDimension, js_setMultisampled, js_getMultisampled, newGPUTextureBindingLayout, setSampleType, getSampleType, getSampleTypeUnsafe, getSampleTypeUnchecked, setViewDimension, getViewDimension, getViewDimensionUnsafe, getViewDimensionUnchecked, setMultisampled, getMultisampled, getMultisampledUnsafe, getMultisampledUnchecked, GPUTextureBindingLayout(..), gTypeGPUTextureBindingLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUTextureBindingLayout :: IO GPUTextureBindingLayout
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gputexturebindinglayout GPUTextureBindingLayout specification>
+newGPUTextureBindingLayout :: (MonadDOM m) => m GPUTextureBindingLayout
+newGPUTextureBindingLayout = liftDOM ((js_newGPUTextureBindingLayout))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleType\"] = $2; })"
+        js_setSampleType :: GPUTextureBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-sampletype GPUTextureBindingLayout.sampleType specification>
+setSampleType :: (MonadDOM m) => GPUTextureBindingLayout -> GPUTextureSampleType -> m ()
+setSampleType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSampleType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleType\"]; })"
+        js_getSampleType :: GPUTextureBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-sampletype GPUTextureBindingLayout.sampleType specification>
+getSampleType :: (MonadDOM m) => GPUTextureBindingLayout -> m (Maybe GPUTextureSampleType)
+getSampleType self = liftDOM (((js_getSampleType (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-sampletype GPUTextureBindingLayout.sampleType specification>
+getSampleTypeUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureBindingLayout -> m GPUTextureSampleType
+getSampleTypeUnsafe self = liftDOM ((((js_getSampleType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-sampletype GPUTextureBindingLayout.sampleType specification>
+getSampleTypeUnchecked :: (MonadDOM m) => GPUTextureBindingLayout -> m GPUTextureSampleType
+getSampleTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"viewDimension\"] = $2; })"
+        js_setViewDimension :: GPUTextureBindingLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-viewdimension GPUTextureBindingLayout.viewDimension specification>
+setViewDimension :: (MonadDOM m) => GPUTextureBindingLayout -> GPUTextureViewDimension -> m ()
+setViewDimension self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setViewDimension (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewDimension\"]; })"
+        js_getViewDimension :: GPUTextureBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-viewdimension GPUTextureBindingLayout.viewDimension specification>
+getViewDimension :: (MonadDOM m) => GPUTextureBindingLayout -> m (Maybe GPUTextureViewDimension)
+getViewDimension self = liftDOM (((js_getViewDimension (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-viewdimension GPUTextureBindingLayout.viewDimension specification>
+getViewDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureBindingLayout -> m GPUTextureViewDimension
+getViewDimensionUnsafe self = liftDOM ((((js_getViewDimension (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-viewdimension GPUTextureBindingLayout.viewDimension specification>
+getViewDimensionUnchecked :: (MonadDOM m) => GPUTextureBindingLayout -> m GPUTextureViewDimension
+getViewDimensionUnchecked self = liftDOM ((pFromJSVal <$> (js_getViewDimension (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"multisampled\"] = $2; })"
+        js_setMultisampled :: GPUTextureBindingLayout -> Bool -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-multisampled GPUTextureBindingLayout.multisampled specification>
+setMultisampled :: (MonadDOM m) => GPUTextureBindingLayout -> Bool -> m ()
+setMultisampled self val = liftDOM (void ((js_setMultisampled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"multisampled\"]; })"
+        js_getMultisampled :: GPUTextureBindingLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-multisampled GPUTextureBindingLayout.multisampled specification>
+getMultisampled :: (MonadDOM m) => GPUTextureBindingLayout -> m (Maybe Bool)
+getMultisampled self = liftDOM (((js_getMultisampled (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-multisampled GPUTextureBindingLayout.multisampled specification>
+getMultisampledUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureBindingLayout -> m Bool
+getMultisampledUnsafe self = liftDOM ((((js_getMultisampled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-multisampled GPUTextureBindingLayout.multisampled specification>
+getMultisampledUnchecked :: (MonadDOM m) => GPUTextureBindingLayout -> m Bool
+getMultisampledUnchecked self = liftDOM ((pFromJSVal <$> (js_getMultisampled (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTextureDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureDescriptor.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTextureDescriptor
+       (js_newGPUTextureDescriptor, js_setSize, js_getSize, js_setMipLevelCount, js_getMipLevelCount, js_setSampleCount, js_getSampleCount, js_setDimension, js_getDimension, js_setFormat, js_getFormat, js_setUsage, js_getUsage, js_setViewFormats, js_getViewFormats, js_setTextureBindingViewDimension, js_getTextureBindingViewDimension, newGPUTextureDescriptor, setSize, getSize, setMipLevelCount, getMipLevelCount, getMipLevelCountUnsafe, getMipLevelCountUnchecked, setSampleCount, getSampleCount, getSampleCountUnsafe, getSampleCountUnchecked, setDimension, getDimension, getDimensionUnsafe, getDimensionUnchecked, setFormat, getFormat, setUsage, getUsage, setViewFormats, getViewFormats, getViewFormatsUnsafe, getViewFormatsUnchecked, setTextureBindingViewDimension, getTextureBindingViewDimension, getTextureBindingViewDimensionUnsafe, getTextureBindingViewDimensionUnchecked, GPUTextureDescriptor(..), gTypeGPUTextureDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"size\": $1, \"format\": $2, \"usage\": $3}); })"
+        js_newGPUTextureDescriptor :: GPUExtent3D -> JSVal -> Word -> IO GPUTextureDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#gputexturedescriptor GPUTextureDescriptor specification>
+newGPUTextureDescriptor :: (MonadDOM m, IsGPUExtent3D size) => size -> GPUTextureFormat -> Word -> m GPUTextureDescriptor
+newGPUTextureDescriptor size format usage = liftDOM (((toJSVal format) >>= \a2' -> js_newGPUTextureDescriptor (Types.toGPUExtent3D size) a2' (usage)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: GPUTextureDescriptor -> GPUExtent3D -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-size GPUTextureDescriptor.size specification>
+setSize :: (MonadDOM m, IsGPUExtent3D val) => GPUTextureDescriptor -> val -> m ()
+setSize self val = liftDOM (void ((js_setSize (self) (Types.toGPUExtent3D val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: GPUTextureDescriptor -> IO GPUExtent3D
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-size GPUTextureDescriptor.size specification>
+getSize :: (MonadDOM m) => GPUTextureDescriptor -> m GPUExtent3D
+getSize self = liftDOM ((js_getSize (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mipLevelCount\"] = $2; })"
+        js_setMipLevelCount :: GPUTextureDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-miplevelcount GPUTextureDescriptor.mipLevelCount specification>
+setMipLevelCount :: (MonadDOM m) => GPUTextureDescriptor -> Word -> m ()
+setMipLevelCount self val = liftDOM (void ((js_setMipLevelCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mipLevelCount\"]; })"
+        js_getMipLevelCount :: GPUTextureDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-miplevelcount GPUTextureDescriptor.mipLevelCount specification>
+getMipLevelCount :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe Word)
+getMipLevelCount self = liftDOM (((js_getMipLevelCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-miplevelcount GPUTextureDescriptor.mipLevelCount specification>
+getMipLevelCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m Word
+getMipLevelCountUnsafe self = liftDOM ((((js_getMipLevelCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-miplevelcount GPUTextureDescriptor.mipLevelCount specification>
+getMipLevelCountUnchecked :: (MonadDOM m) => GPUTextureDescriptor -> m Word
+getMipLevelCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getMipLevelCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleCount\"] = $2; })"
+        js_setSampleCount :: GPUTextureDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-samplecount GPUTextureDescriptor.sampleCount specification>
+setSampleCount :: (MonadDOM m) => GPUTextureDescriptor -> Word -> m ()
+setSampleCount self val = liftDOM (void ((js_setSampleCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleCount\"]; })"
+        js_getSampleCount :: GPUTextureDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-samplecount GPUTextureDescriptor.sampleCount specification>
+getSampleCount :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe Word)
+getSampleCount self = liftDOM (((js_getSampleCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-samplecount GPUTextureDescriptor.sampleCount specification>
+getSampleCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m Word
+getSampleCountUnsafe self = liftDOM ((((js_getSampleCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-samplecount GPUTextureDescriptor.sampleCount specification>
+getSampleCountUnchecked :: (MonadDOM m) => GPUTextureDescriptor -> m Word
+getSampleCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dimension\"] = $2; })"
+        js_setDimension :: GPUTextureDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-dimension GPUTextureDescriptor.dimension specification>
+setDimension :: (MonadDOM m) => GPUTextureDescriptor -> GPUTextureDimension -> m ()
+setDimension self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDimension (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dimension\"]; })"
+        js_getDimension :: GPUTextureDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-dimension GPUTextureDescriptor.dimension specification>
+getDimension :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe GPUTextureDimension)
+getDimension self = liftDOM (((js_getDimension (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-dimension GPUTextureDescriptor.dimension specification>
+getDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m GPUTextureDimension
+getDimensionUnsafe self = liftDOM ((((js_getDimension (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-dimension GPUTextureDescriptor.dimension specification>
+getDimensionUnchecked :: (MonadDOM m) => GPUTextureDescriptor -> m GPUTextureDimension
+getDimensionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDimension (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: GPUTextureDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-format GPUTextureDescriptor.format specification>
+setFormat :: (MonadDOM m) => GPUTextureDescriptor -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUTextureDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-format GPUTextureDescriptor.format specification>
+getFormat :: (MonadDOM m) => GPUTextureDescriptor -> m GPUTextureFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usage\"] = $2; })"
+        js_setUsage :: GPUTextureDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-usage GPUTextureDescriptor.usage specification>
+setUsage :: (MonadDOM m) => GPUTextureDescriptor -> Word -> m ()
+setUsage self val = liftDOM (void ((js_setUsage (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })"
+        js_getUsage :: GPUTextureDescriptor -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-usage GPUTextureDescriptor.usage specification>
+getUsage :: (MonadDOM m) => GPUTextureDescriptor -> m Word
+getUsage self = liftDOM ((js_getUsage (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"viewFormats\"] = $2; })"
+        js_setViewFormats :: GPUTextureDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-viewformats GPUTextureDescriptor.viewFormats specification>
+setViewFormats :: (MonadDOM m) => GPUTextureDescriptor -> [GPUTextureFormat] -> m ()
+setViewFormats self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setViewFormats (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewFormats\"]; })"
+        js_getViewFormats :: GPUTextureDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-viewformats GPUTextureDescriptor.viewFormats specification>
+getViewFormats :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe [GPUTextureFormat])
+getViewFormats self = liftDOM (((js_getViewFormats (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-viewformats GPUTextureDescriptor.viewFormats specification>
+getViewFormatsUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m [GPUTextureFormat]
+getViewFormatsUnsafe self = liftDOM ((((js_getViewFormats (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-viewformats GPUTextureDescriptor.viewFormats specification>
+getViewFormatsUnchecked :: (MonadDOM m) => GPUTextureDescriptor -> m [GPUTextureFormat]
+getViewFormatsUnchecked self = liftDOM (((js_getViewFormats (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"textureBindingViewDimension\"] = $2; })"
+        js_setTextureBindingViewDimension :: GPUTextureDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-texturebindingviewdimension GPUTextureDescriptor.textureBindingViewDimension specification>
+setTextureBindingViewDimension :: (MonadDOM m) => GPUTextureDescriptor -> GPUTextureViewDimension -> m ()
+setTextureBindingViewDimension self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTextureBindingViewDimension (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"textureBindingViewDimension\"]; })"
+        js_getTextureBindingViewDimension :: GPUTextureDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-texturebindingviewdimension GPUTextureDescriptor.textureBindingViewDimension specification>
+getTextureBindingViewDimension :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe GPUTextureViewDimension)
+getTextureBindingViewDimension self = liftDOM (((js_getTextureBindingViewDimension (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-texturebindingviewdimension GPUTextureDescriptor.textureBindingViewDimension specification>
+getTextureBindingViewDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m GPUTextureViewDimension
+getTextureBindingViewDimensionUnsafe self = liftDOM ((((js_getTextureBindingViewDimension (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-texturebindingviewdimension GPUTextureDescriptor.textureBindingViewDimension specification>
+getTextureBindingViewDimensionUnchecked :: (MonadDOM m) => GPUTextureDescriptor -> m GPUTextureViewDimension
+getTextureBindingViewDimensionUnchecked self = liftDOM ((pFromJSVal <$> (js_getTextureBindingViewDimension (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTextureView.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureView.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureView.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTextureView
+       (GPUTextureView(..), gTypeGPUTextureView)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUTextureViewDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureViewDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUTextureViewDescriptor.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUTextureViewDescriptor
+       (js_newGPUTextureViewDescriptor, js_setFormat, js_getFormat, js_setDimension, js_getDimension, js_setUsage, js_getUsage, js_setAspect, js_getAspect, js_setBaseMipLevel, js_getBaseMipLevel, js_setMipLevelCount, js_getMipLevelCount, js_setBaseArrayLayer, js_getBaseArrayLayer, js_setArrayLayerCount, js_getArrayLayerCount, js_setSwizzle, js_getSwizzle, newGPUTextureViewDescriptor, setFormat, getFormat, getFormatUnsafe, getFormatUnchecked, setDimension, getDimension, getDimensionUnsafe, getDimensionUnchecked, setUsage, getUsage, getUsageUnsafe, getUsageUnchecked, setAspect, getAspect, getAspectUnsafe, getAspectUnchecked, setBaseMipLevel, getBaseMipLevel, getBaseMipLevelUnsafe, getBaseMipLevelUnchecked, setMipLevelCount, getMipLevelCount, getMipLevelCountUnsafe, getMipLevelCountUnchecked, setBaseArrayLayer, getBaseArrayLayer, getBaseArrayLayerUnsafe, getBaseArrayLayerUnchecked, setArrayLayerCount, getArrayLayerCount, getArrayLayerCountUnsafe, getArrayLayerCountUnchecked, setSwizzle, getSwizzle, getSwizzleUnsafe, getSwizzleUnchecked, GPUTextureViewDescriptor(..), gTypeGPUTextureViewDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGPUTextureViewDescriptor :: IO GPUTextureViewDescriptor
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gputextureviewdescriptor GPUTextureViewDescriptor specification>
+newGPUTextureViewDescriptor :: (MonadDOM m) => m GPUTextureViewDescriptor
+newGPUTextureViewDescriptor = liftDOM ((js_newGPUTextureViewDescriptor))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: GPUTextureViewDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-format GPUTextureViewDescriptor.format specification>
+setFormat :: (MonadDOM m) => GPUTextureViewDescriptor -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-format GPUTextureViewDescriptor.format specification>
+getFormat :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe GPUTextureFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-format GPUTextureViewDescriptor.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m GPUTextureFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-format GPUTextureViewDescriptor.format specification>
+getFormatUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m GPUTextureFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dimension\"] = $2; })"
+        js_setDimension :: GPUTextureViewDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-dimension GPUTextureViewDescriptor.dimension specification>
+setDimension :: (MonadDOM m) => GPUTextureViewDescriptor -> GPUTextureViewDimension -> m ()
+setDimension self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDimension (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dimension\"]; })"
+        js_getDimension :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-dimension GPUTextureViewDescriptor.dimension specification>
+getDimension :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe GPUTextureViewDimension)
+getDimension self = liftDOM (((js_getDimension (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-dimension GPUTextureViewDescriptor.dimension specification>
+getDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m GPUTextureViewDimension
+getDimensionUnsafe self = liftDOM ((((js_getDimension (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-dimension GPUTextureViewDescriptor.dimension specification>
+getDimensionUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m GPUTextureViewDimension
+getDimensionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDimension (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usage\"] = $2; })"
+        js_setUsage :: GPUTextureViewDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-usage GPUTextureViewDescriptor.usage specification>
+setUsage :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setUsage self val = liftDOM (void ((js_setUsage (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })"
+        js_getUsage :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-usage GPUTextureViewDescriptor.usage specification>
+getUsage :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getUsage self = liftDOM (((js_getUsage (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-usage GPUTextureViewDescriptor.usage specification>
+getUsageUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getUsageUnsafe self = liftDOM ((((js_getUsage (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-usage GPUTextureViewDescriptor.usage specification>
+getUsageUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m Word
+getUsageUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsage (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"aspect\"] = $2; })"
+        js_setAspect :: GPUTextureViewDescriptor -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-aspect GPUTextureViewDescriptor.aspect specification>
+setAspect :: (MonadDOM m) => GPUTextureViewDescriptor -> GPUTextureAspect -> m ()
+setAspect self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAspect (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aspect\"]; })"
+        js_getAspect :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-aspect GPUTextureViewDescriptor.aspect specification>
+getAspect :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe GPUTextureAspect)
+getAspect self = liftDOM (((js_getAspect (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-aspect GPUTextureViewDescriptor.aspect specification>
+getAspectUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m GPUTextureAspect
+getAspectUnsafe self = liftDOM ((((js_getAspect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-aspect GPUTextureViewDescriptor.aspect specification>
+getAspectUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m GPUTextureAspect
+getAspectUnchecked self = liftDOM ((pFromJSVal <$> (js_getAspect (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"baseMipLevel\"] = $2; })"
+        js_setBaseMipLevel :: GPUTextureViewDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basemiplevel GPUTextureViewDescriptor.baseMipLevel specification>
+setBaseMipLevel :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setBaseMipLevel self val = liftDOM (void ((js_setBaseMipLevel (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"baseMipLevel\"]; })"
+        js_getBaseMipLevel :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basemiplevel GPUTextureViewDescriptor.baseMipLevel specification>
+getBaseMipLevel :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getBaseMipLevel self = liftDOM (((js_getBaseMipLevel (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basemiplevel GPUTextureViewDescriptor.baseMipLevel specification>
+getBaseMipLevelUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getBaseMipLevelUnsafe self = liftDOM ((((js_getBaseMipLevel (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basemiplevel GPUTextureViewDescriptor.baseMipLevel specification>
+getBaseMipLevelUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m Word
+getBaseMipLevelUnchecked self = liftDOM ((pFromJSVal <$> (js_getBaseMipLevel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mipLevelCount\"] = $2; })"
+        js_setMipLevelCount :: GPUTextureViewDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount GPUTextureViewDescriptor.mipLevelCount specification>
+setMipLevelCount :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setMipLevelCount self val = liftDOM (void ((js_setMipLevelCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mipLevelCount\"]; })"
+        js_getMipLevelCount :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount GPUTextureViewDescriptor.mipLevelCount specification>
+getMipLevelCount :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getMipLevelCount self = liftDOM (((js_getMipLevelCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount GPUTextureViewDescriptor.mipLevelCount specification>
+getMipLevelCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getMipLevelCountUnsafe self = liftDOM ((((js_getMipLevelCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount GPUTextureViewDescriptor.mipLevelCount specification>
+getMipLevelCountUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m Word
+getMipLevelCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getMipLevelCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"baseArrayLayer\"] = $2; })"
+        js_setBaseArrayLayer :: GPUTextureViewDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basearraylayer GPUTextureViewDescriptor.baseArrayLayer specification>
+setBaseArrayLayer :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setBaseArrayLayer self val = liftDOM (void ((js_setBaseArrayLayer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"baseArrayLayer\"]; })"
+        js_getBaseArrayLayer :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basearraylayer GPUTextureViewDescriptor.baseArrayLayer specification>
+getBaseArrayLayer :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getBaseArrayLayer self = liftDOM (((js_getBaseArrayLayer (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basearraylayer GPUTextureViewDescriptor.baseArrayLayer specification>
+getBaseArrayLayerUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getBaseArrayLayerUnsafe self = liftDOM ((((js_getBaseArrayLayer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basearraylayer GPUTextureViewDescriptor.baseArrayLayer specification>
+getBaseArrayLayerUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m Word
+getBaseArrayLayerUnchecked self = liftDOM ((pFromJSVal <$> (js_getBaseArrayLayer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"arrayLayerCount\"] = $2; })"
+        js_setArrayLayerCount :: GPUTextureViewDescriptor -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-arraylayercount GPUTextureViewDescriptor.arrayLayerCount specification>
+setArrayLayerCount :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setArrayLayerCount self val = liftDOM (void ((js_setArrayLayerCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"arrayLayerCount\"]; })"
+        js_getArrayLayerCount :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-arraylayercount GPUTextureViewDescriptor.arrayLayerCount specification>
+getArrayLayerCount :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getArrayLayerCount self = liftDOM (((js_getArrayLayerCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-arraylayercount GPUTextureViewDescriptor.arrayLayerCount specification>
+getArrayLayerCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getArrayLayerCountUnsafe self = liftDOM ((((js_getArrayLayerCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-arraylayercount GPUTextureViewDescriptor.arrayLayerCount specification>
+getArrayLayerCountUnchecked :: (MonadDOM m) => GPUTextureViewDescriptor -> m Word
+getArrayLayerCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getArrayLayerCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"swizzle\"] = $2; })"
+        js_setSwizzle :: GPUTextureViewDescriptor -> JSString -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-swizzle GPUTextureViewDescriptor.swizzle specification>
+setSwizzle :: (MonadDOM m, ToJSString val) => GPUTextureViewDescriptor -> val -> m ()
+setSwizzle self val = liftDOM (void ((js_setSwizzle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"swizzle\"]; })"
+        js_getSwizzle :: GPUTextureViewDescriptor -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-swizzle GPUTextureViewDescriptor.swizzle specification>
+getSwizzle :: (MonadDOM m, FromJSString result) => GPUTextureViewDescriptor -> m (Maybe result)
+getSwizzle self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSwizzle (self))))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-swizzle GPUTextureViewDescriptor.swizzle specification>
+getSwizzleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => GPUTextureViewDescriptor -> m result
+getSwizzleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSwizzle (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-swizzle GPUTextureViewDescriptor.swizzle specification>
+getSwizzleUnchecked :: (MonadDOM m, FromJSString result) => GPUTextureViewDescriptor -> m result
+getSwizzleUnchecked self = liftDOM ((pFromJSVal <$> (js_getSwizzle (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUUncapturedErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUUncapturedErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUUncapturedErrorEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUUncapturedErrorEvent
+       (js_newGPUUncapturedErrorEvent, js_getError, newGPUUncapturedErrorEvent, getError, GPUUncapturedErrorEvent(..), gTypeGPUUncapturedErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"GPUUncapturedErrorEvent\"]($1, $2); })"
+        js_newGPUUncapturedErrorEvent :: JSString -> GPUUncapturedErrorEventInit -> IO GPUUncapturedErrorEvent
+-- | <https://developer.mozilla.org/docs/Web/API/GPUUncapturedErrorEvent/GPUUncapturedErrorEvent MDN GPUUncapturedErrorEvent. documentation>
+newGPUUncapturedErrorEvent :: (MonadDOM m, ToJSString type') => type' -> GPUUncapturedErrorEventInit -> m GPUUncapturedErrorEvent
+newGPUUncapturedErrorEvent type' gpuUncapturedErrorEventInitDict = liftDOM ((js_newGPUUncapturedErrorEvent (toJSString type') (gpuUncapturedErrorEventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: GPUUncapturedErrorEvent -> IO GPUError
+-- | <https://developer.mozilla.org/docs/Web/API/GPUUncapturedErrorEvent/error MDN GPUUncapturedErrorEvent.error documentation>
+getError :: (MonadDOM m) => GPUUncapturedErrorEvent -> m GPUError
+getError self = liftDOM ((js_getError (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUUncapturedErrorEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUUncapturedErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUUncapturedErrorEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUUncapturedErrorEventInit
+       (js_newGPUUncapturedErrorEventInit, js_setError, js_getError, newGPUUncapturedErrorEventInit, setError, getError, GPUUncapturedErrorEventInit(..), gTypeGPUUncapturedErrorEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"error\": $1}); })"
+        js_newGPUUncapturedErrorEventInit :: GPUError -> IO GPUUncapturedErrorEventInit
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuuncapturederroreventinit GPUUncapturedErrorEventInit specification>
+newGPUUncapturedErrorEventInit :: (MonadDOM m, IsGPUError error) => error -> m GPUUncapturedErrorEventInit
+newGPUUncapturedErrorEventInit error = liftDOM ((js_newGPUUncapturedErrorEventInit (Types.toGPUError error)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: GPUUncapturedErrorEventInit -> GPUError -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuuncapturederroreventinit-error GPUUncapturedErrorEventInit.error specification>
+setError :: (MonadDOM m, IsGPUError val) => GPUUncapturedErrorEventInit -> val -> m ()
+setError self val = liftDOM (void ((js_setError (self) (Types.toGPUError val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: GPUUncapturedErrorEventInit -> IO GPUError
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuuncapturederroreventinit-error GPUUncapturedErrorEventInit.error specification>
+getError :: (MonadDOM m) => GPUUncapturedErrorEventInit -> m GPUError
+getError self = liftDOM ((js_getError (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUValidationError.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUValidationError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUValidationError.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUValidationError
+       (js_newGPUValidationError, newGPUValidationError, GPUValidationError(..), gTypeGPUValidationError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"GPUValidationError\"]($1); })"
+        js_newGPUValidationError :: JSString -> IO GPUValidationError
+-- | <https://developer.mozilla.org/docs/Web/API/GPUValidationError/GPUValidationError MDN GPUValidationError. documentation>
+newGPUValidationError :: (MonadDOM m, ToJSString message) => message -> m GPUValidationError
+newGPUValidationError message = liftDOM ((js_newGPUValidationError (toJSString message)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUVertexAttribute.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUVertexAttribute.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUVertexAttribute.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUVertexAttribute
+       (js_newGPUVertexAttribute, js_setFormat, js_getFormat, js_setOffset, js_getOffset, js_setShaderLocation, js_getShaderLocation, newGPUVertexAttribute, setFormat, getFormat, setOffset, getOffset, setShaderLocation, getShaderLocation, GPUVertexAttribute(..), gTypeGPUVertexAttribute)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"format\": $1, \"offset\": $2, \"shaderLocation\": $3}); })"
+        js_newGPUVertexAttribute :: JSVal -> JSVal -> Word -> IO GPUVertexAttribute
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuvertexattribute GPUVertexAttribute specification>
+newGPUVertexAttribute :: (MonadDOM m) => GPUVertexFormat -> Word53 -> Word -> m GPUVertexAttribute
+newGPUVertexAttribute format offset shaderLocation = liftDOM (((toJSVal format) >>= \a1' -> (toJSVal offset) >>= \a2' -> js_newGPUVertexAttribute a1' a2' (shaderLocation)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: GPUVertexAttribute -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-format GPUVertexAttribute.format specification>
+setFormat :: (MonadDOM m) => GPUVertexAttribute -> GPUVertexFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: GPUVertexAttribute -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-format GPUVertexAttribute.format specification>
+getFormat :: (MonadDOM m) => GPUVertexAttribute -> m GPUVertexFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offset\"] = $2; })"
+        js_setOffset :: GPUVertexAttribute -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-offset GPUVertexAttribute.offset specification>
+setOffset :: (MonadDOM m) => GPUVertexAttribute -> Word53 -> m ()
+setOffset self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOffset (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: GPUVertexAttribute -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-offset GPUVertexAttribute.offset specification>
+getOffset :: (MonadDOM m) => GPUVertexAttribute -> m Word53
+getOffset self = liftDOM (((js_getOffset (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shaderLocation\"] = $2; })"
+        js_setShaderLocation :: GPUVertexAttribute -> Word -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-shaderlocation GPUVertexAttribute.shaderLocation specification>
+setShaderLocation :: (MonadDOM m) => GPUVertexAttribute -> Word -> m ()
+setShaderLocation self val = liftDOM (void ((js_setShaderLocation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shaderLocation\"]; })"
+        js_getShaderLocation :: GPUVertexAttribute -> IO Word
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-shaderlocation GPUVertexAttribute.shaderLocation specification>
+getShaderLocation :: (MonadDOM m) => GPUVertexAttribute -> m Word
+getShaderLocation self = liftDOM ((js_getShaderLocation (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUVertexBufferLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUVertexBufferLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUVertexBufferLayout.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUVertexBufferLayout
+       (js_newGPUVertexBufferLayout, js_setArrayStride, js_getArrayStride, js_setStepMode, js_getStepMode, js_setAttributes, js_getAttributes, newGPUVertexBufferLayout, setArrayStride, getArrayStride, setStepMode, getStepMode, getStepModeUnsafe, getStepModeUnchecked, setAttributes, getAttributes, GPUVertexBufferLayout(..), gTypeGPUVertexBufferLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"arrayStride\": $1, \"attributes\": $2}); })"
+        js_newGPUVertexBufferLayout :: JSVal -> JSVal -> IO GPUVertexBufferLayout
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuvertexbufferlayout GPUVertexBufferLayout specification>
+newGPUVertexBufferLayout :: (MonadDOM m) => Word53 -> [GPUVertexAttribute] -> m GPUVertexBufferLayout
+newGPUVertexBufferLayout arrayStride attributes = liftDOM (((toJSVal arrayStride) >>= \a1' -> (toJSVal attributes) >>= \a2' -> js_newGPUVertexBufferLayout a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"arrayStride\"] = $2; })"
+        js_setArrayStride :: GPUVertexBufferLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-arraystride GPUVertexBufferLayout.arrayStride specification>
+setArrayStride :: (MonadDOM m) => GPUVertexBufferLayout -> Word53 -> m ()
+setArrayStride self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setArrayStride (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"arrayStride\"]; })"
+        js_getArrayStride :: GPUVertexBufferLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-arraystride GPUVertexBufferLayout.arrayStride specification>
+getArrayStride :: (MonadDOM m) => GPUVertexBufferLayout -> m Word53
+getArrayStride self = liftDOM (((js_getArrayStride (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stepMode\"] = $2; })"
+        js_setStepMode :: GPUVertexBufferLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-stepmode GPUVertexBufferLayout.stepMode specification>
+setStepMode :: (MonadDOM m) => GPUVertexBufferLayout -> GPUVertexStepMode -> m ()
+setStepMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStepMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stepMode\"]; })"
+        js_getStepMode :: GPUVertexBufferLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-stepmode GPUVertexBufferLayout.stepMode specification>
+getStepMode :: (MonadDOM m) => GPUVertexBufferLayout -> m (Maybe GPUVertexStepMode)
+getStepMode self = liftDOM (((js_getStepMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-stepmode GPUVertexBufferLayout.stepMode specification>
+getStepModeUnsafe :: (MonadDOM m, HasCallStack) => GPUVertexBufferLayout -> m GPUVertexStepMode
+getStepModeUnsafe self = liftDOM ((((js_getStepMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-stepmode GPUVertexBufferLayout.stepMode specification>
+getStepModeUnchecked :: (MonadDOM m) => GPUVertexBufferLayout -> m GPUVertexStepMode
+getStepModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStepMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attributes\"] = $2; })"
+        js_setAttributes :: GPUVertexBufferLayout -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-attributes GPUVertexBufferLayout.attributes specification>
+setAttributes :: (MonadDOM m) => GPUVertexBufferLayout -> [GPUVertexAttribute] -> m ()
+setAttributes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAttributes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributes\"]; })"
+        js_getAttributes :: GPUVertexBufferLayout -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-attributes GPUVertexBufferLayout.attributes specification>
+getAttributes :: (MonadDOM m) => GPUVertexBufferLayout -> m [GPUVertexAttribute]
+getAttributes self = liftDOM (((js_getAttributes (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GPUVertexState.hs b/src/GHCJS/DOM/JSFFI/Generated/GPUVertexState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GPUVertexState.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GPUVertexState
+       (js_newGPUVertexState, js_setBuffers, js_getBuffers, newGPUVertexState, setBuffers, getBuffers, getBuffersUnsafe, getBuffersUnchecked, GPUVertexState(..), gTypeGPUVertexState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"module\": $1}); })"
+        js_newGPUVertexState :: GPUShaderModule -> IO GPUVertexState
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuvertexstate GPUVertexState specification>
+newGPUVertexState :: (MonadDOM m) => GPUShaderModule -> m GPUVertexState
+newGPUVertexState module' = liftDOM ((js_newGPUVertexState (module')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffers\"] = $2; })"
+        js_setBuffers :: GPUVertexState -> JSVal -> IO ()
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexstate-buffers GPUVertexState.buffers specification>
+setBuffers :: (MonadDOM m) => GPUVertexState -> [Maybe GPUVertexBufferLayout] -> m ()
+setBuffers self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBuffers (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffers\"]; })"
+        js_getBuffers :: GPUVertexState -> IO JSVal
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexstate-buffers GPUVertexState.buffers specification>
+getBuffers :: (MonadDOM m) => GPUVertexState -> m (Maybe [Maybe GPUVertexBufferLayout])
+getBuffers self = liftDOM (((js_getBuffers (self)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexstate-buffers GPUVertexState.buffers specification>
+getBuffersUnsafe :: (MonadDOM m, HasCallStack) => GPUVertexState -> m [Maybe GPUVertexBufferLayout]
+getBuffersUnsafe self = liftDOM ((((js_getBuffers (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexstate-buffers GPUVertexState.buffers specification>
+getBuffersUnchecked :: (MonadDOM m) => GPUVertexState -> m [Maybe GPUVertexBufferLayout]
+getBuffersUnchecked self = liftDOM (((js_getBuffers (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs b/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
@@ -1,32 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.GainNode
-       (js_getGain, getGain, GainNode(..), gTypeGainNode) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+       (js_newGainNode, js_getGain, newGainNode, getGain, GainNode(..), gTypeGainNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
-        GainNode -> IO AudioParam
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
-getGain :: (MonadIO m) => GainNode -> m AudioParam
-getGain self = liftIO (js_getGain self)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"GainNode\"]($1, $2); })"
+        js_newGainNode :: BaseAudioContext -> JSVal -> IO GainNode
+-- | <https://developer.mozilla.org/docs/Web/API/GainNode/GainNode MDN GainNode. documentation>
+newGainNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe GainOptions -> m GainNode
+newGainNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newGainNode (Types.toBaseAudioContext context) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })"
+        js_getGain :: GainNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/GainNode/gain MDN GainNode.gain documentation>
+getGain :: (MonadDOM m) => GainNode -> m AudioParam
+getGain self = liftDOM ((js_getGain (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GainOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/GainOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GainOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GainOptions
+       (js_newGainOptions, js_setGain, js_getGain, newGainOptions, setGain, getGain, getGainUnsafe, getGainUnchecked, GainOptions(..), gTypeGainOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGainOptions :: IO GainOptions
+-- | <https://webaudio.github.io/web-audio-api/#GainOptions GainOptions specification>
+newGainOptions :: (MonadDOM m) => m GainOptions
+newGainOptions = liftDOM ((js_newGainOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gain\"] = $2; })"
+        js_setGain :: GainOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-gainoptions-gain GainOptions.gain specification>
+setGain :: (MonadDOM m) => GainOptions -> Float -> m ()
+setGain self val = liftDOM (void ((js_setGain (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })"
+        js_getGain :: GainOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-gainoptions-gain GainOptions.gain specification>
+getGain :: (MonadDOM m) => GainOptions -> m (Maybe Float)
+getGain self = liftDOM (((js_getGain (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-gainoptions-gain GainOptions.gain specification>
+getGainUnsafe :: (MonadDOM m, HasCallStack) => GainOptions -> m Float
+getGainUnsafe self = liftDOM ((((js_getGain (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-gainoptions-gain GainOptions.gain specification>
+getGainUnchecked :: (MonadDOM m) => GainOptions -> m Float
+getGainUnchecked self = liftDOM ((pFromJSVal <$> (js_getGain (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs b/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
@@ -1,80 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Gamepad
-       (js_getId, getId, js_getIndex, getIndex, js_getConnected,
-        getConnected, js_getTimestamp, getTimestamp, js_getMapping,
-        getMapping, js_getAxes, getAxes, js_getButtons, getButtons,
-        Gamepad(..), gTypeGamepad)
+       (js_getId, js_getIndex, js_getConnected, js_getTimestamp, js_getMapping, js_getAxes, js_getButtons, js_getVibrationActuator, getId, getIndex, getConnected, getTimestamp, getMapping, getAxes, getButtons, getVibrationActuator, Gamepad(..), gTypeGamepad)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        Gamepad -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.id Mozilla Gamepad.id documentation> 
-getId :: (MonadIO m, FromJSString result) => Gamepad -> m result
-getId self = liftIO (fromJSString <$> (js_getId self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })" js_getIndex ::
-        Gamepad -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: Gamepad -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/id MDN Gamepad.id documentation>
+getId :: (MonadDOM m, FromJSString result) => Gamepad -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.index Mozilla Gamepad.index documentation> 
-getIndex :: (MonadIO m) => Gamepad -> m Word
-getIndex self = liftIO (js_getIndex self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"connected\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })"
+        js_getIndex :: Gamepad -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/index MDN Gamepad.index documentation>
+getIndex :: (MonadDOM m) => Gamepad -> m Int
+getIndex self = liftDOM ((js_getIndex (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"connected\"]; })"
         js_getConnected :: Gamepad -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/connected MDN Gamepad.connected documentation>
+getConnected :: (MonadDOM m) => Gamepad -> m Bool
+getConnected self = liftDOM ((js_getConnected (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.connected Mozilla Gamepad.connected documentation> 
-getConnected :: (MonadIO m) => Gamepad -> m Bool
-getConnected self = liftIO (js_getConnected self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
         js_getTimestamp :: Gamepad -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/timestamp MDN Gamepad.timestamp documentation>
+getTimestamp :: (MonadDOM m) => Gamepad -> m Double
+getTimestamp self = liftDOM ((js_getTimestamp (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.timestamp Mozilla Gamepad.timestamp documentation> 
-getTimestamp :: (MonadIO m) => Gamepad -> m Double
-getTimestamp self = liftIO (js_getTimestamp self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mapping\"]; })" js_getMapping ::
-        Gamepad -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"mapping\"]; })"
+        js_getMapping :: Gamepad -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/mapping MDN Gamepad.mapping documentation>
+getMapping :: (MonadDOM m) => Gamepad -> m GamepadMappingType
+getMapping self = liftDOM (((js_getMapping (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.mapping Mozilla Gamepad.mapping documentation> 
-getMapping ::
-           (MonadIO m, FromJSString result) => Gamepad -> m result
-getMapping self = liftIO (fromJSString <$> (js_getMapping self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"axes\"]; })" js_getAxes ::
-        Gamepad -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"axes\"]; })"
+        js_getAxes :: Gamepad -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/axes MDN Gamepad.axes documentation>
+getAxes :: (MonadDOM m) => Gamepad -> m [Double]
+getAxes self = liftDOM (((js_getAxes (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.axes Mozilla Gamepad.axes documentation> 
-getAxes :: (MonadIO m) => Gamepad -> m [Double]
-getAxes self = liftIO ((js_getAxes self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"buttons\"]; })" js_getButtons ::
-        Gamepad -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"buttons\"]; })"
+        js_getButtons :: Gamepad -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/buttons MDN Gamepad.buttons documentation>
+getButtons :: (MonadDOM m) => Gamepad -> m [GamepadButton]
+getButtons self = liftDOM (((js_getButtons (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.buttons Mozilla Gamepad.buttons documentation> 
-getButtons :: (MonadIO m) => Gamepad -> m [GamepadButton]
-getButtons self
-  = liftIO ((js_getButtons self) >>= fromJSValUnchecked)
+foreign import javascript unsafe "(($1) => { return $1[\"vibrationActuator\"]; })"
+        js_getVibrationActuator :: Gamepad -> IO GamepadHapticActuator
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/vibrationActuator MDN Gamepad.vibrationActuator documentation>
+getVibrationActuator :: (MonadDOM m) => Gamepad -> m GamepadHapticActuator
+getVibrationActuator self = liftDOM ((js_getVibrationActuator (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
@@ -1,41 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.GamepadButton
-       (js_getPressed, getPressed, js_getValue, getValue,
-        GamepadButton(..), gTypeGamepadButton)
+       (js_getPressed, js_getTouched, js_getValue, getPressed, getTouched, getValue, GamepadButton(..), gTypeGamepadButton)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"pressed\"] ? 1 : 0); })"
+
+foreign import javascript unsafe "(($1) => { return $1[\"pressed\"]; })"
         js_getPressed :: GamepadButton -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadButton/pressed MDN GamepadButton.pressed documentation>
+getPressed :: (MonadDOM m) => GamepadButton -> m Bool
+getPressed self = liftDOM ((js_getPressed (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.pressed Mozilla GamepadButton.pressed documentation> 
-getPressed :: (MonadIO m) => GamepadButton -> m Bool
-getPressed self = liftIO (js_getPressed self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        GamepadButton -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"touched\"]; })"
+        js_getTouched :: GamepadButton -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadButton/touched MDN GamepadButton.touched documentation>
+getTouched :: (MonadDOM m) => GamepadButton -> m Bool
+getTouched self = liftDOM ((js_getTouched (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.value Mozilla GamepadButton.value documentation> 
-getValue :: (MonadIO m) => GamepadButton -> m Double
-getValue self = liftIO (js_getValue self)
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: GamepadButton -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadButton/value MDN GamepadButton.value documentation>
+getValue :: (MonadDOM m) => GamepadButton -> m Double
+getValue self = liftDOM ((js_getValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadEffectParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadEffectParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadEffectParameters.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GamepadEffectParameters
+       (js_newGamepadEffectParameters, js_setDuration, js_getDuration, js_setStartDelay, js_getStartDelay, js_setStrongMagnitude, js_getStrongMagnitude, js_setWeakMagnitude, js_getWeakMagnitude, js_setLeftTrigger, js_getLeftTrigger, js_setRightTrigger, js_getRightTrigger, newGamepadEffectParameters, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setStartDelay, getStartDelay, getStartDelayUnsafe, getStartDelayUnchecked, setStrongMagnitude, getStrongMagnitude, getStrongMagnitudeUnsafe, getStrongMagnitudeUnchecked, setWeakMagnitude, getWeakMagnitude, getWeakMagnitudeUnsafe, getWeakMagnitudeUnchecked, setLeftTrigger, getLeftTrigger, getLeftTriggerUnsafe, getLeftTriggerUnchecked, setRightTrigger, getRightTrigger, getRightTriggerUnsafe, getRightTriggerUnchecked, GamepadEffectParameters(..), gTypeGamepadEffectParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGamepadEffectParameters :: IO GamepadEffectParameters
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters GamepadEffectParameters specification>
+newGamepadEffectParameters :: (MonadDOM m) => m GamepadEffectParameters
+newGamepadEffectParameters = liftDOM ((js_newGamepadEffectParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: GamepadEffectParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-duration GamepadEffectParameters.duration specification>
+setDuration :: (MonadDOM m) => GamepadEffectParameters -> Word53 -> m ()
+setDuration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDuration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: GamepadEffectParameters -> IO JSVal
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-duration GamepadEffectParameters.duration specification>
+getDuration :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-duration GamepadEffectParameters.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-duration GamepadEffectParameters.duration specification>
+getDurationUnchecked :: (MonadDOM m) => GamepadEffectParameters -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startDelay\"] = $2; })"
+        js_setStartDelay :: GamepadEffectParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-startdelay GamepadEffectParameters.startDelay specification>
+setStartDelay :: (MonadDOM m) => GamepadEffectParameters -> Word53 -> m ()
+setStartDelay self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStartDelay (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startDelay\"]; })"
+        js_getStartDelay :: GamepadEffectParameters -> IO JSVal
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-startdelay GamepadEffectParameters.startDelay specification>
+getStartDelay :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Word53)
+getStartDelay self = liftDOM (((js_getStartDelay (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-startdelay GamepadEffectParameters.startDelay specification>
+getStartDelayUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Word53
+getStartDelayUnsafe self = liftDOM ((((js_getStartDelay (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-startdelay GamepadEffectParameters.startDelay specification>
+getStartDelayUnchecked :: (MonadDOM m) => GamepadEffectParameters -> m Word53
+getStartDelayUnchecked self = liftDOM ((pFromJSVal <$> (js_getStartDelay (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"strongMagnitude\"] = $2; })"
+        js_setStrongMagnitude :: GamepadEffectParameters -> Double -> IO ()
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-strongmagnitude GamepadEffectParameters.strongMagnitude specification>
+setStrongMagnitude :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setStrongMagnitude self val = liftDOM (void ((js_setStrongMagnitude (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"strongMagnitude\"]; })"
+        js_getStrongMagnitude :: GamepadEffectParameters -> IO JSVal
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-strongmagnitude GamepadEffectParameters.strongMagnitude specification>
+getStrongMagnitude :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getStrongMagnitude self = liftDOM (((js_getStrongMagnitude (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-strongmagnitude GamepadEffectParameters.strongMagnitude specification>
+getStrongMagnitudeUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getStrongMagnitudeUnsafe self = liftDOM ((((js_getStrongMagnitude (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-strongmagnitude GamepadEffectParameters.strongMagnitude specification>
+getStrongMagnitudeUnchecked :: (MonadDOM m) => GamepadEffectParameters -> m Double
+getStrongMagnitudeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStrongMagnitude (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"weakMagnitude\"] = $2; })"
+        js_setWeakMagnitude :: GamepadEffectParameters -> Double -> IO ()
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-weakmagnitude GamepadEffectParameters.weakMagnitude specification>
+setWeakMagnitude :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setWeakMagnitude self val = liftDOM (void ((js_setWeakMagnitude (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"weakMagnitude\"]; })"
+        js_getWeakMagnitude :: GamepadEffectParameters -> IO JSVal
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-weakmagnitude GamepadEffectParameters.weakMagnitude specification>
+getWeakMagnitude :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getWeakMagnitude self = liftDOM (((js_getWeakMagnitude (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-weakmagnitude GamepadEffectParameters.weakMagnitude specification>
+getWeakMagnitudeUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getWeakMagnitudeUnsafe self = liftDOM ((((js_getWeakMagnitude (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-weakmagnitude GamepadEffectParameters.weakMagnitude specification>
+getWeakMagnitudeUnchecked :: (MonadDOM m) => GamepadEffectParameters -> m Double
+getWeakMagnitudeUnchecked self = liftDOM ((pFromJSVal <$> (js_getWeakMagnitude (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"leftTrigger\"] = $2; })"
+        js_setLeftTrigger :: GamepadEffectParameters -> Double -> IO ()
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-lefttrigger GamepadEffectParameters.leftTrigger specification>
+setLeftTrigger :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setLeftTrigger self val = liftDOM (void ((js_setLeftTrigger (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"leftTrigger\"]; })"
+        js_getLeftTrigger :: GamepadEffectParameters -> IO JSVal
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-lefttrigger GamepadEffectParameters.leftTrigger specification>
+getLeftTrigger :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getLeftTrigger self = liftDOM (((js_getLeftTrigger (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-lefttrigger GamepadEffectParameters.leftTrigger specification>
+getLeftTriggerUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getLeftTriggerUnsafe self = liftDOM ((((js_getLeftTrigger (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-lefttrigger GamepadEffectParameters.leftTrigger specification>
+getLeftTriggerUnchecked :: (MonadDOM m) => GamepadEffectParameters -> m Double
+getLeftTriggerUnchecked self = liftDOM ((pFromJSVal <$> (js_getLeftTrigger (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rightTrigger\"] = $2; })"
+        js_setRightTrigger :: GamepadEffectParameters -> Double -> IO ()
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-righttrigger GamepadEffectParameters.rightTrigger specification>
+setRightTrigger :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setRightTrigger self val = liftDOM (void ((js_setRightTrigger (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rightTrigger\"]; })"
+        js_getRightTrigger :: GamepadEffectParameters -> IO JSVal
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-righttrigger GamepadEffectParameters.rightTrigger specification>
+getRightTrigger :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getRightTrigger self = liftDOM (((js_getRightTrigger (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-righttrigger GamepadEffectParameters.rightTrigger specification>
+getRightTriggerUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getRightTriggerUnsafe self = liftDOM ((((js_getRightTrigger (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-righttrigger GamepadEffectParameters.rightTrigger specification>
+getRightTriggerUnchecked :: (MonadDOM m) => GamepadEffectParameters -> m Double
+getRightTriggerUnchecked self = liftDOM ((pFromJSVal <$> (js_getRightTrigger (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
@@ -1,59 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.GamepadEvent
-       (js_newGamepadEvent, newGamepadEvent, js_getGamepad, getGamepad,
-        getGamepadUnsafe, getGamepadUnchecked, GamepadEvent(..),
-        gTypeGamepadEvent)
+       (js_newGamepadEvent, js_getGamepad, newGamepadEvent, getGamepad, GamepadEvent(..), gTypeGamepadEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"GamepadEvent\"]($1,\n$2); })" js_newGamepadEvent ::
-        JSString -> GamepadEventInit -> IO GamepadEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation> 
-newGamepadEvent ::
-                (MonadIO m, ToJSString type') =>
-                  type' -> GamepadEventInit -> m GamepadEvent
-newGamepadEvent type' eventInitDict
-  = liftIO (js_newGamepadEvent (toJSString type') eventInitDict)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"gamepad\"]; })" js_getGamepad ::
-        GamepadEvent -> IO (Nullable Gamepad)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
-getGamepad :: (MonadIO m) => GamepadEvent -> m (Maybe Gamepad)
-getGamepad self = liftIO (nullableToMaybe <$> (js_getGamepad self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
-getGamepadUnsafe ::
-                 (MonadIO m, HasCallStack) => GamepadEvent -> m Gamepad
-getGamepadUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getGamepad self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"GamepadEvent\"]($1, $2); })"
+        js_newGamepadEvent :: JSString -> JSVal -> IO GamepadEvent
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadEvent/GamepadEvent MDN GamepadEvent. documentation>
+newGamepadEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe GamepadEventInit -> m GamepadEvent
+newGamepadEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newGamepadEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
-getGamepadUnchecked :: (MonadIO m) => GamepadEvent -> m Gamepad
-getGamepadUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getGamepad self))
+foreign import javascript unsafe "(($1) => { return $1[\"gamepad\"]; })"
+        js_getGamepad :: GamepadEvent -> IO Gamepad
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadEvent/gamepad MDN GamepadEvent.gamepad documentation>
+getGamepad :: (MonadDOM m) => GamepadEvent -> m Gamepad
+getGamepad self = liftDOM ((js_getGamepad (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GamepadEventInit
+       (js_newGamepadEventInit, js_setGamepad, js_getGamepad, newGamepadEventInit, setGamepad, getGamepad, getGamepadUnsafe, getGamepadUnchecked, GamepadEventInit(..), gTypeGamepadEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGamepadEventInit :: IO GamepadEventInit
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit GamepadEventInit specification>
+newGamepadEventInit :: (MonadDOM m) => m GamepadEventInit
+newGamepadEventInit = liftDOM ((js_newGamepadEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gamepad\"] = $2; })"
+        js_setGamepad :: GamepadEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit-gamepad GamepadEventInit.gamepad specification>
+setGamepad :: (MonadDOM m) => GamepadEventInit -> Maybe Gamepad -> m ()
+setGamepad self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setGamepad (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gamepad\"]; })"
+        js_getGamepad :: GamepadEventInit -> IO JSVal
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit-gamepad GamepadEventInit.gamepad specification>
+getGamepad :: (MonadDOM m) => GamepadEventInit -> m (Maybe Gamepad)
+getGamepad self = liftDOM (((js_getGamepad (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit-gamepad GamepadEventInit.gamepad specification>
+getGamepadUnsafe :: (MonadDOM m, HasCallStack) => GamepadEventInit -> m Gamepad
+getGamepadUnsafe self = liftDOM ((((js_getGamepad (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit-gamepad GamepadEventInit.gamepad specification>
+getGamepadUnchecked :: (MonadDOM m) => GamepadEventInit -> m Gamepad
+getGamepadUnchecked self = liftDOM ((pFromJSVal <$> (js_getGamepad (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadHapticActuator.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadHapticActuator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadHapticActuator.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GamepadHapticActuator
+       (js_playEffect, js_reset, playEffect, playEffect_, reset, reset_, GamepadHapticActuator(..), gTypeGamepadHapticActuator)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"playEffect\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_playEffect :: GamepadHapticActuator -> JSVal -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator/playEffect MDN GamepadHapticActuator.playEffect documentation>
+playEffect :: (MonadDOM m) => GamepadHapticActuator -> GamepadHapticEffectType -> Maybe GamepadEffectParameters -> m GamepadHapticsResult
+playEffect self type' params = liftDOM (((((toJSVal type') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal params) >>= \a3' -> js_playEffect (self) a2' a3') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator/playEffect MDN GamepadHapticActuator.playEffect documentation>
+playEffect_ :: (MonadDOM m) => GamepadHapticActuator -> GamepadHapticEffectType -> Maybe GamepadEffectParameters -> m ()
+playEffect_ self type' params = liftDOM (void ((((toJSVal type') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal params) >>= \a3' -> js_playEffect (self) a2' a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"reset\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_reset :: GamepadHapticActuator -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator/reset MDN GamepadHapticActuator.reset documentation>
+reset :: (MonadDOM m) => GamepadHapticActuator -> m GamepadHapticsResult
+reset self = liftDOM ((((js_reset (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator/reset MDN GamepadHapticActuator.reset documentation>
+reset_ :: (MonadDOM m) => GamepadHapticActuator -> m ()
+reset_ self = liftDOM (void (((js_reset (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GenericTransformStream.hs b/src/GHCJS/DOM/JSFFI/Generated/GenericTransformStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GenericTransformStream.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GenericTransformStream
+       (js_getReadable, js_getWritable, getReadable, getWritable, GenericTransformStream(..), gTypeGenericTransformStream, IsGenericTransformStream, toGenericTransformStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: GenericTransformStream -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/CompressionStream/readable MDN GenericTransformStream.readable documentation>
+getReadable :: (MonadDOM m, IsGenericTransformStream self) => self -> m ReadableStream
+getReadable self = liftDOM ((js_getReadable ((Types.toGenericTransformStream self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writable\"]; })"
+        js_getWritable :: GenericTransformStream -> IO WritableStream
+-- | <https://developer.mozilla.org/docs/Web/API/CompressionStream/writable MDN GenericTransformStream.writable documentation>
+getWritable :: (MonadDOM m, IsGenericTransformStream self) => self -> m WritableStream
+getWritable self = liftDOM ((js_getWritable ((Types.toGenericTransformStream self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs b/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
@@ -1,85 +1,39 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Geolocation
-       (js_getCurrentPosition, getCurrentPosition, js_watchPosition,
-        watchPosition, watchPosition_, js_clearWatch, clearWatch,
-        Geolocation(..), gTypeGeolocation)
+       (js_clearWatch, js_getCurrentPosition, js_watchPosition, clearWatch, getCurrentPosition, watchPosition, watchPosition_, Geolocation(..), gTypeGeolocation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"getCurrentPosition\"]($2, $3,\n$4); })" js_getCurrentPosition ::
-        Geolocation ->
-          PositionCallback ->
-            Optional PositionErrorCallback -> Optional PositionOptions -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation> 
-getCurrentPosition ::
-                   (MonadIO m) =>
-                     Geolocation ->
-                       PositionCallback ->
-                         Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
-getCurrentPosition self successCallback errorCallback options
-  = liftIO
-      (js_getCurrentPosition self successCallback
-         (maybeToOptional errorCallback)
-         (maybeToOptional options))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"watchPosition\"]($2, $3, $4); })" js_watchPosition ::
-        Geolocation ->
-          PositionCallback ->
-            Optional PositionErrorCallback ->
-              Optional PositionOptions -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"clearWatch\"]($2); })"
+        js_clearWatch :: Geolocation -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch MDN Geolocation.clearWatch documentation>
+clearWatch :: (MonadDOM m) => Geolocation -> Int -> m ()
+clearWatch self watchId = liftDOM (void ((js_clearWatch (self) (watchId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
-watchPosition ::
-              (MonadIO m) =>
-                Geolocation ->
-                  PositionCallback ->
-                    Maybe PositionErrorCallback -> Maybe PositionOptions -> m Int
-watchPosition self successCallback errorCallback options
-  = liftIO
-      (js_watchPosition self successCallback
-         (maybeToOptional errorCallback)
-         (maybeToOptional options))
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getCurrentPosition\"]($2, $3, $4); })"
+        js_getCurrentPosition :: Geolocation -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition MDN Geolocation.getCurrentPosition documentation>
+getCurrentPosition :: (MonadDOM m) => Geolocation -> PositionCallback -> Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
+getCurrentPosition self successCallback errorCallback options = liftDOM (void (((toJSVal successCallback) >>= \a2' -> (toJSVal errorCallback) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_getCurrentPosition (self) a2' a3' a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
-watchPosition_ ::
-               (MonadIO m) =>
-                 Geolocation ->
-                   PositionCallback ->
-                     Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
-watchPosition_ self successCallback errorCallback options
-  = liftIO
-      (void
-         (js_watchPosition self successCallback
-            (maybeToOptional errorCallback)
-            (maybeToOptional options)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearWatch\"]($2); })"
-        js_clearWatch :: Geolocation -> Int -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"watchPosition\"]($2, $3, $4); })"
+        js_watchPosition :: Geolocation -> JSVal -> JSVal -> JSVal -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition MDN Geolocation.watchPosition documentation>
+watchPosition :: (MonadDOM m) => Geolocation -> PositionCallback -> Maybe PositionErrorCallback -> Maybe PositionOptions -> m Int
+watchPosition self successCallback errorCallback options = liftDOM (((toJSVal successCallback) >>= \a2' -> (toJSVal errorCallback) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_watchPosition (self) a2' a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.clearWatch Mozilla Geolocation.clearWatch documentation> 
-clearWatch :: (MonadIO m) => Geolocation -> Int -> m ()
-clearWatch self watchId = liftIO (js_clearWatch self watchId)
+-- | <https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition MDN Geolocation.watchPosition documentation>
+watchPosition_ :: (MonadDOM m) => Geolocation -> PositionCallback -> Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
+watchPosition_ self successCallback errorCallback options = liftDOM (void (((toJSVal successCallback) >>= \a2' -> (toJSVal errorCallback) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_watchPosition (self) a2' a3' a4')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GeolocationCoordinates.hs b/src/GHCJS/DOM/JSFFI/Generated/GeolocationCoordinates.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GeolocationCoordinates.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GeolocationCoordinates
+       (js_toJSON, js_getAccuracy, js_getLatitude, js_getLongitude, js_getAltitude, js_getAltitudeAccuracy, js_getHeading, js_getSpeed, toJSON, toJSON_, getAccuracy, getLatitude, getLongitude, getAltitude, getAltitudeUnsafe, getAltitudeUnchecked, getAltitudeAccuracy, getAltitudeAccuracyUnsafe, getAltitudeAccuracyUnchecked, getHeading, getHeadingUnsafe, getHeadingUnchecked, getSpeed, getSpeedUnsafe, getSpeedUnchecked, GeolocationCoordinates(..), gTypeGeolocationCoordinates)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: GeolocationCoordinates -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/toJSON MDN GeolocationCoordinates.toJSON documentation>
+toJSON :: (MonadDOM m) => GeolocationCoordinates -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/toJSON MDN GeolocationCoordinates.toJSON documentation>
+toJSON_ :: (MonadDOM m) => GeolocationCoordinates -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"accuracy\"]; })"
+        js_getAccuracy :: GeolocationCoordinates -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/accuracy MDN GeolocationCoordinates.accuracy documentation>
+getAccuracy :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getAccuracy self = liftDOM ((js_getAccuracy (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"latitude\"]; })"
+        js_getLatitude :: GeolocationCoordinates -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/latitude MDN GeolocationCoordinates.latitude documentation>
+getLatitude :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getLatitude self = liftDOM ((js_getLatitude (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"longitude\"]; })"
+        js_getLongitude :: GeolocationCoordinates -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/longitude MDN GeolocationCoordinates.longitude documentation>
+getLongitude :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getLongitude self = liftDOM ((js_getLongitude (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"altitude\"]; })"
+        js_getAltitude :: GeolocationCoordinates -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitude MDN GeolocationCoordinates.altitude documentation>
+getAltitude :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getAltitude self = liftDOM (((js_getAltitude (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitude MDN GeolocationCoordinates.altitude documentation>
+getAltitudeUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getAltitudeUnsafe self = liftDOM ((((js_getAltitude (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitude MDN GeolocationCoordinates.altitude documentation>
+getAltitudeUnchecked :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getAltitudeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAltitude (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"altitudeAccuracy\"]; })"
+        js_getAltitudeAccuracy :: GeolocationCoordinates -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitudeAccuracy MDN GeolocationCoordinates.altitudeAccuracy documentation>
+getAltitudeAccuracy :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getAltitudeAccuracy self = liftDOM (((js_getAltitudeAccuracy (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitudeAccuracy MDN GeolocationCoordinates.altitudeAccuracy documentation>
+getAltitudeAccuracyUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getAltitudeAccuracyUnsafe self = liftDOM ((((js_getAltitudeAccuracy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitudeAccuracy MDN GeolocationCoordinates.altitudeAccuracy documentation>
+getAltitudeAccuracyUnchecked :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getAltitudeAccuracyUnchecked self = liftDOM ((pFromJSVal <$> (js_getAltitudeAccuracy (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"heading\"]; })"
+        js_getHeading :: GeolocationCoordinates -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/heading MDN GeolocationCoordinates.heading documentation>
+getHeading :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getHeading self = liftDOM (((js_getHeading (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/heading MDN GeolocationCoordinates.heading documentation>
+getHeadingUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getHeadingUnsafe self = liftDOM ((((js_getHeading (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/heading MDN GeolocationCoordinates.heading documentation>
+getHeadingUnchecked :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getHeadingUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeading (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"speed\"]; })"
+        js_getSpeed :: GeolocationCoordinates -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/speed MDN GeolocationCoordinates.speed documentation>
+getSpeed :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getSpeed self = liftDOM (((js_getSpeed (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/speed MDN GeolocationCoordinates.speed documentation>
+getSpeedUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getSpeedUnsafe self = liftDOM ((((js_getSpeed (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/speed MDN GeolocationCoordinates.speed documentation>
+getSpeedUnchecked :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getSpeedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSpeed (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GeolocationPosition.hs b/src/GHCJS/DOM/JSFFI/Generated/GeolocationPosition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GeolocationPosition.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GeolocationPosition
+       (js_toJSON, js_getCoords, js_getTimestamp, toJSON, toJSON_, getCoords, getTimestamp, GeolocationPosition(..), gTypeGeolocationPosition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: GeolocationPosition -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/toJSON MDN GeolocationPosition.toJSON documentation>
+toJSON :: (MonadDOM m) => GeolocationPosition -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/toJSON MDN GeolocationPosition.toJSON documentation>
+toJSON_ :: (MonadDOM m) => GeolocationPosition -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })"
+        js_getCoords :: GeolocationPosition -> IO GeolocationCoordinates
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/coords MDN GeolocationPosition.coords documentation>
+getCoords :: (MonadDOM m) => GeolocationPosition -> m GeolocationCoordinates
+getCoords self = liftDOM ((js_getCoords (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: GeolocationPosition -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/timestamp MDN GeolocationPosition.timestamp documentation>
+getTimestamp :: (MonadDOM m) => GeolocationPosition -> m Word53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GeolocationPositionError.hs b/src/GHCJS/DOM/JSFFI/Generated/GeolocationPositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GeolocationPositionError.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GeolocationPositionError
+       (js_getCode, js_getMessage, getCode, getMessage, pattern PERMISSION_DENIED, pattern POSITION_UNAVAILABLE, pattern TIMEOUT, GeolocationPositionError(..), gTypeGeolocationPositionError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: GeolocationPositionError -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPositionError/code MDN GeolocationPositionError.code documentation>
+getCode :: (MonadDOM m) => GeolocationPositionError -> m Word
+getCode self = liftDOM ((js_getCode (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: GeolocationPositionError -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPositionError/message MDN GeolocationPositionError.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => GeolocationPositionError -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage (self))))
+
+pattern PERMISSION_DENIED = 1
+
+pattern POSITION_UNAVAILABLE = 2
+
+pattern TIMEOUT = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs b/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Geoposition
-       (js_getCoords, getCoords, js_getTimestamp, getTimestamp,
-        Geoposition(..), gTypeGeoposition)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })" js_getCoords ::
-        Geoposition -> IO Coordinates
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
-getCoords :: (MonadIO m) => Geoposition -> m Coordinates
-getCoords self = liftIO (js_getCoords self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
-        js_getTimestamp :: Geoposition -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.timestamp Mozilla Geoposition.timestamp documentation> 
-getTimestamp :: (MonadIO m) => Geoposition -> m Word
-getTimestamp self = liftIO (js_getTimestamp self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GetAnimationsOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/GetAnimationsOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GetAnimationsOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GetAnimationsOptions
+       (js_newGetAnimationsOptions, js_setSubtree, js_getSubtree, js_setPseudoElement, js_getPseudoElement, newGetAnimationsOptions, setSubtree, getSubtree, getSubtreeUnsafe, getSubtreeUnchecked, setPseudoElement, getPseudoElement, getPseudoElementUnsafe, getPseudoElementUnchecked, GetAnimationsOptions(..), gTypeGetAnimationsOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGetAnimationsOptions :: IO GetAnimationsOptions
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-getanimationsoptions GetAnimationsOptions specification>
+newGetAnimationsOptions :: (MonadDOM m) => m GetAnimationsOptions
+newGetAnimationsOptions = liftDOM ((js_newGetAnimationsOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"subtree\"] = $2; })"
+        js_setSubtree :: GetAnimationsOptions -> Bool -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-subtree GetAnimationsOptions.subtree specification>
+setSubtree :: (MonadDOM m) => GetAnimationsOptions -> Bool -> m ()
+setSubtree self val = liftDOM (void ((js_setSubtree (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"subtree\"]; })"
+        js_getSubtree :: GetAnimationsOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-subtree GetAnimationsOptions.subtree specification>
+getSubtree :: (MonadDOM m) => GetAnimationsOptions -> m (Maybe Bool)
+getSubtree self = liftDOM (((js_getSubtree (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-subtree GetAnimationsOptions.subtree specification>
+getSubtreeUnsafe :: (MonadDOM m, HasCallStack) => GetAnimationsOptions -> m Bool
+getSubtreeUnsafe self = liftDOM ((((js_getSubtree (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-subtree GetAnimationsOptions.subtree specification>
+getSubtreeUnchecked :: (MonadDOM m) => GetAnimationsOptions -> m Bool
+getSubtreeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSubtree (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pseudoElement\"] = $2; })"
+        js_setPseudoElement :: GetAnimationsOptions -> (Nullable JSString) -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-pseudoelement GetAnimationsOptions.pseudoElement specification>
+setPseudoElement :: (MonadDOM m, ToJSString val) => GetAnimationsOptions -> Maybe val -> m ()
+setPseudoElement self val = liftDOM (void ((js_setPseudoElement (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: GetAnimationsOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-pseudoelement GetAnimationsOptions.pseudoElement specification>
+getPseudoElement :: (MonadDOM m, FromJSString result) => GetAnimationsOptions -> m (Maybe result)
+getPseudoElement self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-pseudoelement GetAnimationsOptions.pseudoElement specification>
+getPseudoElementUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => GetAnimationsOptions -> m result
+getPseudoElementUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-pseudoelement GetAnimationsOptions.pseudoElement specification>
+getPseudoElementUnchecked :: (MonadDOM m, FromJSString result) => GetAnimationsOptions -> m result
+getPseudoElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPseudoElement (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GetComposedRangesOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/GetComposedRangesOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GetComposedRangesOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from selection-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GetComposedRangesOptions
+       (js_newGetComposedRangesOptions, js_setShadowRoots, js_getShadowRoots, newGetComposedRangesOptions, setShadowRoots, getShadowRoots, getShadowRootsUnsafe, getShadowRootsUnchecked, GetComposedRangesOptions(..), gTypeGetComposedRangesOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGetComposedRangesOptions :: IO GetComposedRangesOptions
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions GetComposedRangesOptions specification>
+newGetComposedRangesOptions :: (MonadDOM m) => m GetComposedRangesOptions
+newGetComposedRangesOptions = liftDOM ((js_newGetComposedRangesOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRoots\"] = $2; })"
+        js_setShadowRoots :: GetComposedRangesOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions-shadowroots GetComposedRangesOptions.shadowRoots specification>
+setShadowRoots :: (MonadDOM m) => GetComposedRangesOptions -> [ShadowRoot] -> m ()
+setShadowRoots self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setShadowRoots (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRoots\"]; })"
+        js_getShadowRoots :: GetComposedRangesOptions -> IO JSVal
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions-shadowroots GetComposedRangesOptions.shadowRoots specification>
+getShadowRoots :: (MonadDOM m) => GetComposedRangesOptions -> m (Maybe [ShadowRoot])
+getShadowRoots self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions-shadowroots GetComposedRangesOptions.shadowRoots specification>
+getShadowRootsUnsafe :: (MonadDOM m, HasCallStack) => GetComposedRangesOptions -> m [ShadowRoot]
+getShadowRootsUnsafe self = liftDOM ((((js_getShadowRoots (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions-shadowroots GetComposedRangesOptions.shadowRoots specification>
+getShadowRootsUnchecked :: (MonadDOM m) => GetComposedRangesOptions -> m [ShadowRoot]
+getShadowRootsUnchecked self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GetHTMLOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/GetHTMLOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GetHTMLOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GetHTMLOptions
+       (js_newGetHTMLOptions, js_setSerializableShadowRoots, js_getSerializableShadowRoots, js_setShadowRoots, js_getShadowRoots, newGetHTMLOptions, setSerializableShadowRoots, getSerializableShadowRoots, getSerializableShadowRootsUnsafe, getSerializableShadowRootsUnchecked, setShadowRoots, getShadowRoots, getShadowRootsUnsafe, getShadowRootsUnchecked, GetHTMLOptions(..), gTypeGetHTMLOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGetHTMLOptions :: IO GetHTMLOptions
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#gethtmloptions GetHTMLOptions specification>
+newGetHTMLOptions :: (MonadDOM m) => m GetHTMLOptions
+newGetHTMLOptions = liftDOM ((js_newGetHTMLOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"serializableShadowRoots\"] = $2; })"
+        js_setSerializableShadowRoots :: GetHTMLOptions -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-serializableshadowroots GetHTMLOptions.serializableShadowRoots specification>
+setSerializableShadowRoots :: (MonadDOM m) => GetHTMLOptions -> Bool -> m ()
+setSerializableShadowRoots self val = liftDOM (void ((js_setSerializableShadowRoots (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serializableShadowRoots\"]; })"
+        js_getSerializableShadowRoots :: GetHTMLOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-serializableshadowroots GetHTMLOptions.serializableShadowRoots specification>
+getSerializableShadowRoots :: (MonadDOM m) => GetHTMLOptions -> m (Maybe Bool)
+getSerializableShadowRoots self = liftDOM (((js_getSerializableShadowRoots (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-serializableshadowroots GetHTMLOptions.serializableShadowRoots specification>
+getSerializableShadowRootsUnsafe :: (MonadDOM m, HasCallStack) => GetHTMLOptions -> m Bool
+getSerializableShadowRootsUnsafe self = liftDOM ((((js_getSerializableShadowRoots (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-serializableshadowroots GetHTMLOptions.serializableShadowRoots specification>
+getSerializableShadowRootsUnchecked :: (MonadDOM m) => GetHTMLOptions -> m Bool
+getSerializableShadowRootsUnchecked self = liftDOM ((pFromJSVal <$> (js_getSerializableShadowRoots (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRoots\"] = $2; })"
+        js_setShadowRoots :: GetHTMLOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-shadowroots GetHTMLOptions.shadowRoots specification>
+setShadowRoots :: (MonadDOM m) => GetHTMLOptions -> [ShadowRoot] -> m ()
+setShadowRoots self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setShadowRoots (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRoots\"]; })"
+        js_getShadowRoots :: GetHTMLOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-shadowroots GetHTMLOptions.shadowRoots specification>
+getShadowRoots :: (MonadDOM m) => GetHTMLOptions -> m (Maybe [ShadowRoot])
+getShadowRoots self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-shadowroots GetHTMLOptions.shadowRoots specification>
+getShadowRootsUnsafe :: (MonadDOM m, HasCallStack) => GetHTMLOptions -> m [ShadowRoot]
+getShadowRootsUnsafe self = liftDOM ((((js_getShadowRoots (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-gethtmloptions-shadowroots GetHTMLOptions.shadowRoots specification>
+getShadowRootsUnchecked :: (MonadDOM m) => GetHTMLOptions -> m [ShadowRoot]
+getShadowRootsUnchecked self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GetNotificationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/GetNotificationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GetNotificationOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GetNotificationOptions
+       (js_newGetNotificationOptions, js_setTag, js_getTag, newGetNotificationOptions, setTag, getTag, getTagUnsafe, getTagUnchecked, GetNotificationOptions(..), gTypeGetNotificationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGetNotificationOptions :: IO GetNotificationOptions
+-- | <https://notifications.spec.whatwg.org/#dictdef-getnotificationoptions GetNotificationOptions specification>
+newGetNotificationOptions :: (MonadDOM m) => m GetNotificationOptions
+newGetNotificationOptions = liftDOM ((js_newGetNotificationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tag\"] = $2; })"
+        js_setTag :: GetNotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-getnotificationoptions-tag GetNotificationOptions.tag specification>
+setTag :: (MonadDOM m, ToJSString val) => GetNotificationOptions -> val -> m ()
+setTag self val = liftDOM (void ((js_setTag (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tag\"]; })"
+        js_getTag :: GetNotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-getnotificationoptions-tag GetNotificationOptions.tag specification>
+getTag :: (MonadDOM m, FromJSString result) => GetNotificationOptions -> m (Maybe result)
+getTag self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTag (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-getnotificationoptions-tag GetNotificationOptions.tag specification>
+getTagUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => GetNotificationOptions -> m result
+getTagUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTag (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-getnotificationoptions-tag GetNotificationOptions.tag specification>
+getTagUnchecked :: (MonadDOM m, FromJSString result) => GetNotificationOptions -> m result
+getTagUnchecked self = liftDOM ((pFromJSVal <$> (js_getTag (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GetRootNodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/GetRootNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GetRootNodeOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.GetRootNodeOptions
+       (js_newGetRootNodeOptions, js_setComposed, js_getComposed, newGetRootNodeOptions, setComposed, getComposed, getComposedUnsafe, getComposedUnchecked, GetRootNodeOptions(..), gTypeGetRootNodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newGetRootNodeOptions :: IO GetRootNodeOptions
+-- | <https://dom.spec.whatwg.org/#dictdef-getrootnodeoptions GetRootNodeOptions specification>
+newGetRootNodeOptions :: (MonadDOM m) => m GetRootNodeOptions
+newGetRootNodeOptions = liftDOM ((js_newGetRootNodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"composed\"] = $2; })"
+        js_setComposed :: GetRootNodeOptions -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-getrootnodeoptions-composed GetRootNodeOptions.composed specification>
+setComposed :: (MonadDOM m) => GetRootNodeOptions -> Bool -> m ()
+setComposed self val = liftDOM (void ((js_setComposed (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"composed\"]; })"
+        js_getComposed :: GetRootNodeOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-getrootnodeoptions-composed GetRootNodeOptions.composed specification>
+getComposed :: (MonadDOM m) => GetRootNodeOptions -> m (Maybe Bool)
+getComposed self = liftDOM (((js_getComposed (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-getrootnodeoptions-composed GetRootNodeOptions.composed specification>
+getComposedUnsafe :: (MonadDOM m, HasCallStack) => GetRootNodeOptions -> m Bool
+getComposedUnsafe self = liftDOM ((((js_getComposed (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-getrootnodeoptions-composed GetRootNodeOptions.composed specification>
+getComposedUnchecked :: (MonadDOM m) => GetRootNodeOptions -> m Bool
+getComposedUnchecked self = liftDOM ((pFromJSVal <$> (js_getComposed (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.GlobalCrypto
-       (js_getCrypto, getCrypto, GlobalCrypto(..), gTypeGlobalCrypto,
-        IsGlobalCrypto, toGlobalCrypto)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"crypto\"]; })" js_getCrypto ::
-        GlobalCrypto -> IO Crypto
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalCrypto.crypto Mozilla GlobalCrypto.crypto documentation> 
-getCrypto :: (MonadIO m, IsGlobalCrypto self) => self -> m Crypto
-getCrypto self = liftIO (js_getCrypto (toGlobalCrypto self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
@@ -1,528 +1,397 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers
-       (abort, autocomplete, autocompleteerror, blur, canPlay,
-        canPlayThrough, change, click, contextMenu, cueChange, dblClick,
-        drag, dragEnd, dragEnter, dragLeave, dragOver, dragStart, drop,
-        durationChange, emptied, ended, error, focus, input, invalid,
-        keyDown, keyPress, keyUp, load, loadedData, loadedMetadata,
-        loadStart, mouseDown, mouseEnter, mouseLeave, mouseMove, mouseOut,
-        mouseOver, mouseUp, mouseWheel, pause, play, playing, progress,
-        rateChange, rejectionhandled, reset, resize, scroll, seeked,
-        seeking, select, stalled, submit, suspend, timeUpdate, toggle,
-        unhandledrejection, volumeChange, waiting, transitionEnd,
-        animationEnd, animationIteration, animationStart, search, wheel,
-        touchCancel, touchEnd, touchMove, touchStart, touchForcechange,
-        webKitMouseForcechanged, webKitMouseForcedown,
-        webKitMouseForcewillbegin, webKitMouseForceup,
-        webKitWillRevealBottom, webKitWillRevealLeft,
-        webKitWillRevealRight, webKitWillRevealTop,
-        GlobalEventHandlers(..), gTypeGlobalEventHandlers,
-        IsGlobalEventHandlers, toGlobalEventHandlers)
+       (abort, auxclick, beforeinput, beforematch, beforetoggle, blur, canPlay, canPlayThrough, change, click, command, contextMenu, copy, cueChange, cut, dblClick, drag, dragEnd, dragEnter, dragLeave, dragOver, dragStart, drop, durationChange, emptied, ended, error, focus, input, invalid, keyDown, keyPress, keyUp, load, loadedData, loadedMetadata, loadStart, mouseDown, mouseEnter, mouseLeave, mouseMove, mouseOut, mouseOver, mouseUp, paste, pause, play, playing, progress, rateChange, reset, resize, scroll, scrollend, securitypolicyviolation, seeked, seeking, select, stalled, submit, suspend, timeUpdate, toggle, volumeChange, waiting, webKitAnimationEnd, webKitAnimationIteration, webKitAnimationStart, webKitTransitionEnd, wheel, animationStart, animationIteration, animationEnd, animationcancel, transitionrun, transitionstart, transitionEnd, transitioncancel, pointerover, pointerenter, pointerdown, pointermove, pointerrawupdate, pointerup, pointercancel, pointerout, pointerleave, gotpointercapture, lostpointercapture, selectStart, selectionchange, touchStart, touchEnd, touchMove, touchCancel, GlobalEventHandlers(..), gTypeGlobalEventHandlers, IsGlobalEventHandlers, toGlobalEventHandlers)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onabort Mozilla GlobalEventHandlers.onabort documentation> 
-abort ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onabort abort event>
+abort :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 abort = unsafeEventNameAsync (toJSString "abort")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onautocomplete Mozilla GlobalEventHandlers.onautocomplete documentation> 
-autocomplete ::
-             (IsGlobalEventHandlers self, IsEventTarget self) =>
-               EventName self onautocomplete
-autocomplete = unsafeEventName (toJSString "autocomplete")
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onauxclick auxclick event>
+auxclick :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+auxclick = unsafeEventName (toJSString "auxclick")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onautocompleteerror Mozilla GlobalEventHandlers.onautocompleteerror documentation> 
-autocompleteerror ::
-                  (IsGlobalEventHandlers self, IsEventTarget self) =>
-                    EventName self onautocompleteerror
-autocompleteerror
-  = unsafeEventName (toJSString "autocompleteerror")
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onbeforeinput beforeinput event>
+beforeinput :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self InputEvent
+beforeinput = unsafeEventName (toJSString "beforeinput")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onblur Mozilla GlobalEventHandlers.onblur documentation> 
-blur ::
-     (IsGlobalEventHandlers self, IsEventTarget self) =>
-       EventName self FocusEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onbeforematch beforematch event>
+beforematch :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+beforematch = unsafeEventName (toJSString "beforematch")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onbeforetoggle beforetoggle event>
+beforetoggle :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ToggleEvent
+beforetoggle = unsafeEventName (toJSString "beforetoggle")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onblur blur event>
+blur :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self FocusEvent
 blur = unsafeEventNameAsync (toJSString "blur")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncanplay Mozilla GlobalEventHandlers.oncanplay documentation> 
-canPlay ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oncanplay canplay event>
+canPlay :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 canPlay = unsafeEventName (toJSString "canplay")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncanplaythrough Mozilla GlobalEventHandlers.oncanplaythrough documentation> 
-canPlayThrough ::
-               (IsGlobalEventHandlers self, IsEventTarget self) =>
-                 EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oncanplaythrough canplaythrough event>
+canPlayThrough :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 canPlayThrough = unsafeEventName (toJSString "canplaythrough")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onchange Mozilla GlobalEventHandlers.onchange documentation> 
-change ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onchange change event>
+change :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 change = unsafeEventName (toJSString "change")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onclick Mozilla GlobalEventHandlers.onclick documentation> 
-click ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onclick click event>
+click :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
 click = unsafeEventName (toJSString "click")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncontextmenu Mozilla GlobalEventHandlers.oncontextmenu documentation> 
-contextMenu ::
-            (IsGlobalEventHandlers self, IsEventTarget self) =>
-              EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oncommand command event>
+command :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self CommandEvent
+command = unsafeEventName (toJSString "command")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oncontextmenu contextmenu event>
+contextMenu :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
 contextMenu = unsafeEventName (toJSString "contextmenu")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncuechange Mozilla GlobalEventHandlers.oncuechange documentation> 
-cueChange ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oncopy copy event>
+copy :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ClipboardEvent
+copy = unsafeEventName (toJSString "copy")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oncuechange cuechange event>
+cueChange :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 cueChange = unsafeEventName (toJSString "cuechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondblclick Mozilla GlobalEventHandlers.ondblclick documentation> 
-dblClick ::
-         (IsGlobalEventHandlers self, IsEventTarget self) =>
-           EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oncut cut event>
+cut :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ClipboardEvent
+cut = unsafeEventName (toJSString "cut")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondblclick dblclick event>
+dblClick :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 dblClick = unsafeEventName (toJSString "dblclick")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondrag Mozilla GlobalEventHandlers.ondrag documentation> 
-drag ::
-     (IsGlobalEventHandlers self, IsEventTarget self) =>
-       EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondrag drag event>
+drag :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent
 drag = unsafeEventName (toJSString "drag")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragend Mozilla GlobalEventHandlers.ondragend documentation> 
-dragEnd ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondragend dragend event>
+dragEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent
 dragEnd = unsafeEventName (toJSString "dragend")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragenter Mozilla GlobalEventHandlers.ondragenter documentation> 
-dragEnter ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondragenter dragenter event>
+dragEnter :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent
 dragEnter = unsafeEventName (toJSString "dragenter")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragleave Mozilla GlobalEventHandlers.ondragleave documentation> 
-dragLeave ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondragleave dragleave event>
+dragLeave :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent
 dragLeave = unsafeEventName (toJSString "dragleave")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragover Mozilla GlobalEventHandlers.ondragover documentation> 
-dragOver ::
-         (IsGlobalEventHandlers self, IsEventTarget self) =>
-           EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondragover dragover event>
+dragOver :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent
 dragOver = unsafeEventName (toJSString "dragover")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragstart Mozilla GlobalEventHandlers.ondragstart documentation> 
-dragStart ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondragstart dragstart event>
+dragStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent
 dragStart = unsafeEventName (toJSString "dragstart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondrop Mozilla GlobalEventHandlers.ondrop documentation> 
-drop ::
-     (IsGlobalEventHandlers self, IsEventTarget self) =>
-       EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondrop drop event>
+drop :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent
 drop = unsafeEventName (toJSString "drop")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondurationchange Mozilla GlobalEventHandlers.ondurationchange documentation> 
-durationChange ::
-               (IsGlobalEventHandlers self, IsEventTarget self) =>
-                 EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ondurationchange durationchange event>
+durationChange :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 durationChange = unsafeEventName (toJSString "durationchange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onemptied Mozilla GlobalEventHandlers.onemptied documentation> 
-emptied ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onemptied emptied event>
+emptied :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 emptied = unsafeEventName (toJSString "emptied")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onended Mozilla GlobalEventHandlers.onended documentation> 
-ended ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onended ended event>
+ended :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 ended = unsafeEventName (toJSString "ended")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onerror Mozilla GlobalEventHandlers.onerror documentation> 
-error ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onerror error event>
+error :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onfocus Mozilla GlobalEventHandlers.onfocus documentation> 
-focus ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self FocusEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onfocus focus event>
+focus :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self FocusEvent
 focus = unsafeEventNameAsync (toJSString "focus")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninput Mozilla GlobalEventHandlers.oninput documentation> 
-input ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oninput input event>
+input :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self InputEvent
 input = unsafeEventName (toJSString "input")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninvalid Mozilla GlobalEventHandlers.oninvalid documentation> 
-invalid ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-oninvalid invalid event>
+invalid :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 invalid = unsafeEventName (toJSString "invalid")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeydown Mozilla GlobalEventHandlers.onkeydown documentation> 
-keyDown ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self KeyboardEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onkeydown keydown event>
+keyDown :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self KeyboardEvent
 keyDown = unsafeEventName (toJSString "keydown")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeypress Mozilla GlobalEventHandlers.onkeypress documentation> 
-keyPress ::
-         (IsGlobalEventHandlers self, IsEventTarget self) =>
-           EventName self KeyboardEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onkeypress keypress event>
+keyPress :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self KeyboardEvent
 keyPress = unsafeEventName (toJSString "keypress")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeyup Mozilla GlobalEventHandlers.onkeyup documentation> 
-keyUp ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self KeyboardEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onkeyup keyup event>
+keyUp :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self KeyboardEvent
 keyUp = unsafeEventName (toJSString "keyup")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onload Mozilla GlobalEventHandlers.onload documentation> 
-load ::
-     (IsGlobalEventHandlers self, IsEventTarget self) =>
-       EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onload load event>
+load :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 load = unsafeEventNameAsync (toJSString "load")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onloadeddata Mozilla GlobalEventHandlers.onloadeddata documentation> 
-loadedData ::
-           (IsGlobalEventHandlers self, IsEventTarget self) =>
-             EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onloadeddata loadeddata event>
+loadedData :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 loadedData = unsafeEventName (toJSString "loadeddata")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onloadedmetadata Mozilla GlobalEventHandlers.onloadedmetadata documentation> 
-loadedMetadata ::
-               (IsGlobalEventHandlers self, IsEventTarget self) =>
-                 EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onloadedmetadata loadedmetadata event>
+loadedMetadata :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 loadedMetadata = unsafeEventName (toJSString "loadedmetadata")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onloadstart Mozilla GlobalEventHandlers.onloadstart documentation> 
-loadStart ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self ProgressEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onloadstart loadstart event>
+loadStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 loadStart = unsafeEventNameAsync (toJSString "loadstart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmousedown Mozilla GlobalEventHandlers.onmousedown documentation> 
-mouseDown ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onmousedown mousedown event>
+mouseDown :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 mouseDown = unsafeEventName (toJSString "mousedown")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseenter Mozilla GlobalEventHandlers.onmouseenter documentation> 
-mouseEnter ::
-           (IsGlobalEventHandlers self, IsEventTarget self) =>
-             EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onmouseenter mouseenter event>
+mouseEnter :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 mouseEnter = unsafeEventName (toJSString "mouseenter")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseleave Mozilla GlobalEventHandlers.onmouseleave documentation> 
-mouseLeave ::
-           (IsGlobalEventHandlers self, IsEventTarget self) =>
-             EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onmouseleave mouseleave event>
+mouseLeave :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 mouseLeave = unsafeEventName (toJSString "mouseleave")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmousemove Mozilla GlobalEventHandlers.onmousemove documentation> 
-mouseMove ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onmousemove mousemove event>
+mouseMove :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 mouseMove = unsafeEventName (toJSString "mousemove")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseout Mozilla GlobalEventHandlers.onmouseout documentation> 
-mouseOut ::
-         (IsGlobalEventHandlers self, IsEventTarget self) =>
-           EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onmouseout mouseout event>
+mouseOut :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 mouseOut = unsafeEventName (toJSString "mouseout")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseover Mozilla GlobalEventHandlers.onmouseover documentation> 
-mouseOver ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onmouseover mouseover event>
+mouseOver :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 mouseOver = unsafeEventName (toJSString "mouseover")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseup Mozilla GlobalEventHandlers.onmouseup documentation> 
-mouseUp ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self MouseEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onmouseup mouseup event>
+mouseUp :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent
 mouseUp = unsafeEventName (toJSString "mouseup")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmousewheel Mozilla GlobalEventHandlers.onmousewheel documentation> 
-mouseWheel ::
-           (IsGlobalEventHandlers self, IsEventTarget self) =>
-             EventName self MouseEvent
-mouseWheel = unsafeEventName (toJSString "mousewheel")
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onpaste paste event>
+paste :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ClipboardEvent
+paste = unsafeEventName (toJSString "paste")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onpause Mozilla GlobalEventHandlers.onpause documentation> 
-pause ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onpause pause event>
+pause :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 pause = unsafeEventName (toJSString "pause")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onplay Mozilla GlobalEventHandlers.onplay documentation> 
-play ::
-     (IsGlobalEventHandlers self, IsEventTarget self) =>
-       EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onplay play event>
+play :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 play = unsafeEventName (toJSString "play")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onplaying Mozilla GlobalEventHandlers.onplaying documentation> 
-playing ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onplaying playing event>
+playing :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 playing = unsafeEventName (toJSString "playing")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onprogress Mozilla GlobalEventHandlers.onprogress documentation> 
-progress ::
-         (IsGlobalEventHandlers self, IsEventTarget self) =>
-           EventName self ProgressEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onprogress progress event>
+progress :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 progress = unsafeEventNameAsync (toJSString "progress")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onratechange Mozilla GlobalEventHandlers.onratechange documentation> 
-rateChange ::
-           (IsGlobalEventHandlers self, IsEventTarget self) =>
-             EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onratechange ratechange event>
+rateChange :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 rateChange = unsafeEventName (toJSString "ratechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onrejectionhandled Mozilla GlobalEventHandlers.onrejectionhandled documentation> 
-rejectionhandled ::
-                 (IsGlobalEventHandlers self, IsEventTarget self) =>
-                   EventName self onrejectionhandled
-rejectionhandled = unsafeEventName (toJSString "rejectionhandled")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onreset Mozilla GlobalEventHandlers.onreset documentation> 
-reset ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onreset reset event>
+reset :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 reset = unsafeEventName (toJSString "reset")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onresize Mozilla GlobalEventHandlers.onresize documentation> 
-resize ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onresize resize event>
+resize :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 resize = unsafeEventName (toJSString "resize")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onscroll Mozilla GlobalEventHandlers.onscroll documentation> 
-scroll ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onscroll scroll event>
+scroll :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 scroll = unsafeEventName (toJSString "scroll")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onseeked Mozilla GlobalEventHandlers.onseeked documentation> 
-seeked ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onscrollend scrollend event>
+scrollend :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+scrollend = unsafeEventName (toJSString "scrollend")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onsecuritypolicyviolation securitypolicyviolation event>
+securitypolicyviolation :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self SecurityPolicyViolationEvent
+securitypolicyviolation = unsafeEventName (toJSString "securitypolicyviolation")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onseeked seeked event>
+seeked :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 seeked = unsafeEventName (toJSString "seeked")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onseeking Mozilla GlobalEventHandlers.onseeking documentation> 
-seeking ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onseeking seeking event>
+seeking :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 seeking = unsafeEventName (toJSString "seeking")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onselect Mozilla GlobalEventHandlers.onselect documentation> 
-select ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onselect select event>
+select :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 select = unsafeEventName (toJSString "select")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onstalled Mozilla GlobalEventHandlers.onstalled documentation> 
-stalled ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onstalled stalled event>
+stalled :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 stalled = unsafeEventName (toJSString "stalled")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onsubmit Mozilla GlobalEventHandlers.onsubmit documentation> 
-submit ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onsubmit submit event>
+submit :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self SubmitEvent
 submit = unsafeEventName (toJSString "submit")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onsuspend Mozilla GlobalEventHandlers.onsuspend documentation> 
-suspend ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onsuspend suspend event>
+suspend :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 suspend = unsafeEventName (toJSString "suspend")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontimeupdate Mozilla GlobalEventHandlers.ontimeupdate documentation> 
-timeUpdate ::
-           (IsGlobalEventHandlers self, IsEventTarget self) =>
-             EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ontimeupdate timeupdate event>
+timeUpdate :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 timeUpdate = unsafeEventName (toJSString "timeupdate")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontoggle Mozilla GlobalEventHandlers.ontoggle documentation> 
-toggle ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self ontoggle
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-ontoggle toggle event>
+toggle :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ToggleEvent
 toggle = unsafeEventName (toJSString "toggle")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onunhandledrejection Mozilla GlobalEventHandlers.onunhandledrejection documentation> 
-unhandledrejection ::
-                   (IsGlobalEventHandlers self, IsEventTarget self) =>
-                     EventName self onunhandledrejection
-unhandledrejection
-  = unsafeEventName (toJSString "unhandledrejection")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onvolumechange Mozilla GlobalEventHandlers.onvolumechange documentation> 
-volumeChange ::
-             (IsGlobalEventHandlers self, IsEventTarget self) =>
-               EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onvolumechange volumechange event>
+volumeChange :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 volumeChange = unsafeEventName (toJSString "volumechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwaiting Mozilla GlobalEventHandlers.onwaiting documentation> 
-waiting ::
-        (IsGlobalEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onwaiting waiting event>
+waiting :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
 waiting = unsafeEventName (toJSString "waiting")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontransitionend Mozilla GlobalEventHandlers.ontransitionend documentation> 
-transitionEnd ::
-              (IsGlobalEventHandlers self, IsEventTarget self) =>
-                EventName self TransitionEvent
-transitionEnd = unsafeEventName (toJSString "transitionend")
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onwebkitanimationend webkitanimationend event>
+webKitAnimationEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+webKitAnimationEnd = unsafeEventName (toJSString "webkitanimationend")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onanimationend Mozilla GlobalEventHandlers.onanimationend documentation> 
-animationEnd ::
-             (IsGlobalEventHandlers self, IsEventTarget self) =>
-               EventName self AnimationEvent
-animationEnd = unsafeEventName (toJSString "animationend")
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onwebkitanimationiteration webkitanimationiteration event>
+webKitAnimationIteration :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+webKitAnimationIteration = unsafeEventName (toJSString "webkitanimationiteration")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onanimationiteration Mozilla GlobalEventHandlers.onanimationiteration documentation> 
-animationIteration ::
-                   (IsGlobalEventHandlers self, IsEventTarget self) =>
-                     EventName self AnimationEvent
-animationIteration
-  = unsafeEventName (toJSString "animationiteration")
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onwebkitanimationstart webkitanimationstart event>
+webKitAnimationStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+webKitAnimationStart = unsafeEventName (toJSString "webkitanimationstart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onanimationstart Mozilla GlobalEventHandlers.onanimationstart documentation> 
-animationStart ::
-               (IsGlobalEventHandlers self, IsEventTarget self) =>
-                 EventName self AnimationEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onwebkittransitionend webkittransitionend event>
+webKitTransitionEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+webKitTransitionEnd = unsafeEventName (toJSString "webkittransitionend")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-onwheel wheel event>
+wheel :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-globaleventhandlers-onanimationstart animationstart event>
+animationStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self AnimationEvent
 animationStart = unsafeEventName (toJSString "animationstart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onsearch Mozilla GlobalEventHandlers.onsearch documentation> 
-search ::
-       (IsGlobalEventHandlers self, IsEventTarget self) =>
-         EventName self Event
-search = unsafeEventName (toJSString "search")
+-- | <https://drafts.csswg.org/css-animations-1/#dom-globaleventhandlers-onanimationiteration animationiteration event>
+animationIteration :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self AnimationEvent
+animationIteration = unsafeEventName (toJSString "animationiteration")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwheel Mozilla GlobalEventHandlers.onwheel documentation> 
-wheel ::
-      (IsGlobalEventHandlers self, IsEventTarget self) =>
-        EventName self WheelEvent
-wheel = unsafeEventName (toJSString "wheel")
+-- | <https://drafts.csswg.org/css-animations-1/#dom-globaleventhandlers-onanimationend animationend event>
+animationEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self AnimationEvent
+animationEnd = unsafeEventName (toJSString "animationend")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchcancel Mozilla GlobalEventHandlers.ontouchcancel documentation> 
-touchCancel ::
-            (IsGlobalEventHandlers self, IsEventTarget self) =>
-              EventName self TouchEvent
-touchCancel = unsafeEventName (toJSString "touchcancel")
+-- | <https://drafts.csswg.org/css-animations-1/#dom-globaleventhandlers-onanimationcancel animationcancel event>
+animationcancel :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self AnimationEvent
+animationcancel = unsafeEventName (toJSString "animationcancel")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchend Mozilla GlobalEventHandlers.ontouchend documentation> 
-touchEnd ::
-         (IsGlobalEventHandlers self, IsEventTarget self) =>
-           EventName self TouchEvent
-touchEnd = unsafeEventName (toJSString "touchend")
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-globaleventhandlers-ontransitionrun transitionrun event>
+transitionrun :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TransitionEvent
+transitionrun = unsafeEventName (toJSString "transitionrun")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchmove Mozilla GlobalEventHandlers.ontouchmove documentation> 
-touchMove ::
-          (IsGlobalEventHandlers self, IsEventTarget self) =>
-            EventName self TouchEvent
-touchMove = unsafeEventName (toJSString "touchmove")
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-globaleventhandlers-ontransitionstart transitionstart event>
+transitionstart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TransitionEvent
+transitionstart = unsafeEventName (toJSString "transitionstart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchstart Mozilla GlobalEventHandlers.ontouchstart documentation> 
-touchStart ::
-           (IsGlobalEventHandlers self, IsEventTarget self) =>
-             EventName self TouchEvent
-touchStart = unsafeEventName (toJSString "touchstart")
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-globaleventhandlers-ontransitionend transitionend event>
+transitionEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TransitionEvent
+transitionEnd = unsafeEventName (toJSString "transitionend")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchforcechange Mozilla GlobalEventHandlers.ontouchforcechange documentation> 
-touchForcechange ::
-                 (IsGlobalEventHandlers self, IsEventTarget self) =>
-                   EventName self ontouchforcechange
-touchForcechange = unsafeEventName (toJSString "touchforcechange")
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-globaleventhandlers-ontransitioncancel transitioncancel event>
+transitioncancel :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TransitionEvent
+transitioncancel = unsafeEventName (toJSString "transitioncancel")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforcechanged Mozilla GlobalEventHandlers.onwebkitmouseforcechanged documentation> 
-webKitMouseForcechanged ::
-                        (IsGlobalEventHandlers self, IsEventTarget self) =>
-                          EventName self onwebkitmouseforcechanged
-webKitMouseForcechanged
-  = unsafeEventName (toJSString "webkitmouseforcechanged")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointerover pointerover event>
+pointerover :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointerover = unsafeEventName (toJSString "pointerover")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforcedown Mozilla GlobalEventHandlers.onwebkitmouseforcedown documentation> 
-webKitMouseForcedown ::
-                     (IsGlobalEventHandlers self, IsEventTarget self) =>
-                       EventName self onwebkitmouseforcedown
-webKitMouseForcedown
-  = unsafeEventName (toJSString "webkitmouseforcedown")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointerenter pointerenter event>
+pointerenter :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointerenter = unsafeEventName (toJSString "pointerenter")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforcewillbegin Mozilla GlobalEventHandlers.onwebkitmouseforcewillbegin documentation> 
-webKitMouseForcewillbegin ::
-                          (IsGlobalEventHandlers self, IsEventTarget self) =>
-                            EventName self onwebkitmouseforcewillbegin
-webKitMouseForcewillbegin
-  = unsafeEventName (toJSString "webkitmouseforcewillbegin")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointerdown pointerdown event>
+pointerdown :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointerdown = unsafeEventName (toJSString "pointerdown")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforceup Mozilla GlobalEventHandlers.onwebkitmouseforceup documentation> 
-webKitMouseForceup ::
-                   (IsGlobalEventHandlers self, IsEventTarget self) =>
-                     EventName self onwebkitmouseforceup
-webKitMouseForceup
-  = unsafeEventName (toJSString "webkitmouseforceup")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointermove pointermove event>
+pointermove :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointermove = unsafeEventName (toJSString "pointermove")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealbottom Mozilla GlobalEventHandlers.onwebkitwillrevealbottom documentation> 
-webKitWillRevealBottom ::
-                       (IsGlobalEventHandlers self, IsEventTarget self) =>
-                         EventName self Event
-webKitWillRevealBottom
-  = unsafeEventName (toJSString "webkitwillrevealbottom")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointerrawupdate pointerrawupdate event>
+pointerrawupdate :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointerrawupdate = unsafeEventName (toJSString "pointerrawupdate")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealleft Mozilla GlobalEventHandlers.onwebkitwillrevealleft documentation> 
-webKitWillRevealLeft ::
-                     (IsGlobalEventHandlers self, IsEventTarget self) =>
-                       EventName self Event
-webKitWillRevealLeft
-  = unsafeEventName (toJSString "webkitwillrevealleft")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointerup pointerup event>
+pointerup :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointerup = unsafeEventName (toJSString "pointerup")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealright Mozilla GlobalEventHandlers.onwebkitwillrevealright documentation> 
-webKitWillRevealRight ::
-                      (IsGlobalEventHandlers self, IsEventTarget self) =>
-                        EventName self Event
-webKitWillRevealRight
-  = unsafeEventName (toJSString "webkitwillrevealright")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointercancel pointercancel event>
+pointercancel :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointercancel = unsafeEventName (toJSString "pointercancel")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealtop Mozilla GlobalEventHandlers.onwebkitwillrevealtop documentation> 
-webKitWillRevealTop ::
-                    (IsGlobalEventHandlers self, IsEventTarget self) =>
-                      EventName self Event
-webKitWillRevealTop
-  = unsafeEventName (toJSString "webkitwillrevealtop")
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointerout pointerout event>
+pointerout :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointerout = unsafeEventName (toJSString "pointerout")
+
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onpointerleave pointerleave event>
+pointerleave :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+pointerleave = unsafeEventName (toJSString "pointerleave")
+
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-ongotpointercapture gotpointercapture event>
+gotpointercapture :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+gotpointercapture = unsafeEventName (toJSString "gotpointercapture")
+
+-- | <https://w3c.github.io/pointerevents/#dom-globaleventhandlers-onlostpointercapture lostpointercapture event>
+lostpointercapture :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent
+lostpointercapture = unsafeEventName (toJSString "lostpointercapture")
+
+-- | <https://w3c.github.io/selection-api/#dom-globaleventhandlers-onselectstart selectstart event>
+selectStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+selectStart = unsafeEventName (toJSString "selectstart")
+
+-- | <https://w3c.github.io/selection-api/#dom-globaleventhandlers-onselectionchange selectionchange event>
+selectionchange :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event
+selectionchange = unsafeEventName (toJSString "selectionchange")
+
+-- | <https://w3c.github.io/touch-events/#dom-globaleventhandlers-ontouchstart touchstart event>
+touchStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://w3c.github.io/touch-events/#dom-globaleventhandlers-ontouchend touchend event>
+touchEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://w3c.github.io/touch-events/#dom-globaleventhandlers-ontouchmove touchmove event>
+touchMove :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://w3c.github.io/touch-events/#dom-globaleventhandlers-ontouchcancel touchcancel event>
+touchCancel :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.GlobalPerformance
-       (js_getPerformance, getPerformance, GlobalPerformance(..),
-        gTypeGlobalPerformance, IsGlobalPerformance, toGlobalPerformance)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"performance\"]; })"
-        js_getPerformance :: GlobalPerformance -> IO Performance
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalPerformance.performance Mozilla GlobalPerformance.performance documentation> 
-getPerformance ::
-               (MonadIO m, IsGlobalPerformance self) => self -> m Performance
-getPerformance self
-  = liftIO (js_getPerformance (toGlobalPerformance self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HMACGetSecretInput.hs b/src/GHCJS/DOM/JSFFI/Generated/HMACGetSecretInput.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HMACGetSecretInput.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fido-client-to-authenticator-protocol-v2.3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HMACGetSecretInput
+       (js_newHMACGetSecretInput, js_setSalt1, js_getSalt1, js_setSalt2, js_getSalt2, newHMACGetSecretInput, setSalt1, getSalt1, setSalt2, getSalt2, getSalt2Unsafe, getSalt2Unchecked, HMACGetSecretInput(..), gTypeHMACGetSecretInput)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"salt1\": $1}); })"
+        js_newHMACGetSecretInput :: ArrayBuffer -> IO HMACGetSecretInput
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dictdef-hmacgetsecretinput HMACGetSecretInput specification>
+newHMACGetSecretInput :: (MonadDOM m, IsArrayBuffer salt1) => salt1 -> m HMACGetSecretInput
+newHMACGetSecretInput salt1 = liftDOM ((js_newHMACGetSecretInput (Types.toArrayBuffer salt1)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"salt1\"] = $2; })"
+        js_setSalt1 :: HMACGetSecretInput -> ArrayBuffer -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretinput-salt1 HMACGetSecretInput.salt1 specification>
+setSalt1 :: (MonadDOM m, IsArrayBuffer val) => HMACGetSecretInput -> val -> m ()
+setSalt1 self val = liftDOM (void ((js_setSalt1 (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"salt1\"]; })"
+        js_getSalt1 :: HMACGetSecretInput -> IO ArrayBuffer
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretinput-salt1 HMACGetSecretInput.salt1 specification>
+getSalt1 :: (MonadDOM m) => HMACGetSecretInput -> m ArrayBuffer
+getSalt1 self = liftDOM ((js_getSalt1 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"salt2\"] = $2; })"
+        js_setSalt2 :: HMACGetSecretInput -> ArrayBuffer -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretinput-salt2 HMACGetSecretInput.salt2 specification>
+setSalt2 :: (MonadDOM m, IsArrayBuffer val) => HMACGetSecretInput -> val -> m ()
+setSalt2 self val = liftDOM (void ((js_setSalt2 (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"salt2\"]; })"
+        js_getSalt2 :: HMACGetSecretInput -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretinput-salt2 HMACGetSecretInput.salt2 specification>
+getSalt2 :: (MonadDOM m) => HMACGetSecretInput -> m (Maybe ArrayBuffer)
+getSalt2 self = liftDOM (((js_getSalt2 (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretinput-salt2 HMACGetSecretInput.salt2 specification>
+getSalt2Unsafe :: (MonadDOM m, HasCallStack) => HMACGetSecretInput -> m ArrayBuffer
+getSalt2Unsafe self = liftDOM ((((js_getSalt2 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretinput-salt2 HMACGetSecretInput.salt2 specification>
+getSalt2Unchecked :: (MonadDOM m) => HMACGetSecretInput -> m ArrayBuffer
+getSalt2Unchecked self = liftDOM ((pFromJSVal <$> (js_getSalt2 (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HMACGetSecretOutput.hs b/src/GHCJS/DOM/JSFFI/Generated/HMACGetSecretOutput.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HMACGetSecretOutput.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fido-client-to-authenticator-protocol-v2.3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HMACGetSecretOutput
+       (js_newHMACGetSecretOutput, js_setOutput1, js_getOutput1, js_setOutput2, js_getOutput2, newHMACGetSecretOutput, setOutput1, getOutput1, setOutput2, getOutput2, getOutput2Unsafe, getOutput2Unchecked, HMACGetSecretOutput(..), gTypeHMACGetSecretOutput)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"output1\": $1}); })"
+        js_newHMACGetSecretOutput :: ArrayBuffer -> IO HMACGetSecretOutput
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dictdef-hmacgetsecretoutput HMACGetSecretOutput specification>
+newHMACGetSecretOutput :: (MonadDOM m, IsArrayBuffer output1) => output1 -> m HMACGetSecretOutput
+newHMACGetSecretOutput output1 = liftDOM ((js_newHMACGetSecretOutput (Types.toArrayBuffer output1)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"output1\"] = $2; })"
+        js_setOutput1 :: HMACGetSecretOutput -> ArrayBuffer -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretoutput-output1 HMACGetSecretOutput.output1 specification>
+setOutput1 :: (MonadDOM m, IsArrayBuffer val) => HMACGetSecretOutput -> val -> m ()
+setOutput1 self val = liftDOM (void ((js_setOutput1 (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"output1\"]; })"
+        js_getOutput1 :: HMACGetSecretOutput -> IO ArrayBuffer
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretoutput-output1 HMACGetSecretOutput.output1 specification>
+getOutput1 :: (MonadDOM m) => HMACGetSecretOutput -> m ArrayBuffer
+getOutput1 self = liftDOM ((js_getOutput1 (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"output2\"] = $2; })"
+        js_setOutput2 :: HMACGetSecretOutput -> ArrayBuffer -> IO ()
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretoutput-output2 HMACGetSecretOutput.output2 specification>
+setOutput2 :: (MonadDOM m, IsArrayBuffer val) => HMACGetSecretOutput -> val -> m ()
+setOutput2 self val = liftDOM (void ((js_setOutput2 (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"output2\"]; })"
+        js_getOutput2 :: HMACGetSecretOutput -> IO JSVal
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretoutput-output2 HMACGetSecretOutput.output2 specification>
+getOutput2 :: (MonadDOM m) => HMACGetSecretOutput -> m (Maybe ArrayBuffer)
+getOutput2 self = liftDOM (((js_getOutput2 (self)) >>= fromJSValUnchecked))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretoutput-output2 HMACGetSecretOutput.output2 specification>
+getOutput2Unsafe :: (MonadDOM m, HasCallStack) => HMACGetSecretOutput -> m ArrayBuffer
+getOutput2Unsafe self = liftDOM ((((js_getOutput2 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fidoalliance.org/specs/fido-v2.3-ps-20260226/fido-client-to-authenticator-protocol-v2.3-ps-20260226.html#dom-hmacgetsecretoutput-output2 HMACGetSecretOutput.output2 specification>
+getOutput2Unchecked :: (MonadDOM m) => HMACGetSecretOutput -> m ArrayBuffer
+getOutput2Unchecked self = liftDOM ((pFromJSVal <$> (js_getOutput2 (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
@@ -1,98 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        js_getLength, getLength, HTMLAllCollection(..),
-        gTypeHTMLAllCollection)
+       (js_item, js_namedItem, js_getLength, item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, getLength, HTMLAllCollection(..), gTypeHTMLAllCollection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        HTMLAllCollection -> Word -> IO (Nullable Element)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
-item ::
-     (MonadIO m) => HTMLAllCollection -> Word -> m (Maybe Element)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: HTMLAllCollection -> (Optional JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/item MDN HTMLAllCollection.item documentation>
+item :: (MonadDOM m, ToJSString nameOrIndex) => HTMLAllCollection -> Maybe nameOrIndex -> m (Maybe HTMLCollectionOrElement)
+item self nameOrIndex = liftDOM (((js_item (self) (toOptionalJSString nameOrIndex)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
-item_ :: (MonadIO m) => HTMLAllCollection -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/item MDN HTMLAllCollection.item documentation>
+item_ :: (MonadDOM m, ToJSString nameOrIndex) => HTMLAllCollection -> Maybe nameOrIndex -> m ()
+item_ self nameOrIndex = liftDOM (void ((js_item (self) (toOptionalJSString nameOrIndex))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => HTMLAllCollection -> Word -> m Element
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/item MDN HTMLAllCollection.item documentation>
+itemUnsafe :: (MonadDOM m, ToJSString nameOrIndex, HasCallStack) => HTMLAllCollection -> Maybe nameOrIndex -> m HTMLCollectionOrElement
+itemUnsafe self nameOrIndex = liftDOM ((((js_item (self) (toOptionalJSString nameOrIndex)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
-itemUnchecked ::
-              (MonadIO m) => HTMLAllCollection -> Word -> m Element
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        HTMLAllCollection ->
-          JSString -> IO (Nullable HTMLCollectionOrElement)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/item MDN HTMLAllCollection.item documentation>
+itemUnchecked :: (MonadDOM m, ToJSString nameOrIndex) => HTMLAllCollection -> Maybe nameOrIndex -> m HTMLCollectionOrElement
+itemUnchecked self nameOrIndex = liftDOM ((pFromJSVal <$> (js_item (self) (toOptionalJSString nameOrIndex))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            HTMLAllCollection -> name -> m (Maybe HTMLCollectionOrElement)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem :: HTMLAllCollection -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/namedItem MDN HTMLAllCollection.namedItem documentation>
+namedItem :: (MonadDOM m, ToJSString name) => HTMLAllCollection -> name -> m (Maybe HTMLCollectionOrElement)
+namedItem self name = liftDOM (((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) => HTMLAllCollection -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/namedItem MDN HTMLAllCollection.namedItem documentation>
+namedItem_ :: (MonadDOM m, ToJSString name) => HTMLAllCollection -> name -> m ()
+namedItem_ self name = liftDOM (void ((js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  HTMLAllCollection -> name -> m HTMLCollectionOrElement
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/namedItem MDN HTMLAllCollection.namedItem documentation>
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => HTMLAllCollection -> name -> m HTMLCollectionOrElement
+namedItemUnsafe self name = liftDOM ((((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) =>
-                     HTMLAllCollection -> name -> m HTMLCollectionOrElement
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        HTMLAllCollection -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/namedItem MDN HTMLAllCollection.namedItem documentation>
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => HTMLAllCollection -> name -> m HTMLCollectionOrElement
+namedItemUnchecked self name = liftDOM ((pFromJSVal <$> (js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.length Mozilla HTMLAllCollection.length documentation> 
-getLength :: (MonadIO m) => HTMLAllCollection -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: HTMLAllCollection -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/length MDN HTMLAllCollection.length documentation>
+getLength :: (MonadDOM m) => HTMLAllCollection -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
@@ -1,237 +1,143 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
-       (js_setCharset, setCharset, js_getCharset, getCharset,
-        js_setCoords, setCoords, js_getCoords, getCoords, js_setDownload,
-        setDownload, js_getDownload, getDownload, js_setHreflang,
-        setHreflang, js_getHreflang, getHreflang, js_setName, setName,
-        js_getName, getName, js_setPing, setPing, js_getPing, getPing,
-        js_setRel, setRel, js_getRel, getRel, js_setRev, setRev, js_getRev,
-        getRev, js_setShape, setShape, js_getShape, getShape, js_setTarget,
-        setTarget, js_getTarget, getTarget, js_setType, setType,
-        js_getType, getType, js_setText, setText, js_getText, getText,
-        js_getRelList, getRelList, HTMLAnchorElement(..),
-        gTypeHTMLAnchorElement)
+       (js_setDownload, js_getDownload, js_setPing, js_getPing, js_setRel, js_getRel, js_getRelList, js_setText, js_getText, js_setReferrerPolicy, js_getReferrerPolicy, js_setCoords, js_getCoords, js_setCharset, js_getCharset, js_setName, js_getName, js_setRev, js_getRev, js_setShape, js_getShape, setDownload, getDownload, setPing, getPing, setRel, getRel, getRelList, setText, getText, setReferrerPolicy, getReferrerPolicy, setCoords, getCoords, setCharset, getCharset, setName, getName, setRev, getRev, setShape, getShape, HTMLAnchorElement(..), gTypeHTMLAnchorElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"charset\"] = $2; })"
-        js_setCharset :: HTMLAnchorElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
-setCharset ::
-           (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setCharset self val = liftIO (js_setCharset self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
-        HTMLAnchorElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
-getCharset ::
-           (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getCharset self = liftIO (fromJSString <$> (js_getCharset self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"coords\"] = $2; })"
-        js_setCoords :: HTMLAnchorElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
-setCoords ::
-          (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setCoords self val = liftIO (js_setCoords self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })" js_getCoords ::
-        HTMLAnchorElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
-getCoords ::
-          (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getCoords self = liftIO (fromJSString <$> (js_getCoords self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"download\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"download\"] = $2; })"
         js_setDownload :: HTMLAnchorElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
-setDownload ::
-            (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setDownload self val
-  = liftIO (js_setDownload self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"download\"]; })" js_getDownload
-        :: HTMLAnchorElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/download MDN HTMLAnchorElement.download documentation>
+setDownload :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setDownload self val = liftDOM (void ((js_setDownload (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
-getDownload ::
-            (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getDownload self = liftIO (fromJSString <$> (js_getDownload self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hreflang\"] = $2; })"
-        js_setHreflang :: HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"download\"]; })"
+        js_getDownload :: HTMLAnchorElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/download MDN HTMLAnchorElement.download documentation>
+getDownload :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getDownload self = liftDOM ((fromJSString <$> (js_getDownload (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
-setHreflang ::
-            (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setHreflang self val
-  = liftIO (js_setHreflang self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hreflang\"]; })" js_getHreflang
-        :: HTMLAnchorElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"ping\"] = $2; })"
+        js_setPing :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/ping MDN HTMLAnchorElement.ping documentation>
+setPing :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setPing self val = liftDOM (void ((js_setPing (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
-getHreflang ::
-            (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getHreflang self = liftIO (fromJSString <$> (js_getHreflang self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"ping\"]; })"
+        js_getPing :: HTMLAnchorElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/ping MDN HTMLAnchorElement.ping documentation>
+getPing :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getPing self = liftDOM ((fromJSString <$> (js_getPing (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"rel\"] = $2; })"
+        js_setRel :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/rel MDN HTMLAnchorElement.rel documentation>
+setRel :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setRel self val = liftDOM (void ((js_setRel (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"ping\"] = $2; })" js_setPing ::
-        HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })"
+        js_getRel :: HTMLAnchorElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/rel MDN HTMLAnchorElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getRel self = liftDOM ((fromJSString <$> (js_getRel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
-setPing ::
-        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setPing self val = liftIO (js_setPing self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ping\"]; })" js_getPing ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })"
+        js_getRelList :: HTMLAnchorElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/relList MDN HTMLAnchorElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLAnchorElement -> m DOMTokenList
+getRelList self = liftDOM ((js_getRelList (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
-getPing ::
-        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getPing self = liftIO (fromJSString <$> (js_getPing self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rel\"] = $2; })" js_setRel ::
-        HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/text MDN HTMLAnchorElement.text documentation>
+setText :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
-setRel ::
-       (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setRel self val = liftIO (js_setRel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })" js_getRel ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: HTMLAnchorElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/text MDN HTMLAnchorElement.text documentation>
+getText :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getText self = liftDOM ((fromJSString <$> (js_getText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
-getRel ::
-       (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getRel self = liftIO (fromJSString <$> (js_getRel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rev\"] = $2; })" js_setRev ::
-        HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/referrerPolicy MDN HTMLAnchorElement.referrerPolicy documentation>
+setReferrerPolicy :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setReferrerPolicy self val = liftDOM (void ((js_setReferrerPolicy (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
-setRev ::
-       (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setRev self val = liftIO (js_setRev self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rev\"]; })" js_getRev ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: HTMLAnchorElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/referrerPolicy MDN HTMLAnchorElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getReferrerPolicy self = liftDOM ((fromJSString <$> (js_getReferrerPolicy (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
-getRev ::
-       (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getRev self = liftIO (fromJSString <$> (js_getRev self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"shape\"] = $2; })" js_setShape
-        :: HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"coords\"] = $2; })"
+        js_setCoords :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-coords HTMLAnchorElement.coords specification>
+setCoords :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setCoords self val = liftDOM (void ((js_setCoords (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
-setShape ::
-         (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setShape self val = liftIO (js_setShape self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shape\"]; })" js_getShape ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })"
+        js_getCoords :: HTMLAnchorElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-coords HTMLAnchorElement.coords specification>
+getCoords :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getCoords self = liftDOM ((fromJSString <$> (js_getCoords (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
-getShape ::
-         (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getShape self = liftIO (fromJSString <$> (js_getShape self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
-        js_setTarget :: HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"charset\"] = $2; })"
+        js_setCharset :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-charset HTMLAnchorElement.charset specification>
+setCharset :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setCharset self val = liftDOM (void ((js_setCharset (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
-setTarget ::
-          (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setTarget self val = liftIO (js_setTarget self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })"
+        js_getCharset :: HTMLAnchorElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-charset HTMLAnchorElement.charset specification>
+getCharset :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getCharset self = liftDOM ((fromJSString <$> (js_getCharset (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
-getTarget ::
-          (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getTarget self = liftIO (fromJSString <$> (js_getTarget self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-name HTMLAnchorElement.name specification>
+setName :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLAnchorElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-name HTMLAnchorElement.name specification>
+getName :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
-        HTMLAnchorElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"rev\"] = $2; })"
+        js_setRev :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-rev HTMLAnchorElement.rev specification>
+setRev :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setRev self val = liftDOM (void ((js_setRev (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
-setText ::
-        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setText self val = liftIO (js_setText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
-        HTMLAnchorElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"rev\"]; })"
+        js_getRev :: HTMLAnchorElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-rev HTMLAnchorElement.rev specification>
+getRev :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getRev self = liftDOM ((fromJSString <$> (js_getRev (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
-getText ::
-        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
-getText self = liftIO (fromJSString <$> (js_getText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })" js_getRelList ::
-        HTMLAnchorElement -> IO DOMTokenList
+foreign import javascript safe "(($1, $2) => { $1[\"shape\"] = $2; })"
+        js_setShape :: HTMLAnchorElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-shape HTMLAnchorElement.shape specification>
+setShape :: (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setShape self val = liftDOM (void ((js_setShape (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.relList Mozilla HTMLAnchorElement.relList documentation> 
-getRelList :: (MonadIO m) => HTMLAnchorElement -> m DOMTokenList
-getRelList self = liftIO (js_getRelList self)
+foreign import javascript unsafe "(($1) => { return $1[\"shape\"]; })"
+        js_getShape :: HTMLAnchorElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-a-shape HTMLAnchorElement.shape specification>
+getShape :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getShape self = liftDOM ((fromJSString <$> (js_getShape (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs
+++ /dev/null
@@ -1,208 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.HTMLAppletElement
-       (js_setAlign, setAlign, js_getAlign, getAlign, js_setAlt, setAlt,
-        js_getAlt, getAlt, js_setArchive, setArchive, js_getArchive,
-        getArchive, js_setCode, setCode, js_getCode, getCode,
-        js_setCodeBase, setCodeBase, js_getCodeBase, getCodeBase,
-        js_setHeight, setHeight, js_getHeight, getHeight, js_setHspace,
-        setHspace, js_getHspace, getHspace, js_setName, setName,
-        js_getName, getName, js_setObject, setObject, js_getObject,
-        getObject, js_setVspace, setVspace, js_getVspace, getVspace,
-        js_setWidth, setWidth, js_getWidth, getWidth,
-        HTMLAppletElement(..), gTypeHTMLAppletElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
-        HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
-setAlt ::
-       (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setAlt self val = liftIO (js_setAlt self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
-getAlt ::
-       (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getAlt self = liftIO (fromJSString <$> (js_getAlt self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"archive\"] = $2; })"
-        js_setArchive :: HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
-setArchive ::
-           (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setArchive self val = liftIO (js_setArchive self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"archive\"]; })" js_getArchive ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
-getArchive ::
-           (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getArchive self = liftIO (fromJSString <$> (js_getArchive self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"code\"] = $2; })" js_setCode ::
-        HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
-setCode ::
-        (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setCode self val = liftIO (js_setCode self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
-getCode ::
-        (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getCode self = liftIO (fromJSString <$> (js_getCode self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"codeBase\"] = $2; })"
-        js_setCodeBase :: HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
-setCodeBase ::
-            (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setCodeBase self val
-  = liftIO (js_setCodeBase self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"codeBase\"]; })" js_getCodeBase
-        :: HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
-getCodeBase ::
-            (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getCodeBase self = liftIO (fromJSString <$> (js_getCodeBase self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
-        js_setHeight :: HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
-setHeight ::
-          (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setHeight self val = liftIO (js_setHeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
-getHeight ::
-          (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getHeight self = liftIO (fromJSString <$> (js_getHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
-        js_setHspace :: HTMLAppletElement -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
-setHspace :: (MonadIO m) => HTMLAppletElement -> Word -> m ()
-setHspace self val = liftIO (js_setHspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
-        HTMLAppletElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
-getHspace :: (MonadIO m) => HTMLAppletElement -> m Word
-getHspace self = liftIO (js_getHspace self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"object\"] = $2; })"
-        js_setObject :: HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
-setObject ::
-          (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setObject self val = liftIO (js_setObject self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"object\"]; })" js_getObject ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
-getObject ::
-          (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getObject self = liftIO (fromJSString <$> (js_getObject self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
-        js_setVspace :: HTMLAppletElement -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
-setVspace :: (MonadIO m) => HTMLAppletElement -> Word -> m ()
-setVspace self val = liftIO (js_setVspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
-        HTMLAppletElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
-getVspace :: (MonadIO m) => HTMLAppletElement -> m Word
-getVspace self = liftIO (js_getVspace self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLAppletElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLAppletElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
@@ -1,167 +1,119 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
-       (js_setAlt, setAlt, js_getAlt, getAlt, js_setCoords, setCoords,
-        js_getCoords, getCoords, js_setNoHref, setNoHref, js_getNoHref,
-        getNoHref, js_setPing, setPing, js_getPing, getPing, js_setRel,
-        setRel, js_getRel, getRel, js_setShape, setShape, js_getShape,
-        getShape, js_setTarget, setTarget, js_getTarget, getTarget,
-        js_setDownload, setDownload, js_getDownload, getDownload,
-        js_getRelList, getRelList, HTMLAreaElement(..),
-        gTypeHTMLAreaElement)
+       (js_setAlt, js_getAlt, js_setCoords, js_getCoords, js_setShape, js_getShape, js_setDownload, js_getDownload, js_setPing, js_getPing, js_setRel, js_getRel, js_getRelList, js_setReferrerPolicy, js_getReferrerPolicy, js_setNoHref, js_getNoHref, setAlt, getAlt, setCoords, getCoords, setShape, getShape, setDownload, getDownload, setPing, getPing, setRel, getRel, getRelList, setReferrerPolicy, getReferrerPolicy, setNoHref, getNoHref, HTMLAreaElement(..), gTypeHTMLAreaElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
-        HTMLAreaElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
-setAlt ::
-       (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setAlt self val = liftIO (js_setAlt self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
-        HTMLAreaElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"alt\"] = $2; })"
+        js_setAlt :: HTMLAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/alt MDN HTMLAreaElement.alt documentation>
+setAlt :: (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setAlt self val = liftDOM (void ((js_setAlt (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
-getAlt ::
-       (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
-getAlt self = liftIO (fromJSString <$> (js_getAlt self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"coords\"] = $2; })"
-        js_setCoords :: HTMLAreaElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })"
+        js_getAlt :: HTMLAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/alt MDN HTMLAreaElement.alt documentation>
+getAlt :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getAlt self = liftDOM ((fromJSString <$> (js_getAlt (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
-setCoords ::
-          (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setCoords self val = liftIO (js_setCoords self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })" js_getCoords ::
-        HTMLAreaElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"coords\"] = $2; })"
+        js_setCoords :: HTMLAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/coords MDN HTMLAreaElement.coords documentation>
+setCoords :: (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setCoords self val = liftDOM (void ((js_setCoords (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
-getCoords ::
-          (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
-getCoords self = liftIO (fromJSString <$> (js_getCoords self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"noHref\"] = $2; })"
-        js_setNoHref :: HTMLAreaElement -> Bool -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })"
+        js_getCoords :: HTMLAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/coords MDN HTMLAreaElement.coords documentation>
+getCoords :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getCoords self = liftDOM ((fromJSString <$> (js_getCoords (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
-setNoHref :: (MonadIO m) => HTMLAreaElement -> Bool -> m ()
-setNoHref self val = liftIO (js_setNoHref self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"noHref\"] ? 1 : 0); })"
-        js_getNoHref :: HTMLAreaElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"shape\"] = $2; })"
+        js_setShape :: HTMLAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/shape MDN HTMLAreaElement.shape documentation>
+setShape :: (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setShape self val = liftDOM (void ((js_setShape (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
-getNoHref :: (MonadIO m) => HTMLAreaElement -> m Bool
-getNoHref self = liftIO (js_getNoHref self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"ping\"] = $2; })" js_setPing ::
-        HTMLAreaElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"shape\"]; })"
+        js_getShape :: HTMLAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/shape MDN HTMLAreaElement.shape documentation>
+getShape :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getShape self = liftDOM ((fromJSString <$> (js_getShape (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
-setPing ::
-        (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setPing self val = liftIO (js_setPing self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ping\"]; })" js_getPing ::
-        HTMLAreaElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"download\"] = $2; })"
+        js_setDownload :: HTMLAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/download MDN HTMLAreaElement.download documentation>
+setDownload :: (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setDownload self val = liftDOM (void ((js_setDownload (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
-getPing ::
-        (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
-getPing self = liftIO (fromJSString <$> (js_getPing self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rel\"] = $2; })" js_setRel ::
-        HTMLAreaElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"download\"]; })"
+        js_getDownload :: HTMLAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/download MDN HTMLAreaElement.download documentation>
+getDownload :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getDownload self = liftDOM ((fromJSString <$> (js_getDownload (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
-setRel ::
-       (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setRel self val = liftIO (js_setRel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })" js_getRel ::
-        HTMLAreaElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"ping\"] = $2; })"
+        js_setPing :: HTMLAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/ping MDN HTMLAreaElement.ping documentation>
+setPing :: (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setPing self val = liftDOM (void ((js_setPing (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
-getRel ::
-       (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
-getRel self = liftIO (fromJSString <$> (js_getRel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"shape\"] = $2; })" js_setShape
-        :: HTMLAreaElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"ping\"]; })"
+        js_getPing :: HTMLAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/ping MDN HTMLAreaElement.ping documentation>
+getPing :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getPing self = liftDOM ((fromJSString <$> (js_getPing (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
-setShape ::
-         (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setShape self val = liftIO (js_setShape self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shape\"]; })" js_getShape ::
-        HTMLAreaElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"rel\"] = $2; })"
+        js_setRel :: HTMLAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/rel MDN HTMLAreaElement.rel documentation>
+setRel :: (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setRel self val = liftDOM (void ((js_setRel (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
-getShape ::
-         (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
-getShape self = liftIO (fromJSString <$> (js_getShape self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
-        js_setTarget :: HTMLAreaElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })"
+        js_getRel :: HTMLAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/rel MDN HTMLAreaElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getRel self = liftDOM ((fromJSString <$> (js_getRel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
-setTarget ::
-          (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setTarget self val = liftIO (js_setTarget self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        HTMLAreaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })"
+        js_getRelList :: HTMLAreaElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/relList MDN HTMLAreaElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLAreaElement -> m DOMTokenList
+getRelList self = liftDOM ((js_getRelList (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
-getTarget ::
-          (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
-getTarget self = liftIO (fromJSString <$> (js_getTarget self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"download\"] = $2; })"
-        js_setDownload :: HTMLAreaElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: HTMLAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/referrerPolicy MDN HTMLAreaElement.referrerPolicy documentation>
+setReferrerPolicy :: (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setReferrerPolicy self val = liftDOM (void ((js_setReferrerPolicy (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.download Mozilla HTMLAreaElement.download documentation> 
-setDownload ::
-            (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setDownload self val
-  = liftIO (js_setDownload self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"download\"]; })" js_getDownload
-        :: HTMLAreaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: HTMLAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/referrerPolicy MDN HTMLAreaElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getReferrerPolicy self = liftDOM ((fromJSString <$> (js_getReferrerPolicy (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.download Mozilla HTMLAreaElement.download documentation> 
-getDownload ::
-            (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
-getDownload self = liftIO (fromJSString <$> (js_getDownload self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })" js_getRelList ::
-        HTMLAreaElement -> IO DOMTokenList
+foreign import javascript safe "(($1, $2) => { $1[\"noHref\"] = $2; })"
+        js_setNoHref :: HTMLAreaElement -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-area-nohref HTMLAreaElement.noHref specification>
+setNoHref :: (MonadDOM m) => HTMLAreaElement -> Bool -> m ()
+setNoHref self val = liftDOM (void ((js_setNoHref (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.relList Mozilla HTMLAreaElement.relList documentation> 
-getRelList :: (MonadIO m) => HTMLAreaElement -> m DOMTokenList
-getRelList self = liftIO (js_getRelList self)
+foreign import javascript unsafe "(($1) => { return $1[\"noHref\"]; })"
+        js_getNoHref :: HTMLAreaElement -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-area-nohref HTMLAreaElement.noHref specification>
+getNoHref :: (MonadDOM m) => HTMLAreaElement -> m Bool
+getNoHref self = liftDOM ((js_getNoHref (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs
+++ /dev/null
@@ -1,56 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.HTMLAttachmentElement
-       (js_setFile, setFile, js_getFile, getFile, getFileUnsafe,
-        getFileUnchecked, HTMLAttachmentElement(..),
-        gTypeHTMLAttachmentElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"file\"] = $2; })" js_setFile ::
-        HTMLAttachmentElement -> Optional File -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-setFile ::
-        (MonadIO m) => HTMLAttachmentElement -> Maybe File -> m ()
-setFile self val = liftIO (js_setFile self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"file\"]; })" js_getFile ::
-        HTMLAttachmentElement -> IO (Nullable File)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-getFile :: (MonadIO m) => HTMLAttachmentElement -> m (Maybe File)
-getFile self = liftIO (nullableToMaybe <$> (js_getFile self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-getFileUnsafe ::
-              (MonadIO m, HasCallStack) => HTMLAttachmentElement -> m File
-getFileUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFile self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-getFileUnchecked :: (MonadIO m) => HTMLAttachmentElement -> m File
-getFileUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getFile self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAudioElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAudioElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAudioElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLAudioElement
+       (HTMLAudioElement(..), gTypeHTMLAudioElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLBRElement
-       (js_setClear, setClear, js_getClear, getClear, HTMLBRElement(..),
-        gTypeHTMLBRElement)
+       (js_setClear, js_getClear, setClear, getClear, HTMLBRElement(..), gTypeHTMLBRElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"clear\"] = $2; })" js_setClear
-        :: HTMLBRElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
-setClear ::
-         (MonadIO m, ToJSString val) => HTMLBRElement -> val -> m ()
-setClear self val = liftIO (js_setClear self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clear\"]; })" js_getClear ::
-        HTMLBRElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"clear\"] = $2; })"
+        js_setClear :: HTMLBRElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-br-clear HTMLBRElement.clear specification>
+setClear :: (MonadDOM m, ToJSString val) => HTMLBRElement -> val -> m ()
+setClear self val = liftDOM (void ((js_setClear (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
-getClear ::
-         (MonadIO m, FromJSString result) => HTMLBRElement -> m result
-getClear self = liftIO (fromJSString <$> (js_getClear self))
+foreign import javascript unsafe "(($1) => { return $1[\"clear\"]; })"
+        js_getClear :: HTMLBRElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-br-clear HTMLBRElement.clear specification>
+getClear :: (MonadDOM m, FromJSString result) => HTMLBRElement -> m result
+getClear self = liftDOM ((fromJSString <$> (js_getClear (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
@@ -1,59 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
-       (js_setHref, setHref, js_getHref, getHref, js_setTarget, setTarget,
-        js_getTarget, getTarget, HTMLBaseElement(..), gTypeHTMLBaseElement)
+       (js_setHref, js_getHref, js_setTarget, js_getTarget, setHref, getHref, setTarget, getTarget, HTMLBaseElement(..), gTypeHTMLBaseElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
-        HTMLBaseElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
-setHref ::
-        (MonadIO m, ToJSString val) => HTMLBaseElement -> val -> m ()
-setHref self val = liftIO (js_setHref self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        HTMLBaseElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"href\"] = $2; })"
+        js_setHref :: HTMLBaseElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLBaseElement/href MDN HTMLBaseElement.href documentation>
+setHref :: (MonadDOM m, ToJSString val) => HTMLBaseElement -> val -> m ()
+setHref self val = liftDOM (void ((js_setHref (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
-getHref ::
-        (MonadIO m, FromJSString result) => HTMLBaseElement -> m result
-getHref self = liftIO (fromJSString <$> (js_getHref self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
-        js_setTarget :: HTMLBaseElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: HTMLBaseElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLBaseElement/href MDN HTMLBaseElement.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => HTMLBaseElement -> m result
+getHref self = liftDOM ((fromJSString <$> (js_getHref (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
-setTarget ::
-          (MonadIO m, ToJSString val) => HTMLBaseElement -> val -> m ()
-setTarget self val = liftIO (js_setTarget self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        HTMLBaseElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLBaseElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLBaseElement/target MDN HTMLBaseElement.target documentation>
+setTarget :: (MonadDOM m, ToJSString val) => HTMLBaseElement -> val -> m ()
+setTarget self val = liftDOM (void ((js_setTarget (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
-getTarget ::
-          (MonadIO m, FromJSString result) => HTMLBaseElement -> m result
-getTarget self = liftIO (fromJSString <$> (js_getTarget self))
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: HTMLBaseElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLBaseElement/target MDN HTMLBaseElement.target documentation>
+getTarget :: (MonadDOM m, FromJSString result) => HTMLBaseElement -> m result
+getTarget self = liftDOM ((fromJSString <$> (js_getTarget (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
@@ -1,213 +1,89 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLBodyElement
-       (js_setALink, setALink, js_getALink, getALink, js_setBackground,
-        setBackground, js_getBackground, getBackground, js_setBgColor,
-        setBgColor, js_getBgColor, getBgColor, js_setLink, setLink,
-        js_getLink, getLink, js_setText, setText, js_getText, getText,
-        js_setVLink, setVLink, js_getVLink, getVLink, blur, error, focus,
-        focusin, focusout, load, resize, scroll, webKitMouseForcechanged,
-        webKitMouseForcedown, webKitMouseForcewillbegin,
-        webKitMouseForceup, webKitWillRevealBottom, webKitWillRevealLeft,
-        webKitWillRevealRight, webKitWillRevealTop, selectionchange,
-        HTMLBodyElement(..), gTypeHTMLBodyElement)
+       (js_setText, js_getText, js_setLink, js_getLink, js_setVLink, js_getVLink, js_setALink, js_getALink, js_setBgColor, js_getBgColor, js_setBackground, js_getBackground, setText, getText, setLink, getLink, setVLink, getVLink, setALink, getALink, setBgColor, getBgColor, setBackground, getBackground, HTMLBodyElement(..), gTypeHTMLBodyElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"aLink\"] = $2; })" js_setALink
-        :: HTMLBodyElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
-setALink ::
-         (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setALink self val = liftIO (js_setALink self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"aLink\"]; })" js_getALink ::
-        HTMLBodyElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
-getALink ::
-         (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
-getALink self = liftIO (fromJSString <$> (js_getALink self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"background\"] = $2; })"
-        js_setBackground :: HTMLBodyElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
-setBackground ::
-              (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setBackground self val
-  = liftIO (js_setBackground self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"background\"]; })"
-        js_getBackground :: HTMLBodyElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
-getBackground ::
-              (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
-getBackground self
-  = liftIO (fromJSString <$> (js_getBackground self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
-        js_setBgColor :: HTMLBodyElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
-setBgColor ::
-           (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setBgColor self val = liftIO (js_setBgColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
-        HTMLBodyElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
-getBgColor ::
-           (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
-getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"link\"] = $2; })" js_setLink ::
-        HTMLBodyElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
-setLink ::
-        (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setLink self val = liftIO (js_setLink self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"link\"]; })" js_getLink ::
-        HTMLBodyElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
-getLink ::
-        (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
-getLink self = liftIO (fromJSString <$> (js_getLink self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
-        HTMLBodyElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
-setText ::
-        (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setText self val = liftIO (js_setText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
-        HTMLBodyElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
-getText ::
-        (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
-getText self = liftIO (fromJSString <$> (js_getText self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vLink\"] = $2; })" js_setVLink
-        :: HTMLBodyElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
-setVLink ::
-         (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setVLink self val = liftIO (js_setVLink self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vLink\"]; })" js_getVLink ::
-        HTMLBodyElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
-getVLink ::
-         (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
-getVLink self = liftIO (fromJSString <$> (js_getVLink self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onblur Mozilla HTMLBodyElement.onblur documentation> 
-blur :: EventName HTMLBodyElement FocusEvent
-blur = unsafeEventNameAsync (toJSString "blur")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onerror Mozilla HTMLBodyElement.onerror documentation> 
-error :: EventName HTMLBodyElement UIEvent
-error = unsafeEventNameAsync (toJSString "error")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocus Mozilla HTMLBodyElement.onfocus documentation> 
-focus :: EventName HTMLBodyElement FocusEvent
-focus = unsafeEventNameAsync (toJSString "focus")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocusin Mozilla HTMLBodyElement.onfocusin documentation> 
-focusin :: EventName HTMLBodyElement onfocusin
-focusin = unsafeEventName (toJSString "focusin")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocusout Mozilla HTMLBodyElement.onfocusout documentation> 
-focusout :: EventName HTMLBodyElement onfocusout
-focusout = unsafeEventName (toJSString "focusout")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onload Mozilla HTMLBodyElement.onload documentation> 
-load :: EventName HTMLBodyElement UIEvent
-load = unsafeEventNameAsync (toJSString "load")
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: HTMLBodyElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-text HTMLBodyElement.text specification>
+setText :: (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onresize Mozilla HTMLBodyElement.onresize documentation> 
-resize :: EventName HTMLBodyElement UIEvent
-resize = unsafeEventName (toJSString "resize")
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: HTMLBodyElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-text HTMLBodyElement.text specification>
+getText :: (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getText self = liftDOM ((fromJSString <$> (js_getText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onscroll Mozilla HTMLBodyElement.onscroll documentation> 
-scroll :: EventName HTMLBodyElement UIEvent
-scroll = unsafeEventName (toJSString "scroll")
+foreign import javascript safe "(($1, $2) => { $1[\"link\"] = $2; })"
+        js_setLink :: HTMLBodyElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-link HTMLBodyElement.link specification>
+setLink :: (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setLink self val = liftDOM (void ((js_setLink (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcechanged Mozilla HTMLBodyElement.onwebkitmouseforcechanged documentation> 
-webKitMouseForcechanged ::
-                          EventName HTMLBodyElement onwebkitmouseforcechanged
-webKitMouseForcechanged
-  = unsafeEventName (toJSString "webkitmouseforcechanged")
+foreign import javascript unsafe "(($1) => { return $1[\"link\"]; })"
+        js_getLink :: HTMLBodyElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-link HTMLBodyElement.link specification>
+getLink :: (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getLink self = liftDOM ((fromJSString <$> (js_getLink (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcedown Mozilla HTMLBodyElement.onwebkitmouseforcedown documentation> 
-webKitMouseForcedown ::
-                       EventName HTMLBodyElement onwebkitmouseforcedown
-webKitMouseForcedown
-  = unsafeEventName (toJSString "webkitmouseforcedown")
+foreign import javascript safe "(($1, $2) => { $1[\"vLink\"] = $2; })"
+        js_setVLink :: HTMLBodyElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-vlink HTMLBodyElement.vLink specification>
+setVLink :: (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setVLink self val = liftDOM (void ((js_setVLink (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcewillbegin Mozilla HTMLBodyElement.onwebkitmouseforcewillbegin documentation> 
-webKitMouseForcewillbegin ::
-                            EventName HTMLBodyElement onwebkitmouseforcewillbegin
-webKitMouseForcewillbegin
-  = unsafeEventName (toJSString "webkitmouseforcewillbegin")
+foreign import javascript unsafe "(($1) => { return $1[\"vLink\"]; })"
+        js_getVLink :: HTMLBodyElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-vlink HTMLBodyElement.vLink specification>
+getVLink :: (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getVLink self = liftDOM ((fromJSString <$> (js_getVLink (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforceup Mozilla HTMLBodyElement.onwebkitmouseforceup documentation> 
-webKitMouseForceup ::
-                     EventName HTMLBodyElement onwebkitmouseforceup
-webKitMouseForceup
-  = unsafeEventName (toJSString "webkitmouseforceup")
+foreign import javascript safe "(($1, $2) => { $1[\"aLink\"] = $2; })"
+        js_setALink :: HTMLBodyElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-alink HTMLBodyElement.aLink specification>
+setALink :: (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setALink self val = liftDOM (void ((js_setALink (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealbottom Mozilla HTMLBodyElement.onwebkitwillrevealbottom documentation> 
-webKitWillRevealBottom :: EventName HTMLBodyElement Event
-webKitWillRevealBottom
-  = unsafeEventName (toJSString "webkitwillrevealbottom")
+foreign import javascript unsafe "(($1) => { return $1[\"aLink\"]; })"
+        js_getALink :: HTMLBodyElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-alink HTMLBodyElement.aLink specification>
+getALink :: (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getALink self = liftDOM ((fromJSString <$> (js_getALink (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealleft Mozilla HTMLBodyElement.onwebkitwillrevealleft documentation> 
-webKitWillRevealLeft :: EventName HTMLBodyElement Event
-webKitWillRevealLeft
-  = unsafeEventName (toJSString "webkitwillrevealleft")
+foreign import javascript safe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLBodyElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-bgcolor HTMLBodyElement.bgColor specification>
+setBgColor :: (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setBgColor self val = liftDOM (void ((js_setBgColor (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealright Mozilla HTMLBodyElement.onwebkitwillrevealright documentation> 
-webKitWillRevealRight :: EventName HTMLBodyElement Event
-webKitWillRevealRight
-  = unsafeEventName (toJSString "webkitwillrevealright")
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })"
+        js_getBgColor :: HTMLBodyElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-bgcolor HTMLBodyElement.bgColor specification>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getBgColor self = liftDOM ((fromJSString <$> (js_getBgColor (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealtop Mozilla HTMLBodyElement.onwebkitwillrevealtop documentation> 
-webKitWillRevealTop :: EventName HTMLBodyElement Event
-webKitWillRevealTop
-  = unsafeEventName (toJSString "webkitwillrevealtop")
+foreign import javascript safe "(($1, $2) => { $1[\"background\"] = $2; })"
+        js_setBackground :: HTMLBodyElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-background HTMLBodyElement.background specification>
+setBackground :: (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setBackground self val = liftDOM (void ((js_setBackground (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onselectionchange Mozilla HTMLBodyElement.onselectionchange documentation> 
-selectionchange :: EventName HTMLBodyElement onselectionchange
-selectionchange = unsafeEventName (toJSString "selectionchange")
+foreign import javascript unsafe "(($1) => { return $1[\"background\"]; })"
+        js_getBackground :: HTMLBodyElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-body-background HTMLBodyElement.background specification>
+getBackground :: (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
+getBackground self = liftDOM ((fromJSString <$> (js_getBackground (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
@@ -1,274 +1,221 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
-       (js_checkValidity, checkValidity, checkValidity_,
-        js_reportValidity, reportValidity, reportValidity_,
-        js_setCustomValidity, setCustomValidity, js_setAutofocus,
-        setAutofocus, js_getAutofocus, getAutofocus, js_setDisabled,
-        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
-        js_setFormAction, setFormAction, js_getFormAction, getFormAction,
-        js_setFormEnctype, setFormEnctype, js_getFormEnctype,
-        getFormEnctype, js_setFormMethod, setFormMethod, js_getFormMethod,
-        getFormMethod, js_setType, setType, js_getType, getType,
-        js_setFormNoValidate, setFormNoValidate, js_getFormNoValidate,
-        getFormNoValidate, js_setFormTarget, setFormTarget,
-        js_getFormTarget, getFormTarget, js_setName, setName, js_getName,
-        getName, js_setValue, setValue, js_getValue, getValue,
-        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
-        js_getValidationMessage, getValidationMessage, js_getLabels,
-        getLabels, HTMLButtonElement(..), gTypeHTMLButtonElement)
+       (js_checkValidity, js_reportValidity, js_setCustomValidity, js_setCommand, js_getCommand, js_setCommandForElement, js_getCommandForElement, js_setDisabled, js_getDisabled, js_getForm, js_setFormAction, js_getFormAction, js_setFormEnctype, js_getFormEnctype, js_setFormMethod, js_getFormMethod, js_setFormNoValidate, js_getFormNoValidate, js_setFormTarget, js_getFormTarget, js_setName, js_getName, js_setType, js_getType, js_setValue, js_getValue, js_getWillValidate, js_getValidity, js_getValidationMessage, js_getLabels, checkValidity, checkValidity_, reportValidity, reportValidity_, setCustomValidity, setCommand, getCommand, setCommandForElement, getCommandForElement, getCommandForElementUnsafe, getCommandForElementUnchecked, setDisabled, getDisabled, getForm, getFormUnsafe, getFormUnchecked, setFormAction, getFormAction, setFormEnctype, getFormEnctype, setFormMethod, getFormMethod, setFormNoValidate, getFormNoValidate, setFormTarget, getFormTarget, setName, getName, setType, getType, setValue, getValue, getWillValidate, getValidity, getValidationMessage, getLabels, HTMLButtonElement(..), gTypeHTMLButtonElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLButtonElement -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLButtonElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLButtonElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/checkValidity MDN HTMLButtonElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLButtonElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLButtonElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLButtonElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/checkValidity MDN HTMLButtonElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLButtonElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.reportValidity Mozilla HTMLButtonElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLButtonElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLButtonElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/reportValidity MDN HTMLButtonElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLButtonElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.reportValidity Mozilla HTMLButtonElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLButtonElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/reportValidity MDN HTMLButtonElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLButtonElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
         js_setCustomValidity :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/setCustomValidity MDN HTMLButtonElement.setCustomValidity documentation>
+setCustomValidity :: (MonadDOM m, ToJSString error) => HTMLButtonElement -> error -> m ()
+setCustomValidity self error = liftDOM (void ((js_setCustomValidity (self) (toJSString error))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.setCustomValidity Mozilla HTMLButtonElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) => HTMLButtonElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
-        js_setAutofocus :: HTMLButtonElement -> Bool -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"command\"] = $2; })"
+        js_setCommand :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/command MDN HTMLButtonElement.command documentation>
+setCommand :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setCommand self val = liftDOM (void ((js_setCommand (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
-setAutofocus :: (MonadIO m) => HTMLButtonElement -> Bool -> m ()
-setAutofocus self val = liftIO (js_setAutofocus self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
-        js_getAutofocus :: HTMLButtonElement -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"command\"]; })"
+        js_getCommand :: HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/command MDN HTMLButtonElement.command documentation>
+getCommand :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getCommand self = liftDOM ((fromJSString <$> (js_getCommand (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
-getAutofocus :: (MonadIO m) => HTMLButtonElement -> m Bool
-getAutofocus self = liftIO (js_getAutofocus self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"commandForElement\"] = $2; })"
+        js_setCommandForElement :: HTMLButtonElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/commandForElement MDN HTMLButtonElement.commandForElement documentation>
+setCommandForElement :: (MonadDOM m, IsElement val) => HTMLButtonElement -> Maybe val -> m ()
+setCommandForElement self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCommandForElement (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"commandForElement\"]; })"
+        js_getCommandForElement :: HTMLButtonElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/commandForElement MDN HTMLButtonElement.commandForElement documentation>
+getCommandForElement :: (MonadDOM m) => HTMLButtonElement -> m (Maybe Element)
+getCommandForElement self = liftDOM (((js_getCommandForElement (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/commandForElement MDN HTMLButtonElement.commandForElement documentation>
+getCommandForElementUnsafe :: (MonadDOM m, HasCallStack) => HTMLButtonElement -> m Element
+getCommandForElementUnsafe self = liftDOM ((((js_getCommandForElement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/commandForElement MDN HTMLButtonElement.commandForElement documentation>
+getCommandForElementUnchecked :: (MonadDOM m) => HTMLButtonElement -> m Element
+getCommandForElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getCommandForElement (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
         js_setDisabled :: HTMLButtonElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/disabled MDN HTMLButtonElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLButtonElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
         js_getDisabled :: HTMLButtonElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/disabled MDN HTMLButtonElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLButtonElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLButtonElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLButtonElement -> IO HTMLFormElement
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLButtonElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/form MDN HTMLButtonElement.form documentation>
+getForm :: (MonadDOM m) => HTMLButtonElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.form Mozilla HTMLButtonElement.form documentation> 
-getForm :: (MonadIO m) => HTMLButtonElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formAction\"] = $2; })"
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/form MDN HTMLButtonElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLButtonElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/form MDN HTMLButtonElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLButtonElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formAction\"] = $2; })"
         js_setFormAction :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formAction MDN HTMLButtonElement.formAction documentation>
+setFormAction :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormAction self val = liftDOM (void ((js_setFormAction (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
-setFormAction ::
-              (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormAction self val
-  = liftIO (js_setFormAction self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"formAction\"]; })"
         js_getFormAction :: HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formAction MDN HTMLButtonElement.formAction documentation>
+getFormAction :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormAction self = liftDOM ((fromJSString <$> (js_getFormAction (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
-getFormAction ::
-              (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getFormAction self
-  = liftIO (fromJSString <$> (js_getFormAction self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formEnctype\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"formEnctype\"] = $2; })"
         js_setFormEnctype :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formEnctype MDN HTMLButtonElement.formEnctype documentation>
+setFormEnctype :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormEnctype self val = liftDOM (void ((js_setFormEnctype (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
-setFormEnctype ::
-               (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormEnctype self val
-  = liftIO (js_setFormEnctype self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"formEnctype\"]; })"
         js_getFormEnctype :: HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formEnctype MDN HTMLButtonElement.formEnctype documentation>
+getFormEnctype :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormEnctype self = liftDOM ((fromJSString <$> (js_getFormEnctype (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
-getFormEnctype ::
-               (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getFormEnctype self
-  = liftIO (fromJSString <$> (js_getFormEnctype self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formMethod\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"formMethod\"] = $2; })"
         js_setFormMethod :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formMethod MDN HTMLButtonElement.formMethod documentation>
+setFormMethod :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormMethod self val = liftDOM (void ((js_setFormMethod (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
-setFormMethod ::
-              (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormMethod self val
-  = liftIO (js_setFormMethod self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"formMethod\"]; })"
         js_getFormMethod :: HTMLButtonElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
-getFormMethod ::
-              (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getFormMethod self
-  = liftIO (fromJSString <$> (js_getFormMethod self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLButtonElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formMethod MDN HTMLButtonElement.formMethod documentation>
+getFormMethod :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormMethod self = liftDOM ((fromJSString <$> (js_getFormMethod (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formNoValidate\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"formNoValidate\"] = $2; })"
         js_setFormNoValidate :: HTMLButtonElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formNoValidate MDN HTMLButtonElement.formNoValidate documentation>
+setFormNoValidate :: (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
+setFormNoValidate self val = liftDOM (void ((js_setFormNoValidate (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
-setFormNoValidate ::
-                  (MonadIO m) => HTMLButtonElement -> Bool -> m ()
-setFormNoValidate self val = liftIO (js_setFormNoValidate self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"formNoValidate\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"formNoValidate\"]; })"
         js_getFormNoValidate :: HTMLButtonElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formNoValidate MDN HTMLButtonElement.formNoValidate documentation>
+getFormNoValidate :: (MonadDOM m) => HTMLButtonElement -> m Bool
+getFormNoValidate self = liftDOM ((js_getFormNoValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
-getFormNoValidate :: (MonadIO m) => HTMLButtonElement -> m Bool
-getFormNoValidate self = liftIO (js_getFormNoValidate self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formTarget\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"formTarget\"] = $2; })"
         js_setFormTarget :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formTarget MDN HTMLButtonElement.formTarget documentation>
+setFormTarget :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormTarget self val = liftDOM (void ((js_setFormTarget (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
-setFormTarget ::
-              (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormTarget self val
-  = liftIO (js_setFormTarget self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"formTarget\"]; })"
         js_getFormTarget :: HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formTarget MDN HTMLButtonElement.formTarget documentation>
+getFormTarget :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormTarget self = liftDOM ((fromJSString <$> (js_getFormTarget (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
-getFormTarget ::
-              (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getFormTarget self
-  = liftIO (fromJSString <$> (js_getFormTarget self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLButtonElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/name MDN HTMLButtonElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLButtonElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/name MDN HTMLButtonElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLButtonElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/type MDN HTMLButtonElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLButtonElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/type MDN HTMLButtonElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLButtonElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/value MDN HTMLButtonElement.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLButtonElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/value MDN HTMLButtonElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
         js_getWillValidate :: HTMLButtonElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/willValidate MDN HTMLButtonElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLButtonElement -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.willValidate Mozilla HTMLButtonElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLButtonElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLButtonElement -> IO ValidityState
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: HTMLButtonElement -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/validity MDN HTMLButtonElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLButtonElement -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validity Mozilla HTMLButtonElement.validity documentation> 
-getValidity :: (MonadIO m) => HTMLButtonElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
         js_getValidationMessage :: HTMLButtonElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validationMessage Mozilla HTMLButtonElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLButtonElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/validationMessage MDN HTMLButtonElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.labels Mozilla HTMLButtonElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLButtonElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: HTMLButtonElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/labels MDN HTMLButtonElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLButtonElement -> m NodeList
+getLabels self = liftDOM ((js_getLabels (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
@@ -1,163 +1,114 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
-       (js_getContext, getContext, getContext_, getContextUnsafe,
-        getContextUnchecked, js_toDataURL, toDataURL, toDataURL_,
-        js_toBlob', toBlob', js_captureStream, captureStream,
-        captureStream_, js_setWidth, setWidth, js_getWidth, getWidth,
-        js_setHeight, setHeight, js_getHeight, getHeight,
-        HTMLCanvasElement(..), gTypeHTMLCanvasElement)
+       (js_captureStream, js_getContext, js_toBlob, js_toDataURL, js_toDataURL', js_transferControlToOffscreen, js_setWidth, js_getWidth, js_setHeight, js_getHeight, captureStream, captureStream_, getContext, getContext_, getContextUnsafe, getContextUnchecked, toBlob, toDataURL, toDataURL_, toDataURL', toDataURL'_, transferControlToOffscreen, transferControlToOffscreen_, setWidth, getWidth, setHeight, getHeight, webglcontextcreationerror, webglcontextlost, webglcontextrestored, HTMLCanvasElement(..), gTypeHTMLCanvasElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types hiding (toBlob)
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getContext\"]($2, $3); })"
-        js_getContext ::
-        HTMLCanvasElement ->
-          JSString -> JSVal -> IO (Nullable RenderingContext)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContext ::
-           (MonadIO m, ToJSString contextId, ToJSVal arguments) =>
-             HTMLCanvasElement ->
-               contextId -> [arguments] -> m (Maybe RenderingContext)
-getContext self contextId arguments
-  = liftIO
-      (nullableToMaybe <$>
-         (toJSVal arguments >>=
-            \ arguments' ->
-              js_getContext self (toJSString contextId) arguments'))
+foreign import javascript safe "(($1, $2) => { return $1[\"captureStream\"]($2); })"
+        js_captureStream :: HTMLCanvasElement -> JSVal -> IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/captureStream MDN HTMLCanvasElement.captureStream documentation>
+captureStream :: (MonadDOM m) => HTMLCanvasElement -> Maybe Double -> m MediaStream
+captureStream self frameRequestRate = liftDOM (((P.maybe (P.return jsUndefined) toJSVal frameRequestRate) >>= \a2' -> js_captureStream (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContext_ ::
-            (MonadIO m, ToJSString contextId, ToJSVal arguments) =>
-              HTMLCanvasElement -> contextId -> [arguments] -> m ()
-getContext_ self contextId arguments
-  = liftIO
-      (void
-         (toJSVal arguments >>=
-            \ arguments' ->
-              js_getContext self (toJSString contextId) arguments'))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/captureStream MDN HTMLCanvasElement.captureStream documentation>
+captureStream_ :: (MonadDOM m) => HTMLCanvasElement -> Maybe Double -> m ()
+captureStream_ self frameRequestRate = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal frameRequestRate) >>= \a2' -> js_captureStream (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContextUnsafe ::
-                 (MonadIO m, ToJSString contextId, ToJSVal arguments,
-                  HasCallStack) =>
-                   HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
-getContextUnsafe self contextId arguments
-  = liftIO
-      ((nullableToMaybe <$>
-          (toJSVal arguments >>=
-             \ arguments' ->
-               js_getContext self (toJSString contextId) arguments'))
-         >>= maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getContext\"]($2, $3); })"
+        js_getContext :: HTMLCanvasElement -> JSString -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/getContext MDN HTMLCanvasElement.getContext documentation>
+getContext :: (MonadDOM m, ToJSString contextId) => HTMLCanvasElement -> contextId -> JSVal -> m (Maybe RenderingContext)
+getContext self contextId options = liftDOM (((js_getContext (self) (toJSString contextId) (options)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContextUnchecked ::
-                    (MonadIO m, ToJSString contextId, ToJSVal arguments) =>
-                      HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
-getContextUnchecked self contextId arguments
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (toJSVal arguments >>=
-            \ arguments' ->
-              js_getContext self (toJSString contextId) arguments'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"toDataURL\"]($2); })" js_toDataURL
-        :: HTMLCanvasElement -> Optional JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/getContext MDN HTMLCanvasElement.getContext documentation>
+getContext_ :: (MonadDOM m, ToJSString contextId) => HTMLCanvasElement -> contextId -> JSVal -> m ()
+getContext_ self contextId options = liftDOM (void ((js_getContext (self) (toJSString contextId) (options))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
-toDataURL ::
-          (MonadIO m, ToJSString type', FromJSString result) =>
-            HTMLCanvasElement -> Maybe type' -> m result
-toDataURL self type'
-  = liftIO
-      (fromJSString <$> (js_toDataURL self (toOptionalJSString type')))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/getContext MDN HTMLCanvasElement.getContext documentation>
+getContextUnsafe :: (MonadDOM m, ToJSString contextId, HasCallStack) => HTMLCanvasElement -> contextId -> JSVal -> m RenderingContext
+getContextUnsafe self contextId options = liftDOM ((((js_getContext (self) (toJSString contextId) (options)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
-toDataURL_ ::
-           (MonadIO m, ToJSString type') =>
-             HTMLCanvasElement -> Maybe type' -> m ()
-toDataURL_ self type'
-  = liftIO (void (js_toDataURL self (toOptionalJSString type')))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/getContext MDN HTMLCanvasElement.getContext documentation>
+getContextUnchecked :: (MonadDOM m, ToJSString contextId) => HTMLCanvasElement -> contextId -> JSVal -> m RenderingContext
+getContextUnchecked self contextId options = liftDOM ((pFromJSVal <$> (js_getContext (self) (toJSString contextId) (options))))
+
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"toBlob\"]($2, $3, $4); })"
-        js_toBlob' ::
-        HTMLCanvasElement ->
-          BlobCallback -> Optional JSString -> Optional JSVal -> IO ()
+        js_toBlob :: HTMLCanvasElement -> JSVal -> (Optional JSString) -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/toBlob MDN HTMLCanvasElement.toBlob documentation>
+toBlob :: (MonadDOM m, ToJSString type') => HTMLCanvasElement -> BlobCallback -> Maybe type' -> JSVal -> m ()
+toBlob self callback' type' quality = liftDOM (void (((toJSVal callback') >>= \a2' -> js_toBlob (self) a2' (toOptionalJSString type') (quality))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toBlob Mozilla HTMLCanvasElement.toBlob documentation> 
-toBlob' ::
-        (MonadIO m, ToJSString type', ToJSVal quality) =>
-          HTMLCanvasElement ->
-            BlobCallback -> Maybe type' -> Maybe quality -> m ()
-toBlob' self callback type' quality
-  = liftIO
-      (mapM toJSVal quality >>=
-         \ quality' ->
-           js_toBlob' self callback (toOptionalJSString type')
-             (maybeToOptional quality'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"captureStream\"]($2); })"
-        js_captureStream ::
-        HTMLCanvasElement -> Optional Double -> IO MediaStream
+foreign import javascript safe "(($1, $2) => { return $1[\"toDataURL\"]($2); })"
+        js_toDataURL :: HTMLCanvasElement -> (Optional JSString) -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/toDataURL MDN HTMLCanvasElement.toDataURL documentation>
+toDataURL :: (MonadDOM m, ToJSString type', FromJSString result) => HTMLCanvasElement -> Maybe type' -> m result
+toDataURL self type' = liftDOM ((fromJSString <$> (js_toDataURL (self) (toOptionalJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
-captureStream ::
-              (MonadIO m) => HTMLCanvasElement -> Maybe Double -> m MediaStream
-captureStream self frameRequestRate
-  = liftIO (js_captureStream self (maybeToOptional frameRequestRate))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/toDataURL MDN HTMLCanvasElement.toDataURL documentation>
+toDataURL_ :: (MonadDOM m, ToJSString type') => HTMLCanvasElement -> Maybe type' -> m ()
+toDataURL_ self type' = liftDOM (void ((js_toDataURL (self) (toOptionalJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
-captureStream_ ::
-               (MonadIO m) => HTMLCanvasElement -> Maybe Double -> m ()
-captureStream_ self frameRequestRate
-  = liftIO
-      (void (js_captureStream self (maybeToOptional frameRequestRate)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLCanvasElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"toDataURL\"]($2, $3); })"
+        js_toDataURL' :: HTMLCanvasElement -> (Optional JSString) -> JSVal -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/toDataURL MDN HTMLCanvasElement.toDataURL documentation>
+toDataURL' :: (MonadDOM m, ToJSString type', FromJSString result) => HTMLCanvasElement -> Maybe type' -> JSVal -> m result
+toDataURL' self type' quality = liftDOM ((fromJSString <$> (js_toDataURL' (self) (toOptionalJSString type') (quality))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
-setWidth :: (MonadIO m) => HTMLCanvasElement -> Word -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLCanvasElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/toDataURL MDN HTMLCanvasElement.toDataURL documentation>
+toDataURL'_ :: (MonadDOM m, ToJSString type') => HTMLCanvasElement -> Maybe type' -> JSVal -> m ()
+toDataURL'_ self type' quality = liftDOM (void ((js_toDataURL' (self) (toOptionalJSString type') (quality))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
-getWidth :: (MonadIO m) => HTMLCanvasElement -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+foreign import javascript safe "(($1) => { return $1[\"transferControlToOffscreen\"](); })"
+        js_transferControlToOffscreen :: HTMLCanvasElement -> IO OffscreenCanvas
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen MDN HTMLCanvasElement.transferControlToOffscreen documentation>
+transferControlToOffscreen :: (MonadDOM m) => HTMLCanvasElement -> m OffscreenCanvas
+transferControlToOffscreen self = liftDOM ((js_transferControlToOffscreen (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen MDN HTMLCanvasElement.transferControlToOffscreen documentation>
+transferControlToOffscreen_ :: (MonadDOM m) => HTMLCanvasElement -> m ()
+transferControlToOffscreen_ self = liftDOM (void ((js_transferControlToOffscreen (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLCanvasElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/width MDN HTMLCanvasElement.width documentation>
+setWidth :: (MonadDOM m) => HTMLCanvasElement -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLCanvasElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/width MDN HTMLCanvasElement.width documentation>
+getWidth :: (MonadDOM m) => HTMLCanvasElement -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
         js_setHeight :: HTMLCanvasElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/height MDN HTMLCanvasElement.height documentation>
+setHeight :: (MonadDOM m) => HTMLCanvasElement -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
-setHeight :: (MonadIO m) => HTMLCanvasElement -> Word -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLCanvasElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLCanvasElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/height MDN HTMLCanvasElement.height documentation>
+getHeight :: (MonadDOM m) => HTMLCanvasElement -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
-getHeight :: (MonadIO m) => HTMLCanvasElement -> m Word
-getHeight self = liftIO (js_getHeight self)
+webglcontextcreationerror :: EventName HTMLCanvasElement WebGLContextEvent
+webglcontextcreationerror = unsafeEventName (toJSString "webglcontextcreationerror")
+
+webglcontextlost :: EventName HTMLCanvasElement WebGLContextEvent
+webglcontextlost = unsafeEventName (toJSString "webglcontextlost")
+
+webglcontextrestored :: EventName HTMLCanvasElement WebGLContextEvent
+webglcontextrestored = unsafeEventName (toJSString "webglcontextrestored")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
@@ -1,109 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLCollection
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        js_getLength, getLength, HTMLCollection(..), gTypeHTMLCollection,
-        IsHTMLCollection, toHTMLCollection)
+       (js_item, js_namedItem, js_getLength, item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, getLength, HTMLCollection(..), gTypeHTMLCollection, IsHTMLCollection, toHTMLCollection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        HTMLCollection -> Word -> IO (Nullable Element)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
-item ::
-     (MonadIO m, IsHTMLCollection self) =>
-       self -> Word -> m (Maybe Element)
-item self index
-  = liftIO
-      (nullableToMaybe <$> (js_item (toHTMLCollection self) index))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: HTMLCollection -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/item MDN HTMLCollection.item documentation>
+item :: (MonadDOM m, IsHTMLCollection self) => self -> Word -> m (Maybe Element)
+item self index = liftDOM (((js_item ((Types.toHTMLCollection self)) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
-item_ :: (MonadIO m, IsHTMLCollection self) => self -> Word -> m ()
-item_ self index
-  = liftIO (void (js_item (toHTMLCollection self) index))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/item MDN HTMLCollection.item documentation>
+item_ :: (MonadDOM m, IsHTMLCollection self) => self -> Word -> m ()
+item_ self index = liftDOM (void ((js_item ((Types.toHTMLCollection self)) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
-itemUnsafe ::
-           (MonadIO m, IsHTMLCollection self, HasCallStack) =>
-             self -> Word -> m Element
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item (toHTMLCollection self) index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/item MDN HTMLCollection.item documentation>
+itemUnsafe :: (MonadDOM m, IsHTMLCollection self, HasCallStack) => self -> Word -> m Element
+itemUnsafe self index = liftDOM ((((js_item ((Types.toHTMLCollection self)) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
-itemUnchecked ::
-              (MonadIO m, IsHTMLCollection self) => self -> Word -> m Element
-itemUnchecked self index
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_item (toHTMLCollection self) index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        HTMLCollection -> JSString -> IO (Nullable Element)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/item MDN HTMLCollection.item documentation>
+itemUnchecked :: (MonadDOM m, IsHTMLCollection self) => self -> Word -> m Element
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item ((Types.toHTMLCollection self)) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
-namedItem ::
-          (MonadIO m, IsHTMLCollection self, ToJSString name) =>
-            self -> name -> m (Maybe Element)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$>
-         (js_namedItem (toHTMLCollection self) (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem :: HTMLCollection -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem MDN HTMLCollection.namedItem documentation>
+namedItem :: (MonadDOM m, IsHTMLCollection self, ToJSString name) => self -> name -> m (Maybe Element)
+namedItem self name = liftDOM (((js_namedItem ((Types.toHTMLCollection self)) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, IsHTMLCollection self, ToJSString name) =>
-             self -> name -> m ()
-namedItem_ self name
-  = liftIO
-      (void (js_namedItem (toHTMLCollection self) (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem MDN HTMLCollection.namedItem documentation>
+namedItem_ :: (MonadDOM m, IsHTMLCollection self, ToJSString name) => self -> name -> m ()
+namedItem_ self name = liftDOM (void ((js_namedItem ((Types.toHTMLCollection self)) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, IsHTMLCollection self, ToJSString name,
-                 HasCallStack) =>
-                  self -> name -> m Element
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_namedItem (toHTMLCollection self) (toJSString name)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem MDN HTMLCollection.namedItem documentation>
+namedItemUnsafe :: (MonadDOM m, IsHTMLCollection self, ToJSString name, HasCallStack) => self -> name -> m Element
+namedItemUnsafe self name = liftDOM ((((js_namedItem ((Types.toHTMLCollection self)) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, IsHTMLCollection self, ToJSString name) =>
-                     self -> name -> m Element
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem (toHTMLCollection self) (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        HTMLCollection -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem MDN HTMLCollection.namedItem documentation>
+namedItemUnchecked :: (MonadDOM m, IsHTMLCollection self, ToJSString name) => self -> name -> m Element
+namedItemUnchecked self name = liftDOM ((pFromJSVal <$> (js_namedItem ((Types.toHTMLCollection self)) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.length Mozilla HTMLCollection.length documentation> 
-getLength :: (MonadIO m, IsHTMLCollection self) => self -> m Word
-getLength self = liftIO (js_getLength (toHTMLCollection self))
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: HTMLCollection -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/length MDN HTMLCollection.length documentation>
+getLength :: (MonadDOM m, IsHTMLCollection self) => self -> m Word
+getLength self = liftDOM ((js_getLength ((Types.toHTMLCollection self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
@@ -1,41 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLDListElement
-       (js_setCompact, setCompact, js_getCompact, getCompact,
-        HTMLDListElement(..), gTypeHTMLDListElement)
+       (js_setCompact, js_getCompact, setCompact, getCompact, HTMLDListElement(..), gTypeHTMLDListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"compact\"] = $2; })"
         js_setCompact :: HTMLDListElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDListElement/compact MDN HTMLDListElement.compact documentation>
+setCompact :: (MonadDOM m) => HTMLDListElement -> Bool -> m ()
+setCompact self val = liftDOM (void ((js_setCompact (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
-setCompact :: (MonadIO m) => HTMLDListElement -> Bool -> m ()
-setCompact self val = liftIO (js_setCompact self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"compact\"]; })"
         js_getCompact :: HTMLDListElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
-getCompact :: (MonadIO m) => HTMLDListElement -> m Bool
-getCompact self = liftIO (js_getCompact self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDListElement/compact MDN HTMLDListElement.compact documentation>
+getCompact :: (MonadDOM m) => HTMLDListElement -> m Bool
+getCompact self = liftDOM ((js_getCompact (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLDataElement
-       (js_setValue, setValue, js_getValue, getValue, HTMLDataElement(..),
-        gTypeHTMLDataElement)
+       (js_setValue, js_getValue, setValue, getValue, HTMLDataElement(..), gTypeHTMLDataElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLDataElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement.value Mozilla HTMLDataElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLDataElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLDataElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLDataElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDataElement/value MDN HTMLDataElement.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => HTMLDataElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement.value Mozilla HTMLDataElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLDataElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLDataElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDataElement/value MDN HTMLDataElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLDataElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
@@ -1,35 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
-       (js_getOptions, getOptions, HTMLDataListElement(..),
-        gTypeHTMLDataListElement)
+       (js_getOptions, getOptions, HTMLDataListElement(..), gTypeHTMLDataListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })" js_getOptions ::
-        HTMLDataListElement -> IO HTMLCollection
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
-getOptions ::
-           (MonadIO m) => HTMLDataListElement -> m HTMLCollection
-getOptions self = liftIO (js_getOptions self)
+foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })"
+        js_getOptions :: HTMLDataListElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDataListElement/options MDN HTMLDataListElement.options documentation>
+getOptions :: (MonadDOM m) => HTMLDataListElement -> m HTMLCollection
+getOptions self = liftDOM ((js_getOptions (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
@@ -1,41 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
-       (js_setOpen, setOpen, js_getOpen, getOpen, HTMLDetailsElement(..),
-        gTypeHTMLDetailsElement)
+       (js_setName, js_getName, js_setOpen, js_getOpen, setName, getName, setOpen, getOpen, HTMLDetailsElement(..), gTypeHTMLDetailsElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"open\"] = $2; })" js_setOpen ::
-        HTMLDetailsElement -> Bool -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
-setOpen :: (MonadIO m) => HTMLDetailsElement -> Bool -> m ()
-setOpen self val = liftIO (js_setOpen self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"open\"] ? 1 : 0); })"
-        js_getOpen :: HTMLDetailsElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLDetailsElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/name MDN HTMLDetailsElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLDetailsElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
-getOpen :: (MonadIO m) => HTMLDetailsElement -> m Bool
-getOpen self = liftIO (js_getOpen self)
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLDetailsElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/name MDN HTMLDetailsElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLDetailsElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"open\"] = $2; })"
+        js_setOpen :: HTMLDetailsElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/open MDN HTMLDetailsElement.open documentation>
+setOpen :: (MonadDOM m) => HTMLDetailsElement -> Bool -> m ()
+setOpen self val = liftDOM (void ((js_setOpen (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"open\"]; })"
+        js_getOpen :: HTMLDetailsElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/open MDN HTMLDetailsElement.open documentation>
+getOpen :: (MonadDOM m) => HTMLDetailsElement -> m Bool
+getOpen self = liftDOM ((js_getOpen (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDialogElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDialogElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDialogElement.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLDialogElement
+       (js_close, js_requestClose, js_show, js_showModal, js_setOpen, js_getOpen, js_setReturnValue, js_getReturnValue, js_setClosedBy, js_getClosedBy, close, requestClose, show, showModal, setOpen, getOpen, setReturnValue, getReturnValue, setClosedBy, getClosedBy, HTMLDialogElement(..), gTypeHTMLDialogElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"close\"]($2); })"
+        js_close :: HTMLDialogElement -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/close MDN HTMLDialogElement.close documentation>
+close :: (MonadDOM m, ToJSString returnValue) => HTMLDialogElement -> Maybe returnValue -> m ()
+close self returnValue = liftDOM (void ((js_close (self) (toOptionalJSString returnValue))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"requestClose\"]($2); })"
+        js_requestClose :: HTMLDialogElement -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/requestClose MDN HTMLDialogElement.requestClose documentation>
+requestClose :: (MonadDOM m, ToJSString returnValue) => HTMLDialogElement -> Maybe returnValue -> m ()
+requestClose self returnValue = liftDOM (void ((js_requestClose (self) (toOptionalJSString returnValue))))
+
+foreign import javascript safe "(($1) => { return $1[\"show\"](); })"
+        js_show :: HTMLDialogElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/show MDN HTMLDialogElement.show documentation>
+show :: (MonadDOM m) => HTMLDialogElement -> m ()
+show self = liftDOM (void ((js_show (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"showModal\"](); })"
+        js_showModal :: HTMLDialogElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/showModal MDN HTMLDialogElement.showModal documentation>
+showModal :: (MonadDOM m) => HTMLDialogElement -> m ()
+showModal self = liftDOM (void ((js_showModal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"open\"] = $2; })"
+        js_setOpen :: HTMLDialogElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/open MDN HTMLDialogElement.open documentation>
+setOpen :: (MonadDOM m) => HTMLDialogElement -> Bool -> m ()
+setOpen self val = liftDOM (void ((js_setOpen (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"open\"]; })"
+        js_getOpen :: HTMLDialogElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/open MDN HTMLDialogElement.open documentation>
+getOpen :: (MonadDOM m) => HTMLDialogElement -> m Bool
+getOpen self = liftDOM ((js_getOpen (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"returnValue\"] = $2; })"
+        js_setReturnValue :: HTMLDialogElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/returnValue MDN HTMLDialogElement.returnValue documentation>
+setReturnValue :: (MonadDOM m, ToJSString val) => HTMLDialogElement -> val -> m ()
+setReturnValue self val = liftDOM (void ((js_setReturnValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"returnValue\"]; })"
+        js_getReturnValue :: HTMLDialogElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/returnValue MDN HTMLDialogElement.returnValue documentation>
+getReturnValue :: (MonadDOM m, FromJSString result) => HTMLDialogElement -> m result
+getReturnValue self = liftDOM ((fromJSString <$> (js_getReturnValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"closedBy\"] = $2; })"
+        js_setClosedBy :: HTMLDialogElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/closedBy MDN HTMLDialogElement.closedBy documentation>
+setClosedBy :: (MonadDOM m, ToJSString val) => HTMLDialogElement -> val -> m ()
+setClosedBy self val = liftDOM (void ((js_setClosedBy (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"closedBy\"]; })"
+        js_getClosedBy :: HTMLDialogElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/closedBy MDN HTMLDialogElement.closedBy documentation>
+getClosedBy :: (MonadDOM m, FromJSString result) => HTMLDialogElement -> m result
+getClosedBy self = liftDOM ((fromJSString <$> (js_getClosedBy (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
@@ -1,41 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
-       (js_setCompact, setCompact, js_getCompact, getCompact,
-        HTMLDirectoryElement(..), gTypeHTMLDirectoryElement)
+       (js_setCompact, js_getCompact, setCompact, getCompact, HTMLDirectoryElement(..), gTypeHTMLDirectoryElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"compact\"] = $2; })"
         js_setCompact :: HTMLDirectoryElement -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-dir-compact HTMLDirectoryElement.compact specification>
+setCompact :: (MonadDOM m) => HTMLDirectoryElement -> Bool -> m ()
+setCompact self val = liftDOM (void ((js_setCompact (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
-setCompact :: (MonadIO m) => HTMLDirectoryElement -> Bool -> m ()
-setCompact self val = liftIO (js_setCompact self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"compact\"]; })"
         js_getCompact :: HTMLDirectoryElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
-getCompact :: (MonadIO m) => HTMLDirectoryElement -> m Bool
-getCompact self = liftIO (js_getCompact self)
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-dir-compact HTMLDirectoryElement.compact specification>
+getCompact :: (MonadDOM m) => HTMLDirectoryElement -> m Bool
+getCompact self = liftDOM ((js_getCompact (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLDivElement
-       (js_setAlign, setAlign, js_getAlign, getAlign, HTMLDivElement(..),
-        gTypeHTMLDivElement)
+       (js_setAlign, js_getAlign, setAlign, getAlign, HTMLDivElement(..), gTypeHTMLDivElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLDivElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLDivElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLDivElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLDivElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-div-align HTMLDivElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLDivElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLDivElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLDivElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-div-align HTMLDivElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLDivElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs
+++ /dev/null
@@ -1,179 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.HTMLDocument
-       (js_open, open, js_close, close, js_write, write, js_writeln,
-        writeln, js_clear, clear, js_captureEvents, captureEvents,
-        js_releaseEvents, releaseEvents, js_getAll, getAll, js_setBgColor,
-        setBgColor, js_getBgColor, getBgColor, js_setFgColor, setFgColor,
-        js_getFgColor, getFgColor, js_setAlinkColor, setAlinkColor,
-        js_getAlinkColor, getAlinkColor, js_setLinkColor, setLinkColor,
-        js_getLinkColor, getLinkColor, js_setVlinkColor, setVlinkColor,
-        js_getVlinkColor, getVlinkColor, HTMLDocument(..),
-        gTypeHTMLDocument)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"open\"](); })" js_open ::
-        HTMLDocument -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.open Mozilla HTMLDocument.open documentation> 
-open :: (MonadIO m) => HTMLDocument -> m ()
-open self = liftIO (js_open self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        HTMLDocument -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.close Mozilla HTMLDocument.close documentation> 
-close :: (MonadIO m) => HTMLDocument -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"write\"]($2); })" js_write ::
-        HTMLDocument -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.write Mozilla HTMLDocument.write documentation> 
-write ::
-      (MonadIO m, ToJSString text) => HTMLDocument -> Maybe text -> m ()
-write self text = liftIO (js_write self (toOptionalJSString text))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"writeln\"]($2); })" js_writeln
-        :: HTMLDocument -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.writeln Mozilla HTMLDocument.writeln documentation> 
-writeln ::
-        (MonadIO m, ToJSString text) => HTMLDocument -> Maybe text -> m ()
-writeln self text
-  = liftIO (js_writeln self (toOptionalJSString text))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        HTMLDocument -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.clear Mozilla HTMLDocument.clear documentation> 
-clear :: (MonadIO m) => HTMLDocument -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"captureEvents\"](); })"
-        js_captureEvents :: HTMLDocument -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.captureEvents Mozilla HTMLDocument.captureEvents documentation> 
-captureEvents :: (MonadIO m) => HTMLDocument -> m ()
-captureEvents self = liftIO (js_captureEvents self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"releaseEvents\"](); })"
-        js_releaseEvents :: HTMLDocument -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.releaseEvents Mozilla HTMLDocument.releaseEvents documentation> 
-releaseEvents :: (MonadIO m) => HTMLDocument -> m ()
-releaseEvents self = liftIO (js_releaseEvents self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"all\"]; })" js_getAll ::
-        HTMLDocument -> IO HTMLAllCollection
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.all Mozilla HTMLDocument.all documentation> 
-getAll :: (MonadIO m) => HTMLDocument -> m HTMLAllCollection
-getAll self = liftIO (js_getAll self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
-        js_setBgColor :: HTMLDocument -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
-setBgColor ::
-           (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
-setBgColor self val = liftIO (js_setBgColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
-        HTMLDocument -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
-getBgColor ::
-           (MonadIO m, FromJSString result) => HTMLDocument -> m result
-getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"fgColor\"] = $2; })"
-        js_setFgColor :: HTMLDocument -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
-setFgColor ::
-           (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
-setFgColor self val = liftIO (js_setFgColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fgColor\"]; })" js_getFgColor ::
-        HTMLDocument -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
-getFgColor ::
-           (MonadIO m, FromJSString result) => HTMLDocument -> m result
-getFgColor self = liftIO (fromJSString <$> (js_getFgColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"alinkColor\"] = $2; })"
-        js_setAlinkColor :: HTMLDocument -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
-setAlinkColor ::
-              (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
-setAlinkColor self val
-  = liftIO (js_setAlinkColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alinkColor\"]; })"
-        js_getAlinkColor :: HTMLDocument -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
-getAlinkColor ::
-              (MonadIO m, FromJSString result) => HTMLDocument -> m result
-getAlinkColor self
-  = liftIO (fromJSString <$> (js_getAlinkColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"linkColor\"] = $2; })"
-        js_setLinkColor :: HTMLDocument -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
-setLinkColor ::
-             (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
-setLinkColor self val
-  = liftIO (js_setLinkColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"linkColor\"]; })"
-        js_getLinkColor :: HTMLDocument -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
-getLinkColor ::
-             (MonadIO m, FromJSString result) => HTMLDocument -> m result
-getLinkColor self
-  = liftIO (fromJSString <$> (js_getLinkColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vlinkColor\"] = $2; })"
-        js_setVlinkColor :: HTMLDocument -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
-setVlinkColor ::
-              (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
-setVlinkColor self val
-  = liftIO (js_setVlinkColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vlinkColor\"]; })"
-        js_getVlinkColor :: HTMLDocument -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
-getVlinkColor ::
-              (MonadIO m, FromJSString result) => HTMLDocument -> m result
-getVlinkColor self
-  = liftIO (fromJSString <$> (js_getVlinkColor self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
@@ -1,434 +1,301 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLElement
-       (js_newHTMLElement, newHTMLElement, js_click, click, js_focus,
-        focus, js_blur, blur, js_setTitle, setTitle, js_getTitle, getTitle,
-        js_setLang, setLang, js_getLang, getLang, js_setTranslate,
-        setTranslate, js_getTranslate, getTranslate, js_setDir, setDir,
-        js_getDir, getDir, js_getDataset, getDataset, js_setHidden,
-        setHidden, js_getHidden, getHidden, js_setTabIndex, setTabIndex,
-        js_getTabIndex, getTabIndex, js_setAccessKey, setAccessKey,
-        js_getAccessKey, getAccessKey, js_setDraggable, setDraggable,
-        js_getDraggable, getDraggable, js_setSpellcheck, setSpellcheck,
-        js_getSpellcheck, getSpellcheck, js_setInnerText, setInnerText,
-        js_getInnerText, getInnerText, js_setContentEditable,
-        setContentEditable, js_getContentEditable, getContentEditable,
-        js_getIsContentEditable, getIsContentEditable, js_getOffsetParent,
-        getOffsetParent, getOffsetParentUnsafe, getOffsetParentUnchecked,
-        js_getOffsetTop, getOffsetTop, js_getOffsetLeft, getOffsetLeft,
-        js_getOffsetWidth, getOffsetWidth, js_getOffsetHeight,
-        getOffsetHeight, js_setOuterText, setOuterText, js_getOuterText,
-        getOuterText, js_setAutocorrect, setAutocorrect, js_getAutocorrect,
-        getAutocorrect, js_setAutocapitalize, setAutocapitalize,
-        js_getAutocapitalize, getAutocapitalize, js_setWebkitdropzone,
-        setWebkitdropzone, js_getWebkitdropzone, getWebkitdropzone,
-        HTMLElement(..), gTypeHTMLElement, IsHTMLElement, toHTMLElement)
+       (js_attachInternals, js_click, js_hidePopover, js_showPopover, js_togglePopover, js_setTitle, js_getTitle, js_setLang, js_getLang, js_setTranslate, js_getTranslate, js_setDir, js_getDir, js_setHidden, js_getHidden, js_setInert, js_getInert, js_setAccessKey, js_getAccessKey, js_getAccessKeyLabel, js_setDraggable, js_getDraggable, js_setSpellcheck, js_getSpellcheck, js_setWritingSuggestions, js_getWritingSuggestions, js_setAutocapitalize, js_getAutocapitalize, js_setAutocorrect, js_getAutocorrect, js_setInnerText, js_getInnerText, js_setOuterText, js_getOuterText, js_setPopover, js_getPopover, js_getOffsetParent, js_getOffsetTop, js_getOffsetLeft, js_getOffsetWidth, js_getOffsetHeight, attachInternals, attachInternals_, click, hidePopover, showPopover, togglePopover, togglePopover_, setTitle, getTitle, setLang, getLang, setTranslate, getTranslate, setDir, getDir, setHidden, getHidden, getHiddenUnsafe, getHiddenUnchecked, setInert, getInert, setAccessKey, getAccessKey, getAccessKeyLabel, setDraggable, getDraggable, setSpellcheck, getSpellcheck, setWritingSuggestions, getWritingSuggestions, setAutocapitalize, getAutocapitalize, setAutocorrect, getAutocorrect, setInnerText, getInnerText, setOuterText, getOuterText, setPopover, getPopover, getPopoverUnsafe, getPopoverUnchecked, getOffsetParent, getOffsetParentUnsafe, getOffsetParentUnchecked, getOffsetTop, getOffsetLeft, getOffsetWidth, getOffsetHeight, navbeforefocus, navnotarget, HTMLElement(..), gTypeHTMLElement, IsHTMLElement, toHTMLElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"HTMLElement\"](); })"
-        js_newHTMLElement :: IO HTMLElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation> 
-newHTMLElement :: (MonadIO m) => m HTMLElement
-newHTMLElement = liftIO (js_newHTMLElement)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"click\"](); })" js_click ::
-        HTMLElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"attachInternals\"](); })"
+        js_attachInternals :: HTMLElement -> IO ElementInternals
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/attachInternals MDN HTMLElement.attachInternals documentation>
+attachInternals :: (MonadDOM m, IsHTMLElement self) => self -> m ElementInternals
+attachInternals self = liftDOM ((js_attachInternals ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.click Mozilla HTMLElement.click documentation> 
-click :: (MonadIO m, IsHTMLElement self) => self -> m ()
-click self = liftIO (js_click (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"focus\"](); })" js_focus ::
-        HTMLElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/attachInternals MDN HTMLElement.attachInternals documentation>
+attachInternals_ :: (MonadDOM m, IsHTMLElement self) => self -> m ()
+attachInternals_ self = liftDOM (void ((js_attachInternals ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.focus Mozilla HTMLElement.focus documentation> 
-focus :: (MonadIO m, IsHTMLElement self) => self -> m ()
-focus self = liftIO (js_focus (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"blur\"](); })" js_blur ::
-        HTMLElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"click\"](); })"
+        js_click :: HTMLElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/click MDN HTMLElement.click documentation>
+click :: (MonadDOM m, IsHTMLElement self) => self -> m ()
+click self = liftDOM (void ((js_click ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.blur Mozilla HTMLElement.blur documentation> 
-blur :: (MonadIO m, IsHTMLElement self) => self -> m ()
-blur self = liftIO (js_blur (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"title\"] = $2; })" js_setTitle
-        :: HTMLElement -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"hidePopover\"](); })"
+        js_hidePopover :: HTMLElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/hidePopover MDN HTMLElement.hidePopover documentation>
+hidePopover :: (MonadDOM m, IsHTMLElement self) => self -> m ()
+hidePopover self = liftDOM (void ((js_hidePopover ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
-setTitle ::
-         (MonadIO m, IsHTMLElement self, ToJSString val) =>
-           self -> val -> m ()
-setTitle self val
-  = liftIO (js_setTitle (toHTMLElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
-        HTMLElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"showPopover\"]($2); })"
+        js_showPopover :: HTMLElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/showPopover MDN HTMLElement.showPopover documentation>
+showPopover :: (MonadDOM m, IsHTMLElement self, IsShowPopoverOptions options) => self -> Maybe options -> m ()
+showPopover self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_showPopover ((Types.toHTMLElement self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
-getTitle ::
-         (MonadIO m, IsHTMLElement self, FromJSString result) =>
-           self -> m result
-getTitle self
-  = liftIO (fromJSString <$> (js_getTitle (toHTMLElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"lang\"] = $2; })" js_setLang ::
-        HTMLElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"togglePopover\"]($2); })"
+        js_togglePopover :: HTMLElement -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/togglePopover MDN HTMLElement.togglePopover documentation>
+togglePopover :: (MonadDOM m, IsHTMLElement self, IsTogglePopoverOptionsOrBool options) => self -> Maybe options -> m Bool
+togglePopover self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_togglePopover ((Types.toHTMLElement self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
-setLang ::
-        (MonadIO m, IsHTMLElement self, ToJSString val) =>
-          self -> val -> m ()
-setLang self val
-  = liftIO (js_setLang (toHTMLElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })" js_getLang ::
-        HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/togglePopover MDN HTMLElement.togglePopover documentation>
+togglePopover_ :: (MonadDOM m, IsHTMLElement self, IsTogglePopoverOptionsOrBool options) => self -> Maybe options -> m ()
+togglePopover_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_togglePopover ((Types.toHTMLElement self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
-getLang ::
-        (MonadIO m, IsHTMLElement self, FromJSString result) =>
-          self -> m result
-getLang self
-  = liftIO (fromJSString <$> (js_getLang (toHTMLElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"translate\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/title MDN HTMLElement.title documentation>
+setTitle :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle ((Types.toHTMLElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/title MDN HTMLElement.title documentation>
+getTitle :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getTitle self = liftDOM ((fromJSString <$> (js_getTitle ((Types.toHTMLElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lang\"] = $2; })"
+        js_setLang :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/lang MDN HTMLElement.lang documentation>
+setLang :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setLang self val = liftDOM (void ((js_setLang ((Types.toHTMLElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })"
+        js_getLang :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/lang MDN HTMLElement.lang documentation>
+getLang :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getLang self = liftDOM ((fromJSString <$> (js_getLang ((Types.toHTMLElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"translate\"] = $2; })"
         js_setTranslate :: HTMLElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/translate MDN HTMLElement.translate documentation>
+setTranslate :: (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setTranslate self val = liftDOM (void ((js_setTranslate ((Types.toHTMLElement self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
-setTranslate ::
-             (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
-setTranslate self val
-  = liftIO (js_setTranslate (toHTMLElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"translate\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"translate\"]; })"
         js_getTranslate :: HTMLElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/translate MDN HTMLElement.translate documentation>
+getTranslate :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getTranslate self = liftDOM ((js_getTranslate ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
-getTranslate :: (MonadIO m, IsHTMLElement self) => self -> m Bool
-getTranslate self = liftIO (js_getTranslate (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dir\"] = $2; })" js_setDir ::
-        HTMLElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"dir\"] = $2; })"
+        js_setDir :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/dir MDN HTMLElement.dir documentation>
+setDir :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setDir self val = liftDOM (void ((js_setDir ((Types.toHTMLElement self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
-setDir ::
-       (MonadIO m, IsHTMLElement self, ToJSString val) =>
-         self -> val -> m ()
-setDir self val
-  = liftIO (js_setDir (toHTMLElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })" js_getDir ::
-        HTMLElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })"
+        js_getDir :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/dir MDN HTMLElement.dir documentation>
+getDir :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getDir self = liftDOM ((fromJSString <$> (js_getDir ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
-getDir ::
-       (MonadIO m, IsHTMLElement self, FromJSString result) =>
-         self -> m result
-getDir self
-  = liftIO (fromJSString <$> (js_getDir (toHTMLElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dataset\"]; })" js_getDataset ::
-        HTMLElement -> IO DOMStringMap
+foreign import javascript safe "(($1, $2) => { $1[\"hidden\"] = $2; })"
+        js_setHidden :: HTMLElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/hidden MDN HTMLElement.hidden documentation>
+setHidden :: (MonadDOM m, IsHTMLElement self, IsBoolOrDoubleOrString val) => self -> Maybe val -> m ()
+setHidden self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHidden ((Types.toHTMLElement self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset Mozilla HTMLElement.dataset documentation> 
-getDataset ::
-           (MonadIO m, IsHTMLElement self) => self -> m DOMStringMap
-getDataset self = liftIO (js_getDataset (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hidden\"] = $2; })"
-        js_setHidden :: HTMLElement -> Bool -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"hidden\"]; })"
+        js_getHidden :: HTMLElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/hidden MDN HTMLElement.hidden documentation>
+getHidden :: (MonadDOM m, IsHTMLElement self) => self -> m (Maybe BoolOrDoubleOrString)
+getHidden self = liftDOM (((js_getHidden ((Types.toHTMLElement self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
-setHidden ::
-          (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
-setHidden self val = liftIO (js_setHidden (toHTMLElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"hidden\"] ? 1 : 0); })"
-        js_getHidden :: HTMLElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/hidden MDN HTMLElement.hidden documentation>
+getHiddenUnsafe :: (MonadDOM m, IsHTMLElement self, HasCallStack) => self -> m BoolOrDoubleOrString
+getHiddenUnsafe self = liftDOM ((((js_getHidden ((Types.toHTMLElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
-getHidden :: (MonadIO m, IsHTMLElement self) => self -> m Bool
-getHidden self = liftIO (js_getHidden (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"tabIndex\"] = $2; })"
-        js_setTabIndex :: HTMLElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/hidden MDN HTMLElement.hidden documentation>
+getHiddenUnchecked :: (MonadDOM m, IsHTMLElement self) => self -> m BoolOrDoubleOrString
+getHiddenUnchecked self = liftDOM ((pFromJSVal <$> (js_getHidden ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
-setTabIndex ::
-            (MonadIO m, IsHTMLElement self) => self -> Int -> m ()
-setTabIndex self val
-  = liftIO (js_setTabIndex (toHTMLElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tabIndex\"]; })" js_getTabIndex
-        :: HTMLElement -> IO Int
+foreign import javascript safe "(($1, $2) => { $1[\"inert\"] = $2; })"
+        js_setInert :: HTMLElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/inert MDN HTMLElement.inert documentation>
+setInert :: (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setInert self val = liftDOM (void ((js_setInert ((Types.toHTMLElement self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
-getTabIndex :: (MonadIO m, IsHTMLElement self) => self -> m Int
-getTabIndex self = liftIO (js_getTabIndex (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"accessKey\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"inert\"]; })"
+        js_getInert :: HTMLElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/inert MDN HTMLElement.inert documentation>
+getInert :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getInert self = liftDOM ((js_getInert ((Types.toHTMLElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"accessKey\"] = $2; })"
         js_setAccessKey :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/accessKey MDN HTMLElement.accessKey documentation>
+setAccessKey :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setAccessKey self val = liftDOM (void ((js_setAccessKey ((Types.toHTMLElement self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
-setAccessKey ::
-             (MonadIO m, IsHTMLElement self, ToJSString val) =>
-               self -> val -> m ()
-setAccessKey self val
-  = liftIO (js_setAccessKey (toHTMLElement self) (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"accessKey\"]; })"
         js_getAccessKey :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/accessKey MDN HTMLElement.accessKey documentation>
+getAccessKey :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getAccessKey self = liftDOM ((fromJSString <$> (js_getAccessKey ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
-getAccessKey ::
-             (MonadIO m, IsHTMLElement self, FromJSString result) =>
-               self -> m result
-getAccessKey self
-  = liftIO (fromJSString <$> (js_getAccessKey (toHTMLElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"draggable\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"accessKeyLabel\"]; })"
+        js_getAccessKeyLabel :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/accessKeyLabel MDN HTMLElement.accessKeyLabel documentation>
+getAccessKeyLabel :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getAccessKeyLabel self = liftDOM ((fromJSString <$> (js_getAccessKeyLabel ((Types.toHTMLElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"draggable\"] = $2; })"
         js_setDraggable :: HTMLElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/draggable MDN HTMLElement.draggable documentation>
+setDraggable :: (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setDraggable self val = liftDOM (void ((js_setDraggable ((Types.toHTMLElement self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
-setDraggable ::
-             (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
-setDraggable self val
-  = liftIO (js_setDraggable (toHTMLElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"draggable\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"draggable\"]; })"
         js_getDraggable :: HTMLElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/draggable MDN HTMLElement.draggable documentation>
+getDraggable :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getDraggable self = liftDOM ((js_getDraggable ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
-getDraggable :: (MonadIO m, IsHTMLElement self) => self -> m Bool
-getDraggable self = liftIO (js_getDraggable (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"spellcheck\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"spellcheck\"] = $2; })"
         js_setSpellcheck :: HTMLElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/spellcheck MDN HTMLElement.spellcheck documentation>
+setSpellcheck :: (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setSpellcheck self val = liftDOM (void ((js_setSpellcheck ((Types.toHTMLElement self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
-setSpellcheck ::
-              (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
-setSpellcheck self val
-  = liftIO (js_setSpellcheck (toHTMLElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"spellcheck\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"spellcheck\"]; })"
         js_getSpellcheck :: HTMLElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/spellcheck MDN HTMLElement.spellcheck documentation>
+getSpellcheck :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getSpellcheck self = liftDOM ((js_getSpellcheck ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
-getSpellcheck :: (MonadIO m, IsHTMLElement self) => self -> m Bool
-getSpellcheck self = liftIO (js_getSpellcheck (toHTMLElement self))
- 
+foreign import javascript safe "(($1, $2) => { $1[\"writingSuggestions\"] = $2; })"
+        js_setWritingSuggestions :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/writingSuggestions MDN HTMLElement.writingSuggestions documentation>
+setWritingSuggestions :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setWritingSuggestions self val = liftDOM (void ((js_setWritingSuggestions ((Types.toHTMLElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writingSuggestions\"]; })"
+        js_getWritingSuggestions :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/writingSuggestions MDN HTMLElement.writingSuggestions documentation>
+getWritingSuggestions :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getWritingSuggestions self = liftDOM ((fromJSString <$> (js_getWritingSuggestions ((Types.toHTMLElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autocapitalize\"] = $2; })"
+        js_setAutocapitalize :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autocapitalize MDN HTMLElement.autocapitalize documentation>
+setAutocapitalize :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setAutocapitalize self val = liftDOM (void ((js_setAutocapitalize ((Types.toHTMLElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autocapitalize\"]; })"
+        js_getAutocapitalize :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autocapitalize MDN HTMLElement.autocapitalize documentation>
+getAutocapitalize :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getAutocapitalize self = liftDOM ((fromJSString <$> (js_getAutocapitalize ((Types.toHTMLElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autocorrect\"] = $2; })"
+        js_setAutocorrect :: HTMLElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autocorrect MDN HTMLElement.autocorrect documentation>
+setAutocorrect :: (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
+setAutocorrect self val = liftDOM (void ((js_setAutocorrect ((Types.toHTMLElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autocorrect\"]; })"
+        js_getAutocorrect :: HTMLElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autocorrect MDN HTMLElement.autocorrect documentation>
+getAutocorrect :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getAutocorrect self = liftDOM ((js_getAutocorrect ((Types.toHTMLElement self))))
+
 foreign import javascript safe "(($1, $2) => { $1[\"innerText\"] = $2; })"
         js_setInnerText :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/innerText MDN HTMLElement.innerText documentation>
+setInnerText :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setInnerText self val = liftDOM (void ((js_setInnerText ((Types.toHTMLElement self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
-setInnerText ::
-             (MonadIO m, IsHTMLElement self, ToJSString val) =>
-               self -> val -> m ()
-setInnerText self val
-  = liftIO (js_setInnerText (toHTMLElement self) (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"innerText\"]; })"
         js_getInnerText :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/innerText MDN HTMLElement.innerText documentation>
+getInnerText :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getInnerText self = liftDOM ((fromJSString <$> (js_getInnerText ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
-getInnerText ::
-             (MonadIO m, IsHTMLElement self, FromJSString result) =>
-               self -> m result
-getInnerText self
-  = liftIO (fromJSString <$> (js_getInnerText (toHTMLElement self)))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"contentEditable\"] = $2; })"
-        js_setContentEditable :: HTMLElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"outerText\"] = $2; })"
+        js_setOuterText :: HTMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/outerText MDN HTMLElement.outerText documentation>
+setOuterText :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> val -> m ()
+setOuterText self val = liftDOM (void ((js_setOuterText ((Types.toHTMLElement self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
-setContentEditable ::
-                   (MonadIO m, IsHTMLElement self, ToJSString val) =>
-                     self -> val -> m ()
-setContentEditable self val
-  = liftIO
-      (js_setContentEditable (toHTMLElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contentEditable\"]; })"
-        js_getContentEditable :: HTMLElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"outerText\"]; })"
+        js_getOuterText :: HTMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/outerText MDN HTMLElement.outerText documentation>
+getOuterText :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getOuterText self = liftDOM ((fromJSString <$> (js_getOuterText ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
-getContentEditable ::
-                   (MonadIO m, IsHTMLElement self, FromJSString result) =>
-                     self -> m result
-getContentEditable self
-  = liftIO
-      (fromJSString <$> (js_getContentEditable (toHTMLElement self)))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"isContentEditable\"] ? 1 : 0); })" js_getIsContentEditable ::
-        HTMLElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"popover\"] = $2; })"
+        js_setPopover :: HTMLElement -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/popover MDN HTMLElement.popover documentation>
+setPopover :: (MonadDOM m, IsHTMLElement self, ToJSString val) => self -> Maybe val -> m ()
+setPopover self val = liftDOM (void ((js_setPopover ((Types.toHTMLElement self)) (toMaybeJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.isContentEditable Mozilla HTMLElement.isContentEditable documentation> 
-getIsContentEditable ::
-                     (MonadIO m, IsHTMLElement self) => self -> m Bool
-getIsContentEditable self
-  = liftIO (js_getIsContentEditable (toHTMLElement self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"popover\"]; })"
+        js_getPopover :: HTMLElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/popover MDN HTMLElement.popover documentation>
+getPopover :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m (Maybe result)
+getPopover self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPopover ((Types.toHTMLElement self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/popover MDN HTMLElement.popover documentation>
+getPopoverUnsafe :: (MonadDOM m, IsHTMLElement self, HasCallStack, FromJSString result) => self -> m result
+getPopoverUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPopover ((Types.toHTMLElement self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/popover MDN HTMLElement.popover documentation>
+getPopoverUnchecked :: (MonadDOM m, IsHTMLElement self, FromJSString result) => self -> m result
+getPopoverUnchecked self = liftDOM ((pFromJSVal <$> (js_getPopover ((Types.toHTMLElement self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"offsetParent\"]; })"
-        js_getOffsetParent :: HTMLElement -> IO (Nullable Element)
+        js_getOffsetParent :: HTMLElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetParent MDN HTMLElement.offsetParent documentation>
+getOffsetParent :: (MonadDOM m, IsHTMLElement self) => self -> m (Maybe Element)
+getOffsetParent self = liftDOM (((js_getOffsetParent ((Types.toHTMLElement self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
-getOffsetParent ::
-                (MonadIO m, IsHTMLElement self) => self -> m (Maybe Element)
-getOffsetParent self
-  = liftIO
-      (nullableToMaybe <$> (js_getOffsetParent (toHTMLElement self)))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetParent MDN HTMLElement.offsetParent documentation>
+getOffsetParentUnsafe :: (MonadDOM m, IsHTMLElement self, HasCallStack) => self -> m Element
+getOffsetParentUnsafe self = liftDOM ((((js_getOffsetParent ((Types.toHTMLElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
-getOffsetParentUnsafe ::
-                      (MonadIO m, IsHTMLElement self, HasCallStack) => self -> m Element
-getOffsetParentUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getOffsetParent (toHTMLElement self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetParent MDN HTMLElement.offsetParent documentation>
+getOffsetParentUnchecked :: (MonadDOM m, IsHTMLElement self) => self -> m Element
+getOffsetParentUnchecked self = liftDOM ((pFromJSVal <$> (js_getOffsetParent ((Types.toHTMLElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
-getOffsetParentUnchecked ::
-                         (MonadIO m, IsHTMLElement self) => self -> m Element
-getOffsetParentUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getOffsetParent (toHTMLElement self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"offsetTop\"]; })"
-        js_getOffsetTop :: HTMLElement -> IO Double
+        js_getOffsetTop :: HTMLElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetTop MDN HTMLElement.offsetTop documentation>
+getOffsetTop :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetTop self = liftDOM ((js_getOffsetTop ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetTop Mozilla HTMLElement.offsetTop documentation> 
-getOffsetTop :: (MonadIO m, IsHTMLElement self) => self -> m Double
-getOffsetTop self = liftIO (js_getOffsetTop (toHTMLElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"offsetLeft\"]; })"
-        js_getOffsetLeft :: HTMLElement -> IO Double
+        js_getOffsetLeft :: HTMLElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetLeft MDN HTMLElement.offsetLeft documentation>
+getOffsetLeft :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetLeft self = liftDOM ((js_getOffsetLeft ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetLeft Mozilla HTMLElement.offsetLeft documentation> 
-getOffsetLeft ::
-              (MonadIO m, IsHTMLElement self) => self -> m Double
-getOffsetLeft self = liftIO (js_getOffsetLeft (toHTMLElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"offsetWidth\"]; })"
-        js_getOffsetWidth :: HTMLElement -> IO Double
+        js_getOffsetWidth :: HTMLElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetWidth MDN HTMLElement.offsetWidth documentation>
+getOffsetWidth :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetWidth self = liftDOM ((js_getOffsetWidth ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetWidth Mozilla HTMLElement.offsetWidth documentation> 
-getOffsetWidth ::
-               (MonadIO m, IsHTMLElement self) => self -> m Double
-getOffsetWidth self
-  = liftIO (js_getOffsetWidth (toHTMLElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"offsetHeight\"]; })"
-        js_getOffsetHeight :: HTMLElement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetHeight Mozilla HTMLElement.offsetHeight documentation> 
-getOffsetHeight ::
-                (MonadIO m, IsHTMLElement self) => self -> m Double
-getOffsetHeight self
-  = liftIO (js_getOffsetHeight (toHTMLElement self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"outerText\"] = $2; })"
-        js_setOuterText :: HTMLElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
-setOuterText ::
-             (MonadIO m, IsHTMLElement self, ToJSString val) =>
-               self -> val -> m ()
-setOuterText self val
-  = liftIO (js_setOuterText (toHTMLElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"outerText\"]; })"
-        js_getOuterText :: HTMLElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
-getOuterText ::
-             (MonadIO m, IsHTMLElement self, FromJSString result) =>
-               self -> m result
-getOuterText self
-  = liftIO (fromJSString <$> (js_getOuterText (toHTMLElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autocorrect\"] = $2; })"
-        js_setAutocorrect :: HTMLElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocorrect Mozilla HTMLElement.autocorrect documentation> 
-setAutocorrect ::
-               (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
-setAutocorrect self val
-  = liftIO (js_setAutocorrect (toHTMLElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autocorrect\"] ? 1 : 0); })"
-        js_getAutocorrect :: HTMLElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocorrect Mozilla HTMLElement.autocorrect documentation> 
-getAutocorrect :: (MonadIO m, IsHTMLElement self) => self -> m Bool
-getAutocorrect self
-  = liftIO (js_getAutocorrect (toHTMLElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autocapitalize\"] = $2; })"
-        js_setAutocapitalize :: HTMLElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocapitalize Mozilla HTMLElement.autocapitalize documentation> 
-setAutocapitalize ::
-                  (MonadIO m, IsHTMLElement self, ToJSString val) =>
-                    self -> val -> m ()
-setAutocapitalize self val
-  = liftIO
-      (js_setAutocapitalize (toHTMLElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"autocapitalize\"]; })"
-        js_getAutocapitalize :: HTMLElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocapitalize Mozilla HTMLElement.autocapitalize documentation> 
-getAutocapitalize ::
-                  (MonadIO m, IsHTMLElement self, FromJSString result) =>
-                    self -> m result
-getAutocapitalize self
-  = liftIO
-      (fromJSString <$> (js_getAutocapitalize (toHTMLElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"webkitdropzone\"] = $2; })"
-        js_setWebkitdropzone :: HTMLElement -> JSString -> IO ()
+        js_getOffsetHeight :: HTMLElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetHeight MDN HTMLElement.offsetHeight documentation>
+getOffsetHeight :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetHeight self = liftDOM ((js_getOffsetHeight ((Types.toHTMLElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
-setWebkitdropzone ::
-                  (MonadIO m, IsHTMLElement self, ToJSString val) =>
-                    self -> val -> m ()
-setWebkitdropzone self val
-  = liftIO
-      (js_setWebkitdropzone (toHTMLElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitdropzone\"]; })"
-        js_getWebkitdropzone :: HTMLElement -> IO JSString
+navbeforefocus :: (IsHTMLElement self, IsEventTarget self) => EventName self NavigationEvent
+navbeforefocus = unsafeEventName (toJSString "navbeforefocus")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
-getWebkitdropzone ::
-                  (MonadIO m, IsHTMLElement self, FromJSString result) =>
-                    self -> m result
-getWebkitdropzone self
-  = liftIO
-      (fromJSString <$> (js_getWebkitdropzone (toHTMLElement self)))
+navnotarget :: (IsHTMLElement self, IsEventTarget self) => EventName self NavigationEvent
+navnotarget = unsafeEventName (toJSString "navnotarget")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
@@ -1,138 +1,107 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
-       (js_getSVGDocument, getSVGDocument, getSVGDocument_, js_setAlign,
-        setAlign, js_getAlign, getAlign, js_setHeight, setHeight,
-        js_getHeight, getHeight, js_setName, setName, js_getName, getName,
-        js_setSrc, setSrc, js_getSrc, getSrc, js_setType, setType,
-        js_getType, getType, js_setWidth, setWidth, js_getWidth, getWidth,
-        HTMLEmbedElement(..), gTypeHTMLEmbedElement)
+       (js_getSVGDocument, js_setSrc, js_getSrc, js_setType, js_getType, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setAlign, js_getAlign, js_setName, js_getName, getSVGDocument, getSVGDocument_, getSVGDocumentUnsafe, getSVGDocumentUnchecked, setSrc, getSrc, setType, getType, setWidth, getWidth, setHeight, getHeight, setAlign, getAlign, setName, getName, HTMLEmbedElement(..), gTypeHTMLEmbedElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
-        js_getSVGDocument :: HTMLEmbedElement -> IO Document
+        js_getSVGDocument :: HTMLEmbedElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
+getSVGDocument :: (MonadDOM m) => HTMLEmbedElement -> m (Maybe Document)
+getSVGDocument self = liftDOM (((js_getSVGDocument (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadIO m) => HTMLEmbedElement -> m Document
-getSVGDocument self = liftIO (js_getSVGDocument self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
+getSVGDocument_ :: (MonadDOM m) => HTMLEmbedElement -> m ()
+getSVGDocument_ self = liftDOM (void ((js_getSVGDocument (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
-getSVGDocument_ :: (MonadIO m) => HTMLEmbedElement -> m ()
-getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLEmbedElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
+getSVGDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLEmbedElement -> m Document
+getSVGDocumentUnsafe self = liftDOM ((((js_getSVGDocument (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.align Mozilla HTMLEmbedElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLEmbedElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
+getSVGDocumentUnchecked :: (MonadDOM m) => HTMLEmbedElement -> m Document
+getSVGDocumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getSVGDocument (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.align Mozilla HTMLEmbedElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
-        js_setHeight :: HTMLEmbedElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLEmbedElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/src MDN HTMLEmbedElement.src documentation>
+setSrc :: (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
-setHeight ::
-          (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setHeight self val = liftIO (js_setHeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLEmbedElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLEmbedElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/src MDN HTMLEmbedElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
-getHeight ::
-          (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
-getHeight self = liftIO (fromJSString <$> (js_getHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLEmbedElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLEmbedElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/type MDN HTMLEmbedElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLEmbedElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLEmbedElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/type MDN HTMLEmbedElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLEmbedElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLEmbedElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/width MDN HTMLEmbedElement.width documentation>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLEmbedElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLEmbedElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/width MDN HTMLEmbedElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLEmbedElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLEmbedElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/height MDN HTMLEmbedElement.height documentation>
+setHeight :: (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLEmbedElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLEmbedElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/height MDN HTMLEmbedElement.height documentation>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getHeight self = liftDOM ((fromJSString <$> (js_getHeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLEmbedElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLEmbedElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-embed-align HTMLEmbedElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLEmbedElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLEmbedElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-embed-align HTMLEmbedElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLEmbedElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-embed-name HTMLEmbedElement.name specification>
+setName :: (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLEmbedElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-embed-name HTMLEmbedElement.name specification>
+getName :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
@@ -1,145 +1,111 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
-       (js_checkValidity, checkValidity, checkValidity_,
-        js_reportValidity, reportValidity, reportValidity_,
-        js_setCustomValidity, setCustomValidity, js_setDisabled,
-        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
-        js_setName, setName, js_getName, getName, js_getType, getType,
-        js_getElements, getElements, js_getWillValidate, getWillValidate,
-        js_getValidity, getValidity, js_getValidationMessage,
-        getValidationMessage, HTMLFieldSetElement(..),
-        gTypeHTMLFieldSetElement)
+       (js_checkValidity, js_reportValidity, js_setCustomValidity, js_setDisabled, js_getDisabled, js_getForm, js_setName, js_getName, js_getType, js_getElements, js_getWillValidate, js_getValidity, js_getValidationMessage, checkValidity, checkValidity_, reportValidity, reportValidity_, setCustomValidity, setDisabled, getDisabled, getForm, getFormUnsafe, getFormUnchecked, setName, getName, getType, getElements, getWillValidate, getValidity, getValidationMessage, HTMLFieldSetElement(..), gTypeHTMLFieldSetElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLFieldSetElement -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLFieldSetElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLFieldSetElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/checkValidity MDN HTMLFieldSetElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLFieldSetElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLFieldSetElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/checkValidity MDN HTMLFieldSetElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLFieldSetElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.reportValidity Mozilla HTMLFieldSetElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLFieldSetElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLFieldSetElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/reportValidity MDN HTMLFieldSetElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.reportValidity Mozilla HTMLFieldSetElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLFieldSetElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/reportValidity MDN HTMLFieldSetElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLFieldSetElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
         js_setCustomValidity :: HTMLFieldSetElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/setCustomValidity MDN HTMLFieldSetElement.setCustomValidity documentation>
+setCustomValidity :: (MonadDOM m, ToJSString error) => HTMLFieldSetElement -> error -> m ()
+setCustomValidity self error = liftDOM (void ((js_setCustomValidity (self) (toJSString error))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.setCustomValidity Mozilla HTMLFieldSetElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) =>
-                    HTMLFieldSetElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
         js_setDisabled :: HTMLFieldSetElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/disabled MDN HTMLFieldSetElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLFieldSetElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLFieldSetElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
         js_getDisabled :: HTMLFieldSetElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/disabled MDN HTMLFieldSetElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLFieldSetElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLFieldSetElement -> IO HTMLFormElement
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLFieldSetElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/form MDN HTMLFieldSetElement.form documentation>
+getForm :: (MonadDOM m) => HTMLFieldSetElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.form Mozilla HTMLFieldSetElement.form documentation> 
-getForm :: (MonadIO m) => HTMLFieldSetElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLFieldSetElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/form MDN HTMLFieldSetElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLFieldSetElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.name Mozilla HTMLFieldSetElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLFieldSetElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLFieldSetElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/form MDN HTMLFieldSetElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLFieldSetElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.name Mozilla HTMLFieldSetElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLFieldSetElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLFieldSetElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLFieldSetElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/name MDN HTMLFieldSetElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLFieldSetElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.type Mozilla HTMLFieldSetElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLFieldSetElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"elements\"]; })" js_getElements
-        :: HTMLFieldSetElement -> IO HTMLFormControlsCollection
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLFieldSetElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/name MDN HTMLFieldSetElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLFieldSetElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.elements Mozilla HTMLFieldSetElement.elements documentation> 
-getElements ::
-            (MonadIO m) => HTMLFieldSetElement -> m HTMLFormControlsCollection
-getElements self = liftIO (js_getElements self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLFieldSetElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/type MDN HTMLFieldSetElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLFieldSetElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"elements\"]; })"
+        js_getElements :: HTMLFieldSetElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/elements MDN HTMLFieldSetElement.elements documentation>
+getElements :: (MonadDOM m) => HTMLFieldSetElement -> m HTMLCollection
+getElements self = liftDOM ((js_getElements (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
         js_getWillValidate :: HTMLFieldSetElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/willValidate MDN HTMLFieldSetElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.willValidate Mozilla HTMLFieldSetElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLFieldSetElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLFieldSetElement -> IO ValidityState
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: HTMLFieldSetElement -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/validity MDN HTMLFieldSetElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLFieldSetElement -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validity Mozilla HTMLFieldSetElement.validity documentation> 
-getValidity ::
-            (MonadIO m) => HTMLFieldSetElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
         js_getValidationMessage :: HTMLFieldSetElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validationMessage Mozilla HTMLFieldSetElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLFieldSetElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/validationMessage MDN HTMLFieldSetElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLFieldSetElement -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
@@ -1,76 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLFontElement
-       (js_setColor, setColor, js_getColor, getColor, js_setFace, setFace,
-        js_getFace, getFace, js_setSize, setSize, js_getSize, getSize,
-        HTMLFontElement(..), gTypeHTMLFontElement)
+       (js_setColor, js_getColor, js_setFace, js_getFace, js_setSize, js_getSize, setColor, getColor, setFace, getFace, setSize, getSize, HTMLFontElement(..), gTypeHTMLFontElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"color\"] = $2; })" js_setColor
-        :: HTMLFontElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
-setColor ::
-         (MonadIO m, ToJSString val) => HTMLFontElement -> val -> m ()
-setColor self val = liftIO (js_setColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"color\"]; })" js_getColor ::
-        HTMLFontElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"color\"] = $2; })"
+        js_setColor :: HTMLFontElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/color MDN HTMLFontElement.color documentation>
+setColor :: (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
+setColor self val = liftDOM (void ((js_setColor (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
-getColor ::
-         (MonadIO m, FromJSString result) => HTMLFontElement -> m result
-getColor self = liftIO (fromJSString <$> (js_getColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"face\"] = $2; })" js_setFace ::
-        HTMLFontElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"color\"]; })"
+        js_getColor :: HTMLFontElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/color MDN HTMLFontElement.color documentation>
+getColor :: (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getColor self = liftDOM ((fromJSString <$> (js_getColor (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
-setFace ::
-        (MonadIO m, ToJSString val) => HTMLFontElement -> val -> m ()
-setFace self val = liftIO (js_setFace self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"face\"]; })" js_getFace ::
-        HTMLFontElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"face\"] = $2; })"
+        js_setFace :: HTMLFontElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/face MDN HTMLFontElement.face documentation>
+setFace :: (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
+setFace self val = liftDOM (void ((js_setFace (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
-getFace ::
-        (MonadIO m, FromJSString result) => HTMLFontElement -> m result
-getFace self = liftIO (fromJSString <$> (js_getFace self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
-        HTMLFontElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"face\"]; })"
+        js_getFace :: HTMLFontElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/face MDN HTMLFontElement.face documentation>
+getFace :: (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getFace self = liftDOM ((fromJSString <$> (js_getFace (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
-setSize ::
-        (MonadIO m, ToJSString val) => HTMLFontElement -> val -> m ()
-setSize self val = liftIO (js_setSize self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        HTMLFontElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: HTMLFontElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/size MDN HTMLFontElement.size documentation>
+setSize :: (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
+setSize self val = liftDOM (void ((js_setSize (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
-getSize ::
-        (MonadIO m, FromJSString result) => HTMLFontElement -> m result
-getSize self = liftIO (fromJSString <$> (js_getSize self))
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: HTMLFontElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/size MDN HTMLFontElement.size documentation>
+getSize :: (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getSize self = liftDOM ((fromJSString <$> (js_getSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
@@ -1,94 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
-       (js_get, get, get_, getUnsafe, getUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        HTMLFormControlsCollection(..), gTypeHTMLFormControlsCollection)
+       (js_namedItem, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, HTMLFormControlsCollection(..), gTypeHTMLFormControlsCollection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
-        HTMLFormControlsCollection -> Word -> IO (Nullable HTMLElement)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-get ::
-    (MonadIO m) =>
-      HTMLFormControlsCollection -> Word -> m (Maybe HTMLElement)
-get self index = liftIO (nullableToMaybe <$> (js_get self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-get_ :: (MonadIO m) => HTMLFormControlsCollection -> Word -> m ()
-get_ self index = liftIO (void (js_get self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-getUnsafe ::
-          (MonadIO m, HasCallStack) =>
-            HTMLFormControlsCollection -> Word -> m HTMLElement
-getUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_get self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-getUnchecked ::
-             (MonadIO m) => HTMLFormControlsCollection -> Word -> m HTMLElement
-getUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_get self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        HTMLFormControlsCollection ->
-          JSString -> IO (Nullable RadioNodeListOrElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            HTMLFormControlsCollection ->
-              name -> m (Maybe RadioNodeListOrElement)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem :: HTMLFormControlsCollection -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection/namedItem MDN HTMLFormControlsCollection.namedItem documentation>
+namedItem :: (MonadDOM m, ToJSString name) => HTMLFormControlsCollection -> name -> m (Maybe RadioNodeListOrElement)
+namedItem self name = liftDOM (((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) =>
-             HTMLFormControlsCollection -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection/namedItem MDN HTMLFormControlsCollection.namedItem documentation>
+namedItem_ :: (MonadDOM m, ToJSString name) => HTMLFormControlsCollection -> name -> m ()
+namedItem_ self name = liftDOM (void ((js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection/namedItem MDN HTMLFormControlsCollection.namedItem documentation>
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
+namedItemUnsafe self name = liftDOM ((((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) =>
-                     HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection/namedItem MDN HTMLFormControlsCollection.namedItem documentation>
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
+namedItemUnchecked self name = liftDOM ((pFromJSVal <$> (js_namedItem (self) (toJSString name))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
@@ -1,306 +1,193 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLFormElement
-       (js_getAt, getAt, getAt_, getAtUnsafe, getAtUnchecked, js_get, get,
-        get_, getUnsafe, getUnchecked, js_submit, submit, js_reset, reset,
-        js_checkValidity, checkValidity, checkValidity_, js_reportValidity,
-        reportValidity, reportValidity_, js_requestAutocomplete,
-        requestAutocomplete, js_setAcceptCharset, setAcceptCharset,
-        js_getAcceptCharset, getAcceptCharset, js_setAction, setAction,
-        js_getAction, getAction, js_setAutocomplete, setAutocomplete,
-        js_getAutocomplete, getAutocomplete, js_setEnctype, setEnctype,
-        js_getEnctype, getEnctype, js_setEncoding, setEncoding,
-        js_getEncoding, getEncoding, js_setMethod, setMethod, js_getMethod,
-        getMethod, js_setName, setName, js_getName, getName,
-        js_setNoValidate, setNoValidate, js_getNoValidate, getNoValidate,
-        js_setTarget, setTarget, js_getTarget, getTarget, js_getElements,
-        getElements, js_getLength, getLength, HTMLFormElement(..),
-        gTypeHTMLFormElement)
+       (js_checkValidity, js_reportValidity, js_requestSubmit, js_reset, js_submit, js_setAcceptCharset, js_getAcceptCharset, js_setAction, js_getAction, js_setAutocomplete, js_getAutocomplete, js_setEnctype, js_getEnctype, js_setEncoding, js_getEncoding, js_setMethod, js_getMethod, js_setName, js_getName, js_setNoValidate, js_getNoValidate, js_setTarget, js_getTarget, js_setRel, js_getRel, js_getRelList, js_getElements, js_getLength, checkValidity, checkValidity_, reportValidity, reportValidity_, requestSubmit, reset, submit, setAcceptCharset, getAcceptCharset, setAction, getAction, setAutocomplete, getAutocomplete, setEnctype, getEnctype, setEncoding, getEncoding, setMethod, getMethod, setName, getName, setNoValidate, getNoValidate, setTarget, getTarget, setRel, getRel, getRelList, getElements, getLength, HTMLFormElement(..), gTypeHTMLFormElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_getAt ::
-        HTMLFormElement -> Word -> IO (Nullable Element)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAt ::
-      (MonadIO m) => HTMLFormElement -> Word -> m (Maybe Element)
-getAt self index
-  = liftIO (nullableToMaybe <$> (js_getAt self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAt_ :: (MonadIO m) => HTMLFormElement -> Word -> m ()
-getAt_ self index = liftIO (void (js_getAt self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAtUnsafe ::
-            (MonadIO m, HasCallStack) => HTMLFormElement -> Word -> m Element
-getAtUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_getAt self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAtUnchecked ::
-               (MonadIO m) => HTMLFormElement -> Word -> m Element
-getAtUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_getAt self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
-        HTMLFormElement -> JSString -> IO (Nullable RadioNodeListOrElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-get ::
-    (MonadIO m, ToJSString name) =>
-      HTMLFormElement -> name -> m (Maybe RadioNodeListOrElement)
-get self name
-  = liftIO (nullableToMaybe <$> (js_get self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-get_ ::
-     (MonadIO m, ToJSString name) => HTMLFormElement -> name -> m ()
-get_ self name = liftIO (void (js_get self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getUnsafe ::
-          (MonadIO m, ToJSString name, HasCallStack) =>
-            HTMLFormElement -> name -> m RadioNodeListOrElement
-getUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_get self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getUnchecked ::
-             (MonadIO m, ToJSString name) =>
-               HTMLFormElement -> name -> m RadioNodeListOrElement
-getUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_get self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"submit\"](); })" js_submit ::
-        HTMLFormElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLFormElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/checkValidity MDN HTMLFormElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLFormElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.submit Mozilla HTMLFormElement.submit documentation> 
-submit :: (MonadIO m) => HTMLFormElement -> m ()
-submit self = liftIO (js_submit self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"reset\"](); })" js_reset ::
-        HTMLFormElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/checkValidity MDN HTMLFormElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLFormElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset Mozilla HTMLFormElement.reset documentation> 
-reset :: (MonadIO m) => HTMLFormElement -> m ()
-reset self = liftIO (js_reset self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLFormElement -> IO Bool
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLFormElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/reportValidity MDN HTMLFormElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLFormElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.checkValidity Mozilla HTMLFormElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLFormElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/reportValidity MDN HTMLFormElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLFormElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.checkValidity Mozilla HTMLFormElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLFormElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLFormElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { return $1[\"requestSubmit\"]($2); })"
+        js_requestSubmit :: HTMLFormElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/requestSubmit MDN HTMLFormElement.requestSubmit documentation>
+requestSubmit :: (MonadDOM m, IsHTMLElement submitter) => HTMLFormElement -> Maybe submitter -> m ()
+requestSubmit self submitter = liftDOM (void (((toJSVal submitter) >>= \a2' -> js_requestSubmit (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reportValidity Mozilla HTMLFormElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLFormElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: HTMLFormElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/reset MDN HTMLFormElement.reset documentation>
+reset :: (MonadDOM m) => HTMLFormElement -> m ()
+reset self = liftDOM (void ((js_reset (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reportValidity Mozilla HTMLFormElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLFormElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"requestAutocomplete\"](); })"
-        js_requestAutocomplete :: HTMLFormElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"submit\"](); })"
+        js_submit :: HTMLFormElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/submit MDN HTMLFormElement.submit documentation>
+submit :: (MonadDOM m) => HTMLFormElement -> m ()
+submit self = liftDOM (void ((js_submit (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.requestAutocomplete Mozilla HTMLFormElement.requestAutocomplete documentation> 
-requestAutocomplete :: (MonadIO m) => HTMLFormElement -> m ()
-requestAutocomplete self = liftIO (js_requestAutocomplete self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"acceptCharset\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"acceptCharset\"] = $2; })"
         js_setAcceptCharset :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/acceptCharset MDN HTMLFormElement.acceptCharset documentation>
+setAcceptCharset :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAcceptCharset self val = liftDOM (void ((js_setAcceptCharset (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
-setAcceptCharset ::
-                 (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setAcceptCharset self val
-  = liftIO (js_setAcceptCharset self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"acceptCharset\"]; })"
         js_getAcceptCharset :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/acceptCharset MDN HTMLFormElement.acceptCharset documentation>
+getAcceptCharset :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAcceptCharset self = liftDOM ((fromJSString <$> (js_getAcceptCharset (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
-getAcceptCharset ::
-                 (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getAcceptCharset self
-  = liftIO (fromJSString <$> (js_getAcceptCharset self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"action\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"action\"] = $2; })"
         js_setAction :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/action MDN HTMLFormElement.action documentation>
+setAction :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAction self val = liftDOM (void ((js_setAction (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
-setAction ::
-          (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setAction self val = liftIO (js_setAction self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"action\"]; })" js_getAction ::
-        HTMLFormElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"action\"]; })"
+        js_getAction :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/action MDN HTMLFormElement.action documentation>
+getAction :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAction self = liftDOM ((fromJSString <$> (js_getAction (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
-getAction ::
-          (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getAction self = liftIO (fromJSString <$> (js_getAction self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
         js_setAutocomplete :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/autocomplete MDN HTMLFormElement.autocomplete documentation>
+setAutocomplete :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAutocomplete self val = liftDOM (void ((js_setAutocomplete (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setAutocomplete self val
-  = liftIO (js_setAutocomplete self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
         js_getAutocomplete :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/autocomplete MDN HTMLFormElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAutocomplete self = liftDOM ((fromJSString <$> (js_getAutocomplete (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getAutocomplete self
-  = liftIO (fromJSString <$> (js_getAutocomplete self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"enctype\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"enctype\"] = $2; })"
         js_setEnctype :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/enctype MDN HTMLFormElement.enctype documentation>
+setEnctype :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setEnctype self val = liftDOM (void ((js_setEnctype (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
-setEnctype ::
-           (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setEnctype self val = liftIO (js_setEnctype self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"enctype\"]; })" js_getEnctype ::
-        HTMLFormElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"enctype\"]; })"
+        js_getEnctype :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/enctype MDN HTMLFormElement.enctype documentation>
+getEnctype :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getEnctype self = liftDOM ((fromJSString <$> (js_getEnctype (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
-getEnctype ::
-           (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getEnctype self = liftIO (fromJSString <$> (js_getEnctype self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"encoding\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"encoding\"] = $2; })"
         js_setEncoding :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/encoding MDN HTMLFormElement.encoding documentation>
+setEncoding :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setEncoding self val = liftDOM (void ((js_setEncoding (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
-setEncoding ::
-            (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setEncoding self val
-  = liftIO (js_setEncoding self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })" js_getEncoding
-        :: HTMLFormElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })"
+        js_getEncoding :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/encoding MDN HTMLFormElement.encoding documentation>
+getEncoding :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getEncoding self = liftDOM ((fromJSString <$> (js_getEncoding (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
-getEncoding ::
-            (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getEncoding self = liftIO (fromJSString <$> (js_getEncoding self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"method\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"method\"] = $2; })"
         js_setMethod :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/method MDN HTMLFormElement.method documentation>
+setMethod :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setMethod self val = liftDOM (void ((js_setMethod (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
-setMethod ::
-          (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setMethod self val = liftIO (js_setMethod self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })" js_getMethod ::
-        HTMLFormElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })"
+        js_getMethod :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/method MDN HTMLFormElement.method documentation>
+getMethod :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getMethod self = liftDOM ((fromJSString <$> (js_getMethod (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
-getMethod ::
-          (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getMethod self = liftIO (fromJSString <$> (js_getMethod self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLFormElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/name MDN HTMLFormElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLFormElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/name MDN HTMLFormElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"noValidate\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"noValidate\"] = $2; })"
         js_setNoValidate :: HTMLFormElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/noValidate MDN HTMLFormElement.noValidate documentation>
+setNoValidate :: (MonadDOM m) => HTMLFormElement -> Bool -> m ()
+setNoValidate self val = liftDOM (void ((js_setNoValidate (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
-setNoValidate :: (MonadIO m) => HTMLFormElement -> Bool -> m ()
-setNoValidate self val = liftIO (js_setNoValidate self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"noValidate\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"noValidate\"]; })"
         js_getNoValidate :: HTMLFormElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/noValidate MDN HTMLFormElement.noValidate documentation>
+getNoValidate :: (MonadDOM m) => HTMLFormElement -> m Bool
+getNoValidate self = liftDOM ((js_getNoValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
-getNoValidate :: (MonadIO m) => HTMLFormElement -> m Bool
-getNoValidate self = liftIO (js_getNoValidate self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
         js_setTarget :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/target MDN HTMLFormElement.target documentation>
+setTarget :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setTarget self val = liftDOM (void ((js_setTarget (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
-setTarget ::
-          (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
-setTarget self val = liftIO (js_setTarget self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        HTMLFormElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/target MDN HTMLFormElement.target documentation>
+getTarget :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getTarget self = liftDOM ((fromJSString <$> (js_getTarget (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
-getTarget ::
-          (MonadIO m, FromJSString result) => HTMLFormElement -> m result
-getTarget self = liftIO (fromJSString <$> (js_getTarget self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"elements\"]; })" js_getElements
-        :: HTMLFormElement -> IO HTMLFormControlsCollection
+foreign import javascript safe "(($1, $2) => { $1[\"rel\"] = $2; })"
+        js_setRel :: HTMLFormElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/rel MDN HTMLFormElement.rel documentation>
+setRel :: (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
+setRel self val = liftDOM (void ((js_setRel (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements Mozilla HTMLFormElement.elements documentation> 
-getElements ::
-            (MonadIO m) => HTMLFormElement -> m HTMLFormControlsCollection
-getElements self = liftIO (js_getElements self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        HTMLFormElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })"
+        js_getRel :: HTMLFormElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/rel MDN HTMLFormElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getRel self = liftDOM ((fromJSString <$> (js_getRel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.length Mozilla HTMLFormElement.length documentation> 
-getLength :: (MonadIO m) => HTMLFormElement -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })"
+        js_getRelList :: HTMLFormElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/relList MDN HTMLFormElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLFormElement -> m DOMTokenList
+getRelList self = liftDOM ((js_getRelList (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"elements\"]; })"
+        js_getElements :: HTMLFormElement -> IO HTMLFormControlsCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/elements MDN HTMLFormElement.elements documentation>
+getElements :: (MonadDOM m) => HTMLFormElement -> m HTMLFormControlsCollection
+getElements self = liftDOM ((js_getElements (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: HTMLFormElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/length MDN HTMLFormElement.length documentation>
+getLength :: (MonadDOM m) => HTMLFormElement -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
@@ -1,248 +1,141 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
-       (js_getSVGDocument, getSVGDocument, getSVGDocument_, js_setName,
-        setName, js_getName, getName, js_setScrolling, setScrolling,
-        js_getScrolling, getScrolling, js_setSrc, setSrc, js_getSrc,
-        getSrc, js_setFrameBorder, setFrameBorder, js_getFrameBorder,
-        getFrameBorder, js_setLongDesc, setLongDesc, js_getLongDesc,
-        getLongDesc, js_setNoResize, setNoResize, js_getNoResize,
-        getNoResize, js_getContentDocument, getContentDocument,
-        js_getContentWindow, getContentWindow, js_setMarginHeight,
-        setMarginHeight, js_getMarginHeight, getMarginHeight,
-        js_setMarginWidth, setMarginWidth, js_getMarginWidth,
-        getMarginWidth, js_getWidth, getWidth, js_getHeight, getHeight,
-        js_setLocation, setLocation, js_getLocation, getLocation,
-        getLocationUnsafe, getLocationUnchecked, HTMLFrameElement(..),
-        gTypeHTMLFrameElement)
+       (js_setName, js_getName, js_setScrolling, js_getScrolling, js_setSrc, js_getSrc, js_setFrameBorder, js_getFrameBorder, js_setLongDesc, js_getLongDesc, js_setNoResize, js_getNoResize, js_getContentDocument, js_getContentWindow, js_setMarginHeight, js_getMarginHeight, js_setMarginWidth, js_getMarginWidth, setName, getName, setScrolling, getScrolling, setSrc, getSrc, setFrameBorder, getFrameBorder, setLongDesc, getLongDesc, setNoResize, getNoResize, getContentDocument, getContentDocumentUnsafe, getContentDocumentUnchecked, getContentWindow, getContentWindowUnsafe, getContentWindowUnchecked, setMarginHeight, getMarginHeight, setMarginWidth, getMarginWidth, HTMLFrameElement(..), gTypeHTMLFrameElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
-        js_getSVGDocument :: HTMLFrameElement -> IO Document
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadIO m) => HTMLFrameElement -> m Document
-getSVGDocument self = liftIO (js_getSVGDocument self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
-getSVGDocument_ :: (MonadIO m) => HTMLFrameElement -> m ()
-getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLFrameElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-name HTMLFrameElement.name specification>
+setName :: (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-name HTMLFrameElement.name specification>
+getName :: (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scrolling\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"scrolling\"] = $2; })"
         js_setScrolling :: HTMLFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-scrolling HTMLFrameElement.scrolling specification>
+setScrolling :: (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setScrolling self val = liftDOM (void ((js_setScrolling (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
-setScrolling ::
-             (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setScrolling self val
-  = liftIO (js_setScrolling self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"scrolling\"]; })"
         js_getScrolling :: HTMLFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-scrolling HTMLFrameElement.scrolling specification>
+getScrolling :: (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getScrolling self = liftDOM ((fromJSString <$> (js_getScrolling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
-getScrolling ::
-             (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getScrolling self
-  = liftIO (fromJSString <$> (js_getScrolling self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLFrameElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-src HTMLFrameElement.src specification>
+setSrc :: (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-src HTMLFrameElement.src specification>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"frameBorder\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"frameBorder\"] = $2; })"
         js_setFrameBorder :: HTMLFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-frameborder HTMLFrameElement.frameBorder specification>
+setFrameBorder :: (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setFrameBorder self val = liftDOM (void ((js_setFrameBorder (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
-setFrameBorder ::
-               (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setFrameBorder self val
-  = liftIO (js_setFrameBorder self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"frameBorder\"]; })"
         js_getFrameBorder :: HTMLFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-frameborder HTMLFrameElement.frameBorder specification>
+getFrameBorder :: (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getFrameBorder self = liftDOM ((fromJSString <$> (js_getFrameBorder (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
-getFrameBorder ::
-               (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getFrameBorder self
-  = liftIO (fromJSString <$> (js_getFrameBorder self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
         js_setLongDesc :: HTMLFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-longdesc HTMLFrameElement.longDesc specification>
+setLongDesc :: (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setLongDesc self val = liftDOM (void ((js_setLongDesc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
-setLongDesc ::
-            (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setLongDesc self val
-  = liftIO (js_setLongDesc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })" js_getLongDesc
-        :: HTMLFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })"
+        js_getLongDesc :: HTMLFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-longdesc HTMLFrameElement.longDesc specification>
+getLongDesc :: (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getLongDesc self = liftDOM ((fromJSString <$> (js_getLongDesc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
-getLongDesc ::
-            (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getLongDesc self = liftIO (fromJSString <$> (js_getLongDesc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"noResize\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"noResize\"] = $2; })"
         js_setNoResize :: HTMLFrameElement -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-noresize HTMLFrameElement.noResize specification>
+setNoResize :: (MonadDOM m) => HTMLFrameElement -> Bool -> m ()
+setNoResize self val = liftDOM (void ((js_setNoResize (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
-setNoResize :: (MonadIO m) => HTMLFrameElement -> Bool -> m ()
-setNoResize self val = liftIO (js_setNoResize self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"noResize\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"noResize\"]; })"
         js_getNoResize :: HTMLFrameElement -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-noresize HTMLFrameElement.noResize specification>
+getNoResize :: (MonadDOM m) => HTMLFrameElement -> m Bool
+getNoResize self = liftDOM ((js_getNoResize (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
-getNoResize :: (MonadIO m) => HTMLFrameElement -> m Bool
-getNoResize self = liftIO (js_getNoResize self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
-        js_getContentDocument :: HTMLFrameElement -> IO Document
+        js_getContentDocument :: HTMLFrameElement -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentdocument HTMLFrameElement.contentDocument specification>
+getContentDocument :: (MonadDOM m) => HTMLFrameElement -> m (Maybe Document)
+getContentDocument self = liftDOM (((js_getContentDocument (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentDocument Mozilla HTMLFrameElement.contentDocument documentation> 
-getContentDocument :: (MonadIO m) => HTMLFrameElement -> m Document
-getContentDocument self = liftIO (js_getContentDocument self)
- 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentdocument HTMLFrameElement.contentDocument specification>
+getContentDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLFrameElement -> m Document
+getContentDocumentUnsafe self = liftDOM ((((js_getContentDocument (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentdocument HTMLFrameElement.contentDocument specification>
+getContentDocumentUnchecked :: (MonadDOM m) => HTMLFrameElement -> m Document
+getContentDocumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentDocument (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"contentWindow\"]; })"
-        js_getContentWindow :: HTMLFrameElement -> IO Window
+        js_getContentWindow :: HTMLFrameElement -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentwindow HTMLFrameElement.contentWindow specification>
+getContentWindow :: (MonadDOM m) => HTMLFrameElement -> m (Maybe Window)
+getContentWindow self = liftDOM (((js_getContentWindow (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentWindow Mozilla HTMLFrameElement.contentWindow documentation> 
-getContentWindow :: (MonadIO m) => HTMLFrameElement -> m Window
-getContentWindow self = liftIO (js_getContentWindow self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"marginHeight\"] = $2; })"
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentwindow HTMLFrameElement.contentWindow specification>
+getContentWindowUnsafe :: (MonadDOM m, HasCallStack) => HTMLFrameElement -> m Window
+getContentWindowUnsafe self = liftDOM ((((js_getContentWindow (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentwindow HTMLFrameElement.contentWindow specification>
+getContentWindowUnchecked :: (MonadDOM m) => HTMLFrameElement -> m Window
+getContentWindowUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentWindow (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"marginHeight\"] = $2; })"
         js_setMarginHeight :: HTMLFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-marginheight HTMLFrameElement.marginHeight specification>
+setMarginHeight :: (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setMarginHeight self val = liftDOM (void ((js_setMarginHeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
-setMarginHeight ::
-                (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setMarginHeight self val
-  = liftIO (js_setMarginHeight self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"marginHeight\"]; })"
         js_getMarginHeight :: HTMLFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-marginheight HTMLFrameElement.marginHeight specification>
+getMarginHeight :: (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getMarginHeight self = liftDOM ((fromJSString <$> (js_getMarginHeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
-getMarginHeight ::
-                (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getMarginHeight self
-  = liftIO (fromJSString <$> (js_getMarginHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"marginWidth\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"marginWidth\"] = $2; })"
         js_setMarginWidth :: HTMLFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-marginwidth HTMLFrameElement.marginWidth specification>
+setMarginWidth :: (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setMarginWidth self val = liftDOM (void ((js_setMarginWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
-setMarginWidth ::
-               (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setMarginWidth self val
-  = liftIO (js_setMarginWidth self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"marginWidth\"]; })"
         js_getMarginWidth :: HTMLFrameElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
-getMarginWidth ::
-               (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getMarginWidth self
-  = liftIO (fromJSString <$> (js_getMarginWidth self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLFrameElement -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.width Mozilla HTMLFrameElement.width documentation> 
-getWidth :: (MonadIO m) => HTMLFrameElement -> m Int
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLFrameElement -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.height Mozilla HTMLFrameElement.height documentation> 
-getHeight :: (MonadIO m) => HTMLFrameElement -> m Int
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"location\"] = $2; })"
-        js_setLocation :: HTMLFrameElement -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-setLocation ::
-            (MonadIO m, ToJSString val) =>
-              HTMLFrameElement -> Maybe val -> m ()
-setLocation self val
-  = liftIO (js_setLocation self (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
-        :: HTMLFrameElement -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-getLocation ::
-            (MonadIO m, FromJSString result) =>
-              HTMLFrameElement -> m (Maybe result)
-getLocation self
-  = liftIO (fromMaybeJSString <$> (js_getLocation self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-getLocationUnsafe ::
-                  (MonadIO m, HasCallStack, FromJSString result) =>
-                    HTMLFrameElement -> m result
-getLocationUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getLocation self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-getLocationUnchecked ::
-                     (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
-getLocationUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getLocation self))
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-marginwidth HTMLFrameElement.marginWidth specification>
+getMarginWidth :: (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
+getMarginWidth self = liftDOM ((fromJSString <$> (js_getMarginWidth (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
@@ -1,114 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
-       (js_setCols, setCols, js_getCols, getCols, js_setRows, setRows,
-        js_getRows, getRows, blur, error, focus, focusin, focusout, load,
-        resize, scroll, webKitWillRevealBottom, webKitWillRevealLeft,
-        webKitWillRevealRight, webKitWillRevealTop,
-        HTMLFrameSetElement(..), gTypeHTMLFrameSetElement)
+       (js_setCols, js_getCols, js_setRows, js_getRows, setCols, getCols, setRows, getRows, HTMLFrameSetElement(..), gTypeHTMLFrameSetElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"cols\"] = $2; })" js_setCols ::
-        HTMLFrameSetElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
-setCols ::
-        (MonadIO m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
-setCols self val = liftIO (js_setCols self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cols\"]; })" js_getCols ::
-        HTMLFrameSetElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
-getCols ::
-        (MonadIO m, FromJSString result) => HTMLFrameSetElement -> m result
-getCols self = liftIO (fromJSString <$> (js_getCols self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rows\"] = $2; })" js_setRows ::
-        HTMLFrameSetElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
-setRows ::
-        (MonadIO m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
-setRows self val = liftIO (js_setRows self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
-        HTMLFrameSetElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
-getRows ::
-        (MonadIO m, FromJSString result) => HTMLFrameSetElement -> m result
-getRows self = liftIO (fromJSString <$> (js_getRows self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onblur Mozilla HTMLFrameSetElement.onblur documentation> 
-blur :: EventName HTMLFrameSetElement FocusEvent
-blur = unsafeEventNameAsync (toJSString "blur")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onerror Mozilla HTMLFrameSetElement.onerror documentation> 
-error :: EventName HTMLFrameSetElement UIEvent
-error = unsafeEventNameAsync (toJSString "error")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocus Mozilla HTMLFrameSetElement.onfocus documentation> 
-focus :: EventName HTMLFrameSetElement FocusEvent
-focus = unsafeEventNameAsync (toJSString "focus")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocusin Mozilla HTMLFrameSetElement.onfocusin documentation> 
-focusin :: EventName HTMLFrameSetElement onfocusin
-focusin = unsafeEventName (toJSString "focusin")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocusout Mozilla HTMLFrameSetElement.onfocusout documentation> 
-focusout :: EventName HTMLFrameSetElement onfocusout
-focusout = unsafeEventName (toJSString "focusout")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onload Mozilla HTMLFrameSetElement.onload documentation> 
-load :: EventName HTMLFrameSetElement UIEvent
-load = unsafeEventNameAsync (toJSString "load")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onresize Mozilla HTMLFrameSetElement.onresize documentation> 
-resize :: EventName HTMLFrameSetElement UIEvent
-resize = unsafeEventName (toJSString "resize")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onscroll Mozilla HTMLFrameSetElement.onscroll documentation> 
-scroll :: EventName HTMLFrameSetElement UIEvent
-scroll = unsafeEventName (toJSString "scroll")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealbottom Mozilla HTMLFrameSetElement.onwebkitwillrevealbottom documentation> 
-webKitWillRevealBottom :: EventName HTMLFrameSetElement Event
-webKitWillRevealBottom
-  = unsafeEventName (toJSString "webkitwillrevealbottom")
+foreign import javascript safe "(($1, $2) => { $1[\"cols\"] = $2; })"
+        js_setCols :: HTMLFrameSetElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frameset-cols HTMLFrameSetElement.cols specification>
+setCols :: (MonadDOM m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
+setCols self val = liftDOM (void ((js_setCols (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealleft Mozilla HTMLFrameSetElement.onwebkitwillrevealleft documentation> 
-webKitWillRevealLeft :: EventName HTMLFrameSetElement Event
-webKitWillRevealLeft
-  = unsafeEventName (toJSString "webkitwillrevealleft")
+foreign import javascript unsafe "(($1) => { return $1[\"cols\"]; })"
+        js_getCols :: HTMLFrameSetElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frameset-cols HTMLFrameSetElement.cols specification>
+getCols :: (MonadDOM m, FromJSString result) => HTMLFrameSetElement -> m result
+getCols self = liftDOM ((fromJSString <$> (js_getCols (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealright Mozilla HTMLFrameSetElement.onwebkitwillrevealright documentation> 
-webKitWillRevealRight :: EventName HTMLFrameSetElement Event
-webKitWillRevealRight
-  = unsafeEventName (toJSString "webkitwillrevealright")
+foreign import javascript safe "(($1, $2) => { $1[\"rows\"] = $2; })"
+        js_setRows :: HTMLFrameSetElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frameset-rows HTMLFrameSetElement.rows specification>
+setRows :: (MonadDOM m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
+setRows self val = liftDOM (void ((js_setRows (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealtop Mozilla HTMLFrameSetElement.onwebkitwillrevealtop documentation> 
-webKitWillRevealTop :: EventName HTMLFrameSetElement Event
-webKitWillRevealTop
-  = unsafeEventName (toJSString "webkitwillrevealtop")
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })"
+        js_getRows :: HTMLFrameSetElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frameset-rows HTMLFrameSetElement.rows specification>
+getRows :: (MonadDOM m, FromJSString result) => HTMLFrameSetElement -> m result
+getRows self = liftDOM ((fromJSString <$> (js_getRows (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
@@ -1,108 +1,77 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLHRElement
-       (js_setAlign, setAlign, js_getAlign, getAlign, js_setColor,
-        setColor, js_getColor, getColor, js_setNoShade, setNoShade,
-        js_getNoShade, getNoShade, js_setSize, setSize, js_getSize,
-        getSize, js_setWidth, setWidth, js_getWidth, getWidth,
-        HTMLHRElement(..), gTypeHTMLHRElement)
+       (js_setAlign, js_getAlign, js_setColor, js_getColor, js_setNoShade, js_getNoShade, js_setSize, js_getSize, js_setWidth, js_getWidth, setAlign, getAlign, setColor, getColor, setNoShade, getNoShade, setSize, getSize, setWidth, getWidth, HTMLHRElement(..), gTypeHTMLHRElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLHRElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLHRElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLHRElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-align HTMLHRElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLHRElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"color\"] = $2; })" js_setColor
-        :: HTMLHRElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLHRElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-align HTMLHRElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.color Mozilla HTMLHRElement.color documentation> 
-setColor ::
-         (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
-setColor self val = liftIO (js_setColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"color\"]; })" js_getColor ::
-        HTMLHRElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"color\"] = $2; })"
+        js_setColor :: HTMLHRElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-color HTMLHRElement.color specification>
+setColor :: (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
+setColor self val = liftDOM (void ((js_setColor (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.color Mozilla HTMLHRElement.color documentation> 
-getColor ::
-         (MonadIO m, FromJSString result) => HTMLHRElement -> m result
-getColor self = liftIO (fromJSString <$> (js_getColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"noShade\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"color\"]; })"
+        js_getColor :: HTMLHRElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-color HTMLHRElement.color specification>
+getColor :: (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
+getColor self = liftDOM ((fromJSString <$> (js_getColor (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"noShade\"] = $2; })"
         js_setNoShade :: HTMLHRElement -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-noshade HTMLHRElement.noShade specification>
+setNoShade :: (MonadDOM m) => HTMLHRElement -> Bool -> m ()
+setNoShade self val = liftDOM (void ((js_setNoShade (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
-setNoShade :: (MonadIO m) => HTMLHRElement -> Bool -> m ()
-setNoShade self val = liftIO (js_setNoShade self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"noShade\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"noShade\"]; })"
         js_getNoShade :: HTMLHRElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
-getNoShade :: (MonadIO m) => HTMLHRElement -> m Bool
-getNoShade self = liftIO (js_getNoShade self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
-        HTMLHRElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-noshade HTMLHRElement.noShade specification>
+getNoShade :: (MonadDOM m) => HTMLHRElement -> m Bool
+getNoShade self = liftDOM ((js_getNoShade (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
-setSize ::
-        (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
-setSize self val = liftIO (js_setSize self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        HTMLHRElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: HTMLHRElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-size HTMLHRElement.size specification>
+setSize :: (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
+setSize self val = liftDOM (void ((js_setSize (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
-getSize ::
-        (MonadIO m, FromJSString result) => HTMLHRElement -> m result
-getSize self = liftIO (fromJSString <$> (js_getSize self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLHRElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: HTMLHRElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-size HTMLHRElement.size specification>
+getSize :: (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
+getSize self = liftDOM ((fromJSString <$> (js_getSize (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLHRElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLHRElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-width HTMLHRElement.width specification>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLHRElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLHRElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-width HTMLHRElement.width specification>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
@@ -1,43 +1,18 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
-       (js_setProfile, setProfile, js_getProfile, getProfile,
-        HTMLHeadElement(..), gTypeHTMLHeadElement)
+       (HTMLHeadElement(..), gTypeHTMLHeadElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"profile\"] = $2; })"
-        js_setProfile :: HTMLHeadElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
-setProfile ::
-           (MonadIO m, ToJSString val) => HTMLHeadElement -> val -> m ()
-setProfile self val = liftIO (js_setProfile self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"profile\"]; })" js_getProfile ::
-        HTMLHeadElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
-getProfile ::
-           (MonadIO m, FromJSString result) => HTMLHeadElement -> m result
-getProfile self = liftIO (fromJSString <$> (js_getProfile self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
-       (js_setAlign, setAlign, js_getAlign, getAlign,
-        HTMLHeadingElement(..), gTypeHTMLHeadingElement)
+       (js_setAlign, js_getAlign, setAlign, getAlign, HTMLHeadingElement(..), gTypeHTMLHeadingElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLHeadingElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLHeadingElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLHeadingElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLHeadingElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hx-align HTMLHeadingElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLHeadingElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLHeadingElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLHeadingElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hx-align HTMLHeadingElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLHeadingElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
@@ -1,61 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
-       (js_setVersion, setVersion, js_getVersion, getVersion,
-        js_setManifest, setManifest, js_getManifest, getManifest,
-        HTMLHtmlElement(..), gTypeHTMLHtmlElement)
+       (js_setVersion, js_getVersion, setVersion, getVersion, HTMLHtmlElement(..), gTypeHTMLHtmlElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"version\"] = $2; })"
-        js_setVersion :: HTMLHtmlElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
-setVersion ::
-           (MonadIO m, ToJSString val) => HTMLHtmlElement -> val -> m ()
-setVersion self val = liftIO (js_setVersion self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })" js_getVersion ::
-        HTMLHtmlElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
-getVersion ::
-           (MonadIO m, FromJSString result) => HTMLHtmlElement -> m result
-getVersion self = liftIO (fromJSString <$> (js_getVersion self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"manifest\"] = $2; })"
-        js_setManifest :: HTMLHtmlElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
-setManifest ::
-            (MonadIO m, ToJSString val) => HTMLHtmlElement -> val -> m ()
-setManifest self val
-  = liftIO (js_setManifest self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"manifest\"]; })" js_getManifest
-        :: HTMLHtmlElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"version\"] = $2; })"
+        js_setVersion :: HTMLHtmlElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLHtmlElement/version MDN HTMLHtmlElement.version documentation>
+setVersion :: (MonadDOM m, ToJSString val) => HTMLHtmlElement -> val -> m ()
+setVersion self val = liftDOM (void ((js_setVersion (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
-getManifest ::
-            (MonadIO m, FromJSString result) => HTMLHtmlElement -> m result
-getManifest self = liftIO (fromJSString <$> (js_getManifest self))
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })"
+        js_getVersion :: HTMLHtmlElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLHtmlElement/version MDN HTMLHtmlElement.version documentation>
+getVersion :: (MonadDOM m, FromJSString result) => HTMLHtmlElement -> m result
+getVersion self = liftDOM ((fromJSString <$> (js_getVersion (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
@@ -1,290 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils
-       (js_setHref, setHref, js_getHref, getHref, js_getOrigin, getOrigin,
-        js_setProtocol, setProtocol, js_getProtocol, getProtocol,
-        js_setUsername, setUsername, js_getUsername, getUsername,
-        js_setPassword, setPassword, js_getPassword, getPassword,
-        js_setHost, setHost, js_getHost, getHost, js_setHostname,
-        setHostname, js_getHostname, getHostname, js_setPort, setPort,
-        js_getPort, getPort, js_setPathname, setPathname, js_getPathname,
-        getPathname, js_setSearch, setSearch, js_getSearch, getSearch,
-        js_setHash, setHash, js_getHash, getHash,
-        HTMLHyperlinkElementUtils(..), gTypeHTMLHyperlinkElementUtils,
-        IsHTMLHyperlinkElementUtils, toHTMLHyperlinkElementUtils)
+       (js_setHref, js_getHref, js_setTarget, js_getTarget, setHref, getHref, setTarget, getTarget, HTMLHyperlinkElementUtils(..), gTypeHTMLHyperlinkElementUtils, IsHTMLHyperlinkElementUtils, toHTMLHyperlinkElementUtils)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
-        HTMLHyperlinkElementUtils -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.href Mozilla HTMLHyperlinkElementUtils.href documentation> 
-setHref ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setHref self val
-  = liftIO
-      (js_setHref (toHTMLHyperlinkElementUtils self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.href Mozilla HTMLHyperlinkElementUtils.href documentation> 
-getHref ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getHref self
-  = liftIO
-      (fromJSString <$> (js_getHref (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
-        HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.origin Mozilla HTMLHyperlinkElementUtils.origin documentation> 
-getOrigin ::
-          (MonadIO m, IsHTMLHyperlinkElementUtils self,
-           FromJSString result) =>
-            self -> m result
-getOrigin self
-  = liftIO
-      (fromJSString <$>
-         (js_getOrigin (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"protocol\"] = $2; })"
-        js_setProtocol :: HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.protocol Mozilla HTMLHyperlinkElementUtils.protocol documentation> 
-setProtocol ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setProtocol self val
-  = liftIO
-      (js_setProtocol (toHTMLHyperlinkElementUtils self)
-         (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
-        :: HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.protocol Mozilla HTMLHyperlinkElementUtils.protocol documentation> 
-getProtocol ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getProtocol self
-  = liftIO
-      (fromJSString <$>
-         (js_getProtocol (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"username\"] = $2; })"
-        js_setUsername :: HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.username Mozilla HTMLHyperlinkElementUtils.username documentation> 
-setUsername ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setUsername self val
-  = liftIO
-      (js_setUsername (toHTMLHyperlinkElementUtils self)
-         (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })" js_getUsername
-        :: HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.username Mozilla HTMLHyperlinkElementUtils.username documentation> 
-getUsername ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getUsername self
-  = liftIO
-      (fromJSString <$>
-         (js_getUsername (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"password\"] = $2; })"
-        js_setPassword :: HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.password Mozilla HTMLHyperlinkElementUtils.password documentation> 
-setPassword ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setPassword self val
-  = liftIO
-      (js_setPassword (toHTMLHyperlinkElementUtils self)
-         (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })" js_getPassword
-        :: HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.password Mozilla HTMLHyperlinkElementUtils.password documentation> 
-getPassword ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getPassword self
-  = liftIO
-      (fromJSString <$>
-         (js_getPassword (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"host\"] = $2; })" js_setHost ::
-        HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.host Mozilla HTMLHyperlinkElementUtils.host documentation> 
-setHost ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setHost self val
-  = liftIO
-      (js_setHost (toHTMLHyperlinkElementUtils self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
-        HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.host Mozilla HTMLHyperlinkElementUtils.host documentation> 
-getHost ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getHost self
-  = liftIO
-      (fromJSString <$> (js_getHost (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hostname\"] = $2; })"
-        js_setHostname :: HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hostname Mozilla HTMLHyperlinkElementUtils.hostname documentation> 
-setHostname ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setHostname self val
-  = liftIO
-      (js_setHostname (toHTMLHyperlinkElementUtils self)
-         (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
-        :: HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hostname Mozilla HTMLHyperlinkElementUtils.hostname documentation> 
-getHostname ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getHostname self
-  = liftIO
-      (fromJSString <$>
-         (js_getHostname (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"port\"] = $2; })" js_setPort ::
-        HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.port Mozilla HTMLHyperlinkElementUtils.port documentation> 
-setPort ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setPort self val
-  = liftIO
-      (js_setPort (toHTMLHyperlinkElementUtils self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
-        HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.port Mozilla HTMLHyperlinkElementUtils.port documentation> 
-getPort ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getPort self
-  = liftIO
-      (fromJSString <$> (js_getPort (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"pathname\"] = $2; })"
-        js_setPathname :: HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.pathname Mozilla HTMLHyperlinkElementUtils.pathname documentation> 
-setPathname ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setPathname self val
-  = liftIO
-      (js_setPathname (toHTMLHyperlinkElementUtils self)
-         (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
-        :: HTMLHyperlinkElementUtils -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.pathname Mozilla HTMLHyperlinkElementUtils.pathname documentation> 
-getPathname ::
-            (MonadIO m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getPathname self
-  = liftIO
-      (fromJSString <$>
-         (js_getPathname (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"search\"] = $2; })"
-        js_setSearch :: HTMLHyperlinkElementUtils -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.search Mozilla HTMLHyperlinkElementUtils.search documentation> 
-setSearch ::
-          (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-            self -> val -> m ()
-setSearch self val
-  = liftIO
-      (js_setSearch (toHTMLHyperlinkElementUtils self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
-        HTMLHyperlinkElementUtils -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"href\"] = $2; })"
+        js_setHref :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/href MDN HTMLHyperlinkElementUtils.href documentation>
+setHref :: (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setHref self val = liftDOM (void ((js_setHref ((Types.toHTMLHyperlinkElementUtils self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.search Mozilla HTMLHyperlinkElementUtils.search documentation> 
-getSearch ::
-          (MonadIO m, IsHTMLHyperlinkElementUtils self,
-           FromJSString result) =>
-            self -> m result
-getSearch self
-  = liftIO
-      (fromJSString <$>
-         (js_getSearch (toHTMLHyperlinkElementUtils self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hash\"] = $2; })" js_setHash ::
-        HTMLHyperlinkElementUtils -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: HTMLHyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/href MDN HTMLHyperlinkElementUtils.href documentation>
+getHref :: (MonadDOM m, IsHTMLHyperlinkElementUtils self, FromJSString result) => self -> m result
+getHref self = liftDOM ((fromJSString <$> (js_getHref ((Types.toHTMLHyperlinkElementUtils self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hash Mozilla HTMLHyperlinkElementUtils.hash documentation> 
-setHash ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setHash self val
-  = liftIO
-      (js_setHash (toHTMLHyperlinkElementUtils self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
-        HTMLHyperlinkElementUtils -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/target MDN HTMLHyperlinkElementUtils.target documentation>
+setTarget :: (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setTarget self val = liftDOM (void ((js_setTarget ((Types.toHTMLHyperlinkElementUtils self)) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hash Mozilla HTMLHyperlinkElementUtils.hash documentation> 
-getHash ::
-        (MonadIO m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getHash self
-  = liftIO
-      (fromJSString <$> (js_getHash (toHTMLHyperlinkElementUtils self)))
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: HTMLHyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/target MDN HTMLHyperlinkElementUtils.target documentation>
+getTarget :: (MonadDOM m, IsHTMLHyperlinkElementUtils self, FromJSString result) => self -> m result
+getTarget self = liftDOM ((fromJSString <$> (js_getTarget ((Types.toHTMLHyperlinkElementUtils self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
@@ -1,275 +1,249 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
-       (js_getSVGDocument, getSVGDocument, getSVGDocument_, js_setAlign,
-        setAlign, js_getAlign, getAlign, js_setFrameBorder, setFrameBorder,
-        js_getFrameBorder, getFrameBorder, js_setHeight, setHeight,
-        js_getHeight, getHeight, js_setLongDesc, setLongDesc,
-        js_getLongDesc, getLongDesc, js_setMarginHeight, setMarginHeight,
-        js_getMarginHeight, getMarginHeight, js_setMarginWidth,
-        setMarginWidth, js_getMarginWidth, getMarginWidth, js_setName,
-        setName, js_getName, getName, js_getSandbox, getSandbox,
-        js_setAllowFullscreen, setAllowFullscreen, js_getAllowFullscreen,
-        getAllowFullscreen, js_setScrolling, setScrolling, js_getScrolling,
-        getScrolling, js_setSrc, setSrc, js_getSrc, getSrc, js_setSrcdoc,
-        setSrcdoc, js_getSrcdoc, getSrcdoc, js_setWidth, setWidth,
-        js_getWidth, getWidth, js_getContentDocument, getContentDocument,
-        js_getContentWindow, getContentWindow, HTMLIFrameElement(..),
-        gTypeHTMLIFrameElement)
+       (js_getSVGDocument, js_setSrc, js_getSrc, js_setSrcdoc, js_getSrcdoc, js_setName, js_getName, js_getSandbox, js_setAllow, js_getAllow, js_setAllowFullscreen, js_getAllowFullscreen, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setReferrerPolicy, js_getReferrerPolicy, js_setLoading, js_getLoading, js_getContentDocument, js_getContentWindow, js_setAlign, js_getAlign, js_setScrolling, js_getScrolling, js_setFrameBorder, js_getFrameBorder, js_setLongDesc, js_getLongDesc, js_setMarginHeight, js_getMarginHeight, js_setMarginWidth, js_getMarginWidth, getSVGDocument, getSVGDocument_, getSVGDocumentUnsafe, getSVGDocumentUnchecked, setSrc, getSrc, setSrcdoc, getSrcdoc, setName, getName, getSandbox, setAllow, getAllow, setAllowFullscreen, getAllowFullscreen, setWidth, getWidth, setHeight, getHeight, setReferrerPolicy, getReferrerPolicy, setLoading, getLoading, getContentDocument, getContentDocumentUnsafe, getContentDocumentUnchecked, getContentWindow, getContentWindowUnsafe, getContentWindowUnchecked, setAlign, getAlign, setScrolling, getScrolling, setFrameBorder, getFrameBorder, setLongDesc, getLongDesc, setMarginHeight, getMarginHeight, setMarginWidth, getMarginWidth, HTMLIFrameElement(..), gTypeHTMLIFrameElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
-        js_getSVGDocument :: HTMLIFrameElement -> IO Document
+        js_getSVGDocument :: HTMLIFrameElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
+getSVGDocument :: (MonadDOM m) => HTMLIFrameElement -> m (Maybe Document)
+getSVGDocument self = liftDOM (((js_getSVGDocument (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadIO m) => HTMLIFrameElement -> m Document
-getSVGDocument self = liftIO (js_getSVGDocument self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
+getSVGDocument_ :: (MonadDOM m) => HTMLIFrameElement -> m ()
+getSVGDocument_ self = liftDOM (void ((js_getSVGDocument (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
-getSVGDocument_ :: (MonadIO m) => HTMLIFrameElement -> m ()
-getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
+getSVGDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Document
+getSVGDocumentUnsafe self = liftDOM ((((js_getSVGDocument (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.align Mozilla HTMLIFrameElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
+getSVGDocumentUnchecked :: (MonadDOM m) => HTMLIFrameElement -> m Document
+getSVGDocumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getSVGDocument (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.align Mozilla HTMLIFrameElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"frameBorder\"] = $2; })"
-        js_setFrameBorder :: HTMLIFrameElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/src MDN HTMLIFrameElement.src documentation>
+setSrc :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
-setFrameBorder ::
-               (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setFrameBorder self val
-  = liftIO (js_setFrameBorder self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"frameBorder\"]; })"
-        js_getFrameBorder :: HTMLIFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/src MDN HTMLIFrameElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
-getFrameBorder ::
-               (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getFrameBorder self
-  = liftIO (fromJSString <$> (js_getFrameBorder self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"srcdoc\"] = $2; })"
+        js_setSrcdoc :: HTMLIFrameElement -> TrustedHTMLOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/srcdoc MDN HTMLIFrameElement.srcdoc documentation>
+setSrcdoc :: (MonadDOM m, IsTrustedHTMLOrString val) => HTMLIFrameElement -> val -> m ()
+setSrcdoc self val = liftDOM (void ((js_setSrcdoc (self) (Types.toTrustedHTMLOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"srcdoc\"]; })"
+        js_getSrcdoc :: HTMLIFrameElement -> IO TrustedHTMLOrString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/srcdoc MDN HTMLIFrameElement.srcdoc documentation>
+getSrcdoc :: (MonadDOM m) => HTMLIFrameElement -> m TrustedHTMLOrString
+getSrcdoc self = liftDOM ((js_getSrcdoc (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/name MDN HTMLIFrameElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/name MDN HTMLIFrameElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sandbox\"]; })"
+        js_getSandbox :: HTMLIFrameElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/sandbox MDN HTMLIFrameElement.sandbox documentation>
+getSandbox :: (MonadDOM m) => HTMLIFrameElement -> m DOMTokenList
+getSandbox self = liftDOM ((js_getSandbox (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"allow\"] = $2; })"
+        js_setAllow :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/allow MDN HTMLIFrameElement.allow documentation>
+setAllow :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setAllow self val = liftDOM (void ((js_setAllow (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"allow\"]; })"
+        js_getAllow :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/allow MDN HTMLIFrameElement.allow documentation>
+getAllow :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getAllow self = liftDOM ((fromJSString <$> (js_getAllow (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"allowFullscreen\"] = $2; })"
+        js_setAllowFullscreen :: HTMLIFrameElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/allowFullscreen MDN HTMLIFrameElement.allowFullscreen documentation>
+setAllowFullscreen :: (MonadDOM m) => HTMLIFrameElement -> Bool -> m ()
+setAllowFullscreen self val = liftDOM (void ((js_setAllowFullscreen (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"allowFullscreen\"]; })"
+        js_getAllowFullscreen :: HTMLIFrameElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/allowFullscreen MDN HTMLIFrameElement.allowFullscreen documentation>
+getAllowFullscreen :: (MonadDOM m) => HTMLIFrameElement -> m Bool
+getAllowFullscreen self = liftDOM ((js_getAllowFullscreen (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/width MDN HTMLIFrameElement.width documentation>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/width MDN HTMLIFrameElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
         js_setHeight :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/height MDN HTMLIFrameElement.height documentation>
+setHeight :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
-setHeight ::
-          (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setHeight self val = liftIO (js_setHeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLIFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/height MDN HTMLIFrameElement.height documentation>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getHeight self = liftDOM ((fromJSString <$> (js_getHeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
-getHeight ::
-          (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getHeight self = liftIO (fromJSString <$> (js_getHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
-        js_setLongDesc :: HTMLIFrameElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/referrerPolicy MDN HTMLIFrameElement.referrerPolicy documentation>
+setReferrerPolicy :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setReferrerPolicy self val = liftDOM (void ((js_setReferrerPolicy (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
-setLongDesc ::
-            (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setLongDesc self val
-  = liftIO (js_setLongDesc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })" js_getLongDesc
-        :: HTMLIFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/referrerPolicy MDN HTMLIFrameElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getReferrerPolicy self = liftDOM ((fromJSString <$> (js_getReferrerPolicy (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
-getLongDesc ::
-            (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getLongDesc self = liftIO (fromJSString <$> (js_getLongDesc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"marginHeight\"] = $2; })"
-        js_setMarginHeight :: HTMLIFrameElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"loading\"] = $2; })"
+        js_setLoading :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/loading MDN HTMLIFrameElement.loading documentation>
+setLoading :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setLoading self val = liftDOM (void ((js_setLoading (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
-setMarginHeight ::
-                (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setMarginHeight self val
-  = liftIO (js_setMarginHeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"marginHeight\"]; })"
-        js_getMarginHeight :: HTMLIFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"loading\"]; })"
+        js_getLoading :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/loading MDN HTMLIFrameElement.loading documentation>
+getLoading :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getLoading self = liftDOM ((fromJSString <$> (js_getLoading (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
-getMarginHeight ::
-                (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getMarginHeight self
-  = liftIO (fromJSString <$> (js_getMarginHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"marginWidth\"] = $2; })"
-        js_setMarginWidth :: HTMLIFrameElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
+        js_getContentDocument :: HTMLIFrameElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentDocument MDN HTMLIFrameElement.contentDocument documentation>
+getContentDocument :: (MonadDOM m) => HTMLIFrameElement -> m (Maybe Document)
+getContentDocument self = liftDOM (((js_getContentDocument (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
-setMarginWidth ::
-               (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setMarginWidth self val
-  = liftIO (js_setMarginWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"marginWidth\"]; })"
-        js_getMarginWidth :: HTMLIFrameElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentDocument MDN HTMLIFrameElement.contentDocument documentation>
+getContentDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Document
+getContentDocumentUnsafe self = liftDOM ((((js_getContentDocument (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
-getMarginWidth ::
-               (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getMarginWidth self
-  = liftIO (fromJSString <$> (js_getMarginWidth self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLIFrameElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentDocument MDN HTMLIFrameElement.contentDocument documentation>
+getContentDocumentUnchecked :: (MonadDOM m) => HTMLIFrameElement -> m Document
+getContentDocumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentDocument (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLIFrameElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"contentWindow\"]; })"
+        js_getContentWindow :: HTMLIFrameElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentWindow MDN HTMLIFrameElement.contentWindow documentation>
+getContentWindow :: (MonadDOM m) => HTMLIFrameElement -> m (Maybe Window)
+getContentWindow self = liftDOM (((js_getContentWindow (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sandbox\"]; })" js_getSandbox ::
-        HTMLIFrameElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentWindow MDN HTMLIFrameElement.contentWindow documentation>
+getContentWindowUnsafe :: (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Window
+getContentWindowUnsafe self = liftDOM ((((js_getContentWindow (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sandbox Mozilla HTMLIFrameElement.sandbox documentation> 
-getSandbox :: (MonadIO m) => HTMLIFrameElement -> m DOMTokenList
-getSandbox self = liftIO (js_getSandbox self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"allowFullscreen\"] = $2; })"
-        js_setAllowFullscreen :: HTMLIFrameElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentWindow MDN HTMLIFrameElement.contentWindow documentation>
+getContentWindowUnchecked :: (MonadDOM m) => HTMLIFrameElement -> m Window
+getContentWindowUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentWindow (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.allowFullscreen Mozilla HTMLIFrameElement.allowFullscreen documentation> 
-setAllowFullscreen ::
-                   (MonadIO m) => HTMLIFrameElement -> Bool -> m ()
-setAllowFullscreen self val
-  = liftIO (js_setAllowFullscreen self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"allowFullscreen\"] ? 1 : 0); })" js_getAllowFullscreen ::
-        HTMLIFrameElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-align HTMLIFrameElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.allowFullscreen Mozilla HTMLIFrameElement.allowFullscreen documentation> 
-getAllowFullscreen :: (MonadIO m) => HTMLIFrameElement -> m Bool
-getAllowFullscreen self = liftIO (js_getAllowFullscreen self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scrolling\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLIFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-align HTMLIFrameElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scrolling\"] = $2; })"
         js_setScrolling :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-scrolling HTMLIFrameElement.scrolling specification>
+setScrolling :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setScrolling self val = liftDOM (void ((js_setScrolling (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
-setScrolling ::
-             (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setScrolling self val
-  = liftIO (js_setScrolling self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"scrolling\"]; })"
         js_getScrolling :: HTMLIFrameElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
-getScrolling ::
-             (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getScrolling self
-  = liftIO (fromJSString <$> (js_getScrolling self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLIFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-scrolling HTMLIFrameElement.scrolling specification>
+getScrolling :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getScrolling self = liftDOM ((fromJSString <$> (js_getScrolling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLIFrameElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"frameBorder\"] = $2; })"
+        js_setFrameBorder :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-frameborder HTMLIFrameElement.frameBorder specification>
+setFrameBorder :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setFrameBorder self val = liftDOM (void ((js_setFrameBorder (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"srcdoc\"] = $2; })"
-        js_setSrcdoc :: HTMLIFrameElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"frameBorder\"]; })"
+        js_getFrameBorder :: HTMLIFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-frameborder HTMLIFrameElement.frameBorder specification>
+getFrameBorder :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getFrameBorder self = liftDOM ((fromJSString <$> (js_getFrameBorder (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
-setSrcdoc ::
-          (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setSrcdoc self val = liftIO (js_setSrcdoc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"srcdoc\"]; })" js_getSrcdoc ::
-        HTMLIFrameElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
+        js_setLongDesc :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-longdesc HTMLIFrameElement.longDesc specification>
+setLongDesc :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setLongDesc self val = liftDOM (void ((js_setLongDesc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
-getSrcdoc ::
-          (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getSrcdoc self = liftIO (fromJSString <$> (js_getSrcdoc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLIFrameElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })"
+        js_getLongDesc :: HTMLIFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-longdesc HTMLIFrameElement.longDesc specification>
+getLongDesc :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getLongDesc self = liftDOM ((fromJSString <$> (js_getLongDesc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLIFrameElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"marginHeight\"] = $2; })"
+        js_setMarginHeight :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-marginheight HTMLIFrameElement.marginHeight specification>
+setMarginHeight :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setMarginHeight self val = liftDOM (void ((js_setMarginHeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
-        js_getContentDocument :: HTMLIFrameElement -> IO Document
+foreign import javascript unsafe "(($1) => { return $1[\"marginHeight\"]; })"
+        js_getMarginHeight :: HTMLIFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-marginheight HTMLIFrameElement.marginHeight specification>
+getMarginHeight :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getMarginHeight self = liftDOM ((fromJSString <$> (js_getMarginHeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentDocument Mozilla HTMLIFrameElement.contentDocument documentation> 
-getContentDocument ::
-                   (MonadIO m) => HTMLIFrameElement -> m Document
-getContentDocument self = liftIO (js_getContentDocument self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contentWindow\"]; })"
-        js_getContentWindow :: HTMLIFrameElement -> IO Window
+foreign import javascript safe "(($1, $2) => { $1[\"marginWidth\"] = $2; })"
+        js_setMarginWidth :: HTMLIFrameElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-marginwidth HTMLIFrameElement.marginWidth specification>
+setMarginWidth :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setMarginWidth self val = liftDOM (void ((js_setMarginWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentWindow Mozilla HTMLIFrameElement.contentWindow documentation> 
-getContentWindow :: (MonadIO m) => HTMLIFrameElement -> m Window
-getContentWindow self = liftIO (js_getContentWindow self)
+foreign import javascript unsafe "(($1) => { return $1[\"marginWidth\"]; })"
+        js_getMarginWidth :: HTMLIFrameElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-iframe-marginwidth HTMLIFrameElement.marginWidth specification>
+getMarginWidth :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getMarginWidth self = liftDOM ((fromJSString <$> (js_getMarginWidth (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
@@ -1,353 +1,307 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLImageElement
-       (js_setName, setName, js_getName, getName, js_setAlign, setAlign,
-        js_getAlign, getAlign, js_setAlt, setAlt, js_getAlt, getAlt,
-        js_setBorder, setBorder, js_getBorder, getBorder,
-        js_setCrossOrigin, setCrossOrigin, js_getCrossOrigin,
-        getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked,
-        js_setHeight, setHeight, js_getHeight, getHeight, js_setHspace,
-        setHspace, js_getHspace, getHspace, js_setIsMap, setIsMap,
-        js_getIsMap, getIsMap, js_setLongDesc, setLongDesc, js_getLongDesc,
-        getLongDesc, js_setSrc, setSrc, js_getSrc, getSrc, js_setSrcset,
-        setSrcset, js_getSrcset, getSrcset, js_setSizes, setSizes,
-        js_getSizes, getSizes, js_getCurrentSrc, getCurrentSrc,
-        js_setUseMap, setUseMap, js_getUseMap, getUseMap, js_setVspace,
-        setVspace, js_getVspace, getVspace, js_setWidth, setWidth,
-        js_getWidth, getWidth, js_getComplete, getComplete, js_setLowsrc,
-        setLowsrc, js_getLowsrc, getLowsrc, js_getNaturalHeight,
-        getNaturalHeight, js_getNaturalWidth, getNaturalWidth, js_getX,
-        getX, js_getY, getY, HTMLImageElement(..), gTypeHTMLImageElement)
+       (js_decode, js_setAlt, js_getAlt, js_setSrc, js_getSrc, js_setSrcset, js_getSrcset, js_setSizes, js_getSizes, js_setCrossOrigin, js_getCrossOrigin, js_setUseMap, js_getUseMap, js_setIsMap, js_getIsMap, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_getNaturalWidth, js_getNaturalHeight, js_getComplete, js_getCurrentSrc, js_setReferrerPolicy, js_getReferrerPolicy, js_setDecoding, js_getDecoding, js_setLoading, js_getLoading, js_setFetchPriority, js_getFetchPriority, js_getX, js_getY, js_setName, js_getName, js_setLowsrc, js_getLowsrc, js_setAlign, js_getAlign, js_setHspace, js_getHspace, js_setVspace, js_getVspace, js_setLongDesc, js_getLongDesc, js_setBorder, js_getBorder, decode, setAlt, getAlt, setSrc, getSrc, setSrcset, getSrcset, setSizes, getSizes, setCrossOrigin, getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked, setUseMap, getUseMap, setIsMap, getIsMap, setWidth, getWidth, setHeight, getHeight, getNaturalWidth, getNaturalHeight, getComplete, getCurrentSrc, setReferrerPolicy, getReferrerPolicy, setDecoding, getDecoding, setLoading, getLoading, setFetchPriority, getFetchPriority, getX, getY, setName, getName, setLowsrc, getLowsrc, setAlign, getAlign, setHspace, getHspace, setVspace, getVspace, setLongDesc, getLongDesc, setBorder, getBorder, HTMLImageElement(..), gTypeHTMLImageElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLImageElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLImageElement -> IO JSString
+foreign import javascript interruptible "(($1, $c) => { return $1[\"decode\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_decode :: HTMLImageElement -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/decode MDN HTMLImageElement.decode documentation>
+decode :: (MonadDOM m) => HTMLImageElement -> m ()
+decode self = liftDOM (void (((js_decode (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLImageElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"alt\"] = $2; })"
+        js_setAlt :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/alt MDN HTMLImageElement.alt documentation>
+setAlt :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setAlt self val = liftDOM (void ((js_setAlt (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLImageElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })"
+        js_getAlt :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/alt MDN HTMLImageElement.alt documentation>
+getAlt :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getAlt self = liftDOM ((fromJSString <$> (js_getAlt (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
-        HTMLImageElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/src MDN HTMLImageElement.src documentation>
+setSrc :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
-setAlt ::
-       (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setAlt self val = liftIO (js_setAlt self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
-        HTMLImageElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/src MDN HTMLImageElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
-getAlt ::
-       (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getAlt self = liftIO (fromJSString <$> (js_getAlt self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"border\"] = $2; })"
-        js_setBorder :: HTMLImageElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"srcset\"] = $2; })"
+        js_setSrcset :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/srcset MDN HTMLImageElement.srcset documentation>
+setSrcset :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSrcset self val = liftDOM (void ((js_setSrcset (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
-setBorder ::
-          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setBorder self val = liftIO (js_setBorder self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })" js_getBorder ::
-        HTMLImageElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"srcset\"]; })"
+        js_getSrcset :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/srcset MDN HTMLImageElement.srcset documentation>
+getSrcset :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSrcset self = liftDOM ((fromJSString <$> (js_getSrcset (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
-getBorder ::
-          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getBorder self = liftIO (fromJSString <$> (js_getBorder self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
-        js_setCrossOrigin :: HTMLImageElement -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"sizes\"] = $2; })"
+        js_setSizes :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/sizes MDN HTMLImageElement.sizes documentation>
+setSizes :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSizes self val = liftDOM (void ((js_setSizes (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadIO m, ToJSString val) =>
-                 HTMLImageElement -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftIO (js_setCrossOrigin self (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
-        js_getCrossOrigin :: HTMLImageElement -> IO (Nullable JSString)
+foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })"
+        js_getSizes :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/sizes MDN HTMLImageElement.sizes documentation>
+getSizes :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSizes self = liftDOM ((fromJSString <$> (js_getSizes (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadIO m, FromJSString result) =>
-                 HTMLImageElement -> m (Maybe result)
-getCrossOrigin self
-  = liftIO (fromMaybeJSString <$> (js_getCrossOrigin self))
+foreign import javascript safe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: HTMLImageElement -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin MDN HTMLImageElement.crossOrigin documentation>
+setCrossOrigin :: (MonadDOM m, ToJSString val) => HTMLImageElement -> Maybe val -> m ()
+setCrossOrigin self val = liftDOM (void ((js_setCrossOrigin (self) (toMaybeJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadIO m, HasCallStack, FromJSString result) =>
-                       HTMLImageElement -> m result
-getCrossOriginUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getCrossOrigin self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLImageElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin MDN HTMLImageElement.crossOrigin documentation>
+getCrossOrigin :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m (Maybe result)
+getCrossOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getCrossOriginUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getCrossOrigin self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
-        js_setHeight :: HTMLImageElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin MDN HTMLImageElement.crossOrigin documentation>
+getCrossOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HTMLImageElement -> m result
+getCrossOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
-setHeight :: (MonadIO m) => HTMLImageElement -> Word -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLImageElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin MDN HTMLImageElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getCrossOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getCrossOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
-getHeight :: (MonadIO m) => HTMLImageElement -> m Word
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
-        js_setHspace :: HTMLImageElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"useMap\"] = $2; })"
+        js_setUseMap :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/useMap MDN HTMLImageElement.useMap documentation>
+setUseMap :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setUseMap self val = liftDOM (void ((js_setUseMap (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
-setHspace :: (MonadIO m) => HTMLImageElement -> Word -> m ()
-setHspace self val = liftIO (js_setHspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
-        HTMLImageElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })"
+        js_getUseMap :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/useMap MDN HTMLImageElement.useMap documentation>
+getUseMap :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getUseMap self = liftDOM ((fromJSString <$> (js_getUseMap (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
-getHspace :: (MonadIO m) => HTMLImageElement -> m Word
-getHspace self = liftIO (js_getHspace self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"isMap\"] = $2; })" js_setIsMap
-        :: HTMLImageElement -> Bool -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"isMap\"] = $2; })"
+        js_setIsMap :: HTMLImageElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/isMap MDN HTMLImageElement.isMap documentation>
+setIsMap :: (MonadDOM m) => HTMLImageElement -> Bool -> m ()
+setIsMap self val = liftDOM (void ((js_setIsMap (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
-setIsMap :: (MonadIO m) => HTMLImageElement -> Bool -> m ()
-setIsMap self val = liftIO (js_setIsMap self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"isMap\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"isMap\"]; })"
         js_getIsMap :: HTMLImageElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
-getIsMap :: (MonadIO m) => HTMLImageElement -> m Bool
-getIsMap self = liftIO (js_getIsMap self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
-        js_setLongDesc :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/isMap MDN HTMLImageElement.isMap documentation>
+getIsMap :: (MonadDOM m) => HTMLImageElement -> m Bool
+getIsMap self = liftDOM ((js_getIsMap (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
-setLongDesc ::
-            (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setLongDesc self val
-  = liftIO (js_setLongDesc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })" js_getLongDesc
-        :: HTMLImageElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLImageElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/width MDN HTMLImageElement.width documentation>
+setWidth :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
-getLongDesc ::
-            (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getLongDesc self = liftIO (fromJSString <$> (js_getLongDesc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLImageElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLImageElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/width MDN HTMLImageElement.width documentation>
+getWidth :: (MonadDOM m) => HTMLImageElement -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLImageElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLImageElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/height MDN HTMLImageElement.height documentation>
+setHeight :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"srcset\"] = $2; })"
-        js_setSrcset :: HTMLImageElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLImageElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/height MDN HTMLImageElement.height documentation>
+getHeight :: (MonadDOM m) => HTMLImageElement -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
-setSrcset ::
-          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setSrcset self val = liftIO (js_setSrcset self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"srcset\"]; })" js_getSrcset ::
-        HTMLImageElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"naturalWidth\"]; })"
+        js_getNaturalWidth :: HTMLImageElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/naturalWidth MDN HTMLImageElement.naturalWidth documentation>
+getNaturalWidth :: (MonadDOM m) => HTMLImageElement -> m Word
+getNaturalWidth self = liftDOM ((js_getNaturalWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
-getSrcset ::
-          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getSrcset self = liftIO (fromJSString <$> (js_getSrcset self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"sizes\"] = $2; })" js_setSizes
-        :: HTMLImageElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"naturalHeight\"]; })"
+        js_getNaturalHeight :: HTMLImageElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/naturalHeight MDN HTMLImageElement.naturalHeight documentation>
+getNaturalHeight :: (MonadDOM m) => HTMLImageElement -> m Word
+getNaturalHeight self = liftDOM ((js_getNaturalHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
-setSizes ::
-         (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setSizes self val = liftIO (js_setSizes self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })" js_getSizes ::
-        HTMLImageElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"complete\"]; })"
+        js_getComplete :: HTMLImageElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/complete MDN HTMLImageElement.complete documentation>
+getComplete :: (MonadDOM m) => HTMLImageElement -> m Bool
+getComplete self = liftDOM ((js_getComplete (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
-getSizes ::
-         (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getSizes self = liftIO (fromJSString <$> (js_getSizes self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"currentSrc\"]; })"
         js_getCurrentSrc :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/currentSrc MDN HTMLImageElement.currentSrc documentation>
+getCurrentSrc :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getCurrentSrc self = liftDOM ((fromJSString <$> (js_getCurrentSrc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.currentSrc Mozilla HTMLImageElement.currentSrc documentation> 
-getCurrentSrc ::
-              (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getCurrentSrc self
-  = liftIO (fromJSString <$> (js_getCurrentSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"useMap\"] = $2; })"
-        js_setUseMap :: HTMLImageElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/referrerPolicy MDN HTMLImageElement.referrerPolicy documentation>
+setReferrerPolicy :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setReferrerPolicy self val = liftDOM (void ((js_setReferrerPolicy (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
-setUseMap ::
-          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setUseMap self val = liftIO (js_setUseMap self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })" js_getUseMap ::
-        HTMLImageElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/referrerPolicy MDN HTMLImageElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getReferrerPolicy self = liftDOM ((fromJSString <$> (js_getReferrerPolicy (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
-getUseMap ::
-          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getUseMap self = liftIO (fromJSString <$> (js_getUseMap self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
-        js_setVspace :: HTMLImageElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"decoding\"] = $2; })"
+        js_setDecoding :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/decoding MDN HTMLImageElement.decoding documentation>
+setDecoding :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setDecoding self val = liftDOM (void ((js_setDecoding (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
-setVspace :: (MonadIO m) => HTMLImageElement -> Word -> m ()
-setVspace self val = liftIO (js_setVspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
-        HTMLImageElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"decoding\"]; })"
+        js_getDecoding :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/decoding MDN HTMLImageElement.decoding documentation>
+getDecoding :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getDecoding self = liftDOM ((fromJSString <$> (js_getDecoding (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
-getVspace :: (MonadIO m) => HTMLImageElement -> m Word
-getVspace self = liftIO (js_getVspace self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLImageElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"loading\"] = $2; })"
+        js_setLoading :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/loading MDN HTMLImageElement.loading documentation>
+setLoading :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setLoading self val = liftDOM (void ((js_setLoading (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
-setWidth :: (MonadIO m) => HTMLImageElement -> Word -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLImageElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"loading\"]; })"
+        js_getLoading :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/loading MDN HTMLImageElement.loading documentation>
+getLoading :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getLoading self = liftDOM ((fromJSString <$> (js_getLoading (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
-getWidth :: (MonadIO m) => HTMLImageElement -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"complete\"] ? 1 : 0); })"
-        js_getComplete :: HTMLImageElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"fetchPriority\"] = $2; })"
+        js_setFetchPriority :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/fetchPriority MDN HTMLImageElement.fetchPriority documentation>
+setFetchPriority :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setFetchPriority self val = liftDOM (void ((js_setFetchPriority (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.complete Mozilla HTMLImageElement.complete documentation> 
-getComplete :: (MonadIO m) => HTMLImageElement -> m Bool
-getComplete self = liftIO (js_getComplete self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"lowsrc\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"fetchPriority\"]; })"
+        js_getFetchPriority :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/fetchPriority MDN HTMLImageElement.fetchPriority documentation>
+getFetchPriority :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getFetchPriority self = liftDOM ((fromJSString <$> (js_getFetchPriority (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: HTMLImageElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/x MDN HTMLImageElement.x documentation>
+getX :: (MonadDOM m) => HTMLImageElement -> m Int
+getX self = liftDOM ((js_getX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: HTMLImageElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/y MDN HTMLImageElement.y documentation>
+getY :: (MonadDOM m) => HTMLImageElement -> m Int
+getY self = liftDOM ((js_getY (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/name MDN HTMLImageElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/name MDN HTMLImageElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lowsrc\"] = $2; })"
         js_setLowsrc :: HTMLImageElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-img-lowsrc HTMLImageElement.lowsrc specification>
+setLowsrc :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setLowsrc self val = liftDOM (void ((js_setLowsrc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
-setLowsrc ::
-          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
-setLowsrc self val = liftIO (js_setLowsrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lowsrc\"]; })" js_getLowsrc ::
-        HTMLImageElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"lowsrc\"]; })"
+        js_getLowsrc :: HTMLImageElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-img-lowsrc HTMLImageElement.lowsrc specification>
+getLowsrc :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getLowsrc self = liftDOM ((fromJSString <$> (js_getLowsrc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
-getLowsrc ::
-          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
-getLowsrc self = liftIO (fromJSString <$> (js_getLowsrc self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"naturalHeight\"]; })"
-        js_getNaturalHeight :: HTMLImageElement -> IO Int
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/align MDN HTMLImageElement.align documentation>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalHeight Mozilla HTMLImageElement.naturalHeight documentation> 
-getNaturalHeight :: (MonadIO m) => HTMLImageElement -> m Int
-getNaturalHeight self = liftIO (js_getNaturalHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"naturalWidth\"]; })"
-        js_getNaturalWidth :: HTMLImageElement -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/align MDN HTMLImageElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalWidth Mozilla HTMLImageElement.naturalWidth documentation> 
-getNaturalWidth :: (MonadIO m) => HTMLImageElement -> m Int
-getNaturalWidth self = liftIO (js_getNaturalWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        HTMLImageElement -> IO Int
+foreign import javascript safe "(($1, $2) => { $1[\"hspace\"] = $2; })"
+        js_setHspace :: HTMLImageElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/hspace MDN HTMLImageElement.hspace documentation>
+setHspace :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
+setHspace self val = liftDOM (void ((js_setHspace (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.x Mozilla HTMLImageElement.x documentation> 
-getX :: (MonadIO m) => HTMLImageElement -> m Int
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        HTMLImageElement -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })"
+        js_getHspace :: HTMLImageElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/hspace MDN HTMLImageElement.hspace documentation>
+getHspace :: (MonadDOM m) => HTMLImageElement -> m Word
+getHspace self = liftDOM ((js_getHspace (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.y Mozilla HTMLImageElement.y documentation> 
-getY :: (MonadIO m) => HTMLImageElement -> m Int
-getY self = liftIO (js_getY self)
+foreign import javascript safe "(($1, $2) => { $1[\"vspace\"] = $2; })"
+        js_setVspace :: HTMLImageElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/vspace MDN HTMLImageElement.vspace documentation>
+setVspace :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
+setVspace self val = liftDOM (void ((js_setVspace (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })"
+        js_getVspace :: HTMLImageElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/vspace MDN HTMLImageElement.vspace documentation>
+getVspace :: (MonadDOM m) => HTMLImageElement -> m Word
+getVspace self = liftDOM ((js_getVspace (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
+        js_setLongDesc :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/longDesc MDN HTMLImageElement.longDesc documentation>
+setLongDesc :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setLongDesc self val = liftDOM (void ((js_setLongDesc (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })"
+        js_getLongDesc :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/longDesc MDN HTMLImageElement.longDesc documentation>
+getLongDesc :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getLongDesc self = liftDOM ((fromJSString <$> (js_getLongDesc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"border\"] = $2; })"
+        js_setBorder :: HTMLImageElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/border MDN HTMLImageElement.border documentation>
+setBorder :: (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
+setBorder self val = liftDOM (void ((js_setBorder (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })"
+        js_getBorder :: HTMLImageElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/border MDN HTMLImageElement.border documentation>
+getBorder :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getBorder self = liftDOM ((fromJSString <$> (js_getBorder (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
@@ -1,896 +1,683 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.HTMLInputElement
-       (js_stepUp, stepUp, js_stepDown, stepDown, js_checkValidity,
-        checkValidity, checkValidity_, js_reportValidity, reportValidity,
-        reportValidity_, js_setCustomValidity, setCustomValidity,
-        js_select, select, js_setRangeText, setRangeText, js_setRangeText4,
-        setRangeText4, js_setSelectionRange, setSelectionRange,
-        js_setAccept, setAccept, js_getAccept, getAccept, js_setAlt,
-        setAlt, js_getAlt, getAlt, js_setAutocomplete, setAutocomplete,
-        js_getAutocomplete, getAutocomplete, js_setAutofocus, setAutofocus,
-        js_getAutofocus, getAutofocus, js_setDefaultChecked,
-        setDefaultChecked, js_getDefaultChecked, getDefaultChecked,
-        js_setChecked, setChecked, js_getChecked, getChecked,
-        js_setDirName, setDirName, js_getDirName, getDirName,
-        js_setDisabled, setDisabled, js_getDisabled, getDisabled,
-        js_getForm, getForm, js_setFiles, setFiles, js_getFiles, getFiles,
-        getFilesUnsafe, getFilesUnchecked, js_setFormAction, setFormAction,
-        js_getFormAction, getFormAction, js_setFormEnctype, setFormEnctype,
-        js_getFormEnctype, getFormEnctype, js_setFormMethod, setFormMethod,
-        js_getFormMethod, getFormMethod, js_setFormNoValidate,
-        setFormNoValidate, js_getFormNoValidate, getFormNoValidate,
-        js_setFormTarget, setFormTarget, js_getFormTarget, getFormTarget,
-        js_setHeight, setHeight, js_getHeight, getHeight,
-        js_setIndeterminate, setIndeterminate, js_getIndeterminate,
-        getIndeterminate, js_getList, getList, js_setMax, setMax,
-        js_getMax, getMax, js_setMinLength, setMinLength, js_getMinLength,
-        getMinLength, js_setMaxLength, setMaxLength, js_getMaxLength,
-        getMaxLength, js_setMin, setMin, js_getMin, getMin, js_setMultiple,
-        setMultiple, js_getMultiple, getMultiple, js_setName, setName,
-        js_getName, getName, js_setPattern, setPattern, js_getPattern,
-        getPattern, js_setPlaceholder, setPlaceholder, js_getPlaceholder,
-        getPlaceholder, js_setReadOnly, setReadOnly, js_getReadOnly,
-        getReadOnly, js_setRequired, setRequired, js_getRequired,
-        getRequired, js_setSize, setSize, js_getSize, getSize, js_setSrc,
-        setSrc, js_getSrc, getSrc, js_setStep, setStep, js_getStep,
-        getStep, js_setType, setType, js_getType, getType,
-        js_setDefaultValue, setDefaultValue, js_getDefaultValue,
-        getDefaultValue, js_setValue, setValue, js_getValue, getValue,
-        js_setValueAsDate, setValueAsDate, js_getValueAsDate,
-        getValueAsDate, getValueAsDateUnsafe, getValueAsDateUnchecked,
-        js_setValueAsNumber, setValueAsNumber, js_getValueAsNumber,
-        getValueAsNumber, js_setWidth, setWidth, js_getWidth, getWidth,
-        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
-        js_getValidationMessage, getValidationMessage, js_getLabels,
-        getLabels, js_setSelectionStart, setSelectionStart,
-        js_getSelectionStart, getSelectionStart, js_setSelectionEnd,
-        setSelectionEnd, js_getSelectionEnd, getSelectionEnd,
-        js_setSelectionDirection, setSelectionDirection,
-        js_getSelectionDirection, getSelectionDirection, js_setAlign,
-        setAlign, js_getAlign, getAlign, js_setUseMap, setUseMap,
-        js_getUseMap, getUseMap, js_setIncremental, setIncremental,
-        js_getIncremental, getIncremental, js_setCapture, setCapture,
-        js_getCapture, getCapture, HTMLInputElement(..),
-        gTypeHTMLInputElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"stepUp\"]($2); })" js_stepUp ::
-        HTMLInputElement -> Optional Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
-stepUp :: (MonadIO m) => HTMLInputElement -> Maybe Int -> m ()
-stepUp self n = liftIO (js_stepUp self (maybeToOptional n))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"stepDown\"]($2); })" js_stepDown
-        :: HTMLInputElement -> Optional Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepDown Mozilla HTMLInputElement.stepDown documentation> 
-stepDown :: (MonadIO m) => HTMLInputElement -> Maybe Int -> m ()
-stepDown self n = liftIO (js_stepDown self (maybeToOptional n))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checkValidity Mozilla HTMLInputElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLInputElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checkValidity Mozilla HTMLInputElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLInputElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.reportValidity Mozilla HTMLInputElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLInputElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.reportValidity Mozilla HTMLInputElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLInputElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
-        js_setCustomValidity :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setCustomValidity Mozilla HTMLInputElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) => HTMLInputElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"select\"](); })" js_select ::
-        HTMLInputElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.select Mozilla HTMLInputElement.select documentation> 
-select :: (MonadIO m) => HTMLInputElement -> m ()
-select self = liftIO (js_select self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setRangeText\"]($2); })"
-        js_setRangeText :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
-setRangeText ::
-             (MonadIO m, ToJSString replacement) =>
-               HTMLInputElement -> replacement -> m ()
-setRangeText self replacement
-  = liftIO (js_setRangeText self (toJSString replacement))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5) => { return $1[\"setRangeText\"]($2, $3, $4,\n$5); })" js_setRangeText4 ::
-        HTMLInputElement ->
-          JSString -> Word -> Word -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
-setRangeText4 ::
-              (MonadIO m, ToJSString replacement, ToJSString selectionMode) =>
-                HTMLInputElement ->
-                  replacement -> Word -> Word -> Maybe selectionMode -> m ()
-setRangeText4 self replacement start end selectionMode
-  = liftIO
-      (js_setRangeText4 self (toJSString replacement) start end
-         (toOptionalJSString selectionMode))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4) => { return $1[\"setSelectionRange\"]($2, $3,\n$4); })" js_setSelectionRange ::
-        HTMLInputElement -> Int -> Int -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setSelectionRange Mozilla HTMLInputElement.setSelectionRange documentation> 
-setSelectionRange ::
-                  (MonadIO m, ToJSString direction) =>
-                    HTMLInputElement -> Int -> Int -> Maybe direction -> m ()
-setSelectionRange self start end direction
-  = liftIO
-      (js_setSelectionRange self start end
-         (toOptionalJSString direction))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"accept\"] = $2; })"
-        js_setAccept :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
-setAccept ::
-          (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAccept self val = liftIO (js_setAccept self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"accept\"]; })" js_getAccept ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
-getAccept ::
-          (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getAccept self = liftIO (fromJSString <$> (js_getAccept self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
-setAlt ::
-       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAlt self val = liftIO (js_setAlt self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
-getAlt ::
-       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getAlt self = liftIO (fromJSString <$> (js_getAlt self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
-        js_setAutocomplete :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAutocomplete self val
-  = liftIO (js_setAutocomplete self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
-        js_getAutocomplete :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getAutocomplete self
-  = liftIO (fromJSString <$> (js_getAutocomplete self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
-        js_setAutofocus :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
-setAutofocus :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setAutofocus self val = liftIO (js_setAutofocus self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
-        js_getAutofocus :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
-getAutofocus :: (MonadIO m) => HTMLInputElement -> m Bool
-getAutofocus self = liftIO (js_getAutofocus self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultChecked\"] = $2; })"
-        js_setDefaultChecked :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
-setDefaultChecked ::
-                  (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setDefaultChecked self val = liftIO (js_setDefaultChecked self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"defaultChecked\"] ? 1 : 0); })"
-        js_getDefaultChecked :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
-getDefaultChecked :: (MonadIO m) => HTMLInputElement -> m Bool
-getDefaultChecked self = liftIO (js_getDefaultChecked self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"checked\"] = $2; })"
-        js_setChecked :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
-setChecked :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setChecked self val = liftIO (js_setChecked self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"checked\"] ? 1 : 0); })"
-        js_getChecked :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
-getChecked :: (MonadIO m) => HTMLInputElement -> m Bool
-getChecked self = liftIO (js_getChecked self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dirName\"] = $2; })"
-        js_setDirName :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
-setDirName ::
-           (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setDirName self val = liftIO (js_setDirName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dirName\"]; })" js_getDirName ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
-getDirName ::
-           (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getDirName self = liftIO (fromJSString <$> (js_getDirName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
-        js_setDisabled :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
-        js_getDisabled :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLInputElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLInputElement -> IO HTMLFormElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.form Mozilla HTMLInputElement.form documentation> 
-getForm :: (MonadIO m) => HTMLInputElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"files\"] = $2; })" js_setFiles
-        :: HTMLInputElement -> Optional FileList -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
-setFiles ::
-         (MonadIO m) => HTMLInputElement -> Maybe FileList -> m ()
-setFiles self val = liftIO (js_setFiles self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"files\"]; })" js_getFiles ::
-        HTMLInputElement -> IO (Nullable FileList)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
-getFiles :: (MonadIO m) => HTMLInputElement -> m (Maybe FileList)
-getFiles self = liftIO (nullableToMaybe <$> (js_getFiles self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
-getFilesUnsafe ::
-               (MonadIO m, HasCallStack) => HTMLInputElement -> m FileList
-getFilesUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFiles self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
-getFilesUnchecked :: (MonadIO m) => HTMLInputElement -> m FileList
-getFilesUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getFiles self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formAction\"] = $2; })"
-        js_setFormAction :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
-setFormAction ::
-              (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormAction self val
-  = liftIO (js_setFormAction self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"formAction\"]; })"
-        js_getFormAction :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
-getFormAction ::
-              (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getFormAction self
-  = liftIO (fromJSString <$> (js_getFormAction self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formEnctype\"] = $2; })"
-        js_setFormEnctype :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
-setFormEnctype ::
-               (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormEnctype self val
-  = liftIO (js_setFormEnctype self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"formEnctype\"]; })"
-        js_getFormEnctype :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
-getFormEnctype ::
-               (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getFormEnctype self
-  = liftIO (fromJSString <$> (js_getFormEnctype self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formMethod\"] = $2; })"
-        js_setFormMethod :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
-setFormMethod ::
-              (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormMethod self val
-  = liftIO (js_setFormMethod self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"formMethod\"]; })"
-        js_getFormMethod :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
-getFormMethod ::
-              (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getFormMethod self
-  = liftIO (fromJSString <$> (js_getFormMethod self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formNoValidate\"] = $2; })"
-        js_setFormNoValidate :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
-setFormNoValidate ::
-                  (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setFormNoValidate self val = liftIO (js_setFormNoValidate self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"formNoValidate\"] ? 1 : 0); })"
-        js_getFormNoValidate :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
-getFormNoValidate :: (MonadIO m) => HTMLInputElement -> m Bool
-getFormNoValidate self = liftIO (js_getFormNoValidate self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"formTarget\"] = $2; })"
-        js_setFormTarget :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
-setFormTarget ::
-              (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormTarget self val
-  = liftIO (js_setFormTarget self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"formTarget\"]; })"
-        js_getFormTarget :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
-getFormTarget ::
-              (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getFormTarget self
-  = liftIO (fromJSString <$> (js_getFormTarget self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
-        js_setHeight :: HTMLInputElement -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
-setHeight :: (MonadIO m) => HTMLInputElement -> Word -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLInputElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
-getHeight :: (MonadIO m) => HTMLInputElement -> m Word
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"indeterminate\"] = $2; })"
-        js_setIndeterminate :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
-setIndeterminate :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setIndeterminate self val = liftIO (js_setIndeterminate self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"indeterminate\"] ? 1 : 0); })"
-        js_getIndeterminate :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
-getIndeterminate :: (MonadIO m) => HTMLInputElement -> m Bool
-getIndeterminate self = liftIO (js_getIndeterminate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"list\"]; })" js_getList ::
-        HTMLInputElement -> IO HTMLElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.list Mozilla HTMLInputElement.list documentation> 
-getList :: (MonadIO m) => HTMLInputElement -> m HTMLElement
-getList self = liftIO (js_getList self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"max\"] = $2; })" js_setMax ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
-setMax ::
-       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setMax self val = liftIO (js_setMax self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
-getMax ::
-       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getMax self = liftIO (fromJSString <$> (js_getMax self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"minLength\"] = $2; })"
-        js_setMinLength :: HTMLInputElement -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.minLength Mozilla HTMLInputElement.minLength documentation> 
-setMinLength :: (MonadIO m) => HTMLInputElement -> Int -> m ()
-setMinLength self val = liftIO (js_setMinLength self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"minLength\"]; })"
-        js_getMinLength :: HTMLInputElement -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.minLength Mozilla HTMLInputElement.minLength documentation> 
-getMinLength :: (MonadIO m) => HTMLInputElement -> m Int
-getMinLength self = liftIO (js_getMinLength self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"maxLength\"] = $2; })"
-        js_setMaxLength :: HTMLInputElement -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
-setMaxLength :: (MonadIO m) => HTMLInputElement -> Int -> m ()
-setMaxLength self val = liftIO (js_setMaxLength self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"maxLength\"]; })"
-        js_getMaxLength :: HTMLInputElement -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
-getMaxLength :: (MonadIO m) => HTMLInputElement -> m Int
-getMaxLength self = liftIO (js_getMaxLength self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"min\"] = $2; })" js_setMin ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
-setMin ::
-       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setMin self val = liftIO (js_setMin self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })" js_getMin ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
-getMin ::
-       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getMin self = liftIO (fromJSString <$> (js_getMin self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"multiple\"] = $2; })"
-        js_setMultiple :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
-setMultiple :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setMultiple self val = liftIO (js_setMultiple self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"multiple\"] ? 1 : 0); })"
-        js_getMultiple :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
-getMultiple :: (MonadIO m) => HTMLInputElement -> m Bool
-getMultiple self = liftIO (js_getMultiple self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"pattern\"] = $2; })"
-        js_setPattern :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
-setPattern ::
-           (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setPattern self val = liftIO (js_setPattern self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pattern\"]; })" js_getPattern ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
-getPattern ::
-           (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getPattern self = liftIO (fromJSString <$> (js_getPattern self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"placeholder\"] = $2; })"
-        js_setPlaceholder :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
-setPlaceholder ::
-               (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setPlaceholder self val
-  = liftIO (js_setPlaceholder self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"placeholder\"]; })"
-        js_getPlaceholder :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
-getPlaceholder ::
-               (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getPlaceholder self
-  = liftIO (fromJSString <$> (js_getPlaceholder self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"readOnly\"] = $2; })"
-        js_setReadOnly :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
-setReadOnly :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setReadOnly self val = liftIO (js_setReadOnly self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"readOnly\"] ? 1 : 0); })"
-        js_getReadOnly :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
-getReadOnly :: (MonadIO m) => HTMLInputElement -> m Bool
-getReadOnly self = liftIO (js_getReadOnly self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"required\"] = $2; })"
-        js_setRequired :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
-setRequired :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setRequired self val = liftIO (js_setRequired self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"required\"] ? 1 : 0); })"
-        js_getRequired :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
-getRequired :: (MonadIO m) => HTMLInputElement -> m Bool
-getRequired self = liftIO (js_getRequired self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
-        HTMLInputElement -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
-setSize :: (MonadIO m) => HTMLInputElement -> Word -> m ()
-setSize self val = liftIO (js_setSize self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        HTMLInputElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
-getSize :: (MonadIO m) => HTMLInputElement -> m Word
-getSize self = liftIO (js_getSize self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"step\"] = $2; })" js_setStep ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
-setStep ::
-        (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setStep self val = liftIO (js_setStep self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"step\"]; })" js_getStep ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
-getStep ::
-        (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getStep self = liftIO (fromJSString <$> (js_getStep self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
-        js_setDefaultValue :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
-setDefaultValue ::
-                (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setDefaultValue self val
-  = liftIO (js_setDefaultValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
-        js_getDefaultValue :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
-getDefaultValue ::
-                (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getDefaultValue self
-  = liftIO (fromJSString <$> (js_getDefaultValue self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
-        HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"valueAsDate\"] = $2; })"
-        js_setValueAsDate :: HTMLInputElement -> Optional Date -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-setValueAsDate ::
-               (MonadIO m, IsDate val) => HTMLInputElement -> Maybe val -> m ()
-setValueAsDate self val
-  = liftIO
-      (js_setValueAsDate self (maybeToOptional (fmap toDate val)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"valueAsDate\"]; })"
-        js_getValueAsDate :: HTMLInputElement -> IO (Nullable Date)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-getValueAsDate :: (MonadIO m) => HTMLInputElement -> m (Maybe Date)
-getValueAsDate self
-  = liftIO (nullableToMaybe <$> (js_getValueAsDate self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-getValueAsDateUnsafe ::
-                     (MonadIO m, HasCallStack) => HTMLInputElement -> m Date
-getValueAsDateUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getValueAsDate self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-getValueAsDateUnchecked ::
-                        (MonadIO m) => HTMLInputElement -> m Date
-getValueAsDateUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getValueAsDate self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"valueAsNumber\"] = $2; })"
-        js_setValueAsNumber :: HTMLInputElement -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
-setValueAsNumber ::
-                 (MonadIO m) => HTMLInputElement -> Double -> m ()
-setValueAsNumber self val = liftIO (js_setValueAsNumber self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"valueAsNumber\"]; })"
-        js_getValueAsNumber :: HTMLInputElement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
-getValueAsNumber :: (MonadIO m) => HTMLInputElement -> m Double
-getValueAsNumber self = liftIO (js_getValueAsNumber self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLInputElement -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
-setWidth :: (MonadIO m) => HTMLInputElement -> Word -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLInputElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
-getWidth :: (MonadIO m) => HTMLInputElement -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
-        js_getWillValidate :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.willValidate Mozilla HTMLInputElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLInputElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLInputElement -> IO ValidityState
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validity Mozilla HTMLInputElement.validity documentation> 
-getValidity :: (MonadIO m) => HTMLInputElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
-        js_getValidationMessage :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validationMessage Mozilla HTMLInputElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLInputElement -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.labels Mozilla HTMLInputElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLInputElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"selectionStart\"] = $2; })"
-        js_setSelectionStart :: HTMLInputElement -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
-setSelectionStart :: (MonadIO m) => HTMLInputElement -> Int -> m ()
-setSelectionStart self val = liftIO (js_setSelectionStart self val)
- 
-foreign import javascript safe "(($1) => { return $1[\"selectionStart\"]; })"
-        js_getSelectionStart :: HTMLInputElement -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
-getSelectionStart :: (MonadIO m) => HTMLInputElement -> m Int
-getSelectionStart self = liftIO (js_getSelectionStart self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"selectionEnd\"] = $2; })"
-        js_setSelectionEnd :: HTMLInputElement -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
-setSelectionEnd :: (MonadIO m) => HTMLInputElement -> Int -> m ()
-setSelectionEnd self val = liftIO (js_setSelectionEnd self val)
- 
-foreign import javascript safe "(($1) => { return $1[\"selectionEnd\"]; })"
-        js_getSelectionEnd :: HTMLInputElement -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
-getSelectionEnd :: (MonadIO m) => HTMLInputElement -> m Int
-getSelectionEnd self = liftIO (js_getSelectionEnd self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"selectionDirection\"] = $2; })"
-        js_setSelectionDirection :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
-setSelectionDirection ::
-                      (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setSelectionDirection self val
-  = liftIO (js_setSelectionDirection self (toJSString val))
- 
-foreign import javascript safe "(($1) => { return $1[\"selectionDirection\"]; })"
-        js_getSelectionDirection :: HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
-getSelectionDirection ::
-                      (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getSelectionDirection self
-  = liftIO (fromJSString <$> (js_getSelectionDirection self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"useMap\"] = $2; })"
-        js_setUseMap :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
-setUseMap ::
-          (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setUseMap self val = liftIO (js_setUseMap self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })" js_getUseMap ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
-getUseMap ::
-          (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getUseMap self = liftIO (fromJSString <$> (js_getUseMap self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"incremental\"] = $2; })"
-        js_setIncremental :: HTMLInputElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
-setIncremental :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
-setIncremental self val = liftIO (js_setIncremental self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"incremental\"] ? 1 : 0); })"
-        js_getIncremental :: HTMLInputElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
-getIncremental :: (MonadIO m) => HTMLInputElement -> m Bool
-getIncremental self = liftIO (js_getIncremental self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"capture\"] = $2; })"
-        js_setCapture :: HTMLInputElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
-setCapture ::
-           (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
-setCapture self val = liftIO (js_setCapture self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"capture\"]; })" js_getCapture ::
-        HTMLInputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
-getCapture ::
-           (MonadIO m, FromJSString result) => HTMLInputElement -> m result
-getCapture self = liftIO (fromJSString <$> (js_getCapture self))
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLInputElement
+       (js_checkValidity, js_reportValidity, js_select, js_setCustomValidity, js_setRangeText, js_setRangeText4, js_setSelectionRange, js_showPicker, js_stepDown, js_stepUp, js_setAccept, js_getAccept, js_setAlt, js_getAlt, js_setAutocomplete, js_getAutocomplete, js_setDefaultChecked, js_getDefaultChecked, js_setChecked, js_getChecked, js_setColorSpace, js_getColorSpace, js_setDirName, js_getDirName, js_setDisabled, js_getDisabled, js_getForm, js_setFiles, js_getFiles, js_setFormAction, js_getFormAction, js_setFormEnctype, js_getFormEnctype, js_setFormMethod, js_getFormMethod, js_setFormNoValidate, js_getFormNoValidate, js_setFormTarget, js_getFormTarget, js_setHeight, js_getHeight, js_setIndeterminate, js_getIndeterminate, js_getList, js_setMax, js_getMax, js_setMaxLength, js_getMaxLength, js_setMin, js_getMin, js_setMinLength, js_getMinLength, js_setMultiple, js_getMultiple, js_setName, js_getName, js_setPattern, js_getPattern, js_setPlaceholder, js_getPlaceholder, js_setReadOnly, js_getReadOnly, js_setRequired, js_getRequired, js_setSize, js_getSize, js_setSrc, js_getSrc, js_setStep, js_getStep, js_setType, js_getType, js_setDefaultValue, js_getDefaultValue, js_setValue, js_getValue, js_setValueAsDate, js_getValueAsDate, js_setValueAsNumber, js_getValueAsNumber, js_setWidth, js_getWidth, js_getWillValidate, js_getValidity, js_getValidationMessage, js_getLabels, js_setSelectionStart, js_getSelectionStart, js_setSelectionEnd, js_getSelectionEnd, js_setSelectionDirection, js_getSelectionDirection, js_setWebkitdirectory, js_getWebkitdirectory, js_getWebkitEntries, js_setAlign, js_getAlign, js_setUseMap, js_getUseMap, checkValidity, checkValidity_, reportValidity, reportValidity_, select, setCustomValidity, setRangeText, setRangeText4, setSelectionRange, showPicker, stepDown, stepUp, setAccept, getAccept, setAlt, getAlt, setAutocomplete, getAutocomplete, setDefaultChecked, getDefaultChecked, setChecked, getChecked, setColorSpace, getColorSpace, setDirName, getDirName, setDisabled, getDisabled, getForm, getFormUnsafe, getFormUnchecked, setFiles, getFiles, getFilesUnsafe, getFilesUnchecked, setFormAction, getFormAction, setFormEnctype, getFormEnctype, setFormMethod, getFormMethod, setFormNoValidate, getFormNoValidate, setFormTarget, getFormTarget, setHeight, getHeight, setIndeterminate, getIndeterminate, getList, getListUnsafe, getListUnchecked, setMax, getMax, setMaxLength, getMaxLength, setMin, getMin, setMinLength, getMinLength, setMultiple, getMultiple, setName, getName, setPattern, getPattern, setPlaceholder, getPlaceholder, setReadOnly, getReadOnly, setRequired, getRequired, setSize, getSize, setSrc, getSrc, setStep, getStep, setType, getType, setDefaultValue, getDefaultValue, setValue, getValue, setValueAsDate, getValueAsDate, getValueAsDateUnsafe, getValueAsDateUnchecked, setValueAsNumber, getValueAsNumber, setWidth, getWidth, getWillValidate, getValidity, getValidationMessage, getLabels, getLabelsUnsafe, getLabelsUnchecked, setSelectionStart, getSelectionStart, getSelectionStartUnsafe, getSelectionStartUnchecked, setSelectionEnd, getSelectionEnd, getSelectionEndUnsafe, getSelectionEndUnchecked, setSelectionDirection, getSelectionDirection, getSelectionDirectionUnsafe, getSelectionDirectionUnchecked, setWebkitdirectory, getWebkitdirectory, getWebkitEntries, setAlign, getAlign, setUseMap, getUseMap, HTMLInputElement(..), gTypeHTMLInputElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checkValidity MDN HTMLInputElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLInputElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checkValidity MDN HTMLInputElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLInputElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/reportValidity MDN HTMLInputElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLInputElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/reportValidity MDN HTMLInputElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLInputElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"select\"](); })"
+        js_select :: HTMLInputElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/select MDN HTMLInputElement.select documentation>
+select :: (MonadDOM m) => HTMLInputElement -> m ()
+select self = liftDOM (void ((js_select (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/setCustomValidity MDN HTMLInputElement.setCustomValidity documentation>
+setCustomValidity :: (MonadDOM m, ToJSString error) => HTMLInputElement -> error -> m ()
+setCustomValidity self error = liftDOM (void ((js_setCustomValidity (self) (toJSString error))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setRangeText\"]($2); })"
+        js_setRangeText :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/setRangeText MDN HTMLInputElement.setRangeText documentation>
+setRangeText :: (MonadDOM m, ToJSString replacement) => HTMLInputElement -> replacement -> m ()
+setRangeText self replacement = liftDOM (void ((js_setRangeText (self) (toJSString replacement))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"setRangeText\"]($2, $3, $4, $5); })"
+        js_setRangeText4 :: HTMLInputElement -> JSString -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/setRangeText MDN HTMLInputElement.setRangeText documentation>
+setRangeText4 :: (MonadDOM m, ToJSString replacement) => HTMLInputElement -> replacement -> Word -> Word -> Maybe SelectionMode -> m ()
+setRangeText4 self replacement start end selectionMode = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal selectionMode) >>= \a5' -> js_setRangeText4 (self) (toJSString replacement) (start) (end) a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setSelectionRange\"]($2, $3, $4); })"
+        js_setSelectionRange :: HTMLInputElement -> Word -> Word -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/setSelectionRange MDN HTMLInputElement.setSelectionRange documentation>
+setSelectionRange :: (MonadDOM m, ToJSString direction) => HTMLInputElement -> Word -> Word -> Maybe direction -> m ()
+setSelectionRange self start end direction = liftDOM (void ((js_setSelectionRange (self) (start) (end) (toOptionalJSString direction))))
+
+foreign import javascript safe "(($1) => { return $1[\"showPicker\"](); })"
+        js_showPicker :: HTMLInputElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/showPicker MDN HTMLInputElement.showPicker documentation>
+showPicker :: (MonadDOM m) => HTMLInputElement -> m ()
+showPicker self = liftDOM (void ((js_showPicker (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"stepDown\"]($2); })"
+        js_stepDown :: HTMLInputElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/stepDown MDN HTMLInputElement.stepDown documentation>
+stepDown :: (MonadDOM m) => HTMLInputElement -> Maybe Int -> m ()
+stepDown self n = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal n) >>= \a2' -> js_stepDown (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"stepUp\"]($2); })"
+        js_stepUp :: HTMLInputElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/stepUp MDN HTMLInputElement.stepUp documentation>
+stepUp :: (MonadDOM m) => HTMLInputElement -> Maybe Int -> m ()
+stepUp self n = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal n) >>= \a2' -> js_stepUp (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"accept\"] = $2; })"
+        js_setAccept :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/accept MDN HTMLInputElement.accept documentation>
+setAccept :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAccept self val = liftDOM (void ((js_setAccept (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"accept\"]; })"
+        js_getAccept :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/accept MDN HTMLInputElement.accept documentation>
+getAccept :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAccept self = liftDOM ((fromJSString <$> (js_getAccept (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alt\"] = $2; })"
+        js_setAlt :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/alt MDN HTMLInputElement.alt documentation>
+setAlt :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAlt self val = liftDOM (void ((js_setAlt (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })"
+        js_getAlt :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/alt MDN HTMLInputElement.alt documentation>
+getAlt :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAlt self = liftDOM ((fromJSString <$> (js_getAlt (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+        js_setAutocomplete :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/autocomplete MDN HTMLInputElement.autocomplete documentation>
+setAutocomplete :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAutocomplete self val = liftDOM (void ((js_setAutocomplete (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
+        js_getAutocomplete :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/autocomplete MDN HTMLInputElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAutocomplete self = liftDOM ((fromJSString <$> (js_getAutocomplete (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"defaultChecked\"] = $2; })"
+        js_setDefaultChecked :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/defaultChecked MDN HTMLInputElement.defaultChecked documentation>
+setDefaultChecked :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setDefaultChecked self val = liftDOM (void ((js_setDefaultChecked (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultChecked\"]; })"
+        js_getDefaultChecked :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/defaultChecked MDN HTMLInputElement.defaultChecked documentation>
+getDefaultChecked :: (MonadDOM m) => HTMLInputElement -> m Bool
+getDefaultChecked self = liftDOM ((js_getDefaultChecked (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"checked\"] = $2; })"
+        js_setChecked :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checked MDN HTMLInputElement.checked documentation>
+setChecked :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setChecked self val = liftDOM (void ((js_setChecked (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"checked\"]; })"
+        js_getChecked :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checked MDN HTMLInputElement.checked documentation>
+getChecked :: (MonadDOM m) => HTMLInputElement -> m Bool
+getChecked self = liftDOM ((js_getChecked (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/colorSpace MDN HTMLInputElement.colorSpace documentation>
+setColorSpace :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setColorSpace self val = liftDOM (void ((js_setColorSpace (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/colorSpace MDN HTMLInputElement.colorSpace documentation>
+getColorSpace :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getColorSpace self = liftDOM ((fromJSString <$> (js_getColorSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dirName\"] = $2; })"
+        js_setDirName :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/dirName MDN HTMLInputElement.dirName documentation>
+setDirName :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setDirName self val = liftDOM (void ((js_setDirName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dirName\"]; })"
+        js_getDirName :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/dirName MDN HTMLInputElement.dirName documentation>
+getDirName :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getDirName self = liftDOM ((fromJSString <$> (js_getDirName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/disabled MDN HTMLInputElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
+        js_getDisabled :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/disabled MDN HTMLInputElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLInputElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/form MDN HTMLInputElement.form documentation>
+getForm :: (MonadDOM m) => HTMLInputElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/form MDN HTMLInputElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/form MDN HTMLInputElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLInputElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"files\"] = $2; })"
+        js_setFiles :: HTMLInputElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/files MDN HTMLInputElement.files documentation>
+setFiles :: (MonadDOM m) => HTMLInputElement -> Maybe FileList -> m ()
+setFiles self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFiles (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"files\"]; })"
+        js_getFiles :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/files MDN HTMLInputElement.files documentation>
+getFiles :: (MonadDOM m) => HTMLInputElement -> m (Maybe FileList)
+getFiles self = liftDOM (((js_getFiles (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/files MDN HTMLInputElement.files documentation>
+getFilesUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m FileList
+getFilesUnsafe self = liftDOM ((((js_getFiles (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/files MDN HTMLInputElement.files documentation>
+getFilesUnchecked :: (MonadDOM m) => HTMLInputElement -> m FileList
+getFilesUnchecked self = liftDOM ((pFromJSVal <$> (js_getFiles (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formAction\"] = $2; })"
+        js_setFormAction :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formAction MDN HTMLInputElement.formAction documentation>
+setFormAction :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormAction self val = liftDOM (void ((js_setFormAction (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formAction\"]; })"
+        js_getFormAction :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formAction MDN HTMLInputElement.formAction documentation>
+getFormAction :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormAction self = liftDOM ((fromJSString <$> (js_getFormAction (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formEnctype\"] = $2; })"
+        js_setFormEnctype :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formEnctype MDN HTMLInputElement.formEnctype documentation>
+setFormEnctype :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormEnctype self val = liftDOM (void ((js_setFormEnctype (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formEnctype\"]; })"
+        js_getFormEnctype :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formEnctype MDN HTMLInputElement.formEnctype documentation>
+getFormEnctype :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormEnctype self = liftDOM ((fromJSString <$> (js_getFormEnctype (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formMethod\"] = $2; })"
+        js_setFormMethod :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formMethod MDN HTMLInputElement.formMethod documentation>
+setFormMethod :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormMethod self val = liftDOM (void ((js_setFormMethod (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formMethod\"]; })"
+        js_getFormMethod :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formMethod MDN HTMLInputElement.formMethod documentation>
+getFormMethod :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormMethod self = liftDOM ((fromJSString <$> (js_getFormMethod (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formNoValidate\"] = $2; })"
+        js_setFormNoValidate :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formNoValidate MDN HTMLInputElement.formNoValidate documentation>
+setFormNoValidate :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setFormNoValidate self val = liftDOM (void ((js_setFormNoValidate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formNoValidate\"]; })"
+        js_getFormNoValidate :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formNoValidate MDN HTMLInputElement.formNoValidate documentation>
+getFormNoValidate :: (MonadDOM m) => HTMLInputElement -> m Bool
+getFormNoValidate self = liftDOM ((js_getFormNoValidate (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formTarget\"] = $2; })"
+        js_setFormTarget :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formTarget MDN HTMLInputElement.formTarget documentation>
+setFormTarget :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormTarget self val = liftDOM (void ((js_setFormTarget (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formTarget\"]; })"
+        js_getFormTarget :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formTarget MDN HTMLInputElement.formTarget documentation>
+getFormTarget :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormTarget self = liftDOM ((fromJSString <$> (js_getFormTarget (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLInputElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/height MDN HTMLInputElement.height documentation>
+setHeight :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLInputElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/height MDN HTMLInputElement.height documentation>
+getHeight :: (MonadDOM m) => HTMLInputElement -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"indeterminate\"] = $2; })"
+        js_setIndeterminate :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/indeterminate MDN HTMLInputElement.indeterminate documentation>
+setIndeterminate :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setIndeterminate self val = liftDOM (void ((js_setIndeterminate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"indeterminate\"]; })"
+        js_getIndeterminate :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/indeterminate MDN HTMLInputElement.indeterminate documentation>
+getIndeterminate :: (MonadDOM m) => HTMLInputElement -> m Bool
+getIndeterminate self = liftDOM ((js_getIndeterminate (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"list\"]; })"
+        js_getList :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/list MDN HTMLInputElement.list documentation>
+getList :: (MonadDOM m) => HTMLInputElement -> m (Maybe HTMLDataListElement)
+getList self = liftDOM (((js_getList (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/list MDN HTMLInputElement.list documentation>
+getListUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m HTMLDataListElement
+getListUnsafe self = liftDOM ((((js_getList (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/list MDN HTMLInputElement.list documentation>
+getListUnchecked :: (MonadDOM m) => HTMLInputElement -> m HTMLDataListElement
+getListUnchecked self = liftDOM ((pFromJSVal <$> (js_getList (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"max\"] = $2; })"
+        js_setMax :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/max MDN HTMLInputElement.max documentation>
+setMax :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setMax self val = liftDOM (void ((js_setMax (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })"
+        js_getMax :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/max MDN HTMLInputElement.max documentation>
+getMax :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getMax self = liftDOM ((fromJSString <$> (js_getMax (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxLength\"] = $2; })"
+        js_setMaxLength :: HTMLInputElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/maxLength MDN HTMLInputElement.maxLength documentation>
+setMaxLength :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
+setMaxLength self val = liftDOM (void ((js_setMaxLength (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxLength\"]; })"
+        js_getMaxLength :: HTMLInputElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/maxLength MDN HTMLInputElement.maxLength documentation>
+getMaxLength :: (MonadDOM m) => HTMLInputElement -> m Int
+getMaxLength self = liftDOM ((js_getMaxLength (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"min\"] = $2; })"
+        js_setMin :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/min MDN HTMLInputElement.min documentation>
+setMin :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setMin self val = liftDOM (void ((js_setMin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })"
+        js_getMin :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/min MDN HTMLInputElement.min documentation>
+getMin :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getMin self = liftDOM ((fromJSString <$> (js_getMin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minLength\"] = $2; })"
+        js_setMinLength :: HTMLInputElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/minLength MDN HTMLInputElement.minLength documentation>
+setMinLength :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
+setMinLength self val = liftDOM (void ((js_setMinLength (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minLength\"]; })"
+        js_getMinLength :: HTMLInputElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/minLength MDN HTMLInputElement.minLength documentation>
+getMinLength :: (MonadDOM m) => HTMLInputElement -> m Int
+getMinLength self = liftDOM ((js_getMinLength (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"multiple\"] = $2; })"
+        js_setMultiple :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/multiple MDN HTMLInputElement.multiple documentation>
+setMultiple :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setMultiple self val = liftDOM (void ((js_setMultiple (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"multiple\"]; })"
+        js_getMultiple :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/multiple MDN HTMLInputElement.multiple documentation>
+getMultiple :: (MonadDOM m) => HTMLInputElement -> m Bool
+getMultiple self = liftDOM ((js_getMultiple (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/name MDN HTMLInputElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/name MDN HTMLInputElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pattern\"] = $2; })"
+        js_setPattern :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/pattern MDN HTMLInputElement.pattern documentation>
+setPattern :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setPattern self val = liftDOM (void ((js_setPattern (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pattern\"]; })"
+        js_getPattern :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/pattern MDN HTMLInputElement.pattern documentation>
+getPattern :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getPattern self = liftDOM ((fromJSString <$> (js_getPattern (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"placeholder\"] = $2; })"
+        js_setPlaceholder :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/placeholder MDN HTMLInputElement.placeholder documentation>
+setPlaceholder :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setPlaceholder self val = liftDOM (void ((js_setPlaceholder (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"placeholder\"]; })"
+        js_getPlaceholder :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/placeholder MDN HTMLInputElement.placeholder documentation>
+getPlaceholder :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getPlaceholder self = liftDOM ((fromJSString <$> (js_getPlaceholder (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"readOnly\"] = $2; })"
+        js_setReadOnly :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/readOnly MDN HTMLInputElement.readOnly documentation>
+setReadOnly :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setReadOnly self val = liftDOM (void ((js_setReadOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readOnly\"]; })"
+        js_getReadOnly :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/readOnly MDN HTMLInputElement.readOnly documentation>
+getReadOnly :: (MonadDOM m) => HTMLInputElement -> m Bool
+getReadOnly self = liftDOM ((js_getReadOnly (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"required\"] = $2; })"
+        js_setRequired :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/required MDN HTMLInputElement.required documentation>
+setRequired :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setRequired self val = liftDOM (void ((js_setRequired (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"required\"]; })"
+        js_getRequired :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/required MDN HTMLInputElement.required documentation>
+getRequired :: (MonadDOM m) => HTMLInputElement -> m Bool
+getRequired self = liftDOM ((js_getRequired (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: HTMLInputElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/size MDN HTMLInputElement.size documentation>
+setSize :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
+setSize self val = liftDOM (void ((js_setSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: HTMLInputElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/size MDN HTMLInputElement.size documentation>
+getSize :: (MonadDOM m) => HTMLInputElement -> m Word
+getSize self = liftDOM ((js_getSize (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/src MDN HTMLInputElement.src documentation>
+setSrc :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/src MDN HTMLInputElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"step\"] = $2; })"
+        js_setStep :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/step MDN HTMLInputElement.step documentation>
+setStep :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setStep self val = liftDOM (void ((js_setStep (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"step\"]; })"
+        js_getStep :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/step MDN HTMLInputElement.step documentation>
+getStep :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getStep self = liftDOM ((fromJSString <$> (js_getStep (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/type MDN HTMLInputElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/type MDN HTMLInputElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
+        js_setDefaultValue :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/defaultValue MDN HTMLInputElement.defaultValue documentation>
+setDefaultValue :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setDefaultValue self val = liftDOM (void ((js_setDefaultValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
+        js_getDefaultValue :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/defaultValue MDN HTMLInputElement.defaultValue documentation>
+getDefaultValue :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getDefaultValue self = liftDOM ((fromJSString <$> (js_getDefaultValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLInputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/value MDN HTMLInputElement.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/value MDN HTMLInputElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"valueAsDate\"] = $2; })"
+        js_setValueAsDate :: HTMLInputElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsDate MDN HTMLInputElement.valueAsDate documentation>
+setValueAsDate :: (MonadDOM m) => HTMLInputElement -> Maybe GObject -> m ()
+setValueAsDate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setValueAsDate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"valueAsDate\"]; })"
+        js_getValueAsDate :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsDate MDN HTMLInputElement.valueAsDate documentation>
+getValueAsDate :: (MonadDOM m) => HTMLInputElement -> m (Maybe GObject)
+getValueAsDate self = liftDOM (((js_getValueAsDate (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsDate MDN HTMLInputElement.valueAsDate documentation>
+getValueAsDateUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m GObject
+getValueAsDateUnsafe self = liftDOM ((((js_getValueAsDate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsDate MDN HTMLInputElement.valueAsDate documentation>
+getValueAsDateUnchecked :: (MonadDOM m) => HTMLInputElement -> m GObject
+getValueAsDateUnchecked self = liftDOM ((pFromJSVal <$> (js_getValueAsDate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"valueAsNumber\"] = $2; })"
+        js_setValueAsNumber :: HTMLInputElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsNumber MDN HTMLInputElement.valueAsNumber documentation>
+setValueAsNumber :: (MonadDOM m) => HTMLInputElement -> Double -> m ()
+setValueAsNumber self val = liftDOM (void ((js_setValueAsNumber (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"valueAsNumber\"]; })"
+        js_getValueAsNumber :: HTMLInputElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsNumber MDN HTMLInputElement.valueAsNumber documentation>
+getValueAsNumber :: (MonadDOM m) => HTMLInputElement -> m Double
+getValueAsNumber self = liftDOM ((js_getValueAsNumber (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLInputElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/width MDN HTMLInputElement.width documentation>
+setWidth :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLInputElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/width MDN HTMLInputElement.width documentation>
+getWidth :: (MonadDOM m) => HTMLInputElement -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
+        js_getWillValidate :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/willValidate MDN HTMLInputElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLInputElement -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: HTMLInputElement -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/validity MDN HTMLInputElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLInputElement -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLInputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/validationMessage MDN HTMLInputElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/labels MDN HTMLInputElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLInputElement -> m (Maybe NodeList)
+getLabels self = liftDOM (((js_getLabels (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/labels MDN HTMLInputElement.labels documentation>
+getLabelsUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m NodeList
+getLabelsUnsafe self = liftDOM ((((js_getLabels (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/labels MDN HTMLInputElement.labels documentation>
+getLabelsUnchecked :: (MonadDOM m) => HTMLInputElement -> m NodeList
+getLabelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getLabels (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"selectionStart\"] = $2; })"
+        js_setSelectionStart :: HTMLInputElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionStart MDN HTMLInputElement.selectionStart documentation>
+setSelectionStart :: (MonadDOM m) => HTMLInputElement -> Maybe Word -> m ()
+setSelectionStart self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSelectionStart (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selectionStart\"]; })"
+        js_getSelectionStart :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionStart MDN HTMLInputElement.selectionStart documentation>
+getSelectionStart :: (MonadDOM m) => HTMLInputElement -> m (Maybe Word)
+getSelectionStart self = liftDOM (((js_getSelectionStart (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionStart MDN HTMLInputElement.selectionStart documentation>
+getSelectionStartUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m Word
+getSelectionStartUnsafe self = liftDOM ((((js_getSelectionStart (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionStart MDN HTMLInputElement.selectionStart documentation>
+getSelectionStartUnchecked :: (MonadDOM m) => HTMLInputElement -> m Word
+getSelectionStartUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelectionStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"selectionEnd\"] = $2; })"
+        js_setSelectionEnd :: HTMLInputElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionEnd MDN HTMLInputElement.selectionEnd documentation>
+setSelectionEnd :: (MonadDOM m) => HTMLInputElement -> Maybe Word -> m ()
+setSelectionEnd self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSelectionEnd (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selectionEnd\"]; })"
+        js_getSelectionEnd :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionEnd MDN HTMLInputElement.selectionEnd documentation>
+getSelectionEnd :: (MonadDOM m) => HTMLInputElement -> m (Maybe Word)
+getSelectionEnd self = liftDOM (((js_getSelectionEnd (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionEnd MDN HTMLInputElement.selectionEnd documentation>
+getSelectionEndUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m Word
+getSelectionEndUnsafe self = liftDOM ((((js_getSelectionEnd (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionEnd MDN HTMLInputElement.selectionEnd documentation>
+getSelectionEndUnchecked :: (MonadDOM m) => HTMLInputElement -> m Word
+getSelectionEndUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelectionEnd (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"selectionDirection\"] = $2; })"
+        js_setSelectionDirection :: HTMLInputElement -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionDirection MDN HTMLInputElement.selectionDirection documentation>
+setSelectionDirection :: (MonadDOM m, ToJSString val) => HTMLInputElement -> Maybe val -> m ()
+setSelectionDirection self val = liftDOM (void ((js_setSelectionDirection (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selectionDirection\"]; })"
+        js_getSelectionDirection :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionDirection MDN HTMLInputElement.selectionDirection documentation>
+getSelectionDirection :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m (Maybe result)
+getSelectionDirection self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSelectionDirection (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionDirection MDN HTMLInputElement.selectionDirection documentation>
+getSelectionDirectionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HTMLInputElement -> m result
+getSelectionDirectionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSelectionDirection (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionDirection MDN HTMLInputElement.selectionDirection documentation>
+getSelectionDirectionUnchecked :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getSelectionDirectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelectionDirection (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"webkitdirectory\"] = $2; })"
+        js_setWebkitdirectory :: HTMLInputElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/webkitdirectory MDN HTMLInputElement.webkitdirectory documentation>
+setWebkitdirectory :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setWebkitdirectory self val = liftDOM (void ((js_setWebkitdirectory (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"webkitdirectory\"]; })"
+        js_getWebkitdirectory :: HTMLInputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/webkitdirectory MDN HTMLInputElement.webkitdirectory documentation>
+getWebkitdirectory :: (MonadDOM m) => HTMLInputElement -> m Bool
+getWebkitdirectory self = liftDOM ((js_getWebkitdirectory (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"webkitEntries\"]; })"
+        js_getWebkitEntries :: HTMLInputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/webkitEntries MDN HTMLInputElement.webkitEntries documentation>
+getWebkitEntries :: (MonadDOM m) => HTMLInputElement -> m [FileSystemEntry]
+getWebkitEntries self = liftDOM (((js_getWebkitEntries (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLInputElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-input-align HTMLInputElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLInputElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-input-align HTMLInputElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"useMap\"] = $2; })"
+        js_setUseMap :: HTMLInputElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-input-usemap HTMLInputElement.useMap specification>
+setUseMap :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
+setUseMap self val = liftDOM (void ((js_setUseMap (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })"
+        js_getUseMap :: HTMLInputElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-input-usemap HTMLInputElement.useMap specification>
+getUseMap :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getUseMap self = liftDOM ((fromJSString <$> (js_getUseMap (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs
+++ /dev/null
@@ -1,192 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement
-       (js_checkValidity, checkValidity, checkValidity_,
-        js_reportValidity, reportValidity, reportValidity_,
-        js_setCustomValidity, setCustomValidity, js_setAutofocus,
-        setAutofocus, js_getAutofocus, getAutofocus, js_setChallenge,
-        setChallenge, js_getChallenge, getChallenge, js_setDisabled,
-        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
-        js_setKeytype, setKeytype, js_getKeytype, getKeytype, js_setName,
-        setName, js_getName, getName, js_getType, getType,
-        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
-        js_getValidationMessage, getValidationMessage, js_getLabels,
-        getLabels, HTMLKeygenElement(..), gTypeHTMLKeygenElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLKeygenElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLKeygenElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLKeygenElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLKeygenElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.reportValidity Mozilla HTMLKeygenElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLKeygenElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.reportValidity Mozilla HTMLKeygenElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLKeygenElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
-        js_setCustomValidity :: HTMLKeygenElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.setCustomValidity Mozilla HTMLKeygenElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) => HTMLKeygenElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
-        js_setAutofocus :: HTMLKeygenElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
-setAutofocus :: (MonadIO m) => HTMLKeygenElement -> Bool -> m ()
-setAutofocus self val = liftIO (js_setAutofocus self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
-        js_getAutofocus :: HTMLKeygenElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
-getAutofocus :: (MonadIO m) => HTMLKeygenElement -> m Bool
-getAutofocus self = liftIO (js_getAutofocus self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"challenge\"] = $2; })"
-        js_setChallenge :: HTMLKeygenElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
-setChallenge ::
-             (MonadIO m, ToJSString val) => HTMLKeygenElement -> val -> m ()
-setChallenge self val
-  = liftIO (js_setChallenge self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"challenge\"]; })"
-        js_getChallenge :: HTMLKeygenElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
-getChallenge ::
-             (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
-getChallenge self
-  = liftIO (fromJSString <$> (js_getChallenge self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
-        js_setDisabled :: HTMLKeygenElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLKeygenElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
-        js_getDisabled :: HTMLKeygenElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLKeygenElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLKeygenElement -> IO HTMLFormElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.form Mozilla HTMLKeygenElement.form documentation> 
-getForm :: (MonadIO m) => HTMLKeygenElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"keytype\"] = $2; })"
-        js_setKeytype :: HTMLKeygenElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
-setKeytype ::
-           (MonadIO m, ToJSString val) => HTMLKeygenElement -> val -> m ()
-setKeytype self val = liftIO (js_setKeytype self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keytype\"]; })" js_getKeytype ::
-        HTMLKeygenElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
-getKeytype ::
-           (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
-getKeytype self = liftIO (fromJSString <$> (js_getKeytype self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLKeygenElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLKeygenElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLKeygenElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLKeygenElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.type Mozilla HTMLKeygenElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
-        js_getWillValidate :: HTMLKeygenElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.willValidate Mozilla HTMLKeygenElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLKeygenElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLKeygenElement -> IO ValidityState
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validity Mozilla HTMLKeygenElement.validity documentation> 
-getValidity :: (MonadIO m) => HTMLKeygenElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
-        js_getValidationMessage :: HTMLKeygenElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validationMessage Mozilla HTMLKeygenElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLKeygenElement -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.labels Mozilla HTMLKeygenElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLKeygenElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
@@ -1,57 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLLIElement
-       (js_setType, setType, js_getType, getType, js_setValue, setValue,
-        js_getValue, getValue, HTMLLIElement(..), gTypeHTMLLIElement)
+       (js_setValue, js_getValue, js_setType, js_getType, setValue, getValue, setType, getType, HTMLLIElement(..), gTypeHTMLLIElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLLIElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLLIElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLLIElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLLIElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLIElement/value MDN HTMLLIElement.value documentation>
+setValue :: (MonadDOM m) => HTMLLIElement -> Int -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLLIElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLLIElement -> Int -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLLIElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLIElement/value MDN HTMLLIElement.value documentation>
+getValue :: (MonadDOM m) => HTMLLIElement -> m Int
+getValue self = liftDOM ((js_getValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
-setValue :: (MonadIO m) => HTMLLIElement -> Int -> m ()
-setValue self val = liftIO (js_setValue self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLLIElement -> IO Int
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLLIElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-li-type HTMLLIElement.type specification>
+setType :: (MonadDOM m, ToJSString val) => HTMLLIElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
-getValue :: (MonadIO m) => HTMLLIElement -> m Int
-getValue self = liftIO (js_getValue self)
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLLIElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-li-type HTMLLIElement.type specification>
+getType :: (MonadDOM m, FromJSString result) => HTMLLIElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
@@ -1,58 +1,57 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
-       (js_getForm, getForm, js_setHtmlFor, setHtmlFor, js_getHtmlFor,
-        getHtmlFor, js_getControl, getControl, HTMLLabelElement(..),
-        gTypeHTMLLabelElement)
+       (js_getForm, js_setHtmlFor, js_getHtmlFor, js_getControl, getForm, getFormUnsafe, getFormUnchecked, setHtmlFor, getHtmlFor, getControl, getControlUnsafe, getControlUnchecked, HTMLLabelElement(..), gTypeHTMLLabelElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLLabelElement -> IO HTMLFormElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
-getForm :: (MonadIO m) => HTMLLabelElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"htmlFor\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLLabelElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/form MDN HTMLLabelElement.form documentation>
+getForm :: (MonadDOM m) => HTMLLabelElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/form MDN HTMLLabelElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLLabelElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/form MDN HTMLLabelElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLLabelElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"htmlFor\"] = $2; })"
         js_setHtmlFor :: HTMLLabelElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/htmlFor MDN HTMLLabelElement.htmlFor documentation>
+setHtmlFor :: (MonadDOM m, ToJSString val) => HTMLLabelElement -> val -> m ()
+setHtmlFor self val = liftDOM (void ((js_setHtmlFor (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
-setHtmlFor ::
-           (MonadIO m, ToJSString val) => HTMLLabelElement -> val -> m ()
-setHtmlFor self val = liftIO (js_setHtmlFor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })" js_getHtmlFor ::
-        HTMLLabelElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })"
+        js_getHtmlFor :: HTMLLabelElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/htmlFor MDN HTMLLabelElement.htmlFor documentation>
+getHtmlFor :: (MonadDOM m, FromJSString result) => HTMLLabelElement -> m result
+getHtmlFor self = liftDOM ((fromJSString <$> (js_getHtmlFor (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
-getHtmlFor ::
-           (MonadIO m, FromJSString result) => HTMLLabelElement -> m result
-getHtmlFor self = liftIO (fromJSString <$> (js_getHtmlFor self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"control\"]; })" js_getControl ::
-        HTMLLabelElement -> IO HTMLElement
+foreign import javascript unsafe "(($1) => { return $1[\"control\"]; })"
+        js_getControl :: HTMLLabelElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/control MDN HTMLLabelElement.control documentation>
+getControl :: (MonadDOM m) => HTMLLabelElement -> m (Maybe HTMLElement)
+getControl self = liftDOM (((js_getControl (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.control Mozilla HTMLLabelElement.control documentation> 
-getControl :: (MonadIO m) => HTMLLabelElement -> m HTMLElement
-getControl self = liftIO (js_getControl self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/control MDN HTMLLabelElement.control documentation>
+getControlUnsafe :: (MonadDOM m, HasCallStack) => HTMLLabelElement -> m HTMLElement
+getControlUnsafe self = liftDOM ((((js_getControl (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/control MDN HTMLLabelElement.control documentation>
+getControlUnchecked :: (MonadDOM m) => HTMLLabelElement -> m HTMLElement
+getControlUnchecked self = liftDOM ((pFromJSVal <$> (js_getControl (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
@@ -1,50 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
-       (js_getForm, getForm, js_setAlign, setAlign, js_getAlign, getAlign,
-        HTMLLegendElement(..), gTypeHTMLLegendElement)
+       (js_getForm, js_setAlign, js_getAlign, getForm, getFormUnsafe, getFormUnchecked, setAlign, getAlign, HTMLLegendElement(..), gTypeHTMLLegendElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLLegendElement -> IO HTMLFormElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
-getForm :: (MonadIO m) => HTMLLegendElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLLegendElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLLegendElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLegendElement/form MDN HTMLLegendElement.form documentation>
+getForm :: (MonadDOM m) => HTMLLegendElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.align Mozilla HTMLLegendElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLLegendElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLLegendElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLegendElement/form MDN HTMLLegendElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLLegendElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.align Mozilla HTMLLegendElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLLegendElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLegendElement/form MDN HTMLLegendElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLLegendElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLLegendElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-legend-align HTMLLegendElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLLegendElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLLegendElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-legend-align HTMLLegendElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLLegendElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
@@ -1,288 +1,235 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLLinkElement
-       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
-        js_setCharset, setCharset, js_getCharset, getCharset, js_setHref,
-        setHref, js_getHref, getHref, js_setHreflang, setHreflang,
-        js_getHreflang, getHreflang, js_setMedia, setMedia, js_getMedia,
-        getMedia, js_setRel, setRel, js_getRel, getRel, js_setRev, setRev,
-        js_getRev, getRev, js_getSizes, getSizes, js_setTarget, setTarget,
-        js_getTarget, getTarget, js_setType, setType, js_getType, getType,
-        js_setAs, setAs, js_getAs, getAs, js_setCrossOrigin,
-        setCrossOrigin, js_getCrossOrigin, getCrossOrigin,
-        getCrossOriginUnsafe, getCrossOriginUnchecked, js_getSheet,
-        getSheet, js_getRelList, getRelList, js_setNonce, setNonce,
-        js_getNonce, getNonce, js_setIntegrity, setIntegrity,
-        js_getIntegrity, getIntegrity, HTMLLinkElement(..),
-        gTypeHTMLLinkElement)
+       (js_setHref, js_getHref, js_setCrossOrigin, js_getCrossOrigin, js_setRel, js_getRel, js_setAs, js_getAs, js_getRelList, js_setMedia, js_getMedia, js_setIntegrity, js_getIntegrity, js_setHreflang, js_getHreflang, js_setType, js_getType, js_getSizes, js_setImageSrcset, js_getImageSrcset, js_setImageSizes, js_getImageSizes, js_setReferrerPolicy, js_getReferrerPolicy, js_getBlocking, js_setDisabled, js_getDisabled, js_setFetchPriority, js_getFetchPriority, js_setCharset, js_getCharset, js_setRev, js_getRev, js_setTarget, js_getTarget, setHref, getHref, setCrossOrigin, getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked, setRel, getRel, setAs, getAs, getRelList, setMedia, getMedia, setIntegrity, getIntegrity, setHreflang, getHreflang, setType, getType, getSizes, setImageSrcset, getImageSrcset, setImageSizes, getImageSizes, setReferrerPolicy, getReferrerPolicy, getBlocking, setDisabled, getDisabled, setFetchPriority, getFetchPriority, setCharset, getCharset, setRev, getRev, setTarget, getTarget, HTMLLinkElement(..), gTypeHTMLLinkElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
-        js_setDisabled :: HTMLLinkElement -> Bool -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLLinkElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
-        js_getDisabled :: HTMLLinkElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"href\"] = $2; })"
+        js_setHref :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/href MDN HTMLLinkElement.href documentation>
+setHref :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setHref self val = liftDOM (void ((js_setHref (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLLinkElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"charset\"] = $2; })"
-        js_setCharset :: HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/href MDN HTMLLinkElement.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getHref self = liftDOM ((fromJSString <$> (js_getHref (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
-setCharset ::
-           (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setCharset self val = liftIO (js_setCharset self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: HTMLLinkElement -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/crossOrigin MDN HTMLLinkElement.crossOrigin documentation>
+setCrossOrigin :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> Maybe val -> m ()
+setCrossOrigin self val = liftDOM (void ((js_setCrossOrigin (self) (toMaybeJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
-getCharset ::
-           (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getCharset self = liftIO (fromJSString <$> (js_getCharset self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
-        HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLLinkElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/crossOrigin MDN HTMLLinkElement.crossOrigin documentation>
+getCrossOrigin :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m (Maybe result)
+getCrossOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.href Mozilla HTMLLinkElement.href documentation> 
-setHref ::
-        (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setHref self val = liftIO (js_setHref self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/crossOrigin MDN HTMLLinkElement.crossOrigin documentation>
+getCrossOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HTMLLinkElement -> m result
+getCrossOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.href Mozilla HTMLLinkElement.href documentation> 
-getHref ::
-        (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getHref self = liftIO (fromJSString <$> (js_getHref self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hreflang\"] = $2; })"
-        js_setHreflang :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/crossOrigin MDN HTMLLinkElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getCrossOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getCrossOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
-setHreflang ::
-            (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setHreflang self val
-  = liftIO (js_setHreflang self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hreflang\"]; })" js_getHreflang
-        :: HTMLLinkElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"rel\"] = $2; })"
+        js_setRel :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/rel MDN HTMLLinkElement.rel documentation>
+setRel :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setRel self val = liftDOM (void ((js_setRel (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
-getHreflang ::
-            (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getHreflang self = liftIO (fromJSString <$> (js_getHreflang self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
-        :: HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })"
+        js_getRel :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/rel MDN HTMLLinkElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getRel self = liftDOM ((fromJSString <$> (js_getRel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
-setMedia ::
-         (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setMedia self val = liftIO (js_setMedia self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"as\"] = $2; })"
+        js_setAs :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/as MDN HTMLLinkElement.as documentation>
+setAs :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setAs self val = liftDOM (void ((js_setAs (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
-getMedia ::
-         (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getMedia self = liftIO (fromJSString <$> (js_getMedia self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rel\"] = $2; })" js_setRel ::
-        HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"as\"]; })"
+        js_getAs :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/as MDN HTMLLinkElement.as documentation>
+getAs :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getAs self = liftDOM ((fromJSString <$> (js_getAs (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
-setRel ::
-       (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setRel self val = liftIO (js_setRel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })" js_getRel ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })"
+        js_getRelList :: HTMLLinkElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/relList MDN HTMLLinkElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLLinkElement -> m DOMTokenList
+getRelList self = liftDOM ((js_getRelList (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
-getRel ::
-       (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getRel self = liftIO (fromJSString <$> (js_getRel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rev\"] = $2; })" js_setRev ::
-        HTMLLinkElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"media\"] = $2; })"
+        js_setMedia :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/media MDN HTMLLinkElement.media documentation>
+setMedia :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setMedia self val = liftDOM (void ((js_setMedia (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
-setRev ::
-       (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setRev self val = liftIO (js_setRev self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rev\"]; })" js_getRev ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/media MDN HTMLLinkElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getMedia self = liftDOM ((fromJSString <$> (js_getMedia (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
-getRev ::
-       (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getRev self = liftIO (fromJSString <$> (js_getRev self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })" js_getSizes ::
-        HTMLLinkElement -> IO DOMTokenList
+foreign import javascript safe "(($1, $2) => { $1[\"integrity\"] = $2; })"
+        js_setIntegrity :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/integrity MDN HTMLLinkElement.integrity documentation>
+setIntegrity :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setIntegrity self val = liftDOM (void ((js_setIntegrity (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
-getSizes :: (MonadIO m) => HTMLLinkElement -> m DOMTokenList
-getSizes self = liftIO (js_getSizes self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
-        js_setTarget :: HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
+        js_getIntegrity :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/integrity MDN HTMLLinkElement.integrity documentation>
+getIntegrity :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getIntegrity self = liftDOM ((fromJSString <$> (js_getIntegrity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
-setTarget ::
-          (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setTarget self val = liftIO (js_setTarget self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"hreflang\"] = $2; })"
+        js_setHreflang :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/hreflang MDN HTMLLinkElement.hreflang documentation>
+setHreflang :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setHreflang self val = liftDOM (void ((js_setHreflang (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
-getTarget ::
-          (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getTarget self = liftIO (fromJSString <$> (js_getTarget self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"hreflang\"]; })"
+        js_getHreflang :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/hreflang MDN HTMLLinkElement.hreflang documentation>
+getHreflang :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getHreflang self = liftDOM ((fromJSString <$> (js_getHreflang (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/type MDN HTMLLinkElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"as\"] = $2; })" js_setAs ::
-        HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/type MDN HTMLLinkElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.as Mozilla HTMLLinkElement.as documentation> 
-setAs ::
-      (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setAs self val = liftIO (js_setAs self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"as\"]; })" js_getAs ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })"
+        js_getSizes :: HTMLLinkElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/sizes MDN HTMLLinkElement.sizes documentation>
+getSizes :: (MonadDOM m) => HTMLLinkElement -> m DOMTokenList
+getSizes self = liftDOM ((js_getSizes (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.as Mozilla HTMLLinkElement.as documentation> 
-getAs ::
-      (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getAs self = liftIO (fromJSString <$> (js_getAs self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
-        js_setCrossOrigin :: HTMLLinkElement -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"imageSrcset\"] = $2; })"
+        js_setImageSrcset :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/imageSrcset MDN HTMLLinkElement.imageSrcset documentation>
+setImageSrcset :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setImageSrcset self val = liftDOM (void ((js_setImageSrcset (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadIO m, ToJSString val) => HTMLLinkElement -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftIO (js_setCrossOrigin self (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
-        js_getCrossOrigin :: HTMLLinkElement -> IO (Nullable JSString)
+foreign import javascript unsafe "(($1) => { return $1[\"imageSrcset\"]; })"
+        js_getImageSrcset :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/imageSrcset MDN HTMLLinkElement.imageSrcset documentation>
+getImageSrcset :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getImageSrcset self = liftDOM ((fromJSString <$> (js_getImageSrcset (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadIO m, FromJSString result) =>
-                 HTMLLinkElement -> m (Maybe result)
-getCrossOrigin self
-  = liftIO (fromMaybeJSString <$> (js_getCrossOrigin self))
+foreign import javascript safe "(($1, $2) => { $1[\"imageSizes\"] = $2; })"
+        js_setImageSizes :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/imageSizes MDN HTMLLinkElement.imageSizes documentation>
+setImageSizes :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setImageSizes self val = liftDOM (void ((js_setImageSizes (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadIO m, HasCallStack, FromJSString result) =>
-                       HTMLLinkElement -> m result
-getCrossOriginUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getCrossOrigin self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"imageSizes\"]; })"
+        js_getImageSizes :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/imageSizes MDN HTMLLinkElement.imageSizes documentation>
+getImageSizes :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getImageSizes self = liftDOM ((fromJSString <$> (js_getImageSizes (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getCrossOriginUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getCrossOrigin self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sheet\"]; })" js_getSheet ::
-        HTMLLinkElement -> IO StyleSheet
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/referrerPolicy MDN HTMLLinkElement.referrerPolicy documentation>
+setReferrerPolicy :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setReferrerPolicy self val = liftDOM (void ((js_setReferrerPolicy (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sheet Mozilla HTMLLinkElement.sheet documentation> 
-getSheet :: (MonadIO m) => HTMLLinkElement -> m StyleSheet
-getSheet self = liftIO (js_getSheet self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })" js_getRelList ::
-        HTMLLinkElement -> IO DOMTokenList
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/referrerPolicy MDN HTMLLinkElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getReferrerPolicy self = liftDOM ((fromJSString <$> (js_getReferrerPolicy (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.relList Mozilla HTMLLinkElement.relList documentation> 
-getRelList :: (MonadIO m) => HTMLLinkElement -> m DOMTokenList
-getRelList self = liftIO (js_getRelList self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"nonce\"] = $2; })" js_setNonce
-        :: HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"blocking\"]; })"
+        js_getBlocking :: HTMLLinkElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/blocking MDN HTMLLinkElement.blocking documentation>
+getBlocking :: (MonadDOM m) => HTMLLinkElement -> m DOMTokenList
+getBlocking self = liftDOM ((js_getBlocking (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.nonce Mozilla HTMLLinkElement.nonce documentation> 
-setNonce ::
-         (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setNonce self val = liftIO (js_setNonce self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nonce\"]; })" js_getNonce ::
-        HTMLLinkElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLLinkElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/disabled MDN HTMLLinkElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLLinkElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.nonce Mozilla HTMLLinkElement.nonce documentation> 
-getNonce ::
-         (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getNonce self = liftIO (fromJSString <$> (js_getNonce self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"integrity\"] = $2; })"
-        js_setIntegrity :: HTMLLinkElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
+        js_getDisabled :: HTMLLinkElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/disabled MDN HTMLLinkElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLLinkElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.integrity Mozilla HTMLLinkElement.integrity documentation> 
-setIntegrity ::
-             (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setIntegrity self val
-  = liftIO (js_setIntegrity self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
-        js_getIntegrity :: HTMLLinkElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"fetchPriority\"] = $2; })"
+        js_setFetchPriority :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/fetchPriority MDN HTMLLinkElement.fetchPriority documentation>
+setFetchPriority :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setFetchPriority self val = liftDOM (void ((js_setFetchPriority (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.integrity Mozilla HTMLLinkElement.integrity documentation> 
-getIntegrity ::
-             (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
-getIntegrity self
-  = liftIO (fromJSString <$> (js_getIntegrity self))
+foreign import javascript unsafe "(($1) => { return $1[\"fetchPriority\"]; })"
+        js_getFetchPriority :: HTMLLinkElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/fetchPriority MDN HTMLLinkElement.fetchPriority documentation>
+getFetchPriority :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getFetchPriority self = liftDOM ((fromJSString <$> (js_getFetchPriority (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"charset\"] = $2; })"
+        js_setCharset :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-link-charset HTMLLinkElement.charset specification>
+setCharset :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setCharset self val = liftDOM (void ((js_setCharset (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })"
+        js_getCharset :: HTMLLinkElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-link-charset HTMLLinkElement.charset specification>
+getCharset :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getCharset self = liftDOM ((fromJSString <$> (js_getCharset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rev\"] = $2; })"
+        js_setRev :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-link-rev HTMLLinkElement.rev specification>
+setRev :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setRev self val = liftDOM (void ((js_setRev (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rev\"]; })"
+        js_getRev :: HTMLLinkElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-link-rev HTMLLinkElement.rev specification>
+getRev :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getRev self = liftDOM ((fromJSString <$> (js_getRev (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLLinkElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-link-target HTMLLinkElement.target specification>
+setTarget :: (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setTarget self val = liftDOM (void ((js_setTarget (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: HTMLLinkElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-link-target HTMLLinkElement.target specification>
+getTarget :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getTarget self = liftDOM ((fromJSString <$> (js_getTarget (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
@@ -1,50 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLMapElement
-       (js_getAreas, getAreas, js_setName, setName, js_getName, getName,
-        HTMLMapElement(..), gTypeHTMLMapElement)
+       (js_setName, js_getName, js_getAreas, setName, getName, getAreas, HTMLMapElement(..), gTypeHTMLMapElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"areas\"]; })" js_getAreas ::
-        HTMLMapElement -> IO HTMLCollection
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
-getAreas :: (MonadIO m) => HTMLMapElement -> m HTMLCollection
-getAreas self = liftIO (js_getAreas self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLMapElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLMapElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMapElement/name MDN HTMLMapElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLMapElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLMapElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLMapElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLMapElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMapElement/name MDN HTMLMapElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLMapElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLMapElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
+foreign import javascript unsafe "(($1) => { return $1[\"areas\"]; })"
+        js_getAreas :: HTMLMapElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMapElement/areas MDN HTMLMapElement.areas documentation>
+getAreas :: (MonadDOM m) => HTMLMapElement -> m HTMLCollection
+getAreas self = liftDOM ((js_getAreas (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
@@ -1,219 +1,161 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement
-       (js_start, start, js_stop, stop, js_setBehavior, setBehavior,
-        js_getBehavior, getBehavior, js_setBgColor, setBgColor,
-        js_getBgColor, getBgColor, js_setDirection, setDirection,
-        js_getDirection, getDirection, js_setHeight, setHeight,
-        js_getHeight, getHeight, js_setHspace, setHspace, js_getHspace,
-        getHspace, js_setLoop, setLoop, js_getLoop, getLoop,
-        js_setScrollAmount, setScrollAmount, js_getScrollAmount,
-        getScrollAmount, js_setScrollDelay, setScrollDelay,
-        js_getScrollDelay, getScrollDelay, js_setTrueSpeed, setTrueSpeed,
-        js_getTrueSpeed, getTrueSpeed, js_setVspace, setVspace,
-        js_getVspace, getVspace, js_setWidth, setWidth, js_getWidth,
-        getWidth, HTMLMarqueeElement(..), gTypeHTMLMarqueeElement)
+       (js_start, js_stop, js_setBehavior, js_getBehavior, js_setBgColor, js_getBgColor, js_setDirection, js_getDirection, js_setHeight, js_getHeight, js_setHspace, js_getHspace, js_setLoop, js_getLoop, js_setScrollAmount, js_getScrollAmount, js_setScrollDelay, js_getScrollDelay, js_setTrueSpeed, js_getTrueSpeed, js_setVspace, js_getVspace, js_setWidth, js_getWidth, start, stop, setBehavior, getBehavior, setBgColor, getBgColor, setDirection, getDirection, setHeight, getHeight, setHspace, getHspace, setLoop, getLoop, setScrollAmount, getScrollAmount, setScrollDelay, getScrollDelay, setTrueSpeed, getTrueSpeed, setVspace, getVspace, setWidth, getWidth, HTMLMarqueeElement(..), gTypeHTMLMarqueeElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"start\"](); })" js_start ::
-        HTMLMarqueeElement -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.start Mozilla HTMLMarqueeElement.start documentation> 
-start :: (MonadIO m) => HTMLMarqueeElement -> m ()
-start self = liftIO (js_start self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
-        HTMLMarqueeElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"start\"](); })"
+        js_start :: HTMLMarqueeElement -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-start HTMLMarqueeElement.start specification>
+start :: (MonadDOM m) => HTMLMarqueeElement -> m ()
+start self = liftDOM (void ((js_start (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.stop Mozilla HTMLMarqueeElement.stop documentation> 
-stop :: (MonadIO m) => HTMLMarqueeElement -> m ()
-stop self = liftIO (js_stop self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"behavior\"] = $2; })"
+foreign import javascript safe "(($1) => { return $1[\"stop\"](); })"
+        js_stop :: HTMLMarqueeElement -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-stop HTMLMarqueeElement.stop specification>
+stop :: (MonadDOM m) => HTMLMarqueeElement -> m ()
+stop self = liftDOM (void ((js_stop (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"behavior\"] = $2; })"
         js_setBehavior :: HTMLMarqueeElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-behavior HTMLMarqueeElement.behavior specification>
+setBehavior :: (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setBehavior self val = liftDOM (void ((js_setBehavior (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
-setBehavior ::
-            (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setBehavior self val
-  = liftIO (js_setBehavior self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"behavior\"]; })" js_getBehavior
-        :: HTMLMarqueeElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"behavior\"]; })"
+        js_getBehavior :: HTMLMarqueeElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-behavior HTMLMarqueeElement.behavior specification>
+getBehavior :: (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getBehavior self = liftDOM ((fromJSString <$> (js_getBehavior (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
-getBehavior ::
-            (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
-getBehavior self = liftIO (fromJSString <$> (js_getBehavior self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
         js_setBgColor :: HTMLMarqueeElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-bgcolor HTMLMarqueeElement.bgColor specification>
+setBgColor :: (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setBgColor self val = liftDOM (void ((js_setBgColor (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
-setBgColor ::
-           (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setBgColor self val = liftIO (js_setBgColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
-        HTMLMarqueeElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })"
+        js_getBgColor :: HTMLMarqueeElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-bgcolor HTMLMarqueeElement.bgColor specification>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getBgColor self = liftDOM ((fromJSString <$> (js_getBgColor (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
-getBgColor ::
-           (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
-getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"direction\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"direction\"] = $2; })"
         js_setDirection :: HTMLMarqueeElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-direction HTMLMarqueeElement.direction specification>
+setDirection :: (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setDirection self val = liftDOM (void ((js_setDirection (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
-setDirection ::
-             (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setDirection self val
-  = liftIO (js_setDirection self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
         js_getDirection :: HTMLMarqueeElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-direction HTMLMarqueeElement.direction specification>
+getDirection :: (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getDirection self = liftDOM ((fromJSString <$> (js_getDirection (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
-getDirection ::
-             (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
-getDirection self
-  = liftIO (fromJSString <$> (js_getDirection self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
         js_setHeight :: HTMLMarqueeElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-height HTMLMarqueeElement.height specification>
+setHeight :: (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
-setHeight ::
-          (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setHeight self val = liftIO (js_setHeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLMarqueeElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLMarqueeElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-height HTMLMarqueeElement.height specification>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getHeight self = liftDOM ((fromJSString <$> (js_getHeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
-getHeight ::
-          (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
-getHeight self = liftIO (fromJSString <$> (js_getHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"hspace\"] = $2; })"
         js_setHspace :: HTMLMarqueeElement -> Word -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-hspace HTMLMarqueeElement.hspace specification>
+setHspace :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
+setHspace self val = liftDOM (void ((js_setHspace (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
-setHspace :: (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
-setHspace self val = liftIO (js_setHspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
-        HTMLMarqueeElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })"
+        js_getHspace :: HTMLMarqueeElement -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-hspace HTMLMarqueeElement.hspace specification>
+getHspace :: (MonadDOM m) => HTMLMarqueeElement -> m Word
+getHspace self = liftDOM ((js_getHspace (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
-getHspace :: (MonadIO m) => HTMLMarqueeElement -> m Word
-getHspace self = liftIO (js_getHspace self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"loop\"] = $2; })" js_setLoop ::
-        HTMLMarqueeElement -> Int -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"loop\"] = $2; })"
+        js_setLoop :: HTMLMarqueeElement -> Int -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-loop HTMLMarqueeElement.loop specification>
+setLoop :: (MonadDOM m) => HTMLMarqueeElement -> Int -> m ()
+setLoop self val = liftDOM (void ((js_setLoop (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
-setLoop :: (MonadIO m) => HTMLMarqueeElement -> Int -> m ()
-setLoop self val = liftIO (js_setLoop self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"loop\"]; })" js_getLoop ::
-        HTMLMarqueeElement -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"loop\"]; })"
+        js_getLoop :: HTMLMarqueeElement -> IO Int
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-loop HTMLMarqueeElement.loop specification>
+getLoop :: (MonadDOM m) => HTMLMarqueeElement -> m Int
+getLoop self = liftDOM ((js_getLoop (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
-getLoop :: (MonadIO m) => HTMLMarqueeElement -> m Int
-getLoop self = liftIO (js_getLoop self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scrollAmount\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"scrollAmount\"] = $2; })"
         js_setScrollAmount :: HTMLMarqueeElement -> Word -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrollamount HTMLMarqueeElement.scrollAmount specification>
+setScrollAmount :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
+setScrollAmount self val = liftDOM (void ((js_setScrollAmount (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
-setScrollAmount ::
-                (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
-setScrollAmount self val = liftIO (js_setScrollAmount self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"scrollAmount\"]; })"
         js_getScrollAmount :: HTMLMarqueeElement -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrollamount HTMLMarqueeElement.scrollAmount specification>
+getScrollAmount :: (MonadDOM m) => HTMLMarqueeElement -> m Word
+getScrollAmount self = liftDOM ((js_getScrollAmount (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
-getScrollAmount :: (MonadIO m) => HTMLMarqueeElement -> m Word
-getScrollAmount self = liftIO (js_getScrollAmount self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scrollDelay\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"scrollDelay\"] = $2; })"
         js_setScrollDelay :: HTMLMarqueeElement -> Word -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrolldelay HTMLMarqueeElement.scrollDelay specification>
+setScrollDelay :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
+setScrollDelay self val = liftDOM (void ((js_setScrollDelay (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
-setScrollDelay :: (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
-setScrollDelay self val = liftIO (js_setScrollDelay self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"scrollDelay\"]; })"
         js_getScrollDelay :: HTMLMarqueeElement -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrolldelay HTMLMarqueeElement.scrollDelay specification>
+getScrollDelay :: (MonadDOM m) => HTMLMarqueeElement -> m Word
+getScrollDelay self = liftDOM ((js_getScrollDelay (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
-getScrollDelay :: (MonadIO m) => HTMLMarqueeElement -> m Word
-getScrollDelay self = liftIO (js_getScrollDelay self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"trueSpeed\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"trueSpeed\"] = $2; })"
         js_setTrueSpeed :: HTMLMarqueeElement -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-truespeed HTMLMarqueeElement.trueSpeed specification>
+setTrueSpeed :: (MonadDOM m) => HTMLMarqueeElement -> Bool -> m ()
+setTrueSpeed self val = liftDOM (void ((js_setTrueSpeed (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
-setTrueSpeed :: (MonadIO m) => HTMLMarqueeElement -> Bool -> m ()
-setTrueSpeed self val = liftIO (js_setTrueSpeed self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"trueSpeed\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"trueSpeed\"]; })"
         js_getTrueSpeed :: HTMLMarqueeElement -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-truespeed HTMLMarqueeElement.trueSpeed specification>
+getTrueSpeed :: (MonadDOM m) => HTMLMarqueeElement -> m Bool
+getTrueSpeed self = liftDOM ((js_getTrueSpeed (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
-getTrueSpeed :: (MonadIO m) => HTMLMarqueeElement -> m Bool
-getTrueSpeed self = liftIO (js_getTrueSpeed self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"vspace\"] = $2; })"
         js_setVspace :: HTMLMarqueeElement -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
-setVspace :: (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
-setVspace self val = liftIO (js_setVspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
-        HTMLMarqueeElement -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-vspace HTMLMarqueeElement.vspace specification>
+setVspace :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
+setVspace self val = liftDOM (void ((js_setVspace (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
-getVspace :: (MonadIO m) => HTMLMarqueeElement -> m Word
-getVspace self = liftIO (js_getVspace self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLMarqueeElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })"
+        js_getVspace :: HTMLMarqueeElement -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-vspace HTMLMarqueeElement.vspace specification>
+getVspace :: (MonadDOM m) => HTMLMarqueeElement -> m Word
+getVspace self = liftDOM ((js_getVspace (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLMarqueeElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLMarqueeElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-width HTMLMarqueeElement.width specification>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLMarqueeElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-width HTMLMarqueeElement.width specification>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
@@ -1,884 +1,433 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
-       (js_load, load, js_canPlayType, canPlayType, canPlayType_,
-        js_getStartDate, getStartDate, getStartDate_, js_play, play,
-        js_pause, pause, js_fastSeek, fastSeek, js_webkitSetMediaKeys,
-        webkitSetMediaKeys, js_setMediaKeys, setMediaKeys, js_addTextTrack,
-        addTextTrack, addTextTrack_, js_getVideoPlaybackQuality,
-        getVideoPlaybackQuality, getVideoPlaybackQuality_,
-        js_webkitShowPlaybackTargetPicker, webkitShowPlaybackTargetPicker,
-        pattern NETWORK_EMPTY, pattern NETWORK_IDLE,
-        pattern NETWORK_LOADING, pattern NETWORK_NO_SOURCE,
-        pattern HAVE_NOTHING, pattern HAVE_METADATA,
-        pattern HAVE_CURRENT_DATA, pattern HAVE_FUTURE_DATA,
-        pattern HAVE_ENOUGH_DATA, js_getError, getError, js_setSrc, setSrc,
-        js_getSrc, getSrc, js_setSrcObject, setSrcObject, js_getSrcObject,
-        getSrcObject, getSrcObjectUnsafe, getSrcObjectUnchecked,
-        js_getCurrentSrc, getCurrentSrc, js_setCrossOrigin, setCrossOrigin,
-        js_getCrossOrigin, getCrossOrigin, getCrossOriginUnsafe,
-        getCrossOriginUnchecked, js_getNetworkState, getNetworkState,
-        js_setPreload, setPreload, js_getPreload, getPreload,
-        js_getBuffered, getBuffered, js_getReadyState, getReadyState,
-        js_getSeeking, getSeeking, js_setCurrentTime, setCurrentTime,
-        js_getCurrentTime, getCurrentTime, js_getDuration, getDuration,
-        js_getPaused, getPaused, js_setDefaultPlaybackRate,
-        setDefaultPlaybackRate, js_getDefaultPlaybackRate,
-        getDefaultPlaybackRate, js_setPlaybackRate, setPlaybackRate,
-        js_getPlaybackRate, getPlaybackRate, js_getPlayed, getPlayed,
-        js_getSeekable, getSeekable, js_getEnded, getEnded, js_setAutoplay,
-        setAutoplay, js_getAutoplay, getAutoplay, js_setLoop, setLoop,
-        js_getLoop, getLoop, js_setControls, setControls, js_getControls,
-        getControls, js_setVolume, setVolume, js_getVolume, getVolume,
-        js_setMuted, setMuted, js_getMuted, getMuted, js_setDefaultMuted,
-        setDefaultMuted, js_getDefaultMuted, getDefaultMuted,
-        js_setWebkitPreservesPitch, setWebkitPreservesPitch,
-        js_getWebkitPreservesPitch, getWebkitPreservesPitch,
-        js_getWebkitHasClosedCaptions, getWebkitHasClosedCaptions,
-        js_setWebkitClosedCaptionsVisible, setWebkitClosedCaptionsVisible,
-        js_getWebkitClosedCaptionsVisible, getWebkitClosedCaptionsVisible,
-        js_getWebkitAudioDecodedByteCount, getWebkitAudioDecodedByteCount,
-        js_getWebkitVideoDecodedByteCount, getWebkitVideoDecodedByteCount,
-        js_getWebkitKeys, getWebkitKeys, js_getMediaKeys, getMediaKeys,
-        encrypted, waitingforkey, js_getAudioTracks, getAudioTracks,
-        js_getTextTracks, getTextTracks, js_getVideoTracks, getVideoTracks,
-        js_setMediaGroup, setMediaGroup, js_getMediaGroup, getMediaGroup,
-        js_setController, setController, js_getController, getController,
-        getControllerUnsafe, getControllerUnchecked,
-        js_getWebkitCurrentPlaybackTargetIsWireless,
-        getWebkitCurrentPlaybackTargetIsWireless, js_setKind, setKind,
-        js_getKind, getKind, js_setSession, setSession, js_getSession,
-        getSession, getSessionUnsafe, getSessionUnchecked,
-        HTMLMediaElement(..), gTypeHTMLMediaElement, IsHTMLMediaElement,
-        toHTMLMediaElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"load\"](); })" js_load ::
-        HTMLMediaElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.load Mozilla HTMLMediaElement.load documentation> 
-load :: (MonadIO m, IsHTMLMediaElement self) => self -> m ()
-load self = liftIO (js_load (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"canPlayType\"]($2); })"
-        js_canPlayType :: HTMLMediaElement -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.canPlayType Mozilla HTMLMediaElement.canPlayType documentation> 
-canPlayType ::
-            (MonadIO m, IsHTMLMediaElement self, ToJSString type',
-             FromJSString result) =>
-              self -> type' -> m result
-canPlayType self type'
-  = liftIO
-      (fromJSString <$>
-         (js_canPlayType (toHTMLMediaElement self) (toJSString type')))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.canPlayType Mozilla HTMLMediaElement.canPlayType documentation> 
-canPlayType_ ::
-             (MonadIO m, IsHTMLMediaElement self, ToJSString type') =>
-               self -> type' -> m ()
-canPlayType_ self type'
-  = liftIO
-      (void
-         (js_canPlayType (toHTMLMediaElement self) (toJSString type')))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getStartDate\"](); })"
-        js_getStartDate :: HTMLMediaElement -> IO Date
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getStartDate Mozilla HTMLMediaElement.getStartDate documentation> 
-getStartDate ::
-             (MonadIO m, IsHTMLMediaElement self) => self -> m Date
-getStartDate self
-  = liftIO (js_getStartDate (toHTMLMediaElement self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getStartDate Mozilla HTMLMediaElement.getStartDate documentation> 
-getStartDate_ ::
-              (MonadIO m, IsHTMLMediaElement self) => self -> m ()
-getStartDate_ self
-  = liftIO (void (js_getStartDate (toHTMLMediaElement self)))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"play\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_play :: HTMLMediaElement -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.play Mozilla HTMLMediaElement.play documentation> 
-play :: (MonadIO m, IsHTMLMediaElement self) => self -> m ()
-play self
-  = liftIO
-      ((js_play (toHTMLMediaElement self)) >>= maybeThrowPromiseRejected)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pause\"](); })" js_pause ::
-        HTMLMediaElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.pause Mozilla HTMLMediaElement.pause documentation> 
-pause :: (MonadIO m, IsHTMLMediaElement self) => self -> m ()
-pause self = liftIO (js_pause (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"fastSeek\"]($2); })" js_fastSeek
-        :: HTMLMediaElement -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.fastSeek Mozilla HTMLMediaElement.fastSeek documentation> 
-fastSeek ::
-         (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
-fastSeek self time
-  = liftIO (js_fastSeek (toHTMLMediaElement self) time)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"webkitSetMediaKeys\"]($2); })"
-        js_webkitSetMediaKeys ::
-        HTMLMediaElement -> Optional WebKitMediaKeys -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitSetMediaKeys Mozilla HTMLMediaElement.webkitSetMediaKeys documentation> 
-webkitSetMediaKeys ::
-                   (MonadIO m, IsHTMLMediaElement self) =>
-                     self -> Maybe WebKitMediaKeys -> m ()
-webkitSetMediaKeys self mediaKeys
-  = liftIO
-      (js_webkitSetMediaKeys (toHTMLMediaElement self)
-         (maybeToOptional mediaKeys))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"setMediaKeys\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_setMediaKeys ::
-        HTMLMediaElement -> Optional MediaKeys -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.setMediaKeys Mozilla HTMLMediaElement.setMediaKeys documentation> 
-setMediaKeys ::
-             (MonadIO m, IsHTMLMediaElement self) =>
-               self -> Maybe MediaKeys -> m ()
-setMediaKeys self mediaKeys
-  = liftIO
-      ((js_setMediaKeys (toHTMLMediaElement self)
-          (maybeToOptional mediaKeys))
-         >>= maybeThrowPromiseRejected)
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"addTextTrack\"]($2, $3, $4); })"
-        js_addTextTrack ::
-        HTMLMediaElement ->
-          JSString -> Optional JSString -> Optional JSString -> IO TextTrack
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
-addTextTrack ::
-             (MonadIO m, IsHTMLMediaElement self, ToJSString kind,
-              ToJSString label, ToJSString language) =>
-               self -> kind -> Maybe label -> Maybe language -> m TextTrack
-addTextTrack self kind label language
-  = liftIO
-      (js_addTextTrack (toHTMLMediaElement self) (toJSString kind)
-         (toOptionalJSString label)
-         (toOptionalJSString language))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
-addTextTrack_ ::
-              (MonadIO m, IsHTMLMediaElement self, ToJSString kind,
-               ToJSString label, ToJSString language) =>
-                self -> kind -> Maybe label -> Maybe language -> m ()
-addTextTrack_ self kind label language
-  = liftIO
-      (void
-         (js_addTextTrack (toHTMLMediaElement self) (toJSString kind)
-            (toOptionalJSString label)
-            (toOptionalJSString language)))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"getVideoPlaybackQuality\"](); })" js_getVideoPlaybackQuality ::
-        HTMLMediaElement -> IO VideoPlaybackQuality
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
-getVideoPlaybackQuality ::
-                        (MonadIO m, IsHTMLMediaElement self) =>
-                          self -> m VideoPlaybackQuality
-getVideoPlaybackQuality self
-  = liftIO (js_getVideoPlaybackQuality (toHTMLMediaElement self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
-getVideoPlaybackQuality_ ::
-                         (MonadIO m, IsHTMLMediaElement self) => self -> m ()
-getVideoPlaybackQuality_ self
-  = liftIO
-      (void (js_getVideoPlaybackQuality (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitShowPlaybackTargetPicker\"](); })"
-        js_webkitShowPlaybackTargetPicker :: HTMLMediaElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitShowPlaybackTargetPicker Mozilla HTMLMediaElement.webkitShowPlaybackTargetPicker documentation> 
-webkitShowPlaybackTargetPicker ::
-                               (MonadIO m, IsHTMLMediaElement self) => self -> m ()
-webkitShowPlaybackTargetPicker self
-  = liftIO
-      (js_webkitShowPlaybackTargetPicker (toHTMLMediaElement self))
-pattern NETWORK_EMPTY = 0
-pattern NETWORK_IDLE = 1
-pattern NETWORK_LOADING = 2
-pattern NETWORK_NO_SOURCE = 3
-pattern HAVE_NOTHING = 0
-pattern HAVE_METADATA = 1
-pattern HAVE_CURRENT_DATA = 2
-pattern HAVE_FUTURE_DATA = 3
-pattern HAVE_ENOUGH_DATA = 4
- 
-foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        HTMLMediaElement -> IO MediaError
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.error Mozilla HTMLMediaElement.error documentation> 
-getError ::
-         (MonadIO m, IsHTMLMediaElement self) => self -> m MediaError
-getError self = liftIO (js_getError (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLMediaElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
-setSrc ::
-       (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
-         self -> val -> m ()
-setSrc self val
-  = liftIO (js_setSrc (toHTMLMediaElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLMediaElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
-getSrc ::
-       (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
-         self -> m result
-getSrc self
-  = liftIO (fromJSString <$> (js_getSrc (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"srcObject\"] = $2; })"
-        js_setSrcObject ::
-        HTMLMediaElement -> Optional MediaProvider -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-setSrcObject ::
-             (MonadIO m, IsHTMLMediaElement self, IsMediaProvider val) =>
-               self -> Maybe val -> m ()
-setSrcObject self val
-  = liftIO
-      (js_setSrcObject (toHTMLMediaElement self)
-         (maybeToOptional (fmap toMediaProvider val)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"srcObject\"]; })"
-        js_getSrcObject :: HTMLMediaElement -> IO (Nullable MediaProvider)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-getSrcObject ::
-             (MonadIO m, IsHTMLMediaElement self) =>
-               self -> m (Maybe MediaProvider)
-getSrcObject self
-  = liftIO
-      (nullableToMaybe <$> (js_getSrcObject (toHTMLMediaElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-getSrcObjectUnsafe ::
-                   (MonadIO m, IsHTMLMediaElement self, HasCallStack) =>
-                     self -> m MediaProvider
-getSrcObjectUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSrcObject (toHTMLMediaElement self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-getSrcObjectUnchecked ::
-                      (MonadIO m, IsHTMLMediaElement self) => self -> m MediaProvider
-getSrcObjectUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getSrcObject (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"currentSrc\"]; })"
-        js_getCurrentSrc :: HTMLMediaElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentSrc Mozilla HTMLMediaElement.currentSrc documentation> 
-getCurrentSrc ::
-              (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
-                self -> m result
-getCurrentSrc self
-  = liftIO
-      (fromJSString <$> (js_getCurrentSrc (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
-        js_setCrossOrigin :: HTMLMediaElement -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
-                 self -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftIO
-      (js_setCrossOrigin (toHTMLMediaElement self)
-         (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
-        js_getCrossOrigin :: HTMLMediaElement -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
-                 self -> m (Maybe result)
-getCrossOrigin self
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getCrossOrigin (toHTMLMediaElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadIO m, IsHTMLMediaElement self, HasCallStack,
-                      FromJSString result) =>
-                       self -> m result
-getCrossOriginUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getCrossOrigin (toHTMLMediaElement self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
-                          self -> m result
-getCrossOriginUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getCrossOrigin (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"networkState\"]; })"
-        js_getNetworkState :: HTMLMediaElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.networkState Mozilla HTMLMediaElement.networkState documentation> 
-getNetworkState ::
-                (MonadIO m, IsHTMLMediaElement self) => self -> m Word
-getNetworkState self
-  = liftIO (js_getNetworkState (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"preload\"] = $2; })"
-        js_setPreload :: HTMLMediaElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
-setPreload ::
-           (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
-             self -> val -> m ()
-setPreload self val
-  = liftIO (js_setPreload (toHTMLMediaElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"preload\"]; })" js_getPreload ::
-        HTMLMediaElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
-getPreload ::
-           (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
-             self -> m result
-getPreload self
-  = liftIO
-      (fromJSString <$> (js_getPreload (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })" js_getBuffered
-        :: HTMLMediaElement -> IO TimeRanges
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.buffered Mozilla HTMLMediaElement.buffered documentation> 
-getBuffered ::
-            (MonadIO m, IsHTMLMediaElement self) => self -> m TimeRanges
-getBuffered self
-  = liftIO (js_getBuffered (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
-        js_getReadyState :: HTMLMediaElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.readyState Mozilla HTMLMediaElement.readyState documentation> 
-getReadyState ::
-              (MonadIO m, IsHTMLMediaElement self) => self -> m Word
-getReadyState self
-  = liftIO (js_getReadyState (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"seeking\"] ? 1 : 0); })"
-        js_getSeeking :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seeking Mozilla HTMLMediaElement.seeking documentation> 
-getSeeking ::
-           (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getSeeking self = liftIO (js_getSeeking (toHTMLMediaElement self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"currentTime\"] = $2; })"
-        js_setCurrentTime :: HTMLMediaElement -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
-setCurrentTime ::
-               (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
-setCurrentTime self val
-  = liftIO (js_setCurrentTime (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
-        js_getCurrentTime :: HTMLMediaElement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
-getCurrentTime ::
-               (MonadIO m, IsHTMLMediaElement self) => self -> m Double
-getCurrentTime self
-  = liftIO (js_getCurrentTime (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
-        :: HTMLMediaElement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.duration Mozilla HTMLMediaElement.duration documentation> 
-getDuration ::
-            (MonadIO m, IsHTMLMediaElement self) => self -> m Double
-getDuration self
-  = liftIO (js_getDuration (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"paused\"] ? 1 : 0); })"
-        js_getPaused :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.paused Mozilla HTMLMediaElement.paused documentation> 
-getPaused :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getPaused self = liftIO (js_getPaused (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"defaultPlaybackRate\"] = $2; })" js_setDefaultPlaybackRate ::
-        HTMLMediaElement -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
-setDefaultPlaybackRate ::
-                       (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
-setDefaultPlaybackRate self val
-  = liftIO (js_setDefaultPlaybackRate (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"defaultPlaybackRate\"]; })"
-        js_getDefaultPlaybackRate :: HTMLMediaElement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
-getDefaultPlaybackRate ::
-                       (MonadIO m, IsHTMLMediaElement self) => self -> m Double
-getDefaultPlaybackRate self
-  = liftIO (js_getDefaultPlaybackRate (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
-        js_setPlaybackRate :: HTMLMediaElement -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
-setPlaybackRate ::
-                (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
-setPlaybackRate self val
-  = liftIO (js_setPlaybackRate (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
-        js_getPlaybackRate :: HTMLMediaElement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
-getPlaybackRate ::
-                (MonadIO m, IsHTMLMediaElement self) => self -> m Double
-getPlaybackRate self
-  = liftIO (js_getPlaybackRate (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"played\"]; })" js_getPlayed ::
-        HTMLMediaElement -> IO TimeRanges
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.played Mozilla HTMLMediaElement.played documentation> 
-getPlayed ::
-          (MonadIO m, IsHTMLMediaElement self) => self -> m TimeRanges
-getPlayed self = liftIO (js_getPlayed (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"seekable\"]; })" js_getSeekable
-        :: HTMLMediaElement -> IO TimeRanges
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seekable Mozilla HTMLMediaElement.seekable documentation> 
-getSeekable ::
-            (MonadIO m, IsHTMLMediaElement self) => self -> m TimeRanges
-getSeekable self
-  = liftIO (js_getSeekable (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"ended\"] ? 1 : 0); })"
-        js_getEnded :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ended Mozilla HTMLMediaElement.ended documentation> 
-getEnded :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getEnded self = liftIO (js_getEnded (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autoplay\"] = $2; })"
-        js_setAutoplay :: HTMLMediaElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
-setAutoplay ::
-            (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setAutoplay self val
-  = liftIO (js_setAutoplay (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autoplay\"] ? 1 : 0); })"
-        js_getAutoplay :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
-getAutoplay ::
-            (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getAutoplay self
-  = liftIO (js_getAutoplay (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"loop\"] = $2; })" js_setLoop ::
-        HTMLMediaElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
-setLoop ::
-        (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setLoop self val
-  = liftIO (js_setLoop (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"loop\"] ? 1 : 0); })"
-        js_getLoop :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
-getLoop :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getLoop self = liftIO (js_getLoop (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"controls\"] = $2; })"
-        js_setControls :: HTMLMediaElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
-setControls ::
-            (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setControls self val
-  = liftIO (js_setControls (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"controls\"] ? 1 : 0); })"
-        js_getControls :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
-getControls ::
-            (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getControls self
-  = liftIO (js_getControls (toHTMLMediaElement self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"volume\"] = $2; })" js_setVolume
-        :: HTMLMediaElement -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
-setVolume ::
-          (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
-setVolume self val
-  = liftIO (js_setVolume (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })" js_getVolume ::
-        HTMLMediaElement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
-getVolume ::
-          (MonadIO m, IsHTMLMediaElement self) => self -> m Double
-getVolume self = liftIO (js_getVolume (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"muted\"] = $2; })" js_setMuted
-        :: HTMLMediaElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
-setMuted ::
-         (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setMuted self val
-  = liftIO (js_setMuted (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"muted\"] ? 1 : 0); })"
-        js_getMuted :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
-getMuted :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getMuted self = liftIO (js_getMuted (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultMuted\"] = $2; })"
-        js_setDefaultMuted :: HTMLMediaElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
-setDefaultMuted ::
-                (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setDefaultMuted self val
-  = liftIO (js_setDefaultMuted (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"defaultMuted\"] ? 1 : 0); })"
-        js_getDefaultMuted :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
-getDefaultMuted ::
-                (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getDefaultMuted self
-  = liftIO (js_getDefaultMuted (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"webkitPreservesPitch\"] = $2; })" js_setWebkitPreservesPitch ::
-        HTMLMediaElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
-setWebkitPreservesPitch ::
-                        (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setWebkitPreservesPitch self val
-  = liftIO (js_setWebkitPreservesPitch (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitPreservesPitch\"] ? 1 : 0); })" js_getWebkitPreservesPitch
-        :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
-getWebkitPreservesPitch ::
-                        (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitPreservesPitch self
-  = liftIO (js_getWebkitPreservesPitch (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitHasClosedCaptions\"] ? 1 : 0); })"
-        js_getWebkitHasClosedCaptions :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitHasClosedCaptions Mozilla HTMLMediaElement.webkitHasClosedCaptions documentation> 
-getWebkitHasClosedCaptions ::
-                           (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitHasClosedCaptions self
-  = liftIO (js_getWebkitHasClosedCaptions (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"webkitClosedCaptionsVisible\"] = $2; })"
-        js_setWebkitClosedCaptionsVisible ::
-        HTMLMediaElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
-setWebkitClosedCaptionsVisible ::
-                               (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setWebkitClosedCaptionsVisible self val
-  = liftIO
-      (js_setWebkitClosedCaptionsVisible (toHTMLMediaElement self) val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitClosedCaptionsVisible\"] ? 1 : 0); })"
-        js_getWebkitClosedCaptionsVisible :: HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
-getWebkitClosedCaptionsVisible ::
-                               (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitClosedCaptionsVisible self
-  = liftIO
-      (js_getWebkitClosedCaptionsVisible (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitAudioDecodedByteCount\"]; })"
-        js_getWebkitAudioDecodedByteCount :: HTMLMediaElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitAudioDecodedByteCount Mozilla HTMLMediaElement.webkitAudioDecodedByteCount documentation> 
-getWebkitAudioDecodedByteCount ::
-                               (MonadIO m, IsHTMLMediaElement self) => self -> m Word
-getWebkitAudioDecodedByteCount self
-  = liftIO
-      (js_getWebkitAudioDecodedByteCount (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"webkitVideoDecodedByteCount\"]; })"
-        js_getWebkitVideoDecodedByteCount :: HTMLMediaElement -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitVideoDecodedByteCount Mozilla HTMLMediaElement.webkitVideoDecodedByteCount documentation> 
-getWebkitVideoDecodedByteCount ::
-                               (MonadIO m, IsHTMLMediaElement self) => self -> m Word
-getWebkitVideoDecodedByteCount self
-  = liftIO
-      (js_getWebkitVideoDecodedByteCount (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitKeys\"]; })"
-        js_getWebkitKeys :: HTMLMediaElement -> IO WebKitMediaKeys
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitKeys Mozilla HTMLMediaElement.webkitKeys documentation> 
-getWebkitKeys ::
-              (MonadIO m, IsHTMLMediaElement self) => self -> m WebKitMediaKeys
-getWebkitKeys self
-  = liftIO (js_getWebkitKeys (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mediaKeys\"]; })"
-        js_getMediaKeys :: HTMLMediaElement -> IO MediaKeys
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaKeys Mozilla HTMLMediaElement.mediaKeys documentation> 
-getMediaKeys ::
-             (MonadIO m, IsHTMLMediaElement self) => self -> m MediaKeys
-getMediaKeys self
-  = liftIO (js_getMediaKeys (toHTMLMediaElement self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onencrypted Mozilla HTMLMediaElement.onencrypted documentation> 
-encrypted ::
-          (IsHTMLMediaElement self, IsEventTarget self) =>
-            EventName self onencrypted
-encrypted = unsafeEventName (toJSString "encrypted")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwaitingforkey Mozilla HTMLMediaElement.onwaitingforkey documentation> 
-waitingforkey ::
-              (IsHTMLMediaElement self, IsEventTarget self) =>
-                EventName self onwaitingforkey
-waitingforkey = unsafeEventName (toJSString "waitingforkey")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"audioTracks\"]; })"
-        js_getAudioTracks :: HTMLMediaElement -> IO AudioTrackList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.audioTracks Mozilla HTMLMediaElement.audioTracks documentation> 
-getAudioTracks ::
-               (MonadIO m, IsHTMLMediaElement self) => self -> m AudioTrackList
-getAudioTracks self
-  = liftIO (js_getAudioTracks (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"textTracks\"]; })"
-        js_getTextTracks :: HTMLMediaElement -> IO TextTrackList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.textTracks Mozilla HTMLMediaElement.textTracks documentation> 
-getTextTracks ::
-              (MonadIO m, IsHTMLMediaElement self) => self -> m TextTrackList
-getTextTracks self
-  = liftIO (js_getTextTracks (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"videoTracks\"]; })"
-        js_getVideoTracks :: HTMLMediaElement -> IO VideoTrackList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.videoTracks Mozilla HTMLMediaElement.videoTracks documentation> 
-getVideoTracks ::
-               (MonadIO m, IsHTMLMediaElement self) => self -> m VideoTrackList
-getVideoTracks self
-  = liftIO (js_getVideoTracks (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"mediaGroup\"] = $2; })"
-        js_setMediaGroup :: HTMLMediaElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
-setMediaGroup ::
-              (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
-                self -> val -> m ()
-setMediaGroup self val
-  = liftIO
-      (js_setMediaGroup (toHTMLMediaElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mediaGroup\"]; })"
-        js_getMediaGroup :: HTMLMediaElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
-getMediaGroup ::
-              (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
-                self -> m result
-getMediaGroup self
-  = liftIO
-      (fromJSString <$> (js_getMediaGroup (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"controller\"] = $2; })"
-        js_setController ::
-        HTMLMediaElement -> Optional MediaController -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-setController ::
-              (MonadIO m, IsHTMLMediaElement self) =>
-                self -> Maybe MediaController -> m ()
-setController self val
-  = liftIO
-      (js_setController (toHTMLMediaElement self) (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"controller\"]; })"
-        js_getController ::
-        HTMLMediaElement -> IO (Nullable MediaController)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-getController ::
-              (MonadIO m, IsHTMLMediaElement self) =>
-                self -> m (Maybe MediaController)
-getController self
-  = liftIO
-      (nullableToMaybe <$> (js_getController (toHTMLMediaElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-getControllerUnsafe ::
-                    (MonadIO m, IsHTMLMediaElement self, HasCallStack) =>
-                      self -> m MediaController
-getControllerUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getController (toHTMLMediaElement self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-getControllerUnchecked ::
-                       (MonadIO m, IsHTMLMediaElement self) => self -> m MediaController
-getControllerUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getController (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitCurrentPlaybackTargetIsWireless\"] ? 1 : 0); })"
-        js_getWebkitCurrentPlaybackTargetIsWireless ::
-        HTMLMediaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless Mozilla HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless documentation> 
-getWebkitCurrentPlaybackTargetIsWireless ::
-                                         (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitCurrentPlaybackTargetIsWireless self
-  = liftIO
-      (js_getWebkitCurrentPlaybackTargetIsWireless
-         (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
-        HTMLMediaElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.kind Mozilla HTMLMediaElement.kind documentation> 
-setKind ::
-        (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
-          self -> val -> m ()
-setKind self val
-  = liftIO (js_setKind (toHTMLMediaElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        HTMLMediaElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.kind Mozilla HTMLMediaElement.kind documentation> 
-getKind ::
-        (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
-          self -> m result
-getKind self
-  = liftIO (fromJSString <$> (js_getKind (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"session\"] = $2; })"
-        js_setSession :: HTMLMediaElement -> Optional MediaSession -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-setSession ::
-           (MonadIO m, IsHTMLMediaElement self) =>
-             self -> Maybe MediaSession -> m ()
-setSession self val
-  = liftIO
-      (js_setSession (toHTMLMediaElement self) (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"session\"]; })" js_getSession ::
-        HTMLMediaElement -> IO (Nullable MediaSession)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-getSession ::
-           (MonadIO m, IsHTMLMediaElement self) =>
-             self -> m (Maybe MediaSession)
-getSession self
-  = liftIO
-      (nullableToMaybe <$> (js_getSession (toHTMLMediaElement self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-getSessionUnsafe ::
-                 (MonadIO m, IsHTMLMediaElement self, HasCallStack) =>
-                   self -> m MediaSession
-getSessionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSession (toHTMLMediaElement self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-getSessionUnchecked ::
-                    (MonadIO m, IsHTMLMediaElement self) => self -> m MediaSession
-getSessionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getSession (toHTMLMediaElement self)))
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
+       (js_addTextTrack, js_canPlayType, js_captureStream, js_fastSeek, js_getStartDate, js_load, js_pause, js_play, js_setMediaKeys, js_setSinkId, js_getError, js_setSrc, js_getSrc, js_setSrcObject, js_getSrcObject, js_getCurrentSrc, js_setCrossOrigin, js_getCrossOrigin, js_getNetworkState, js_setPreload, js_getPreload, js_getBuffered, js_getReadyState, js_getSeeking, js_setCurrentTime, js_getCurrentTime, js_getDuration, js_getPaused, js_setDefaultPlaybackRate, js_getDefaultPlaybackRate, js_setPlaybackRate, js_getPlaybackRate, js_setPreservesPitch, js_getPreservesPitch, js_getPlayed, js_getSeekable, js_getEnded, js_setAutoplay, js_getAutoplay, js_setLoop, js_getLoop, js_setControls, js_getControls, js_setVolume, js_getVolume, js_setMuted, js_getMuted, js_setDefaultMuted, js_getDefaultMuted, js_getAudioTracks, js_getVideoTracks, js_getTextTracks, js_getSinkId, js_getMediaKeys, js_getRemote, js_setDisableRemotePlayback, js_getDisableRemotePlayback, addTextTrack, addTextTrack_, canPlayType, canPlayType_, captureStream, captureStream_, fastSeek, getStartDate, getStartDate_, load, pause, play, setMediaKeys, setSinkId, getError, getErrorUnsafe, getErrorUnchecked, setSrc, getSrc, setSrcObject, getSrcObject, getSrcObjectUnsafe, getSrcObjectUnchecked, getCurrentSrc, setCrossOrigin, getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked, getNetworkState, setPreload, getPreload, getBuffered, getReadyState, getSeeking, setCurrentTime, getCurrentTime, getDuration, getPaused, setDefaultPlaybackRate, getDefaultPlaybackRate, setPlaybackRate, getPlaybackRate, setPreservesPitch, getPreservesPitch, getPlayed, getSeekable, getEnded, setAutoplay, getAutoplay, setLoop, getLoop, setControls, getControls, setVolume, getVolume, setMuted, getMuted, setDefaultMuted, getDefaultMuted, getAudioTracks, getVideoTracks, getTextTracks, getSinkId, getMediaKeys, getMediaKeysUnsafe, getMediaKeysUnchecked, getRemote, setDisableRemotePlayback, getDisableRemotePlayback, pattern NETWORK_EMPTY, pattern NETWORK_IDLE, pattern NETWORK_LOADING, pattern NETWORK_NO_SOURCE, pattern HAVE_NOTHING, pattern HAVE_METADATA, pattern HAVE_CURRENT_DATA, pattern HAVE_FUTURE_DATA, pattern HAVE_ENOUGH_DATA, encrypted, waitingforkey, HTMLMediaElement(..), gTypeHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"addTextTrack\"]($2, $3, $4); })"
+        js_addTextTrack :: HTMLMediaElement -> JSVal -> (Optional JSString) -> (Optional JSString) -> IO TextTrack
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/addTextTrack MDN HTMLMediaElement.addTextTrack documentation>
+addTextTrack :: (MonadDOM m, IsHTMLMediaElement self, ToJSString label, ToJSString language) => self -> TextTrackKind -> Maybe label -> Maybe language -> m TextTrack
+addTextTrack self kind label language = liftDOM (((toJSVal kind) >>= \a2' -> js_addTextTrack ((Types.toHTMLMediaElement self)) a2' (toOptionalJSString label) (toOptionalJSString language)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/addTextTrack MDN HTMLMediaElement.addTextTrack documentation>
+addTextTrack_ :: (MonadDOM m, IsHTMLMediaElement self, ToJSString label, ToJSString language) => self -> TextTrackKind -> Maybe label -> Maybe language -> m ()
+addTextTrack_ self kind label language = liftDOM (void (((toJSVal kind) >>= \a2' -> js_addTextTrack ((Types.toHTMLMediaElement self)) a2' (toOptionalJSString label) (toOptionalJSString language))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"canPlayType\"]($2); })"
+        js_canPlayType :: HTMLMediaElement -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/canPlayType MDN HTMLMediaElement.canPlayType documentation>
+canPlayType :: (MonadDOM m, IsHTMLMediaElement self, ToJSString type') => self -> type' -> m CanPlayTypeResult
+canPlayType self type' = liftDOM (((js_canPlayType ((Types.toHTMLMediaElement self)) (toJSString type')) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/canPlayType MDN HTMLMediaElement.canPlayType documentation>
+canPlayType_ :: (MonadDOM m, IsHTMLMediaElement self, ToJSString type') => self -> type' -> m ()
+canPlayType_ self type' = liftDOM (void ((js_canPlayType ((Types.toHTMLMediaElement self)) (toJSString type'))))
+
+foreign import javascript safe "(($1) => { return $1[\"captureStream\"](); })"
+        js_captureStream :: HTMLMediaElement -> IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/captureStream MDN HTMLMediaElement.captureStream documentation>
+captureStream :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaStream
+captureStream self = liftDOM ((js_captureStream ((Types.toHTMLMediaElement self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/captureStream MDN HTMLMediaElement.captureStream documentation>
+captureStream_ :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+captureStream_ self = liftDOM (void ((js_captureStream ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"fastSeek\"]($2); })"
+        js_fastSeek :: HTMLMediaElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/fastSeek MDN HTMLMediaElement.fastSeek documentation>
+fastSeek :: (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+fastSeek self time = liftDOM (void ((js_fastSeek ((Types.toHTMLMediaElement self)) (time))))
+
+foreign import javascript safe "(($1) => { return $1[\"getStartDate\"](); })"
+        js_getStartDate :: HTMLMediaElement -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/getStartDate MDN HTMLMediaElement.getStartDate documentation>
+getStartDate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m GObject
+getStartDate self = liftDOM ((js_getStartDate ((Types.toHTMLMediaElement self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/getStartDate MDN HTMLMediaElement.getStartDate documentation>
+getStartDate_ :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+getStartDate_ self = liftDOM (void ((js_getStartDate ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"load\"](); })"
+        js_load :: HTMLMediaElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/load MDN HTMLMediaElement.load documentation>
+load :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+load self = liftDOM (void ((js_load ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"pause\"](); })"
+        js_pause :: HTMLMediaElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/pause MDN HTMLMediaElement.pause documentation>
+pause :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+pause self = liftDOM (void ((js_pause ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"play\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_play :: HTMLMediaElement -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/play MDN HTMLMediaElement.play documentation>
+play :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+play self = liftDOM (void (((js_play ((Types.toHTMLMediaElement self))) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setMediaKeys\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setMediaKeys :: HTMLMediaElement -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/setMediaKeys MDN HTMLMediaElement.setMediaKeys documentation>
+setMediaKeys :: (MonadDOM m, IsHTMLMediaElement self) => self -> Maybe MediaKeys -> m ()
+setMediaKeys self mediaKeys = liftDOM (void ((((toJSVal mediaKeys) >>= \a2' -> js_setMediaKeys ((Types.toHTMLMediaElement self)) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setSinkId\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setSinkId :: HTMLMediaElement -> JSString -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/setSinkId MDN HTMLMediaElement.setSinkId documentation>
+setSinkId :: (MonadDOM m, IsHTMLMediaElement self, ToJSString sinkId) => self -> sinkId -> m ()
+setSinkId self sinkId = liftDOM (void (((js_setSinkId ((Types.toHTMLMediaElement self)) (toJSString sinkId)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: HTMLMediaElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/error MDN HTMLMediaElement.error documentation>
+getError :: (MonadDOM m, IsHTMLMediaElement self) => self -> m (Maybe MediaError)
+getError self = liftDOM (((js_getError ((Types.toHTMLMediaElement self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/error MDN HTMLMediaElement.error documentation>
+getErrorUnsafe :: (MonadDOM m, IsHTMLMediaElement self, HasCallStack) => self -> m MediaError
+getErrorUnsafe self = liftDOM ((((js_getError ((Types.toHTMLMediaElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/error MDN HTMLMediaElement.error documentation>
+getErrorUnchecked :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaError
+getErrorUnchecked self = liftDOM ((pFromJSVal <$> (js_getError ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLMediaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/src MDN HTMLMediaElement.src documentation>
+setSrc :: (MonadDOM m, IsHTMLMediaElement self, ToJSString val) => self -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc ((Types.toHTMLMediaElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLMediaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/src MDN HTMLMediaElement.src documentation>
+getSrc :: (MonadDOM m, IsHTMLMediaElement self, FromJSString result) => self -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"srcObject\"] = $2; })"
+        js_setSrcObject :: HTMLMediaElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/srcObject MDN HTMLMediaElement.srcObject documentation>
+setSrcObject :: (MonadDOM m, IsHTMLMediaElement self, IsMediaProvider val) => self -> Maybe val -> m ()
+setSrcObject self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSrcObject ((Types.toHTMLMediaElement self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"srcObject\"]; })"
+        js_getSrcObject :: HTMLMediaElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/srcObject MDN HTMLMediaElement.srcObject documentation>
+getSrcObject :: (MonadDOM m, IsHTMLMediaElement self) => self -> m (Maybe MediaProvider)
+getSrcObject self = liftDOM (((js_getSrcObject ((Types.toHTMLMediaElement self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/srcObject MDN HTMLMediaElement.srcObject documentation>
+getSrcObjectUnsafe :: (MonadDOM m, IsHTMLMediaElement self, HasCallStack) => self -> m MediaProvider
+getSrcObjectUnsafe self = liftDOM ((((js_getSrcObject ((Types.toHTMLMediaElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/srcObject MDN HTMLMediaElement.srcObject documentation>
+getSrcObjectUnchecked :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaProvider
+getSrcObjectUnchecked self = liftDOM ((pFromJSVal <$> (js_getSrcObject ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentSrc\"]; })"
+        js_getCurrentSrc :: HTMLMediaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/currentSrc MDN HTMLMediaElement.currentSrc documentation>
+getCurrentSrc :: (MonadDOM m, IsHTMLMediaElement self, FromJSString result) => self -> m result
+getCurrentSrc self = liftDOM ((fromJSString <$> (js_getCurrentSrc ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: HTMLMediaElement -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/crossOrigin MDN HTMLMediaElement.crossOrigin documentation>
+setCrossOrigin :: (MonadDOM m, IsHTMLMediaElement self, ToJSString val) => self -> Maybe val -> m ()
+setCrossOrigin self val = liftDOM (void ((js_setCrossOrigin ((Types.toHTMLMediaElement self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLMediaElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/crossOrigin MDN HTMLMediaElement.crossOrigin documentation>
+getCrossOrigin :: (MonadDOM m, IsHTMLMediaElement self, FromJSString result) => self -> m (Maybe result)
+getCrossOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin ((Types.toHTMLMediaElement self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/crossOrigin MDN HTMLMediaElement.crossOrigin documentation>
+getCrossOriginUnsafe :: (MonadDOM m, IsHTMLMediaElement self, HasCallStack, FromJSString result) => self -> m result
+getCrossOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin ((Types.toHTMLMediaElement self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/crossOrigin MDN HTMLMediaElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, IsHTMLMediaElement self, FromJSString result) => self -> m result
+getCrossOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getCrossOrigin ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"networkState\"]; })"
+        js_getNetworkState :: HTMLMediaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/networkState MDN HTMLMediaElement.networkState documentation>
+getNetworkState :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getNetworkState self = liftDOM ((js_getNetworkState ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preload\"] = $2; })"
+        js_setPreload :: HTMLMediaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/preload MDN HTMLMediaElement.preload documentation>
+setPreload :: (MonadDOM m, IsHTMLMediaElement self, ToJSString val) => self -> val -> m ()
+setPreload self val = liftDOM (void ((js_setPreload ((Types.toHTMLMediaElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preload\"]; })"
+        js_getPreload :: HTMLMediaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/preload MDN HTMLMediaElement.preload documentation>
+getPreload :: (MonadDOM m, IsHTMLMediaElement self, FromJSString result) => self -> m result
+getPreload self = liftDOM ((fromJSString <$> (js_getPreload ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })"
+        js_getBuffered :: HTMLMediaElement -> IO TimeRanges
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/buffered MDN HTMLMediaElement.buffered documentation>
+getBuffered :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
+getBuffered self = liftDOM ((js_getBuffered ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: HTMLMediaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/readyState MDN HTMLMediaElement.readyState documentation>
+getReadyState :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getReadyState self = liftDOM ((js_getReadyState ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"seeking\"]; })"
+        js_getSeeking :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/seeking MDN HTMLMediaElement.seeking documentation>
+getSeeking :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getSeeking self = liftDOM ((js_getSeeking ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"currentTime\"] = $2; })"
+        js_setCurrentTime :: HTMLMediaElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/currentTime MDN HTMLMediaElement.currentTime documentation>
+setCurrentTime :: (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setCurrentTime self val = liftDOM (void ((js_setCurrentTime ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: HTMLMediaElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/currentTime MDN HTMLMediaElement.currentTime documentation>
+getCurrentTime :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getCurrentTime self = liftDOM ((js_getCurrentTime ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: HTMLMediaElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/duration MDN HTMLMediaElement.duration documentation>
+getDuration :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getDuration self = liftDOM ((js_getDuration ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"paused\"]; })"
+        js_getPaused :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/paused MDN HTMLMediaElement.paused documentation>
+getPaused :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getPaused self = liftDOM ((js_getPaused ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"defaultPlaybackRate\"] = $2; })"
+        js_setDefaultPlaybackRate :: HTMLMediaElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/defaultPlaybackRate MDN HTMLMediaElement.defaultPlaybackRate documentation>
+setDefaultPlaybackRate :: (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setDefaultPlaybackRate self val = liftDOM (void ((js_setDefaultPlaybackRate ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultPlaybackRate\"]; })"
+        js_getDefaultPlaybackRate :: HTMLMediaElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/defaultPlaybackRate MDN HTMLMediaElement.defaultPlaybackRate documentation>
+getDefaultPlaybackRate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getDefaultPlaybackRate self = liftDOM ((js_getDefaultPlaybackRate ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: HTMLMediaElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/playbackRate MDN HTMLMediaElement.playbackRate documentation>
+setPlaybackRate :: (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setPlaybackRate self val = liftDOM (void ((js_setPlaybackRate ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: HTMLMediaElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/playbackRate MDN HTMLMediaElement.playbackRate documentation>
+getPlaybackRate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getPlaybackRate self = liftDOM ((js_getPlaybackRate ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preservesPitch\"] = $2; })"
+        js_setPreservesPitch :: HTMLMediaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/preservesPitch MDN HTMLMediaElement.preservesPitch documentation>
+setPreservesPitch :: (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setPreservesPitch self val = liftDOM (void ((js_setPreservesPitch ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preservesPitch\"]; })"
+        js_getPreservesPitch :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/preservesPitch MDN HTMLMediaElement.preservesPitch documentation>
+getPreservesPitch :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getPreservesPitch self = liftDOM ((js_getPreservesPitch ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"played\"]; })"
+        js_getPlayed :: HTMLMediaElement -> IO TimeRanges
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/played MDN HTMLMediaElement.played documentation>
+getPlayed :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
+getPlayed self = liftDOM ((js_getPlayed ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"seekable\"]; })"
+        js_getSeekable :: HTMLMediaElement -> IO TimeRanges
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/seekable MDN HTMLMediaElement.seekable documentation>
+getSeekable :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
+getSeekable self = liftDOM ((js_getSeekable ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ended\"]; })"
+        js_getEnded :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended MDN HTMLMediaElement.ended documentation>
+getEnded :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getEnded self = liftDOM ((js_getEnded ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autoplay\"] = $2; })"
+        js_setAutoplay :: HTMLMediaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/autoplay MDN HTMLMediaElement.autoplay documentation>
+setAutoplay :: (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setAutoplay self val = liftDOM (void ((js_setAutoplay ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autoplay\"]; })"
+        js_getAutoplay :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/autoplay MDN HTMLMediaElement.autoplay documentation>
+getAutoplay :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getAutoplay self = liftDOM ((js_getAutoplay ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"loop\"] = $2; })"
+        js_setLoop :: HTMLMediaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/loop MDN HTMLMediaElement.loop documentation>
+setLoop :: (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setLoop self val = liftDOM (void ((js_setLoop ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loop\"]; })"
+        js_getLoop :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/loop MDN HTMLMediaElement.loop documentation>
+getLoop :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getLoop self = liftDOM ((js_getLoop ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"controls\"] = $2; })"
+        js_setControls :: HTMLMediaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/controls MDN HTMLMediaElement.controls documentation>
+setControls :: (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setControls self val = liftDOM (void ((js_setControls ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"controls\"]; })"
+        js_getControls :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/controls MDN HTMLMediaElement.controls documentation>
+getControls :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getControls self = liftDOM ((js_getControls ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"volume\"] = $2; })"
+        js_setVolume :: HTMLMediaElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/volume MDN HTMLMediaElement.volume documentation>
+setVolume :: (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
+setVolume self val = liftDOM (void ((js_setVolume ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })"
+        js_getVolume :: HTMLMediaElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/volume MDN HTMLMediaElement.volume documentation>
+getVolume :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getVolume self = liftDOM ((js_getVolume ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"muted\"] = $2; })"
+        js_setMuted :: HTMLMediaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/muted MDN HTMLMediaElement.muted documentation>
+setMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setMuted self val = liftDOM (void ((js_setMuted ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"muted\"]; })"
+        js_getMuted :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/muted MDN HTMLMediaElement.muted documentation>
+getMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getMuted self = liftDOM ((js_getMuted ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"defaultMuted\"] = $2; })"
+        js_setDefaultMuted :: HTMLMediaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/defaultMuted MDN HTMLMediaElement.defaultMuted documentation>
+setDefaultMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setDefaultMuted self val = liftDOM (void ((js_setDefaultMuted ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultMuted\"]; })"
+        js_getDefaultMuted :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/defaultMuted MDN HTMLMediaElement.defaultMuted documentation>
+getDefaultMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getDefaultMuted self = liftDOM ((js_getDefaultMuted ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioTracks\"]; })"
+        js_getAudioTracks :: HTMLMediaElement -> IO AudioTrackList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/audioTracks MDN HTMLMediaElement.audioTracks documentation>
+getAudioTracks :: (MonadDOM m, IsHTMLMediaElement self) => self -> m AudioTrackList
+getAudioTracks self = liftDOM ((js_getAudioTracks ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"videoTracks\"]; })"
+        js_getVideoTracks :: HTMLMediaElement -> IO VideoTrackList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/videoTracks MDN HTMLMediaElement.videoTracks documentation>
+getVideoTracks :: (MonadDOM m, IsHTMLMediaElement self) => self -> m VideoTrackList
+getVideoTracks self = liftDOM ((js_getVideoTracks ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"textTracks\"]; })"
+        js_getTextTracks :: HTMLMediaElement -> IO TextTrackList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/textTracks MDN HTMLMediaElement.textTracks documentation>
+getTextTracks :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TextTrackList
+getTextTracks self = liftDOM ((js_getTextTracks ((Types.toHTMLMediaElement self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sinkId\"]; })"
+        js_getSinkId :: HTMLMediaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/sinkId MDN HTMLMediaElement.sinkId documentation>
+getSinkId :: (MonadDOM m, IsHTMLMediaElement self, FromJSString result) => self -> m result
+getSinkId self = liftDOM ((fromJSString <$> (js_getSinkId ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediaKeys\"]; })"
+        js_getMediaKeys :: HTMLMediaElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/mediaKeys MDN HTMLMediaElement.mediaKeys documentation>
+getMediaKeys :: (MonadDOM m, IsHTMLMediaElement self) => self -> m (Maybe MediaKeys)
+getMediaKeys self = liftDOM (((js_getMediaKeys ((Types.toHTMLMediaElement self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/mediaKeys MDN HTMLMediaElement.mediaKeys documentation>
+getMediaKeysUnsafe :: (MonadDOM m, IsHTMLMediaElement self, HasCallStack) => self -> m MediaKeys
+getMediaKeysUnsafe self = liftDOM ((((js_getMediaKeys ((Types.toHTMLMediaElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/mediaKeys MDN HTMLMediaElement.mediaKeys documentation>
+getMediaKeysUnchecked :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaKeys
+getMediaKeysUnchecked self = liftDOM ((pFromJSVal <$> (js_getMediaKeys ((Types.toHTMLMediaElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"remote\"]; })"
+        js_getRemote :: HTMLMediaElement -> IO RemotePlayback
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/remote MDN HTMLMediaElement.remote documentation>
+getRemote :: (MonadDOM m, IsHTMLMediaElement self) => self -> m RemotePlayback
+getRemote self = liftDOM ((js_getRemote ((Types.toHTMLMediaElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disableRemotePlayback\"] = $2; })"
+        js_setDisableRemotePlayback :: HTMLMediaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/disableRemotePlayback MDN HTMLMediaElement.disableRemotePlayback documentation>
+setDisableRemotePlayback :: (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setDisableRemotePlayback self val = liftDOM (void ((js_setDisableRemotePlayback ((Types.toHTMLMediaElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disableRemotePlayback\"]; })"
+        js_getDisableRemotePlayback :: HTMLMediaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/disableRemotePlayback MDN HTMLMediaElement.disableRemotePlayback documentation>
+getDisableRemotePlayback :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getDisableRemotePlayback self = liftDOM ((js_getDisableRemotePlayback ((Types.toHTMLMediaElement self))))
+
+pattern NETWORK_EMPTY = 0
+
+pattern NETWORK_IDLE = 1
+
+pattern NETWORK_LOADING = 2
+
+pattern NETWORK_NO_SOURCE = 3
+
+pattern HAVE_NOTHING = 0
+
+pattern HAVE_METADATA = 1
+
+pattern HAVE_CURRENT_DATA = 2
+
+pattern HAVE_FUTURE_DATA = 3
+
+pattern HAVE_ENOUGH_DATA = 4
+
+-- | <https://w3c.github.io/encrypted-media/#dom-htmlmediaelement-onencrypted encrypted event>
+encrypted :: (IsHTMLMediaElement self, IsEventTarget self) => EventName self MediaEncryptedEvent
+encrypted = unsafeEventName (toJSString "encrypted")
+
+-- | <https://w3c.github.io/encrypted-media/#dom-htmlmediaelement-onwaitingforkey waitingforkey event>
+waitingforkey :: (IsHTMLMediaElement self, IsEventTarget self) => EventName self Event
+waitingforkey = unsafeEventName (toJSString "waitingforkey")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
@@ -1,41 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
-       (js_setCompact, setCompact, js_getCompact, getCompact,
-        HTMLMenuElement(..), gTypeHTMLMenuElement)
+       (js_setCompact, js_getCompact, setCompact, getCompact, HTMLMenuElement(..), gTypeHTMLMenuElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"compact\"] = $2; })"
         js_setCompact :: HTMLMenuElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMenuElement/compact MDN HTMLMenuElement.compact documentation>
+setCompact :: (MonadDOM m) => HTMLMenuElement -> Bool -> m ()
+setCompact self val = liftDOM (void ((js_setCompact (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
-setCompact :: (MonadIO m) => HTMLMenuElement -> Bool -> m ()
-setCompact self val = liftIO (js_setCompact self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"compact\"]; })"
         js_getCompact :: HTMLMenuElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
-getCompact :: (MonadIO m) => HTMLMenuElement -> m Bool
-getCompact self = liftIO (js_getCompact self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMenuElement/compact MDN HTMLMenuElement.compact documentation>
+getCompact :: (MonadDOM m) => HTMLMenuElement -> m Bool
+getCompact self = liftDOM ((js_getCompact (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
@@ -1,95 +1,77 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLMetaElement
-       (js_setContent, setContent, js_getContent, getContent,
-        js_setHttpEquiv, setHttpEquiv, js_getHttpEquiv, getHttpEquiv,
-        js_setName, setName, js_getName, getName, js_setScheme, setScheme,
-        js_getScheme, getScheme, HTMLMetaElement(..), gTypeHTMLMetaElement)
+       (js_setName, js_getName, js_setHttpEquiv, js_getHttpEquiv, js_setContent, js_getContent, js_setMedia, js_getMedia, js_setScheme, js_getScheme, setName, getName, setHttpEquiv, getHttpEquiv, setContent, getContent, setMedia, getMedia, setScheme, getScheme, HTMLMetaElement(..), gTypeHTMLMetaElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"content\"] = $2; })"
-        js_setContent :: HTMLMetaElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
-setContent ::
-           (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setContent self val = liftIO (js_setContent self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"content\"]; })" js_getContent ::
-        HTMLMetaElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLMetaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/name MDN HTMLMetaElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
-getContent ::
-           (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
-getContent self = liftIO (fromJSString <$> (js_getContent self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"httpEquiv\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLMetaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/name MDN HTMLMetaElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"httpEquiv\"] = $2; })"
         js_setHttpEquiv :: HTMLMetaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/httpEquiv MDN HTMLMetaElement.httpEquiv documentation>
+setHttpEquiv :: (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setHttpEquiv self val = liftDOM (void ((js_setHttpEquiv (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
-setHttpEquiv ::
-             (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setHttpEquiv self val
-  = liftIO (js_setHttpEquiv self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"httpEquiv\"]; })"
         js_getHttpEquiv :: HTMLMetaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/httpEquiv MDN HTMLMetaElement.httpEquiv documentation>
+getHttpEquiv :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getHttpEquiv self = liftDOM ((fromJSString <$> (js_getHttpEquiv (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
-getHttpEquiv ::
-             (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
-getHttpEquiv self
-  = liftIO (fromJSString <$> (js_getHttpEquiv self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLMetaElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"content\"] = $2; })"
+        js_setContent :: HTMLMetaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/content MDN HTMLMetaElement.content documentation>
+setContent :: (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setContent self val = liftDOM (void ((js_setContent (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLMetaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"content\"]; })"
+        js_getContent :: HTMLMetaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/content MDN HTMLMetaElement.content documentation>
+getContent :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getContent self = liftDOM ((fromJSString <$> (js_getContent (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scheme\"] = $2; })"
-        js_setScheme :: HTMLMetaElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"media\"] = $2; })"
+        js_setMedia :: HTMLMetaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/media MDN HTMLMetaElement.media documentation>
+setMedia :: (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setMedia self val = liftDOM (void ((js_setMedia (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
-setScheme ::
-          (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setScheme self val = liftIO (js_setScheme self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scheme\"]; })" js_getScheme ::
-        HTMLMetaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: HTMLMetaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/media MDN HTMLMetaElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getMedia self = liftDOM ((fromJSString <$> (js_getMedia (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
-getScheme ::
-          (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
-getScheme self = liftIO (fromJSString <$> (js_getScheme self))
+foreign import javascript safe "(($1, $2) => { $1[\"scheme\"] = $2; })"
+        js_setScheme :: HTMLMetaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/scheme MDN HTMLMetaElement.scheme documentation>
+setScheme :: (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setScheme self val = liftDOM (void ((js_setScheme (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scheme\"]; })"
+        js_getScheme :: HTMLMetaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/scheme MDN HTMLMetaElement.scheme documentation>
+getScheme :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getScheme self = liftDOM ((fromJSString <$> (js_getScheme (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
@@ -1,122 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLMeterElement
-       (js_setValue, setValue, js_getValue, getValue, js_setMin, setMin,
-        js_getMin, getMin, js_setMax, setMax, js_getMax, getMax, js_setLow,
-        setLow, js_getLow, getLow, js_setHigh, setHigh, js_getHigh,
-        getHigh, js_setOptimum, setOptimum, js_getOptimum, getOptimum,
-        js_getLabels, getLabels, HTMLMeterElement(..),
-        gTypeHTMLMeterElement)
+       (js_setValue, js_getValue, js_setMin, js_getMin, js_setMax, js_getMax, js_setLow, js_getLow, js_setHigh, js_getHigh, js_setOptimum, js_getOptimum, js_getLabels, setValue, getValue, setMin, getMin, setMax, getMax, setLow, getLow, setHigh, getHigh, setOptimum, getOptimum, getLabels, HTMLMeterElement(..), gTypeHTMLMeterElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLMeterElement -> Double -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
-setValue :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
-setValue self val = liftIO (js_setValue self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLMeterElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLMeterElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/value MDN HTMLMeterElement.value documentation>
+setValue :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
-getValue :: (MonadIO m) => HTMLMeterElement -> m Double
-getValue self = liftIO (js_getValue self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"min\"] = $2; })" js_setMin ::
-        HTMLMeterElement -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLMeterElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/value MDN HTMLMeterElement.value documentation>
+getValue :: (MonadDOM m) => HTMLMeterElement -> m Double
+getValue self = liftDOM ((js_getValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
-setMin :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
-setMin self val = liftIO (js_setMin self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })" js_getMin ::
-        HTMLMeterElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"min\"] = $2; })"
+        js_setMin :: HTMLMeterElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/min MDN HTMLMeterElement.min documentation>
+setMin :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setMin self val = liftDOM (void ((js_setMin (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
-getMin :: (MonadIO m) => HTMLMeterElement -> m Double
-getMin self = liftIO (js_getMin self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"max\"] = $2; })" js_setMax ::
-        HTMLMeterElement -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })"
+        js_getMin :: HTMLMeterElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/min MDN HTMLMeterElement.min documentation>
+getMin :: (MonadDOM m) => HTMLMeterElement -> m Double
+getMin self = liftDOM ((js_getMin (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
-setMax :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
-setMax self val = liftIO (js_setMax self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
-        HTMLMeterElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"max\"] = $2; })"
+        js_setMax :: HTMLMeterElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/max MDN HTMLMeterElement.max documentation>
+setMax :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setMax self val = liftDOM (void ((js_setMax (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
-getMax :: (MonadIO m) => HTMLMeterElement -> m Double
-getMax self = liftIO (js_getMax self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"low\"] = $2; })" js_setLow ::
-        HTMLMeterElement -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })"
+        js_getMax :: HTMLMeterElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/max MDN HTMLMeterElement.max documentation>
+getMax :: (MonadDOM m) => HTMLMeterElement -> m Double
+getMax self = liftDOM ((js_getMax (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
-setLow :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
-setLow self val = liftIO (js_setLow self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"low\"]; })" js_getLow ::
-        HTMLMeterElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"low\"] = $2; })"
+        js_setLow :: HTMLMeterElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/low MDN HTMLMeterElement.low documentation>
+setLow :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setLow self val = liftDOM (void ((js_setLow (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
-getLow :: (MonadIO m) => HTMLMeterElement -> m Double
-getLow self = liftIO (js_getLow self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"high\"] = $2; })" js_setHigh ::
-        HTMLMeterElement -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"low\"]; })"
+        js_getLow :: HTMLMeterElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/low MDN HTMLMeterElement.low documentation>
+getLow :: (MonadDOM m) => HTMLMeterElement -> m Double
+getLow self = liftDOM ((js_getLow (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
-setHigh :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
-setHigh self val = liftIO (js_setHigh self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"high\"]; })" js_getHigh ::
-        HTMLMeterElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"high\"] = $2; })"
+        js_setHigh :: HTMLMeterElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/high MDN HTMLMeterElement.high documentation>
+setHigh :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setHigh self val = liftDOM (void ((js_setHigh (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
-getHigh :: (MonadIO m) => HTMLMeterElement -> m Double
-getHigh self = liftIO (js_getHigh self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"optimum\"] = $2; })"
-        js_setOptimum :: HTMLMeterElement -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"high\"]; })"
+        js_getHigh :: HTMLMeterElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/high MDN HTMLMeterElement.high documentation>
+getHigh :: (MonadDOM m) => HTMLMeterElement -> m Double
+getHigh self = liftDOM ((js_getHigh (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
-setOptimum :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
-setOptimum self val = liftIO (js_setOptimum self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"optimum\"]; })" js_getOptimum ::
-        HTMLMeterElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"optimum\"] = $2; })"
+        js_setOptimum :: HTMLMeterElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/optimum MDN HTMLMeterElement.optimum documentation>
+setOptimum :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
+setOptimum self val = liftDOM (void ((js_setOptimum (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
-getOptimum :: (MonadIO m) => HTMLMeterElement -> m Double
-getOptimum self = liftIO (js_getOptimum self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLMeterElement -> IO NodeList
+foreign import javascript unsafe "(($1) => { return $1[\"optimum\"]; })"
+        js_getOptimum :: HTMLMeterElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/optimum MDN HTMLMeterElement.optimum documentation>
+getOptimum :: (MonadDOM m) => HTMLMeterElement -> m Double
+getOptimum self = liftDOM ((js_getOptimum (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLMeterElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: HTMLMeterElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/labels MDN HTMLMeterElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLMeterElement -> m NodeList
+getLabels self = liftDOM ((js_getLabels (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
@@ -1,61 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLModElement
-       (js_setCite, setCite, js_getCite, getCite, js_setDateTime,
-        setDateTime, js_getDateTime, getDateTime, HTMLModElement(..),
-        gTypeHTMLModElement)
+       (js_setCite, js_getCite, js_setDateTime, js_getDateTime, setCite, getCite, setDateTime, getDateTime, HTMLModElement(..), gTypeHTMLModElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"cite\"] = $2; })" js_setCite ::
-        HTMLModElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
-setCite ::
-        (MonadIO m, ToJSString val) => HTMLModElement -> val -> m ()
-setCite self val = liftIO (js_setCite self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cite\"]; })" js_getCite ::
-        HTMLModElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"cite\"] = $2; })"
+        js_setCite :: HTMLModElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLModElement/cite MDN HTMLModElement.cite documentation>
+setCite :: (MonadDOM m, ToJSString val) => HTMLModElement -> val -> m ()
+setCite self val = liftDOM (void ((js_setCite (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
-getCite ::
-        (MonadIO m, FromJSString result) => HTMLModElement -> m result
-getCite self = liftIO (fromJSString <$> (js_getCite self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dateTime\"] = $2; })"
-        js_setDateTime :: HTMLModElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"cite\"]; })"
+        js_getCite :: HTMLModElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLModElement/cite MDN HTMLModElement.cite documentation>
+getCite :: (MonadDOM m, FromJSString result) => HTMLModElement -> m result
+getCite self = liftDOM ((fromJSString <$> (js_getCite (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
-setDateTime ::
-            (MonadIO m, ToJSString val) => HTMLModElement -> val -> m ()
-setDateTime self val
-  = liftIO (js_setDateTime self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dateTime\"]; })" js_getDateTime
-        :: HTMLModElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"dateTime\"] = $2; })"
+        js_setDateTime :: HTMLModElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLModElement/dateTime MDN HTMLModElement.dateTime documentation>
+setDateTime :: (MonadDOM m, ToJSString val) => HTMLModElement -> val -> m ()
+setDateTime self val = liftDOM (void ((js_setDateTime (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
-getDateTime ::
-            (MonadIO m, FromJSString result) => HTMLModElement -> m result
-getDateTime self = liftIO (fromJSString <$> (js_getDateTime self))
+foreign import javascript unsafe "(($1) => { return $1[\"dateTime\"]; })"
+        js_getDateTime :: HTMLModElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLModElement/dateTime MDN HTMLModElement.dateTime documentation>
+getDateTime :: (MonadDOM m, FromJSString result) => HTMLModElement -> m result
+getDateTime self = liftDOM ((fromJSString <$> (js_getDateTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
@@ -1,87 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLOListElement
-       (js_setCompact, setCompact, js_getCompact, getCompact, js_setStart,
-        setStart, js_getStart, getStart, js_setReversed, setReversed,
-        js_getReversed, getReversed, js_setType, setType, js_getType,
-        getType, HTMLOListElement(..), gTypeHTMLOListElement)
+       (js_setReversed, js_getReversed, js_setStart, js_getStart, js_setType, js_getType, js_setCompact, js_getCompact, setReversed, getReversed, setStart, getStart, setType, getType, setCompact, getCompact, HTMLOListElement(..), gTypeHTMLOListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
-        js_setCompact :: HTMLOListElement -> Bool -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
-setCompact :: (MonadIO m) => HTMLOListElement -> Bool -> m ()
-setCompact self val = liftIO (js_setCompact self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
-        js_getCompact :: HTMLOListElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"reversed\"] = $2; })"
+        js_setReversed :: HTMLOListElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/reversed MDN HTMLOListElement.reversed documentation>
+setReversed :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
+setReversed self val = liftDOM (void ((js_setReversed (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
-getCompact :: (MonadIO m) => HTMLOListElement -> m Bool
-getCompact self = liftIO (js_getCompact self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"start\"] = $2; })" js_setStart
-        :: HTMLOListElement -> Int -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"reversed\"]; })"
+        js_getReversed :: HTMLOListElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/reversed MDN HTMLOListElement.reversed documentation>
+getReversed :: (MonadDOM m) => HTMLOListElement -> m Bool
+getReversed self = liftDOM ((js_getReversed (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
-setStart :: (MonadIO m) => HTMLOListElement -> Int -> m ()
-setStart self val = liftIO (js_setStart self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"start\"]; })" js_getStart ::
-        HTMLOListElement -> IO Int
+foreign import javascript safe "(($1, $2) => { $1[\"start\"] = $2; })"
+        js_setStart :: HTMLOListElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/start MDN HTMLOListElement.start documentation>
+setStart :: (MonadDOM m) => HTMLOListElement -> Int -> m ()
+setStart self val = liftDOM (void ((js_setStart (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
-getStart :: (MonadIO m) => HTMLOListElement -> m Int
-getStart self = liftIO (js_getStart self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"reversed\"] = $2; })"
-        js_setReversed :: HTMLOListElement -> Bool -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"start\"]; })"
+        js_getStart :: HTMLOListElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/start MDN HTMLOListElement.start documentation>
+getStart :: (MonadDOM m) => HTMLOListElement -> m Int
+getStart self = liftDOM ((js_getStart (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
-setReversed :: (MonadIO m) => HTMLOListElement -> Bool -> m ()
-setReversed self val = liftIO (js_setReversed self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"reversed\"] ? 1 : 0); })"
-        js_getReversed :: HTMLOListElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLOListElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/type MDN HTMLOListElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLOListElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
-getReversed :: (MonadIO m) => HTMLOListElement -> m Bool
-getReversed self = liftIO (js_getReversed self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLOListElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLOListElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/type MDN HTMLOListElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLOListElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLOListElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLOListElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"compact\"] = $2; })"
+        js_setCompact :: HTMLOListElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/compact MDN HTMLOListElement.compact documentation>
+setCompact :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
+setCompact self val = liftDOM (void ((js_setCompact (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLOListElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
+foreign import javascript unsafe "(($1) => { return $1[\"compact\"]; })"
+        js_getCompact :: HTMLOListElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/compact MDN HTMLOListElement.compact documentation>
+getCompact :: (MonadDOM m) => HTMLOListElement -> m Bool
+getCompact self = liftDOM ((js_getCompact (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
@@ -1,380 +1,313 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
-       (js_checkValidity, checkValidity, checkValidity_,
-        js_reportValidity, reportValidity, reportValidity_,
-        js_setCustomValidity, setCustomValidity, js_getSVGDocument,
-        getSVGDocument, getSVGDocument_, js_getForm, getForm, js_setCode,
-        setCode, js_getCode, getCode, js_setAlign, setAlign, js_getAlign,
-        getAlign, js_setArchive, setArchive, js_getArchive, getArchive,
-        js_setBorder, setBorder, js_getBorder, getBorder, js_setCodeBase,
-        setCodeBase, js_getCodeBase, getCodeBase, js_setCodeType,
-        setCodeType, js_getCodeType, getCodeType, js_setData, setData,
-        js_getData, getData, js_setDeclare, setDeclare, js_getDeclare,
-        getDeclare, js_setHeight, setHeight, js_getHeight, getHeight,
-        js_setHspace, setHspace, js_getHspace, getHspace, js_setName,
-        setName, js_getName, getName, js_setStandby, setStandby,
-        js_getStandby, getStandby, js_setType, setType, js_getType,
-        getType, js_setUseMap, setUseMap, js_getUseMap, getUseMap,
-        js_setVspace, setVspace, js_getVspace, getVspace, js_setWidth,
-        setWidth, js_getWidth, getWidth, js_getWillValidate,
-        getWillValidate, js_getValidity, getValidity,
-        js_getValidationMessage, getValidationMessage,
-        js_getContentDocument, getContentDocument, HTMLObjectElement(..),
-        gTypeHTMLObjectElement)
+       (js_checkValidity, js_getSVGDocument, js_reportValidity, js_setCustomValidity, js_setData, js_getData, js_setType, js_getType, js_setName, js_getName, js_getForm, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_getContentDocument, js_getContentWindow, js_getWillValidate, js_getValidity, js_getValidationMessage, js_setAlign, js_getAlign, js_setArchive, js_getArchive, js_setCode, js_getCode, js_setDeclare, js_getDeclare, js_setHspace, js_getHspace, js_setStandby, js_getStandby, js_setVspace, js_getVspace, js_setCodeBase, js_getCodeBase, js_setCodeType, js_getCodeType, js_setUseMap, js_getUseMap, js_setBorder, js_getBorder, checkValidity, checkValidity_, getSVGDocument, getSVGDocument_, getSVGDocumentUnsafe, getSVGDocumentUnchecked, reportValidity, reportValidity_, setCustomValidity, setData, getData, setType, getType, setName, getName, getForm, getFormUnsafe, getFormUnchecked, setWidth, getWidth, setHeight, getHeight, getContentDocument, getContentDocumentUnsafe, getContentDocumentUnchecked, getContentWindow, getContentWindowUnsafe, getContentWindowUnchecked, getWillValidate, getValidity, getValidationMessage, setAlign, getAlign, setArchive, getArchive, setCode, getCode, setDeclare, getDeclare, setHspace, getHspace, setStandby, getStandby, setVspace, getVspace, setCodeBase, getCodeBase, setCodeType, getCodeType, setUseMap, getUseMap, setBorder, getBorder, HTMLObjectElement(..), gTypeHTMLObjectElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLObjectElement -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLObjectElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLObjectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/checkValidity MDN HTMLObjectElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLObjectElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLObjectElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLObjectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/checkValidity MDN HTMLObjectElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLObjectElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.reportValidity Mozilla HTMLObjectElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLObjectElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
+foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
+        js_getSVGDocument :: HTMLObjectElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/getSVGDocument MDN HTMLObjectElement.getSVGDocument documentation>
+getSVGDocument :: (MonadDOM m) => HTMLObjectElement -> m (Maybe Document)
+getSVGDocument self = liftDOM (((js_getSVGDocument (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.reportValidity Mozilla HTMLObjectElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLObjectElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/getSVGDocument MDN HTMLObjectElement.getSVGDocument documentation>
+getSVGDocument_ :: (MonadDOM m) => HTMLObjectElement -> m ()
+getSVGDocument_ self = liftDOM (void ((js_getSVGDocument (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/getSVGDocument MDN HTMLObjectElement.getSVGDocument documentation>
+getSVGDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m Document
+getSVGDocumentUnsafe self = liftDOM ((((js_getSVGDocument (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/getSVGDocument MDN HTMLObjectElement.getSVGDocument documentation>
+getSVGDocumentUnchecked :: (MonadDOM m) => HTMLObjectElement -> m Document
+getSVGDocumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getSVGDocument (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLObjectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/reportValidity MDN HTMLObjectElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLObjectElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/reportValidity MDN HTMLObjectElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLObjectElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
         js_setCustomValidity :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/setCustomValidity MDN HTMLObjectElement.setCustomValidity documentation>
+setCustomValidity :: (MonadDOM m, ToJSString error) => HTMLObjectElement -> error -> m ()
+setCustomValidity self error = liftDOM (void ((js_setCustomValidity (self) (toJSString error))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.setCustomValidity Mozilla HTMLObjectElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) => HTMLObjectElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
-        js_getSVGDocument :: HTMLObjectElement -> IO Document
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/data MDN HTMLObjectElement.data documentation>
+setData :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadIO m) => HTMLObjectElement -> m Document
-getSVGDocument self = liftIO (js_getSVGDocument self)
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/data MDN HTMLObjectElement.data documentation>
+getData :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getData self = liftDOM ((fromJSString <$> (js_getData (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
-getSVGDocument_ :: (MonadIO m) => HTMLObjectElement -> m ()
-getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLObjectElement -> IO HTMLFormElement
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/type MDN HTMLObjectElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.form Mozilla HTMLObjectElement.form documentation> 
-getForm :: (MonadIO m) => HTMLObjectElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"code\"] = $2; })" js_setCode ::
-        HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/type MDN HTMLObjectElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
-setCode ::
-        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setCode self val = liftIO (js_setCode self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/name MDN HTMLObjectElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
-getCode ::
-        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getCode self = liftIO (fromJSString <$> (js_getCode self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/name MDN HTMLObjectElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLObjectElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/form MDN HTMLObjectElement.form documentation>
+getForm :: (MonadDOM m) => HTMLObjectElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"archive\"] = $2; })"
-        js_setArchive :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/form MDN HTMLObjectElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.archive Mozilla HTMLObjectElement.archive documentation> 
-setArchive ::
-           (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setArchive self val = liftIO (js_setArchive self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"archive\"]; })" js_getArchive ::
-        HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/form MDN HTMLObjectElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLObjectElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.archive Mozilla HTMLObjectElement.archive documentation> 
-getArchive ::
-           (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getArchive self = liftIO (fromJSString <$> (js_getArchive self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"border\"] = $2; })"
-        js_setBorder :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/width MDN HTMLObjectElement.width documentation>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
-setBorder ::
-          (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setBorder self val = liftIO (js_setBorder self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })" js_getBorder ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/width MDN HTMLObjectElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
-getBorder ::
-          (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getBorder self = liftIO (fromJSString <$> (js_getBorder self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"codeBase\"] = $2; })"
-        js_setCodeBase :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/height MDN HTMLObjectElement.height documentation>
+setHeight :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
-setCodeBase ::
-            (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setCodeBase self val
-  = liftIO (js_setCodeBase self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"codeBase\"]; })" js_getCodeBase
-        :: HTMLObjectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/height MDN HTMLObjectElement.height documentation>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getHeight self = liftDOM ((fromJSString <$> (js_getHeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
-getCodeBase ::
-            (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getCodeBase self = liftIO (fromJSString <$> (js_getCodeBase self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"codeType\"] = $2; })"
-        js_setCodeType :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
+        js_getContentDocument :: HTMLObjectElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentDocument MDN HTMLObjectElement.contentDocument documentation>
+getContentDocument :: (MonadDOM m) => HTMLObjectElement -> m (Maybe Document)
+getContentDocument self = liftDOM (((js_getContentDocument (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
-setCodeType ::
-            (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setCodeType self val
-  = liftIO (js_setCodeType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"codeType\"]; })" js_getCodeType
-        :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentDocument MDN HTMLObjectElement.contentDocument documentation>
+getContentDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m Document
+getContentDocumentUnsafe self = liftDOM ((((js_getContentDocument (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
-getCodeType ::
-            (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getCodeType self = liftIO (fromJSString <$> (js_getCodeType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"data\"] = $2; })" js_setData ::
-        HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentDocument MDN HTMLObjectElement.contentDocument documentation>
+getContentDocumentUnchecked :: (MonadDOM m) => HTMLObjectElement -> m Document
+getContentDocumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentDocument (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
-setData ::
-        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setData self val = liftIO (js_setData self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"contentWindow\"]; })"
+        js_getContentWindow :: HTMLObjectElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentWindow MDN HTMLObjectElement.contentWindow documentation>
+getContentWindow :: (MonadDOM m) => HTMLObjectElement -> m (Maybe Window)
+getContentWindow self = liftDOM (((js_getContentWindow (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
-getData ::
-        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getData self = liftIO (fromJSString <$> (js_getData self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"declare\"] = $2; })"
-        js_setDeclare :: HTMLObjectElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentWindow MDN HTMLObjectElement.contentWindow documentation>
+getContentWindowUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m Window
+getContentWindowUnsafe self = liftDOM ((((js_getContentWindow (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.declare Mozilla HTMLObjectElement.declare documentation> 
-setDeclare :: (MonadIO m) => HTMLObjectElement -> Bool -> m ()
-setDeclare self val = liftIO (js_setDeclare self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"declare\"] ? 1 : 0); })"
-        js_getDeclare :: HTMLObjectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentWindow MDN HTMLObjectElement.contentWindow documentation>
+getContentWindowUnchecked :: (MonadDOM m) => HTMLObjectElement -> m Window
+getContentWindowUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentWindow (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.declare Mozilla HTMLObjectElement.declare documentation> 
-getDeclare :: (MonadIO m) => HTMLObjectElement -> m Bool
-getDeclare self = liftIO (js_getDeclare self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
-        js_setHeight :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
+        js_getWillValidate :: HTMLObjectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/willValidate MDN HTMLObjectElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLObjectElement -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
-setHeight ::
-          (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setHeight self val = liftIO (js_setHeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: HTMLObjectElement -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/validity MDN HTMLObjectElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLObjectElement -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
-getHeight ::
-          (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getHeight self = liftIO (fromJSString <$> (js_getHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
-        js_setHspace :: HTMLObjectElement -> Word -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/validationMessage MDN HTMLObjectElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
-setHspace :: (MonadIO m) => HTMLObjectElement -> Word -> m ()
-setHspace self val = liftIO (js_setHspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
-        HTMLObjectElement -> IO Word
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-align HTMLObjectElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
-getHspace :: (MonadIO m) => HTMLObjectElement -> m Word
-getHspace self = liftIO (js_getHspace self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLObjectElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-align HTMLObjectElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"archive\"] = $2; })"
+        js_setArchive :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-archive HTMLObjectElement.archive specification>
+setArchive :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setArchive self val = liftDOM (void ((js_setArchive (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"standby\"] = $2; })"
-        js_setStandby :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"archive\"]; })"
+        js_getArchive :: HTMLObjectElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-archive HTMLObjectElement.archive specification>
+getArchive :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getArchive self = liftDOM ((fromJSString <$> (js_getArchive (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
-setStandby ::
-           (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setStandby self val = liftIO (js_setStandby self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"standby\"]; })" js_getStandby ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"code\"] = $2; })"
+        js_setCode :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-code HTMLObjectElement.code specification>
+setCode :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCode self val = liftDOM (void ((js_setCode (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
-getStandby ::
-           (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getStandby self = liftIO (fromJSString <$> (js_getStandby self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: HTMLObjectElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-code HTMLObjectElement.code specification>
+getCode :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getCode self = liftDOM ((fromJSString <$> (js_getCode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"declare\"] = $2; })"
+        js_setDeclare :: HTMLObjectElement -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-declare HTMLObjectElement.declare specification>
+setDeclare :: (MonadDOM m) => HTMLObjectElement -> Bool -> m ()
+setDeclare self val = liftDOM (void ((js_setDeclare (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"useMap\"] = $2; })"
-        js_setUseMap :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"declare\"]; })"
+        js_getDeclare :: HTMLObjectElement -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-declare HTMLObjectElement.declare specification>
+getDeclare :: (MonadDOM m) => HTMLObjectElement -> m Bool
+getDeclare self = liftDOM ((js_getDeclare (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
-setUseMap ::
-          (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setUseMap self val = liftIO (js_setUseMap self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })" js_getUseMap ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"hspace\"] = $2; })"
+        js_setHspace :: HTMLObjectElement -> Word -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-hspace HTMLObjectElement.hspace specification>
+setHspace :: (MonadDOM m) => HTMLObjectElement -> Word -> m ()
+setHspace self val = liftDOM (void ((js_setHspace (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
-getUseMap ::
-          (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getUseMap self = liftIO (fromJSString <$> (js_getUseMap self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })"
+        js_getHspace :: HTMLObjectElement -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-hspace HTMLObjectElement.hspace specification>
+getHspace :: (MonadDOM m) => HTMLObjectElement -> m Word
+getHspace self = liftDOM ((js_getHspace (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"standby\"] = $2; })"
+        js_setStandby :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-standby HTMLObjectElement.standby specification>
+setStandby :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setStandby self val = liftDOM (void ((js_setStandby (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"standby\"]; })"
+        js_getStandby :: HTMLObjectElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-standby HTMLObjectElement.standby specification>
+getStandby :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getStandby self = liftDOM ((fromJSString <$> (js_getStandby (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"vspace\"] = $2; })"
         js_setVspace :: HTMLObjectElement -> Word -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-vspace HTMLObjectElement.vspace specification>
+setVspace :: (MonadDOM m) => HTMLObjectElement -> Word -> m ()
+setVspace self val = liftDOM (void ((js_setVspace (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
-setVspace :: (MonadIO m) => HTMLObjectElement -> Word -> m ()
-setVspace self val = liftIO (js_setVspace self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
-        HTMLObjectElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })"
+        js_getVspace :: HTMLObjectElement -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-vspace HTMLObjectElement.vspace specification>
+getVspace :: (MonadDOM m) => HTMLObjectElement -> m Word
+getVspace self = liftDOM ((js_getVspace (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
-getVspace :: (MonadIO m) => HTMLObjectElement -> m Word
-getVspace self = liftIO (js_getVspace self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLObjectElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"codeBase\"] = $2; })"
+        js_setCodeBase :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-codebase HTMLObjectElement.codeBase specification>
+setCodeBase :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCodeBase self val = liftDOM (void ((js_setCodeBase (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLObjectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"codeBase\"]; })"
+        js_getCodeBase :: HTMLObjectElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-codebase HTMLObjectElement.codeBase specification>
+getCodeBase :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getCodeBase self = liftDOM ((fromJSString <$> (js_getCodeBase (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
-        js_getWillValidate :: HTMLObjectElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"codeType\"] = $2; })"
+        js_setCodeType :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-codetype HTMLObjectElement.codeType specification>
+setCodeType :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCodeType self val = liftDOM (void ((js_setCodeType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.willValidate Mozilla HTMLObjectElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLObjectElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLObjectElement -> IO ValidityState
+foreign import javascript unsafe "(($1) => { return $1[\"codeType\"]; })"
+        js_getCodeType :: HTMLObjectElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-codetype HTMLObjectElement.codeType specification>
+getCodeType :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getCodeType self = liftDOM ((fromJSString <$> (js_getCodeType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validity Mozilla HTMLObjectElement.validity documentation> 
-getValidity :: (MonadIO m) => HTMLObjectElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
-        js_getValidationMessage :: HTMLObjectElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"useMap\"] = $2; })"
+        js_setUseMap :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/useMap MDN HTMLObjectElement.useMap documentation>
+setUseMap :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setUseMap self val = liftDOM (void ((js_setUseMap (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validationMessage Mozilla HTMLObjectElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
-        js_getContentDocument :: HTMLObjectElement -> IO Document
+foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })"
+        js_getUseMap :: HTMLObjectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/useMap MDN HTMLObjectElement.useMap documentation>
+getUseMap :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getUseMap self = liftDOM ((fromJSString <$> (js_getUseMap (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.contentDocument Mozilla HTMLObjectElement.contentDocument documentation> 
-getContentDocument ::
-                   (MonadIO m) => HTMLObjectElement -> m Document
-getContentDocument self = liftIO (js_getContentDocument self)
+foreign import javascript safe "(($1, $2) => { $1[\"border\"] = $2; })"
+        js_setBorder :: HTMLObjectElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-border HTMLObjectElement.border specification>
+setBorder :: (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setBorder self val = liftDOM (void ((js_setBorder (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })"
+        js_getBorder :: HTMLObjectElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-border HTMLObjectElement.border specification>
+getBorder :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getBorder self = liftDOM ((fromJSString <$> (js_getBorder (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
@@ -1,58 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
-       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
-        js_setLabel, setLabel, js_getLabel, getLabel,
-        HTMLOptGroupElement(..), gTypeHTMLOptGroupElement)
+       (js_setDisabled, js_getDisabled, js_setLabel, js_getLabel, setDisabled, getDisabled, setLabel, getLabel, HTMLOptGroupElement(..), gTypeHTMLOptGroupElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
         js_setDisabled :: HTMLOptGroupElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptGroupElement/disabled MDN HTMLOptGroupElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLOptGroupElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLOptGroupElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
         js_getDisabled :: HTMLOptGroupElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLOptGroupElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
-        :: HTMLOptGroupElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptGroupElement/disabled MDN HTMLOptGroupElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLOptGroupElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
-setLabel ::
-         (MonadIO m, ToJSString val) => HTMLOptGroupElement -> val -> m ()
-setLabel self val = liftIO (js_setLabel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        HTMLOptGroupElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: HTMLOptGroupElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptGroupElement/label MDN HTMLOptGroupElement.label documentation>
+setLabel :: (MonadDOM m, ToJSString val) => HTMLOptGroupElement -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => HTMLOptGroupElement -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: HTMLOptGroupElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptGroupElement/label MDN HTMLOptGroupElement.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => HTMLOptGroupElement -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
@@ -1,139 +1,109 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLOptionElement
-       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
-        js_getForm, getForm, js_setLabel, setLabel, js_getLabel, getLabel,
-        js_setDefaultSelected, setDefaultSelected, js_getDefaultSelected,
-        getDefaultSelected, js_setSelected, setSelected, js_getSelected,
-        getSelected, js_setValue, setValue, js_getValue, getValue,
-        js_setText, setText, js_getText, getText, js_getIndex, getIndex,
-        HTMLOptionElement(..), gTypeHTMLOptionElement)
+       (js_setDisabled, js_getDisabled, js_getForm, js_setLabel, js_getLabel, js_setDefaultSelected, js_getDefaultSelected, js_setSelected, js_getSelected, js_setValue, js_getValue, js_setText, js_getText, js_getIndex, setDisabled, getDisabled, getForm, getFormUnsafe, getFormUnchecked, setLabel, getLabel, setDefaultSelected, getDefaultSelected, setSelected, getSelected, setValue, getValue, setText, getText, getIndex, HTMLOptionElement(..), gTypeHTMLOptionElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
         js_setDisabled :: HTMLOptionElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/disabled MDN HTMLOptionElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLOptionElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
         js_getDisabled :: HTMLOptionElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/disabled MDN HTMLOptionElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLOptionElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLOptionElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLOptionElement -> IO HTMLFormElement
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLOptionElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/form MDN HTMLOptionElement.form documentation>
+getForm :: (MonadDOM m) => HTMLOptionElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.form Mozilla HTMLOptionElement.form documentation> 
-getForm :: (MonadIO m) => HTMLOptionElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
-        :: HTMLOptionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/form MDN HTMLOptionElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLOptionElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.label Mozilla HTMLOptionElement.label documentation> 
-setLabel ::
-         (MonadIO m, ToJSString val) => HTMLOptionElement -> val -> m ()
-setLabel self val = liftIO (js_setLabel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        HTMLOptionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/form MDN HTMLOptionElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLOptionElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.label Mozilla HTMLOptionElement.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => HTMLOptionElement -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultSelected\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: HTMLOptionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/label MDN HTMLOptionElement.label documentation>
+setLabel :: (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: HTMLOptionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/label MDN HTMLOptionElement.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"defaultSelected\"] = $2; })"
         js_setDefaultSelected :: HTMLOptionElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/defaultSelected MDN HTMLOptionElement.defaultSelected documentation>
+setDefaultSelected :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
+setDefaultSelected self val = liftDOM (void ((js_setDefaultSelected (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
-setDefaultSelected ::
-                   (MonadIO m) => HTMLOptionElement -> Bool -> m ()
-setDefaultSelected self val
-  = liftIO (js_setDefaultSelected self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"defaultSelected\"] ? 1 : 0); })" js_getDefaultSelected ::
-        HTMLOptionElement -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"defaultSelected\"]; })"
+        js_getDefaultSelected :: HTMLOptionElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/defaultSelected MDN HTMLOptionElement.defaultSelected documentation>
+getDefaultSelected :: (MonadDOM m) => HTMLOptionElement -> m Bool
+getDefaultSelected self = liftDOM ((js_getDefaultSelected (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
-getDefaultSelected :: (MonadIO m) => HTMLOptionElement -> m Bool
-getDefaultSelected self = liftIO (js_getDefaultSelected self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selected\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"selected\"] = $2; })"
         js_setSelected :: HTMLOptionElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/selected MDN HTMLOptionElement.selected documentation>
+setSelected :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
+setSelected self val = liftDOM (void ((js_setSelected (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
-setSelected :: (MonadIO m) => HTMLOptionElement -> Bool -> m ()
-setSelected self val = liftIO (js_setSelected self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"selected\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"selected\"]; })"
         js_getSelected :: HTMLOptionElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
-getSelected :: (MonadIO m) => HTMLOptionElement -> m Bool
-getSelected self = liftIO (js_getSelected self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLOptionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/selected MDN HTMLOptionElement.selected documentation>
+getSelected :: (MonadDOM m) => HTMLOptionElement -> m Bool
+getSelected self = liftDOM ((js_getSelected (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLOptionElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLOptionElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLOptionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/value MDN HTMLOptionElement.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLOptionElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
-        HTMLOptionElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLOptionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/value MDN HTMLOptionElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
-setText ::
-        (MonadIO m, ToJSString val) => HTMLOptionElement -> val -> m ()
-setText self val = liftIO (js_setText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
-        HTMLOptionElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: HTMLOptionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/text MDN HTMLOptionElement.text documentation>
+setText :: (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
-getText ::
-        (MonadIO m, FromJSString result) => HTMLOptionElement -> m result
-getText self = liftIO (fromJSString <$> (js_getText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })" js_getIndex ::
-        HTMLOptionElement -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: HTMLOptionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/text MDN HTMLOptionElement.text documentation>
+getText :: (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getText self = liftDOM ((fromJSString <$> (js_getText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.index Mozilla HTMLOptionElement.index documentation> 
-getIndex :: (MonadIO m) => HTMLOptionElement -> m Int
-getIndex self = liftIO (js_getIndex self)
+foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })"
+        js_getIndex :: HTMLOptionElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/index MDN HTMLOptionElement.index documentation>
+getIndex :: (MonadDOM m) => HTMLOptionElement -> m Int
+getIndex self = liftDOM ((js_getIndex (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
@@ -1,150 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
-       (js_addBefore, addBefore, js_remove, remove, js_item, item, item_,
-        itemUnsafe, itemUnchecked, js_namedItem, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, js_setLength, setLength,
-        js_getLength, getLength, js_setSelectedIndex, setSelectedIndex,
-        js_getSelectedIndex, getSelectedIndex, HTMLOptionsCollection(..),
-        gTypeHTMLOptionsCollection)
+       (js_add, js_remove, js_setLength, js_getLength, js_setSelectedIndex, js_getSelectedIndex, add, remove, setLength, getLength, setSelectedIndex, getSelectedIndex, HTMLOptionsCollection(..), gTypeHTMLOptionsCollection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_addBefore
-        ::
-        HTMLOptionsCollection ->
-          HTMLOptionElementOrGroup -> Optional HTMLElementOrLong -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
-addBefore ::
-          (MonadIO m, IsHTMLOptionElementOrGroup element,
-           IsHTMLElementOrLong before) =>
-            HTMLOptionsCollection -> element -> Maybe before -> m ()
-addBefore self element before
-  = liftIO
-      (mapM toJSVal before >>=
-         \ before' ->
-           toJSVal element >>=
-             \ element' -> js_addBefore self (HTMLOptionElementOrGroup element')
-             (maybeToOptional (fmap HTMLElementOrLong before')))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"remove\"]($2); })" js_remove ::
-        HTMLOptionsCollection -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.remove Mozilla HTMLOptionsCollection.remove documentation> 
-remove :: (MonadIO m) => HTMLOptionsCollection -> Int -> m ()
-remove self index = liftIO (js_remove self index)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        HTMLOptionsCollection -> Word -> IO (Nullable HTMLOptionElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-item ::
-     (MonadIO m) =>
-       HTMLOptionsCollection -> Word -> m (Maybe HTMLOptionElement)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-item_ :: (MonadIO m) => HTMLOptionsCollection -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) =>
-             HTMLOptionsCollection -> Word -> m HTMLOptionElement
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-itemUnchecked ::
-              (MonadIO m) => HTMLOptionsCollection -> Word -> m HTMLOptionElement
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        HTMLOptionsCollection ->
-          JSString -> IO (Nullable HTMLOptionElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            HTMLOptionsCollection -> name -> m (Maybe HTMLOptionElement)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) =>
-             HTMLOptionsCollection -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })"
+        js_add :: HTMLOptionsCollection -> HTMLOptionElementOrHTMLOptGroupElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/add MDN HTMLOptionsCollection.add documentation>
+add :: (MonadDOM m, IsHTMLOptionElementOrHTMLOptGroupElement element, IsHTMLElementOrInt before) => HTMLOptionsCollection -> element -> Maybe before -> m ()
+add self element before = liftDOM (void (((toJSVal before) >>= \a3' -> js_add (self) (Types.toHTMLOptionElementOrHTMLOptGroupElement element) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  HTMLOptionsCollection -> name -> m HTMLOptionElement
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return $1[\"remove\"]($2); })"
+        js_remove :: HTMLOptionsCollection -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/remove MDN HTMLOptionsCollection.remove documentation>
+remove :: (MonadDOM m) => HTMLOptionsCollection -> Int -> m ()
+remove self index = liftDOM (void ((js_remove (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) =>
-                     HTMLOptionsCollection -> name -> m HTMLOptionElement
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })" js_setLength
-        :: HTMLOptionsCollection -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })"
+        js_setLength :: HTMLOptionsCollection -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/length MDN HTMLOptionsCollection.length documentation>
+setLength :: (MonadDOM m) => HTMLOptionsCollection -> Word -> m ()
+setLength self val = liftDOM (void ((js_setLength (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
-setLength :: (MonadIO m) => HTMLOptionsCollection -> Word -> m ()
-setLength self val = liftIO (js_setLength self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        HTMLOptionsCollection -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: HTMLOptionsCollection -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/length MDN HTMLOptionsCollection.length documentation>
+getLength :: (MonadDOM m) => HTMLOptionsCollection -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
-getLength :: (MonadIO m) => HTMLOptionsCollection -> m Word
-getLength self = liftIO (js_getLength self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selectedIndex\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"selectedIndex\"] = $2; })"
         js_setSelectedIndex :: HTMLOptionsCollection -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/selectedIndex MDN HTMLOptionsCollection.selectedIndex documentation>
+setSelectedIndex :: (MonadDOM m) => HTMLOptionsCollection -> Int -> m ()
+setSelectedIndex self val = liftDOM (void ((js_setSelectedIndex (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
-setSelectedIndex ::
-                 (MonadIO m) => HTMLOptionsCollection -> Int -> m ()
-setSelectedIndex self val = liftIO (js_setSelectedIndex self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"selectedIndex\"]; })"
         js_getSelectedIndex :: HTMLOptionsCollection -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
-getSelectedIndex :: (MonadIO m) => HTMLOptionsCollection -> m Int
-getSelectedIndex self = liftIO (js_getSelectedIndex self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/selectedIndex MDN HTMLOptionsCollection.selectedIndex documentation>
+getSelectedIndex :: (MonadDOM m) => HTMLOptionsCollection -> m Int
+getSelectedIndex self = liftDOM ((js_getSelectedIndex (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOrSVGOrMathMLElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOrSVGOrMathMLElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOrSVGOrMathMLElement.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLOrSVGOrMathMLElement
+       (js_blur, js_focus, js_focus', js_getDataset, js_setNonce, js_getNonce, js_setAutofocus, js_getAutofocus, js_setTabIndex, js_getTabIndex, blur, focus, focus', getDataset, setNonce, getNonce, setAutofocus, getAutofocus, setTabIndex, getTabIndex, HTMLOrSVGOrMathMLElement(..), gTypeHTMLOrSVGOrMathMLElement, IsHTMLOrSVGOrMathMLElement, toHTMLOrSVGOrMathMLElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"blur\"](); })"
+        js_blur :: HTMLOrSVGOrMathMLElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/blur MDN HTMLOrSVGOrMathMLElement.blur documentation>
+blur :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m ()
+blur self = liftDOM (void ((js_blur ((Types.toHTMLOrSVGOrMathMLElement self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"focus\"](); })"
+        js_focus :: HTMLOrSVGOrMathMLElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/focus MDN HTMLOrSVGOrMathMLElement.focus documentation>
+focus :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m ()
+focus self = liftDOM (void ((js_focus ((Types.toHTMLOrSVGOrMathMLElement self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"focus\"]($2); })"
+        js_focus' :: HTMLOrSVGOrMathMLElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/focus MDN HTMLOrSVGOrMathMLElement.focus documentation>
+focus' :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> Maybe FocusOptions -> m ()
+focus' self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_focus' ((Types.toHTMLOrSVGOrMathMLElement self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataset\"]; })"
+        js_getDataset :: HTMLOrSVGOrMathMLElement -> IO DOMStringMap
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/dataset MDN HTMLOrSVGOrMathMLElement.dataset documentation>
+getDataset :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m DOMStringMap
+getDataset self = liftDOM ((js_getDataset ((Types.toHTMLOrSVGOrMathMLElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"nonce\"] = $2; })"
+        js_setNonce :: HTMLOrSVGOrMathMLElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/nonce MDN HTMLOrSVGOrMathMLElement.nonce documentation>
+setNonce :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self, ToJSString val) => self -> val -> m ()
+setNonce self val = liftDOM (void ((js_setNonce ((Types.toHTMLOrSVGOrMathMLElement self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"nonce\"]; })"
+        js_getNonce :: HTMLOrSVGOrMathMLElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/nonce MDN HTMLOrSVGOrMathMLElement.nonce documentation>
+getNonce :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self, FromJSString result) => self -> m result
+getNonce self = liftDOM ((fromJSString <$> (js_getNonce ((Types.toHTMLOrSVGOrMathMLElement self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
+        js_setAutofocus :: HTMLOrSVGOrMathMLElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autofocus MDN HTMLOrSVGOrMathMLElement.autofocus documentation>
+setAutofocus :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> Bool -> m ()
+setAutofocus self val = liftDOM (void ((js_setAutofocus ((Types.toHTMLOrSVGOrMathMLElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autofocus\"]; })"
+        js_getAutofocus :: HTMLOrSVGOrMathMLElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autofocus MDN HTMLOrSVGOrMathMLElement.autofocus documentation>
+getAutofocus :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m Bool
+getAutofocus self = liftDOM ((js_getAutofocus ((Types.toHTMLOrSVGOrMathMLElement self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tabIndex\"] = $2; })"
+        js_setTabIndex :: HTMLOrSVGOrMathMLElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/tabIndex MDN HTMLOrSVGOrMathMLElement.tabIndex documentation>
+setTabIndex :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> Int -> m ()
+setTabIndex self val = liftDOM (void ((js_setTabIndex ((Types.toHTMLOrSVGOrMathMLElement self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tabIndex\"]; })"
+        js_getTabIndex :: HTMLOrSVGOrMathMLElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/tabIndex MDN HTMLOrSVGOrMathMLElement.tabIndex documentation>
+getTabIndex :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m Int
+getTabIndex self = liftDOM ((js_getTabIndex ((Types.toHTMLOrSVGOrMathMLElement self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
@@ -1,170 +1,129 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
-       (js_checkValidity, checkValidity, checkValidity_,
-        js_reportValidity, reportValidity, reportValidity_,
-        js_setCustomValidity, setCustomValidity, js_getHtmlFor, getHtmlFor,
-        js_getForm, getForm, js_setName, setName, js_getName, getName,
-        js_getType, getType, js_setDefaultValue, setDefaultValue,
-        js_getDefaultValue, getDefaultValue, js_setValue, setValue,
-        js_getValue, getValue, js_getWillValidate, getWillValidate,
-        js_getValidity, getValidity, js_getValidationMessage,
-        getValidationMessage, js_getLabels, getLabels,
-        HTMLOutputElement(..), gTypeHTMLOutputElement)
+       (js_checkValidity, js_reportValidity, js_setCustomValidity, js_getHtmlFor, js_getForm, js_setName, js_getName, js_getType, js_setDefaultValue, js_getDefaultValue, js_setValue, js_getValue, js_getWillValidate, js_getValidity, js_getValidationMessage, js_getLabels, checkValidity, checkValidity_, reportValidity, reportValidity_, setCustomValidity, getHtmlFor, getForm, getFormUnsafe, getFormUnchecked, setName, getName, getType, setDefaultValue, getDefaultValue, setValue, getValue, getWillValidate, getValidity, getValidationMessage, getLabels, HTMLOutputElement(..), gTypeHTMLOutputElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLOutputElement -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLOutputElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLOutputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/checkValidity MDN HTMLOutputElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLOutputElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLOutputElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLOutputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/checkValidity MDN HTMLOutputElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLOutputElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.reportValidity Mozilla HTMLOutputElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLOutputElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLOutputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/reportValidity MDN HTMLOutputElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLOutputElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.reportValidity Mozilla HTMLOutputElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLOutputElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/reportValidity MDN HTMLOutputElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLOutputElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
         js_setCustomValidity :: HTMLOutputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/setCustomValidity MDN HTMLOutputElement.setCustomValidity documentation>
+setCustomValidity :: (MonadDOM m, ToJSString error) => HTMLOutputElement -> error -> m ()
+setCustomValidity self error = liftDOM (void ((js_setCustomValidity (self) (toJSString error))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.setCustomValidity Mozilla HTMLOutputElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) => HTMLOutputElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })" js_getHtmlFor ::
-        HTMLOutputElement -> IO DOMTokenList
+foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })"
+        js_getHtmlFor :: HTMLOutputElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/htmlFor MDN HTMLOutputElement.htmlFor documentation>
+getHtmlFor :: (MonadDOM m) => HTMLOutputElement -> m DOMTokenList
+getHtmlFor self = liftDOM ((js_getHtmlFor (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.htmlFor Mozilla HTMLOutputElement.htmlFor documentation> 
-getHtmlFor :: (MonadIO m) => HTMLOutputElement -> m DOMTokenList
-getHtmlFor self = liftIO (js_getHtmlFor self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLOutputElement -> IO HTMLFormElement
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLOutputElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/form MDN HTMLOutputElement.form documentation>
+getForm :: (MonadDOM m) => HTMLOutputElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.form Mozilla HTMLOutputElement.form documentation> 
-getForm :: (MonadIO m) => HTMLOutputElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLOutputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/form MDN HTMLOutputElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLOutputElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.name Mozilla HTMLOutputElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLOutputElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLOutputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/form MDN HTMLOutputElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLOutputElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.name Mozilla HTMLOutputElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLOutputElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLOutputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/name MDN HTMLOutputElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLOutputElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.type Mozilla HTMLOutputElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLOutputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/name MDN HTMLOutputElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLOutputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/type MDN HTMLOutputElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
         js_setDefaultValue :: HTMLOutputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/defaultValue MDN HTMLOutputElement.defaultValue documentation>
+setDefaultValue :: (MonadDOM m, ToJSString val) => HTMLOutputElement -> val -> m ()
+setDefaultValue self val = liftDOM (void ((js_setDefaultValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
-setDefaultValue ::
-                (MonadIO m, ToJSString val) => HTMLOutputElement -> val -> m ()
-setDefaultValue self val
-  = liftIO (js_setDefaultValue self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
         js_getDefaultValue :: HTMLOutputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/defaultValue MDN HTMLOutputElement.defaultValue documentation>
+getDefaultValue :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getDefaultValue self = liftDOM ((fromJSString <$> (js_getDefaultValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
-getDefaultValue ::
-                (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
-getDefaultValue self
-  = liftIO (fromJSString <$> (js_getDefaultValue self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLOutputElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLOutputElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/value MDN HTMLOutputElement.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => HTMLOutputElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLOutputElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLOutputElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLOutputElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/value MDN HTMLOutputElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
         js_getWillValidate :: HTMLOutputElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/willValidate MDN HTMLOutputElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLOutputElement -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.willValidate Mozilla HTMLOutputElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLOutputElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLOutputElement -> IO ValidityState
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: HTMLOutputElement -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/validity MDN HTMLOutputElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLOutputElement -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validity Mozilla HTMLOutputElement.validity documentation> 
-getValidity :: (MonadIO m) => HTMLOutputElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
         js_getValidationMessage :: HTMLOutputElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validationMessage Mozilla HTMLOutputElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLOutputElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/validationMessage MDN HTMLOutputElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.labels Mozilla HTMLOutputElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLOutputElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: HTMLOutputElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/labels MDN HTMLOutputElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLOutputElement -> m NodeList
+getLabels self = liftDOM ((js_getLabels (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
@@ -1,44 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
-       (js_setAlign, setAlign, js_getAlign, getAlign,
-        HTMLParagraphElement(..), gTypeHTMLParagraphElement)
+       (js_setAlign, js_getAlign, setAlign, getAlign, HTMLParagraphElement(..), gTypeHTMLParagraphElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLParagraphElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLParagraphElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLParagraphElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLParagraphElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-p-align HTMLParagraphElement.align specification>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLParagraphElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) =>
-           HTMLParagraphElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLParagraphElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-p-align HTMLParagraphElement.align specification>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLParagraphElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
@@ -1,95 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLParamElement
-       (js_setName, setName, js_getName, getName, js_setType, setType,
-        js_getType, getType, js_setValue, setValue, js_getValue, getValue,
-        js_setValueType, setValueType, js_getValueType, getValueType,
-        HTMLParamElement(..), gTypeHTMLParamElement)
+       (js_setName, js_getName, js_setValue, js_getValue, js_setType, js_getType, js_setValueType, js_getValueType, setName, getName, setValue, getValue, setType, getType, setValueType, getValueType, HTMLParamElement(..), gTypeHTMLParamElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLParamElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLParamElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLParamElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-name HTMLParamElement.name specification>
+setName :: (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLParamElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLParamElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLParamElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-name HTMLParamElement.name specification>
+getName :: (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLParamElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLParamElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-value HTMLParamElement.value specification>
+setValue :: (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLParamElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLParamElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLParamElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-value HTMLParamElement.value specification>
+getValue :: (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLParamElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLParamElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-type HTMLParamElement.type specification>
+setType :: (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLParamElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"valueType\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLParamElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-type HTMLParamElement.type specification>
+getType :: (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"valueType\"] = $2; })"
         js_setValueType :: HTMLParamElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-valuetype HTMLParamElement.valueType specification>
+setValueType :: (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
+setValueType self val = liftDOM (void ((js_setValueType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
-setValueType ::
-             (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
-setValueType self val
-  = liftIO (js_setValueType self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"valueType\"]; })"
         js_getValueType :: HTMLParamElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
-getValueType ::
-             (MonadIO m, FromJSString result) => HTMLParamElement -> m result
-getValueType self
-  = liftIO (fromJSString <$> (js_getValueType self))
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-param-valuetype HTMLParamElement.valueType specification>
+getValueType :: (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
+getValueType self = liftDOM ((fromJSString <$> (js_getValueType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLPictureElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLPictureElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLPictureElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLPictureElement
+       (HTMLPictureElement(..), gTypeHTMLPictureElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
@@ -1,55 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLPreElement
-       (js_setWidth, setWidth, js_getWidth, getWidth, js_setWrap, setWrap,
-        js_getWrap, getWrap, HTMLPreElement(..), gTypeHTMLPreElement)
+       (js_setWidth, js_getWidth, setWidth, getWidth, HTMLPreElement(..), gTypeHTMLPreElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLPreElement -> Int -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
-setWidth :: (MonadIO m) => HTMLPreElement -> Int -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLPreElement -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
-getWidth :: (MonadIO m) => HTMLPreElement -> m Int
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"wrap\"] = $2; })" js_setWrap ::
-        HTMLPreElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
-setWrap :: (MonadIO m) => HTMLPreElement -> Bool -> m ()
-setWrap self val = liftIO (js_setWrap self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"wrap\"] ? 1 : 0); })"
-        js_getWrap :: HTMLPreElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLPreElement -> Int -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-pre-width HTMLPreElement.width specification>
+setWidth :: (MonadDOM m) => HTMLPreElement -> Int -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
-getWrap :: (MonadIO m) => HTMLPreElement -> m Bool
-getWrap self = liftIO (js_getWrap self)
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLPreElement -> IO Int
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-pre-width HTMLPreElement.width specification>
+getWidth :: (MonadDOM m) => HTMLPreElement -> m Int
+getWidth self = liftDOM ((js_getWidth (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
@@ -1,70 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLProgressElement
-       (js_setValue, setValue, js_getValue, getValue, js_setMax, setMax,
-        js_getMax, getMax, js_getPosition, getPosition, js_getLabels,
-        getLabels, HTMLProgressElement(..), gTypeHTMLProgressElement)
+       (js_setValue, js_getValue, js_setMax, js_getMax, js_getPosition, js_getLabels, setValue, getValue, setMax, getMax, getPosition, getLabels, HTMLProgressElement(..), gTypeHTMLProgressElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLProgressElement -> Double -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
-setValue :: (MonadIO m) => HTMLProgressElement -> Double -> m ()
-setValue self val = liftIO (js_setValue self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLProgressElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLProgressElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/value MDN HTMLProgressElement.value documentation>
+setValue :: (MonadDOM m) => HTMLProgressElement -> Double -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
-getValue :: (MonadIO m) => HTMLProgressElement -> m Double
-getValue self = liftIO (js_getValue self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"max\"] = $2; })" js_setMax ::
-        HTMLProgressElement -> Double -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLProgressElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/value MDN HTMLProgressElement.value documentation>
+getValue :: (MonadDOM m) => HTMLProgressElement -> m Double
+getValue self = liftDOM ((js_getValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
-setMax :: (MonadIO m) => HTMLProgressElement -> Double -> m ()
-setMax self val = liftIO (js_setMax self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
-        HTMLProgressElement -> IO Double
+foreign import javascript safe "(($1, $2) => { $1[\"max\"] = $2; })"
+        js_setMax :: HTMLProgressElement -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/max MDN HTMLProgressElement.max documentation>
+setMax :: (MonadDOM m) => HTMLProgressElement -> Double -> m ()
+setMax self val = liftDOM (void ((js_setMax (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
-getMax :: (MonadIO m) => HTMLProgressElement -> m Double
-getMax self = liftIO (js_getMax self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })" js_getPosition
-        :: HTMLProgressElement -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })"
+        js_getMax :: HTMLProgressElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/max MDN HTMLProgressElement.max documentation>
+getMax :: (MonadDOM m) => HTMLProgressElement -> m Double
+getMax self = liftDOM ((js_getMax (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.position Mozilla HTMLProgressElement.position documentation> 
-getPosition :: (MonadIO m) => HTMLProgressElement -> m Double
-getPosition self = liftIO (js_getPosition self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLProgressElement -> IO NodeList
+foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })"
+        js_getPosition :: HTMLProgressElement -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/position MDN HTMLProgressElement.position documentation>
+getPosition :: (MonadDOM m) => HTMLProgressElement -> m Double
+getPosition self = liftDOM ((js_getPosition (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.labels Mozilla HTMLProgressElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLProgressElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: HTMLProgressElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/labels MDN HTMLProgressElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLProgressElement -> m NodeList
+getLabels self = liftDOM ((js_getLabels (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
-       (js_setCite, setCite, js_getCite, getCite, HTMLQuoteElement(..),
-        gTypeHTMLQuoteElement)
+       (js_setCite, js_getCite, setCite, getCite, HTMLQuoteElement(..), gTypeHTMLQuoteElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"cite\"] = $2; })" js_setCite ::
-        HTMLQuoteElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
-setCite ::
-        (MonadIO m, ToJSString val) => HTMLQuoteElement -> val -> m ()
-setCite self val = liftIO (js_setCite self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cite\"]; })" js_getCite ::
-        HTMLQuoteElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"cite\"] = $2; })"
+        js_setCite :: HTMLQuoteElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLQuoteElement/cite MDN HTMLQuoteElement.cite documentation>
+setCite :: (MonadDOM m, ToJSString val) => HTMLQuoteElement -> val -> m ()
+setCite self val = liftDOM (void ((js_setCite (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
-getCite ::
-        (MonadIO m, FromJSString result) => HTMLQuoteElement -> m result
-getCite self = liftIO (fromJSString <$> (js_getCite self))
+foreign import javascript unsafe "(($1) => { return $1[\"cite\"]; })"
+        js_getCite :: HTMLQuoteElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLQuoteElement/cite MDN HTMLQuoteElement.cite documentation>
+getCite :: (MonadDOM m, FromJSString result) => HTMLQuoteElement -> m result
+getCite self = liftDOM ((fromJSString <$> (js_getCite (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
@@ -1,246 +1,229 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLScriptElement
-       (js_setText, setText, js_getText, getText, js_setHtmlFor,
-        setHtmlFor, js_getHtmlFor, getHtmlFor, js_setEvent, setEvent,
-        js_getEvent, getEvent, js_setCharset, setCharset, js_getCharset,
-        getCharset, js_setAsync, setAsync, js_getAsync, getAsync,
-        js_setDefer, setDefer, js_getDefer, getDefer, js_setSrc, setSrc,
-        js_getSrc, getSrc, js_setType, setType, js_getType, getType,
-        js_setCrossOrigin, setCrossOrigin, js_getCrossOrigin,
-        getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked,
-        js_setNonce, setNonce, js_getNonce, getNonce, js_setNoModule,
-        setNoModule, js_getNoModule, getNoModule, js_setIntegrity,
-        setIntegrity, js_getIntegrity, getIntegrity, HTMLScriptElement(..),
-        gTypeHTMLScriptElement)
+       (js_supports, js_setType, js_getType, js_setSrc, js_getSrc, js_setNoModule, js_getNoModule, js_setAsync, js_getAsync, js_setDefer, js_getDefer, js_getBlocking, js_setCrossOrigin, js_getCrossOrigin, js_setReferrerPolicy, js_getReferrerPolicy, js_setIntegrity, js_getIntegrity, js_setFetchPriority, js_getFetchPriority, js_setInnerText, js_getInnerText, js_setTextContent, js_getTextContent, js_setText, js_getText, js_setCharset, js_getCharset, js_setEvent, js_getEvent, js_setHtmlFor, js_getHtmlFor, supports, supports_, setType, getType, setSrc, getSrc, setNoModule, getNoModule, setAsync, getAsync, setDefer, getDefer, getBlocking, setCrossOrigin, getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked, setReferrerPolicy, getReferrerPolicy, setIntegrity, getIntegrity, setFetchPriority, getFetchPriority, setInnerText, getInnerText, setTextContent, getTextContent, getTextContentUnsafe, getTextContentUnchecked, setText, getText, setCharset, getCharset, setEvent, getEvent, setHtmlFor, getHtmlFor, HTMLScriptElement(..), gTypeHTMLScriptElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
-        HTMLScriptElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
-setText ::
-        (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setText self val = liftIO (js_setText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
-        HTMLScriptElement -> IO JSString
+foreign import javascript safe "(($1) => { return globalThis[\"HTMLScriptElement\"][\"supports\"]($1); })"
+        js_supports :: JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/supports_static MDN HTMLScriptElement.supports documentation>
+supports :: (MonadDOM m, ToJSString type') => type' -> m Bool
+supports type' = liftDOM ((js_supports (toJSString type')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
-getText ::
-        (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getText self = liftIO (fromJSString <$> (js_getText self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"htmlFor\"] = $2; })"
-        js_setHtmlFor :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/supports_static MDN HTMLScriptElement.supports documentation>
+supports_ :: (MonadDOM m, ToJSString type') => type' -> m ()
+supports_ type' = liftDOM (void ((js_supports (toJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
-setHtmlFor ::
-           (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setHtmlFor self val = liftIO (js_setHtmlFor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })" js_getHtmlFor ::
-        HTMLScriptElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/type MDN HTMLScriptElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
-getHtmlFor ::
-           (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getHtmlFor self = liftIO (fromJSString <$> (js_getHtmlFor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"event\"] = $2; })" js_setEvent
-        :: HTMLScriptElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLScriptElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/type MDN HTMLScriptElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
-setEvent ::
-         (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setEvent self val = liftIO (js_setEvent self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"event\"]; })" js_getEvent ::
-        HTMLScriptElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLScriptElement -> TrustedScriptURLOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/src MDN HTMLScriptElement.src documentation>
+setSrc :: (MonadDOM m, IsTrustedScriptURLOrString val) => HTMLScriptElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (Types.toTrustedScriptURLOrString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
-getEvent ::
-         (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getEvent self = liftIO (fromJSString <$> (js_getEvent self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"charset\"] = $2; })"
-        js_setCharset :: HTMLScriptElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLScriptElement -> IO TrustedScriptURLOrString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/src MDN HTMLScriptElement.src documentation>
+getSrc :: (MonadDOM m) => HTMLScriptElement -> m TrustedScriptURLOrString
+getSrc self = liftDOM ((js_getSrc (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
-setCharset ::
-           (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setCharset self val = liftIO (js_setCharset self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
-        HTMLScriptElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"noModule\"] = $2; })"
+        js_setNoModule :: HTMLScriptElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/noModule MDN HTMLScriptElement.noModule documentation>
+setNoModule :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
+setNoModule self val = liftDOM (void ((js_setNoModule (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
-getCharset ::
-           (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getCharset self = liftIO (fromJSString <$> (js_getCharset self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"async\"] = $2; })" js_setAsync
-        :: HTMLScriptElement -> Bool -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"noModule\"]; })"
+        js_getNoModule :: HTMLScriptElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/noModule MDN HTMLScriptElement.noModule documentation>
+getNoModule :: (MonadDOM m) => HTMLScriptElement -> m Bool
+getNoModule self = liftDOM ((js_getNoModule (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
-setAsync :: (MonadIO m) => HTMLScriptElement -> Bool -> m ()
-setAsync self val = liftIO (js_setAsync self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"async\"] ? 1 : 0); })"
+foreign import javascript safe "(($1, $2) => { $1[\"async\"] = $2; })"
+        js_setAsync :: HTMLScriptElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/async MDN HTMLScriptElement.async documentation>
+setAsync :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
+setAsync self val = liftDOM (void ((js_setAsync (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"async\"]; })"
         js_getAsync :: HTMLScriptElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/async MDN HTMLScriptElement.async documentation>
+getAsync :: (MonadDOM m) => HTMLScriptElement -> m Bool
+getAsync self = liftDOM ((js_getAsync (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
-getAsync :: (MonadIO m) => HTMLScriptElement -> m Bool
-getAsync self = liftIO (js_getAsync self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defer\"] = $2; })" js_setDefer
-        :: HTMLScriptElement -> Bool -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"defer\"] = $2; })"
+        js_setDefer :: HTMLScriptElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/defer MDN HTMLScriptElement.defer documentation>
+setDefer :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
+setDefer self val = liftDOM (void ((js_setDefer (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
-setDefer :: (MonadIO m) => HTMLScriptElement -> Bool -> m ()
-setDefer self val = liftIO (js_setDefer self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"defer\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"defer\"]; })"
         js_getDefer :: HTMLScriptElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/defer MDN HTMLScriptElement.defer documentation>
+getDefer :: (MonadDOM m) => HTMLScriptElement -> m Bool
+getDefer self = liftDOM ((js_getDefer (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
-getDefer :: (MonadIO m) => HTMLScriptElement -> m Bool
-getDefer self = liftIO (js_getDefer self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLScriptElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"blocking\"]; })"
+        js_getBlocking :: HTMLScriptElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/blocking MDN HTMLScriptElement.blocking documentation>
+getBlocking :: (MonadDOM m) => HTMLScriptElement -> m DOMTokenList
+getBlocking self = liftDOM ((js_getBlocking (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLScriptElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: HTMLScriptElement -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/crossOrigin MDN HTMLScriptElement.crossOrigin documentation>
+setCrossOrigin :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> Maybe val -> m ()
+setCrossOrigin self val = liftDOM (void ((js_setCrossOrigin (self) (toMaybeJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLScriptElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLScriptElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/crossOrigin MDN HTMLScriptElement.crossOrigin documentation>
+getCrossOrigin :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m (Maybe result)
+getCrossOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLScriptElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/crossOrigin MDN HTMLScriptElement.crossOrigin documentation>
+getCrossOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HTMLScriptElement -> m result
+getCrossOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
-        js_setCrossOrigin ::
-        HTMLScriptElement -> Optional JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/crossOrigin MDN HTMLScriptElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getCrossOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getCrossOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadIO m, ToJSString val) =>
-                 HTMLScriptElement -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftIO (js_setCrossOrigin self (toOptionalJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
-        js_getCrossOrigin :: HTMLScriptElement -> IO (Nullable JSString)
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/referrerPolicy MDN HTMLScriptElement.referrerPolicy documentation>
+setReferrerPolicy :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setReferrerPolicy self val = liftDOM (void ((js_setReferrerPolicy (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadIO m, FromJSString result) =>
-                 HTMLScriptElement -> m (Maybe result)
-getCrossOrigin self
-  = liftIO (fromMaybeJSString <$> (js_getCrossOrigin self))
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: HTMLScriptElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/referrerPolicy MDN HTMLScriptElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getReferrerPolicy self = liftDOM ((fromJSString <$> (js_getReferrerPolicy (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadIO m, HasCallStack, FromJSString result) =>
-                       HTMLScriptElement -> m result
-getCrossOriginUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getCrossOrigin self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { $1[\"integrity\"] = $2; })"
+        js_setIntegrity :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/integrity MDN HTMLScriptElement.integrity documentation>
+setIntegrity :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setIntegrity self val = liftDOM (void ((js_setIntegrity (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getCrossOriginUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getCrossOrigin self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"nonce\"] = $2; })" js_setNonce
-        :: HTMLScriptElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
+        js_getIntegrity :: HTMLScriptElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/integrity MDN HTMLScriptElement.integrity documentation>
+getIntegrity :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getIntegrity self = liftDOM ((fromJSString <$> (js_getIntegrity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
-setNonce ::
-         (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setNonce self val = liftIO (js_setNonce self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nonce\"]; })" js_getNonce ::
-        HTMLScriptElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"fetchPriority\"] = $2; })"
+        js_setFetchPriority :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/fetchPriority MDN HTMLScriptElement.fetchPriority documentation>
+setFetchPriority :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setFetchPriority self val = liftDOM (void ((js_setFetchPriority (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
-getNonce ::
-         (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getNonce self = liftIO (fromJSString <$> (js_getNonce self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"noModule\"] = $2; })"
-        js_setNoModule :: HTMLScriptElement -> Bool -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"fetchPriority\"]; })"
+        js_getFetchPriority :: HTMLScriptElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/fetchPriority MDN HTMLScriptElement.fetchPriority documentation>
+getFetchPriority :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getFetchPriority self = liftDOM ((fromJSString <$> (js_getFetchPriority (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.noModule Mozilla HTMLScriptElement.noModule documentation> 
-setNoModule :: (MonadIO m) => HTMLScriptElement -> Bool -> m ()
-setNoModule self val = liftIO (js_setNoModule self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"noModule\"] ? 1 : 0); })"
-        js_getNoModule :: HTMLScriptElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"innerText\"] = $2; })"
+        js_setInnerText :: HTMLScriptElement -> TrustedScriptOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/innerText MDN HTMLScriptElement.innerText documentation>
+setInnerText :: (MonadDOM m, IsTrustedScriptOrString val) => HTMLScriptElement -> val -> m ()
+setInnerText self val = liftDOM (void ((js_setInnerText (self) (Types.toTrustedScriptOrString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.noModule Mozilla HTMLScriptElement.noModule documentation> 
-getNoModule :: (MonadIO m) => HTMLScriptElement -> m Bool
-getNoModule self = liftIO (js_getNoModule self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"integrity\"] = $2; })"
-        js_setIntegrity :: HTMLScriptElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"innerText\"]; })"
+        js_getInnerText :: HTMLScriptElement -> IO TrustedScriptOrString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/innerText MDN HTMLScriptElement.innerText documentation>
+getInnerText :: (MonadDOM m) => HTMLScriptElement -> m TrustedScriptOrString
+getInnerText self = liftDOM ((js_getInnerText (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.integrity Mozilla HTMLScriptElement.integrity documentation> 
-setIntegrity ::
-             (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setIntegrity self val
-  = liftIO (js_setIntegrity self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
-        js_getIntegrity :: HTMLScriptElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"textContent\"] = $2; })"
+        js_setTextContent :: HTMLScriptElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/textContent MDN HTMLScriptElement.textContent documentation>
+setTextContent :: (MonadDOM m, IsTrustedScriptOrString val) => HTMLScriptElement -> Maybe val -> m ()
+setTextContent self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTextContent (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.integrity Mozilla HTMLScriptElement.integrity documentation> 
-getIntegrity ::
-             (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
-getIntegrity self
-  = liftIO (fromJSString <$> (js_getIntegrity self))
+foreign import javascript unsafe "(($1) => { return $1[\"textContent\"]; })"
+        js_getTextContent :: HTMLScriptElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/textContent MDN HTMLScriptElement.textContent documentation>
+getTextContent :: (MonadDOM m) => HTMLScriptElement -> m (Maybe TrustedScriptOrString)
+getTextContent self = liftDOM (((js_getTextContent (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/textContent MDN HTMLScriptElement.textContent documentation>
+getTextContentUnsafe :: (MonadDOM m, HasCallStack) => HTMLScriptElement -> m TrustedScriptOrString
+getTextContentUnsafe self = liftDOM ((((js_getTextContent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/textContent MDN HTMLScriptElement.textContent documentation>
+getTextContentUnchecked :: (MonadDOM m) => HTMLScriptElement -> m TrustedScriptOrString
+getTextContentUnchecked self = liftDOM ((pFromJSVal <$> (js_getTextContent (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: HTMLScriptElement -> TrustedScriptOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/text MDN HTMLScriptElement.text documentation>
+setText :: (MonadDOM m, IsTrustedScriptOrString val) => HTMLScriptElement -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (Types.toTrustedScriptOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: HTMLScriptElement -> IO TrustedScriptOrString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/text MDN HTMLScriptElement.text documentation>
+getText :: (MonadDOM m) => HTMLScriptElement -> m TrustedScriptOrString
+getText self = liftDOM ((js_getText (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"charset\"] = $2; })"
+        js_setCharset :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-script-charset HTMLScriptElement.charset specification>
+setCharset :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setCharset self val = liftDOM (void ((js_setCharset (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })"
+        js_getCharset :: HTMLScriptElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-script-charset HTMLScriptElement.charset specification>
+getCharset :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getCharset self = liftDOM ((fromJSString <$> (js_getCharset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"event\"] = $2; })"
+        js_setEvent :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-script-event HTMLScriptElement.event specification>
+setEvent :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setEvent self val = liftDOM (void ((js_setEvent (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"event\"]; })"
+        js_getEvent :: HTMLScriptElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-script-event HTMLScriptElement.event specification>
+getEvent :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getEvent self = liftDOM ((fromJSString <$> (js_getEvent (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"htmlFor\"] = $2; })"
+        js_setHtmlFor :: HTMLScriptElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-script-htmlfor HTMLScriptElement.htmlFor specification>
+setHtmlFor :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setHtmlFor self val = liftDOM (void ((js_setHtmlFor (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })"
+        js_getHtmlFor :: HTMLScriptElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-script-htmlfor HTMLScriptElement.htmlFor specification>
+getHtmlFor :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getHtmlFor self = liftDOM ((fromJSString <$> (js_getHtmlFor (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
@@ -1,398 +1,267 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        js_addBefore, addBefore, js_removeThis, removeThis, js_remove,
-        remove, js_checkValidity, checkValidity, checkValidity_,
-        js_reportValidity, reportValidity, reportValidity_,
-        js_setCustomValidity, setCustomValidity, js_setAutofocus,
-        setAutofocus, js_getAutofocus, getAutofocus, js_setDisabled,
-        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
-        getFormUnsafe, getFormUnchecked, js_setMultiple, setMultiple,
-        js_getMultiple, getMultiple, js_setName, setName, js_getName,
-        getName, js_setRequired, setRequired, js_getRequired, getRequired,
-        js_setSize, setSize, js_getSize, getSize, js_getType, getType,
-        js_getOptions, getOptions, js_setLength, setLength, js_getLength,
-        getLength, js_getSelectedOptions, getSelectedOptions,
-        js_setSelectedIndex, setSelectedIndex, js_getSelectedIndex,
-        getSelectedIndex, js_setValue, setValue, js_getValue, getValue,
-        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
-        js_getValidationMessage, getValidationMessage, js_getLabels,
-        getLabels, js_setAutocomplete, setAutocomplete, js_getAutocomplete,
-        getAutocomplete, HTMLSelectElement(..), gTypeHTMLSelectElement)
+       (js_add, js_checkValidity, js_item, js_namedItem, js_removeThis, js_remove, js_reportValidity, js_setCustomValidity, js_showPicker, js_setAutocomplete, js_getAutocomplete, js_setDisabled, js_getDisabled, js_getForm, js_setMultiple, js_getMultiple, js_setName, js_getName, js_setRequired, js_getRequired, js_setSize, js_getSize, js_getType, js_getOptions, js_setLength, js_getLength, js_getSelectedOptions, js_setSelectedIndex, js_getSelectedIndex, js_setValue, js_getValue, js_getWillValidate, js_getValidity, js_getValidationMessage, js_getLabels, add, checkValidity, checkValidity_, item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, removeThis, remove, reportValidity, reportValidity_, setCustomValidity, showPicker, setAutocomplete, getAutocomplete, setDisabled, getDisabled, getForm, getFormUnsafe, getFormUnchecked, setMultiple, getMultiple, setName, getName, setRequired, getRequired, setSize, getSize, getType, getOptions, setLength, getLength, getSelectedOptions, setSelectedIndex, getSelectedIndex, setValue, getValue, getWillValidate, getValidity, getValidationMessage, getLabels, HTMLSelectElement(..), gTypeHTMLSelectElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        HTMLSelectElement -> Word -> IO (Nullable HTMLOptionElement)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-item ::
-     (MonadIO m) =>
-       HTMLSelectElement -> Word -> m (Maybe HTMLOptionElement)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })"
+        js_add :: HTMLSelectElement -> HTMLOptionElementOrHTMLOptGroupElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/add MDN HTMLSelectElement.add documentation>
+add :: (MonadDOM m, IsHTMLOptionElementOrHTMLOptGroupElement element, IsHTMLElementOrInt before) => HTMLSelectElement -> element -> Maybe before -> m ()
+add self element before = liftDOM (void (((toJSVal before) >>= \a3' -> js_add (self) (Types.toHTMLOptionElementOrHTMLOptGroupElement element) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-item_ :: (MonadIO m) => HTMLSelectElement -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLSelectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/checkValidity MDN HTMLSelectElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLSelectElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) =>
-             HTMLSelectElement -> Word -> m HTMLOptionElement
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/checkValidity MDN HTMLSelectElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLSelectElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-itemUnchecked ::
-              (MonadIO m) => HTMLSelectElement -> Word -> m HTMLOptionElement
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
-        js_namedItem ::
-        HTMLSelectElement -> JSString -> IO (Nullable HTMLOptionElement)
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: HTMLSelectElement -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/item MDN HTMLSelectElement.item documentation>
+item :: (MonadDOM m) => HTMLSelectElement -> Word -> m (Maybe HTMLOptionElement)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            HTMLSelectElement -> name -> m (Maybe HTMLOptionElement)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/item MDN HTMLSelectElement.item documentation>
+item_ :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) => HTMLSelectElement -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/item MDN HTMLSelectElement.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => HTMLSelectElement -> Word -> m HTMLOptionElement
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  HTMLSelectElement -> name -> m HTMLOptionElement
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/item MDN HTMLSelectElement.item documentation>
+itemUnchecked :: (MonadDOM m) => HTMLSelectElement -> Word -> m HTMLOptionElement
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) =>
-                     HTMLSelectElement -> name -> m HTMLOptionElement
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_addBefore
-        ::
-        HTMLSelectElement ->
-          HTMLOptionElementOrGroup -> Optional HTMLElementOrLong -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem :: HTMLSelectElement -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/namedItem MDN HTMLSelectElement.namedItem documentation>
+namedItem :: (MonadDOM m, ToJSString name) => HTMLSelectElement -> name -> m (Maybe HTMLOptionElement)
+namedItem self name = liftDOM (((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.add Mozilla HTMLSelectElement.add documentation> 
-addBefore ::
-          (MonadIO m, IsHTMLOptionElementOrGroup element,
-           IsHTMLElementOrLong before) =>
-            HTMLSelectElement -> element -> Maybe before -> m ()
-addBefore self element before
-  = liftIO
-      (mapM toJSVal before >>=
-         \ before' ->
-           toJSVal element >>=
-             \ element' -> js_addBefore self (HTMLOptionElementOrGroup element')
-             (maybeToOptional (fmap HTMLElementOrLong before')))
- 
-foreign import javascript safe "(($1) => { return $1[\"remove\"](); })" js_removeThis ::
-        HTMLSelectElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/namedItem MDN HTMLSelectElement.namedItem documentation>
+namedItem_ :: (MonadDOM m, ToJSString name) => HTMLSelectElement -> name -> m ()
+namedItem_ self name = liftDOM (void ((js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
-removeThis :: (MonadIO m) => HTMLSelectElement -> m ()
-removeThis self = liftIO (js_removeThis self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"remove\"]($2); })" js_remove ::
-        HTMLSelectElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/namedItem MDN HTMLSelectElement.namedItem documentation>
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => HTMLSelectElement -> name -> m HTMLOptionElement
+namedItemUnsafe self name = liftDOM ((((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
-remove :: (MonadIO m) => HTMLSelectElement -> Int -> m ()
-remove self index = liftIO (js_remove self index)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLSelectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/namedItem MDN HTMLSelectElement.namedItem documentation>
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => HTMLSelectElement -> name -> m HTMLOptionElement
+namedItemUnchecked self name = liftDOM ((pFromJSVal <$> (js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.checkValidity Mozilla HTMLSelectElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLSelectElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
+foreign import javascript safe "(($1) => { return $1[\"remove\"](); })"
+        js_removeThis :: HTMLSelectElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/remove MDN HTMLSelectElement.remove documentation>
+removeThis :: (MonadDOM m) => HTMLSelectElement -> m ()
+removeThis self = liftDOM (void ((js_removeThis (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.checkValidity Mozilla HTMLSelectElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLSelectElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLSelectElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { return $1[\"remove\"]($2); })"
+        js_remove :: HTMLSelectElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/remove MDN HTMLSelectElement.remove documentation>
+remove :: (MonadDOM m) => HTMLSelectElement -> Int -> m ()
+remove self index = liftDOM (void ((js_remove (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.reportValidity Mozilla HTMLSelectElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLSelectElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLSelectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/reportValidity MDN HTMLSelectElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLSelectElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.reportValidity Mozilla HTMLSelectElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLSelectElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/reportValidity MDN HTMLSelectElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLSelectElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
         js_setCustomValidity :: HTMLSelectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/setCustomValidity MDN HTMLSelectElement.setCustomValidity documentation>
+setCustomValidity :: (MonadDOM m, ToJSString error) => HTMLSelectElement -> error -> m ()
+setCustomValidity self error = liftDOM (void ((js_setCustomValidity (self) (toJSString error))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.setCustomValidity Mozilla HTMLSelectElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) => HTMLSelectElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
-        js_setAutofocus :: HTMLSelectElement -> Bool -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"showPicker\"](); })"
+        js_showPicker :: HTMLSelectElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/showPicker MDN HTMLSelectElement.showPicker documentation>
+showPicker :: (MonadDOM m) => HTMLSelectElement -> m ()
+showPicker self = liftDOM (void ((js_showPicker (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
-setAutofocus :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
-setAutofocus self val = liftIO (js_setAutofocus self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
-        js_getAutofocus :: HTMLSelectElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+        js_setAutocomplete :: HTMLSelectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/autocomplete MDN HTMLSelectElement.autocomplete documentation>
+setAutocomplete :: (MonadDOM m, ToJSString val) => HTMLSelectElement -> val -> m ()
+setAutocomplete self val = liftDOM (void ((js_setAutocomplete (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
-getAutofocus :: (MonadIO m) => HTMLSelectElement -> m Bool
-getAutofocus self = liftIO (js_getAutofocus self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
+        js_getAutocomplete :: HTMLSelectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/autocomplete MDN HTMLSelectElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getAutocomplete self = liftDOM ((fromJSString <$> (js_getAutocomplete (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
         js_setDisabled :: HTMLSelectElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/disabled MDN HTMLSelectElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
         js_getDisabled :: HTMLSelectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/disabled MDN HTMLSelectElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLSelectElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLSelectElement -> IO (Nullable HTMLFormElement)
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLSelectElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/form MDN HTMLSelectElement.form documentation>
+getForm :: (MonadDOM m) => HTMLSelectElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
-getForm ::
-        (MonadIO m) => HTMLSelectElement -> m (Maybe HTMLFormElement)
-getForm self = liftIO (nullableToMaybe <$> (js_getForm self))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/form MDN HTMLSelectElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLSelectElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
-getFormUnsafe ::
-              (MonadIO m, HasCallStack) => HTMLSelectElement -> m HTMLFormElement
-getFormUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getForm self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/form MDN HTMLSelectElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLSelectElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
-getFormUnchecked ::
-                 (MonadIO m) => HTMLSelectElement -> m HTMLFormElement
-getFormUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getForm self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"multiple\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"multiple\"] = $2; })"
         js_setMultiple :: HTMLSelectElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/multiple MDN HTMLSelectElement.multiple documentation>
+setMultiple :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
+setMultiple self val = liftDOM (void ((js_setMultiple (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
-setMultiple :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
-setMultiple self val = liftIO (js_setMultiple self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"multiple\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"multiple\"]; })"
         js_getMultiple :: HTMLSelectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/multiple MDN HTMLSelectElement.multiple documentation>
+getMultiple :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getMultiple self = liftDOM ((js_getMultiple (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
-getMultiple :: (MonadIO m) => HTMLSelectElement -> m Bool
-getMultiple self = liftIO (js_getMultiple self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLSelectElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLSelectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/name MDN HTMLSelectElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLSelectElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLSelectElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLSelectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLSelectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/name MDN HTMLSelectElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"required\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"required\"] = $2; })"
         js_setRequired :: HTMLSelectElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/required MDN HTMLSelectElement.required documentation>
+setRequired :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
+setRequired self val = liftDOM (void ((js_setRequired (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
-setRequired :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
-setRequired self val = liftIO (js_setRequired self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"required\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"required\"]; })"
         js_getRequired :: HTMLSelectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/required MDN HTMLSelectElement.required documentation>
+getRequired :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getRequired self = liftDOM ((js_getRequired (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
-getRequired :: (MonadIO m) => HTMLSelectElement -> m Bool
-getRequired self = liftIO (js_getRequired self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
-        HTMLSelectElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: HTMLSelectElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/size MDN HTMLSelectElement.size documentation>
+setSize :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
+setSize self val = liftDOM (void ((js_setSize (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
-setSize :: (MonadIO m) => HTMLSelectElement -> Word -> m ()
-setSize self val = liftIO (js_setSize self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        HTMLSelectElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: HTMLSelectElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/size MDN HTMLSelectElement.size documentation>
+getSize :: (MonadDOM m) => HTMLSelectElement -> m Word
+getSize self = liftDOM ((js_getSize (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
-getSize :: (MonadIO m) => HTMLSelectElement -> m Word
-getSize self = liftIO (js_getSize self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLSelectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLSelectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/type MDN HTMLSelectElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.type Mozilla HTMLSelectElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })" js_getOptions ::
-        HTMLSelectElement -> IO HTMLOptionsCollection
+foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })"
+        js_getOptions :: HTMLSelectElement -> IO HTMLOptionsCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/options MDN HTMLSelectElement.options documentation>
+getOptions :: (MonadDOM m) => HTMLSelectElement -> m HTMLOptionsCollection
+getOptions self = liftDOM ((js_getOptions (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.options Mozilla HTMLSelectElement.options documentation> 
-getOptions ::
-           (MonadIO m) => HTMLSelectElement -> m HTMLOptionsCollection
-getOptions self = liftIO (js_getOptions self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })" js_setLength
-        :: HTMLSelectElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })"
+        js_setLength :: HTMLSelectElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/length MDN HTMLSelectElement.length documentation>
+setLength :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
+setLength self val = liftDOM (void ((js_setLength (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
-setLength :: (MonadIO m) => HTMLSelectElement -> Word -> m ()
-setLength self val = liftIO (js_setLength self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        HTMLSelectElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: HTMLSelectElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/length MDN HTMLSelectElement.length documentation>
+getLength :: (MonadDOM m) => HTMLSelectElement -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
-getLength :: (MonadIO m) => HTMLSelectElement -> m Word
-getLength self = liftIO (js_getLength self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"selectedOptions\"]; })"
         js_getSelectedOptions :: HTMLSelectElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedOptions MDN HTMLSelectElement.selectedOptions documentation>
+getSelectedOptions :: (MonadDOM m) => HTMLSelectElement -> m HTMLCollection
+getSelectedOptions self = liftDOM ((js_getSelectedOptions (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedOptions Mozilla HTMLSelectElement.selectedOptions documentation> 
-getSelectedOptions ::
-                   (MonadIO m) => HTMLSelectElement -> m HTMLCollection
-getSelectedOptions self = liftIO (js_getSelectedOptions self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selectedIndex\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"selectedIndex\"] = $2; })"
         js_setSelectedIndex :: HTMLSelectElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedIndex MDN HTMLSelectElement.selectedIndex documentation>
+setSelectedIndex :: (MonadDOM m) => HTMLSelectElement -> Int -> m ()
+setSelectedIndex self val = liftDOM (void ((js_setSelectedIndex (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
-setSelectedIndex :: (MonadIO m) => HTMLSelectElement -> Int -> m ()
-setSelectedIndex self val = liftIO (js_setSelectedIndex self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"selectedIndex\"]; })"
         js_getSelectedIndex :: HTMLSelectElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedIndex MDN HTMLSelectElement.selectedIndex documentation>
+getSelectedIndex :: (MonadDOM m) => HTMLSelectElement -> m Int
+getSelectedIndex self = liftDOM ((js_getSelectedIndex (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
-getSelectedIndex :: (MonadIO m) => HTMLSelectElement -> m Int
-getSelectedIndex self = liftIO (js_getSelectedIndex self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLSelectElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLSelectElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/value MDN HTMLSelectElement.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => HTMLSelectElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLSelectElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLSelectElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLSelectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/value MDN HTMLSelectElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
         js_getWillValidate :: HTMLSelectElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/willValidate MDN HTMLSelectElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLSelectElement -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.willValidate Mozilla HTMLSelectElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLSelectElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLSelectElement -> IO ValidityState
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: HTMLSelectElement -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/validity MDN HTMLSelectElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLSelectElement -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validity Mozilla HTMLSelectElement.validity documentation> 
-getValidity :: (MonadIO m) => HTMLSelectElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
         js_getValidationMessage :: HTMLSelectElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validationMessage Mozilla HTMLSelectElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLSelectElement -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.labels Mozilla HTMLSelectElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLSelectElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
-        js_setAutocomplete :: HTMLSelectElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autocomplete Mozilla HTMLSelectElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadIO m, ToJSString val) => HTMLSelectElement -> val -> m ()
-setAutocomplete self val
-  = liftIO (js_setAutocomplete self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
-        js_getAutocomplete :: HTMLSelectElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/validationMessage MDN HTMLSelectElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autocomplete Mozilla HTMLSelectElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
-getAutocomplete self
-  = liftIO (fromJSString <$> (js_getAutocomplete self))
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: HTMLSelectElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/labels MDN HTMLSelectElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLSelectElement -> m NodeList
+getLabels self = liftDOM ((js_getLabels (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectedContentElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectedContentElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectedContentElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLSelectedContentElement
+       (HTMLSelectedContentElement(..), gTypeHTMLSelectedContentElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
@@ -1,64 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLSlotElement
-       (js_assignedNodes, assignedNodes, assignedNodes_, js_setName,
-        setName, js_getName, getName, HTMLSlotElement(..),
-        gTypeHTMLSlotElement)
+       (js_assign, js_assignedElements, js_assignedNodes, js_setName, js_getName, assign, assignedElements, assignedElements_, assignedNodes, assignedNodes_, setName, getName, HTMLSlotElement(..), gTypeHTMLSlotElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"assignedNodes\"]($2); })"
-        js_assignedNodes ::
-        HTMLSlotElement -> Optional AssignedNodesOptions -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.assignedNodes Mozilla HTMLSlotElement.assignedNodes documentation> 
-assignedNodes ::
-              (MonadIO m) =>
-                HTMLSlotElement -> Maybe AssignedNodesOptions -> m [Node]
-assignedNodes self options
-  = liftIO
-      ((js_assignedNodes self (maybeToOptional options)) >>=
-         fromJSValUnchecked)
+foreign import javascript safe "(($1, $2) => { return $1[\"assign\"](...$2); })"
+        js_assign :: HTMLSlotElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/assign MDN HTMLSlotElement.assign documentation>
+assign :: (MonadDOM m, IsElementOrText nodes) => HTMLSlotElement -> [nodes] -> m ()
+assign self nodes = liftDOM (void (((toJSVal nodes) >>= \a2' -> js_assign (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.assignedNodes Mozilla HTMLSlotElement.assignedNodes documentation> 
-assignedNodes_ ::
-               (MonadIO m) =>
-                 HTMLSlotElement -> Maybe AssignedNodesOptions -> m ()
-assignedNodes_ self options
-  = liftIO (void (js_assignedNodes self (maybeToOptional options)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLSlotElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"assignedElements\"]($2); })"
+        js_assignedElements :: HTMLSlotElement -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/assignedElements MDN HTMLSlotElement.assignedElements documentation>
+assignedElements :: (MonadDOM m) => HTMLSlotElement -> Maybe AssignedNodesOptions -> m [Element]
+assignedElements self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_assignedElements (self) a2') >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.name Mozilla HTMLSlotElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLSlotElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLSlotElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/assignedElements MDN HTMLSlotElement.assignedElements documentation>
+assignedElements_ :: (MonadDOM m) => HTMLSlotElement -> Maybe AssignedNodesOptions -> m ()
+assignedElements_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_assignedElements (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.name Mozilla HTMLSlotElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLSlotElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
+foreign import javascript safe "(($1, $2) => { return $1[\"assignedNodes\"]($2); })"
+        js_assignedNodes :: HTMLSlotElement -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/assignedNodes MDN HTMLSlotElement.assignedNodes documentation>
+assignedNodes :: (MonadDOM m) => HTMLSlotElement -> Maybe AssignedNodesOptions -> m [Node]
+assignedNodes self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_assignedNodes (self) a2') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/assignedNodes MDN HTMLSlotElement.assignedNodes documentation>
+assignedNodes_ :: (MonadDOM m) => HTMLSlotElement -> Maybe AssignedNodesOptions -> m ()
+assignedNodes_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_assignedNodes (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLSlotElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/name MDN HTMLSlotElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLSlotElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLSlotElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/name MDN HTMLSlotElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLSlotElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
@@ -1,110 +1,101 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
-       (js_setSrc, setSrc, js_getSrc, getSrc, js_setType, setType,
-        js_getType, getType, js_setSrcset, setSrcset, js_getSrcset,
-        getSrcset, js_setSizes, setSizes, js_getSizes, getSizes,
-        js_setMedia, setMedia, js_getMedia, getMedia,
-        HTMLSourceElement(..), gTypeHTMLSourceElement)
+       (js_setSrc, js_getSrc, js_setType, js_getType, js_setSrcset, js_getSrcset, js_setSizes, js_getSizes, js_setMedia, js_getMedia, js_setWidth, js_getWidth, js_setHeight, js_getHeight, setSrc, getSrc, setType, getType, setSrcset, getSrcset, setSizes, getSizes, setMedia, getMedia, setWidth, getWidth, setHeight, getHeight, HTMLSourceElement(..), gTypeHTMLSourceElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLSourceElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLSourceElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLSourceElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/src MDN HTMLSourceElement.src documentation>
+setSrc :: (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLSourceElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLSourceElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/src MDN HTMLSourceElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLSourceElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLSourceElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/type MDN HTMLSourceElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"srcset\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLSourceElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/type MDN HTMLSourceElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"srcset\"] = $2; })"
         js_setSrcset :: HTMLSourceElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/srcset MDN HTMLSourceElement.srcset documentation>
+setSrcset :: (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setSrcset self val = liftDOM (void ((js_setSrcset (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.srcset Mozilla HTMLSourceElement.srcset documentation> 
-setSrcset ::
-          (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setSrcset self val = liftIO (js_setSrcset self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"srcset\"]; })" js_getSrcset ::
-        HTMLSourceElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"srcset\"]; })"
+        js_getSrcset :: HTMLSourceElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/srcset MDN HTMLSourceElement.srcset documentation>
+getSrcset :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getSrcset self = liftDOM ((fromJSString <$> (js_getSrcset (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.srcset Mozilla HTMLSourceElement.srcset documentation> 
-getSrcset ::
-          (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
-getSrcset self = liftIO (fromJSString <$> (js_getSrcset self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"sizes\"] = $2; })" js_setSizes
-        :: HTMLSourceElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"sizes\"] = $2; })"
+        js_setSizes :: HTMLSourceElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/sizes MDN HTMLSourceElement.sizes documentation>
+setSizes :: (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setSizes self val = liftDOM (void ((js_setSizes (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.sizes Mozilla HTMLSourceElement.sizes documentation> 
-setSizes ::
-         (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setSizes self val = liftIO (js_setSizes self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })" js_getSizes ::
-        HTMLSourceElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })"
+        js_getSizes :: HTMLSourceElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/sizes MDN HTMLSourceElement.sizes documentation>
+getSizes :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getSizes self = liftDOM ((fromJSString <$> (js_getSizes (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.sizes Mozilla HTMLSourceElement.sizes documentation> 
-getSizes ::
-         (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
-getSizes self = liftIO (fromJSString <$> (js_getSizes self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
-        :: HTMLSourceElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"media\"] = $2; })"
+        js_setMedia :: HTMLSourceElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/media MDN HTMLSourceElement.media documentation>
+setMedia :: (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setMedia self val = liftDOM (void ((js_setMedia (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
-setMedia ::
-         (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setMedia self val = liftIO (js_setMedia self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        HTMLSourceElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: HTMLSourceElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/media MDN HTMLSourceElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getMedia self = liftDOM ((fromJSString <$> (js_getMedia (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
-getMedia ::
-         (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
-getMedia self = liftIO (fromJSString <$> (js_getMedia self))
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLSourceElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/width MDN HTMLSourceElement.width documentation>
+setWidth :: (MonadDOM m) => HTMLSourceElement -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLSourceElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/width MDN HTMLSourceElement.width documentation>
+getWidth :: (MonadDOM m) => HTMLSourceElement -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLSourceElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/height MDN HTMLSourceElement.height documentation>
+setHeight :: (MonadDOM m) => HTMLSourceElement -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLSourceElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/height MDN HTMLSourceElement.height documentation>
+getHeight :: (MonadDOM m) => HTMLSourceElement -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSpanElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSpanElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSpanElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLSpanElement
+       (HTMLSpanElement(..), gTypeHTMLSpanElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
@@ -1,98 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLStyleElement
-       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
-        js_setMedia, setMedia, js_getMedia, getMedia, js_setType, setType,
-        js_getType, getType, js_getSheet, getSheet, js_setNonce, setNonce,
-        js_getNonce, getNonce, HTMLStyleElement(..), gTypeHTMLStyleElement)
+       (js_setDisabled, js_getDisabled, js_setMedia, js_getMedia, js_getBlocking, js_setType, js_getType, setDisabled, getDisabled, setMedia, getMedia, getBlocking, setType, getType, HTMLStyleElement(..), gTypeHTMLStyleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
         js_setDisabled :: HTMLStyleElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/disabled MDN HTMLStyleElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLStyleElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLStyleElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
         js_getDisabled :: HTMLStyleElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLStyleElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
-        :: HTMLStyleElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
-setMedia ::
-         (MonadIO m, ToJSString val) => HTMLStyleElement -> val -> m ()
-setMedia self val = liftIO (js_setMedia self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        HTMLStyleElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
-getMedia ::
-         (MonadIO m, FromJSString result) => HTMLStyleElement -> m result
-getMedia self = liftIO (fromJSString <$> (js_getMedia self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLStyleElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/disabled MDN HTMLStyleElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLStyleElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLStyleElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLStyleElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"media\"] = $2; })"
+        js_setMedia :: HTMLStyleElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/media MDN HTMLStyleElement.media documentation>
+setMedia :: (MonadDOM m, ToJSString val) => HTMLStyleElement -> val -> m ()
+setMedia self val = liftDOM (void ((js_setMedia (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLStyleElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sheet\"]; })" js_getSheet ::
-        HTMLStyleElement -> IO StyleSheet
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: HTMLStyleElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/media MDN HTMLStyleElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
+getMedia self = liftDOM ((fromJSString <$> (js_getMedia (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.sheet Mozilla HTMLStyleElement.sheet documentation> 
-getSheet :: (MonadIO m) => HTMLStyleElement -> m StyleSheet
-getSheet self = liftIO (js_getSheet self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"nonce\"] = $2; })" js_setNonce
-        :: HTMLStyleElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"blocking\"]; })"
+        js_getBlocking :: HTMLStyleElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/blocking MDN HTMLStyleElement.blocking documentation>
+getBlocking :: (MonadDOM m) => HTMLStyleElement -> m DOMTokenList
+getBlocking self = liftDOM ((js_getBlocking (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.nonce Mozilla HTMLStyleElement.nonce documentation> 
-setNonce ::
-         (MonadIO m, ToJSString val) => HTMLStyleElement -> val -> m ()
-setNonce self val = liftIO (js_setNonce self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nonce\"]; })" js_getNonce ::
-        HTMLStyleElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLStyleElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/type MDN HTMLStyleElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => HTMLStyleElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.nonce Mozilla HTMLStyleElement.nonce documentation> 
-getNonce ::
-         (MonadIO m, FromJSString result) => HTMLStyleElement -> m result
-getNonce self = liftIO (fromJSString <$> (js_getNonce self))
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLStyleElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/type MDN HTMLStyleElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
@@ -1,45 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
-       (js_setAlign, setAlign, js_getAlign, getAlign,
-        HTMLTableCaptionElement(..), gTypeHTMLTableCaptionElement)
+       (js_setAlign, js_getAlign, setAlign, getAlign, HTMLTableCaptionElement(..), gTypeHTMLTableCaptionElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLTableCaptionElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) =>
-           HTMLTableCaptionElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLTableCaptionElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLTableCaptionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCaptionElement/align MDN HTMLTableCaptionElement.align documentation>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLTableCaptionElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) =>
-           HTMLTableCaptionElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLTableCaptionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCaptionElement/align MDN HTMLTableCaptionElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableCaptionElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
@@ -1,273 +1,191 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
-       (js_getCellIndex, getCellIndex, js_setAlign, setAlign, js_getAlign,
-        getAlign, js_setAxis, setAxis, js_getAxis, getAxis, js_setBgColor,
-        setBgColor, js_getBgColor, getBgColor, js_setCh, setCh, js_getCh,
-        getCh, js_setChOff, setChOff, js_getChOff, getChOff, js_setColSpan,
-        setColSpan, js_getColSpan, getColSpan, js_setRowSpan, setRowSpan,
-        js_getRowSpan, getRowSpan, js_setHeaders, setHeaders,
-        js_getHeaders, getHeaders, js_setHeight, setHeight, js_getHeight,
-        getHeight, js_setNoWrap, setNoWrap, js_getNoWrap, getNoWrap,
-        js_setVAlign, setVAlign, js_getVAlign, getVAlign, js_setWidth,
-        setWidth, js_getWidth, getWidth, js_setAbbr, setAbbr, js_getAbbr,
-        getAbbr, js_setScope, setScope, js_getScope, getScope,
-        HTMLTableCellElement(..), gTypeHTMLTableCellElement)
+       (js_setColSpan, js_getColSpan, js_setRowSpan, js_getRowSpan, js_setHeaders, js_getHeaders, js_getCellIndex, js_setScope, js_getScope, js_setAbbr, js_getAbbr, js_setAlign, js_getAlign, js_setAxis, js_getAxis, js_setHeight, js_getHeight, js_setWidth, js_getWidth, js_setCh, js_getCh, js_setChOff, js_getChOff, js_setNoWrap, js_getNoWrap, js_setVAlign, js_getVAlign, js_setBgColor, js_getBgColor, setColSpan, getColSpan, setRowSpan, getRowSpan, setHeaders, getHeaders, getCellIndex, setScope, getScope, setAbbr, getAbbr, setAlign, getAlign, setAxis, getAxis, setHeight, getHeight, setWidth, getWidth, setCh, getCh, setChOff, getChOff, setNoWrap, getNoWrap, setVAlign, getVAlign, setBgColor, getBgColor, HTMLTableCellElement(..), gTypeHTMLTableCellElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cellIndex\"]; })"
-        js_getCellIndex :: HTMLTableCellElement -> IO Int
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.cellIndex Mozilla HTMLTableCellElement.cellIndex documentation> 
-getCellIndex :: (MonadIO m) => HTMLTableCellElement -> m Int
-getCellIndex self = liftIO (js_getCellIndex self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLTableCellElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"colSpan\"] = $2; })"
+        js_setColSpan :: HTMLTableCellElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/colSpan MDN HTMLTableCellElement.colSpan documentation>
+setColSpan :: (MonadDOM m) => HTMLTableCellElement -> Word -> m ()
+setColSpan self val = liftDOM (void ((js_setColSpan (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"axis\"] = $2; })" js_setAxis ::
-        HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"colSpan\"]; })"
+        js_getColSpan :: HTMLTableCellElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/colSpan MDN HTMLTableCellElement.colSpan documentation>
+getColSpan :: (MonadDOM m) => HTMLTableCellElement -> m Word
+getColSpan self = liftDOM ((js_getColSpan (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
-setAxis ::
-        (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setAxis self val = liftIO (js_setAxis self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"axis\"]; })" js_getAxis ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"rowSpan\"] = $2; })"
+        js_setRowSpan :: HTMLTableCellElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/rowSpan MDN HTMLTableCellElement.rowSpan documentation>
+setRowSpan :: (MonadDOM m) => HTMLTableCellElement -> Word -> m ()
+setRowSpan self val = liftDOM (void ((js_setRowSpan (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
-getAxis ::
-        (MonadIO m, FromJSString result) =>
-          HTMLTableCellElement -> m result
-getAxis self = liftIO (fromJSString <$> (js_getAxis self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
-        js_setBgColor :: HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"rowSpan\"]; })"
+        js_getRowSpan :: HTMLTableCellElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/rowSpan MDN HTMLTableCellElement.rowSpan documentation>
+getRowSpan :: (MonadDOM m) => HTMLTableCellElement -> m Word
+getRowSpan self = liftDOM ((js_getRowSpan (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
-setBgColor ::
-           (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setBgColor self val = liftIO (js_setBgColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"headers\"] = $2; })"
+        js_setHeaders :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/headers MDN HTMLTableCellElement.headers documentation>
+setHeaders :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setHeaders self val = liftDOM (void ((js_setHeaders (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
-getBgColor ::
-           (MonadIO m, FromJSString result) =>
-             HTMLTableCellElement -> m result
-getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
-        HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })"
+        js_getHeaders :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/headers MDN HTMLTableCellElement.headers documentation>
+getHeaders :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getHeaders self = liftDOM ((fromJSString <$> (js_getHeaders (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
-setCh ::
-      (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setCh self val = liftIO (js_setCh self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"cellIndex\"]; })"
+        js_getCellIndex :: HTMLTableCellElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/cellIndex MDN HTMLTableCellElement.cellIndex documentation>
+getCellIndex :: (MonadDOM m) => HTMLTableCellElement -> m Int
+getCellIndex self = liftDOM ((js_getCellIndex (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
-getCh ::
-      (MonadIO m, FromJSString result) =>
-        HTMLTableCellElement -> m result
-getCh self = liftIO (fromJSString <$> (js_getCh self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
-        :: HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"scope\"] = $2; })"
+        js_setScope :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/scope MDN HTMLTableCellElement.scope documentation>
+setScope :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setScope self val = liftDOM (void ((js_setScope (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
-setChOff ::
-         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setChOff self val = liftIO (js_setChOff self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"scope\"]; })"
+        js_getScope :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/scope MDN HTMLTableCellElement.scope documentation>
+getScope :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getScope self = liftDOM ((fromJSString <$> (js_getScope (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
-getChOff ::
-         (MonadIO m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getChOff self = liftIO (fromJSString <$> (js_getChOff self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"colSpan\"] = $2; })"
-        js_setColSpan :: HTMLTableCellElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"abbr\"] = $2; })"
+        js_setAbbr :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/abbr MDN HTMLTableCellElement.abbr documentation>
+setAbbr :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAbbr self val = liftDOM (void ((js_setAbbr (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
-setColSpan :: (MonadIO m) => HTMLTableCellElement -> Word -> m ()
-setColSpan self val = liftIO (js_setColSpan self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"colSpan\"]; })" js_getColSpan ::
-        HTMLTableCellElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"abbr\"]; })"
+        js_getAbbr :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/abbr MDN HTMLTableCellElement.abbr documentation>
+getAbbr :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getAbbr self = liftDOM ((fromJSString <$> (js_getAbbr (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
-getColSpan :: (MonadIO m) => HTMLTableCellElement -> m Word
-getColSpan self = liftIO (js_getColSpan self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rowSpan\"] = $2; })"
-        js_setRowSpan :: HTMLTableCellElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/align MDN HTMLTableCellElement.align documentation>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
-setRowSpan :: (MonadIO m) => HTMLTableCellElement -> Word -> m ()
-setRowSpan self val = liftIO (js_setRowSpan self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rowSpan\"]; })" js_getRowSpan ::
-        HTMLTableCellElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/align MDN HTMLTableCellElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
-getRowSpan :: (MonadIO m) => HTMLTableCellElement -> m Word
-getRowSpan self = liftIO (js_getRowSpan self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"headers\"] = $2; })"
-        js_setHeaders :: HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"axis\"] = $2; })"
+        js_setAxis :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-tdth-axis HTMLTableCellElement.axis specification>
+setAxis :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAxis self val = liftDOM (void ((js_setAxis (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
-setHeaders ::
-           (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setHeaders self val = liftIO (js_setHeaders self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })" js_getHeaders ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"axis\"]; })"
+        js_getAxis :: HTMLTableCellElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-tdth-axis HTMLTableCellElement.axis specification>
+getAxis :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getAxis self = liftDOM ((fromJSString <$> (js_getAxis (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
-getHeaders ::
-           (MonadIO m, FromJSString result) =>
-             HTMLTableCellElement -> m result
-getHeaders self = liftIO (fromJSString <$> (js_getHeaders self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
         js_setHeight :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-tdth-height HTMLTableCellElement.height specification>
+setHeight :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
-setHeight ::
-          (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setHeight self val = liftIO (js_setHeight self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLTableCellElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-tdth-height HTMLTableCellElement.height specification>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getHeight self = liftDOM ((fromJSString <$> (js_getHeight (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
-getHeight ::
-          (MonadIO m, FromJSString result) =>
-            HTMLTableCellElement -> m result
-getHeight self = liftIO (fromJSString <$> (js_getHeight self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"noWrap\"] = $2; })"
-        js_setNoWrap :: HTMLTableCellElement -> Bool -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-tdth-width HTMLTableCellElement.width specification>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
-setNoWrap :: (MonadIO m) => HTMLTableCellElement -> Bool -> m ()
-setNoWrap self val = liftIO (js_setNoWrap self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"noWrap\"] ? 1 : 0); })"
-        js_getNoWrap :: HTMLTableCellElement -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLTableCellElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-tdth-width HTMLTableCellElement.width specification>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
-getNoWrap :: (MonadIO m) => HTMLTableCellElement -> m Bool
-getNoWrap self = liftIO (js_getNoWrap self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
-        js_setVAlign :: HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"ch\"] = $2; })"
+        js_setCh :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/ch MDN HTMLTableCellElement.ch documentation>
+setCh :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setCh self val = liftDOM (void ((js_setCh (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
-setVAlign ::
-          (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setVAlign self val = liftIO (js_setVAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })"
+        js_getCh :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/ch MDN HTMLTableCellElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getCh self = liftDOM ((fromJSString <$> (js_getCh (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
-getVAlign ::
-          (MonadIO m, FromJSString result) =>
-            HTMLTableCellElement -> m result
-getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"chOff\"] = $2; })"
+        js_setChOff :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/chOff MDN HTMLTableCellElement.chOff documentation>
+setChOff :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setChOff self val = liftDOM (void ((js_setChOff (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })"
+        js_getChOff :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/chOff MDN HTMLTableCellElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getChOff self = liftDOM ((fromJSString <$> (js_getChOff (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"abbr\"] = $2; })" js_setAbbr ::
-        HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"noWrap\"] = $2; })"
+        js_setNoWrap :: HTMLTableCellElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/noWrap MDN HTMLTableCellElement.noWrap documentation>
+setNoWrap :: (MonadDOM m) => HTMLTableCellElement -> Bool -> m ()
+setNoWrap self val = liftDOM (void ((js_setNoWrap (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
-setAbbr ::
-        (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setAbbr self val = liftIO (js_setAbbr self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"abbr\"]; })" js_getAbbr ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"noWrap\"]; })"
+        js_getNoWrap :: HTMLTableCellElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/noWrap MDN HTMLTableCellElement.noWrap documentation>
+getNoWrap :: (MonadDOM m) => HTMLTableCellElement -> m Bool
+getNoWrap self = liftDOM ((js_getNoWrap (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
-getAbbr ::
-        (MonadIO m, FromJSString result) =>
-          HTMLTableCellElement -> m result
-getAbbr self = liftIO (fromJSString <$> (js_getAbbr self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"scope\"] = $2; })" js_setScope
-        :: HTMLTableCellElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+        js_setVAlign :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/vAlign MDN HTMLTableCellElement.vAlign documentation>
+setVAlign :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setVAlign self val = liftDOM (void ((js_setVAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
-setScope ::
-         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setScope self val = liftIO (js_setScope self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scope\"]; })" js_getScope ::
-        HTMLTableCellElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })"
+        js_getVAlign :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/vAlign MDN HTMLTableCellElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getVAlign self = liftDOM ((fromJSString <$> (js_getVAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
-getScope ::
-         (MonadIO m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getScope self = liftIO (fromJSString <$> (js_getScope self))
+foreign import javascript safe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLTableCellElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/bgColor MDN HTMLTableCellElement.bgColor documentation>
+setBgColor :: (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setBgColor self val = liftDOM (void ((js_setBgColor (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })"
+        js_getBgColor :: HTMLTableCellElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/bgColor MDN HTMLTableCellElement.bgColor documentation>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getBgColor self = liftDOM ((fromJSString <$> (js_getBgColor (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
@@ -1,124 +1,89 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTableColElement
-       (js_setAlign, setAlign, js_getAlign, getAlign, js_setCh, setCh,
-        js_getCh, getCh, js_setChOff, setChOff, js_getChOff, getChOff,
-        js_setSpan, setSpan, js_getSpan, getSpan, js_setVAlign, setVAlign,
-        js_getVAlign, getVAlign, js_setWidth, setWidth, js_getWidth,
-        getWidth, HTMLTableColElement(..), gTypeHTMLTableColElement)
+       (js_setSpan, js_getSpan, js_setAlign, js_getAlign, js_setCh, js_getCh, js_setChOff, js_getChOff, js_setVAlign, js_getVAlign, js_setWidth, js_getWidth, setSpan, getSpan, setAlign, getAlign, setCh, getCh, setChOff, getChOff, setVAlign, getVAlign, setWidth, getWidth, HTMLTableColElement(..), gTypeHTMLTableColElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLTableColElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLTableColElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"span\"] = $2; })"
+        js_setSpan :: HTMLTableColElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/span MDN HTMLTableColElement.span documentation>
+setSpan :: (MonadDOM m) => HTMLTableColElement -> Word -> m ()
+setSpan self val = liftDOM (void ((js_setSpan (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
-        HTMLTableColElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"span\"]; })"
+        js_getSpan :: HTMLTableColElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/span MDN HTMLTableColElement.span documentation>
+getSpan :: (MonadDOM m) => HTMLTableColElement -> m Word
+getSpan self = liftDOM ((js_getSpan (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
-setCh ::
-      (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setCh self val = liftIO (js_setCh self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
-        HTMLTableColElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLTableColElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/align MDN HTMLTableColElement.align documentation>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
-getCh ::
-      (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
-getCh self = liftIO (fromJSString <$> (js_getCh self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
-        :: HTMLTableColElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLTableColElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/align MDN HTMLTableColElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
-setChOff ::
-         (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setChOff self val = liftIO (js_setChOff self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
-        HTMLTableColElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"ch\"] = $2; })"
+        js_setCh :: HTMLTableColElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/ch MDN HTMLTableColElement.ch documentation>
+setCh :: (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setCh self val = liftDOM (void ((js_setCh (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
-getChOff ::
-         (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
-getChOff self = liftIO (fromJSString <$> (js_getChOff self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"span\"] = $2; })" js_setSpan ::
-        HTMLTableColElement -> Word -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })"
+        js_getCh :: HTMLTableColElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/ch MDN HTMLTableColElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getCh self = liftDOM ((fromJSString <$> (js_getCh (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
-setSpan :: (MonadIO m) => HTMLTableColElement -> Word -> m ()
-setSpan self val = liftIO (js_setSpan self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"span\"]; })" js_getSpan ::
-        HTMLTableColElement -> IO Word
+foreign import javascript safe "(($1, $2) => { $1[\"chOff\"] = $2; })"
+        js_setChOff :: HTMLTableColElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/chOff MDN HTMLTableColElement.chOff documentation>
+setChOff :: (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setChOff self val = liftDOM (void ((js_setChOff (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
-getSpan :: (MonadIO m) => HTMLTableColElement -> m Word
-getSpan self = liftIO (js_getSpan self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
-        js_setVAlign :: HTMLTableColElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })"
+        js_getChOff :: HTMLTableColElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/chOff MDN HTMLTableColElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getChOff self = liftDOM ((fromJSString <$> (js_getChOff (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
-setVAlign ::
-          (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setVAlign self val = liftIO (js_setVAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
-        HTMLTableColElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+        js_setVAlign :: HTMLTableColElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/vAlign MDN HTMLTableColElement.vAlign documentation>
+setVAlign :: (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setVAlign self val = liftDOM (void ((js_setVAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
-getVAlign ::
-          (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
-getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLTableColElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })"
+        js_getVAlign :: HTMLTableColElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/vAlign MDN HTMLTableColElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getVAlign self = liftDOM ((fromJSString <$> (js_getVAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLTableColElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLTableColElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-col-width HTMLTableColElement.width specification>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLTableColElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-col-width HTMLTableColElement.width specification>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
@@ -1,394 +1,271 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTableElement
-       (js_createTHead, createTHead, createTHead_, js_deleteTHead,
-        deleteTHead, js_createTFoot, createTFoot, createTFoot_,
-        js_deleteTFoot, deleteTFoot, js_createTBody, createTBody,
-        createTBody_, js_createCaption, createCaption, createCaption_,
-        js_deleteCaption, deleteCaption, js_insertRow, insertRow,
-        insertRow_, js_deleteRow, deleteRow, js_setCaption, setCaption,
-        js_getCaption, getCaption, getCaptionUnsafe, getCaptionUnchecked,
-        js_setTHead, setTHead, js_getTHead, getTHead, getTHeadUnsafe,
-        getTHeadUnchecked, js_setTFoot, setTFoot, js_getTFoot, getTFoot,
-        getTFootUnsafe, getTFootUnchecked, js_getRows, getRows,
-        js_getTBodies, getTBodies, js_setAlign, setAlign, js_getAlign,
-        getAlign, js_setBgColor, setBgColor, js_getBgColor, getBgColor,
-        js_setBorder, setBorder, js_getBorder, getBorder,
-        js_setCellPadding, setCellPadding, js_getCellPadding,
-        getCellPadding, js_setCellSpacing, setCellSpacing,
-        js_getCellSpacing, getCellSpacing, js_setFrame, setFrame,
-        js_getFrame, getFrame, js_setRules, setRules, js_getRules,
-        getRules, js_setSummary, setSummary, js_getSummary, getSummary,
-        js_setWidth, setWidth, js_getWidth, getWidth, HTMLTableElement(..),
-        gTypeHTMLTableElement)
+       (js_createCaption, js_createTBody, js_createTFoot, js_createTHead, js_deleteCaption, js_deleteRow, js_deleteTFoot, js_deleteTHead, js_insertRow, js_setCaption, js_getCaption, js_setTHead, js_getTHead, js_setTFoot, js_getTFoot, js_getTBodies, js_getRows, js_setAlign, js_getAlign, js_setBorder, js_getBorder, js_setFrame, js_getFrame, js_setRules, js_getRules, js_setSummary, js_getSummary, js_setWidth, js_getWidth, js_setBgColor, js_getBgColor, js_setCellPadding, js_getCellPadding, js_setCellSpacing, js_getCellSpacing, createCaption, createCaption_, createTBody, createTBody_, createTFoot, createTFoot_, createTHead, createTHead_, deleteCaption, deleteRow, deleteTFoot, deleteTHead, insertRow, insertRow_, setCaption, getCaption, getCaptionUnsafe, getCaptionUnchecked, setTHead, getTHead, getTHeadUnsafe, getTHeadUnchecked, setTFoot, getTFoot, getTFootUnsafe, getTFootUnchecked, getTBodies, getRows, setAlign, getAlign, setBorder, getBorder, setFrame, getFrame, setRules, getRules, setSummary, getSummary, setWidth, getWidth, setBgColor, getBgColor, setCellPadding, getCellPadding, setCellSpacing, getCellSpacing, HTMLTableElement(..), gTypeHTMLTableElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createTHead\"](); })"
-        js_createTHead :: HTMLTableElement -> IO HTMLElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
-createTHead :: (MonadIO m) => HTMLTableElement -> m HTMLElement
-createTHead self = liftIO (js_createTHead self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
-createTHead_ :: (MonadIO m) => HTMLTableElement -> m ()
-createTHead_ self = liftIO (void (js_createTHead self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deleteTHead\"](); })"
-        js_deleteTHead :: HTMLTableElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"createCaption\"](); })"
+        js_createCaption :: HTMLTableElement -> IO HTMLTableCaptionElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createCaption MDN HTMLTableElement.createCaption documentation>
+createCaption :: (MonadDOM m) => HTMLTableElement -> m HTMLTableCaptionElement
+createCaption self = liftDOM ((js_createCaption (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTHead Mozilla HTMLTableElement.deleteTHead documentation> 
-deleteTHead :: (MonadIO m) => HTMLTableElement -> m ()
-deleteTHead self = liftIO (js_deleteTHead self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createTFoot\"](); })"
-        js_createTFoot :: HTMLTableElement -> IO HTMLElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createCaption MDN HTMLTableElement.createCaption documentation>
+createCaption_ :: (MonadDOM m) => HTMLTableElement -> m ()
+createCaption_ self = liftDOM (void ((js_createCaption (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
-createTFoot :: (MonadIO m) => HTMLTableElement -> m HTMLElement
-createTFoot self = liftIO (js_createTFoot self)
+foreign import javascript safe "(($1) => { return $1[\"createTBody\"](); })"
+        js_createTBody :: HTMLTableElement -> IO HTMLTableSectionElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTBody MDN HTMLTableElement.createTBody documentation>
+createTBody :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+createTBody self = liftDOM ((js_createTBody (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
-createTFoot_ :: (MonadIO m) => HTMLTableElement -> m ()
-createTFoot_ self = liftIO (void (js_createTFoot self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deleteTFoot\"](); })"
-        js_deleteTFoot :: HTMLTableElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTBody MDN HTMLTableElement.createTBody documentation>
+createTBody_ :: (MonadDOM m) => HTMLTableElement -> m ()
+createTBody_ self = liftDOM (void ((js_createTBody (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTFoot Mozilla HTMLTableElement.deleteTFoot documentation> 
-deleteTFoot :: (MonadIO m) => HTMLTableElement -> m ()
-deleteTFoot self = liftIO (js_deleteTFoot self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createTBody\"](); })"
-        js_createTBody :: HTMLTableElement -> IO HTMLElement
+foreign import javascript safe "(($1) => { return $1[\"createTFoot\"](); })"
+        js_createTFoot :: HTMLTableElement -> IO HTMLTableSectionElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTFoot MDN HTMLTableElement.createTFoot documentation>
+createTFoot :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+createTFoot self = liftDOM ((js_createTFoot (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
-createTBody :: (MonadIO m) => HTMLTableElement -> m HTMLElement
-createTBody self = liftIO (js_createTBody self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTFoot MDN HTMLTableElement.createTFoot documentation>
+createTFoot_ :: (MonadDOM m) => HTMLTableElement -> m ()
+createTFoot_ self = liftDOM (void ((js_createTFoot (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
-createTBody_ :: (MonadIO m) => HTMLTableElement -> m ()
-createTBody_ self = liftIO (void (js_createTBody self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createCaption\"](); })"
-        js_createCaption :: HTMLTableElement -> IO HTMLElement
+foreign import javascript safe "(($1) => { return $1[\"createTHead\"](); })"
+        js_createTHead :: HTMLTableElement -> IO HTMLTableSectionElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTHead MDN HTMLTableElement.createTHead documentation>
+createTHead :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+createTHead self = liftDOM ((js_createTHead (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
-createCaption :: (MonadIO m) => HTMLTableElement -> m HTMLElement
-createCaption self = liftIO (js_createCaption self)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTHead MDN HTMLTableElement.createTHead documentation>
+createTHead_ :: (MonadDOM m) => HTMLTableElement -> m ()
+createTHead_ self = liftDOM (void ((js_createTHead (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
-createCaption_ :: (MonadIO m) => HTMLTableElement -> m ()
-createCaption_ self = liftIO (void (js_createCaption self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deleteCaption\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"deleteCaption\"](); })"
         js_deleteCaption :: HTMLTableElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteCaption MDN HTMLTableElement.deleteCaption documentation>
+deleteCaption :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteCaption self = liftDOM (void ((js_deleteCaption (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteCaption Mozilla HTMLTableElement.deleteCaption documentation> 
-deleteCaption :: (MonadIO m) => HTMLTableElement -> m ()
-deleteCaption self = liftIO (js_deleteCaption self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"insertRow\"]($2); })" js_insertRow
-        :: HTMLTableElement -> Optional Int -> IO HTMLElement
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRow\"]($2); })"
+        js_deleteRow :: HTMLTableElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteRow MDN HTMLTableElement.deleteRow documentation>
+deleteRow :: (MonadDOM m) => HTMLTableElement -> Int -> m ()
+deleteRow self index = liftDOM (void ((js_deleteRow (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
-insertRow ::
-          (MonadIO m) => HTMLTableElement -> Maybe Int -> m HTMLElement
-insertRow self index
-  = liftIO (js_insertRow self (maybeToOptional index))
+foreign import javascript safe "(($1) => { return $1[\"deleteTFoot\"](); })"
+        js_deleteTFoot :: HTMLTableElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteTFoot MDN HTMLTableElement.deleteTFoot documentation>
+deleteTFoot :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteTFoot self = liftDOM (void ((js_deleteTFoot (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
-insertRow_ :: (MonadIO m) => HTMLTableElement -> Maybe Int -> m ()
-insertRow_ self index
-  = liftIO (void (js_insertRow self (maybeToOptional index)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"deleteRow\"]($2); })" js_deleteRow
-        :: HTMLTableElement -> Int -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"deleteTHead\"](); })"
+        js_deleteTHead :: HTMLTableElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteTHead MDN HTMLTableElement.deleteTHead documentation>
+deleteTHead :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteTHead self = liftDOM (void ((js_deleteTHead (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteRow Mozilla HTMLTableElement.deleteRow documentation> 
-deleteRow :: (MonadIO m) => HTMLTableElement -> Int -> m ()
-deleteRow self index = liftIO (js_deleteRow self index)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"caption\"] = $2; })"
-        js_setCaption ::
-        HTMLTableElement -> Optional HTMLTableCaptionElement -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"insertRow\"]($2); })"
+        js_insertRow :: HTMLTableElement -> JSVal -> IO HTMLTableRowElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/insertRow MDN HTMLTableElement.insertRow documentation>
+insertRow :: (MonadDOM m) => HTMLTableElement -> Maybe Int -> m HTMLTableRowElement
+insertRow self index = liftDOM (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a2' -> js_insertRow (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-setCaption ::
-           (MonadIO m) =>
-             HTMLTableElement -> Maybe HTMLTableCaptionElement -> m ()
-setCaption self val
-  = liftIO (js_setCaption self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"caption\"]; })" js_getCaption ::
-        HTMLTableElement -> IO (Nullable HTMLTableCaptionElement)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/insertRow MDN HTMLTableElement.insertRow documentation>
+insertRow_ :: (MonadDOM m) => HTMLTableElement -> Maybe Int -> m ()
+insertRow_ self index = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a2' -> js_insertRow (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-getCaption ::
-           (MonadIO m) =>
-             HTMLTableElement -> m (Maybe HTMLTableCaptionElement)
-getCaption self = liftIO (nullableToMaybe <$> (js_getCaption self))
+foreign import javascript safe "(($1, $2) => { $1[\"caption\"] = $2; })"
+        js_setCaption :: HTMLTableElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/caption MDN HTMLTableElement.caption documentation>
+setCaption :: (MonadDOM m) => HTMLTableElement -> Maybe HTMLTableCaptionElement -> m ()
+setCaption self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCaption (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-getCaptionUnsafe ::
-                 (MonadIO m, HasCallStack) =>
-                   HTMLTableElement -> m HTMLTableCaptionElement
-getCaptionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getCaption self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"caption\"]; })"
+        js_getCaption :: HTMLTableElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/caption MDN HTMLTableElement.caption documentation>
+getCaption :: (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLTableCaptionElement)
+getCaption self = liftDOM (((js_getCaption (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-getCaptionUnchecked ::
-                    (MonadIO m) => HTMLTableElement -> m HTMLTableCaptionElement
-getCaptionUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getCaption self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"tHead\"] = $2; })" js_setTHead ::
-        HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/caption MDN HTMLTableElement.caption documentation>
+getCaptionUnsafe :: (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLTableCaptionElement
+getCaptionUnsafe self = liftDOM ((((js_getCaption (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
-setTHead ::
-         (MonadIO m) =>
-           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
-setTHead self val = liftIO (js_setTHead self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tHead\"]; })" js_getTHead ::
-        HTMLTableElement -> IO (Nullable HTMLTableSectionElement)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/caption MDN HTMLTableElement.caption documentation>
+getCaptionUnchecked :: (MonadDOM m) => HTMLTableElement -> m HTMLTableCaptionElement
+getCaptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getCaption (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
-getTHead ::
-         (MonadIO m) =>
-           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
-getTHead self = liftIO (nullableToMaybe <$> (js_getTHead self))
+foreign import javascript safe "(($1, $2) => { $1[\"tHead\"] = $2; })"
+        js_setTHead :: HTMLTableElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tHead MDN HTMLTableElement.tHead documentation>
+setTHead :: (MonadDOM m) => HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
+setTHead self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTHead (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
-getTHeadUnsafe ::
-               (MonadIO m, HasCallStack) =>
-                 HTMLTableElement -> m HTMLTableSectionElement
-getTHeadUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getTHead self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"tHead\"]; })"
+        js_getTHead :: HTMLTableElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tHead MDN HTMLTableElement.tHead documentation>
+getTHead :: (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTHead self = liftDOM (((js_getTHead (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
-getTHeadUnchecked ::
-                  (MonadIO m) => HTMLTableElement -> m HTMLTableSectionElement
-getTHeadUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getTHead self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"tFoot\"] = $2; })" js_setTFoot ::
-        HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tHead MDN HTMLTableElement.tHead documentation>
+getTHeadUnsafe :: (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLTableSectionElement
+getTHeadUnsafe self = liftDOM ((((js_getTHead (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
-setTFoot ::
-         (MonadIO m) =>
-           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
-setTFoot self val = liftIO (js_setTFoot self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tFoot\"]; })" js_getTFoot ::
-        HTMLTableElement -> IO (Nullable HTMLTableSectionElement)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tHead MDN HTMLTableElement.tHead documentation>
+getTHeadUnchecked :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+getTHeadUnchecked self = liftDOM ((pFromJSVal <$> (js_getTHead (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
-getTFoot ::
-         (MonadIO m) =>
-           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
-getTFoot self = liftIO (nullableToMaybe <$> (js_getTFoot self))
+foreign import javascript safe "(($1, $2) => { $1[\"tFoot\"] = $2; })"
+        js_setTFoot :: HTMLTableElement -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tFoot MDN HTMLTableElement.tFoot documentation>
+setTFoot :: (MonadDOM m) => HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
+setTFoot self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTFoot (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
-getTFootUnsafe ::
-               (MonadIO m, HasCallStack) =>
-                 HTMLTableElement -> m HTMLTableSectionElement
-getTFootUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getTFoot self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"tFoot\"]; })"
+        js_getTFoot :: HTMLTableElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tFoot MDN HTMLTableElement.tFoot documentation>
+getTFoot :: (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTFoot self = liftDOM (((js_getTFoot (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
-getTFootUnchecked ::
-                  (MonadIO m) => HTMLTableElement -> m HTMLTableSectionElement
-getTFootUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getTFoot self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
-        HTMLTableElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tFoot MDN HTMLTableElement.tFoot documentation>
+getTFootUnsafe :: (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLTableSectionElement
+getTFootUnsafe self = liftDOM ((((js_getTFoot (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rows Mozilla HTMLTableElement.rows documentation> 
-getRows :: (MonadIO m) => HTMLTableElement -> m HTMLCollection
-getRows self = liftIO (js_getRows self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tBodies\"]; })" js_getTBodies ::
-        HTMLTableElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tFoot MDN HTMLTableElement.tFoot documentation>
+getTFootUnchecked :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+getTFootUnchecked self = liftDOM ((pFromJSVal <$> (js_getTFoot (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tBodies Mozilla HTMLTableElement.tBodies documentation> 
-getTBodies :: (MonadIO m) => HTMLTableElement -> m HTMLCollection
-getTBodies self = liftIO (js_getTBodies self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"tBodies\"]; })"
+        js_getTBodies :: HTMLTableElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tBodies MDN HTMLTableElement.tBodies documentation>
+getTBodies :: (MonadDOM m) => HTMLTableElement -> m HTMLCollection
+getTBodies self = liftDOM ((js_getTBodies (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })"
+        js_getRows :: HTMLTableElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rows MDN HTMLTableElement.rows documentation>
+getRows :: (MonadDOM m) => HTMLTableElement -> m HTMLCollection
+getRows self = liftDOM ((js_getRows (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
-        js_setBgColor :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/align MDN HTMLTableElement.align documentation>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
-setBgColor ::
-           (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setBgColor self val = liftIO (js_setBgColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
-        HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/align MDN HTMLTableElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
-getBgColor ::
-           (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"border\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"border\"] = $2; })"
         js_setBorder :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/border MDN HTMLTableElement.border documentation>
+setBorder :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setBorder self val = liftDOM (void ((js_setBorder (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
-setBorder ::
-          (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setBorder self val = liftIO (js_setBorder self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })" js_getBorder ::
-        HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })"
+        js_getBorder :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/border MDN HTMLTableElement.border documentation>
+getBorder :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getBorder self = liftDOM ((fromJSString <$> (js_getBorder (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
-getBorder ::
-          (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getBorder self = liftIO (fromJSString <$> (js_getBorder self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"cellPadding\"] = $2; })"
-        js_setCellPadding :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"frame\"] = $2; })"
+        js_setFrame :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/frame MDN HTMLTableElement.frame documentation>
+setFrame :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setFrame self val = liftDOM (void ((js_setFrame (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
-setCellPadding ::
-               (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setCellPadding self val
-  = liftIO (js_setCellPadding self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cellPadding\"]; })"
-        js_getCellPadding :: HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"frame\"]; })"
+        js_getFrame :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/frame MDN HTMLTableElement.frame documentation>
+getFrame :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getFrame self = liftDOM ((fromJSString <$> (js_getFrame (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
-getCellPadding ::
-               (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getCellPadding self
-  = liftIO (fromJSString <$> (js_getCellPadding self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"cellSpacing\"] = $2; })"
-        js_setCellSpacing :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"rules\"] = $2; })"
+        js_setRules :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rules MDN HTMLTableElement.rules documentation>
+setRules :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setRules self val = liftDOM (void ((js_setRules (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
-setCellSpacing ::
-               (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setCellSpacing self val
-  = liftIO (js_setCellSpacing self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cellSpacing\"]; })"
-        js_getCellSpacing :: HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"rules\"]; })"
+        js_getRules :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rules MDN HTMLTableElement.rules documentation>
+getRules :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getRules self = liftDOM ((fromJSString <$> (js_getRules (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
-getCellSpacing ::
-               (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getCellSpacing self
-  = liftIO (fromJSString <$> (js_getCellSpacing self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"frame\"] = $2; })" js_setFrame
-        :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"summary\"] = $2; })"
+        js_setSummary :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/summary MDN HTMLTableElement.summary documentation>
+setSummary :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setSummary self val = liftDOM (void ((js_setSummary (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
-setFrame ::
-         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setFrame self val = liftIO (js_setFrame self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"frame\"]; })" js_getFrame ::
-        HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"summary\"]; })"
+        js_getSummary :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/summary MDN HTMLTableElement.summary documentation>
+getSummary :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getSummary self = liftDOM ((fromJSString <$> (js_getSummary (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
-getFrame ::
-         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getFrame self = liftIO (fromJSString <$> (js_getFrame self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rules\"] = $2; })" js_setRules
-        :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/width MDN HTMLTableElement.width documentation>
+setWidth :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
-setRules ::
-         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setRules self val = liftIO (js_setRules self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rules\"]; })" js_getRules ::
-        HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/width MDN HTMLTableElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getWidth self = liftDOM ((fromJSString <$> (js_getWidth (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
-getRules ::
-         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getRules self = liftIO (fromJSString <$> (js_getRules self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"summary\"] = $2; })"
-        js_setSummary :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/bgColor MDN HTMLTableElement.bgColor documentation>
+setBgColor :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setBgColor self val = liftDOM (void ((js_setBgColor (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
-setSummary ::
-           (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setSummary self val = liftIO (js_setSummary self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"summary\"]; })" js_getSummary ::
-        HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })"
+        js_getBgColor :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/bgColor MDN HTMLTableElement.bgColor documentation>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getBgColor self = liftDOM ((fromJSString <$> (js_getBgColor (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
-getSummary ::
-           (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getSummary self = liftIO (fromJSString <$> (js_getSummary self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLTableElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"cellPadding\"] = $2; })"
+        js_setCellPadding :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/cellPadding MDN HTMLTableElement.cellPadding documentation>
+setCellPadding :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setCellPadding self val = liftDOM (void ((js_setCellPadding (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
-setWidth ::
-         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
-setWidth self val = liftIO (js_setWidth self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLTableElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"cellPadding\"]; })"
+        js_getCellPadding :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/cellPadding MDN HTMLTableElement.cellPadding documentation>
+getCellPadding :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getCellPadding self = liftDOM ((fromJSString <$> (js_getCellPadding (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
-getWidth ::
-         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
-getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+foreign import javascript safe "(($1, $2) => { $1[\"cellSpacing\"] = $2; })"
+        js_setCellSpacing :: HTMLTableElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/cellSpacing MDN HTMLTableElement.cellSpacing documentation>
+setCellSpacing :: (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
+setCellSpacing self val = liftDOM (void ((js_setCellSpacing (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cellSpacing\"]; })"
+        js_getCellSpacing :: HTMLTableElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/cellSpacing MDN HTMLTableElement.cellSpacing documentation>
+getCellSpacing :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getCellSpacing self = liftDOM ((fromJSString <$> (js_getCellSpacing (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
@@ -1,157 +1,111 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
-       (js_insertCell, insertCell, insertCell_, js_deleteCell, deleteCell,
-        js_getRowIndex, getRowIndex, js_getSectionRowIndex,
-        getSectionRowIndex, js_getCells, getCells, js_setAlign, setAlign,
-        js_getAlign, getAlign, js_setBgColor, setBgColor, js_getBgColor,
-        getBgColor, js_setCh, setCh, js_getCh, getCh, js_setChOff,
-        setChOff, js_getChOff, getChOff, js_setVAlign, setVAlign,
-        js_getVAlign, getVAlign, HTMLTableRowElement(..),
-        gTypeHTMLTableRowElement)
+       (js_deleteCell, js_insertCell, js_getRowIndex, js_getSectionRowIndex, js_getCells, js_setAlign, js_getAlign, js_setCh, js_getCh, js_setChOff, js_getChOff, js_setVAlign, js_getVAlign, js_setBgColor, js_getBgColor, deleteCell, insertCell, insertCell_, getRowIndex, getSectionRowIndex, getCells, setAlign, getAlign, setCh, getCh, setChOff, getChOff, setVAlign, getVAlign, setBgColor, getBgColor, HTMLTableRowElement(..), gTypeHTMLTableRowElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"insertCell\"]($2); })"
-        js_insertCell ::
-        HTMLTableRowElement -> Optional Int -> IO HTMLElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
-insertCell ::
-           (MonadIO m) => HTMLTableRowElement -> Maybe Int -> m HTMLElement
-insertCell self index
-  = liftIO (js_insertCell self (maybeToOptional index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
-insertCell_ ::
-            (MonadIO m) => HTMLTableRowElement -> Maybe Int -> m ()
-insertCell_ self index
-  = liftIO (void (js_insertCell self (maybeToOptional index)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"deleteCell\"]($2); })"
         js_deleteCell :: HTMLTableRowElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/deleteCell MDN HTMLTableRowElement.deleteCell documentation>
+deleteCell :: (MonadDOM m) => HTMLTableRowElement -> Int -> m ()
+deleteCell self index = liftDOM (void ((js_deleteCell (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.deleteCell Mozilla HTMLTableRowElement.deleteCell documentation> 
-deleteCell :: (MonadIO m) => HTMLTableRowElement -> Int -> m ()
-deleteCell self index = liftIO (js_deleteCell self index)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rowIndex\"]; })" js_getRowIndex
-        :: HTMLTableRowElement -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"insertCell\"]($2); })"
+        js_insertCell :: HTMLTableRowElement -> JSVal -> IO HTMLTableCellElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/insertCell MDN HTMLTableRowElement.insertCell documentation>
+insertCell :: (MonadDOM m) => HTMLTableRowElement -> Maybe Int -> m HTMLTableCellElement
+insertCell self index = liftDOM (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a2' -> js_insertCell (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.rowIndex Mozilla HTMLTableRowElement.rowIndex documentation> 
-getRowIndex :: (MonadIO m) => HTMLTableRowElement -> m Int
-getRowIndex self = liftIO (js_getRowIndex self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sectionRowIndex\"]; })"
-        js_getSectionRowIndex :: HTMLTableRowElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/insertCell MDN HTMLTableRowElement.insertCell documentation>
+insertCell_ :: (MonadDOM m) => HTMLTableRowElement -> Maybe Int -> m ()
+insertCell_ self index = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a2' -> js_insertCell (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.sectionRowIndex Mozilla HTMLTableRowElement.sectionRowIndex documentation> 
-getSectionRowIndex :: (MonadIO m) => HTMLTableRowElement -> m Int
-getSectionRowIndex self = liftIO (js_getSectionRowIndex self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cells\"]; })" js_getCells ::
-        HTMLTableRowElement -> IO HTMLCollection
+foreign import javascript unsafe "(($1) => { return $1[\"rowIndex\"]; })"
+        js_getRowIndex :: HTMLTableRowElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/rowIndex MDN HTMLTableRowElement.rowIndex documentation>
+getRowIndex :: (MonadDOM m) => HTMLTableRowElement -> m Int
+getRowIndex self = liftDOM ((js_getRowIndex (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.cells Mozilla HTMLTableRowElement.cells documentation> 
-getCells :: (MonadIO m) => HTMLTableRowElement -> m HTMLCollection
-getCells self = liftIO (js_getCells self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLTableRowElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"sectionRowIndex\"]; })"
+        js_getSectionRowIndex :: HTMLTableRowElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/sectionRowIndex MDN HTMLTableRowElement.sectionRowIndex documentation>
+getSectionRowIndex :: (MonadDOM m) => HTMLTableRowElement -> m Int
+getSectionRowIndex self = liftDOM ((js_getSectionRowIndex (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLTableRowElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"cells\"]; })"
+        js_getCells :: HTMLTableRowElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/cells MDN HTMLTableRowElement.cells documentation>
+getCells :: (MonadDOM m) => HTMLTableRowElement -> m HTMLCollection
+getCells self = liftDOM ((js_getCells (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
-        js_setBgColor :: HTMLTableRowElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLTableRowElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/align MDN HTMLTableRowElement.align documentation>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
-setBgColor ::
-           (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setBgColor self val = liftIO (js_setBgColor self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
-        HTMLTableRowElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLTableRowElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/align MDN HTMLTableRowElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
-getBgColor ::
-           (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
-getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
-        HTMLTableRowElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"ch\"] = $2; })"
+        js_setCh :: HTMLTableRowElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/ch MDN HTMLTableRowElement.ch documentation>
+setCh :: (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setCh self val = liftDOM (void ((js_setCh (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
-setCh ::
-      (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setCh self val = liftIO (js_setCh self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
-        HTMLTableRowElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })"
+        js_getCh :: HTMLTableRowElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/ch MDN HTMLTableRowElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getCh self = liftDOM ((fromJSString <$> (js_getCh (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
-getCh ::
-      (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
-getCh self = liftIO (fromJSString <$> (js_getCh self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
-        :: HTMLTableRowElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"chOff\"] = $2; })"
+        js_setChOff :: HTMLTableRowElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/chOff MDN HTMLTableRowElement.chOff documentation>
+setChOff :: (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setChOff self val = liftDOM (void ((js_setChOff (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
-setChOff ::
-         (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setChOff self val = liftIO (js_setChOff self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
-        HTMLTableRowElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })"
+        js_getChOff :: HTMLTableRowElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/chOff MDN HTMLTableRowElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getChOff self = liftDOM ((fromJSString <$> (js_getChOff (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
-getChOff ::
-         (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
-getChOff self = liftIO (fromJSString <$> (js_getChOff self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
         js_setVAlign :: HTMLTableRowElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/vAlign MDN HTMLTableRowElement.vAlign documentation>
+setVAlign :: (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setVAlign self val = liftDOM (void ((js_setVAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
-setVAlign ::
-          (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setVAlign self val = liftIO (js_setVAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
-        HTMLTableRowElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })"
+        js_getVAlign :: HTMLTableRowElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/vAlign MDN HTMLTableRowElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getVAlign self = liftDOM ((fromJSString <$> (js_getVAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
-getVAlign ::
-          (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
-getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
+foreign import javascript safe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLTableRowElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/bgColor MDN HTMLTableRowElement.bgColor documentation>
+setBgColor :: (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setBgColor self val = liftDOM (void ((js_setBgColor (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })"
+        js_getBgColor :: HTMLTableRowElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/bgColor MDN HTMLTableRowElement.bgColor documentation>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getBgColor self = liftDOM ((fromJSString <$> (js_getBgColor (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
@@ -1,133 +1,87 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
-       (js_insertRow, insertRow, insertRow_, js_deleteRow, deleteRow,
-        js_setAlign, setAlign, js_getAlign, getAlign, js_setCh, setCh,
-        js_getCh, getCh, js_setChOff, setChOff, js_getChOff, getChOff,
-        js_setVAlign, setVAlign, js_getVAlign, getVAlign, js_getRows,
-        getRows, HTMLTableSectionElement(..), gTypeHTMLTableSectionElement)
+       (js_deleteRow, js_insertRow, js_getRows, js_setAlign, js_getAlign, js_setCh, js_getCh, js_setChOff, js_getChOff, js_setVAlign, js_getVAlign, deleteRow, insertRow, insertRow_, getRows, setAlign, getAlign, setCh, getCh, setChOff, getChOff, setVAlign, getVAlign, HTMLTableSectionElement(..), gTypeHTMLTableSectionElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"insertRow\"]($2); })" js_insertRow
-        :: HTMLTableSectionElement -> Optional Int -> IO HTMLElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
-insertRow ::
-          (MonadIO m) =>
-            HTMLTableSectionElement -> Maybe Int -> m HTMLElement
-insertRow self index
-  = liftIO (js_insertRow self (maybeToOptional index))
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRow\"]($2); })"
+        js_deleteRow :: HTMLTableSectionElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/deleteRow MDN HTMLTableSectionElement.deleteRow documentation>
+deleteRow :: (MonadDOM m) => HTMLTableSectionElement -> Int -> m ()
+deleteRow self index = liftDOM (void ((js_deleteRow (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
-insertRow_ ::
-           (MonadIO m) => HTMLTableSectionElement -> Maybe Int -> m ()
-insertRow_ self index
-  = liftIO (void (js_insertRow self (maybeToOptional index)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"deleteRow\"]($2); })" js_deleteRow
-        :: HTMLTableSectionElement -> Int -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"insertRow\"]($2); })"
+        js_insertRow :: HTMLTableSectionElement -> JSVal -> IO HTMLTableRowElement
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/insertRow MDN HTMLTableSectionElement.insertRow documentation>
+insertRow :: (MonadDOM m) => HTMLTableSectionElement -> Maybe Int -> m HTMLTableRowElement
+insertRow self index = liftDOM (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a2' -> js_insertRow (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.deleteRow Mozilla HTMLTableSectionElement.deleteRow documentation> 
-deleteRow :: (MonadIO m) => HTMLTableSectionElement -> Int -> m ()
-deleteRow self index = liftIO (js_deleteRow self index)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
-        :: HTMLTableSectionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/insertRow MDN HTMLTableSectionElement.insertRow documentation>
+insertRow_ :: (MonadDOM m) => HTMLTableSectionElement -> Maybe Int -> m ()
+insertRow_ self index = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal index) >>= \a2' -> js_insertRow (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
-setAlign ::
-         (MonadIO m, ToJSString val) =>
-           HTMLTableSectionElement -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        HTMLTableSectionElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })"
+        js_getRows :: HTMLTableSectionElement -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/rows MDN HTMLTableSectionElement.rows documentation>
+getRows :: (MonadDOM m) => HTMLTableSectionElement -> m HTMLCollection
+getRows self = liftDOM ((js_getRows (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
-getAlign ::
-         (MonadIO m, FromJSString result) =>
-           HTMLTableSectionElement -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
-        HTMLTableSectionElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: HTMLTableSectionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/align MDN HTMLTableSectionElement.align documentation>
+setAlign :: (MonadDOM m, ToJSString val) => HTMLTableSectionElement -> val -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
-setCh ::
-      (MonadIO m, ToJSString val) =>
-        HTMLTableSectionElement -> val -> m ()
-setCh self val = liftIO (js_setCh self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
-        HTMLTableSectionElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: HTMLTableSectionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/align MDN HTMLTableSectionElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getAlign self = liftDOM ((fromJSString <$> (js_getAlign (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
-getCh ::
-      (MonadIO m, FromJSString result) =>
-        HTMLTableSectionElement -> m result
-getCh self = liftIO (fromJSString <$> (js_getCh self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
-        :: HTMLTableSectionElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"ch\"] = $2; })"
+        js_setCh :: HTMLTableSectionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/ch MDN HTMLTableSectionElement.ch documentation>
+setCh :: (MonadDOM m, ToJSString val) => HTMLTableSectionElement -> val -> m ()
+setCh self val = liftDOM (void ((js_setCh (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
-setChOff ::
-         (MonadIO m, ToJSString val) =>
-           HTMLTableSectionElement -> val -> m ()
-setChOff self val = liftIO (js_setChOff self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
-        HTMLTableSectionElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })"
+        js_getCh :: HTMLTableSectionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/ch MDN HTMLTableSectionElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getCh self = liftDOM ((fromJSString <$> (js_getCh (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
-getChOff ::
-         (MonadIO m, FromJSString result) =>
-           HTMLTableSectionElement -> m result
-getChOff self = liftIO (fromJSString <$> (js_getChOff self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
-        js_setVAlign :: HTMLTableSectionElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"chOff\"] = $2; })"
+        js_setChOff :: HTMLTableSectionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/chOff MDN HTMLTableSectionElement.chOff documentation>
+setChOff :: (MonadDOM m, ToJSString val) => HTMLTableSectionElement -> val -> m ()
+setChOff self val = liftDOM (void ((js_setChOff (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
-setVAlign ::
-          (MonadIO m, ToJSString val) =>
-            HTMLTableSectionElement -> val -> m ()
-setVAlign self val = liftIO (js_setVAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
-        HTMLTableSectionElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })"
+        js_getChOff :: HTMLTableSectionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/chOff MDN HTMLTableSectionElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getChOff self = liftDOM ((fromJSString <$> (js_getChOff (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
-getVAlign ::
-          (MonadIO m, FromJSString result) =>
-            HTMLTableSectionElement -> m result
-getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
-        HTMLTableSectionElement -> IO HTMLCollection
+foreign import javascript safe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+        js_setVAlign :: HTMLTableSectionElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/vAlign MDN HTMLTableSectionElement.vAlign documentation>
+setVAlign :: (MonadDOM m, ToJSString val) => HTMLTableSectionElement -> val -> m ()
+setVAlign self val = liftDOM (void ((js_setVAlign (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.rows Mozilla HTMLTableSectionElement.rows documentation> 
-getRows ::
-        (MonadIO m) => HTMLTableSectionElement -> m HTMLCollection
-getRows self = liftIO (js_getRows self)
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })"
+        js_getVAlign :: HTMLTableSectionElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/vAlign MDN HTMLTableSectionElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getVAlign self = liftDOM ((fromJSString <$> (js_getVAlign (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
@@ -1,35 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
-       (js_getContent, getContent, HTMLTemplateElement(..),
-        gTypeHTMLTemplateElement)
+       (js_getContent, js_setShadowRootMode, js_getShadowRootMode, js_setShadowRootDelegatesFocus, js_getShadowRootDelegatesFocus, js_setShadowRootSerializable, js_getShadowRootSerializable, js_setShadowRootSlotAssignment, js_getShadowRootSlotAssignment, js_setShadowRootClonable, js_getShadowRootClonable, js_setShadowRootCustomElementRegistry, js_getShadowRootCustomElementRegistry, getContent, setShadowRootMode, getShadowRootMode, setShadowRootDelegatesFocus, getShadowRootDelegatesFocus, setShadowRootSerializable, getShadowRootSerializable, setShadowRootSlotAssignment, getShadowRootSlotAssignment, setShadowRootClonable, getShadowRootClonable, setShadowRootCustomElementRegistry, getShadowRootCustomElementRegistry, HTMLTemplateElement(..), gTypeHTMLTemplateElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"content\"]; })" js_getContent ::
-        HTMLTemplateElement -> IO DocumentFragment
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
-getContent ::
-           (MonadIO m) => HTMLTemplateElement -> m DocumentFragment
-getContent self = liftIO (js_getContent self)
+foreign import javascript unsafe "(($1) => { return $1[\"content\"]; })"
+        js_getContent :: HTMLTemplateElement -> IO DocumentFragment
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/content MDN HTMLTemplateElement.content documentation>
+getContent :: (MonadDOM m) => HTMLTemplateElement -> m DocumentFragment
+getContent self = liftDOM ((js_getContent (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRootMode\"] = $2; })"
+        js_setShadowRootMode :: HTMLTemplateElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootMode MDN HTMLTemplateElement.shadowRootMode documentation>
+setShadowRootMode :: (MonadDOM m, ToJSString val) => HTMLTemplateElement -> val -> m ()
+setShadowRootMode self val = liftDOM (void ((js_setShadowRootMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRootMode\"]; })"
+        js_getShadowRootMode :: HTMLTemplateElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootMode MDN HTMLTemplateElement.shadowRootMode documentation>
+getShadowRootMode :: (MonadDOM m, FromJSString result) => HTMLTemplateElement -> m result
+getShadowRootMode self = liftDOM ((fromJSString <$> (js_getShadowRootMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRootDelegatesFocus\"] = $2; })"
+        js_setShadowRootDelegatesFocus :: HTMLTemplateElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootDelegatesFocus MDN HTMLTemplateElement.shadowRootDelegatesFocus documentation>
+setShadowRootDelegatesFocus :: (MonadDOM m) => HTMLTemplateElement -> Bool -> m ()
+setShadowRootDelegatesFocus self val = liftDOM (void ((js_setShadowRootDelegatesFocus (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRootDelegatesFocus\"]; })"
+        js_getShadowRootDelegatesFocus :: HTMLTemplateElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootDelegatesFocus MDN HTMLTemplateElement.shadowRootDelegatesFocus documentation>
+getShadowRootDelegatesFocus :: (MonadDOM m) => HTMLTemplateElement -> m Bool
+getShadowRootDelegatesFocus self = liftDOM ((js_getShadowRootDelegatesFocus (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRootSerializable\"] = $2; })"
+        js_setShadowRootSerializable :: HTMLTemplateElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootSerializable MDN HTMLTemplateElement.shadowRootSerializable documentation>
+setShadowRootSerializable :: (MonadDOM m) => HTMLTemplateElement -> Bool -> m ()
+setShadowRootSerializable self val = liftDOM (void ((js_setShadowRootSerializable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRootSerializable\"]; })"
+        js_getShadowRootSerializable :: HTMLTemplateElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootSerializable MDN HTMLTemplateElement.shadowRootSerializable documentation>
+getShadowRootSerializable :: (MonadDOM m) => HTMLTemplateElement -> m Bool
+getShadowRootSerializable self = liftDOM ((js_getShadowRootSerializable (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRootSlotAssignment\"] = $2; })"
+        js_setShadowRootSlotAssignment :: HTMLTemplateElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootSlotAssignment MDN HTMLTemplateElement.shadowRootSlotAssignment documentation>
+setShadowRootSlotAssignment :: (MonadDOM m, ToJSString val) => HTMLTemplateElement -> val -> m ()
+setShadowRootSlotAssignment self val = liftDOM (void ((js_setShadowRootSlotAssignment (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRootSlotAssignment\"]; })"
+        js_getShadowRootSlotAssignment :: HTMLTemplateElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootSlotAssignment MDN HTMLTemplateElement.shadowRootSlotAssignment documentation>
+getShadowRootSlotAssignment :: (MonadDOM m, FromJSString result) => HTMLTemplateElement -> m result
+getShadowRootSlotAssignment self = liftDOM ((fromJSString <$> (js_getShadowRootSlotAssignment (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRootClonable\"] = $2; })"
+        js_setShadowRootClonable :: HTMLTemplateElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootClonable MDN HTMLTemplateElement.shadowRootClonable documentation>
+setShadowRootClonable :: (MonadDOM m) => HTMLTemplateElement -> Bool -> m ()
+setShadowRootClonable self val = liftDOM (void ((js_setShadowRootClonable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRootClonable\"]; })"
+        js_getShadowRootClonable :: HTMLTemplateElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootClonable MDN HTMLTemplateElement.shadowRootClonable documentation>
+getShadowRootClonable :: (MonadDOM m) => HTMLTemplateElement -> m Bool
+getShadowRootClonable self = liftDOM ((js_getShadowRootClonable (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRootCustomElementRegistry\"] = $2; })"
+        js_setShadowRootCustomElementRegistry :: HTMLTemplateElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootCustomElementRegistry MDN HTMLTemplateElement.shadowRootCustomElementRegistry documentation>
+setShadowRootCustomElementRegistry :: (MonadDOM m, ToJSString val) => HTMLTemplateElement -> val -> m ()
+setShadowRootCustomElementRegistry self val = liftDOM (void ((js_setShadowRootCustomElementRegistry (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRootCustomElementRegistry\"]; })"
+        js_getShadowRootCustomElementRegistry :: HTMLTemplateElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootCustomElementRegistry MDN HTMLTemplateElement.shadowRootCustomElementRegistry documentation>
+getShadowRootCustomElementRegistry :: (MonadDOM m, FromJSString result) => HTMLTemplateElement -> m result
+getShadowRootCustomElementRegistry self = liftDOM ((fromJSString <$> (js_getShadowRootCustomElementRegistry (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
@@ -1,467 +1,321 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
-       (js_checkValidity, checkValidity, checkValidity_,
-        js_reportValidity, reportValidity, reportValidity_,
-        js_setCustomValidity, setCustomValidity, js_select, select,
-        js_setRangeText, setRangeText, js_setRangeText4, setRangeText4,
-        js_setSelectionRange, setSelectionRange, js_setAutofocus,
-        setAutofocus, js_getAutofocus, getAutofocus, js_setDirName,
-        setDirName, js_getDirName, getDirName, js_setDisabled, setDisabled,
-        js_getDisabled, getDisabled, js_getForm, getForm, js_setMinLength,
-        setMinLength, js_getMinLength, getMinLength, js_setMaxLength,
-        setMaxLength, js_getMaxLength, getMaxLength, js_setName, setName,
-        js_getName, getName, js_setPlaceholder, setPlaceholder,
-        js_getPlaceholder, getPlaceholder, js_setReadOnly, setReadOnly,
-        js_getReadOnly, getReadOnly, js_setRequired, setRequired,
-        js_getRequired, getRequired, js_setRows, setRows, js_getRows,
-        getRows, js_setCols, setCols, js_getCols, getCols, js_setWrap,
-        setWrap, js_getWrap, getWrap, js_getType, getType,
-        js_setDefaultValue, setDefaultValue, js_getDefaultValue,
-        getDefaultValue, js_setValue, setValue, js_getValue, getValue,
-        js_getTextLength, getTextLength, js_getWillValidate,
-        getWillValidate, js_getValidity, getValidity,
-        js_getValidationMessage, getValidationMessage, js_getLabels,
-        getLabels, js_setSelectionStart, setSelectionStart,
-        js_getSelectionStart, getSelectionStart, js_setSelectionEnd,
-        setSelectionEnd, js_getSelectionEnd, getSelectionEnd,
-        js_setSelectionDirection, setSelectionDirection,
-        js_getSelectionDirection, getSelectionDirection,
-        js_setAutocomplete, setAutocomplete, js_getAutocomplete,
-        getAutocomplete, HTMLTextAreaElement(..), gTypeHTMLTextAreaElement)
+       (js_checkValidity, js_reportValidity, js_select, js_setCustomValidity, js_setRangeText, js_setRangeText4, js_setSelectionRange, js_setAutocomplete, js_getAutocomplete, js_setCols, js_getCols, js_setDirName, js_getDirName, js_setDisabled, js_getDisabled, js_getForm, js_setMaxLength, js_getMaxLength, js_setMinLength, js_getMinLength, js_setName, js_getName, js_setPlaceholder, js_getPlaceholder, js_setReadOnly, js_getReadOnly, js_setRequired, js_getRequired, js_setRows, js_getRows, js_setWrap, js_getWrap, js_getType, js_setDefaultValue, js_getDefaultValue, js_setValue, js_getValue, js_getTextLength, js_getWillValidate, js_getValidity, js_getValidationMessage, js_getLabels, js_setSelectionStart, js_getSelectionStart, js_setSelectionEnd, js_getSelectionEnd, js_setSelectionDirection, js_getSelectionDirection, checkValidity, checkValidity_, reportValidity, reportValidity_, select, setCustomValidity, setRangeText, setRangeText4, setSelectionRange, setAutocomplete, getAutocomplete, setCols, getCols, setDirName, getDirName, setDisabled, getDisabled, getForm, getFormUnsafe, getFormUnchecked, setMaxLength, getMaxLength, setMinLength, getMinLength, setName, getName, setPlaceholder, getPlaceholder, setReadOnly, getReadOnly, setRequired, getRequired, setRows, getRows, setWrap, getWrap, getType, setDefaultValue, getDefaultValue, setValue, getValue, getTextLength, getWillValidate, getValidity, getValidationMessage, getLabels, setSelectionStart, getSelectionStart, setSelectionEnd, getSelectionEnd, setSelectionDirection, getSelectionDirection, HTMLTextAreaElement(..), gTypeHTMLTextAreaElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
-        HTMLTextAreaElement -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
-checkValidity :: (MonadIO m) => HTMLTextAreaElement -> m Bool
-checkValidity self = liftIO (js_checkValidity self)
+foreign import javascript safe "(($1) => { return $1[\"checkValidity\"](); })"
+        js_checkValidity :: HTMLTextAreaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/checkValidity MDN HTMLTextAreaElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+checkValidity self = liftDOM ((js_checkValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
-checkValidity_ :: (MonadIO m) => HTMLTextAreaElement -> m ()
-checkValidity_ self = liftIO (void (js_checkValidity self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
-        HTMLTextAreaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/checkValidity MDN HTMLTextAreaElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLTextAreaElement -> m ()
+checkValidity_ self = liftDOM (void ((js_checkValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.reportValidity Mozilla HTMLTextAreaElement.reportValidity documentation> 
-reportValidity :: (MonadIO m) => HTMLTextAreaElement -> m Bool
-reportValidity self = liftIO (js_reportValidity self)
+foreign import javascript safe "(($1) => { return $1[\"reportValidity\"](); })"
+        js_reportValidity :: HTMLTextAreaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/reportValidity MDN HTMLTextAreaElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+reportValidity self = liftDOM ((js_reportValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.reportValidity Mozilla HTMLTextAreaElement.reportValidity documentation> 
-reportValidity_ :: (MonadIO m) => HTMLTextAreaElement -> m ()
-reportValidity_ self = liftIO (void (js_reportValidity self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
-        js_setCustomValidity :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/reportValidity MDN HTMLTextAreaElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLTextAreaElement -> m ()
+reportValidity_ self = liftDOM (void ((js_reportValidity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setCustomValidity Mozilla HTMLTextAreaElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadIO m, ToJSString error) =>
-                    HTMLTextAreaElement -> error -> m ()
-setCustomValidity self error
-  = liftIO (js_setCustomValidity self (toJSString error))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"select\"](); })" js_select ::
-        HTMLTextAreaElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"select\"](); })"
+        js_select :: HTMLTextAreaElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/select MDN HTMLTextAreaElement.select documentation>
+select :: (MonadDOM m) => HTMLTextAreaElement -> m ()
+select self = liftDOM (void ((js_select (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.select Mozilla HTMLTextAreaElement.select documentation> 
-select :: (MonadIO m) => HTMLTextAreaElement -> m ()
-select self = liftIO (js_select self)
- 
+foreign import javascript safe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/setCustomValidity MDN HTMLTextAreaElement.setCustomValidity documentation>
+setCustomValidity :: (MonadDOM m, ToJSString error) => HTMLTextAreaElement -> error -> m ()
+setCustomValidity self error = liftDOM (void ((js_setCustomValidity (self) (toJSString error))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"setRangeText\"]($2); })"
         js_setRangeText :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/setRangeText MDN HTMLTextAreaElement.setRangeText documentation>
+setRangeText :: (MonadDOM m, ToJSString replacement) => HTMLTextAreaElement -> replacement -> m ()
+setRangeText self replacement = liftDOM (void ((js_setRangeText (self) (toJSString replacement))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
-setRangeText ::
-             (MonadIO m, ToJSString replacement) =>
-               HTMLTextAreaElement -> replacement -> m ()
-setRangeText self replacement
-  = liftIO (js_setRangeText self (toJSString replacement))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5) => { return $1[\"setRangeText\"]($2, $3, $4,\n$5); })" js_setRangeText4 ::
-        HTMLTextAreaElement ->
-          JSString -> Word -> Word -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"setRangeText\"]($2, $3, $4, $5); })"
+        js_setRangeText4 :: HTMLTextAreaElement -> JSString -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/setRangeText MDN HTMLTextAreaElement.setRangeText documentation>
+setRangeText4 :: (MonadDOM m, ToJSString replacement) => HTMLTextAreaElement -> replacement -> Word -> Word -> Maybe SelectionMode -> m ()
+setRangeText4 self replacement start end selectionMode = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal selectionMode) >>= \a5' -> js_setRangeText4 (self) (toJSString replacement) (start) (end) a5')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
-setRangeText4 ::
-              (MonadIO m, ToJSString replacement, ToJSString selectionMode) =>
-                HTMLTextAreaElement ->
-                  replacement -> Word -> Word -> Maybe selectionMode -> m ()
-setRangeText4 self replacement start end selectionMode
-  = liftIO
-      (js_setRangeText4 self (toJSString replacement) start end
-         (toOptionalJSString selectionMode))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"setSelectionRange\"]($2, $3,\n$4); })" js_setSelectionRange ::
-        HTMLTextAreaElement ->
-          Optional Int -> Optional Int -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setSelectionRange\"]($2, $3, $4); })"
+        js_setSelectionRange :: HTMLTextAreaElement -> Word -> Word -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/setSelectionRange MDN HTMLTextAreaElement.setSelectionRange documentation>
+setSelectionRange :: (MonadDOM m, ToJSString direction) => HTMLTextAreaElement -> Word -> Word -> Maybe direction -> m ()
+setSelectionRange self start end direction = liftDOM (void ((js_setSelectionRange (self) (start) (end) (toOptionalJSString direction))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setSelectionRange Mozilla HTMLTextAreaElement.setSelectionRange documentation> 
-setSelectionRange ::
-                  (MonadIO m, ToJSString direction) =>
-                    HTMLTextAreaElement ->
-                      Maybe Int -> Maybe Int -> Maybe direction -> m ()
-setSelectionRange self start end direction
-  = liftIO
-      (js_setSelectionRange self (maybeToOptional start)
-         (maybeToOptional end)
-         (toOptionalJSString direction))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
-        js_setAutofocus :: HTMLTextAreaElement -> Bool -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+        js_setAutocomplete :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/autocomplete MDN HTMLTextAreaElement.autocomplete documentation>
+setAutocomplete :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setAutocomplete self val = liftDOM (void ((js_setAutocomplete (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
-setAutofocus :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
-setAutofocus self val = liftIO (js_setAutofocus self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
-        js_getAutofocus :: HTMLTextAreaElement -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
+        js_getAutocomplete :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/autocomplete MDN HTMLTextAreaElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getAutocomplete self = liftDOM ((fromJSString <$> (js_getAutocomplete (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
-getAutofocus :: (MonadIO m) => HTMLTextAreaElement -> m Bool
-getAutofocus self = liftIO (js_getAutofocus self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dirName\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"cols\"] = $2; })"
+        js_setCols :: HTMLTextAreaElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/cols MDN HTMLTextAreaElement.cols documentation>
+setCols :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
+setCols self val = liftDOM (void ((js_setCols (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cols\"]; })"
+        js_getCols :: HTMLTextAreaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/cols MDN HTMLTextAreaElement.cols documentation>
+getCols :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getCols self = liftDOM ((js_getCols (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dirName\"] = $2; })"
         js_setDirName :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/dirName MDN HTMLTextAreaElement.dirName documentation>
+setDirName :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setDirName self val = liftDOM (void ((js_setDirName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
-setDirName ::
-           (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setDirName self val = liftIO (js_setDirName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dirName\"]; })" js_getDirName ::
-        HTMLTextAreaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"dirName\"]; })"
+        js_getDirName :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/dirName MDN HTMLTextAreaElement.dirName documentation>
+getDirName :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getDirName self = liftDOM ((fromJSString <$> (js_getDirName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
-getDirName ::
-           (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getDirName self = liftIO (fromJSString <$> (js_getDirName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
         js_setDisabled :: HTMLTextAreaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/disabled MDN HTMLTextAreaElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
-setDisabled :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
         js_getDisabled :: HTMLTextAreaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/disabled MDN HTMLTextAreaElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
-getDisabled :: (MonadIO m) => HTMLTextAreaElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
-        HTMLTextAreaElement -> IO HTMLFormElement
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })"
+        js_getForm :: HTMLTextAreaElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/form MDN HTMLTextAreaElement.form documentation>
+getForm :: (MonadDOM m) => HTMLTextAreaElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((js_getForm (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.form Mozilla HTMLTextAreaElement.form documentation> 
-getForm :: (MonadIO m) => HTMLTextAreaElement -> m HTMLFormElement
-getForm self = liftIO (js_getForm self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"minLength\"] = $2; })"
-        js_setMinLength :: HTMLTextAreaElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/form MDN HTMLTextAreaElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLTextAreaElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((js_getForm (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.minLength Mozilla HTMLTextAreaElement.minLength documentation> 
-setMinLength :: (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
-setMinLength self val = liftIO (js_setMinLength self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"minLength\"]; })"
-        js_getMinLength :: HTMLTextAreaElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/form MDN HTMLTextAreaElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLTextAreaElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM ((pFromJSVal <$> (js_getForm (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.minLength Mozilla HTMLTextAreaElement.minLength documentation> 
-getMinLength :: (MonadIO m) => HTMLTextAreaElement -> m Int
-getMinLength self = liftIO (js_getMinLength self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"maxLength\"] = $2; })"
         js_setMaxLength :: HTMLTextAreaElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/maxLength MDN HTMLTextAreaElement.maxLength documentation>
+setMaxLength :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setMaxLength self val = liftDOM (void ((js_setMaxLength (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
-setMaxLength :: (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
-setMaxLength self val = liftIO (js_setMaxLength self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"maxLength\"]; })"
         js_getMaxLength :: HTMLTextAreaElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/maxLength MDN HTMLTextAreaElement.maxLength documentation>
+getMaxLength :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getMaxLength self = liftDOM ((js_getMaxLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
-getMaxLength :: (MonadIO m) => HTMLTextAreaElement -> m Int
-getMaxLength self = liftIO (js_getMaxLength self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        HTMLTextAreaElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"minLength\"] = $2; })"
+        js_setMinLength :: HTMLTextAreaElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/minLength MDN HTMLTextAreaElement.minLength documentation>
+setMinLength :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setMinLength self val = liftDOM (void ((js_setMinLength (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        HTMLTextAreaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"minLength\"]; })"
+        js_getMinLength :: HTMLTextAreaElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/minLength MDN HTMLTextAreaElement.minLength documentation>
+getMinLength :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getMinLength self = liftDOM ((js_getMinLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"placeholder\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/name MDN HTMLTextAreaElement.name documentation>
+setName :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/name MDN HTMLTextAreaElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"placeholder\"] = $2; })"
         js_setPlaceholder :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/placeholder MDN HTMLTextAreaElement.placeholder documentation>
+setPlaceholder :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setPlaceholder self val = liftDOM (void ((js_setPlaceholder (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
-setPlaceholder ::
-               (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setPlaceholder self val
-  = liftIO (js_setPlaceholder self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"placeholder\"]; })"
         js_getPlaceholder :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/placeholder MDN HTMLTextAreaElement.placeholder documentation>
+getPlaceholder :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getPlaceholder self = liftDOM ((fromJSString <$> (js_getPlaceholder (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
-getPlaceholder ::
-               (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getPlaceholder self
-  = liftIO (fromJSString <$> (js_getPlaceholder self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"readOnly\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"readOnly\"] = $2; })"
         js_setReadOnly :: HTMLTextAreaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/readOnly MDN HTMLTextAreaElement.readOnly documentation>
+setReadOnly :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setReadOnly self val = liftDOM (void ((js_setReadOnly (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
-setReadOnly :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
-setReadOnly self val = liftIO (js_setReadOnly self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"readOnly\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"readOnly\"]; })"
         js_getReadOnly :: HTMLTextAreaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/readOnly MDN HTMLTextAreaElement.readOnly documentation>
+getReadOnly :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getReadOnly self = liftDOM ((js_getReadOnly (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
-getReadOnly :: (MonadIO m) => HTMLTextAreaElement -> m Bool
-getReadOnly self = liftIO (js_getReadOnly self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"required\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"required\"] = $2; })"
         js_setRequired :: HTMLTextAreaElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/required MDN HTMLTextAreaElement.required documentation>
+setRequired :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
+setRequired self val = liftDOM (void ((js_setRequired (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
-setRequired :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
-setRequired self val = liftIO (js_setRequired self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"required\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"required\"]; })"
         js_getRequired :: HTMLTextAreaElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
-getRequired :: (MonadIO m) => HTMLTextAreaElement -> m Bool
-getRequired self = liftIO (js_getRequired self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rows\"] = $2; })" js_setRows ::
-        HTMLTextAreaElement -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
-setRows :: (MonadIO m) => HTMLTextAreaElement -> Word -> m ()
-setRows self val = liftIO (js_setRows self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
-        HTMLTextAreaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/required MDN HTMLTextAreaElement.required documentation>
+getRequired :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getRequired self = liftDOM ((js_getRequired (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
-getRows :: (MonadIO m) => HTMLTextAreaElement -> m Word
-getRows self = liftIO (js_getRows self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"cols\"] = $2; })" js_setCols ::
-        HTMLTextAreaElement -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"rows\"] = $2; })"
+        js_setRows :: HTMLTextAreaElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/rows MDN HTMLTextAreaElement.rows documentation>
+setRows :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
+setRows self val = liftDOM (void ((js_setRows (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
-setCols :: (MonadIO m) => HTMLTextAreaElement -> Word -> m ()
-setCols self val = liftIO (js_setCols self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cols\"]; })" js_getCols ::
-        HTMLTextAreaElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })"
+        js_getRows :: HTMLTextAreaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/rows MDN HTMLTextAreaElement.rows documentation>
+getRows :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getRows self = liftDOM ((js_getRows (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
-getCols :: (MonadIO m) => HTMLTextAreaElement -> m Word
-getCols self = liftIO (js_getCols self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"wrap\"] = $2; })" js_setWrap ::
-        HTMLTextAreaElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"wrap\"] = $2; })"
+        js_setWrap :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/wrap MDN HTMLTextAreaElement.wrap documentation>
+setWrap :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setWrap self val = liftDOM (void ((js_setWrap (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
-setWrap ::
-        (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setWrap self val = liftIO (js_setWrap self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"wrap\"]; })" js_getWrap ::
-        HTMLTextAreaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"wrap\"]; })"
+        js_getWrap :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/wrap MDN HTMLTextAreaElement.wrap documentation>
+getWrap :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getWrap self = liftDOM ((fromJSString <$> (js_getWrap (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
-getWrap ::
-        (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getWrap self = liftIO (fromJSString <$> (js_getWrap self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLTextAreaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/type MDN HTMLTextAreaElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.type Mozilla HTMLTextAreaElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
         js_setDefaultValue :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/defaultValue MDN HTMLTextAreaElement.defaultValue documentation>
+setDefaultValue :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setDefaultValue self val = liftDOM (void ((js_setDefaultValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
-setDefaultValue ::
-                (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setDefaultValue self val
-  = liftIO (js_setDefaultValue self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
         js_getDefaultValue :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/defaultValue MDN HTMLTextAreaElement.defaultValue documentation>
+getDefaultValue :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getDefaultValue self = liftDOM ((fromJSString <$> (js_getDefaultValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
-getDefaultValue ::
-                (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getDefaultValue self
-  = liftIO (fromJSString <$> (js_getDefaultValue self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: HTMLTextAreaElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/value MDN HTMLTextAreaElement.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        HTMLTextAreaElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/value MDN HTMLTextAreaElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"textLength\"]; })"
         js_getTextLength :: HTMLTextAreaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/textLength MDN HTMLTextAreaElement.textLength documentation>
+getTextLength :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getTextLength self = liftDOM ((js_getTextLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.textLength Mozilla HTMLTextAreaElement.textLength documentation> 
-getTextLength :: (MonadIO m) => HTMLTextAreaElement -> m Word
-getTextLength self = liftIO (js_getTextLength self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"willValidate\"]; })"
         js_getWillValidate :: HTMLTextAreaElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/willValidate MDN HTMLTextAreaElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
+getWillValidate self = liftDOM ((js_getWillValidate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.willValidate Mozilla HTMLTextAreaElement.willValidate documentation> 
-getWillValidate :: (MonadIO m) => HTMLTextAreaElement -> m Bool
-getWillValidate self = liftIO (js_getWillValidate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
-        :: HTMLTextAreaElement -> IO ValidityState
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })"
+        js_getValidity :: HTMLTextAreaElement -> IO ValidityState
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/validity MDN HTMLTextAreaElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLTextAreaElement -> m ValidityState
+getValidity self = liftDOM ((js_getValidity (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validity Mozilla HTMLTextAreaElement.validity documentation> 
-getValidity ::
-            (MonadIO m) => HTMLTextAreaElement -> m ValidityState
-getValidity self = liftIO (js_getValidity self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
         js_getValidationMessage :: HTMLTextAreaElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/validationMessage MDN HTMLTextAreaElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getValidationMessage self = liftDOM ((fromJSString <$> (js_getValidationMessage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validationMessage Mozilla HTMLTextAreaElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getValidationMessage self
-  = liftIO (fromJSString <$> (js_getValidationMessage self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
-        HTMLTextAreaElement -> IO NodeList
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })"
+        js_getLabels :: HTMLTextAreaElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/labels MDN HTMLTextAreaElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLTextAreaElement -> m NodeList
+getLabels self = liftDOM ((js_getLabels (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.labels Mozilla HTMLTextAreaElement.labels documentation> 
-getLabels :: (MonadIO m) => HTMLTextAreaElement -> m NodeList
-getLabels self = liftIO (js_getLabels self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selectionStart\"] = $2; })"
-        js_setSelectionStart :: HTMLTextAreaElement -> Int -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"selectionStart\"] = $2; })"
+        js_setSelectionStart :: HTMLTextAreaElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionStart MDN HTMLTextAreaElement.selectionStart documentation>
+setSelectionStart :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
+setSelectionStart self val = liftDOM (void ((js_setSelectionStart (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
-setSelectionStart ::
-                  (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
-setSelectionStart self val = liftIO (js_setSelectionStart self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"selectionStart\"]; })"
-        js_getSelectionStart :: HTMLTextAreaElement -> IO Int
+        js_getSelectionStart :: HTMLTextAreaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionStart MDN HTMLTextAreaElement.selectionStart documentation>
+getSelectionStart :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getSelectionStart self = liftDOM ((js_getSelectionStart (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
-getSelectionStart :: (MonadIO m) => HTMLTextAreaElement -> m Int
-getSelectionStart self = liftIO (js_getSelectionStart self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selectionEnd\"] = $2; })"
-        js_setSelectionEnd :: HTMLTextAreaElement -> Int -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"selectionEnd\"] = $2; })"
+        js_setSelectionEnd :: HTMLTextAreaElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionEnd MDN HTMLTextAreaElement.selectionEnd documentation>
+setSelectionEnd :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
+setSelectionEnd self val = liftDOM (void ((js_setSelectionEnd (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
-setSelectionEnd ::
-                (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
-setSelectionEnd self val = liftIO (js_setSelectionEnd self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"selectionEnd\"]; })"
-        js_getSelectionEnd :: HTMLTextAreaElement -> IO Int
+        js_getSelectionEnd :: HTMLTextAreaElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionEnd MDN HTMLTextAreaElement.selectionEnd documentation>
+getSelectionEnd :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getSelectionEnd self = liftDOM ((js_getSelectionEnd (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
-getSelectionEnd :: (MonadIO m) => HTMLTextAreaElement -> m Int
-getSelectionEnd self = liftIO (js_getSelectionEnd self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selectionDirection\"] = $2; })"
-        js_setSelectionDirection ::
-        HTMLTextAreaElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"selectionDirection\"] = $2; })"
+        js_setSelectionDirection :: HTMLTextAreaElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionDirection MDN HTMLTextAreaElement.selectionDirection documentation>
+setSelectionDirection :: (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setSelectionDirection self val = liftDOM (void ((js_setSelectionDirection (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
-setSelectionDirection ::
-                      (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setSelectionDirection self val
-  = liftIO (js_setSelectionDirection self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"selectionDirection\"]; })"
         js_getSelectionDirection :: HTMLTextAreaElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
-getSelectionDirection ::
-                      (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getSelectionDirection self
-  = liftIO (fromJSString <$> (js_getSelectionDirection self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
-        js_setAutocomplete :: HTMLTextAreaElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocomplete Mozilla HTMLTextAreaElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setAutocomplete self val
-  = liftIO (js_setAutocomplete self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
-        js_getAutocomplete :: HTMLTextAreaElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocomplete Mozilla HTMLTextAreaElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
-getAutocomplete self
-  = liftIO (fromJSString <$> (js_getAutocomplete self))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionDirection MDN HTMLTextAreaElement.selectionDirection documentation>
+getSelectionDirection :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getSelectionDirection self = liftDOM ((fromJSString <$> (js_getSelectionDirection (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
@@ -1,44 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTimeElement
-       (js_setDateTime, setDateTime, js_getDateTime, getDateTime,
-        HTMLTimeElement(..), gTypeHTMLTimeElement)
+       (js_setDateTime, js_getDateTime, setDateTime, getDateTime, HTMLTimeElement(..), gTypeHTMLTimeElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dateTime\"] = $2; })"
-        js_setDateTime :: HTMLTimeElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement.dateTime Mozilla HTMLTimeElement.dateTime documentation> 
-setDateTime ::
-            (MonadIO m, ToJSString val) => HTMLTimeElement -> val -> m ()
-setDateTime self val
-  = liftIO (js_setDateTime self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dateTime\"]; })" js_getDateTime
-        :: HTMLTimeElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"dateTime\"] = $2; })"
+        js_setDateTime :: HTMLTimeElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTimeElement/dateTime MDN HTMLTimeElement.dateTime documentation>
+setDateTime :: (MonadDOM m, ToJSString val) => HTMLTimeElement -> val -> m ()
+setDateTime self val = liftDOM (void ((js_setDateTime (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement.dateTime Mozilla HTMLTimeElement.dateTime documentation> 
-getDateTime ::
-            (MonadIO m, FromJSString result) => HTMLTimeElement -> m result
-getDateTime self = liftIO (fromJSString <$> (js_getDateTime self))
+foreign import javascript unsafe "(($1) => { return $1[\"dateTime\"]; })"
+        js_getDateTime :: HTMLTimeElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTimeElement/dateTime MDN HTMLTimeElement.dateTime documentation>
+getDateTime :: (MonadDOM m, FromJSString result) => HTMLTimeElement -> m result
+getDateTime self = liftDOM ((fromJSString <$> (js_getDateTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
-       (js_setText, setText, js_getText, getText, HTMLTitleElement(..),
-        gTypeHTMLTitleElement)
+       (js_setText, js_getText, setText, getText, HTMLTitleElement(..), gTypeHTMLTitleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
-        HTMLTitleElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
-setText ::
-        (MonadIO m, ToJSString val) => HTMLTitleElement -> val -> m ()
-setText self val = liftIO (js_setText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
-        HTMLTitleElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: HTMLTitleElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTitleElement/text MDN HTMLTitleElement.text documentation>
+setText :: (MonadDOM m, ToJSString val) => HTMLTitleElement -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
-getText ::
-        (MonadIO m, FromJSString result) => HTMLTitleElement -> m result
-getText self = liftIO (fromJSString <$> (js_getText self))
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: HTMLTitleElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTitleElement/text MDN HTMLTitleElement.text documentation>
+getText :: (MonadDOM m, FromJSString result) => HTMLTitleElement -> m result
+getText self = liftDOM ((fromJSString <$> (js_getText (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
@@ -1,128 +1,97 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLTrackElement
-       (pattern NONE, pattern LOADING, pattern LOADED, pattern ERROR,
-        js_setKind, setKind, js_getKind, getKind, js_setSrc, setSrc,
-        js_getSrc, getSrc, js_setSrclang, setSrclang, js_getSrclang,
-        getSrclang, js_setLabel, setLabel, js_getLabel, getLabel,
-        js_setDefault, setDefault, js_getDefault, getDefault,
-        js_getReadyState, getReadyState, js_getTrack, getTrack,
-        HTMLTrackElement(..), gTypeHTMLTrackElement)
+       (js_setKind, js_getKind, js_setSrc, js_getSrc, js_setSrclang, js_getSrclang, js_setLabel, js_getLabel, js_setDefault, js_getDefault, js_getReadyState, js_getTrack, setKind, getKind, setSrc, getSrc, setSrclang, getSrclang, setLabel, getLabel, setDefault, getDefault, getReadyState, getTrack, pattern NONE, pattern LOADING, pattern LOADED, pattern ERROR, HTMLTrackElement(..), gTypeHTMLTrackElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern NONE = 0
-pattern LOADING = 1
-pattern LOADED = 2
-pattern ERROR = 3
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
-        HTMLTrackElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
-setKind ::
-        (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setKind self val = liftIO (js_setKind self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        HTMLTrackElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"kind\"] = $2; })"
+        js_setKind :: HTMLTrackElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/kind MDN HTMLTrackElement.kind documentation>
+setKind :: (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setKind self val = liftDOM (void ((js_setKind (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
-getKind ::
-        (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
-getKind self = liftIO (fromJSString <$> (js_getKind self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
-        HTMLTrackElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: HTMLTrackElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/kind MDN HTMLTrackElement.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getKind self = liftDOM ((fromJSString <$> (js_getKind (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
-setSrc ::
-       (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
-        HTMLTrackElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: HTMLTrackElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/src MDN HTMLTrackElement.src documentation>
+setSrc :: (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
-getSrc ::
-       (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"srclang\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: HTMLTrackElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/src MDN HTMLTrackElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"srclang\"] = $2; })"
         js_setSrclang :: HTMLTrackElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/srclang MDN HTMLTrackElement.srclang documentation>
+setSrclang :: (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setSrclang self val = liftDOM (void ((js_setSrclang (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
-setSrclang ::
-           (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setSrclang self val = liftIO (js_setSrclang self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"srclang\"]; })" js_getSrclang ::
-        HTMLTrackElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"srclang\"]; })"
+        js_getSrclang :: HTMLTrackElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/srclang MDN HTMLTrackElement.srclang documentation>
+getSrclang :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getSrclang self = liftDOM ((fromJSString <$> (js_getSrclang (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
-getSrclang ::
-           (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
-getSrclang self = liftIO (fromJSString <$> (js_getSrclang self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
-        :: HTMLTrackElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: HTMLTrackElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/label MDN HTMLTrackElement.label documentation>
+setLabel :: (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
-setLabel ::
-         (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setLabel self val = liftIO (js_setLabel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        HTMLTrackElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: HTMLTrackElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/label MDN HTMLTrackElement.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"default\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"default\"] = $2; })"
         js_setDefault :: HTMLTrackElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/default MDN HTMLTrackElement.default documentation>
+setDefault :: (MonadDOM m) => HTMLTrackElement -> Bool -> m ()
+setDefault self val = liftDOM (void ((js_setDefault (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
-setDefault :: (MonadIO m) => HTMLTrackElement -> Bool -> m ()
-setDefault self val = liftIO (js_setDefault self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"default\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"default\"]; })"
         js_getDefault :: HTMLTrackElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/default MDN HTMLTrackElement.default documentation>
+getDefault :: (MonadDOM m) => HTMLTrackElement -> m Bool
+getDefault self = liftDOM ((js_getDefault (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
-getDefault :: (MonadIO m) => HTMLTrackElement -> m Bool
-getDefault self = liftIO (js_getDefault self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
         js_getReadyState :: HTMLTrackElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/readyState MDN HTMLTrackElement.readyState documentation>
+getReadyState :: (MonadDOM m) => HTMLTrackElement -> m Word
+getReadyState self = liftDOM ((js_getReadyState (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.readyState Mozilla HTMLTrackElement.readyState documentation> 
-getReadyState :: (MonadIO m) => HTMLTrackElement -> m Word
-getReadyState self = liftIO (js_getReadyState self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        HTMLTrackElement -> IO TextTrack
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: HTMLTrackElement -> IO TextTrack
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/track MDN HTMLTrackElement.track documentation>
+getTrack :: (MonadDOM m) => HTMLTrackElement -> m TextTrack
+getTrack self = liftDOM ((js_getTrack (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
-getTrack :: (MonadIO m) => HTMLTrackElement -> m TextTrack
-getTrack self = liftIO (js_getTrack self)
+pattern NONE = 0
+
+pattern LOADING = 1
+
+pattern LOADED = 2
+
+pattern ERROR = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
@@ -1,58 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLUListElement
-       (js_setCompact, setCompact, js_getCompact, getCompact, js_setType,
-        setType, js_getType, getType, HTMLUListElement(..),
-        gTypeHTMLUListElement)
+       (js_setCompact, js_getCompact, js_setType, js_getType, setCompact, getCompact, setType, getType, HTMLUListElement(..), gTypeHTMLUListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+
+foreign import javascript safe "(($1, $2) => { $1[\"compact\"] = $2; })"
         js_setCompact :: HTMLUListElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLUListElement/compact MDN HTMLUListElement.compact documentation>
+setCompact :: (MonadDOM m) => HTMLUListElement -> Bool -> m ()
+setCompact self val = liftDOM (void ((js_setCompact (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
-setCompact :: (MonadIO m) => HTMLUListElement -> Bool -> m ()
-setCompact self val = liftIO (js_setCompact self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"compact\"]; })"
         js_getCompact :: HTMLUListElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
-getCompact :: (MonadIO m) => HTMLUListElement -> m Bool
-getCompact self = liftIO (js_getCompact self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        HTMLUListElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLUListElement/compact MDN HTMLUListElement.compact documentation>
+getCompact :: (MonadDOM m) => HTMLUListElement -> m Bool
+getCompact self = liftDOM ((js_getCompact (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => HTMLUListElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        HTMLUListElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HTMLUListElement -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-ul-type HTMLUListElement.type specification>
+setType :: (MonadDOM m, ToJSString val) => HTMLUListElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => HTMLUListElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HTMLUListElement -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-ul-type HTMLUListElement.type specification>
+getType :: (MonadDOM m, FromJSString result) => HTMLUListElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLUnknownElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLUnknownElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLUnknownElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HTMLUnknownElement
+       (HTMLUnknownElement(..), gTypeHTMLUnknownElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
@@ -1,245 +1,133 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
-       (js_webkitEnterFullscreen, webkitEnterFullscreen,
-        js_webkitExitFullscreen, webkitExitFullscreen,
-        js_webkitEnterFullScreen, webkitEnterFullScreen,
-        js_webkitExitFullScreen, webkitExitFullScreen,
-        js_webkitSupportsPresentationMode, webkitSupportsPresentationMode,
-        webkitSupportsPresentationMode_, js_webkitSetPresentationMode,
-        webkitSetPresentationMode, js_setWidth, setWidth, js_getWidth,
-        getWidth, js_setHeight, setHeight, js_getHeight, getHeight,
-        js_getVideoWidth, getVideoWidth, js_getVideoHeight, getVideoHeight,
-        js_setPoster, setPoster, js_getPoster, getPoster,
-        js_setPlaysInline, setPlaysInline, js_getPlaysInline,
-        getPlaysInline, js_getWebkitSupportsFullscreen,
-        getWebkitSupportsFullscreen, js_getWebkitDisplayingFullscreen,
-        getWebkitDisplayingFullscreen,
-        js_setWebkitWirelessVideoPlaybackDisabled,
-        setWebkitWirelessVideoPlaybackDisabled,
-        js_getWebkitWirelessVideoPlaybackDisabled,
-        getWebkitWirelessVideoPlaybackDisabled,
-        js_getWebkitDecodedFrameCount, getWebkitDecodedFrameCount,
-        js_getWebkitDroppedFrameCount, getWebkitDroppedFrameCount,
-        js_getWebkitPresentationMode, getWebkitPresentationMode,
-        HTMLVideoElement(..), gTypeHTMLVideoElement)
+       (js_cancelVideoFrameCallback, js_getVideoPlaybackQuality, js_requestPictureInPicture, js_requestVideoFrameCallback, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_getVideoWidth, js_getVideoHeight, js_setPoster, js_getPoster, js_setPlaysInline, js_getPlaysInline, js_setDisablePictureInPicture, js_getDisablePictureInPicture, cancelVideoFrameCallback, getVideoPlaybackQuality, getVideoPlaybackQuality_, requestPictureInPicture, requestPictureInPicture_, requestVideoFrameCallback, requestVideoFrameCallback_, setWidth, getWidth, setHeight, getHeight, getVideoWidth, getVideoHeight, setPoster, getPoster, setPlaysInline, getPlaysInline, setDisablePictureInPicture, getDisablePictureInPicture, enterpictureinpicture, leavepictureinpicture, HTMLVideoElement(..), gTypeHTMLVideoElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"webkitEnterFullscreen\"](); })"
-        js_webkitEnterFullscreen :: HTMLVideoElement -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullscreen Mozilla HTMLVideoElement.webkitEnterFullscreen documentation> 
-webkitEnterFullscreen :: (MonadIO m) => HTMLVideoElement -> m ()
-webkitEnterFullscreen self = liftIO (js_webkitEnterFullscreen self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitExitFullscreen\"](); })"
-        js_webkitExitFullscreen :: HTMLVideoElement -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"cancelVideoFrameCallback\"]($2); })"
+        js_cancelVideoFrameCallback :: HTMLVideoElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/cancelVideoFrameCallback MDN HTMLVideoElement.cancelVideoFrameCallback documentation>
+cancelVideoFrameCallback :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
+cancelVideoFrameCallback self handle = liftDOM (void ((js_cancelVideoFrameCallback (self) (handle))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullscreen Mozilla HTMLVideoElement.webkitExitFullscreen documentation> 
-webkitExitFullscreen :: (MonadIO m) => HTMLVideoElement -> m ()
-webkitExitFullscreen self = liftIO (js_webkitExitFullscreen self)
- 
-foreign import javascript safe "(($1) => { return $1[\"webkitEnterFullScreen\"](); })"
-        js_webkitEnterFullScreen :: HTMLVideoElement -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"getVideoPlaybackQuality\"](); })"
+        js_getVideoPlaybackQuality :: HTMLVideoElement -> IO VideoPlaybackQuality
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/getVideoPlaybackQuality MDN HTMLVideoElement.getVideoPlaybackQuality documentation>
+getVideoPlaybackQuality :: (MonadDOM m) => HTMLVideoElement -> m VideoPlaybackQuality
+getVideoPlaybackQuality self = liftDOM ((js_getVideoPlaybackQuality (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullScreen Mozilla HTMLVideoElement.webkitEnterFullScreen documentation> 
-webkitEnterFullScreen :: (MonadIO m) => HTMLVideoElement -> m ()
-webkitEnterFullScreen self = liftIO (js_webkitEnterFullScreen self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitExitFullScreen\"](); })"
-        js_webkitExitFullScreen :: HTMLVideoElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/getVideoPlaybackQuality MDN HTMLVideoElement.getVideoPlaybackQuality documentation>
+getVideoPlaybackQuality_ :: (MonadDOM m) => HTMLVideoElement -> m ()
+getVideoPlaybackQuality_ self = liftDOM (void ((js_getVideoPlaybackQuality (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullScreen Mozilla HTMLVideoElement.webkitExitFullScreen documentation> 
-webkitExitFullScreen :: (MonadIO m) => HTMLVideoElement -> m ()
-webkitExitFullScreen self = liftIO (js_webkitExitFullScreen self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"webkitSupportsPresentationMode\"]($2) ? 1 : 0); })"
-        js_webkitSupportsPresentationMode ::
-        HTMLVideoElement -> JSVal -> IO Bool
+foreign import javascript interruptible "(($1, $c) => { return $1[\"requestPictureInPicture\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestPictureInPicture :: HTMLVideoElement -> IO (JSVal, PictureInPictureWindow)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestPictureInPicture MDN HTMLVideoElement.requestPictureInPicture documentation>
+requestPictureInPicture :: (MonadDOM m) => HTMLVideoElement -> m PictureInPictureWindow
+requestPictureInPicture self = liftDOM (((js_requestPictureInPicture (self)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsPresentationMode Mozilla HTMLVideoElement.webkitSupportsPresentationMode documentation> 
-webkitSupportsPresentationMode ::
-                               (MonadIO m) => HTMLVideoElement -> VideoPresentationMode -> m Bool
-webkitSupportsPresentationMode self mode
-  = liftIO (js_webkitSupportsPresentationMode self (pToJSVal mode))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestPictureInPicture MDN HTMLVideoElement.requestPictureInPicture documentation>
+requestPictureInPicture_ :: (MonadDOM m) => HTMLVideoElement -> m ()
+requestPictureInPicture_ self = liftDOM (void (((js_requestPictureInPicture (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsPresentationMode Mozilla HTMLVideoElement.webkitSupportsPresentationMode documentation> 
-webkitSupportsPresentationMode_ ::
-                                (MonadIO m) => HTMLVideoElement -> VideoPresentationMode -> m ()
-webkitSupportsPresentationMode_ self mode
-  = liftIO
-      (void (js_webkitSupportsPresentationMode self (pToJSVal mode)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"webkitSetPresentationMode\"]($2); })"
-        js_webkitSetPresentationMode :: HTMLVideoElement -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"requestVideoFrameCallback\"]($2); })"
+        js_requestVideoFrameCallback :: HTMLVideoElement -> JSVal -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestVideoFrameCallback MDN HTMLVideoElement.requestVideoFrameCallback documentation>
+requestVideoFrameCallback :: (MonadDOM m) => HTMLVideoElement -> VideoFrameRequestCallback -> m Word
+requestVideoFrameCallback self callback' = liftDOM (((toJSVal callback') >>= \a2' -> js_requestVideoFrameCallback (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSetPresentationMode Mozilla HTMLVideoElement.webkitSetPresentationMode documentation> 
-webkitSetPresentationMode ::
-                          (MonadIO m) => HTMLVideoElement -> VideoPresentationMode -> m ()
-webkitSetPresentationMode self mode
-  = liftIO (js_webkitSetPresentationMode self (pToJSVal mode))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: HTMLVideoElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestVideoFrameCallback MDN HTMLVideoElement.requestVideoFrameCallback documentation>
+requestVideoFrameCallback_ :: (MonadDOM m) => HTMLVideoElement -> VideoFrameRequestCallback -> m ()
+requestVideoFrameCallback_ self callback' = liftDOM (void (((toJSVal callback') >>= \a2' -> js_requestVideoFrameCallback (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
-setWidth :: (MonadIO m) => HTMLVideoElement -> Word -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        HTMLVideoElement -> IO Word
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: HTMLVideoElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/width MDN HTMLVideoElement.width documentation>
+setWidth :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
-getWidth :: (MonadIO m) => HTMLVideoElement -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: HTMLVideoElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/width MDN HTMLVideoElement.width documentation>
+getWidth :: (MonadDOM m) => HTMLVideoElement -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
         js_setHeight :: HTMLVideoElement -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/height MDN HTMLVideoElement.height documentation>
+setHeight :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
-setHeight :: (MonadIO m) => HTMLVideoElement -> Word -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        HTMLVideoElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: HTMLVideoElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/height MDN HTMLVideoElement.height documentation>
+getHeight :: (MonadDOM m) => HTMLVideoElement -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
-getHeight :: (MonadIO m) => HTMLVideoElement -> m Word
-getHeight self = liftIO (js_getHeight self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"videoWidth\"]; })"
         js_getVideoWidth :: HTMLVideoElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/videoWidth MDN HTMLVideoElement.videoWidth documentation>
+getVideoWidth :: (MonadDOM m) => HTMLVideoElement -> m Word
+getVideoWidth self = liftDOM ((js_getVideoWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoWidth Mozilla HTMLVideoElement.videoWidth documentation> 
-getVideoWidth :: (MonadIO m) => HTMLVideoElement -> m Word
-getVideoWidth self = liftIO (js_getVideoWidth self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"videoHeight\"]; })"
         js_getVideoHeight :: HTMLVideoElement -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/videoHeight MDN HTMLVideoElement.videoHeight documentation>
+getVideoHeight :: (MonadDOM m) => HTMLVideoElement -> m Word
+getVideoHeight self = liftDOM ((js_getVideoHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoHeight Mozilla HTMLVideoElement.videoHeight documentation> 
-getVideoHeight :: (MonadIO m) => HTMLVideoElement -> m Word
-getVideoHeight self = liftIO (js_getVideoHeight self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"poster\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"poster\"] = $2; })"
         js_setPoster :: HTMLVideoElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/poster MDN HTMLVideoElement.poster documentation>
+setPoster :: (MonadDOM m, ToJSString val) => HTMLVideoElement -> val -> m ()
+setPoster self val = liftDOM (void ((js_setPoster (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
-setPoster ::
-          (MonadIO m, ToJSString val) => HTMLVideoElement -> val -> m ()
-setPoster self val = liftIO (js_setPoster self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"poster\"]; })" js_getPoster ::
-        HTMLVideoElement -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"poster\"]; })"
+        js_getPoster :: HTMLVideoElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/poster MDN HTMLVideoElement.poster documentation>
+getPoster :: (MonadDOM m, FromJSString result) => HTMLVideoElement -> m result
+getPoster self = liftDOM ((fromJSString <$> (js_getPoster (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
-getPoster ::
-          (MonadIO m, FromJSString result) => HTMLVideoElement -> m result
-getPoster self = liftIO (fromJSString <$> (js_getPoster self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"playsInline\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"playsInline\"] = $2; })"
         js_setPlaysInline :: HTMLVideoElement -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/media.html#dom-video-playsinline HTMLVideoElement.playsInline specification>
+setPlaysInline :: (MonadDOM m) => HTMLVideoElement -> Bool -> m ()
+setPlaysInline self val = liftDOM (void ((js_setPlaysInline (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.playsInline Mozilla HTMLVideoElement.playsInline documentation> 
-setPlaysInline :: (MonadIO m) => HTMLVideoElement -> Bool -> m ()
-setPlaysInline self val = liftIO (js_setPlaysInline self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"playsInline\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"playsInline\"]; })"
         js_getPlaysInline :: HTMLVideoElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.playsInline Mozilla HTMLVideoElement.playsInline documentation> 
-getPlaysInline :: (MonadIO m) => HTMLVideoElement -> m Bool
-getPlaysInline self = liftIO (js_getPlaysInline self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitSupportsFullscreen\"] ? 1 : 0); })"
-        js_getWebkitSupportsFullscreen :: HTMLVideoElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsFullscreen Mozilla HTMLVideoElement.webkitSupportsFullscreen documentation> 
-getWebkitSupportsFullscreen ::
-                            (MonadIO m) => HTMLVideoElement -> m Bool
-getWebkitSupportsFullscreen self
-  = liftIO (js_getWebkitSupportsFullscreen self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitDisplayingFullscreen\"] ? 1 : 0); })"
-        js_getWebkitDisplayingFullscreen :: HTMLVideoElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDisplayingFullscreen Mozilla HTMLVideoElement.webkitDisplayingFullscreen documentation> 
-getWebkitDisplayingFullscreen ::
-                              (MonadIO m) => HTMLVideoElement -> m Bool
-getWebkitDisplayingFullscreen self
-  = liftIO (js_getWebkitDisplayingFullscreen self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"webkitWirelessVideoPlaybackDisabled\"] = $2; })"
-        js_setWebkitWirelessVideoPlaybackDisabled ::
-        HTMLVideoElement -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
-setWebkitWirelessVideoPlaybackDisabled ::
-                                       (MonadIO m) => HTMLVideoElement -> Bool -> m ()
-setWebkitWirelessVideoPlaybackDisabled self val
-  = liftIO (js_setWebkitWirelessVideoPlaybackDisabled self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitWirelessVideoPlaybackDisabled\"] ? 1 : 0); })"
-        js_getWebkitWirelessVideoPlaybackDisabled ::
-        HTMLVideoElement -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/media.html#dom-video-playsinline HTMLVideoElement.playsInline specification>
+getPlaysInline :: (MonadDOM m) => HTMLVideoElement -> m Bool
+getPlaysInline self = liftDOM ((js_getPlaysInline (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
-getWebkitWirelessVideoPlaybackDisabled ::
-                                       (MonadIO m) => HTMLVideoElement -> m Bool
-getWebkitWirelessVideoPlaybackDisabled self
-  = liftIO (js_getWebkitWirelessVideoPlaybackDisabled self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitDecodedFrameCount\"]; })"
-        js_getWebkitDecodedFrameCount :: HTMLVideoElement -> IO Word
+foreign import javascript safe "(($1, $2) => { $1[\"disablePictureInPicture\"] = $2; })"
+        js_setDisablePictureInPicture :: HTMLVideoElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/disablePictureInPicture MDN HTMLVideoElement.disablePictureInPicture documentation>
+setDisablePictureInPicture :: (MonadDOM m) => HTMLVideoElement -> Bool -> m ()
+setDisablePictureInPicture self val = liftDOM (void ((js_setDisablePictureInPicture (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDecodedFrameCount Mozilla HTMLVideoElement.webkitDecodedFrameCount documentation> 
-getWebkitDecodedFrameCount ::
-                           (MonadIO m) => HTMLVideoElement -> m Word
-getWebkitDecodedFrameCount self
-  = liftIO (js_getWebkitDecodedFrameCount self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitDroppedFrameCount\"]; })"
-        js_getWebkitDroppedFrameCount :: HTMLVideoElement -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"disablePictureInPicture\"]; })"
+        js_getDisablePictureInPicture :: HTMLVideoElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/disablePictureInPicture MDN HTMLVideoElement.disablePictureInPicture documentation>
+getDisablePictureInPicture :: (MonadDOM m) => HTMLVideoElement -> m Bool
+getDisablePictureInPicture self = liftDOM ((js_getDisablePictureInPicture (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDroppedFrameCount Mozilla HTMLVideoElement.webkitDroppedFrameCount documentation> 
-getWebkitDroppedFrameCount ::
-                           (MonadIO m) => HTMLVideoElement -> m Word
-getWebkitDroppedFrameCount self
-  = liftIO (js_getWebkitDroppedFrameCount self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitPresentationMode\"]; })"
-        js_getWebkitPresentationMode :: HTMLVideoElement -> IO JSVal
+-- | <https://w3c.github.io/picture-in-picture/#dom-htmlvideoelement-onenterpictureinpicture enterpictureinpicture event>
+enterpictureinpicture :: EventName HTMLVideoElement PictureInPictureEvent
+enterpictureinpicture = unsafeEventName (toJSString "enterpictureinpicture")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitPresentationMode Mozilla HTMLVideoElement.webkitPresentationMode documentation> 
-getWebkitPresentationMode ::
-                          (MonadIO m) => HTMLVideoElement -> m VideoPresentationMode
-getWebkitPresentationMode self
-  = liftIO
-      ((js_getWebkitPresentationMode self) >>= fromJSValUnchecked)
+-- | <https://w3c.github.io/picture-in-picture/#dom-htmlvideoelement-onleavepictureinpicture leavepictureinpicture event>
+leavepictureinpicture :: EventName HTMLVideoElement PictureInPictureEvent
+leavepictureinpicture = unsafeEventName (toJSString "leavepictureinpicture")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
@@ -1,77 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.HashChangeEvent
-       (js_newHashChangeEvent, newHashChangeEvent, js_initHashChangeEvent,
-        initHashChangeEvent, js_getOldURL, getOldURL, js_getNewURL,
-        getNewURL, HashChangeEvent(..), gTypeHashChangeEvent)
+       (js_newHashChangeEvent, js_getOldURL, js_getNewURL, newHashChangeEvent, getOldURL, getNewURL, HashChangeEvent(..), gTypeHashChangeEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"HashChangeEvent\"]($1,\n$2); })" js_newHashChangeEvent ::
-        JSString -> Optional HashChangeEventInit -> IO HashChangeEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation> 
-newHashChangeEvent ::
-                   (MonadIO m, ToJSString type') =>
-                     type' -> Maybe HashChangeEventInit -> m HashChangeEvent
-newHashChangeEvent type' eventInitDict
-  = liftIO
-      (js_newHashChangeEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initHashChangeEvent\"]($2,\n$3, $4, $5, $6); })"
-        js_initHashChangeEvent ::
-        HashChangeEvent ->
-          Optional JSString ->
-            Bool -> Bool -> Optional JSString -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.initHashChangeEvent Mozilla HashChangeEvent.initHashChangeEvent documentation> 
-initHashChangeEvent ::
-                    (MonadIO m, ToJSString type', ToJSString oldURL,
-                     ToJSString newURL) =>
-                      HashChangeEvent ->
-                        Maybe type' -> Bool -> Bool -> Maybe oldURL -> Maybe newURL -> m ()
-initHashChangeEvent self type' canBubble cancelable oldURL newURL
-  = liftIO
-      (js_initHashChangeEvent self (toOptionalJSString type') canBubble
-         cancelable
-         (toOptionalJSString oldURL)
-         (toOptionalJSString newURL))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"oldURL\"]; })" js_getOldURL ::
-        HashChangeEvent -> IO JSString
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"HashChangeEvent\"]($1, $2); })"
+        js_newHashChangeEvent :: JSString -> JSVal -> IO HashChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/HashChangeEvent/HashChangeEvent MDN HashChangeEvent. documentation>
+newHashChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe HashChangeEventInit -> m HashChangeEvent
+newHashChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newHashChangeEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.oldURL Mozilla HashChangeEvent.oldURL documentation> 
-getOldURL ::
-          (MonadIO m, FromJSString result) => HashChangeEvent -> m result
-getOldURL self = liftIO (fromJSString <$> (js_getOldURL self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"newURL\"]; })" js_getNewURL ::
-        HashChangeEvent -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"oldURL\"]; })"
+        js_getOldURL :: HashChangeEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HashChangeEvent/oldURL MDN HashChangeEvent.oldURL documentation>
+getOldURL :: (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
+getOldURL self = liftDOM ((fromJSString <$> (js_getOldURL (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.newURL Mozilla HashChangeEvent.newURL documentation> 
-getNewURL ::
-          (MonadIO m, FromJSString result) => HashChangeEvent -> m result
-getNewURL self = liftIO (fromJSString <$> (js_getNewURL self))
+foreign import javascript unsafe "(($1) => { return $1[\"newURL\"]; })"
+        js_getNewURL :: HashChangeEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HashChangeEvent/newURL MDN HashChangeEvent.newURL documentation>
+getNewURL :: (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
+getNewURL self = liftDOM ((fromJSString <$> (js_getNewURL (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HashChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HashChangeEventInit
+       (js_newHashChangeEventInit, js_setOldURL, js_getOldURL, js_setNewURL, js_getNewURL, newHashChangeEventInit, setOldURL, getOldURL, getOldURLUnsafe, getOldURLUnchecked, setNewURL, getNewURL, getNewURLUnsafe, getNewURLUnchecked, HashChangeEventInit(..), gTypeHashChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newHashChangeEventInit :: IO HashChangeEventInit
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#hashchangeeventinit HashChangeEventInit specification>
+newHashChangeEventInit :: (MonadDOM m) => m HashChangeEventInit
+newHashChangeEventInit = liftDOM ((js_newHashChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oldURL\"] = $2; })"
+        js_setOldURL :: HashChangeEventInit -> JSString -> IO ()
+setOldURL :: (MonadDOM m, ToJSString val) => HashChangeEventInit -> val -> m ()
+setOldURL self val = liftDOM (void ((js_setOldURL (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oldURL\"]; })"
+        js_getOldURL :: HashChangeEventInit -> IO JSVal
+getOldURL :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m (Maybe result)
+getOldURL self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOldURL (self))))
+
+getOldURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HashChangeEventInit -> m result
+getOldURLUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOldURL (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getOldURLUnchecked :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m result
+getOldURLUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldURL (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"newURL\"] = $2; })"
+        js_setNewURL :: HashChangeEventInit -> JSString -> IO ()
+setNewURL :: (MonadDOM m, ToJSString val) => HashChangeEventInit -> val -> m ()
+setNewURL self val = liftDOM (void ((js_setNewURL (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"newURL\"]; })"
+        js_getNewURL :: HashChangeEventInit -> IO JSVal
+getNewURL :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m (Maybe result)
+getNewURL self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNewURL (self))))
+
+getNewURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HashChangeEventInit -> m result
+getNewURLUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNewURL (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNewURLUnchecked :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m result
+getNewURLUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewURL (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Headers.hs b/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
@@ -1,97 +1,79 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Headers
-       (js_append, append, js_delete, delete, js_get, get, get_,
-        getUnsafe, getUnchecked, js_has, has, has_, js_set, set,
-        Headers(..), gTypeHeaders)
+       (js_newHeaders, js_append, js_delete, js_get, js_getSetCookie, js_has, js_set, newHeaders, append, delete, get, get_, getUnsafe, getUnchecked, getSetCookie, getSetCookie_, has, has_, set, Headers(..), gTypeHeaders)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
-        :: Headers -> JSString -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.append Mozilla Headers.append documentation> 
-append ::
-       (MonadIO m, ToJSString name, ToJSString value) =>
-         Headers -> name -> value -> m ()
-append self name value
-  = liftIO (js_append self (toJSString name) (toJSString value))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })" js_delete ::
-        Headers -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"Headers\"]($1); })"
+        js_newHeaders :: JSVal -> IO Headers
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/Headers MDN Headers. documentation>
+newHeaders :: (MonadDOM m, IsHeadersInit init) => Maybe init -> m Headers
+newHeaders init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a1' -> js_newHeaders a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.delete Mozilla Headers.delete documentation> 
-delete :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
-delete self name = liftIO (js_delete self (toJSString name))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
-        Headers -> JSString -> IO (Nullable JSString)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })"
+        js_append :: Headers -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/append MDN Headers.append documentation>
+append :: (MonadDOM m, ToJSString name, ToJSString value) => Headers -> name -> value -> m ()
+append self name value = liftDOM (void ((js_append (self) (toJSString name) (toJSString value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
-get ::
-    (MonadIO m, ToJSString name, FromJSString result) =>
-      Headers -> name -> m (Maybe result)
-get self name
-  = liftIO (fromMaybeJSString <$> (js_get self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })"
+        js_delete :: Headers -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/delete MDN Headers.delete documentation>
+delete :: (MonadDOM m, ToJSString name) => Headers -> name -> m ()
+delete self name = liftDOM (void ((js_delete (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
-get_ :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
-get_ self name = liftIO (void (js_get self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: Headers -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/get MDN Headers.get documentation>
+get :: (MonadDOM m, ToJSString name, FromJSString result) => Headers -> name -> m (Maybe result)
+get self name = liftDOM (((fromMaybeJSString . Nullable) <$> (js_get (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
-getUnsafe ::
-          (MonadIO m, ToJSString name, HasCallStack, FromJSString result) =>
-            Headers -> name -> m result
-getUnsafe self name
-  = liftIO
-      ((fromMaybeJSString <$> (js_get self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/get MDN Headers.get documentation>
+get_ :: (MonadDOM m, ToJSString name) => Headers -> name -> m ()
+get_ self name = liftDOM (void ((js_get (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
-getUnchecked ::
-             (MonadIO m, ToJSString name, FromJSString result) =>
-               Headers -> name -> m result
-getUnchecked self name
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_get self (toJSString name)))
- 
-foreign import javascript safe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
-        :: Headers -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/get MDN Headers.get documentation>
+getUnsafe :: (MonadDOM m, ToJSString name, HasCallStack, FromJSString result) => Headers -> name -> m result
+getUnsafe self name = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_get (self) (toJSString name))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.has Mozilla Headers.has documentation> 
-has :: (MonadIO m, ToJSString name) => Headers -> name -> m Bool
-has self name = liftIO (js_has self (toJSString name))
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/get MDN Headers.get documentation>
+getUnchecked :: (MonadDOM m, ToJSString name, FromJSString result) => Headers -> name -> m result
+getUnchecked self name = liftDOM ((pFromJSVal <$> (js_get (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.has Mozilla Headers.has documentation> 
-has_ :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
-has_ self name = liftIO (void (js_has self (toJSString name)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"set\"]($2, $3); })" js_set ::
-        Headers -> JSString -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"getSetCookie\"](); })"
+        js_getSetCookie :: Headers -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie MDN Headers.getSetCookie documentation>
+getSetCookie :: (MonadDOM m, FromJSString result) => Headers -> m [result]
+getSetCookie self = liftDOM (((js_getSetCookie (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.set Mozilla Headers.set documentation> 
-set ::
-    (MonadIO m, ToJSString name, ToJSString value) =>
-      Headers -> name -> value -> m ()
-set self name value
-  = liftIO (js_set self (toJSString name) (toJSString value))
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie MDN Headers.getSetCookie documentation>
+getSetCookie_ :: (MonadDOM m) => Headers -> m ()
+getSetCookie_ self = liftDOM (void ((js_getSetCookie (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"has\"]($2); })"
+        js_has :: Headers -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/has MDN Headers.has documentation>
+has :: (MonadDOM m, ToJSString name) => Headers -> name -> m Bool
+has self name = liftDOM ((js_has (self) (toJSString name)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/has MDN Headers.has documentation>
+has_ :: (MonadDOM m, ToJSString name) => Headers -> name -> m ()
+has_ self name = liftDOM (void ((js_has (self) (toJSString name))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"set\"]($2, $3); })"
+        js_set :: Headers -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/set MDN Headers.set documentation>
+set :: (MonadDOM m, ToJSString name, ToJSString value) => Headers -> name -> value -> m ()
+set self name value = liftDOM (void ((js_set (self) (toJSString name) (toJSString value))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HevcEncoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/HevcEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HevcEncoderConfig.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-hevc-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HevcEncoderConfig
+       (js_newHevcEncoderConfig, js_setFormat, js_getFormat, newHevcEncoderConfig, setFormat, getFormat, getFormatUnsafe, getFormatUnchecked, HevcEncoderConfig(..), gTypeHevcEncoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newHevcEncoderConfig :: IO HevcEncoderConfig
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dictdef-hevcencoderconfig HevcEncoderConfig specification>
+newHevcEncoderConfig :: (MonadDOM m) => m HevcEncoderConfig
+newHevcEncoderConfig = liftDOM ((js_newHevcEncoderConfig))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: HevcEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-hevcencoderconfig-format HevcEncoderConfig.format specification>
+setFormat :: (MonadDOM m) => HevcEncoderConfig -> HevcBitstreamFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: HevcEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-hevcencoderconfig-format HevcEncoderConfig.format specification>
+getFormat :: (MonadDOM m) => HevcEncoderConfig -> m (Maybe HevcBitstreamFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-hevcencoderconfig-format HevcEncoderConfig.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => HevcEncoderConfig -> m HevcBitstreamFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-hevcencoderconfig-format HevcEncoderConfig.format specification>
+getFormatUnchecked :: (MonadDOM m) => HevcEncoderConfig -> m HevcBitstreamFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Highlight.hs b/src/GHCJS/DOM/JSFFI/Generated/Highlight.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Highlight.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Highlight
+       (js_newHighlight, js_setPriority, js_getPriority, js_setType, js_getType, newHighlight, setPriority, getPriority, setType, getType, Highlight(..), gTypeHighlight)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"Highlight\"](...$1); })"
+        js_newHighlight :: JSVal -> IO Highlight
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/Highlight MDN Highlight. documentation>
+newHighlight :: (MonadDOM m, IsAbstractRange initialRanges) => [initialRanges] -> m Highlight
+newHighlight initialRanges = liftDOM (((toJSVal initialRanges) >>= \a1' -> js_newHighlight a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: Highlight -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/priority MDN Highlight.priority documentation>
+setPriority :: (MonadDOM m) => Highlight -> Int -> m ()
+setPriority self val = liftDOM (void ((js_setPriority (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: Highlight -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/priority MDN Highlight.priority documentation>
+getPriority :: (MonadDOM m) => Highlight -> m Int
+getPriority self = liftDOM ((js_getPriority (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: Highlight -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/type MDN Highlight.type documentation>
+setType :: (MonadDOM m) => Highlight -> HighlightType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Highlight -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/type MDN Highlight.type documentation>
+getType :: (MonadDOM m) => Highlight -> m HighlightType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HighlightHitResult.hs b/src/GHCJS/DOM/JSFFI/Generated/HighlightHitResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HighlightHitResult.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HighlightHitResult
+       (js_newHighlightHitResult, js_setHighlight, js_getHighlight, js_setRanges, js_getRanges, newHighlightHitResult, setHighlight, getHighlight, getHighlightUnsafe, getHighlightUnchecked, setRanges, getRanges, getRangesUnsafe, getRangesUnchecked, HighlightHitResult(..), gTypeHighlightHitResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newHighlightHitResult :: IO HighlightHitResult
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dictdef-highlighthitresult HighlightHitResult specification>
+newHighlightHitResult :: (MonadDOM m) => m HighlightHitResult
+newHighlightHitResult = liftDOM ((js_newHighlightHitResult))
+
+foreign import javascript safe "(($1, $2) => { $1[\"highlight\"] = $2; })"
+        js_setHighlight :: HighlightHitResult -> Highlight -> IO ()
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-highlight HighlightHitResult.highlight specification>
+setHighlight :: (MonadDOM m) => HighlightHitResult -> Highlight -> m ()
+setHighlight self val = liftDOM (void ((js_setHighlight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"highlight\"]; })"
+        js_getHighlight :: HighlightHitResult -> IO JSVal
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-highlight HighlightHitResult.highlight specification>
+getHighlight :: (MonadDOM m) => HighlightHitResult -> m (Maybe Highlight)
+getHighlight self = liftDOM (((js_getHighlight (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-highlight HighlightHitResult.highlight specification>
+getHighlightUnsafe :: (MonadDOM m, HasCallStack) => HighlightHitResult -> m Highlight
+getHighlightUnsafe self = liftDOM ((((js_getHighlight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-highlight HighlightHitResult.highlight specification>
+getHighlightUnchecked :: (MonadDOM m) => HighlightHitResult -> m Highlight
+getHighlightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHighlight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ranges\"] = $2; })"
+        js_setRanges :: HighlightHitResult -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-ranges HighlightHitResult.ranges specification>
+setRanges :: (MonadDOM m, IsAbstractRange val) => HighlightHitResult -> [val] -> m ()
+setRanges self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRanges (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ranges\"]; })"
+        js_getRanges :: HighlightHitResult -> IO JSVal
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-ranges HighlightHitResult.ranges specification>
+getRanges :: (MonadDOM m) => HighlightHitResult -> m (Maybe [AbstractRange])
+getRanges self = liftDOM (((js_getRanges (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-ranges HighlightHitResult.ranges specification>
+getRangesUnsafe :: (MonadDOM m, HasCallStack) => HighlightHitResult -> m [AbstractRange]
+getRangesUnsafe self = liftDOM ((((js_getRanges (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-ranges HighlightHitResult.ranges specification>
+getRangesUnchecked :: (MonadDOM m) => HighlightHitResult -> m [AbstractRange]
+getRangesUnchecked self = liftDOM (((js_getRanges (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HighlightRegistry.hs b/src/GHCJS/DOM/JSFFI/Generated/HighlightRegistry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HighlightRegistry.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HighlightRegistry
+       (js_highlightsFromPoint, highlightsFromPoint, highlightsFromPoint_, HighlightRegistry(..), gTypeHighlightRegistry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"highlightsFromPoint\"]($2, $3, $4); })"
+        js_highlightsFromPoint :: HighlightRegistry -> Float -> Float -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HighlightRegistry/highlightsFromPoint MDN HighlightRegistry.highlightsFromPoint documentation>
+highlightsFromPoint :: (MonadDOM m) => HighlightRegistry -> Float -> Float -> Maybe HighlightsFromPointOptions -> m [HighlightHitResult]
+highlightsFromPoint self x y options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_highlightsFromPoint (self) (x) (y) a4') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HighlightRegistry/highlightsFromPoint MDN HighlightRegistry.highlightsFromPoint documentation>
+highlightsFromPoint_ :: (MonadDOM m) => HighlightRegistry -> Float -> Float -> Maybe HighlightsFromPointOptions -> m ()
+highlightsFromPoint_ self x y options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_highlightsFromPoint (self) (x) (y) a4')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HighlightsFromPointOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/HighlightsFromPointOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HighlightsFromPointOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HighlightsFromPointOptions
+       (js_newHighlightsFromPointOptions, js_setShadowRoots, js_getShadowRoots, newHighlightsFromPointOptions, setShadowRoots, getShadowRoots, getShadowRootsUnsafe, getShadowRootsUnchecked, HighlightsFromPointOptions(..), gTypeHighlightsFromPointOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newHighlightsFromPointOptions :: IO HighlightsFromPointOptions
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dictdef-highlightsfrompointoptions HighlightsFromPointOptions specification>
+newHighlightsFromPointOptions :: (MonadDOM m) => m HighlightsFromPointOptions
+newHighlightsFromPointOptions = liftDOM ((js_newHighlightsFromPointOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shadowRoots\"] = $2; })"
+        js_setShadowRoots :: HighlightsFromPointOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlightsfrompointoptions-shadowroots HighlightsFromPointOptions.shadowRoots specification>
+setShadowRoots :: (MonadDOM m) => HighlightsFromPointOptions -> [ShadowRoot] -> m ()
+setShadowRoots self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setShadowRoots (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRoots\"]; })"
+        js_getShadowRoots :: HighlightsFromPointOptions -> IO JSVal
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlightsfrompointoptions-shadowroots HighlightsFromPointOptions.shadowRoots specification>
+getShadowRoots :: (MonadDOM m) => HighlightsFromPointOptions -> m (Maybe [ShadowRoot])
+getShadowRoots self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlightsfrompointoptions-shadowroots HighlightsFromPointOptions.shadowRoots specification>
+getShadowRootsUnsafe :: (MonadDOM m, HasCallStack) => HighlightsFromPointOptions -> m [ShadowRoot]
+getShadowRootsUnsafe self = liftDOM ((((js_getShadowRoots (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlightsfrompointoptions-shadowroots HighlightsFromPointOptions.shadowRoots specification>
+getShadowRootsUnchecked :: (MonadDOM m) => HighlightsFromPointOptions -> m [ShadowRoot]
+getShadowRootsUnchecked self = liftDOM (((js_getShadowRoots (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/History.hs b/src/GHCJS/DOM/JSFFI/Generated/History.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/History.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/History.hs
@@ -1,111 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.History
-       (js_back, back, js_forward, forward, js_go, go, js_pushState,
-        pushState, js_replaceState, replaceState, js_getLength, getLength,
-        js_setScrollRestoration, setScrollRestoration,
-        js_getScrollRestoration, getScrollRestoration, js_getState,
-        getState, History(..), gTypeHistory)
+       (js_back, js_forward, js_go, js_pushState, js_replaceState, js_getLength, js_setScrollRestoration, js_getScrollRestoration, js_getState, back, forward, go, pushState, replaceState, getLength, setScrollRestoration, getScrollRestoration, getState, History(..), gTypeHistory)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"back\"](); })" js_back ::
-        History -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.back Mozilla History.back documentation> 
-back :: (MonadIO m) => History -> m ()
-back self = liftIO (js_back self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"forward\"](); })" js_forward ::
-        History -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"back\"](); })"
+        js_back :: History -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/History/back MDN History.back documentation>
+back :: (MonadDOM m) => History -> m ()
+back self = liftDOM (void ((js_back (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.forward Mozilla History.forward documentation> 
-forward :: (MonadIO m) => History -> m ()
-forward self = liftIO (js_forward self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"go\"]($2); })" js_go ::
-        History -> Optional Int -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"forward\"](); })"
+        js_forward :: History -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/History/forward MDN History.forward documentation>
+forward :: (MonadDOM m) => History -> m ()
+forward self = liftDOM (void ((js_forward (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.go Mozilla History.go documentation> 
-go :: (MonadIO m) => History -> Maybe Int -> m ()
-go self distance = liftIO (js_go self (maybeToOptional distance))
- 
+foreign import javascript safe "(($1, $2) => { return $1[\"go\"]($2); })"
+        js_go :: History -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/History/go MDN History.go documentation>
+go :: (MonadDOM m) => History -> Maybe Int -> m ()
+go self delta = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal delta) >>= \a2' -> js_go (self) a2')))
+
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"pushState\"]($2, $3, $4); })"
-        js_pushState ::
-        History -> JSVal -> JSString -> Optional JSString -> IO ()
+        js_pushState :: History -> JSVal -> JSString -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/History/pushState MDN History.pushState documentation>
+pushState :: (MonadDOM m, ToJSString unused, ToJSString url) => History -> JSVal -> unused -> Maybe url -> m ()
+pushState self data' unused url = liftDOM (void ((js_pushState (self) (data') (toJSString unused) (toMaybeJSString url))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.pushState Mozilla History.pushState documentation> 
-pushState ::
-          (MonadIO m, ToJSVal data', ToJSString title, ToJSString url) =>
-            History -> data' -> title -> Maybe url -> m ()
-pushState self data' title url
-  = liftIO
-      (toJSVal data' >>= \ data'' -> js_pushState self data''
-         (toJSString title)
-         (toOptionalJSString url))
- 
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"replaceState\"]($2, $3, $4); })"
-        js_replaceState ::
-        History -> JSVal -> JSString -> Optional JSString -> IO ()
+        js_replaceState :: History -> JSVal -> JSString -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/History/replaceState MDN History.replaceState documentation>
+replaceState :: (MonadDOM m, ToJSString unused, ToJSString url) => History -> JSVal -> unused -> Maybe url -> m ()
+replaceState self data' unused url = liftDOM (void ((js_replaceState (self) (data') (toJSString unused) (toMaybeJSString url))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.replaceState Mozilla History.replaceState documentation> 
-replaceState ::
-             (MonadIO m, ToJSVal data', ToJSString title, ToJSString url) =>
-               History -> data' -> title -> Maybe url -> m ()
-replaceState self data' title url
-  = liftIO
-      (toJSVal data' >>= \ data'' -> js_replaceState self data''
-         (toJSString title)
-         (toOptionalJSString url))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        History -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: History -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/History/length MDN History.length documentation>
+getLength :: (MonadDOM m) => History -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.length Mozilla History.length documentation> 
-getLength :: (MonadIO m) => History -> m Word
-getLength self = liftIO (js_getLength self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"scrollRestoration\"] = $2; })"
         js_setScrollRestoration :: History -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/History/scrollRestoration MDN History.scrollRestoration documentation>
+setScrollRestoration :: (MonadDOM m) => History -> ScrollRestoration -> m ()
+setScrollRestoration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setScrollRestoration (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
-setScrollRestoration ::
-                     (MonadIO m) => History -> ScrollRestoration -> m ()
-setScrollRestoration self val
-  = liftIO (js_setScrollRestoration self (pToJSVal val))
- 
-foreign import javascript safe "(($1) => { return $1[\"scrollRestoration\"]; })"
+foreign import javascript unsafe "(($1) => { return $1[\"scrollRestoration\"]; })"
         js_getScrollRestoration :: History -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
-getScrollRestoration ::
-                     (MonadIO m) => History -> m ScrollRestoration
-getScrollRestoration self
-  = liftIO ((js_getScrollRestoration self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
-        History -> IO SerializedScriptValue
+-- | <https://developer.mozilla.org/docs/Web/API/History/scrollRestoration MDN History.scrollRestoration documentation>
+getScrollRestoration :: (MonadDOM m) => History -> m ScrollRestoration
+getScrollRestoration self = liftDOM (((js_getScrollRestoration (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.state Mozilla History.state documentation> 
-getState :: (MonadIO m) => History -> m SerializedScriptValue
-getState self = liftIO (js_getState self)
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: History -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/History/state MDN History.state documentation>
+getState :: (MonadDOM m) => History -> m JSVal
+getState self = liftDOM ((js_getState (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HyperlinkElementUtils.hs b/src/GHCJS/DOM/JSFFI/Generated/HyperlinkElementUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HyperlinkElementUtils.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.HyperlinkElementUtils
+       (js_getOrigin, js_setProtocol, js_getProtocol, js_setUsername, js_getUsername, js_setPassword, js_getPassword, js_setHost, js_getHost, js_setHostname, js_getHostname, js_setPort, js_getPort, js_setPathname, js_getPathname, js_setSearch, js_getSearch, js_setHash, js_getHash, js_setHreflang, js_getHreflang, js_setType, js_getType, getOrigin, setProtocol, getProtocol, setUsername, getUsername, setPassword, getPassword, setHost, getHost, setHostname, getHostname, setPort, getPort, setPathname, getPathname, setSearch, getSearch, setHash, getHash, setHreflang, getHreflang, setType, getType, HyperlinkElementUtils(..), gTypeHyperlinkElementUtils, IsHyperlinkElementUtils, toHyperlinkElementUtils)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/origin MDN HyperlinkElementUtils.origin documentation>
+getOrigin :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/protocol MDN HyperlinkElementUtils.protocol documentation>
+setProtocol :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/protocol MDN HyperlinkElementUtils.protocol documentation>
+getProtocol :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"username\"] = $2; })"
+        js_setUsername :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/username MDN HyperlinkElementUtils.username documentation>
+setUsername :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setUsername self val = liftDOM (void ((js_setUsername ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })"
+        js_getUsername :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/username MDN HyperlinkElementUtils.username documentation>
+getUsername :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getUsername self = liftDOM ((fromJSString <$> (js_getUsername ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/password MDN HyperlinkElementUtils.password documentation>
+setPassword :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setPassword self val = liftDOM (void ((js_setPassword ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/password MDN HyperlinkElementUtils.password documentation>
+getPassword :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getPassword self = liftDOM ((fromJSString <$> (js_getPassword ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"host\"] = $2; })"
+        js_setHost :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/host MDN HyperlinkElementUtils.host documentation>
+setHost :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setHost self val = liftDOM (void ((js_setHost ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })"
+        js_getHost :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/host MDN HyperlinkElementUtils.host documentation>
+getHost :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getHost self = liftDOM ((fromJSString <$> (js_getHost ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+        js_setHostname :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/hostname MDN HyperlinkElementUtils.hostname documentation>
+setHostname :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setHostname self val = liftDOM (void ((js_setHostname ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })"
+        js_getHostname :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/hostname MDN HyperlinkElementUtils.hostname documentation>
+getHostname :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getHostname self = liftDOM ((fromJSString <$> (js_getHostname ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"port\"] = $2; })"
+        js_setPort :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/port MDN HyperlinkElementUtils.port documentation>
+setPort :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setPort self val = liftDOM (void ((js_setPort ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/port MDN HyperlinkElementUtils.port documentation>
+getPort :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getPort self = liftDOM ((fromJSString <$> (js_getPort ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+        js_setPathname :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/pathname MDN HyperlinkElementUtils.pathname documentation>
+setPathname :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setPathname self val = liftDOM (void ((js_setPathname ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })"
+        js_getPathname :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/pathname MDN HyperlinkElementUtils.pathname documentation>
+getPathname :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getPathname self = liftDOM ((fromJSString <$> (js_getPathname ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"search\"] = $2; })"
+        js_setSearch :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/search MDN HyperlinkElementUtils.search documentation>
+setSearch :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setSearch self val = liftDOM (void ((js_setSearch ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })"
+        js_getSearch :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/search MDN HyperlinkElementUtils.search documentation>
+getSearch :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getSearch self = liftDOM ((fromJSString <$> (js_getSearch ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hash\"] = $2; })"
+        js_setHash :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/hash MDN HyperlinkElementUtils.hash documentation>
+setHash :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setHash self val = liftDOM (void ((js_setHash ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })"
+        js_getHash :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/hash MDN HyperlinkElementUtils.hash documentation>
+getHash :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getHash self = liftDOM ((fromJSString <$> (js_getHash ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hreflang\"] = $2; })"
+        js_setHreflang :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/hreflang MDN HyperlinkElementUtils.hreflang documentation>
+setHreflang :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setHreflang self val = liftDOM (void ((js_setHreflang ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hreflang\"]; })"
+        js_getHreflang :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/hreflang MDN HyperlinkElementUtils.hreflang documentation>
+getHreflang :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getHreflang self = liftDOM ((fromJSString <$> (js_getHreflang ((Types.toHyperlinkElementUtils self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: HyperlinkElementUtils -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/type MDN HyperlinkElementUtils.type documentation>
+setType :: (MonadDOM m, IsHyperlinkElementUtils self, ToJSString val) => self -> val -> m ()
+setType self val = liftDOM (void ((js_setType ((Types.toHyperlinkElementUtils self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: HyperlinkElementUtils -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/type MDN HyperlinkElementUtils.type documentation>
+getType :: (MonadDOM m, IsHyperlinkElementUtils self, FromJSString result) => self -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType ((Types.toHyperlinkElementUtils self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
@@ -1,128 +1,85 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBCursor
-       (js_update, update, update_, js_advance, advance, js_continue,
-        continue, js_continuePrimaryKey, continuePrimaryKey, js_delete,
-        delete, delete_, js_getSource, getSource, js_getDirection,
-        getDirection, js_getKey, getKey, js_getPrimaryKey, getPrimaryKey,
-        IDBCursor(..), gTypeIDBCursor, IsIDBCursor, toIDBCursor)
+       (js_advance, js_continue, js_continuePrimaryKey, js_delete, js_update, js_getSource, js_getDirection, js_getKey, js_getPrimaryKey, js_getRequest, advance, continue, continuePrimaryKey, delete, delete_, update, update_, getSource, getDirection, getKey, getPrimaryKey, getRequest, IDBCursor(..), gTypeIDBCursor, IsIDBCursor, toIDBCursor)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"update\"]($2); })" js_update ::
-        IDBCursor -> JSVal -> IO IDBRequest
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
-update ::
-       (MonadIO m, IsIDBCursor self, ToJSVal value) =>
-         self -> value -> m IDBRequest
-update self value
-  = liftIO
-      (toJSVal value >>= \ value' -> js_update (toIDBCursor self) value')
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
-update_ ::
-        (MonadIO m, IsIDBCursor self, ToJSVal value) =>
-          self -> value -> m ()
-update_ self value
-  = liftIO
-      (void
-         (toJSVal value >>=
-            \ value' -> js_update (toIDBCursor self) value'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"advance\"]($2); })" js_advance ::
-        IDBCursor -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"advance\"]($2); })"
+        js_advance :: IDBCursor -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/advance MDN IDBCursor.advance documentation>
+advance :: (MonadDOM m, IsIDBCursor self) => self -> Word -> m ()
+advance self count = liftDOM (void ((js_advance ((Types.toIDBCursor self)) (count))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance Mozilla IDBCursor.advance documentation> 
-advance :: (MonadIO m, IsIDBCursor self) => self -> Word -> m ()
-advance self count = liftIO (js_advance (toIDBCursor self) count)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"continue\"]($2); })" js_continue
-        :: IDBCursor -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"continue\"]($2); })"
+        js_continue :: IDBCursor -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/continue MDN IDBCursor.continue documentation>
+continue :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m ()
+continue self key = liftDOM (void ((js_continue ((Types.toIDBCursor self)) (key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
-continue ::
-         (MonadIO m, IsIDBCursor self, ToJSVal key) =>
-           self -> Maybe key -> m ()
-continue self key
-  = liftIO
-      (mapM toJSVal key >>=
-         \ key' -> js_continue (toIDBCursor self) (maybeToOptional key'))
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"continuePrimaryKey\"]($2, $3); })"
         js_continuePrimaryKey :: IDBCursor -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/continuePrimaryKey MDN IDBCursor.continuePrimaryKey documentation>
+continuePrimaryKey :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> JSVal -> m ()
+continuePrimaryKey self key primaryKey = liftDOM (void ((js_continuePrimaryKey ((Types.toIDBCursor self)) (key) (primaryKey))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continuePrimaryKey Mozilla IDBCursor.continuePrimaryKey documentation> 
-continuePrimaryKey ::
-                   (MonadIO m, IsIDBCursor self, ToJSVal key, ToJSVal primaryKey) =>
-                     self -> key -> primaryKey -> m ()
-continuePrimaryKey self key primaryKey
-  = liftIO
-      (toJSVal primaryKey >>=
-         \ primaryKey' ->
-           toJSVal key >>=
-             \ key' -> js_continuePrimaryKey (toIDBCursor self) key'
-             primaryKey')
- 
-foreign import javascript safe "(($1) => { return $1[\"delete\"](); })" js_delete ::
-        IDBCursor -> IO IDBRequest
+foreign import javascript safe "(($1) => { return $1[\"delete\"](); })"
+        js_delete :: IDBCursor -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/delete MDN IDBCursor.delete documentation>
+delete :: (MonadDOM m, IsIDBCursor self) => self -> m IDBRequest
+delete self = liftDOM ((js_delete ((Types.toIDBCursor self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
-delete :: (MonadIO m, IsIDBCursor self) => self -> m IDBRequest
-delete self = liftIO (js_delete (toIDBCursor self))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/delete MDN IDBCursor.delete documentation>
+delete_ :: (MonadDOM m, IsIDBCursor self) => self -> m ()
+delete_ self = liftDOM (void ((js_delete ((Types.toIDBCursor self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
-delete_ :: (MonadIO m, IsIDBCursor self) => self -> m ()
-delete_ self = liftIO (void (js_delete (toIDBCursor self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })" js_getSource ::
-        IDBCursor -> IO IDBCursorSource
+foreign import javascript safe "(($1, $2) => { return $1[\"update\"]($2); })"
+        js_update :: IDBCursor -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/update MDN IDBCursor.update documentation>
+update :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m IDBRequest
+update self value = liftDOM ((js_update ((Types.toIDBCursor self)) (value)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
-getSource ::
-          (MonadIO m, IsIDBCursor self) => self -> m IDBCursorSource
-getSource self = liftIO (js_getSource (toIDBCursor self))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/update MDN IDBCursor.update documentation>
+update_ :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m ()
+update_ self value = liftDOM (void ((js_update ((Types.toIDBCursor self)) (value))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: IDBCursor -> IO IDBObjectStoreOrIDBIndex
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/source MDN IDBCursor.source documentation>
+getSource :: (MonadDOM m, IsIDBCursor self) => self -> m IDBObjectStoreOrIDBIndex
+getSource self = liftDOM ((js_getSource ((Types.toIDBCursor self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
         js_getDirection :: IDBCursor -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/direction MDN IDBCursor.direction documentation>
+getDirection :: (MonadDOM m, IsIDBCursor self) => self -> m IDBCursorDirection
+getDirection self = liftDOM (((js_getDirection ((Types.toIDBCursor self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.direction Mozilla IDBCursor.direction documentation> 
-getDirection ::
-             (MonadIO m, IsIDBCursor self) => self -> m IDBCursorDirection
-getDirection self
-  = liftIO
-      ((js_getDirection (toIDBCursor self)) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })" js_getKey ::
-        IDBCursor -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: IDBCursor -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/key MDN IDBCursor.key documentation>
+getKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
+getKey self = liftDOM ((js_getKey ((Types.toIDBCursor self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.key Mozilla IDBCursor.key documentation> 
-getKey :: (MonadIO m, IsIDBCursor self) => self -> m JSVal
-getKey self = liftIO (js_getKey (toIDBCursor self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"primaryKey\"]; })"
         js_getPrimaryKey :: IDBCursor -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/primaryKey MDN IDBCursor.primaryKey documentation>
+getPrimaryKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
+getPrimaryKey self = liftDOM ((js_getPrimaryKey ((Types.toIDBCursor self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.primaryKey Mozilla IDBCursor.primaryKey documentation> 
-getPrimaryKey :: (MonadIO m, IsIDBCursor self) => self -> m JSVal
-getPrimaryKey self = liftIO (js_getPrimaryKey (toIDBCursor self))
+foreign import javascript unsafe "(($1) => { return $1[\"request\"]; })"
+        js_getRequest :: IDBCursor -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/request MDN IDBCursor.request documentation>
+getRequest :: (MonadDOM m, IsIDBCursor self) => self -> m IDBRequest
+getRequest self = liftDOM ((js_getRequest ((Types.toIDBCursor self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
@@ -1,34 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
-       (js_getValue, getValue, IDBCursorWithValue(..),
-        gTypeIDBCursorWithValue)
+       (js_getValue, getValue, IDBCursorWithValue(..), gTypeIDBCursorWithValue)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        IDBCursorWithValue -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue.value Mozilla IDBCursorWithValue.value documentation> 
-getValue :: (MonadIO m) => IDBCursorWithValue -> m JSVal
-getValue self = liftIO (js_getValue self)
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: IDBCursorWithValue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursorWithValue/value MDN IDBCursorWithValue.value documentation>
+getValue :: (MonadDOM m) => IDBCursorWithValue -> m JSVal
+getValue self = liftDOM ((js_getValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
@@ -1,138 +1,93 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBDatabase
-       (js_createObjectStore, createObjectStore, createObjectStore_,
-        js_deleteObjectStore, deleteObjectStore, js_transaction,
-        transaction, transaction_, js_close, close, js_getName, getName,
-        js_getVersion, getVersion, js_getObjectStoreNames,
-        getObjectStoreNames, abort, closeEvent, error, versionChange,
-        IDBDatabase(..), gTypeIDBDatabase)
+       (js_close, js_createObjectStore, js_deleteObjectStore, js_transaction, js_transaction', js_getName, js_getVersion, js_getObjectStoreNames, close, createObjectStore, createObjectStore_, deleteObjectStore, transaction, transaction_, transaction', transaction'_, getName, getVersion, getObjectStoreNames, abort, closeEvent, error, versionChange, IDBDatabase(..), gTypeIDBDatabase)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: IDBDatabase -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/close MDN IDBDatabase.close documentation>
+close :: (MonadDOM m) => IDBDatabase -> m ()
+close self = liftDOM (void ((js_close (self))))
+
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"createObjectStore\"]($2, $3); })"
-        js_createObjectStore ::
-        IDBDatabase ->
-          JSString -> Optional IDBObjectStoreParameters -> IO IDBObjectStore
+        js_createObjectStore :: IDBDatabase -> JSString -> JSVal -> IO IDBObjectStore
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/createObjectStore MDN IDBDatabase.createObjectStore documentation>
+createObjectStore :: (MonadDOM m, ToJSString name) => IDBDatabase -> name -> Maybe IDBObjectStoreParameters -> m IDBObjectStore
+createObjectStore self name options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_createObjectStore (self) (toJSString name) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
-createObjectStore ::
-                  (MonadIO m, ToJSString name) =>
-                    IDBDatabase ->
-                      name -> Maybe IDBObjectStoreParameters -> m IDBObjectStore
-createObjectStore self name parameters
-  = liftIO
-      (js_createObjectStore self (toJSString name)
-         (maybeToOptional parameters))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/createObjectStore MDN IDBDatabase.createObjectStore documentation>
+createObjectStore_ :: (MonadDOM m, ToJSString name) => IDBDatabase -> name -> Maybe IDBObjectStoreParameters -> m ()
+createObjectStore_ self name options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_createObjectStore (self) (toJSString name) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
-createObjectStore_ ::
-                   (MonadIO m, ToJSString name) =>
-                     IDBDatabase -> name -> Maybe IDBObjectStoreParameters -> m ()
-createObjectStore_ self name parameters
-  = liftIO
-      (void
-         (js_createObjectStore self (toJSString name)
-            (maybeToOptional parameters)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"deleteObjectStore\"]($2); })"
         js_deleteObjectStore :: IDBDatabase -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/deleteObjectStore MDN IDBDatabase.deleteObjectStore documentation>
+deleteObjectStore :: (MonadDOM m, ToJSString name) => IDBDatabase -> name -> m ()
+deleteObjectStore self name = liftDOM (void ((js_deleteObjectStore (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.deleteObjectStore Mozilla IDBDatabase.deleteObjectStore documentation> 
-deleteObjectStore ::
-                  (MonadIO m, ToJSString name) => IDBDatabase -> name -> m ()
-deleteObjectStore self name
-  = liftIO (js_deleteObjectStore self (toJSString name))
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"transaction\"]($2, $3); })"
-        js_transaction ::
-        IDBDatabase ->
-          StringOrStrings -> Optional IDBTransactionMode -> IO IDBTransaction
+        js_transaction :: IDBDatabase -> StringOrSequenceString -> JSVal -> IO IDBTransaction
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/transaction MDN IDBDatabase.transaction documentation>
+transaction :: (MonadDOM m, IsStringOrSequenceString storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m IDBTransaction
+transaction self storeNames mode = liftDOM (((P.maybe (P.return jsUndefined) toJSVal mode) >>= \a3' -> js_transaction (self) (Types.toStringOrSequenceString storeNames) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
-transaction ::
-            (MonadIO m, IsStringOrStrings storeNames) =>
-              IDBDatabase ->
-                storeNames -> Maybe IDBTransactionMode -> m IDBTransaction
-transaction self storeNames mode
-  = liftIO
-      (toJSVal storeNames >>=
-         \ storeNames' -> js_transaction self (StringOrStrings storeNames')
-         (maybeToOptional mode))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/transaction MDN IDBDatabase.transaction documentation>
+transaction_ :: (MonadDOM m, IsStringOrSequenceString storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m ()
+transaction_ self storeNames mode = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal mode) >>= \a3' -> js_transaction (self) (Types.toStringOrSequenceString storeNames) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
-transaction_ ::
-             (MonadIO m, IsStringOrStrings storeNames) =>
-               IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m ()
-transaction_ self storeNames mode
-  = liftIO
-      (void
-         (toJSVal storeNames >>=
-            \ storeNames' -> js_transaction self (StringOrStrings storeNames')
-            (maybeToOptional mode)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        IDBDatabase -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"transaction\"]($2, $3, $4); })"
+        js_transaction' :: IDBDatabase -> StringOrSequenceString -> JSVal -> JSVal -> IO IDBTransaction
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/transaction MDN IDBDatabase.transaction documentation>
+transaction' :: (MonadDOM m, IsStringOrSequenceString storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> Maybe IDBTransactionOptions -> m IDBTransaction
+transaction' self storeNames mode options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal mode) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_transaction' (self) (Types.toStringOrSequenceString storeNames) a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.close Mozilla IDBDatabase.close documentation> 
-close :: (MonadIO m) => IDBDatabase -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        IDBDatabase -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/transaction MDN IDBDatabase.transaction documentation>
+transaction'_ :: (MonadDOM m, IsStringOrSequenceString storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> Maybe IDBTransactionOptions -> m ()
+transaction'_ self storeNames mode options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal mode) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_transaction' (self) (Types.toStringOrSequenceString storeNames) a3' a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.name Mozilla IDBDatabase.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => IDBDatabase -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })" js_getVersion ::
-        IDBDatabase -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: IDBDatabase -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/name MDN IDBDatabase.name documentation>
+getName :: (MonadDOM m, FromJSString result) => IDBDatabase -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.version Mozilla IDBDatabase.version documentation> 
-getVersion :: (MonadIO m) => IDBDatabase -> m Word64
-getVersion self = liftIO (round <$> (js_getVersion self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })"
+        js_getVersion :: IDBDatabase -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/version MDN IDBDatabase.version documentation>
+getVersion :: (MonadDOM m) => IDBDatabase -> m Word53
+getVersion self = liftDOM (((js_getVersion (self)) >>= fromJSValUnchecked))
+
 foreign import javascript unsafe "(($1) => { return $1[\"objectStoreNames\"]; })"
         js_getObjectStoreNames :: IDBDatabase -> IO DOMStringList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.objectStoreNames Mozilla IDBDatabase.objectStoreNames documentation> 
-getObjectStoreNames ::
-                    (MonadIO m) => IDBDatabase -> m DOMStringList
-getObjectStoreNames self = liftIO (js_getObjectStoreNames self)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/objectStoreNames MDN IDBDatabase.objectStoreNames documentation>
+getObjectStoreNames :: (MonadDOM m) => IDBDatabase -> m DOMStringList
+getObjectStoreNames self = liftDOM ((js_getObjectStoreNames (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onabort Mozilla IDBDatabase.onabort documentation> 
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabase-onabort abort event>
 abort :: EventName IDBDatabase Event
 abort = unsafeEventName (toJSString "abort")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onclose Mozilla IDBDatabase.onclose documentation> 
-closeEvent :: EventName IDBDatabase CloseEvent
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabase-onclose close event>
+closeEvent :: EventName IDBDatabase Event
 closeEvent = unsafeEventNameAsync (toJSString "close")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onerror Mozilla IDBDatabase.onerror documentation> 
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabase-onerror error event>
 error :: EventName IDBDatabase Event
 error = unsafeEventName (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onversionchange Mozilla IDBDatabase.onversionchange documentation> 
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabase-onversionchange versionchange event>
 versionChange :: EventName IDBDatabase IDBVersionChangeEvent
 versionChange = unsafeEventName (toJSString "versionchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBDatabaseInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabaseInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabaseInfo.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IDBDatabaseInfo
+       (js_newIDBDatabaseInfo, js_setName, js_getName, js_setVersion, js_getVersion, newIDBDatabaseInfo, setName, getName, getNameUnsafe, getNameUnchecked, setVersion, getVersion, getVersionUnsafe, getVersionUnchecked, IDBDatabaseInfo(..), gTypeIDBDatabaseInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIDBDatabaseInfo :: IO IDBDatabaseInfo
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbdatabaseinfo IDBDatabaseInfo specification>
+newIDBDatabaseInfo :: (MonadDOM m) => m IDBDatabaseInfo
+newIDBDatabaseInfo = liftDOM ((js_newIDBDatabaseInfo))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: IDBDatabaseInfo -> JSString -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-name IDBDatabaseInfo.name specification>
+setName :: (MonadDOM m, ToJSString val) => IDBDatabaseInfo -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: IDBDatabaseInfo -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-name IDBDatabaseInfo.name specification>
+getName :: (MonadDOM m, FromJSString result) => IDBDatabaseInfo -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName (self))))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-name IDBDatabaseInfo.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IDBDatabaseInfo -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-name IDBDatabaseInfo.name specification>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => IDBDatabaseInfo -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"version\"] = $2; })"
+        js_setVersion :: IDBDatabaseInfo -> JSVal -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-version IDBDatabaseInfo.version specification>
+setVersion :: (MonadDOM m) => IDBDatabaseInfo -> Word53 -> m ()
+setVersion self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setVersion (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })"
+        js_getVersion :: IDBDatabaseInfo -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-version IDBDatabaseInfo.version specification>
+getVersion :: (MonadDOM m) => IDBDatabaseInfo -> m (Maybe Word53)
+getVersion self = liftDOM (((js_getVersion (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-version IDBDatabaseInfo.version specification>
+getVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBDatabaseInfo -> m Word53
+getVersionUnsafe self = liftDOM ((((js_getVersion (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-version IDBDatabaseInfo.version specification>
+getVersionUnchecked :: (MonadDOM m) => IDBDatabaseInfo -> m Word53
+getVersionUnchecked self = liftDOM ((pFromJSVal <$> (js_getVersion (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
@@ -1,90 +1,57 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBFactory
-       (js_open, open, open_, js_deleteDatabase, deleteDatabase,
-        deleteDatabase_, js_cmp, cmp, cmp_, IDBFactory(..),
-        gTypeIDBFactory)
+       (js_cmp, js_databases, js_deleteDatabase, js_open, cmp, cmp_, databases, databases_, deleteDatabase, deleteDatabase_, open, open_, IDBFactory(..), gTypeIDBFactory)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"open\"]($2, $3); })" js_open ::
-        IDBFactory -> JSString -> Optional Double -> IO IDBOpenDBRequest
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
-open ::
-     (MonadIO m, ToJSString name) =>
-       IDBFactory -> name -> Maybe Word64 -> m IDBOpenDBRequest
-open self name version
-  = liftIO
-      (js_open self (toJSString name)
-         (maybeToOptional (fmap fromIntegral version)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"cmp\"]($2, $3); })"
+        js_cmp :: IDBFactory -> JSVal -> JSVal -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/cmp MDN IDBFactory.cmp documentation>
+cmp :: (MonadDOM m) => IDBFactory -> JSVal -> JSVal -> m Int
+cmp self first second = liftDOM ((js_cmp (self) (first) (second)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
-open_ ::
-      (MonadIO m, ToJSString name) =>
-        IDBFactory -> name -> Maybe Word64 -> m ()
-open_ self name version
-  = liftIO
-      (void
-         (js_open self (toJSString name)
-            (maybeToOptional (fmap fromIntegral version))))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/cmp MDN IDBFactory.cmp documentation>
+cmp_ :: (MonadDOM m) => IDBFactory -> JSVal -> JSVal -> m ()
+cmp_ self first second = liftDOM (void ((js_cmp (self) (first) (second))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"databases\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_databases :: IDBFactory -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/databases MDN IDBFactory.databases documentation>
+databases :: (MonadDOM m) => IDBFactory -> m [IDBDatabaseInfo]
+databases self = liftDOM ((((js_databases (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/databases MDN IDBFactory.databases documentation>
+databases_ :: (MonadDOM m) => IDBFactory -> m ()
+databases_ self = liftDOM (void (((js_databases (self)) >>= checkPromiseResult)))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"deleteDatabase\"]($2); })"
         js_deleteDatabase :: IDBFactory -> JSString -> IO IDBOpenDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
-deleteDatabase ::
-               (MonadIO m, ToJSString name) =>
-                 IDBFactory -> name -> m IDBOpenDBRequest
-deleteDatabase self name
-  = liftIO (js_deleteDatabase self (toJSString name))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/deleteDatabase MDN IDBFactory.deleteDatabase documentation>
+deleteDatabase :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> m IDBOpenDBRequest
+deleteDatabase self name = liftDOM ((js_deleteDatabase (self) (toJSString name)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
-deleteDatabase_ ::
-                (MonadIO m, ToJSString name) => IDBFactory -> name -> m ()
-deleteDatabase_ self name
-  = liftIO (void (js_deleteDatabase self (toJSString name)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"cmp\"]($2, $3); })" js_cmp ::
-        IDBFactory -> JSVal -> JSVal -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/deleteDatabase MDN IDBFactory.deleteDatabase documentation>
+deleteDatabase_ :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> m ()
+deleteDatabase_ self name = liftDOM (void ((js_deleteDatabase (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
-cmp ::
-    (MonadIO m, ToJSVal first, ToJSVal second) =>
-      IDBFactory -> first -> second -> m Int
-cmp self first second
-  = liftIO
-      (toJSVal second >>=
-         \ second' ->
-           toJSVal first >>= \ first' -> js_cmp self first' second')
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"open\"]($2, $3); })"
+        js_open :: IDBFactory -> JSString -> JSVal -> IO IDBOpenDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/open MDN IDBFactory.open documentation>
+open :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> Maybe Word53 -> m IDBOpenDBRequest
+open self name version = liftDOM (((P.maybe (P.return jsUndefined) toJSVal version) >>= \a3' -> js_open (self) (toJSString name) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
-cmp_ ::
-     (MonadIO m, ToJSVal first, ToJSVal second) =>
-       IDBFactory -> first -> second -> m ()
-cmp_ self first second
-  = liftIO
-      (void
-         (toJSVal second >>=
-            \ second' ->
-              toJSVal first >>= \ first' -> js_cmp self first' second'))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/open MDN IDBFactory.open documentation>
+open_ :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> Maybe Word53 -> m ()
+open_ self name version = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal version) >>= \a3' -> js_open (self) (toJSString name) a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBGetAllOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBGetAllOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBGetAllOptions.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IDBGetAllOptions
+       (js_newIDBGetAllOptions, js_setQuery, js_getQuery, js_setCount, js_getCount, js_setDirection, js_getDirection, newIDBGetAllOptions, setQuery, getQuery, setCount, getCount, getCountUnsafe, getCountUnchecked, setDirection, getDirection, getDirectionUnsafe, getDirectionUnchecked, IDBGetAllOptions(..), gTypeIDBGetAllOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIDBGetAllOptions :: IO IDBGetAllOptions
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbgetalloptions IDBGetAllOptions specification>
+newIDBGetAllOptions :: (MonadDOM m) => m IDBGetAllOptions
+newIDBGetAllOptions = liftDOM ((js_newIDBGetAllOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"query\"] = $2; })"
+        js_setQuery :: IDBGetAllOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-query IDBGetAllOptions.query specification>
+setQuery :: (MonadDOM m) => IDBGetAllOptions -> JSVal -> m ()
+setQuery self val = liftDOM (void ((js_setQuery (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"query\"]; })"
+        js_getQuery :: IDBGetAllOptions -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-query IDBGetAllOptions.query specification>
+getQuery :: (MonadDOM m) => IDBGetAllOptions -> m JSVal
+getQuery self = liftDOM ((js_getQuery (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"count\"] = $2; })"
+        js_setCount :: IDBGetAllOptions -> Word -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-count IDBGetAllOptions.count specification>
+setCount :: (MonadDOM m) => IDBGetAllOptions -> Word -> m ()
+setCount self val = liftDOM (void ((js_setCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"count\"]; })"
+        js_getCount :: IDBGetAllOptions -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-count IDBGetAllOptions.count specification>
+getCount :: (MonadDOM m) => IDBGetAllOptions -> m (Maybe Word)
+getCount self = liftDOM (((js_getCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-count IDBGetAllOptions.count specification>
+getCountUnsafe :: (MonadDOM m, HasCallStack) => IDBGetAllOptions -> m Word
+getCountUnsafe self = liftDOM ((((js_getCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-count IDBGetAllOptions.count specification>
+getCountUnchecked :: (MonadDOM m) => IDBGetAllOptions -> m Word
+getCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: IDBGetAllOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-direction IDBGetAllOptions.direction specification>
+setDirection :: (MonadDOM m) => IDBGetAllOptions -> IDBCursorDirection -> m ()
+setDirection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDirection (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: IDBGetAllOptions -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-direction IDBGetAllOptions.direction specification>
+getDirection :: (MonadDOM m) => IDBGetAllOptions -> m (Maybe IDBCursorDirection)
+getDirection self = liftDOM (((js_getDirection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-direction IDBGetAllOptions.direction specification>
+getDirectionUnsafe :: (MonadDOM m, HasCallStack) => IDBGetAllOptions -> m IDBCursorDirection
+getDirectionUnsafe self = liftDOM ((((js_getDirection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-direction IDBGetAllOptions.direction specification>
+getDirectionUnchecked :: (MonadDOM m) => IDBGetAllOptions -> m IDBCursorDirection
+getDirectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDirection (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
@@ -1,361 +1,133 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBIndex
-       (js_openCursorRange, openCursorRange, openCursorRange_,
-        js_openCursor, openCursor, openCursor_, js_openKeyCursorRange,
-        openKeyCursorRange, openKeyCursorRange_, js_openKeyCursor,
-        openKeyCursor, openKeyCursor_, js_getRange, getRange, getRange_,
-        js_get, get, get_, js_getKeyRange, getKeyRange, getKeyRange_,
-        js_getKey, getKey, getKey_, js_getAllRange, getAllRange,
-        getAllRange_, js_getAll, getAll, getAll_, js_getAllKeysRange,
-        getAllKeysRange, getAllKeysRange_, js_getAllKeys, getAllKeys,
-        getAllKeys_, js_countRange, countRange, countRange_, js_count,
-        count, count_, js_setName, setName, js_getName, getName,
-        js_getObjectStore, getObjectStore, js_getKeyPath, getKeyPath,
-        getKeyPathUnsafe, getKeyPathUnchecked, js_getMultiEntry,
-        getMultiEntry, js_getUnique, getUnique, IDBIndex(..),
-        gTypeIDBIndex)
+       (js_count, js_get, js_getAll, js_getAllKeys, js_getAllRecords, js_getKey, js_openCursor, js_openKeyCursor, js_setName, js_getName, js_getObjectStore, js_getKeyPath, js_getMultiEntry, js_getUnique, count, count_, get, get_, getAll, getAll_, getAllKeys, getAllKeys_, getAllRecords, getAllRecords_, getKey, getKey_, openCursor, openCursor_, openKeyCursor, openKeyCursor_, setName, getName, getObjectStore, getKeyPath, getMultiEntry, getUnique, IDBIndex(..), gTypeIDBIndex)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
-        js_openCursorRange ::
-        IDBIndex ->
-          Optional IDBKeyRange ->
-            Optional IDBCursorDirection -> IO IDBRequest
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursorRange ::
-                (MonadIO m) =>
-                  IDBIndex ->
-                    Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openCursorRange self range direction
-  = liftIO
-      (js_openCursorRange self (maybeToOptional range)
-         (maybeToOptional direction))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursorRange_ ::
-                 (MonadIO m) =>
-                   IDBIndex -> Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openCursorRange_ self range direction
-  = liftIO
-      (void
-         (js_openCursorRange self (maybeToOptional range)
-            (maybeToOptional direction)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
-        js_openCursor ::
-        IDBIndex -> JSVal -> Optional IDBCursorDirection -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursor ::
-           (MonadIO m, ToJSVal key) =>
-             IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openCursor self key direction
-  = liftIO
-      (toJSVal key >>= \ key' -> js_openCursor self key'
-         (maybeToOptional direction))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursor_ ::
-            (MonadIO m, ToJSVal key) =>
-              IDBIndex -> key -> Maybe IDBCursorDirection -> m ()
-openCursor_ self key direction
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_openCursor self key'
-            (maybeToOptional direction)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
-        js_openKeyCursorRange ::
-        IDBIndex ->
-          Optional IDBKeyRange ->
-            Optional IDBCursorDirection -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursorRange ::
-                   (MonadIO m) =>
-                     IDBIndex ->
-                       Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursorRange self range direction
-  = liftIO
-      (js_openKeyCursorRange self (maybeToOptional range)
-         (maybeToOptional direction))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursorRange_ ::
-                    (MonadIO m) =>
-                      IDBIndex -> Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openKeyCursorRange_ self range direction
-  = liftIO
-      (void
-         (js_openKeyCursorRange self (maybeToOptional range)
-            (maybeToOptional direction)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
-        js_openKeyCursor ::
-        IDBIndex -> JSVal -> Optional IDBCursorDirection -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursor ::
-              (MonadIO m, ToJSVal key) =>
-                IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursor self key direction
-  = liftIO
-      (toJSVal key >>= \ key' -> js_openKeyCursor self key'
-         (maybeToOptional direction))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursor_ ::
-               (MonadIO m, ToJSVal key) =>
-                 IDBIndex -> key -> Maybe IDBCursorDirection -> m ()
-openKeyCursor_ self key direction
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_openKeyCursor self key'
-            (maybeToOptional direction)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_getRange ::
-        IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-getRange ::
-         (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
-getRange self key = liftIO (js_getRange self (maybeToOptional key))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-getRange_ :: (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m ()
-getRange_ self key
-  = liftIO (void (js_getRange self (maybeToOptional key)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
-        IDBIndex -> JSVal -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-get :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
-get self key = liftIO (toJSVal key >>= \ key' -> js_get self key')
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-get_ :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m ()
-get_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_get self key'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKeyRange
-        :: IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })"
+        js_count :: IDBIndex -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/count MDN IDBIndex.count documentation>
+count :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
+count self query = liftDOM ((js_count (self) (query)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKeyRange ::
-            (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
-getKeyRange self key
-  = liftIO (js_getKeyRange self (maybeToOptional key))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/count MDN IDBIndex.count documentation>
+count_ :: (MonadDOM m) => IDBIndex -> JSVal -> m ()
+count_ self query = liftDOM (void ((js_count (self) (query))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKeyRange_ ::
-             (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m ()
-getKeyRange_ self key
-  = liftIO (void (js_getKeyRange self (maybeToOptional key)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKey ::
-        IDBIndex -> JSVal -> IO IDBRequest
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: IDBIndex -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/get MDN IDBIndex.get documentation>
+get :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
+get self query = liftDOM ((js_get (self) (query)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKey ::
-       (MonadIO m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
-getKey self key
-  = liftIO (toJSVal key >>= \ key' -> js_getKey self key')
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/get MDN IDBIndex.get documentation>
+get_ :: (MonadDOM m) => IDBIndex -> JSVal -> m ()
+get_ self query = liftDOM (void ((js_get (self) (query))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKey_ :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m ()
-getKey_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_getKey self key'))
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })"
-        js_getAllRange ::
-        IDBIndex -> Optional IDBKeyRange -> Optional Word -> IO IDBRequest
+        js_getAll :: IDBIndex -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getAll MDN IDBIndex.getAll documentation>
+getAll :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe Word -> m IDBRequest
+getAll self queryOrOptions count = liftDOM (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAll (self) (queryOrOptions) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAllRange ::
-            (MonadIO m) =>
-              IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllRange self range count
-  = liftIO
-      (js_getAllRange self (maybeToOptional range)
-         (maybeToOptional count))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getAll MDN IDBIndex.getAll documentation>
+getAll_ :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe Word -> m ()
+getAll_ self queryOrOptions count = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAll (self) (queryOrOptions) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAllRange_ ::
-             (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllRange_ self range count
-  = liftIO
-      (void
-         (js_getAllRange self (maybeToOptional range)
-            (maybeToOptional count)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })" js_getAll
-        :: IDBIndex -> JSVal -> Optional Word -> IO IDBRequest
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
+        js_getAllKeys :: IDBIndex -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getAllKeys MDN IDBIndex.getAllKeys documentation>
+getAllKeys :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe Word -> m IDBRequest
+getAllKeys self queryOrOptions count = liftDOM (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAllKeys (self) (queryOrOptions) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAll ::
-       (MonadIO m, ToJSVal key) =>
-         IDBIndex -> key -> Maybe Word -> m IDBRequest
-getAll self key count
-  = liftIO
-      (toJSVal key >>= \ key' -> js_getAll self key'
-         (maybeToOptional count))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getAllKeys MDN IDBIndex.getAllKeys documentation>
+getAllKeys_ :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe Word -> m ()
+getAllKeys_ self queryOrOptions count = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAllKeys (self) (queryOrOptions) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAll_ ::
-        (MonadIO m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()
-getAll_ self key count
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_getAll self key'
-            (maybeToOptional count)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
-        js_getAllKeysRange ::
-        IDBIndex -> Optional IDBKeyRange -> Optional Word -> IO IDBRequest
+foreign import javascript safe "(($1, $2) => { return $1[\"getAllRecords\"]($2); })"
+        js_getAllRecords :: IDBIndex -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getAllRecords MDN IDBIndex.getAllRecords documentation>
+getAllRecords :: (MonadDOM m) => IDBIndex -> Maybe IDBGetAllOptions -> m IDBRequest
+getAllRecords self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAllRecords (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeysRange ::
-                (MonadIO m) =>
-                  IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllKeysRange self range count
-  = liftIO
-      (js_getAllKeysRange self (maybeToOptional range)
-         (maybeToOptional count))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getAllRecords MDN IDBIndex.getAllRecords documentation>
+getAllRecords_ :: (MonadDOM m) => IDBIndex -> Maybe IDBGetAllOptions -> m ()
+getAllRecords_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAllRecords (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeysRange_ ::
-                 (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllKeysRange_ self range count
-  = liftIO
-      (void
-         (js_getAllKeysRange self (maybeToOptional range)
-            (maybeToOptional count)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
-        js_getAllKeys ::
-        IDBIndex -> JSVal -> Optional Word -> IO IDBRequest
+foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })"
+        js_getKey :: IDBIndex -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getKey MDN IDBIndex.getKey documentation>
+getKey :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
+getKey self query = liftDOM ((js_getKey (self) (query)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeys ::
-           (MonadIO m, ToJSVal key) =>
-             IDBIndex -> key -> Maybe Word -> m IDBRequest
-getAllKeys self key count
-  = liftIO
-      (toJSVal key >>= \ key' -> js_getAllKeys self key'
-         (maybeToOptional count))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getKey MDN IDBIndex.getKey documentation>
+getKey_ :: (MonadDOM m) => IDBIndex -> JSVal -> m ()
+getKey_ self query = liftDOM (void ((js_getKey (self) (query))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeys_ ::
-            (MonadIO m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()
-getAllKeys_ self key count
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_getAllKeys self key'
-            (maybeToOptional count)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_countRange ::
-        IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
+        js_openCursor :: IDBIndex -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/openCursor MDN IDBIndex.openCursor documentation>
+openCursor :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest
+openCursor self query direction = liftDOM (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openCursor (self) (query) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-countRange ::
-           (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
-countRange self range
-  = liftIO (js_countRange self (maybeToOptional range))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/openCursor MDN IDBIndex.openCursor documentation>
+openCursor_ :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m ()
+openCursor_ self query direction = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openCursor (self) (query) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-countRange_ :: (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m ()
-countRange_ self range
-  = liftIO (void (js_countRange self (maybeToOptional range)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_count ::
-        IDBIndex -> JSVal -> IO IDBRequest
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
+        js_openKeyCursor :: IDBIndex -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/openKeyCursor MDN IDBIndex.openKeyCursor documentation>
+openKeyCursor :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest
+openKeyCursor self query direction = liftDOM (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openKeyCursor (self) (query) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-count ::
-      (MonadIO m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
-count self key
-  = liftIO (toJSVal key >>= \ key' -> js_count self key')
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/openKeyCursor MDN IDBIndex.openKeyCursor documentation>
+openKeyCursor_ :: (MonadDOM m) => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m ()
+openKeyCursor_ self query direction = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openKeyCursor (self) (query) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-count_ :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m ()
-count_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_count self key'))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        IDBIndex -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: IDBIndex -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/name MDN IDBIndex.name documentation>
+setName :: (MonadDOM m, ToJSString val) => IDBIndex -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
-setName :: (MonadIO m, ToJSString val) => IDBIndex -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        IDBIndex -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: IDBIndex -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/name MDN IDBIndex.name documentation>
+getName :: (MonadDOM m, FromJSString result) => IDBIndex -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
-getName :: (MonadIO m, FromJSString result) => IDBIndex -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"objectStore\"]; })"
         js_getObjectStore :: IDBIndex -> IO IDBObjectStore
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.objectStore Mozilla IDBIndex.objectStore documentation> 
-getObjectStore :: (MonadIO m) => IDBIndex -> m IDBObjectStore
-getObjectStore self = liftIO (js_getObjectStore self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keyPath\"]; })" js_getKeyPath ::
-        IDBIndex -> IO (Nullable IDBKeyPath)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
-getKeyPath :: (MonadIO m) => IDBIndex -> m (Maybe IDBKeyPath)
-getKeyPath self = liftIO (nullableToMaybe <$> (js_getKeyPath self))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/objectStore MDN IDBIndex.objectStore documentation>
+getObjectStore :: (MonadDOM m) => IDBIndex -> m IDBObjectStore
+getObjectStore self = liftDOM ((js_getObjectStore (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
-getKeyPathUnsafe ::
-                 (MonadIO m, HasCallStack) => IDBIndex -> m IDBKeyPath
-getKeyPathUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getKeyPath self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"keyPath\"]; })"
+        js_getKeyPath :: IDBIndex -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/keyPath MDN IDBIndex.keyPath documentation>
+getKeyPath :: (MonadDOM m) => IDBIndex -> m JSVal
+getKeyPath self = liftDOM ((js_getKeyPath (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
-getKeyPathUnchecked :: (MonadIO m) => IDBIndex -> m IDBKeyPath
-getKeyPathUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getKeyPath self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"multiEntry\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"multiEntry\"]; })"
         js_getMultiEntry :: IDBIndex -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/multiEntry MDN IDBIndex.multiEntry documentation>
+getMultiEntry :: (MonadDOM m) => IDBIndex -> m Bool
+getMultiEntry self = liftDOM ((js_getMultiEntry (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.multiEntry Mozilla IDBIndex.multiEntry documentation> 
-getMultiEntry :: (MonadIO m) => IDBIndex -> m Bool
-getMultiEntry self = liftIO (js_getMultiEntry self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"unique\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"unique\"]; })"
         js_getUnique :: IDBIndex -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.unique Mozilla IDBIndex.unique documentation> 
-getUnique :: (MonadIO m) => IDBIndex -> m Bool
-getUnique self = liftIO (js_getUnique self)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/unique MDN IDBIndex.unique documentation>
+getUnique :: (MonadDOM m) => IDBIndex -> m Bool
+getUnique self = liftDOM ((js_getUnique (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBIndexParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBIndexParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBIndexParameters.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IDBIndexParameters
+       (js_newIDBIndexParameters, js_setUnique, js_getUnique, js_setMultiEntry, js_getMultiEntry, newIDBIndexParameters, setUnique, getUnique, getUniqueUnsafe, getUniqueUnchecked, setMultiEntry, getMultiEntry, getMultiEntryUnsafe, getMultiEntryUnchecked, IDBIndexParameters(..), gTypeIDBIndexParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIDBIndexParameters :: IO IDBIndexParameters
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbindexparameters IDBIndexParameters specification>
+newIDBIndexParameters :: (MonadDOM m) => m IDBIndexParameters
+newIDBIndexParameters = liftDOM ((js_newIDBIndexParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unique\"] = $2; })"
+        js_setUnique :: IDBIndexParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-unique IDBIndexParameters.unique specification>
+setUnique :: (MonadDOM m) => IDBIndexParameters -> Bool -> m ()
+setUnique self val = liftDOM (void ((js_setUnique (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unique\"]; })"
+        js_getUnique :: IDBIndexParameters -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-unique IDBIndexParameters.unique specification>
+getUnique :: (MonadDOM m) => IDBIndexParameters -> m (Maybe Bool)
+getUnique self = liftDOM (((js_getUnique (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-unique IDBIndexParameters.unique specification>
+getUniqueUnsafe :: (MonadDOM m, HasCallStack) => IDBIndexParameters -> m Bool
+getUniqueUnsafe self = liftDOM ((((js_getUnique (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-unique IDBIndexParameters.unique specification>
+getUniqueUnchecked :: (MonadDOM m) => IDBIndexParameters -> m Bool
+getUniqueUnchecked self = liftDOM ((pFromJSVal <$> (js_getUnique (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"multiEntry\"] = $2; })"
+        js_setMultiEntry :: IDBIndexParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-multientry IDBIndexParameters.multiEntry specification>
+setMultiEntry :: (MonadDOM m) => IDBIndexParameters -> Bool -> m ()
+setMultiEntry self val = liftDOM (void ((js_setMultiEntry (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"multiEntry\"]; })"
+        js_getMultiEntry :: IDBIndexParameters -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-multientry IDBIndexParameters.multiEntry specification>
+getMultiEntry :: (MonadDOM m) => IDBIndexParameters -> m (Maybe Bool)
+getMultiEntry self = liftDOM (((js_getMultiEntry (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-multientry IDBIndexParameters.multiEntry specification>
+getMultiEntryUnsafe :: (MonadDOM m, HasCallStack) => IDBIndexParameters -> m Bool
+getMultiEntryUnsafe self = liftDOM ((((js_getMultiEntry (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-multientry IDBIndexParameters.multiEntry specification>
+getMultiEntryUnchecked :: (MonadDOM m) => IDBIndexParameters -> m Bool
+getMultiEntryUnchecked self = liftDOM ((pFromJSVal <$> (js_getMultiEntry (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
@@ -1,144 +1,91 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBKeyRange
-       (js_only, only, only_, js_lowerBound, lowerBound, lowerBound_,
-        js_upperBound, upperBound, upperBound_, js_bound, bound, bound_,
-        js_includes, includes, includes_, js_getLower, getLower,
-        js_getUpper, getUpper, js_getLowerOpen, getLowerOpen,
-        js_getUpperOpen, getUpperOpen, IDBKeyRange(..), gTypeIDBKeyRange)
+       (js_includes, js_bound, js_lowerBound, js_only, js_upperBound, js_getLower, js_getUpper, js_getLowerOpen, js_getUpperOpen, includes, includes_, bound, bound_, lowerBound, lowerBound_, only, only_, upperBound, upperBound_, getLower, getUpper, getLowerOpen, getUpperOpen, IDBKeyRange(..), gTypeIDBKeyRange)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1) => { return window[\"IDBKeyRange\"][\"only\"]($1); })" js_only ::
-        JSVal -> IO IDBKeyRange
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only :: (MonadIO m, ToJSVal value) => value -> m IDBKeyRange
-only value = liftIO (toJSVal value >>= \ value' -> js_only value')
+foreign import javascript safe "(($1, $2) => { return $1[\"includes\"]($2); })"
+        js_includes :: IDBKeyRange -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/includes MDN IDBKeyRange.includes documentation>
+includes :: (MonadDOM m) => IDBKeyRange -> JSVal -> m Bool
+includes self key = liftDOM ((js_includes (self) (key)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only_ :: (MonadIO m, ToJSVal value) => value -> m ()
-only_ value
-  = liftIO (void (toJSVal value >>= \ value' -> js_only value'))
- 
-foreign import javascript safe
-        "(($1, $2) => { return window[\"IDBKeyRange\"][\"lowerBound\"]($1,\n$2); })" js_lowerBound ::
-        JSVal -> Bool -> IO IDBKeyRange
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/includes MDN IDBKeyRange.includes documentation>
+includes_ :: (MonadDOM m) => IDBKeyRange -> JSVal -> m ()
+includes_ self key = liftDOM (void ((js_includes (self) (key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
-lowerBound ::
-           (MonadIO m, ToJSVal lower) => lower -> Bool -> m IDBKeyRange
-lowerBound lower open
-  = liftIO (toJSVal lower >>= \ lower' -> js_lowerBound lower' open)
+foreign import javascript safe "(($1, $2, $3, $4) => { return globalThis[\"IDBKeyRange\"][\"bound\"]($1, $2, $3, $4); })"
+        js_bound :: JSVal -> JSVal -> JSVal -> JSVal -> IO IDBKeyRange
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/bound_static MDN IDBKeyRange.bound documentation>
+bound :: (MonadDOM m) => JSVal -> JSVal -> Maybe Bool -> Maybe Bool -> m IDBKeyRange
+bound lower upper lowerOpen upperOpen = liftDOM (((P.maybe (P.return jsUndefined) toJSVal lowerOpen) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal upperOpen) >>= \a4' -> js_bound (lower) (upper) a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
-lowerBound_ :: (MonadIO m, ToJSVal lower) => lower -> Bool -> m ()
-lowerBound_ lower open
-  = liftIO
-      (void (toJSVal lower >>= \ lower' -> js_lowerBound lower' open))
- 
-foreign import javascript safe
-        "(($1, $2) => { return window[\"IDBKeyRange\"][\"upperBound\"]($1,\n$2); })" js_upperBound ::
-        JSVal -> Bool -> IO IDBKeyRange
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/bound_static MDN IDBKeyRange.bound documentation>
+bound_ :: (MonadDOM m) => JSVal -> JSVal -> Maybe Bool -> Maybe Bool -> m ()
+bound_ lower upper lowerOpen upperOpen = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal lowerOpen) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal upperOpen) >>= \a4' -> js_bound (lower) (upper) a3' a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
-upperBound ::
-           (MonadIO m, ToJSVal upper) => upper -> Bool -> m IDBKeyRange
-upperBound upper open
-  = liftIO (toJSVal upper >>= \ upper' -> js_upperBound upper' open)
+foreign import javascript safe "(($1, $2) => { return globalThis[\"IDBKeyRange\"][\"lowerBound\"]($1, $2); })"
+        js_lowerBound :: JSVal -> JSVal -> IO IDBKeyRange
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/lowerBound_static MDN IDBKeyRange.lowerBound documentation>
+lowerBound :: (MonadDOM m) => JSVal -> Maybe Bool -> m IDBKeyRange
+lowerBound lower open = liftDOM (((P.maybe (P.return jsUndefined) toJSVal open) >>= \a2' -> js_lowerBound (lower) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
-upperBound_ :: (MonadIO m, ToJSVal upper) => upper -> Bool -> m ()
-upperBound_ upper open
-  = liftIO
-      (void (toJSVal upper >>= \ upper' -> js_upperBound upper' open))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4) => { return window[\"IDBKeyRange\"][\"bound\"]($1,\n$2, $3, $4); })" js_bound ::
-        JSVal -> JSVal -> Bool -> Bool -> IO IDBKeyRange
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/lowerBound_static MDN IDBKeyRange.lowerBound documentation>
+lowerBound_ :: (MonadDOM m) => JSVal -> Maybe Bool -> m ()
+lowerBound_ lower open = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal open) >>= \a2' -> js_lowerBound (lower) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
-bound ::
-      (MonadIO m, ToJSVal lower, ToJSVal upper) =>
-        lower -> upper -> Bool -> Bool -> m IDBKeyRange
-bound lower upper lowerOpen upperOpen
-  = liftIO
-      (toJSVal upper >>=
-         \ upper' -> toJSVal lower >>= \ lower' -> js_bound lower' upper'
-         lowerOpen
-         upperOpen)
+foreign import javascript safe "(($1) => { return globalThis[\"IDBKeyRange\"][\"only\"]($1); })"
+        js_only :: JSVal -> IO IDBKeyRange
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/only_static MDN IDBKeyRange.only documentation>
+only :: (MonadDOM m) => JSVal -> m IDBKeyRange
+only value = liftDOM ((js_only (value)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
-bound_ ::
-       (MonadIO m, ToJSVal lower, ToJSVal upper) =>
-         lower -> upper -> Bool -> Bool -> m ()
-bound_ lower upper lowerOpen upperOpen
-  = liftIO
-      (void
-         (toJSVal upper >>=
-            \ upper' -> toJSVal lower >>= \ lower' -> js_bound lower' upper'
-            lowerOpen
-            upperOpen))
- 
-foreign import javascript safe "(($1, $2) => { return ($1[\"includes\"]($2) ? 1 : 0); })"
-        js_includes :: IDBKeyRange -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/only_static MDN IDBKeyRange.only documentation>
+only_ :: (MonadDOM m) => JSVal -> m ()
+only_ value = liftDOM (void ((js_only (value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.includes Mozilla IDBKeyRange.includes documentation> 
-includes ::
-         (MonadIO m, ToJSVal key) => IDBKeyRange -> key -> m Bool
-includes self key
-  = liftIO (toJSVal key >>= \ key' -> js_includes self key')
+foreign import javascript safe "(($1, $2) => { return globalThis[\"IDBKeyRange\"][\"upperBound\"]($1, $2); })"
+        js_upperBound :: JSVal -> JSVal -> IO IDBKeyRange
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/upperBound_static MDN IDBKeyRange.upperBound documentation>
+upperBound :: (MonadDOM m) => JSVal -> Maybe Bool -> m IDBKeyRange
+upperBound upper open = liftDOM (((P.maybe (P.return jsUndefined) toJSVal open) >>= \a2' -> js_upperBound (upper) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.includes Mozilla IDBKeyRange.includes documentation> 
-includes_ :: (MonadIO m, ToJSVal key) => IDBKeyRange -> key -> m ()
-includes_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_includes self key'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lower\"]; })" js_getLower ::
-        IDBKeyRange -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/upperBound_static MDN IDBKeyRange.upperBound documentation>
+upperBound_ :: (MonadDOM m) => JSVal -> Maybe Bool -> m ()
+upperBound_ upper open = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal open) >>= \a2' -> js_upperBound (upper) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lower Mozilla IDBKeyRange.lower documentation> 
-getLower :: (MonadIO m) => IDBKeyRange -> m JSVal
-getLower self = liftIO (js_getLower self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"upper\"]; })" js_getUpper ::
-        IDBKeyRange -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"lower\"]; })"
+        js_getLower :: IDBKeyRange -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/lower MDN IDBKeyRange.lower documentation>
+getLower :: (MonadDOM m) => IDBKeyRange -> m JSVal
+getLower self = liftDOM ((js_getLower (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upper Mozilla IDBKeyRange.upper documentation> 
-getUpper :: (MonadIO m) => IDBKeyRange -> m JSVal
-getUpper self = liftIO (js_getUpper self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"lowerOpen\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"upper\"]; })"
+        js_getUpper :: IDBKeyRange -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/upper MDN IDBKeyRange.upper documentation>
+getUpper :: (MonadDOM m) => IDBKeyRange -> m JSVal
+getUpper self = liftDOM ((js_getUpper (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lowerOpen\"]; })"
         js_getLowerOpen :: IDBKeyRange -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/lowerOpen MDN IDBKeyRange.lowerOpen documentation>
+getLowerOpen :: (MonadDOM m) => IDBKeyRange -> m Bool
+getLowerOpen self = liftDOM ((js_getLowerOpen (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerOpen Mozilla IDBKeyRange.lowerOpen documentation> 
-getLowerOpen :: (MonadIO m) => IDBKeyRange -> m Bool
-getLowerOpen self = liftIO (js_getLowerOpen self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"upperOpen\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"upperOpen\"]; })"
         js_getUpperOpen :: IDBKeyRange -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperOpen Mozilla IDBKeyRange.upperOpen documentation> 
-getUpperOpen :: (MonadIO m) => IDBKeyRange -> m Bool
-getUpperOpen self = liftIO (js_getUpperOpen self)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/upperOpen MDN IDBKeyRange.upperOpen documentation>
+getUpperOpen :: (MonadDOM m) => IDBKeyRange -> m Bool
+getUpperOpen self = liftDOM ((js_getUpperOpen (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
@@ -1,529 +1,199 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBObjectStore
-       (js_put, put, put_, js_add, add, add_, js_deleteRange, deleteRange,
-        deleteRange_, js_delete, delete, delete_, js_getRange, getRange,
-        getRange_, js_get, get, get_, js_getKeyRange, getKeyRange,
-        getKeyRange_, js_getKey, getKey, getKey_, js_clear, clear, clear_,
-        js_openCursorRange, openCursorRange, openCursorRange_,
-        js_openCursor, openCursor, openCursor_, js_openKeyCursorRange,
-        openKeyCursorRange, openKeyCursorRange_, js_openKeyCursor,
-        openKeyCursor, openKeyCursor_, js_getAllRange, getAllRange,
-        getAllRange_, js_getAll, getAll, getAll_, js_getAllKeysRange,
-        getAllKeysRange, getAllKeysRange_, js_getAllKeys, getAllKeys,
-        getAllKeys_, js_createIndex, createIndex, createIndex_, js_index,
-        index, index_, js_deleteIndex, deleteIndex, js_countRange,
-        countRange, countRange_, js_count, count, count_, js_setName,
-        setName, js_getName, getName, js_getKeyPath, getKeyPath,
-        getKeyPathUnsafe, getKeyPathUnchecked, js_getIndexNames,
-        getIndexNames, js_getTransaction, getTransaction,
-        js_getAutoIncrement, getAutoIncrement, IDBObjectStore(..),
-        gTypeIDBObjectStore)
+       (js_add, js_clear, js_count, js_createIndex, js_delete, js_deleteIndex, js_get, js_getAll, js_getAllKeys, js_getAllRecords, js_getKey, js_index, js_openCursor, js_openKeyCursor, js_put, js_setName, js_getName, js_getKeyPath, js_getIndexNames, js_getTransaction, js_getAutoIncrement, add, add_, clear, clear_, count, count_, createIndex, createIndex_, delete, delete_, deleteIndex, get, get_, getAll, getAll_, getAllKeys, getAllKeys_, getAllRecords, getAllRecords_, getKey, getKey_, index, index_, openCursor, openCursor_, openKeyCursor, openKeyCursor_, put, put_, setName, getName, getKeyPath, getIndexNames, getTransaction, getAutoIncrement, IDBObjectStore(..), gTypeIDBObjectStore)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"put\"]($2, $3); })" js_put ::
-        IDBObjectStore -> JSVal -> Optional JSVal -> IO IDBRequest
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
-put ::
-    (MonadIO m, ToJSVal value, ToJSVal key) =>
-      IDBObjectStore -> value -> Maybe key -> m IDBRequest
-put self value key
-  = liftIO
-      (mapM toJSVal key >>=
-         \ key' ->
-           toJSVal value >>= \ value' -> js_put self value'
-             (maybeToOptional key'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
-put_ ::
-     (MonadIO m, ToJSVal value, ToJSVal key) =>
-       IDBObjectStore -> value -> Maybe key -> m ()
-put_ self value key
-  = liftIO
-      (void
-         (mapM toJSVal key >>=
-            \ key' ->
-              toJSVal value >>= \ value' -> js_put self value'
-                (maybeToOptional key')))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_add ::
-        IDBObjectStore -> JSVal -> Optional JSVal -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
-add ::
-    (MonadIO m, ToJSVal value, ToJSVal key) =>
-      IDBObjectStore -> value -> Maybe key -> m IDBRequest
-add self value key
-  = liftIO
-      (mapM toJSVal key >>=
-         \ key' ->
-           toJSVal value >>= \ value' -> js_add self value'
-             (maybeToOptional key'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
-add_ ::
-     (MonadIO m, ToJSVal value, ToJSVal key) =>
-       IDBObjectStore -> value -> Maybe key -> m ()
-add_ self value key
-  = liftIO
-      (void
-         (mapM toJSVal key >>=
-            \ key' ->
-              toJSVal value >>= \ value' -> js_add self value'
-                (maybeToOptional key')))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })" js_deleteRange
-        :: IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-deleteRange ::
-            (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-deleteRange self keyRange
-  = liftIO (js_deleteRange self (maybeToOptional keyRange))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-deleteRange_ ::
-             (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-deleteRange_ self keyRange
-  = liftIO (void (js_deleteRange self (maybeToOptional keyRange)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })" js_delete ::
-        IDBObjectStore -> JSVal -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-delete ::
-       (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-delete self key
-  = liftIO (toJSVal key >>= \ key' -> js_delete self key')
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-delete_ ::
-        (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
-delete_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_delete self key'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_getRange ::
-        IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-getRange ::
-         (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-getRange self key = liftIO (js_getRange self (maybeToOptional key))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-getRange_ ::
-          (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-getRange_ self key
-  = liftIO (void (js_getRange self (maybeToOptional key)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
-        IDBObjectStore -> JSVal -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-get ::
-    (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-get self key = liftIO (toJSVal key >>= \ key' -> js_get self key')
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-get_ :: (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
-get_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_get self key'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKeyRange
-        :: IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKeyRange ::
-            (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-getKeyRange self key
-  = liftIO (js_getKeyRange self (maybeToOptional key))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })"
+        js_add :: IDBObjectStore -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/add MDN IDBObjectStore.add documentation>
+add :: (MonadDOM m) => IDBObjectStore -> JSVal -> JSVal -> m IDBRequest
+add self value key = liftDOM ((js_add (self) (value) (key)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKeyRange_ ::
-             (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-getKeyRange_ self key
-  = liftIO (void (js_getKeyRange self (maybeToOptional key)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKey ::
-        IDBObjectStore -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/add MDN IDBObjectStore.add documentation>
+add_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> JSVal -> m ()
+add_ self value key = liftDOM (void ((js_add (self) (value) (key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKey ::
-       (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-getKey self key
-  = liftIO (toJSVal key >>= \ key' -> js_getKey self key')
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: IDBObjectStore -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/clear MDN IDBObjectStore.clear documentation>
+clear :: (MonadDOM m) => IDBObjectStore -> m IDBRequest
+clear self = liftDOM ((js_clear (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKey_ ::
-        (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
-getKey_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_getKey self key'))
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        IDBObjectStore -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/clear MDN IDBObjectStore.clear documentation>
+clear_ :: (MonadDOM m) => IDBObjectStore -> m ()
+clear_ self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
-clear :: (MonadIO m) => IDBObjectStore -> m IDBRequest
-clear self = liftIO (js_clear self)
+foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })"
+        js_count :: IDBObjectStore -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/count MDN IDBObjectStore.count documentation>
+count :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+count self query = liftDOM ((js_count (self) (query)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
-clear_ :: (MonadIO m) => IDBObjectStore -> m ()
-clear_ self = liftIO (void (js_clear self))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
-        js_openCursorRange ::
-        IDBObjectStore ->
-          Optional IDBKeyRange ->
-            Optional IDBCursorDirection -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/count MDN IDBObjectStore.count documentation>
+count_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+count_ self query = liftDOM (void ((js_count (self) (query))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursorRange ::
-                (MonadIO m) =>
-                  IDBObjectStore ->
-                    Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openCursorRange self range direction
-  = liftIO
-      (js_openCursorRange self (maybeToOptional range)
-         (maybeToOptional direction))
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createIndex\"]($2, $3, $4); })"
+        js_createIndex :: IDBObjectStore -> JSString -> StringOrSequenceString -> JSVal -> IO IDBIndex
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/createIndex MDN IDBObjectStore.createIndex documentation>
+createIndex :: (MonadDOM m, ToJSString name, IsStringOrSequenceString keyPath) => IDBObjectStore -> name -> keyPath -> Maybe IDBIndexParameters -> m IDBIndex
+createIndex self name keyPath options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_createIndex (self) (toJSString name) (Types.toStringOrSequenceString keyPath) a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursorRange_ ::
-                 (MonadIO m) =>
-                   IDBObjectStore ->
-                     Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openCursorRange_ self range direction
-  = liftIO
-      (void
-         (js_openCursorRange self (maybeToOptional range)
-            (maybeToOptional direction)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
-        js_openCursor ::
-        IDBObjectStore ->
-          JSVal -> Optional IDBCursorDirection -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/createIndex MDN IDBObjectStore.createIndex documentation>
+createIndex_ :: (MonadDOM m, ToJSString name, IsStringOrSequenceString keyPath) => IDBObjectStore -> name -> keyPath -> Maybe IDBIndexParameters -> m ()
+createIndex_ self name keyPath options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_createIndex (self) (toJSString name) (Types.toStringOrSequenceString keyPath) a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursor ::
-           (MonadIO m, ToJSVal key) =>
-             IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openCursor self key direction
-  = liftIO
-      (toJSVal key >>= \ key' -> js_openCursor self key'
-         (maybeToOptional direction))
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })"
+        js_delete :: IDBObjectStore -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/delete MDN IDBObjectStore.delete documentation>
+delete :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+delete self query = liftDOM ((js_delete (self) (query)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursor_ ::
-            (MonadIO m, ToJSVal key) =>
-              IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()
-openCursor_ self key direction
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_openCursor self key'
-            (maybeToOptional direction)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
-        js_openKeyCursorRange ::
-        IDBObjectStore ->
-          Optional IDBKeyRange ->
-            Optional IDBCursorDirection -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/delete MDN IDBObjectStore.delete documentation>
+delete_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+delete_ self query = liftDOM (void ((js_delete (self) (query))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursorRange ::
-                   (MonadIO m) =>
-                     IDBObjectStore ->
-                       Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursorRange self range direction
-  = liftIO
-      (js_openKeyCursorRange self (maybeToOptional range)
-         (maybeToOptional direction))
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteIndex\"]($2); })"
+        js_deleteIndex :: IDBObjectStore -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/deleteIndex MDN IDBObjectStore.deleteIndex documentation>
+deleteIndex :: (MonadDOM m, ToJSString name) => IDBObjectStore -> name -> m ()
+deleteIndex self name = liftDOM (void ((js_deleteIndex (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursorRange_ ::
-                    (MonadIO m) =>
-                      IDBObjectStore ->
-                        Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openKeyCursorRange_ self range direction
-  = liftIO
-      (void
-         (js_openKeyCursorRange self (maybeToOptional range)
-            (maybeToOptional direction)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
-        js_openKeyCursor ::
-        IDBObjectStore ->
-          JSVal -> Optional IDBCursorDirection -> IO IDBRequest
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: IDBObjectStore -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/get MDN IDBObjectStore.get documentation>
+get :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+get self query = liftDOM ((js_get (self) (query)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursor ::
-              (MonadIO m, ToJSVal key) =>
-                IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursor self key direction
-  = liftIO
-      (toJSVal key >>= \ key' -> js_openKeyCursor self key'
-         (maybeToOptional direction))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/get MDN IDBObjectStore.get documentation>
+get_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+get_ self query = liftDOM (void ((js_get (self) (query))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursor_ ::
-               (MonadIO m, ToJSVal key) =>
-                 IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()
-openKeyCursor_ self key direction
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_openKeyCursor self key'
-            (maybeToOptional direction)))
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })"
-        js_getAllRange ::
-        IDBObjectStore ->
-          Optional IDBKeyRange -> Optional Word -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAllRange ::
-            (MonadIO m) =>
-              IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllRange self range count
-  = liftIO
-      (js_getAllRange self (maybeToOptional range)
-         (maybeToOptional count))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAllRange_ ::
-             (MonadIO m) =>
-               IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllRange_ self range count
-  = liftIO
-      (void
-         (js_getAllRange self (maybeToOptional range)
-            (maybeToOptional count)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })" js_getAll
-        :: IDBObjectStore -> JSVal -> Optional Word -> IO IDBRequest
+        js_getAll :: IDBObjectStore -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getAll MDN IDBObjectStore.getAll documentation>
+getAll :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe Word -> m IDBRequest
+getAll self queryOrOptions count = liftDOM (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAll (self) (queryOrOptions) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAll ::
-       (MonadIO m, ToJSVal key) =>
-         IDBObjectStore -> key -> Maybe Word -> m IDBRequest
-getAll self key count
-  = liftIO
-      (toJSVal key >>= \ key' -> js_getAll self key'
-         (maybeToOptional count))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getAll MDN IDBObjectStore.getAll documentation>
+getAll_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe Word -> m ()
+getAll_ self queryOrOptions count = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAll (self) (queryOrOptions) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAll_ ::
-        (MonadIO m, ToJSVal key) =>
-          IDBObjectStore -> key -> Maybe Word -> m ()
-getAll_ self key count
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_getAll self key'
-            (maybeToOptional count)))
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
-        js_getAllKeysRange ::
-        IDBObjectStore ->
-          Optional IDBKeyRange -> Optional Word -> IO IDBRequest
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeysRange ::
-                (MonadIO m) =>
-                  IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllKeysRange self range count
-  = liftIO
-      (js_getAllKeysRange self (maybeToOptional range)
-         (maybeToOptional count))
+        js_getAllKeys :: IDBObjectStore -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getAllKeys MDN IDBObjectStore.getAllKeys documentation>
+getAllKeys :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe Word -> m IDBRequest
+getAllKeys self queryOrOptions count = liftDOM (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAllKeys (self) (queryOrOptions) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeysRange_ ::
-                 (MonadIO m) =>
-                   IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllKeysRange_ self range count
-  = liftIO
-      (void
-         (js_getAllKeysRange self (maybeToOptional range)
-            (maybeToOptional count)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
-        js_getAllKeys ::
-        IDBObjectStore -> JSVal -> Optional Word -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getAllKeys MDN IDBObjectStore.getAllKeys documentation>
+getAllKeys_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe Word -> m ()
+getAllKeys_ self queryOrOptions count = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal count) >>= \a3' -> js_getAllKeys (self) (queryOrOptions) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeys ::
-           (MonadIO m, ToJSVal key) =>
-             IDBObjectStore -> key -> Maybe Word -> m IDBRequest
-getAllKeys self key count
-  = liftIO
-      (toJSVal key >>= \ key' -> js_getAllKeys self key'
-         (maybeToOptional count))
+foreign import javascript safe "(($1, $2) => { return $1[\"getAllRecords\"]($2); })"
+        js_getAllRecords :: IDBObjectStore -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getAllRecords MDN IDBObjectStore.getAllRecords documentation>
+getAllRecords :: (MonadDOM m) => IDBObjectStore -> Maybe IDBGetAllOptions -> m IDBRequest
+getAllRecords self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAllRecords (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeys_ ::
-            (MonadIO m, ToJSVal key) =>
-              IDBObjectStore -> key -> Maybe Word -> m ()
-getAllKeys_ self key count
-  = liftIO
-      (void
-         (toJSVal key >>= \ key' -> js_getAllKeys self key'
-            (maybeToOptional count)))
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createIndex\"]($2, $3, $4); })"
-        js_createIndex ::
-        IDBObjectStore ->
-          JSString ->
-            StringOrStrings -> Optional IDBIndexParameters -> IO IDBIndex
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getAllRecords MDN IDBObjectStore.getAllRecords documentation>
+getAllRecords_ :: (MonadDOM m) => IDBObjectStore -> Maybe IDBGetAllOptions -> m ()
+getAllRecords_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getAllRecords (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
-createIndex ::
-            (MonadIO m, ToJSString name, IsStringOrStrings keyPath) =>
-              IDBObjectStore ->
-                name -> keyPath -> Maybe IDBIndexParameters -> m IDBIndex
-createIndex self name keyPath options
-  = liftIO
-      (toJSVal keyPath >>=
-         \ keyPath' ->
-           js_createIndex self (toJSString name) (StringOrStrings keyPath')
-         (maybeToOptional options))
+foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })"
+        js_getKey :: IDBObjectStore -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getKey MDN IDBObjectStore.getKey documentation>
+getKey :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+getKey self query = liftDOM ((js_getKey (self) (query)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
-createIndex_ ::
-             (MonadIO m, ToJSString name, IsStringOrStrings keyPath) =>
-               IDBObjectStore ->
-                 name -> keyPath -> Maybe IDBIndexParameters -> m ()
-createIndex_ self name keyPath options
-  = liftIO
-      (void
-         (toJSVal keyPath >>=
-            \ keyPath' ->
-              js_createIndex self (toJSString name) (StringOrStrings keyPath')
-            (maybeToOptional options)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"index\"]($2); })" js_index ::
-        IDBObjectStore -> JSString -> IO IDBIndex
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getKey MDN IDBObjectStore.getKey documentation>
+getKey_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+getKey_ self query = liftDOM (void ((js_getKey (self) (query))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
-index ::
-      (MonadIO m, ToJSString name) =>
-        IDBObjectStore -> name -> m IDBIndex
-index self name = liftIO (js_index self (toJSString name))
+foreign import javascript safe "(($1, $2) => { return $1[\"index\"]($2); })"
+        js_index :: IDBObjectStore -> JSString -> IO IDBIndex
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/index MDN IDBObjectStore.index documentation>
+index :: (MonadDOM m, ToJSString name) => IDBObjectStore -> name -> m IDBIndex
+index self name = liftDOM ((js_index (self) (toJSString name)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
-index_ ::
-       (MonadIO m, ToJSString name) => IDBObjectStore -> name -> m ()
-index_ self name = liftIO (void (js_index self (toJSString name)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"deleteIndex\"]($2); })"
-        js_deleteIndex :: IDBObjectStore -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/index MDN IDBObjectStore.index documentation>
+index_ :: (MonadDOM m, ToJSString name) => IDBObjectStore -> name -> m ()
+index_ self name = liftDOM (void ((js_index (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.deleteIndex Mozilla IDBObjectStore.deleteIndex documentation> 
-deleteIndex ::
-            (MonadIO m, ToJSString name) => IDBObjectStore -> name -> m ()
-deleteIndex self name
-  = liftIO (js_deleteIndex self (toJSString name))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_countRange ::
-        IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
+        js_openCursor :: IDBObjectStore -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/openCursor MDN IDBObjectStore.openCursor documentation>
+openCursor :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest
+openCursor self query direction = liftDOM (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openCursor (self) (query) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-countRange ::
-           (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-countRange self range
-  = liftIO (js_countRange self (maybeToOptional range))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/openCursor MDN IDBObjectStore.openCursor documentation>
+openCursor_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m ()
+openCursor_ self query direction = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openCursor (self) (query) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-countRange_ ::
-            (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-countRange_ self range
-  = liftIO (void (js_countRange self (maybeToOptional range)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_count ::
-        IDBObjectStore -> JSVal -> IO IDBRequest
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
+        js_openKeyCursor :: IDBObjectStore -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/openKeyCursor MDN IDBObjectStore.openKeyCursor documentation>
+openKeyCursor :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest
+openKeyCursor self query direction = liftDOM (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openKeyCursor (self) (query) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-count ::
-      (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-count self key
-  = liftIO (toJSVal key >>= \ key' -> js_count self key')
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/openKeyCursor MDN IDBObjectStore.openKeyCursor documentation>
+openKeyCursor_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m ()
+openKeyCursor_ self query direction = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal direction) >>= \a3' -> js_openKeyCursor (self) (query) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-count_ :: (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
-count_ self key
-  = liftIO (void (toJSVal key >>= \ key' -> js_count self key'))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        IDBObjectStore -> JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"put\"]($2, $3); })"
+        js_put :: IDBObjectStore -> JSVal -> JSVal -> IO IDBRequest
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/put MDN IDBObjectStore.put documentation>
+put :: (MonadDOM m) => IDBObjectStore -> JSVal -> JSVal -> m IDBRequest
+put self value key = liftDOM ((js_put (self) (value) (key)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
-setName ::
-        (MonadIO m, ToJSString val) => IDBObjectStore -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        IDBObjectStore -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/put MDN IDBObjectStore.put documentation>
+put_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> JSVal -> m ()
+put_ self value key = liftDOM (void ((js_put (self) (value) (key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => IDBObjectStore -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keyPath\"]; })" js_getKeyPath ::
-        IDBObjectStore -> IO (Nullable IDBKeyPath)
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: IDBObjectStore -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/name MDN IDBObjectStore.name documentation>
+setName :: (MonadDOM m, ToJSString val) => IDBObjectStore -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
-getKeyPath :: (MonadIO m) => IDBObjectStore -> m (Maybe IDBKeyPath)
-getKeyPath self = liftIO (nullableToMaybe <$> (js_getKeyPath self))
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: IDBObjectStore -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/name MDN IDBObjectStore.name documentation>
+getName :: (MonadDOM m, FromJSString result) => IDBObjectStore -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
-getKeyPathUnsafe ::
-                 (MonadIO m, HasCallStack) => IDBObjectStore -> m IDBKeyPath
-getKeyPathUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getKeyPath self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"keyPath\"]; })"
+        js_getKeyPath :: IDBObjectStore -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/keyPath MDN IDBObjectStore.keyPath documentation>
+getKeyPath :: (MonadDOM m) => IDBObjectStore -> m JSVal
+getKeyPath self = liftDOM ((js_getKeyPath (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
-getKeyPathUnchecked ::
-                    (MonadIO m) => IDBObjectStore -> m IDBKeyPath
-getKeyPathUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getKeyPath self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"indexNames\"]; })"
         js_getIndexNames :: IDBObjectStore -> IO DOMStringList
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/indexNames MDN IDBObjectStore.indexNames documentation>
+getIndexNames :: (MonadDOM m) => IDBObjectStore -> m DOMStringList
+getIndexNames self = liftDOM ((js_getIndexNames (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.indexNames Mozilla IDBObjectStore.indexNames documentation> 
-getIndexNames :: (MonadIO m) => IDBObjectStore -> m DOMStringList
-getIndexNames self = liftIO (js_getIndexNames self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"transaction\"]; })"
         js_getTransaction :: IDBObjectStore -> IO IDBTransaction
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/transaction MDN IDBObjectStore.transaction documentation>
+getTransaction :: (MonadDOM m) => IDBObjectStore -> m IDBTransaction
+getTransaction self = liftDOM ((js_getTransaction (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.transaction Mozilla IDBObjectStore.transaction documentation> 
-getTransaction :: (MonadIO m) => IDBObjectStore -> m IDBTransaction
-getTransaction self = liftIO (js_getTransaction self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"autoIncrement\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"autoIncrement\"]; })"
         js_getAutoIncrement :: IDBObjectStore -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.autoIncrement Mozilla IDBObjectStore.autoIncrement documentation> 
-getAutoIncrement :: (MonadIO m) => IDBObjectStore -> m Bool
-getAutoIncrement self = liftIO (js_getAutoIncrement self)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/autoIncrement MDN IDBObjectStore.autoIncrement documentation>
+getAutoIncrement :: (MonadDOM m) => IDBObjectStore -> m Bool
+getAutoIncrement self = liftDOM ((js_getAutoIncrement (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStoreParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStoreParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStoreParameters.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IDBObjectStoreParameters
+       (js_newIDBObjectStoreParameters, js_setKeyPath, js_getKeyPath, js_setAutoIncrement, js_getAutoIncrement, newIDBObjectStoreParameters, setKeyPath, getKeyPath, getKeyPathUnsafe, getKeyPathUnchecked, setAutoIncrement, getAutoIncrement, getAutoIncrementUnsafe, getAutoIncrementUnchecked, IDBObjectStoreParameters(..), gTypeIDBObjectStoreParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIDBObjectStoreParameters :: IO IDBObjectStoreParameters
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbobjectstoreparameters IDBObjectStoreParameters specification>
+newIDBObjectStoreParameters :: (MonadDOM m) => m IDBObjectStoreParameters
+newIDBObjectStoreParameters = liftDOM ((js_newIDBObjectStoreParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keyPath\"] = $2; })"
+        js_setKeyPath :: IDBObjectStoreParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-keypath IDBObjectStoreParameters.keyPath specification>
+setKeyPath :: (MonadDOM m, IsStringOrSequenceString val) => IDBObjectStoreParameters -> Maybe val -> m ()
+setKeyPath self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setKeyPath (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keyPath\"]; })"
+        js_getKeyPath :: IDBObjectStoreParameters -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-keypath IDBObjectStoreParameters.keyPath specification>
+getKeyPath :: (MonadDOM m) => IDBObjectStoreParameters -> m (Maybe StringOrSequenceString)
+getKeyPath self = liftDOM (((js_getKeyPath (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-keypath IDBObjectStoreParameters.keyPath specification>
+getKeyPathUnsafe :: (MonadDOM m, HasCallStack) => IDBObjectStoreParameters -> m StringOrSequenceString
+getKeyPathUnsafe self = liftDOM ((((js_getKeyPath (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-keypath IDBObjectStoreParameters.keyPath specification>
+getKeyPathUnchecked :: (MonadDOM m) => IDBObjectStoreParameters -> m StringOrSequenceString
+getKeyPathUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeyPath (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autoIncrement\"] = $2; })"
+        js_setAutoIncrement :: IDBObjectStoreParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-autoincrement IDBObjectStoreParameters.autoIncrement specification>
+setAutoIncrement :: (MonadDOM m) => IDBObjectStoreParameters -> Bool -> m ()
+setAutoIncrement self val = liftDOM (void ((js_setAutoIncrement (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autoIncrement\"]; })"
+        js_getAutoIncrement :: IDBObjectStoreParameters -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-autoincrement IDBObjectStoreParameters.autoIncrement specification>
+getAutoIncrement :: (MonadDOM m) => IDBObjectStoreParameters -> m (Maybe Bool)
+getAutoIncrement self = liftDOM (((js_getAutoIncrement (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-autoincrement IDBObjectStoreParameters.autoIncrement specification>
+getAutoIncrementUnsafe :: (MonadDOM m, HasCallStack) => IDBObjectStoreParameters -> m Bool
+getAutoIncrementUnsafe self = liftDOM ((((js_getAutoIncrement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-autoincrement IDBObjectStoreParameters.autoIncrement specification>
+getAutoIncrementUnchecked :: (MonadDOM m) => IDBObjectStoreParameters -> m Bool
+getAutoIncrementUnchecked self = liftDOM ((pFromJSVal <$> (js_getAutoIncrement (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
@@ -1,35 +1,25 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
-       (blocked, upgradeNeeded, IDBOpenDBRequest(..),
-        gTypeIDBOpenDBRequest)
+       (blocked, upgradeNeeded, IDBOpenDBRequest(..), gTypeIDBOpenDBRequest)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onblocked Mozilla IDBOpenDBRequest.onblocked documentation> 
+-- | <https://w3c.github.io/IndexedDB/#dom-idbopendbrequest-onblocked blocked event>
 blocked :: EventName IDBOpenDBRequest IDBVersionChangeEvent
 blocked = unsafeEventName (toJSString "blocked")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onupgradeneeded Mozilla IDBOpenDBRequest.onupgradeneeded documentation> 
+-- | <https://w3c.github.io/IndexedDB/#dom-idbopendbrequest-onupgradeneeded upgradeneeded event>
 upgradeNeeded :: EventName IDBOpenDBRequest IDBVersionChangeEvent
 upgradeNeeded = unsafeEventName (toJSString "upgradeneeded")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBRecord.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBRecord.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBRecord.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IDBRecord
+       (js_getKey, js_getPrimaryKey, js_getValue, getKey, getPrimaryKey, getValue, IDBRecord(..), gTypeIDBRecord)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: IDBRecord -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrecord-key IDBRecord.key specification>
+getKey :: (MonadDOM m) => IDBRecord -> m JSVal
+getKey self = liftDOM ((js_getKey (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"primaryKey\"]; })"
+        js_getPrimaryKey :: IDBRecord -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrecord-primarykey IDBRecord.primaryKey specification>
+getPrimaryKey :: (MonadDOM m) => IDBRecord -> m JSVal
+getPrimaryKey self = liftDOM ((js_getPrimaryKey (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: IDBRecord -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrecord-value IDBRecord.value specification>
+getValue :: (MonadDOM m) => IDBRecord -> m JSVal
+getValue self = liftDOM ((js_getValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
@@ -1,136 +1,79 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBRequest
-       (js_getResult, getResult, getResultUnsafe, getResultUnchecked,
-        js_getError, getError, getErrorUnsafe, getErrorUnchecked,
-        js_getSource, getSource, getSourceUnsafe, getSourceUnchecked,
-        js_getTransaction, getTransaction, js_getReadyState, getReadyState,
-        success, error, IDBRequest(..), gTypeIDBRequest, IsIDBRequest,
-        toIDBRequest)
+       (js_getResult, js_getError, js_getSource, js_getTransaction, js_getReadyState, getResult, getError, getErrorUnsafe, getErrorUnchecked, getSource, getSourceUnsafe, getSourceUnchecked, getTransaction, getTransactionUnsafe, getTransactionUnchecked, getReadyState, success, error, IDBRequest(..), gTypeIDBRequest, IsIDBRequest, toIDBRequest)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"result\"]; })" js_getResult ::
-        IDBRequest -> IO (Nullable IDBRequestResult)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
-getResult ::
-          (MonadIO m, IsIDBRequest self) =>
-            self -> m (Maybe IDBRequestResult)
-getResult self
-  = liftIO (nullableToMaybe <$> (js_getResult (toIDBRequest self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
-getResultUnsafe ::
-                (MonadIO m, IsIDBRequest self, HasCallStack) =>
-                  self -> m IDBRequestResult
-getResultUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getResult (toIDBRequest self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"result\"]; })"
+        js_getResult :: IDBRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/result MDN IDBRequest.result documentation>
+getResult :: (MonadDOM m, IsIDBRequest self) => self -> m JSVal
+getResult self = liftDOM ((js_getResult ((Types.toIDBRequest self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
-getResultUnchecked ::
-                   (MonadIO m, IsIDBRequest self) => self -> m IDBRequestResult
-getResultUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getResult (toIDBRequest self)))
- 
-foreign import javascript safe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        IDBRequest -> IO (Nullable DOMError)
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: IDBRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/error MDN IDBRequest.error documentation>
+getError :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe DOMException)
+getError self = liftDOM (((js_getError ((Types.toIDBRequest self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
-getError ::
-         (MonadIO m, IsIDBRequest self) => self -> m (Maybe DOMError)
-getError self
-  = liftIO (nullableToMaybe <$> (js_getError (toIDBRequest self)))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/error MDN IDBRequest.error documentation>
+getErrorUnsafe :: (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m DOMException
+getErrorUnsafe self = liftDOM ((((js_getError ((Types.toIDBRequest self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
-getErrorUnsafe ::
-               (MonadIO m, IsIDBRequest self, HasCallStack) => self -> m DOMError
-getErrorUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getError (toIDBRequest self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/error MDN IDBRequest.error documentation>
+getErrorUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m DOMException
+getErrorUnchecked self = liftDOM ((pFromJSVal <$> (js_getError ((Types.toIDBRequest self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
-getErrorUnchecked ::
-                  (MonadIO m, IsIDBRequest self) => self -> m DOMError
-getErrorUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getError (toIDBRequest self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })" js_getSource ::
-        IDBRequest -> IO (Nullable IDBRequestSource)
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: IDBRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/source MDN IDBRequest.source documentation>
+getSource :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBObjectStoreOrIDBIndexOrIDBCursor)
+getSource self = liftDOM (((js_getSource ((Types.toIDBRequest self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
-getSource ::
-          (MonadIO m, IsIDBRequest self) =>
-            self -> m (Maybe IDBRequestSource)
-getSource self
-  = liftIO (nullableToMaybe <$> (js_getSource (toIDBRequest self)))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/source MDN IDBRequest.source documentation>
+getSourceUnsafe :: (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m IDBObjectStoreOrIDBIndexOrIDBCursor
+getSourceUnsafe self = liftDOM ((((js_getSource ((Types.toIDBRequest self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
-getSourceUnsafe ::
-                (MonadIO m, IsIDBRequest self, HasCallStack) =>
-                  self -> m IDBRequestSource
-getSourceUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSource (toIDBRequest self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/source MDN IDBRequest.source documentation>
+getSourceUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m IDBObjectStoreOrIDBIndexOrIDBCursor
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource ((Types.toIDBRequest self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
-getSourceUnchecked ::
-                   (MonadIO m, IsIDBRequest self) => self -> m IDBRequestSource
-getSourceUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getSource (toIDBRequest self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"transaction\"]; })"
-        js_getTransaction :: IDBRequest -> IO IDBTransaction
+        js_getTransaction :: IDBRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/transaction MDN IDBRequest.transaction documentation>
+getTransaction :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBTransaction)
+getTransaction self = liftDOM (((js_getTransaction ((Types.toIDBRequest self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.transaction Mozilla IDBRequest.transaction documentation> 
-getTransaction ::
-               (MonadIO m, IsIDBRequest self) => self -> m IDBTransaction
-getTransaction self
-  = liftIO (js_getTransaction (toIDBRequest self))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/transaction MDN IDBRequest.transaction documentation>
+getTransactionUnsafe :: (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m IDBTransaction
+getTransactionUnsafe self = liftDOM ((((js_getTransaction ((Types.toIDBRequest self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/transaction MDN IDBRequest.transaction documentation>
+getTransactionUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m IDBTransaction
+getTransactionUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransaction ((Types.toIDBRequest self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
         js_getReadyState :: IDBRequest -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.readyState Mozilla IDBRequest.readyState documentation> 
-getReadyState ::
-              (MonadIO m, IsIDBRequest self) => self -> m IDBRequestReadyState
-getReadyState self
-  = liftIO
-      ((js_getReadyState (toIDBRequest self)) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/readyState MDN IDBRequest.readyState documentation>
+getReadyState :: (MonadDOM m, IsIDBRequest self) => self -> m IDBRequestReadyState
+getReadyState self = liftDOM (((js_getReadyState ((Types.toIDBRequest self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.onsuccess Mozilla IDBRequest.onsuccess documentation> 
-success ::
-        (IsIDBRequest self, IsEventTarget self) => EventName self Event
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrequest-onsuccess success event>
+success :: (IsIDBRequest self, IsEventTarget self) => EventName self IDBVersionChangeEvent
 success = unsafeEventName (toJSString "success")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.onerror Mozilla IDBRequest.onerror documentation> 
-error ::
-      (IsIDBRequest self, IsEventTarget self) => EventName self Event
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrequest-onerror error event>
+error :: (IsIDBRequest self, IsEventTarget self) => EventName self Event
 error = unsafeEventName (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
@@ -1,93 +1,89 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBTransaction
-       (js_objectStore, objectStore, objectStore_, js_abort, abort,
-        js_getObjectStoreNames, getObjectStoreNames, js_getMode, getMode,
-        js_getDb, getDb, js_getError, getError, abortEvent, complete,
-        error, IDBTransaction(..), gTypeIDBTransaction)
+       (js_abort, js_commit, js_objectStore, js_getObjectStoreNames, js_getMode, js_getDurability, js_getDb, js_getError, abort, commit, objectStore, objectStore_, getObjectStoreNames, getMode, getDurability, getDb, getError, getErrorUnsafe, getErrorUnchecked, abortEvent, complete, error, IDBTransaction(..), gTypeIDBTransaction)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })"
+        js_abort :: IDBTransaction -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/abort MDN IDBTransaction.abort documentation>
+abort :: (MonadDOM m) => IDBTransaction -> m ()
+abort self = liftDOM (void ((js_abort (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"commit\"](); })"
+        js_commit :: IDBTransaction -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/commit MDN IDBTransaction.commit documentation>
+commit :: (MonadDOM m) => IDBTransaction -> m ()
+commit self = liftDOM (void ((js_commit (self))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"objectStore\"]($2); })"
         js_objectStore :: IDBTransaction -> JSString -> IO IDBObjectStore
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
-objectStore ::
-            (MonadIO m, ToJSString name) =>
-              IDBTransaction -> name -> m IDBObjectStore
-objectStore self name
-  = liftIO (js_objectStore self (toJSString name))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/objectStore MDN IDBTransaction.objectStore documentation>
+objectStore :: (MonadDOM m, ToJSString name) => IDBTransaction -> name -> m IDBObjectStore
+objectStore self name = liftDOM ((js_objectStore (self) (toJSString name)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
-objectStore_ ::
-             (MonadIO m, ToJSString name) => IDBTransaction -> name -> m ()
-objectStore_ self name
-  = liftIO (void (js_objectStore self (toJSString name)))
- 
-foreign import javascript safe "(($1) => { return $1[\"abort\"](); })" js_abort ::
-        IDBTransaction -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/objectStore MDN IDBTransaction.objectStore documentation>
+objectStore_ :: (MonadDOM m, ToJSString name) => IDBTransaction -> name -> m ()
+objectStore_ self name = liftDOM (void ((js_objectStore (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.abort Mozilla IDBTransaction.abort documentation> 
-abort :: (MonadIO m) => IDBTransaction -> m ()
-abort self = liftIO (js_abort self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"objectStoreNames\"]; })"
         js_getObjectStoreNames :: IDBTransaction -> IO DOMStringList
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/objectStoreNames MDN IDBTransaction.objectStoreNames documentation>
+getObjectStoreNames :: (MonadDOM m) => IDBTransaction -> m DOMStringList
+getObjectStoreNames self = liftDOM ((js_getObjectStoreNames (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStoreNames Mozilla IDBTransaction.objectStoreNames documentation> 
-getObjectStoreNames ::
-                    (MonadIO m) => IDBTransaction -> m DOMStringList
-getObjectStoreNames self = liftIO (js_getObjectStoreNames self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
-        IDBTransaction -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: IDBTransaction -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/mode MDN IDBTransaction.mode documentation>
+getMode :: (MonadDOM m) => IDBTransaction -> m IDBTransactionMode
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.mode Mozilla IDBTransaction.mode documentation> 
-getMode :: (MonadIO m) => IDBTransaction -> m IDBTransactionMode
-getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"db\"]; })" js_getDb ::
-        IDBTransaction -> IO IDBDatabase
+foreign import javascript unsafe "(($1) => { return $1[\"durability\"]; })"
+        js_getDurability :: IDBTransaction -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/durability MDN IDBTransaction.durability documentation>
+getDurability :: (MonadDOM m) => IDBTransaction -> m IDBTransactionDurability
+getDurability self = liftDOM (((js_getDurability (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.db Mozilla IDBTransaction.db documentation> 
-getDb :: (MonadIO m) => IDBTransaction -> m IDBDatabase
-getDb self = liftIO (js_getDb self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        IDBTransaction -> IO DOMError
+foreign import javascript unsafe "(($1) => { return $1[\"db\"]; })"
+        js_getDb :: IDBTransaction -> IO IDBDatabase
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/db MDN IDBTransaction.db documentation>
+getDb :: (MonadDOM m) => IDBTransaction -> m IDBDatabase
+getDb self = liftDOM ((js_getDb (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
-getError :: (MonadIO m) => IDBTransaction -> m DOMError
-getError self = liftIO (js_getError self)
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: IDBTransaction -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/error MDN IDBTransaction.error documentation>
+getError :: (MonadDOM m) => IDBTransaction -> m (Maybe DOMException)
+getError self = liftDOM (((js_getError (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.onabort Mozilla IDBTransaction.onabort documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/error MDN IDBTransaction.error documentation>
+getErrorUnsafe :: (MonadDOM m, HasCallStack) => IDBTransaction -> m DOMException
+getErrorUnsafe self = liftDOM ((((js_getError (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/error MDN IDBTransaction.error documentation>
+getErrorUnchecked :: (MonadDOM m) => IDBTransaction -> m DOMException
+getErrorUnchecked self = liftDOM ((pFromJSVal <$> (js_getError (self))))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransaction-onabort abort event>
 abortEvent :: EventName IDBTransaction Event
 abortEvent = unsafeEventName (toJSString "abort")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.oncomplete Mozilla IDBTransaction.oncomplete documentation> 
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransaction-oncomplete complete event>
 complete :: EventName IDBTransaction Event
 complete = unsafeEventName (toJSString "complete")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.onerror Mozilla IDBTransaction.onerror documentation> 
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransaction-onerror error event>
 error :: EventName IDBTransaction Event
 error = unsafeEventName (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBTransactionOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBTransactionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBTransactionOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IDBTransactionOptions
+       (js_newIDBTransactionOptions, js_setDurability, js_getDurability, newIDBTransactionOptions, setDurability, getDurability, getDurabilityUnsafe, getDurabilityUnchecked, IDBTransactionOptions(..), gTypeIDBTransactionOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIDBTransactionOptions :: IO IDBTransactionOptions
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbtransactionoptions IDBTransactionOptions specification>
+newIDBTransactionOptions :: (MonadDOM m) => m IDBTransactionOptions
+newIDBTransactionOptions = liftDOM ((js_newIDBTransactionOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"durability\"] = $2; })"
+        js_setDurability :: IDBTransactionOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransactionoptions-durability IDBTransactionOptions.durability specification>
+setDurability :: (MonadDOM m) => IDBTransactionOptions -> IDBTransactionDurability -> m ()
+setDurability self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDurability (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"durability\"]; })"
+        js_getDurability :: IDBTransactionOptions -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransactionoptions-durability IDBTransactionOptions.durability specification>
+getDurability :: (MonadDOM m) => IDBTransactionOptions -> m (Maybe IDBTransactionDurability)
+getDurability self = liftDOM (((js_getDurability (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransactionoptions-durability IDBTransactionOptions.durability specification>
+getDurabilityUnsafe :: (MonadDOM m, HasCallStack) => IDBTransactionOptions -> m IDBTransactionDurability
+getDurabilityUnsafe self = liftDOM ((((js_getDurability (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransactionoptions-durability IDBTransactionOptions.durability specification>
+getDurabilityUnchecked :: (MonadDOM m) => IDBTransactionOptions -> m IDBTransactionDurability
+getDurabilityUnchecked self = liftDOM ((pFromJSVal <$> (js_getDurability (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
@@ -1,75 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
-       (js_newIDBVersionChangeEvent, newIDBVersionChangeEvent,
-        js_getOldVersion, getOldVersion, js_getNewVersion, getNewVersion,
-        getNewVersionUnsafe, getNewVersionUnchecked,
-        IDBVersionChangeEvent(..), gTypeIDBVersionChangeEvent)
+       (js_newIDBVersionChangeEvent, js_getOldVersion, js_getNewVersion, newIDBVersionChangeEvent, getOldVersion, getNewVersion, getNewVersionUnsafe, getNewVersionUnchecked, IDBVersionChangeEvent(..), gTypeIDBVersionChangeEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"IDBVersionChangeEvent\"]($1,\n$2); })"
-        js_newIDBVersionChangeEvent ::
-        JSString ->
-          Optional IDBVersionChangeEventInit -> IO IDBVersionChangeEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation> 
-newIDBVersionChangeEvent ::
-                         (MonadIO m, ToJSString type') =>
-                           type' -> Maybe IDBVersionChangeEventInit -> m IDBVersionChangeEvent
-newIDBVersionChangeEvent type' eventInitDict
-  = liftIO
-      (js_newIDBVersionChangeEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"IDBVersionChangeEvent\"]($1, $2); })"
+        js_newIDBVersionChangeEvent :: JSString -> JSVal -> IO IDBVersionChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/IDBVersionChangeEvent MDN IDBVersionChangeEvent. documentation>
+newIDBVersionChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe IDBVersionChangeEventInit -> m IDBVersionChangeEvent
+newIDBVersionChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newIDBVersionChangeEvent (toJSString type') a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"oldVersion\"]; })"
-        js_getOldVersion :: IDBVersionChangeEvent -> IO Double
+        js_getOldVersion :: IDBVersionChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/oldVersion MDN IDBVersionChangeEvent.oldVersion documentation>
+getOldVersion :: (MonadDOM m) => IDBVersionChangeEvent -> m Word53
+getOldVersion self = liftDOM (((js_getOldVersion (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.oldVersion Mozilla IDBVersionChangeEvent.oldVersion documentation> 
-getOldVersion :: (MonadIO m) => IDBVersionChangeEvent -> m Word64
-getOldVersion self = liftIO (round <$> (js_getOldVersion self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"newVersion\"]; })"
-        js_getNewVersion :: IDBVersionChangeEvent -> IO (Nullable Double)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
-getNewVersion ::
-              (MonadIO m) => IDBVersionChangeEvent -> m (Maybe Word64)
-getNewVersion self
-  = liftIO (fmap round . nullableToMaybe <$> (js_getNewVersion self))
+        js_getNewVersion :: IDBVersionChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/newVersion MDN IDBVersionChangeEvent.newVersion documentation>
+getNewVersion :: (MonadDOM m) => IDBVersionChangeEvent -> m (Maybe Word53)
+getNewVersion self = liftDOM (((js_getNewVersion (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
-getNewVersionUnsafe ::
-                    (MonadIO m, HasCallStack) => IDBVersionChangeEvent -> m Word64
-getNewVersionUnsafe self
-  = liftIO
-      ((fmap round . nullableToMaybe <$> (js_getNewVersion self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/newVersion MDN IDBVersionChangeEvent.newVersion documentation>
+getNewVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBVersionChangeEvent -> m Word53
+getNewVersionUnsafe self = liftDOM ((((js_getNewVersion (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
-getNewVersionUnchecked ::
-                       (MonadIO m) => IDBVersionChangeEvent -> m Word64
-getNewVersionUnchecked self
-  = liftIO
-      (round . fromJust . nullableToMaybe <$> (js_getNewVersion self))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/newVersion MDN IDBVersionChangeEvent.newVersion documentation>
+getNewVersionUnchecked :: (MonadDOM m) => IDBVersionChangeEvent -> m Word53
+getNewVersionUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewVersion (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEventInit
+       (js_newIDBVersionChangeEventInit, js_setOldVersion, js_getOldVersion, js_setNewVersion, js_getNewVersion, newIDBVersionChangeEventInit, setOldVersion, getOldVersion, getOldVersionUnsafe, getOldVersionUnchecked, setNewVersion, getNewVersion, getNewVersionUnsafe, getNewVersionUnchecked, IDBVersionChangeEventInit(..), gTypeIDBVersionChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIDBVersionChangeEventInit :: IO IDBVersionChangeEventInit
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbversionchangeeventinit IDBVersionChangeEventInit specification>
+newIDBVersionChangeEventInit :: (MonadDOM m) => m IDBVersionChangeEventInit
+newIDBVersionChangeEventInit = liftDOM ((js_newIDBVersionChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oldVersion\"] = $2; })"
+        js_setOldVersion :: IDBVersionChangeEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-oldversion IDBVersionChangeEventInit.oldVersion specification>
+setOldVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> Word53 -> m ()
+setOldVersion self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOldVersion (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oldVersion\"]; })"
+        js_getOldVersion :: IDBVersionChangeEventInit -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-oldversion IDBVersionChangeEventInit.oldVersion specification>
+getOldVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> m (Maybe Word53)
+getOldVersion self = liftDOM (((js_getOldVersion (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-oldversion IDBVersionChangeEventInit.oldVersion specification>
+getOldVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBVersionChangeEventInit -> m Word53
+getOldVersionUnsafe self = liftDOM ((((js_getOldVersion (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-oldversion IDBVersionChangeEventInit.oldVersion specification>
+getOldVersionUnchecked :: (MonadDOM m) => IDBVersionChangeEventInit -> m Word53
+getOldVersionUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldVersion (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"newVersion\"] = $2; })"
+        js_setNewVersion :: IDBVersionChangeEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-newversion IDBVersionChangeEventInit.newVersion specification>
+setNewVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> Maybe Word53 -> m ()
+setNewVersion self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setNewVersion (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"newVersion\"]; })"
+        js_getNewVersion :: IDBVersionChangeEventInit -> IO JSVal
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-newversion IDBVersionChangeEventInit.newVersion specification>
+getNewVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> m (Maybe Word53)
+getNewVersion self = liftDOM (((js_getNewVersion (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-newversion IDBVersionChangeEventInit.newVersion specification>
+getNewVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBVersionChangeEventInit -> m Word53
+getNewVersionUnsafe self = liftDOM ((((js_getNewVersion (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-newversion IDBVersionChangeEventInit.newVersion specification>
+getNewVersionUnchecked :: (MonadDOM m) => IDBVersionChangeEventInit -> m Word53
+getNewVersionUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewVersion (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IIRFilterNode.hs b/src/GHCJS/DOM/JSFFI/Generated/IIRFilterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IIRFilterNode.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IIRFilterNode
+       (js_newIIRFilterNode, js_getFrequencyResponse, newIIRFilterNode, getFrequencyResponse, IIRFilterNode(..), gTypeIIRFilterNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"IIRFilterNode\"]($1, $2); })"
+        js_newIIRFilterNode :: BaseAudioContext -> IIRFilterOptions -> IO IIRFilterNode
+-- | <https://developer.mozilla.org/docs/Web/API/IIRFilterNode/IIRFilterNode MDN IIRFilterNode. documentation>
+newIIRFilterNode :: (MonadDOM m, IsBaseAudioContext context) => context -> IIRFilterOptions -> m IIRFilterNode
+newIIRFilterNode context options = liftDOM ((js_newIIRFilterNode (Types.toBaseAudioContext context) (options)))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getFrequencyResponse\"]($2, $3, $4); })"
+        js_getFrequencyResponse :: IIRFilterNode -> Float32Array -> Float32Array -> Float32Array -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IIRFilterNode/getFrequencyResponse MDN IIRFilterNode.getFrequencyResponse documentation>
+getFrequencyResponse :: (MonadDOM m, IsFloat32Array frequencyHz, IsFloat32Array magResponse, IsFloat32Array phaseResponse) => IIRFilterNode -> frequencyHz -> magResponse -> phaseResponse -> m ()
+getFrequencyResponse self frequencyHz magResponse phaseResponse = liftDOM (void ((js_getFrequencyResponse (self) (Types.toFloat32Array frequencyHz) (Types.toFloat32Array magResponse) (Types.toFloat32Array phaseResponse))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IIRFilterOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/IIRFilterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IIRFilterOptions.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IIRFilterOptions
+       (js_newIIRFilterOptions, js_setFeedforward, js_getFeedforward, js_setFeedback, js_getFeedback, newIIRFilterOptions, setFeedforward, getFeedforward, setFeedback, getFeedback, IIRFilterOptions(..), gTypeIIRFilterOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"feedforward\": $1, \"feedback\": $2}); })"
+        js_newIIRFilterOptions :: JSVal -> JSVal -> IO IIRFilterOptions
+-- | <https://webaudio.github.io/web-audio-api/#IIRFilterOptions IIRFilterOptions specification>
+newIIRFilterOptions :: (MonadDOM m) => [Double] -> [Double] -> m IIRFilterOptions
+newIIRFilterOptions feedforward feedback = liftDOM (((toJSVal feedforward) >>= \a1' -> (toJSVal feedback) >>= \a2' -> js_newIIRFilterOptions a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"feedforward\"] = $2; })"
+        js_setFeedforward :: IIRFilterOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedforward IIRFilterOptions.feedforward specification>
+setFeedforward :: (MonadDOM m) => IIRFilterOptions -> [Double] -> m ()
+setFeedforward self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFeedforward (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"feedforward\"]; })"
+        js_getFeedforward :: IIRFilterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedforward IIRFilterOptions.feedforward specification>
+getFeedforward :: (MonadDOM m) => IIRFilterOptions -> m [Double]
+getFeedforward self = liftDOM (((js_getFeedforward (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"feedback\"] = $2; })"
+        js_setFeedback :: IIRFilterOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedback IIRFilterOptions.feedback specification>
+setFeedback :: (MonadDOM m) => IIRFilterOptions -> [Double] -> m ()
+setFeedback self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFeedback (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"feedback\"]; })"
+        js_getFeedback :: IIRFilterOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedback IIRFilterOptions.feedback specification>
+getFeedback :: (MonadDOM m) => IIRFilterOptions -> m [Double]
+getFeedback self = liftDOM (((js_getFeedback (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IdentityCredentialRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/IdentityCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IdentityCredentialRequestOptions.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fedcm-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IdentityCredentialRequestOptions
+       (js_newIdentityCredentialRequestOptions, js_setProviders, js_getProviders, js_setContext, js_getContext, js_setMode, js_getMode, newIdentityCredentialRequestOptions, setProviders, getProviders, setContext, getContext, getContextUnsafe, getContextUnchecked, setMode, getMode, getModeUnsafe, getModeUnchecked, IdentityCredentialRequestOptions(..), gTypeIdentityCredentialRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"providers\": $1}); })"
+        js_newIdentityCredentialRequestOptions :: JSVal -> IO IdentityCredentialRequestOptions
+-- | <https://w3c-fedid.github.io/FedCM/#dictdef-identitycredentialrequestoptions IdentityCredentialRequestOptions specification>
+newIdentityCredentialRequestOptions :: (MonadDOM m) => [IdentityProviderRequestOptions] -> m IdentityCredentialRequestOptions
+newIdentityCredentialRequestOptions providers = liftDOM (((toJSVal providers) >>= \a1' -> js_newIdentityCredentialRequestOptions a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"providers\"] = $2; })"
+        js_setProviders :: IdentityCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-providers IdentityCredentialRequestOptions.providers specification>
+setProviders :: (MonadDOM m) => IdentityCredentialRequestOptions -> [IdentityProviderRequestOptions] -> m ()
+setProviders self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setProviders (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"providers\"]; })"
+        js_getProviders :: IdentityCredentialRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-providers IdentityCredentialRequestOptions.providers specification>
+getProviders :: (MonadDOM m) => IdentityCredentialRequestOptions -> m [IdentityProviderRequestOptions]
+getProviders self = liftDOM (((js_getProviders (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"context\"] = $2; })"
+        js_setContext :: IdentityCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-context IdentityCredentialRequestOptions.context specification>
+setContext :: (MonadDOM m) => IdentityCredentialRequestOptions -> IdentityCredentialRequestOptionsContext -> m ()
+setContext self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setContext (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"context\"]; })"
+        js_getContext :: IdentityCredentialRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-context IdentityCredentialRequestOptions.context specification>
+getContext :: (MonadDOM m) => IdentityCredentialRequestOptions -> m (Maybe IdentityCredentialRequestOptionsContext)
+getContext self = liftDOM (((js_getContext (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-context IdentityCredentialRequestOptions.context specification>
+getContextUnsafe :: (MonadDOM m, HasCallStack) => IdentityCredentialRequestOptions -> m IdentityCredentialRequestOptionsContext
+getContextUnsafe self = liftDOM ((((js_getContext (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-context IdentityCredentialRequestOptions.context specification>
+getContextUnchecked :: (MonadDOM m) => IdentityCredentialRequestOptions -> m IdentityCredentialRequestOptionsContext
+getContextUnchecked self = liftDOM ((pFromJSVal <$> (js_getContext (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: IdentityCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-mode IdentityCredentialRequestOptions.mode specification>
+setMode :: (MonadDOM m) => IdentityCredentialRequestOptions -> IdentityCredentialRequestOptionsMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: IdentityCredentialRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-mode IdentityCredentialRequestOptions.mode specification>
+getMode :: (MonadDOM m) => IdentityCredentialRequestOptions -> m (Maybe IdentityCredentialRequestOptionsMode)
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-mode IdentityCredentialRequestOptions.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => IdentityCredentialRequestOptions -> m IdentityCredentialRequestOptionsMode
+getModeUnsafe self = liftDOM ((((js_getMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-mode IdentityCredentialRequestOptions.mode specification>
+getModeUnchecked :: (MonadDOM m) => IdentityCredentialRequestOptions -> m IdentityCredentialRequestOptionsMode
+getModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IdentityProviderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/IdentityProviderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IdentityProviderConfig.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fedcm-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IdentityProviderConfig
+       (js_newIdentityProviderConfig, js_setConfigURL, js_getConfigURL, js_setClientId, js_getClientId, newIdentityProviderConfig, setConfigURL, getConfigURL, setClientId, getClientId, IdentityProviderConfig(..), gTypeIdentityProviderConfig, IsIdentityProviderConfig, toIdentityProviderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"configURL\": $1, \"clientId\": $2}); })"
+        js_newIdentityProviderConfig :: JSString -> JSString -> IO IdentityProviderConfig
+-- | <https://w3c-fedid.github.io/FedCM/#dictdef-identityproviderconfig IdentityProviderConfig specification>
+newIdentityProviderConfig :: (MonadDOM m, ToJSString configURL, ToJSString clientId) => configURL -> clientId -> m IdentityProviderConfig
+newIdentityProviderConfig configURL clientId = liftDOM ((js_newIdentityProviderConfig (toJSString configURL) (toJSString clientId)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"configURL\"] = $2; })"
+        js_setConfigURL :: IdentityProviderConfig -> JSString -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderconfig-configurl IdentityProviderConfig.configURL specification>
+setConfigURL :: (MonadDOM m, IsIdentityProviderConfig self, ToJSString val) => self -> val -> m ()
+setConfigURL self val = liftDOM (void ((js_setConfigURL ((Types.toIdentityProviderConfig self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"configURL\"]; })"
+        js_getConfigURL :: IdentityProviderConfig -> IO JSString
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderconfig-configurl IdentityProviderConfig.configURL specification>
+getConfigURL :: (MonadDOM m, IsIdentityProviderConfig self, FromJSString result) => self -> m result
+getConfigURL self = liftDOM ((fromJSString <$> (js_getConfigURL ((Types.toIdentityProviderConfig self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clientId\"] = $2; })"
+        js_setClientId :: IdentityProviderConfig -> JSString -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderconfig-clientid IdentityProviderConfig.clientId specification>
+setClientId :: (MonadDOM m, IsIdentityProviderConfig self, ToJSString val) => self -> val -> m ()
+setClientId self val = liftDOM (void ((js_setClientId ((Types.toIdentityProviderConfig self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientId\"]; })"
+        js_getClientId :: IdentityProviderConfig -> IO JSString
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderconfig-clientid IdentityProviderConfig.clientId specification>
+getClientId :: (MonadDOM m, IsIdentityProviderConfig self, FromJSString result) => self -> m result
+getClientId self = liftDOM ((fromJSString <$> (js_getClientId ((Types.toIdentityProviderConfig self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IdentityProviderRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/IdentityProviderRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IdentityProviderRequestOptions.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fedcm-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IdentityProviderRequestOptions
+       (js_newIdentityProviderRequestOptions, js_setLoginHint, js_getLoginHint, js_setDomainHint, js_getDomainHint, js_setFields, js_getFields, js_setParams, js_getParams, newIdentityProviderRequestOptions, setLoginHint, getLoginHint, getLoginHintUnsafe, getLoginHintUnchecked, setDomainHint, getDomainHint, getDomainHintUnsafe, getDomainHintUnchecked, setFields, getFields, getFieldsUnsafe, getFieldsUnchecked, setParams, getParams, IdentityProviderRequestOptions(..), gTypeIdentityProviderRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"configURL\": $1, \"clientId\": $2}); })"
+        js_newIdentityProviderRequestOptions :: JSString -> JSString -> IO IdentityProviderRequestOptions
+-- | <https://w3c-fedid.github.io/FedCM/#dictdef-identityproviderrequestoptions IdentityProviderRequestOptions specification>
+newIdentityProviderRequestOptions :: (MonadDOM m, ToJSString configURL, ToJSString clientId) => configURL -> clientId -> m IdentityProviderRequestOptions
+newIdentityProviderRequestOptions configURL clientId = liftDOM ((js_newIdentityProviderRequestOptions (toJSString configURL) (toJSString clientId)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"loginHint\"] = $2; })"
+        js_setLoginHint :: IdentityProviderRequestOptions -> JSString -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-loginhint IdentityProviderRequestOptions.loginHint specification>
+setLoginHint :: (MonadDOM m, ToJSString val) => IdentityProviderRequestOptions -> val -> m ()
+setLoginHint self val = liftDOM (void ((js_setLoginHint (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loginHint\"]; })"
+        js_getLoginHint :: IdentityProviderRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-loginhint IdentityProviderRequestOptions.loginHint specification>
+getLoginHint :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m (Maybe result)
+getLoginHint self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLoginHint (self))))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-loginhint IdentityProviderRequestOptions.loginHint specification>
+getLoginHintUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IdentityProviderRequestOptions -> m result
+getLoginHintUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLoginHint (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-loginhint IdentityProviderRequestOptions.loginHint specification>
+getLoginHintUnchecked :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m result
+getLoginHintUnchecked self = liftDOM ((pFromJSVal <$> (js_getLoginHint (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"domainHint\"] = $2; })"
+        js_setDomainHint :: IdentityProviderRequestOptions -> JSString -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-domainhint IdentityProviderRequestOptions.domainHint specification>
+setDomainHint :: (MonadDOM m, ToJSString val) => IdentityProviderRequestOptions -> val -> m ()
+setDomainHint self val = liftDOM (void ((js_setDomainHint (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domainHint\"]; })"
+        js_getDomainHint :: IdentityProviderRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-domainhint IdentityProviderRequestOptions.domainHint specification>
+getDomainHint :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m (Maybe result)
+getDomainHint self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDomainHint (self))))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-domainhint IdentityProviderRequestOptions.domainHint specification>
+getDomainHintUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IdentityProviderRequestOptions -> m result
+getDomainHintUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDomainHint (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-domainhint IdentityProviderRequestOptions.domainHint specification>
+getDomainHintUnchecked :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m result
+getDomainHintUnchecked self = liftDOM ((pFromJSVal <$> (js_getDomainHint (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fields\"] = $2; })"
+        js_setFields :: IdentityProviderRequestOptions -> JSVal -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-fields IdentityProviderRequestOptions.fields specification>
+setFields :: (MonadDOM m, ToJSString val) => IdentityProviderRequestOptions -> [val] -> m ()
+setFields self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFields (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fields\"]; })"
+        js_getFields :: IdentityProviderRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-fields IdentityProviderRequestOptions.fields specification>
+getFields :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m (Maybe [result])
+getFields self = liftDOM (((js_getFields (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-fields IdentityProviderRequestOptions.fields specification>
+getFieldsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IdentityProviderRequestOptions -> m [result]
+getFieldsUnsafe self = liftDOM ((((js_getFields (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-fields IdentityProviderRequestOptions.fields specification>
+getFieldsUnchecked :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m [result]
+getFieldsUnchecked self = liftDOM (((js_getFields (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"params\"] = $2; })"
+        js_setParams :: IdentityProviderRequestOptions -> JSVal -> IO ()
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-params IdentityProviderRequestOptions.params specification>
+setParams :: (MonadDOM m) => IdentityProviderRequestOptions -> JSVal -> m ()
+setParams self val = liftDOM (void ((js_setParams (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"params\"]; })"
+        js_getParams :: IdentityProviderRequestOptions -> IO JSVal
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-params IdentityProviderRequestOptions.params specification>
+getParams :: (MonadDOM m) => IdentityProviderRequestOptions -> m JSVal
+getParams self = liftDOM ((js_getParams (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IdleDeadline.hs b/src/GHCJS/DOM/JSFFI/Generated/IdleDeadline.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IdleDeadline.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from requestidlecallback (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IdleDeadline
+       (js_timeRemaining, js_getDidTimeout, timeRemaining, timeRemaining_, getDidTimeout, IdleDeadline(..), gTypeIdleDeadline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"timeRemaining\"](); })"
+        js_timeRemaining :: IdleDeadline -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/IdleDeadline/timeRemaining MDN IdleDeadline.timeRemaining documentation>
+timeRemaining :: (MonadDOM m) => IdleDeadline -> m Double
+timeRemaining self = liftDOM ((js_timeRemaining (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IdleDeadline/timeRemaining MDN IdleDeadline.timeRemaining documentation>
+timeRemaining_ :: (MonadDOM m) => IdleDeadline -> m ()
+timeRemaining_ self = liftDOM (void ((js_timeRemaining (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"didTimeout\"]; })"
+        js_getDidTimeout :: IdleDeadline -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/IdleDeadline/didTimeout MDN IdleDeadline.didTimeout documentation>
+getDidTimeout :: (MonadDOM m) => IdleDeadline -> m Bool
+getDidTimeout self = liftDOM ((js_getDidTimeout (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IdleRequestCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/IdleRequestCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IdleRequestCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from requestidlecallback (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IdleRequestCallback
+       (newIdleRequestCallback, newIdleRequestCallbackSync, newIdleRequestCallbackAsync, IdleRequestCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newIdleRequestCallback :: (MonadDOM m) => (IdleDeadline -> IO ()) -> m IdleRequestCallback
+newIdleRequestCallback callback = liftDOM ((IdleRequestCallback . coerce) <$> syncCallback1 ContinueAsync (\ deadline -> do
+          deadline' <- fromJSValUnchecked deadline
+          callback deadline'))
+
+newIdleRequestCallbackSync :: (MonadDOM m) => (IdleDeadline -> IO ()) -> m IdleRequestCallback
+newIdleRequestCallbackSync callback = liftDOM ((IdleRequestCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ deadline -> do
+          deadline' <- fromJSValUnchecked deadline
+          callback deadline'))
+
+newIdleRequestCallbackAsync :: (MonadDOM m) => (IdleDeadline -> IO ()) -> m IdleRequestCallback
+newIdleRequestCallbackAsync callback = liftDOM ((IdleRequestCallback . coerce) <$> asyncCallback1 (\ deadline -> do
+          deadline' <- fromJSValUnchecked deadline
+          callback deadline'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IdleRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/IdleRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IdleRequestOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from requestidlecallback (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IdleRequestOptions
+       (js_newIdleRequestOptions, js_setTimeout, js_getTimeout, newIdleRequestOptions, setTimeout, getTimeout, getTimeoutUnsafe, getTimeoutUnchecked, IdleRequestOptions(..), gTypeIdleRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIdleRequestOptions :: IO IdleRequestOptions
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions IdleRequestOptions specification>
+newIdleRequestOptions :: (MonadDOM m) => m IdleRequestOptions
+newIdleRequestOptions = liftDOM ((js_newIdleRequestOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
+        js_setTimeout :: IdleRequestOptions -> Word -> IO ()
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions-timeout IdleRequestOptions.timeout specification>
+setTimeout :: (MonadDOM m) => IdleRequestOptions -> Word -> m ()
+setTimeout self val = liftDOM (void ((js_setTimeout (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })"
+        js_getTimeout :: IdleRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions-timeout IdleRequestOptions.timeout specification>
+getTimeout :: (MonadDOM m) => IdleRequestOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((js_getTimeout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions-timeout IdleRequestOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => IdleRequestOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((js_getTimeout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions-timeout IdleRequestOptions.timeout specification>
+getTimeoutUnchecked :: (MonadDOM m) => IdleRequestOptions -> m Word
+getTimeoutUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeout (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageBitmap.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageBitmap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageBitmap.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageBitmap
+       (js_close, js_getWidth, js_getHeight, close, getWidth, getHeight, ImageBitmap(..), gTypeImageBitmap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: ImageBitmap -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmap/close MDN ImageBitmap.close documentation>
+close :: (MonadDOM m) => ImageBitmap -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: ImageBitmap -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmap/width MDN ImageBitmap.width documentation>
+getWidth :: (MonadDOM m) => ImageBitmap -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: ImageBitmap -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmap/height MDN ImageBitmap.height documentation>
+getHeight :: (MonadDOM m) => ImageBitmap -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageBitmapRenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageBitmapRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageBitmapRenderingContext.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageBitmapRenderingContext
+       (js_transferFromImageBitmap, js_getCanvas, transferFromImageBitmap, getCanvas, ImageBitmapRenderingContext(..), gTypeImageBitmapRenderingContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"transferFromImageBitmap\"]($2); })"
+        js_transferFromImageBitmap :: ImageBitmapRenderingContext -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmapRenderingContext/transferFromImageBitmap MDN ImageBitmapRenderingContext.transferFromImageBitmap documentation>
+transferFromImageBitmap :: (MonadDOM m) => ImageBitmapRenderingContext -> Maybe ImageBitmap -> m ()
+transferFromImageBitmap self bitmap = liftDOM (void (((toJSVal bitmap) >>= \a2' -> js_transferFromImageBitmap (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })"
+        js_getCanvas :: ImageBitmapRenderingContext -> IO HTMLCanvasElementOrOffscreenCanvas
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmapRenderingContext/canvas MDN ImageBitmapRenderingContext.canvas documentation>
+getCanvas :: (MonadDOM m) => ImageBitmapRenderingContext -> m HTMLCanvasElementOrOffscreenCanvas
+getCanvas self = liftDOM ((js_getCanvas (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageCapture.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageCapture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageCapture.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageCapture
+       (js_newImageCapture, js_getPhotoCapabilities, js_getPhotoSettings, js_grabFrame, js_takePhoto, js_getTrack, newImageCapture, getPhotoCapabilities, getPhotoCapabilities_, getPhotoSettings, getPhotoSettings_, grabFrame, grabFrame_, takePhoto, takePhoto_, getTrack, ImageCapture(..), gTypeImageCapture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"ImageCapture\"]($1); })"
+        js_newImageCapture :: MediaStreamTrack -> IO ImageCapture
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/ImageCapture MDN ImageCapture. documentation>
+newImageCapture :: (MonadDOM m, IsMediaStreamTrack videoTrack) => videoTrack -> m ImageCapture
+newImageCapture videoTrack = liftDOM ((js_newImageCapture (Types.toMediaStreamTrack videoTrack)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getPhotoCapabilities\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getPhotoCapabilities :: ImageCapture -> IO (JSVal, PhotoCapabilities)
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoCapabilities MDN ImageCapture.getPhotoCapabilities documentation>
+getPhotoCapabilities :: (MonadDOM m) => ImageCapture -> m PhotoCapabilities
+getPhotoCapabilities self = liftDOM (((js_getPhotoCapabilities (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoCapabilities MDN ImageCapture.getPhotoCapabilities documentation>
+getPhotoCapabilities_ :: (MonadDOM m) => ImageCapture -> m ()
+getPhotoCapabilities_ self = liftDOM (void (((js_getPhotoCapabilities (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getPhotoSettings\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getPhotoSettings :: ImageCapture -> IO (JSVal, PhotoSettings)
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoSettings MDN ImageCapture.getPhotoSettings documentation>
+getPhotoSettings :: (MonadDOM m) => ImageCapture -> m PhotoSettings
+getPhotoSettings self = liftDOM (((js_getPhotoSettings (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoSettings MDN ImageCapture.getPhotoSettings documentation>
+getPhotoSettings_ :: (MonadDOM m) => ImageCapture -> m ()
+getPhotoSettings_ self = liftDOM (void (((js_getPhotoSettings (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"grabFrame\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_grabFrame :: ImageCapture -> IO (JSVal, ImageBitmap)
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/grabFrame MDN ImageCapture.grabFrame documentation>
+grabFrame :: (MonadDOM m) => ImageCapture -> m ImageBitmap
+grabFrame self = liftDOM (((js_grabFrame (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/grabFrame MDN ImageCapture.grabFrame documentation>
+grabFrame_ :: (MonadDOM m) => ImageCapture -> m ()
+grabFrame_ self = liftDOM (void (((js_grabFrame (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"takePhoto\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_takePhoto :: ImageCapture -> JSVal -> IO (JSVal, Blob)
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/takePhoto MDN ImageCapture.takePhoto documentation>
+takePhoto :: (MonadDOM m) => ImageCapture -> Maybe PhotoSettings -> m Blob
+takePhoto self photoSettings = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal photoSettings) >>= \a2' -> js_takePhoto (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/takePhoto MDN ImageCapture.takePhoto documentation>
+takePhoto_ :: (MonadDOM m) => ImageCapture -> Maybe PhotoSettings -> m ()
+takePhoto_ self photoSettings = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal photoSettings) >>= \a2' -> js_takePhoto (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: ImageCapture -> IO MediaStreamTrack
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/track MDN ImageCapture.track documentation>
+getTrack :: (MonadDOM m) => ImageCapture -> m MediaStreamTrack
+getTrack self = liftDOM ((js_getTrack (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
@@ -1,69 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ImageData
-       (js_newImageData, newImageData, js_newImageData', newImageData',
-        js_getWidth, getWidth, js_getHeight, getHeight, js_getData,
-        getData, ImageData(..), gTypeImageData)
+       (js_newImageData, js_newImageDataData', js_getWidth, js_getHeight, js_getData, js_getColorSpace, newImageData, newImageDataData', getWidth, getHeight, getData, getColorSpace, ImageData(..), gTypeImageData)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return new window[\"ImageData\"]($1, $2,\n$3); })" js_newImageData ::
-        Uint8ClampedArray -> Word -> Optional Word -> IO ImageData
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
-newImageData ::
-             (MonadIO m, IsUint8ClampedArray data') =>
-               data' -> Word -> Maybe Word -> m ImageData
-newImageData data' sw sh
-  = liftIO
-      (js_newImageData (toUint8ClampedArray data') sw
-         (maybeToOptional sh))
- 
-foreign import javascript safe "(($1, $2) => { return new window[\"ImageData\"]($1, $2); })"
-        js_newImageData' :: Word -> Word -> IO ImageData
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"ImageData\"]($1, $2, $3); })"
+        js_newImageData :: Word -> Word -> JSVal -> IO ImageData
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/ImageData MDN ImageData. documentation>
+newImageData :: (MonadDOM m) => Word -> Word -> Maybe ImageDataSettings -> m ImageData
+newImageData sw sh settings = liftDOM (((P.maybe (P.return jsUndefined) toJSVal settings) >>= \a3' -> js_newImageData (sw) (sh) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
-newImageData' :: (MonadIO m) => Word -> Word -> m ImageData
-newImageData' sw sh = liftIO (js_newImageData' sw sh)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        ImageData -> IO Word
+foreign import javascript safe "(($1, $2, $3, $4) => { return new globalThis[\"ImageData\"]($1, $2, $3, $4); })"
+        js_newImageDataData' :: ImageDataArray -> Word -> JSVal -> JSVal -> IO ImageData
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/ImageData MDN ImageData. documentation>
+newImageDataData' :: (MonadDOM m, IsImageDataArray data') => data' -> Word -> Maybe Word -> Maybe ImageDataSettings -> m ImageData
+newImageDataData' data' sw sh settings = liftDOM (((P.maybe (P.return jsUndefined) toJSVal sh) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal settings) >>= \a4' -> js_newImageDataData' (Types.toImageDataArray data') (sw) a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.width Mozilla ImageData.width documentation> 
-getWidth :: (MonadIO m) => ImageData -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        ImageData -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: ImageData -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/width MDN ImageData.width documentation>
+getWidth :: (MonadDOM m) => ImageData -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.height Mozilla ImageData.height documentation> 
-getHeight :: (MonadIO m) => ImageData -> m Word
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        ImageData -> IO Uint8ClampedArray
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: ImageData -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/height MDN ImageData.height documentation>
+getHeight :: (MonadDOM m) => ImageData -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.data Mozilla ImageData.data documentation> 
-getData :: (MonadIO m) => ImageData -> m Uint8ClampedArray
-getData self = liftIO (js_getData self)
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: ImageData -> IO ImageDataArray
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/data MDN ImageData.data documentation>
+getData :: (MonadDOM m) => ImageData -> m ImageDataArray
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: ImageData -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/colorSpace MDN ImageData.colorSpace documentation>
+getColorSpace :: (MonadDOM m) => ImageData -> m PredefinedColorSpace
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageDataSettings.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageDataSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageDataSettings.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageDataSettings
+       (js_newImageDataSettings, js_setColorSpace, js_getColorSpace, js_setPixelFormat, js_getPixelFormat, newImageDataSettings, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, setPixelFormat, getPixelFormat, getPixelFormatUnsafe, getPixelFormatUnchecked, ImageDataSettings(..), gTypeImageDataSettings)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newImageDataSettings :: IO ImageDataSettings
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#imagedatasettings ImageDataSettings specification>
+newImageDataSettings :: (MonadDOM m) => m ImageDataSettings
+newImageDataSettings = liftDOM ((js_newImageDataSettings))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: ImageDataSettings -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-colorspace ImageDataSettings.colorSpace specification>
+setColorSpace :: (MonadDOM m) => ImageDataSettings -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorSpace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: ImageDataSettings -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-colorspace ImageDataSettings.colorSpace specification>
+getColorSpace :: (MonadDOM m) => ImageDataSettings -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-colorspace ImageDataSettings.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => ImageDataSettings -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-colorspace ImageDataSettings.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => ImageDataSettings -> m PredefinedColorSpace
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pixelFormat\"] = $2; })"
+        js_setPixelFormat :: ImageDataSettings -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-pixelformat ImageDataSettings.pixelFormat specification>
+setPixelFormat :: (MonadDOM m) => ImageDataSettings -> ImageDataPixelFormat -> m ()
+setPixelFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPixelFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pixelFormat\"]; })"
+        js_getPixelFormat :: ImageDataSettings -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-pixelformat ImageDataSettings.pixelFormat specification>
+getPixelFormat :: (MonadDOM m) => ImageDataSettings -> m (Maybe ImageDataPixelFormat)
+getPixelFormat self = liftDOM (((js_getPixelFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-pixelformat ImageDataSettings.pixelFormat specification>
+getPixelFormatUnsafe :: (MonadDOM m, HasCallStack) => ImageDataSettings -> m ImageDataPixelFormat
+getPixelFormatUnsafe self = liftDOM ((((js_getPixelFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#dom-imagedatasettings-pixelformat ImageDataSettings.pixelFormat specification>
+getPixelFormatUnchecked :: (MonadDOM m) => ImageDataSettings -> m ImageDataPixelFormat
+getPixelFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getPixelFormat (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageDecodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageDecodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageDecodeOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageDecodeOptions
+       (js_newImageDecodeOptions, js_setFrameIndex, js_getFrameIndex, js_setCompleteFramesOnly, js_getCompleteFramesOnly, newImageDecodeOptions, setFrameIndex, getFrameIndex, getFrameIndexUnsafe, getFrameIndexUnchecked, setCompleteFramesOnly, getCompleteFramesOnly, getCompleteFramesOnlyUnsafe, getCompleteFramesOnlyUnchecked, ImageDecodeOptions(..), gTypeImageDecodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newImageDecodeOptions :: IO ImageDecodeOptions
+-- | <https://w3c.github.io/webcodecs/#dictdef-imagedecodeoptions ImageDecodeOptions specification>
+newImageDecodeOptions :: (MonadDOM m) => m ImageDecodeOptions
+newImageDecodeOptions = liftDOM ((js_newImageDecodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameIndex\"] = $2; })"
+        js_setFrameIndex :: ImageDecodeOptions -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-frameindex ImageDecodeOptions.frameIndex specification>
+setFrameIndex :: (MonadDOM m) => ImageDecodeOptions -> Word -> m ()
+setFrameIndex self val = liftDOM (void ((js_setFrameIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameIndex\"]; })"
+        js_getFrameIndex :: ImageDecodeOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-frameindex ImageDecodeOptions.frameIndex specification>
+getFrameIndex :: (MonadDOM m) => ImageDecodeOptions -> m (Maybe Word)
+getFrameIndex self = liftDOM (((js_getFrameIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-frameindex ImageDecodeOptions.frameIndex specification>
+getFrameIndexUnsafe :: (MonadDOM m, HasCallStack) => ImageDecodeOptions -> m Word
+getFrameIndexUnsafe self = liftDOM ((((js_getFrameIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-frameindex ImageDecodeOptions.frameIndex specification>
+getFrameIndexUnchecked :: (MonadDOM m) => ImageDecodeOptions -> m Word
+getFrameIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameIndex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"completeFramesOnly\"] = $2; })"
+        js_setCompleteFramesOnly :: ImageDecodeOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-completeframesonly ImageDecodeOptions.completeFramesOnly specification>
+setCompleteFramesOnly :: (MonadDOM m) => ImageDecodeOptions -> Bool -> m ()
+setCompleteFramesOnly self val = liftDOM (void ((js_setCompleteFramesOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"completeFramesOnly\"]; })"
+        js_getCompleteFramesOnly :: ImageDecodeOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-completeframesonly ImageDecodeOptions.completeFramesOnly specification>
+getCompleteFramesOnly :: (MonadDOM m) => ImageDecodeOptions -> m (Maybe Bool)
+getCompleteFramesOnly self = liftDOM (((js_getCompleteFramesOnly (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-completeframesonly ImageDecodeOptions.completeFramesOnly specification>
+getCompleteFramesOnlyUnsafe :: (MonadDOM m, HasCallStack) => ImageDecodeOptions -> m Bool
+getCompleteFramesOnlyUnsafe self = liftDOM ((((js_getCompleteFramesOnly (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-completeframesonly ImageDecodeOptions.completeFramesOnly specification>
+getCompleteFramesOnlyUnchecked :: (MonadDOM m) => ImageDecodeOptions -> m Bool
+getCompleteFramesOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getCompleteFramesOnly (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageDecodeResult.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageDecodeResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageDecodeResult.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageDecodeResult
+       (js_newImageDecodeResult, js_setImage, js_getImage, js_setComplete, js_getComplete, newImageDecodeResult, setImage, getImage, setComplete, getComplete, ImageDecodeResult(..), gTypeImageDecodeResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"image\": $1, \"complete\": $2}); })"
+        js_newImageDecodeResult :: VideoFrame -> Bool -> IO ImageDecodeResult
+-- | <https://w3c.github.io/webcodecs/#dictdef-imagedecoderesult ImageDecodeResult specification>
+newImageDecodeResult :: (MonadDOM m) => VideoFrame -> Bool -> m ImageDecodeResult
+newImageDecodeResult image complete = liftDOM ((js_newImageDecodeResult (image) (complete)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"image\"] = $2; })"
+        js_setImage :: ImageDecodeResult -> VideoFrame -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-image ImageDecodeResult.image specification>
+setImage :: (MonadDOM m) => ImageDecodeResult -> VideoFrame -> m ()
+setImage self val = liftDOM (void ((js_setImage (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"image\"]; })"
+        js_getImage :: ImageDecodeResult -> IO VideoFrame
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-image ImageDecodeResult.image specification>
+getImage :: (MonadDOM m) => ImageDecodeResult -> m VideoFrame
+getImage self = liftDOM ((js_getImage (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"complete\"] = $2; })"
+        js_setComplete :: ImageDecodeResult -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-complete ImageDecodeResult.complete specification>
+setComplete :: (MonadDOM m) => ImageDecodeResult -> Bool -> m ()
+setComplete self val = liftDOM (void ((js_setComplete (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"complete\"]; })"
+        js_getComplete :: ImageDecodeResult -> IO Bool
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-complete ImageDecodeResult.complete specification>
+getComplete :: (MonadDOM m) => ImageDecodeResult -> m Bool
+getComplete self = liftDOM ((js_getComplete (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageDecoder.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageDecoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageDecoder.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageDecoder
+       (js_newImageDecoder, js_close, js_decode, js_reset, js_isTypeSupported, js_getType, js_getComplete, js_getCompleted, js_getTracks, newImageDecoder, close, decode, decode_, reset, isTypeSupported, isTypeSupported_, getType, getComplete, getCompleted, getTracks, ImageDecoder(..), gTypeImageDecoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"ImageDecoder\"]($1); })"
+        js_newImageDecoder :: ImageDecoderInit -> IO ImageDecoder
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/ImageDecoder MDN ImageDecoder. documentation>
+newImageDecoder :: (MonadDOM m) => ImageDecoderInit -> m ImageDecoder
+newImageDecoder init = liftDOM ((js_newImageDecoder (init)))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: ImageDecoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/close MDN ImageDecoder.close documentation>
+close :: (MonadDOM m) => ImageDecoder -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"decode\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_decode :: ImageDecoder -> JSVal -> IO (JSVal, ImageDecodeResult)
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/decode MDN ImageDecoder.decode documentation>
+decode :: (MonadDOM m) => ImageDecoder -> Maybe ImageDecodeOptions -> m ImageDecodeResult
+decode self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_decode (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/decode MDN ImageDecoder.decode documentation>
+decode_ :: (MonadDOM m) => ImageDecoder -> Maybe ImageDecodeOptions -> m ()
+decode_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_decode (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: ImageDecoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/reset MDN ImageDecoder.reset documentation>
+reset :: (MonadDOM m) => ImageDecoder -> m ()
+reset self = liftDOM (void ((js_reset (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"ImageDecoder\"][\"isTypeSupported\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isTypeSupported :: JSString -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/isTypeSupported_static MDN ImageDecoder.isTypeSupported documentation>
+isTypeSupported :: (MonadDOM m, ToJSString type') => type' -> m Bool
+isTypeSupported type' = liftDOM (((js_isTypeSupported (toJSString type')) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/isTypeSupported_static MDN ImageDecoder.isTypeSupported documentation>
+isTypeSupported_ :: (MonadDOM m, ToJSString type') => type' -> m ()
+isTypeSupported_ type' = liftDOM (void (((js_isTypeSupported (toJSString type')) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: ImageDecoder -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/type MDN ImageDecoder.type documentation>
+getType :: (MonadDOM m, FromJSString result) => ImageDecoder -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"complete\"]; })"
+        js_getComplete :: ImageDecoder -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/complete MDN ImageDecoder.complete documentation>
+getComplete :: (MonadDOM m) => ImageDecoder -> m Bool
+getComplete self = liftDOM ((js_getComplete (self)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"completed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getCompleted :: ImageDecoder -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/completed MDN ImageDecoder.completed documentation>
+getCompleted :: (MonadDOM m) => ImageDecoder -> m ()
+getCompleted self = liftDOM (void (((js_getCompleted (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tracks\"]; })"
+        js_getTracks :: ImageDecoder -> IO ImageTrackList
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/tracks MDN ImageDecoder.tracks documentation>
+getTracks :: (MonadDOM m) => ImageDecoder -> m ImageTrackList
+getTracks self = liftDOM ((js_getTracks (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageDecoderInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageDecoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageDecoderInit.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageDecoderInit
+       (js_newImageDecoderInit, js_setType, js_getType, js_setData, js_getData, js_setColorSpaceConversion, js_getColorSpaceConversion, js_setDesiredWidth, js_getDesiredWidth, js_setDesiredHeight, js_getDesiredHeight, js_setPreferAnimation, js_getPreferAnimation, js_setTransfer, js_getTransfer, newImageDecoderInit, setType, getType, setData, getData, setColorSpaceConversion, getColorSpaceConversion, getColorSpaceConversionUnsafe, getColorSpaceConversionUnchecked, setDesiredWidth, getDesiredWidth, getDesiredWidthUnsafe, getDesiredWidthUnchecked, setDesiredHeight, getDesiredHeight, getDesiredHeightUnsafe, getDesiredHeightUnchecked, setPreferAnimation, getPreferAnimation, getPreferAnimationUnsafe, getPreferAnimationUnchecked, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, ImageDecoderInit(..), gTypeImageDecoderInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"type\": $1, \"data\": $2}); })"
+        js_newImageDecoderInit :: JSString -> ImageBufferSource -> IO ImageDecoderInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-imagedecoderinit ImageDecoderInit specification>
+newImageDecoderInit :: (MonadDOM m, ToJSString type', IsImageBufferSource data') => type' -> data' -> m ImageDecoderInit
+newImageDecoderInit type' data' = liftDOM ((js_newImageDecoderInit (toJSString type') (Types.toImageBufferSource data')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: ImageDecoderInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-type ImageDecoderInit.type specification>
+setType :: (MonadDOM m, ToJSString val) => ImageDecoderInit -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: ImageDecoderInit -> IO JSString
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-type ImageDecoderInit.type specification>
+getType :: (MonadDOM m, FromJSString result) => ImageDecoderInit -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: ImageDecoderInit -> ImageBufferSource -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-data ImageDecoderInit.data specification>
+setData :: (MonadDOM m, IsImageBufferSource val) => ImageDecoderInit -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toImageBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: ImageDecoderInit -> IO ImageBufferSource
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-data ImageDecoderInit.data specification>
+getData :: (MonadDOM m) => ImageDecoderInit -> m ImageBufferSource
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpaceConversion\"] = $2; })"
+        js_setColorSpaceConversion :: ImageDecoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-colorspaceconversion ImageDecoderInit.colorSpaceConversion specification>
+setColorSpaceConversion :: (MonadDOM m) => ImageDecoderInit -> ColorSpaceConversion -> m ()
+setColorSpaceConversion self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorSpaceConversion (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpaceConversion\"]; })"
+        js_getColorSpaceConversion :: ImageDecoderInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-colorspaceconversion ImageDecoderInit.colorSpaceConversion specification>
+getColorSpaceConversion :: (MonadDOM m) => ImageDecoderInit -> m (Maybe ColorSpaceConversion)
+getColorSpaceConversion self = liftDOM (((js_getColorSpaceConversion (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-colorspaceconversion ImageDecoderInit.colorSpaceConversion specification>
+getColorSpaceConversionUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m ColorSpaceConversion
+getColorSpaceConversionUnsafe self = liftDOM ((((js_getColorSpaceConversion (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-colorspaceconversion ImageDecoderInit.colorSpaceConversion specification>
+getColorSpaceConversionUnchecked :: (MonadDOM m) => ImageDecoderInit -> m ColorSpaceConversion
+getColorSpaceConversionUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpaceConversion (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"desiredWidth\"] = $2; })"
+        js_setDesiredWidth :: ImageDecoderInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredwidth ImageDecoderInit.desiredWidth specification>
+setDesiredWidth :: (MonadDOM m) => ImageDecoderInit -> Word -> m ()
+setDesiredWidth self val = liftDOM (void ((js_setDesiredWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"desiredWidth\"]; })"
+        js_getDesiredWidth :: ImageDecoderInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredwidth ImageDecoderInit.desiredWidth specification>
+getDesiredWidth :: (MonadDOM m) => ImageDecoderInit -> m (Maybe Word)
+getDesiredWidth self = liftDOM (((js_getDesiredWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredwidth ImageDecoderInit.desiredWidth specification>
+getDesiredWidthUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m Word
+getDesiredWidthUnsafe self = liftDOM ((((js_getDesiredWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredwidth ImageDecoderInit.desiredWidth specification>
+getDesiredWidthUnchecked :: (MonadDOM m) => ImageDecoderInit -> m Word
+getDesiredWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesiredWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"desiredHeight\"] = $2; })"
+        js_setDesiredHeight :: ImageDecoderInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredheight ImageDecoderInit.desiredHeight specification>
+setDesiredHeight :: (MonadDOM m) => ImageDecoderInit -> Word -> m ()
+setDesiredHeight self val = liftDOM (void ((js_setDesiredHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"desiredHeight\"]; })"
+        js_getDesiredHeight :: ImageDecoderInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredheight ImageDecoderInit.desiredHeight specification>
+getDesiredHeight :: (MonadDOM m) => ImageDecoderInit -> m (Maybe Word)
+getDesiredHeight self = liftDOM (((js_getDesiredHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredheight ImageDecoderInit.desiredHeight specification>
+getDesiredHeightUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m Word
+getDesiredHeightUnsafe self = liftDOM ((((js_getDesiredHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredheight ImageDecoderInit.desiredHeight specification>
+getDesiredHeightUnchecked :: (MonadDOM m) => ImageDecoderInit -> m Word
+getDesiredHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesiredHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preferAnimation\"] = $2; })"
+        js_setPreferAnimation :: ImageDecoderInit -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-preferanimation ImageDecoderInit.preferAnimation specification>
+setPreferAnimation :: (MonadDOM m) => ImageDecoderInit -> Bool -> m ()
+setPreferAnimation self val = liftDOM (void ((js_setPreferAnimation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preferAnimation\"]; })"
+        js_getPreferAnimation :: ImageDecoderInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-preferanimation ImageDecoderInit.preferAnimation specification>
+getPreferAnimation :: (MonadDOM m) => ImageDecoderInit -> m (Maybe Bool)
+getPreferAnimation self = liftDOM (((js_getPreferAnimation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-preferanimation ImageDecoderInit.preferAnimation specification>
+getPreferAnimationUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m Bool
+getPreferAnimationUnsafe self = liftDOM ((((js_getPreferAnimation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-preferanimation ImageDecoderInit.preferAnimation specification>
+getPreferAnimationUnchecked :: (MonadDOM m) => ImageDecoderInit -> m Bool
+getPreferAnimationUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreferAnimation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transfer\"] = $2; })"
+        js_setTransfer :: ImageDecoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-transfer ImageDecoderInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => ImageDecoderInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: ImageDecoderInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-transfer ImageDecoderInit.transfer specification>
+getTransfer :: (MonadDOM m) => ImageDecoderInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-transfer ImageDecoderInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((js_getTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-transfer ImageDecoderInit.transfer specification>
+getTransferUnchecked :: (MonadDOM m) => ImageDecoderInit -> m [ArrayBuffer]
+getTransferUnchecked self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageEncodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageEncodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageEncodeOptions.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageEncodeOptions
+       (js_newImageEncodeOptions, js_setType, js_getType, js_setQuality, js_getQuality, newImageEncodeOptions, setType, getType, getTypeUnsafe, getTypeUnchecked, setQuality, getQuality, getQualityUnsafe, getQualityUnchecked, ImageEncodeOptions(..), gTypeImageEncodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newImageEncodeOptions :: IO ImageEncodeOptions
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#imageencodeoptions ImageEncodeOptions specification>
+newImageEncodeOptions :: (MonadDOM m) => m ImageEncodeOptions
+newImageEncodeOptions = liftDOM ((js_newImageEncodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: ImageEncodeOptions -> JSString -> IO ()
+setType :: (MonadDOM m, ToJSString val) => ImageEncodeOptions -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: ImageEncodeOptions -> IO JSVal
+getType :: (MonadDOM m, FromJSString result) => ImageEncodeOptions -> m (Maybe result)
+getType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getType (self))))
+
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ImageEncodeOptions -> m result
+getTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTypeUnchecked :: (MonadDOM m, FromJSString result) => ImageEncodeOptions -> m result
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"quality\"] = $2; })"
+        js_setQuality :: ImageEncodeOptions -> Double -> IO ()
+setQuality :: (MonadDOM m) => ImageEncodeOptions -> Double -> m ()
+setQuality self val = liftDOM (void ((js_setQuality (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"quality\"]; })"
+        js_getQuality :: ImageEncodeOptions -> IO JSVal
+getQuality :: (MonadDOM m) => ImageEncodeOptions -> m (Maybe Double)
+getQuality self = liftDOM (((js_getQuality (self)) >>= fromJSValUnchecked))
+
+getQualityUnsafe :: (MonadDOM m, HasCallStack) => ImageEncodeOptions -> m Double
+getQualityUnsafe self = liftDOM ((((js_getQuality (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getQualityUnchecked :: (MonadDOM m) => ImageEncodeOptions -> m Double
+getQualityUnchecked self = liftDOM ((pFromJSVal <$> (js_getQuality (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageTrack.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageTrack
+       (js_getAnimated, js_getFrameCount, js_getRepetitionCount, js_setSelected, js_getSelected, getAnimated, getFrameCount, getRepetitionCount, setSelected, getSelected, ImageTrack(..), gTypeImageTrack)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"animated\"]; })"
+        js_getAnimated :: ImageTrack -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/animated MDN ImageTrack.animated documentation>
+getAnimated :: (MonadDOM m) => ImageTrack -> m Bool
+getAnimated self = liftDOM ((js_getAnimated (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameCount\"]; })"
+        js_getFrameCount :: ImageTrack -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/frameCount MDN ImageTrack.frameCount documentation>
+getFrameCount :: (MonadDOM m) => ImageTrack -> m Word
+getFrameCount self = liftDOM ((js_getFrameCount (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"repetitionCount\"]; })"
+        js_getRepetitionCount :: ImageTrack -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/repetitionCount MDN ImageTrack.repetitionCount documentation>
+getRepetitionCount :: (MonadDOM m) => ImageTrack -> m Float
+getRepetitionCount self = liftDOM ((js_getRepetitionCount (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"selected\"] = $2; })"
+        js_setSelected :: ImageTrack -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/selected MDN ImageTrack.selected documentation>
+setSelected :: (MonadDOM m) => ImageTrack -> Bool -> m ()
+setSelected self val = liftDOM (void ((js_setSelected (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selected\"]; })"
+        js_getSelected :: ImageTrack -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/selected MDN ImageTrack.selected documentation>
+getSelected :: (MonadDOM m) => ImageTrack -> m Bool
+getSelected self = liftDOM ((js_getSelected (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageTrackList.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImageTrackList
+       (js_getReady, js_getLength, js_getSelectedIndex, js_getSelectedTrack, getReady, getLength, getSelectedIndex, getSelectedTrack, getSelectedTrackUnsafe, getSelectedTrackUnchecked, ImageTrackList(..), gTypeImageTrackList)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: ImageTrackList -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/ready MDN ImageTrackList.ready documentation>
+getReady :: (MonadDOM m) => ImageTrackList -> m ()
+getReady self = liftDOM (void (((js_getReady (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: ImageTrackList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/length MDN ImageTrackList.length documentation>
+getLength :: (MonadDOM m) => ImageTrackList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selectedIndex\"]; })"
+        js_getSelectedIndex :: ImageTrackList -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/selectedIndex MDN ImageTrackList.selectedIndex documentation>
+getSelectedIndex :: (MonadDOM m) => ImageTrackList -> m Int
+getSelectedIndex self = liftDOM ((js_getSelectedIndex (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selectedTrack\"]; })"
+        js_getSelectedTrack :: ImageTrackList -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/selectedTrack MDN ImageTrackList.selectedTrack documentation>
+getSelectedTrack :: (MonadDOM m) => ImageTrackList -> m (Maybe ImageTrack)
+getSelectedTrack self = liftDOM (((js_getSelectedTrack (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/selectedTrack MDN ImageTrackList.selectedTrack documentation>
+getSelectedTrackUnsafe :: (MonadDOM m, HasCallStack) => ImageTrackList -> m ImageTrack
+getSelectedTrackUnsafe self = liftDOM ((((js_getSelectedTrack (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/selectedTrack MDN ImageTrackList.selectedTrack documentation>
+getSelectedTrackUnchecked :: (MonadDOM m) => ImageTrackList -> m ImageTrack
+getSelectedTrackUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelectedTrack (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImportNodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ImportNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImportNodeOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ImportNodeOptions
+       (js_newImportNodeOptions, js_setCustomElementRegistry, js_getCustomElementRegistry, js_setSelfOnly, js_getSelfOnly, newImportNodeOptions, setCustomElementRegistry, getCustomElementRegistry, getCustomElementRegistryUnsafe, getCustomElementRegistryUnchecked, setSelfOnly, getSelfOnly, getSelfOnlyUnsafe, getSelfOnlyUnchecked, ImportNodeOptions(..), gTypeImportNodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newImportNodeOptions :: IO ImportNodeOptions
+-- | <https://dom.spec.whatwg.org/#dictdef-importnodeoptions ImportNodeOptions specification>
+newImportNodeOptions :: (MonadDOM m) => m ImportNodeOptions
+newImportNodeOptions = liftDOM ((js_newImportNodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"customElementRegistry\"] = $2; })"
+        js_setCustomElementRegistry :: ImportNodeOptions -> CustomElementRegistry -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-customelementregistry ImportNodeOptions.customElementRegistry specification>
+setCustomElementRegistry :: (MonadDOM m) => ImportNodeOptions -> CustomElementRegistry -> m ()
+setCustomElementRegistry self val = liftDOM (void ((js_setCustomElementRegistry (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"customElementRegistry\"]; })"
+        js_getCustomElementRegistry :: ImportNodeOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-customelementregistry ImportNodeOptions.customElementRegistry specification>
+getCustomElementRegistry :: (MonadDOM m) => ImportNodeOptions -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((js_getCustomElementRegistry (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-customelementregistry ImportNodeOptions.customElementRegistry specification>
+getCustomElementRegistryUnsafe :: (MonadDOM m, HasCallStack) => ImportNodeOptions -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((js_getCustomElementRegistry (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-customelementregistry ImportNodeOptions.customElementRegistry specification>
+getCustomElementRegistryUnchecked :: (MonadDOM m) => ImportNodeOptions -> m CustomElementRegistry
+getCustomElementRegistryUnchecked self = liftDOM ((pFromJSVal <$> (js_getCustomElementRegistry (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"selfOnly\"] = $2; })"
+        js_setSelfOnly :: ImportNodeOptions -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-selfonly ImportNodeOptions.selfOnly specification>
+setSelfOnly :: (MonadDOM m) => ImportNodeOptions -> Bool -> m ()
+setSelfOnly self val = liftDOM (void ((js_setSelfOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selfOnly\"]; })"
+        js_getSelfOnly :: ImportNodeOptions -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-selfonly ImportNodeOptions.selfOnly specification>
+getSelfOnly :: (MonadDOM m) => ImportNodeOptions -> m (Maybe Bool)
+getSelfOnly self = liftDOM (((js_getSelfOnly (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-selfonly ImportNodeOptions.selfOnly specification>
+getSelfOnlyUnsafe :: (MonadDOM m, HasCallStack) => ImportNodeOptions -> m Bool
+getSelfOnlyUnsafe self = liftDOM ((((js_getSelfOnly (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-selfonly ImportNodeOptions.selfOnly specification>
+getSelfOnlyUnchecked :: (MonadDOM m) => ImportNodeOptions -> m Bool
+getSelfOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelfOnly (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InputDeviceCapabilities.hs b/src/GHCJS/DOM/JSFFI/Generated/InputDeviceCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/InputDeviceCapabilities.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from input-device-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.InputDeviceCapabilities
+       (InputDeviceCapabilities(..), gTypeInputDeviceCapabilities)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InputDeviceInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/InputDeviceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/InputDeviceInfo.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.InputDeviceInfo
+       (js_getCapabilities, getCapabilities, getCapabilities_, InputDeviceInfo(..), gTypeInputDeviceInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getCapabilities\"](); })"
+        js_getCapabilities :: InputDeviceInfo -> IO MediaTrackCapabilities
+-- | <https://developer.mozilla.org/docs/Web/API/InputDeviceInfo/getCapabilities MDN InputDeviceInfo.getCapabilities documentation>
+getCapabilities :: (MonadDOM m) => InputDeviceInfo -> m MediaTrackCapabilities
+getCapabilities self = liftDOM ((js_getCapabilities (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/InputDeviceInfo/getCapabilities MDN InputDeviceInfo.getCapabilities documentation>
+getCapabilities_ :: (MonadDOM m) => InputDeviceInfo -> m ()
+getCapabilities_ self = liftDOM (void ((js_getCapabilities (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
@@ -1,110 +1,73 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.InputEvent
-       (js_newInputEvent, newInputEvent, js_getTargetRanges,
-        getTargetRanges, getTargetRanges_, js_getInputType, getInputType,
-        js_getData, getData, getDataUnsafe, getDataUnchecked,
-        js_getDataTransfer, getDataTransfer, getDataTransferUnsafe,
-        getDataTransferUnchecked, InputEvent(..), gTypeInputEvent)
+       (js_newInputEvent, js_getTargetRanges, js_getData, js_getIsComposing, js_getInputType, js_getDataTransfer, newInputEvent, getTargetRanges, getTargetRanges_, getData, getDataUnsafe, getDataUnchecked, getIsComposing, getInputType, getDataTransfer, getDataTransferUnsafe, getDataTransferUnchecked, InputEvent(..), gTypeInputEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"InputEvent\"]($1, $2); })" js_newInputEvent ::
-        JSString -> Optional InputEventInit -> IO InputEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent Mozilla InputEvent documentation> 
-newInputEvent ::
-              (MonadIO m, ToJSString type') =>
-                type' -> Maybe InputEventInit -> m InputEvent
-newInputEvent type' eventInitDict
-  = liftIO
-      (js_newInputEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getTargetRanges\"](); })"
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"InputEvent\"]($1, $2); })"
+        js_newInputEvent :: JSString -> JSVal -> IO InputEvent
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/InputEvent MDN InputEvent. documentation>
+newInputEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe InputEventInit -> m InputEvent
+newInputEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newInputEvent (toJSString type') a2'))
+
+foreign import javascript safe "(($1) => { return $1[\"getTargetRanges\"](); })"
         js_getTargetRanges :: InputEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/getTargetRanges MDN InputEvent.getTargetRanges documentation>
+getTargetRanges :: (MonadDOM m) => InputEvent -> m [StaticRange]
+getTargetRanges self = liftDOM (((js_getTargetRanges (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
-getTargetRanges :: (MonadIO m) => InputEvent -> m [StaticRange]
-getTargetRanges self
-  = liftIO ((js_getTargetRanges self) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/getTargetRanges MDN InputEvent.getTargetRanges documentation>
+getTargetRanges_ :: (MonadDOM m) => InputEvent -> m ()
+getTargetRanges_ self = liftDOM (void ((js_getTargetRanges (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
-getTargetRanges_ :: (MonadIO m) => InputEvent -> m ()
-getTargetRanges_ self = liftIO (void (js_getTargetRanges self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"inputType\"]; })"
-        js_getInputType :: InputEvent -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: InputEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/data MDN InputEvent.data documentation>
+getData :: (MonadDOM m, FromJSString result) => InputEvent -> m (Maybe result)
+getData self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getData (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.inputType Mozilla InputEvent.inputType documentation> 
-getInputType ::
-             (MonadIO m, FromJSString result) => InputEvent -> m result
-getInputType self
-  = liftIO (fromJSString <$> (js_getInputType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        InputEvent -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/data MDN InputEvent.data documentation>
+getDataUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => InputEvent -> m result
+getDataUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getData (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
-getData ::
-        (MonadIO m, FromJSString result) => InputEvent -> m (Maybe result)
-getData self = liftIO (fromMaybeJSString <$> (js_getData self))
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/data MDN InputEvent.data documentation>
+getDataUnchecked :: (MonadDOM m, FromJSString result) => InputEvent -> m result
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
-getDataUnsafe ::
-              (MonadIO m, HasCallStack, FromJSString result) =>
-                InputEvent -> m result
-getDataUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getData self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"isComposing\"]; })"
+        js_getIsComposing :: InputEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/isComposing MDN InputEvent.isComposing documentation>
+getIsComposing :: (MonadDOM m) => InputEvent -> m Bool
+getIsComposing self = liftDOM ((js_getIsComposing (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
-getDataUnchecked ::
-                 (MonadIO m, FromJSString result) => InputEvent -> m result
-getDataUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getData self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
-        js_getDataTransfer :: InputEvent -> IO (Nullable DataTransfer)
+foreign import javascript unsafe "(($1) => { return $1[\"inputType\"]; })"
+        js_getInputType :: InputEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/inputType MDN InputEvent.inputType documentation>
+getInputType :: (MonadDOM m, FromJSString result) => InputEvent -> m result
+getInputType self = liftDOM ((fromJSString <$> (js_getInputType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
-getDataTransfer ::
-                (MonadIO m) => InputEvent -> m (Maybe DataTransfer)
-getDataTransfer self
-  = liftIO (nullableToMaybe <$> (js_getDataTransfer self))
+foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
+        js_getDataTransfer :: InputEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/dataTransfer MDN InputEvent.dataTransfer documentation>
+getDataTransfer :: (MonadDOM m) => InputEvent -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((js_getDataTransfer (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
-getDataTransferUnsafe ::
-                      (MonadIO m, HasCallStack) => InputEvent -> m DataTransfer
-getDataTransferUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getDataTransfer self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/dataTransfer MDN InputEvent.dataTransfer documentation>
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => InputEvent -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((js_getDataTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
-getDataTransferUnchecked ::
-                         (MonadIO m) => InputEvent -> m DataTransfer
-getDataTransferUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getDataTransfer self))
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/dataTransfer MDN InputEvent.dataTransfer documentation>
+getDataTransferUnchecked :: (MonadDOM m) => InputEvent -> m DataTransfer
+getDataTransferUnchecked self = liftDOM ((pFromJSVal <$> (js_getDataTransfer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InputEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/InputEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/InputEventInit.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.InputEventInit
+       (js_newInputEventInit, js_setData, js_getData, js_setIsComposing, js_getIsComposing, js_setInputType, js_getInputType, js_setDataTransfer, js_getDataTransfer, js_setTargetRanges, js_getTargetRanges, newInputEventInit, setData, getData, getDataUnsafe, getDataUnchecked, setIsComposing, getIsComposing, getIsComposingUnsafe, getIsComposingUnchecked, setInputType, getInputType, getInputTypeUnsafe, getInputTypeUnchecked, setDataTransfer, getDataTransfer, getDataTransferUnsafe, getDataTransferUnchecked, setTargetRanges, getTargetRanges, getTargetRangesUnsafe, getTargetRangesUnchecked, InputEventInit(..), gTypeInputEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newInputEventInit :: IO InputEventInit
+-- | <https://w3c.github.io/uievents/#dictdef-inputeventinit InputEventInit specification>
+newInputEventInit :: (MonadDOM m) => m InputEventInit
+newInputEventInit = liftDOM ((js_newInputEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: InputEventInit -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-data InputEventInit.data specification>
+setData :: (MonadDOM m, ToJSString val) => InputEventInit -> Maybe val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: InputEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-data InputEventInit.data specification>
+getData :: (MonadDOM m, FromJSString result) => InputEventInit -> m (Maybe result)
+getData self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getData (self))))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-data InputEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => InputEventInit -> m result
+getDataUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getData (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-data InputEventInit.data specification>
+getDataUnchecked :: (MonadDOM m, FromJSString result) => InputEventInit -> m result
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"isComposing\"] = $2; })"
+        js_setIsComposing :: InputEventInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-iscomposing InputEventInit.isComposing specification>
+setIsComposing :: (MonadDOM m) => InputEventInit -> Bool -> m ()
+setIsComposing self val = liftDOM (void ((js_setIsComposing (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isComposing\"]; })"
+        js_getIsComposing :: InputEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-iscomposing InputEventInit.isComposing specification>
+getIsComposing :: (MonadDOM m) => InputEventInit -> m (Maybe Bool)
+getIsComposing self = liftDOM (((js_getIsComposing (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-iscomposing InputEventInit.isComposing specification>
+getIsComposingUnsafe :: (MonadDOM m, HasCallStack) => InputEventInit -> m Bool
+getIsComposingUnsafe self = liftDOM ((((js_getIsComposing (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-iscomposing InputEventInit.isComposing specification>
+getIsComposingUnchecked :: (MonadDOM m) => InputEventInit -> m Bool
+getIsComposingUnchecked self = liftDOM ((pFromJSVal <$> (js_getIsComposing (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inputType\"] = $2; })"
+        js_setInputType :: InputEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-inputtype InputEventInit.inputType specification>
+setInputType :: (MonadDOM m, ToJSString val) => InputEventInit -> val -> m ()
+setInputType self val = liftDOM (void ((js_setInputType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inputType\"]; })"
+        js_getInputType :: InputEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-inputtype InputEventInit.inputType specification>
+getInputType :: (MonadDOM m, FromJSString result) => InputEventInit -> m (Maybe result)
+getInputType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getInputType (self))))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-inputtype InputEventInit.inputType specification>
+getInputTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => InputEventInit -> m result
+getInputTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getInputType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-inputtype InputEventInit.inputType specification>
+getInputTypeUnchecked :: (MonadDOM m, FromJSString result) => InputEventInit -> m result
+getInputTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getInputType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dataTransfer\"] = $2; })"
+        js_setDataTransfer :: InputEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-datatransfer InputEventInit.dataTransfer specification>
+setDataTransfer :: (MonadDOM m) => InputEventInit -> Maybe DataTransfer -> m ()
+setDataTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDataTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
+        js_getDataTransfer :: InputEventInit -> IO JSVal
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-datatransfer InputEventInit.dataTransfer specification>
+getDataTransfer :: (MonadDOM m) => InputEventInit -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((js_getDataTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-datatransfer InputEventInit.dataTransfer specification>
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => InputEventInit -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((js_getDataTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-datatransfer InputEventInit.dataTransfer specification>
+getDataTransferUnchecked :: (MonadDOM m) => InputEventInit -> m DataTransfer
+getDataTransferUnchecked self = liftDOM ((pFromJSVal <$> (js_getDataTransfer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"targetRanges\"] = $2; })"
+        js_setTargetRanges :: InputEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-targetranges InputEventInit.targetRanges specification>
+setTargetRanges :: (MonadDOM m) => InputEventInit -> [StaticRange] -> m ()
+setTargetRanges self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTargetRanges (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"targetRanges\"]; })"
+        js_getTargetRanges :: InputEventInit -> IO JSVal
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-targetranges InputEventInit.targetRanges specification>
+getTargetRanges :: (MonadDOM m) => InputEventInit -> m (Maybe [StaticRange])
+getTargetRanges self = liftDOM (((js_getTargetRanges (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-targetranges InputEventInit.targetRanges specification>
+getTargetRangesUnsafe :: (MonadDOM m, HasCallStack) => InputEventInit -> m [StaticRange]
+getTargetRangesUnsafe self = liftDOM ((((js_getTargetRanges (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-targetranges InputEventInit.targetRanges specification>
+getTargetRangesUnchecked :: (MonadDOM m) => InputEventInit -> m [StaticRange]
+getTargetRangesUnchecked self = liftDOM (((js_getTargetRanges (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs b/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs
+++ /dev/null
@@ -1,383 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost
-       (js_loaded, loaded, js_closeWindow, closeWindow, js_bringToFront,
-        bringToFront, js_inspectedURLChanged, inspectedURLChanged,
-        js_setZoomFactor, setZoomFactor, js_zoomFactor, zoomFactor,
-        zoomFactor_, js_userInterfaceLayoutDirection,
-        userInterfaceLayoutDirection, userInterfaceLayoutDirection_,
-        js_requestSetDockSide, requestSetDockSide,
-        js_setAttachedWindowHeight, setAttachedWindowHeight,
-        js_setAttachedWindowWidth, setAttachedWindowWidth,
-        js_startWindowDrag, startWindowDrag, js_moveWindowBy, moveWindowBy,
-        js_localizedStringsURL, localizedStringsURL, localizedStringsURL_,
-        js_backendCommandsURL, backendCommandsURL, backendCommandsURL_,
-        js_debuggableType, debuggableType, debuggableType_,
-        js_inspectionLevel, inspectionLevel, inspectionLevel_, js_copyText,
-        copyText, js_killText, killText, js_openInNewTab, openInNewTab,
-        js_canSave, canSave, canSave_, js_save, save, js_append, append,
-        js_close, close, js_platform, platform, platform_, js_port, port,
-        port_, js_showContextMenu, showContextMenu,
-        js_dispatchEventAsContextMenuEvent,
-        dispatchEventAsContextMenuEvent, js_sendMessageToBackend,
-        sendMessageToBackend, js_unbufferedLog, unbufferedLog,
-        js_isUnderTest, isUnderTest, isUnderTest_, js_beep, beep,
-        InspectorFrontendHost(..), gTypeInspectorFrontendHost)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"loaded\"](); })" js_loaded ::
-        InspectorFrontendHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.loaded Mozilla InspectorFrontendHost.loaded documentation> 
-loaded :: (MonadIO m) => InspectorFrontendHost -> m ()
-loaded self = liftIO (js_loaded self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"closeWindow\"](); })"
-        js_closeWindow :: InspectorFrontendHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.closeWindow Mozilla InspectorFrontendHost.closeWindow documentation> 
-closeWindow :: (MonadIO m) => InspectorFrontendHost -> m ()
-closeWindow self = liftIO (js_closeWindow self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bringToFront\"](); })"
-        js_bringToFront :: InspectorFrontendHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.bringToFront Mozilla InspectorFrontendHost.bringToFront documentation> 
-bringToFront :: (MonadIO m) => InspectorFrontendHost -> m ()
-bringToFront self = liftIO (js_bringToFront self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"inspectedURLChanged\"]($2); })"
-        js_inspectedURLChanged ::
-        InspectorFrontendHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectedURLChanged Mozilla InspectorFrontendHost.inspectedURLChanged documentation> 
-inspectedURLChanged ::
-                    (MonadIO m, ToJSString newURL) =>
-                      InspectorFrontendHost -> newURL -> m ()
-inspectedURLChanged self newURL
-  = liftIO (js_inspectedURLChanged self (toJSString newURL))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setZoomFactor\"]($2); })"
-        js_setZoomFactor :: InspectorFrontendHost -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setZoomFactor Mozilla InspectorFrontendHost.setZoomFactor documentation> 
-setZoomFactor ::
-              (MonadIO m) => InspectorFrontendHost -> Float -> m ()
-setZoomFactor self zoom = liftIO (js_setZoomFactor self zoom)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"zoomFactor\"](); })"
-        js_zoomFactor :: InspectorFrontendHost -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.zoomFactor Mozilla InspectorFrontendHost.zoomFactor documentation> 
-zoomFactor :: (MonadIO m) => InspectorFrontendHost -> m Float
-zoomFactor self = liftIO (js_zoomFactor self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.zoomFactor Mozilla InspectorFrontendHost.zoomFactor documentation> 
-zoomFactor_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-zoomFactor_ self = liftIO (void (js_zoomFactor self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"userInterfaceLayoutDirection\"](); })"
-        js_userInterfaceLayoutDirection ::
-        InspectorFrontendHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.userInterfaceLayoutDirection Mozilla InspectorFrontendHost.userInterfaceLayoutDirection documentation> 
-userInterfaceLayoutDirection ::
-                             (MonadIO m, FromJSString result) =>
-                               InspectorFrontendHost -> m result
-userInterfaceLayoutDirection self
-  = liftIO (fromJSString <$> (js_userInterfaceLayoutDirection self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.userInterfaceLayoutDirection Mozilla InspectorFrontendHost.userInterfaceLayoutDirection documentation> 
-userInterfaceLayoutDirection_ ::
-                              (MonadIO m) => InspectorFrontendHost -> m ()
-userInterfaceLayoutDirection_ self
-  = liftIO (void (js_userInterfaceLayoutDirection self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"requestSetDockSide\"]($2); })"
-        js_requestSetDockSide :: InspectorFrontendHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.requestSetDockSide Mozilla InspectorFrontendHost.requestSetDockSide documentation> 
-requestSetDockSide ::
-                   (MonadIO m, ToJSString side) =>
-                     InspectorFrontendHost -> side -> m ()
-requestSetDockSide self side
-  = liftIO (js_requestSetDockSide self (toJSString side))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"setAttachedWindowHeight\"]($2); })" js_setAttachedWindowHeight ::
-        InspectorFrontendHost -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowHeight Mozilla InspectorFrontendHost.setAttachedWindowHeight documentation> 
-setAttachedWindowHeight ::
-                        (MonadIO m) => InspectorFrontendHost -> Word -> m ()
-setAttachedWindowHeight self height
-  = liftIO (js_setAttachedWindowHeight self height)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"setAttachedWindowWidth\"]($2); })" js_setAttachedWindowWidth ::
-        InspectorFrontendHost -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowWidth Mozilla InspectorFrontendHost.setAttachedWindowWidth documentation> 
-setAttachedWindowWidth ::
-                       (MonadIO m) => InspectorFrontendHost -> Word -> m ()
-setAttachedWindowWidth self width
-  = liftIO (js_setAttachedWindowWidth self width)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"startWindowDrag\"](); })"
-        js_startWindowDrag :: InspectorFrontendHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.startWindowDrag Mozilla InspectorFrontendHost.startWindowDrag documentation> 
-startWindowDrag :: (MonadIO m) => InspectorFrontendHost -> m ()
-startWindowDrag self = liftIO (js_startWindowDrag self)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveWindowBy\"]($2, $3); })"
-        js_moveWindowBy :: InspectorFrontendHost -> Float -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.moveWindowBy Mozilla InspectorFrontendHost.moveWindowBy documentation> 
-moveWindowBy ::
-             (MonadIO m) => InspectorFrontendHost -> Float -> Float -> m ()
-moveWindowBy self x y = liftIO (js_moveWindowBy self x y)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"localizedStringsURL\"](); })"
-        js_localizedStringsURL :: InspectorFrontendHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.localizedStringsURL Mozilla InspectorFrontendHost.localizedStringsURL documentation> 
-localizedStringsURL ::
-                    (MonadIO m, FromJSString result) =>
-                      InspectorFrontendHost -> m result
-localizedStringsURL self
-  = liftIO (fromJSString <$> (js_localizedStringsURL self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.localizedStringsURL Mozilla InspectorFrontendHost.localizedStringsURL documentation> 
-localizedStringsURL_ ::
-                     (MonadIO m) => InspectorFrontendHost -> m ()
-localizedStringsURL_ self
-  = liftIO (void (js_localizedStringsURL self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"backendCommandsURL\"](); })"
-        js_backendCommandsURL :: InspectorFrontendHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.backendCommandsURL Mozilla InspectorFrontendHost.backendCommandsURL documentation> 
-backendCommandsURL ::
-                   (MonadIO m, FromJSString result) =>
-                     InspectorFrontendHost -> m result
-backendCommandsURL self
-  = liftIO (fromJSString <$> (js_backendCommandsURL self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.backendCommandsURL Mozilla InspectorFrontendHost.backendCommandsURL documentation> 
-backendCommandsURL_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-backendCommandsURL_ self
-  = liftIO (void (js_backendCommandsURL self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"debuggableType\"](); })"
-        js_debuggableType :: InspectorFrontendHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.debuggableType Mozilla InspectorFrontendHost.debuggableType documentation> 
-debuggableType ::
-               (MonadIO m, FromJSString result) =>
-                 InspectorFrontendHost -> m result
-debuggableType self
-  = liftIO (fromJSString <$> (js_debuggableType self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.debuggableType Mozilla InspectorFrontendHost.debuggableType documentation> 
-debuggableType_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-debuggableType_ self = liftIO (void (js_debuggableType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"inspectionLevel\"](); })"
-        js_inspectionLevel :: InspectorFrontendHost -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectionLevel Mozilla InspectorFrontendHost.inspectionLevel documentation> 
-inspectionLevel :: (MonadIO m) => InspectorFrontendHost -> m Word
-inspectionLevel self = liftIO (js_inspectionLevel self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectionLevel Mozilla InspectorFrontendHost.inspectionLevel documentation> 
-inspectionLevel_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-inspectionLevel_ self = liftIO (void (js_inspectionLevel self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"copyText\"]($2); })" js_copyText
-        :: InspectorFrontendHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.copyText Mozilla InspectorFrontendHost.copyText documentation> 
-copyText ::
-         (MonadIO m, ToJSString text) =>
-           InspectorFrontendHost -> text -> m ()
-copyText self text = liftIO (js_copyText self (toJSString text))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"killText\"]($2, $3, $4); })"
-        js_killText ::
-        InspectorFrontendHost -> JSString -> Bool -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.killText Mozilla InspectorFrontendHost.killText documentation> 
-killText ::
-         (MonadIO m, ToJSString text) =>
-           InspectorFrontendHost -> text -> Bool -> Bool -> m ()
-killText self text shouldPrependToKillRing shouldStartNewSequence
-  = liftIO
-      (js_killText self (toJSString text) shouldPrependToKillRing
-         shouldStartNewSequence)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"openInNewTab\"]($2); })"
-        js_openInNewTab :: InspectorFrontendHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.openInNewTab Mozilla InspectorFrontendHost.openInNewTab documentation> 
-openInNewTab ::
-             (MonadIO m, ToJSString url) => InspectorFrontendHost -> url -> m ()
-openInNewTab self url
-  = liftIO (js_openInNewTab self (toJSString url))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"canSave\"]() ? 1 : 0); })"
-        js_canSave :: InspectorFrontendHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSave Mozilla InspectorFrontendHost.canSave documentation> 
-canSave :: (MonadIO m) => InspectorFrontendHost -> m Bool
-canSave self = liftIO (js_canSave self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSave Mozilla InspectorFrontendHost.canSave documentation> 
-canSave_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-canSave_ self = liftIO (void (js_canSave self))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"save\"]($2, $3, $4, $5); })"
-        js_save ::
-        InspectorFrontendHost ->
-          JSString -> JSString -> Bool -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.save Mozilla InspectorFrontendHost.save documentation> 
-save ::
-     (MonadIO m, ToJSString url, ToJSString content) =>
-       InspectorFrontendHost -> url -> content -> Bool -> Bool -> m ()
-save self url content base64Encoded forceSaveAs
-  = liftIO
-      (js_save self (toJSString url) (toJSString content) base64Encoded
-         forceSaveAs)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
-        :: InspectorFrontendHost -> JSString -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.append Mozilla InspectorFrontendHost.append documentation> 
-append ::
-       (MonadIO m, ToJSString url, ToJSString content) =>
-         InspectorFrontendHost -> url -> content -> m ()
-append self url content
-  = liftIO (js_append self (toJSString url) (toJSString content))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"close\"]($2); })" js_close ::
-        InspectorFrontendHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.close Mozilla InspectorFrontendHost.close documentation> 
-close ::
-      (MonadIO m, ToJSString url) => InspectorFrontendHost -> url -> m ()
-close self url = liftIO (js_close self (toJSString url))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"platform\"](); })" js_platform
-        :: InspectorFrontendHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.platform Mozilla InspectorFrontendHost.platform documentation> 
-platform ::
-         (MonadIO m, FromJSString result) =>
-           InspectorFrontendHost -> m result
-platform self = liftIO (fromJSString <$> (js_platform self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.platform Mozilla InspectorFrontendHost.platform documentation> 
-platform_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-platform_ self = liftIO (void (js_platform self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"port\"](); })" js_port ::
-        InspectorFrontendHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.port Mozilla InspectorFrontendHost.port documentation> 
-port ::
-     (MonadIO m, FromJSString result) =>
-       InspectorFrontendHost -> m result
-port self = liftIO (fromJSString <$> (js_port self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.port Mozilla InspectorFrontendHost.port documentation> 
-port_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-port_ self = liftIO (void (js_port self))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"showContextMenu\"]($2, $3); })"
-        js_showContextMenu ::
-        InspectorFrontendHost -> MouseEvent -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.showContextMenu Mozilla InspectorFrontendHost.showContextMenu documentation> 
-showContextMenu ::
-                (MonadIO m, IsMouseEvent event, ToJSVal items) =>
-                  InspectorFrontendHost -> event -> items -> m ()
-showContextMenu self event items
-  = liftIO
-      (toJSVal items >>=
-         \ items' -> js_showContextMenu self (toMouseEvent event) items')
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"dispatchEventAsContextMenuEvent\"]($2); })"
-        js_dispatchEventAsContextMenuEvent ::
-        InspectorFrontendHost -> Optional Event -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.dispatchEventAsContextMenuEvent Mozilla InspectorFrontendHost.dispatchEventAsContextMenuEvent documentation> 
-dispatchEventAsContextMenuEvent ::
-                                (MonadIO m, IsEvent event) =>
-                                  InspectorFrontendHost -> Maybe event -> m ()
-dispatchEventAsContextMenuEvent self event
-  = liftIO
-      (js_dispatchEventAsContextMenuEvent self
-         (maybeToOptional (fmap toEvent event)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"sendMessageToBackend\"]($2); })"
-        js_sendMessageToBackend ::
-        InspectorFrontendHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.sendMessageToBackend Mozilla InspectorFrontendHost.sendMessageToBackend documentation> 
-sendMessageToBackend ::
-                     (MonadIO m, ToJSString message) =>
-                       InspectorFrontendHost -> message -> m ()
-sendMessageToBackend self message
-  = liftIO (js_sendMessageToBackend self (toJSString message))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"unbufferedLog\"]($2); })"
-        js_unbufferedLog :: InspectorFrontendHost -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.unbufferedLog Mozilla InspectorFrontendHost.unbufferedLog documentation> 
-unbufferedLog ::
-              (MonadIO m, ToJSString message) =>
-                InspectorFrontendHost -> message -> m ()
-unbufferedLog self message
-  = liftIO (js_unbufferedLog self (toJSString message))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"isUnderTest\"]() ? 1 : 0); })"
-        js_isUnderTest :: InspectorFrontendHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.isUnderTest Mozilla InspectorFrontendHost.isUnderTest documentation> 
-isUnderTest :: (MonadIO m) => InspectorFrontendHost -> m Bool
-isUnderTest self = liftIO (js_isUnderTest self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.isUnderTest Mozilla InspectorFrontendHost.isUnderTest documentation> 
-isUnderTest_ :: (MonadIO m) => InspectorFrontendHost -> m ()
-isUnderTest_ self = liftIO (void (js_isUnderTest self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"beep\"](); })" js_beep ::
-        InspectorFrontendHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.beep Mozilla InspectorFrontendHost.beep documentation> 
-beep :: (MonadIO m) => InspectorFrontendHost -> m ()
-beep self = liftIO (js_beep self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InstallEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/InstallEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/InstallEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.InstallEvent
+       (js_newInstallEvent, js_addRoutes, newInstallEvent, addRoutes, InstallEvent(..), gTypeInstallEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"InstallEvent\"]($1, $2); })"
+        js_newInstallEvent :: JSString -> JSVal -> IO InstallEvent
+-- | <https://developer.mozilla.org/docs/Web/API/InstallEvent/InstallEvent MDN InstallEvent. documentation>
+newInstallEvent :: (MonadDOM m, ToJSString type', IsExtendableEventInit eventInitDict) => type' -> Maybe eventInitDict -> m InstallEvent
+newInstallEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newInstallEvent (toJSString type') a2'))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"addRoutes\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_addRoutes :: InstallEvent -> RouterRuleOrSequenceRouterRule -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/InstallEvent/addRoutes MDN InstallEvent.addRoutes documentation>
+addRoutes :: (MonadDOM m, IsRouterRuleOrSequenceRouterRule rules) => InstallEvent -> rules -> m ()
+addRoutes self rules = liftDOM (void (((js_addRoutes (self) (Types.toRouterRuleOrSequenceRouterRule rules)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
@@ -1,125 +1,83 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from intersection-observer (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IntersectionObserver
-       (js_newIntersectionObserver, newIntersectionObserver, js_observe,
-        observe, js_unobserve, unobserve, js_disconnect, disconnect,
-        js_takeRecords, takeRecords, takeRecords_, js_getRoot, getRoot,
-        getRootUnsafe, getRootUnchecked, js_getRootMargin, getRootMargin,
-        js_getThresholds, getThresholds, IntersectionObserver(..),
-        gTypeIntersectionObserver)
+       (js_newIntersectionObserver, js_disconnect, js_observe, js_takeRecords, js_unobserve, js_getRoot, js_getRootMargin, js_getScrollMargin, js_getThresholds, newIntersectionObserver, disconnect, observe, takeRecords, takeRecords_, unobserve, getRoot, getRootUnsafe, getRootUnchecked, getRootMargin, getScrollMargin, getThresholds, IntersectionObserver(..), gTypeIntersectionObserver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"IntersectionObserver\"]($1,\n$2); })"
-        js_newIntersectionObserver ::
-        IntersectionObserverCallback ->
-          Optional IntersectionObserverInit -> IO IntersectionObserver
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver Mozilla IntersectionObserver documentation> 
-newIntersectionObserver ::
-                        (MonadIO m) =>
-                          IntersectionObserverCallback ->
-                            Maybe IntersectionObserverInit -> m IntersectionObserver
-newIntersectionObserver callback options
-  = liftIO
-      (js_newIntersectionObserver callback (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"observe\"]($2); })" js_observe
-        :: IntersectionObserver -> Element -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.observe Mozilla IntersectionObserver.observe documentation> 
-observe ::
-        (MonadIO m, IsElement target) =>
-          IntersectionObserver -> target -> m ()
-observe self target = liftIO (js_observe self (toElement target))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"unobserve\"]($2); })"
-        js_unobserve :: IntersectionObserver -> Element -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"IntersectionObserver\"]($1, $2); })"
+        js_newIntersectionObserver :: JSVal -> JSVal -> IO IntersectionObserver
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/IntersectionObserver MDN IntersectionObserver. documentation>
+newIntersectionObserver :: (MonadDOM m) => IntersectionObserverCallback -> Maybe IntersectionObserverInit -> m IntersectionObserver
+newIntersectionObserver callback' options = liftDOM (((toJSVal callback') >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newIntersectionObserver a1' a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.unobserve Mozilla IntersectionObserver.unobserve documentation> 
-unobserve ::
-          (MonadIO m, IsElement target) =>
-            IntersectionObserver -> target -> m ()
-unobserve self target
-  = liftIO (js_unobserve self (toElement target))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"disconnect\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"disconnect\"](); })"
         js_disconnect :: IntersectionObserver -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/disconnect MDN IntersectionObserver.disconnect documentation>
+disconnect :: (MonadDOM m) => IntersectionObserver -> m ()
+disconnect self = liftDOM (void ((js_disconnect (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.disconnect Mozilla IntersectionObserver.disconnect documentation> 
-disconnect :: (MonadIO m) => IntersectionObserver -> m ()
-disconnect self = liftIO (js_disconnect self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"takeRecords\"](); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"observe\"]($2); })"
+        js_observe :: IntersectionObserver -> Element -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/observe MDN IntersectionObserver.observe documentation>
+observe :: (MonadDOM m, IsElement target) => IntersectionObserver -> target -> m ()
+observe self target = liftDOM (void ((js_observe (self) (Types.toElement target))))
+
+foreign import javascript safe "(($1) => { return $1[\"takeRecords\"](); })"
         js_takeRecords :: IntersectionObserver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/takeRecords MDN IntersectionObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => IntersectionObserver -> m [IntersectionObserverEntry]
+takeRecords self = liftDOM (((js_takeRecords (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.takeRecords Mozilla IntersectionObserver.takeRecords documentation> 
-takeRecords ::
-            (MonadIO m) =>
-              IntersectionObserver -> m [IntersectionObserverEntry]
-takeRecords self
-  = liftIO ((js_takeRecords self) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/takeRecords MDN IntersectionObserver.takeRecords documentation>
+takeRecords_ :: (MonadDOM m) => IntersectionObserver -> m ()
+takeRecords_ self = liftDOM (void ((js_takeRecords (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.takeRecords Mozilla IntersectionObserver.takeRecords documentation> 
-takeRecords_ :: (MonadIO m) => IntersectionObserver -> m ()
-takeRecords_ self = liftIO (void (js_takeRecords self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })" js_getRoot ::
-        IntersectionObserver -> IO (Nullable Element)
+foreign import javascript safe "(($1, $2) => { return $1[\"unobserve\"]($2); })"
+        js_unobserve :: IntersectionObserver -> Element -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/unobserve MDN IntersectionObserver.unobserve documentation>
+unobserve :: (MonadDOM m, IsElement target) => IntersectionObserver -> target -> m ()
+unobserve self target = liftDOM (void ((js_unobserve (self) (Types.toElement target))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
-getRoot :: (MonadIO m) => IntersectionObserver -> m (Maybe Element)
-getRoot self = liftIO (nullableToMaybe <$> (js_getRoot self))
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })"
+        js_getRoot :: IntersectionObserver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/root MDN IntersectionObserver.root documentation>
+getRoot :: (MonadDOM m) => IntersectionObserver -> m (Maybe ElementOrDocument)
+getRoot self = liftDOM (((js_getRoot (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
-getRootUnsafe ::
-              (MonadIO m, HasCallStack) => IntersectionObserver -> m Element
-getRootUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getRoot self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/root MDN IntersectionObserver.root documentation>
+getRootUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserver -> m ElementOrDocument
+getRootUnsafe self = liftDOM ((((js_getRoot (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
-getRootUnchecked ::
-                 (MonadIO m) => IntersectionObserver -> m Element
-getRootUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getRoot self))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/root MDN IntersectionObserver.root documentation>
+getRootUnchecked :: (MonadDOM m) => IntersectionObserver -> m ElementOrDocument
+getRootUnchecked self = liftDOM ((pFromJSVal <$> (js_getRoot (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"rootMargin\"]; })"
         js_getRootMargin :: IntersectionObserver -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/rootMargin MDN IntersectionObserver.rootMargin documentation>
+getRootMargin :: (MonadDOM m, FromJSString result) => IntersectionObserver -> m result
+getRootMargin self = liftDOM ((fromJSString <$> (js_getRootMargin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.rootMargin Mozilla IntersectionObserver.rootMargin documentation> 
-getRootMargin ::
-              (MonadIO m, FromJSString result) =>
-                IntersectionObserver -> m result
-getRootMargin self
-  = liftIO (fromJSString <$> (js_getRootMargin self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollMargin\"]; })"
+        js_getScrollMargin :: IntersectionObserver -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/scrollMargin MDN IntersectionObserver.scrollMargin documentation>
+getScrollMargin :: (MonadDOM m, FromJSString result) => IntersectionObserver -> m result
+getScrollMargin self = liftDOM ((fromJSString <$> (js_getScrollMargin (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"thresholds\"]; })"
         js_getThresholds :: IntersectionObserver -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.thresholds Mozilla IntersectionObserver.thresholds documentation> 
-getThresholds :: (MonadIO m) => IntersectionObserver -> m [Double]
-getThresholds self
-  = liftIO ((js_getThresholds self) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/thresholds MDN IntersectionObserver.thresholds documentation>
+getThresholds :: (MonadDOM m) => IntersectionObserver -> m [Double]
+getThresholds self = liftDOM (((js_getThresholds (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
@@ -1,74 +1,32 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from intersection-observer (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback
-       (newIntersectionObserverCallback,
-        newIntersectionObserverCallbackSync,
-        newIntersectionObserverCallbackAsync, IntersectionObserverCallback)
+       (newIntersectionObserverCallback, newIntersectionObserverCallbackSync, newIntersectionObserverCallbackAsync, IntersectionObserverCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
-newIntersectionObserverCallback ::
-                                (MonadIO m) =>
-                                  ([IntersectionObserverEntry] -> IntersectionObserver -> IO ()) ->
-                                    m IntersectionObserverCallback
-newIntersectionObserverCallback callback
-  = liftIO
-      (IntersectionObserverCallback <$>
-         syncCallback2 ThrowWouldBlock
-           (\ entries observer ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newIntersectionObserverCallback :: (MonadDOM m) => ([IntersectionObserverEntry] -> IntersectionObserver -> IO ()) -> m IntersectionObserverCallback
+newIntersectionObserverCallback callback = liftDOM ((IntersectionObserverCallback . coerce) <$> syncCallback2 ContinueAsync (\ entries observer -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
-newIntersectionObserverCallbackSync ::
-                                    (MonadIO m) =>
-                                      ([IntersectionObserverEntry] -> IntersectionObserver -> IO ())
-                                        -> m IntersectionObserverCallback
-newIntersectionObserverCallbackSync callback
-  = liftIO
-      (IntersectionObserverCallback <$>
-         syncCallback2 ContinueAsync
-           (\ entries observer ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newIntersectionObserverCallbackSync :: (MonadDOM m) => ([IntersectionObserverEntry] -> IntersectionObserver -> IO ()) -> m IntersectionObserverCallback
+newIntersectionObserverCallbackSync callback = liftDOM ((IntersectionObserverCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ entries observer -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
-newIntersectionObserverCallbackAsync ::
-                                     (MonadIO m) =>
-                                       ([IntersectionObserverEntry] ->
-                                          IntersectionObserver -> IO ())
-                                         -> m IntersectionObserverCallback
-newIntersectionObserverCallbackAsync callback
-  = liftIO
-      (IntersectionObserverCallback <$>
-         asyncCallback2
-           (\ entries observer ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newIntersectionObserverCallbackAsync :: (MonadDOM m) => ([IntersectionObserverEntry] -> IntersectionObserver -> IO ()) -> m IntersectionObserverCallback
+newIntersectionObserverCallbackAsync callback = liftDOM ((IntersectionObserverCallback . coerce) <$> asyncCallback2 (\ entries observer -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
@@ -1,94 +1,73 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from intersection-observer (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry
-       (js_newIntersectionObserverEntry, newIntersectionObserverEntry,
-        js_getTime, getTime, js_getRootBounds, getRootBounds,
-        js_getBoundingClientRect, getBoundingClientRect,
-        js_getIntersectionRect, getIntersectionRect,
-        js_getIntersectionRatio, getIntersectionRatio, js_getTarget,
-        getTarget, IntersectionObserverEntry(..),
-        gTypeIntersectionObserverEntry)
+       (js_newIntersectionObserverEntry, js_getTime, js_getRootBounds, js_getBoundingClientRect, js_getIntersectionRect, js_getIsIntersecting, js_getIntersectionRatio, js_getTarget, newIntersectionObserverEntry, getTime, getRootBounds, getRootBoundsUnsafe, getRootBoundsUnchecked, getBoundingClientRect, getIntersectionRect, getIsIntersecting, getIntersectionRatio, getTarget, IntersectionObserverEntry(..), gTypeIntersectionObserverEntry)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"IntersectionObserverEntry\"]($1); })"
-        js_newIntersectionObserverEntry ::
-        IntersectionObserverEntryInit -> IO IntersectionObserverEntry
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry Mozilla IntersectionObserverEntry documentation> 
-newIntersectionObserverEntry ::
-                             (MonadIO m) =>
-                               IntersectionObserverEntryInit -> m IntersectionObserverEntry
-newIntersectionObserverEntry intersectionObserverEntryInit
-  = liftIO
-      (js_newIntersectionObserverEntry intersectionObserverEntryInit)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"time\"]; })" js_getTime ::
-        IntersectionObserverEntry -> IO DOMHighResTimeStamp
+foreign import javascript safe "(($1) => { return new globalThis[\"IntersectionObserverEntry\"]($1); })"
+        js_newIntersectionObserverEntry :: IntersectionObserverEntryInit -> IO IntersectionObserverEntry
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/IntersectionObserverEntry MDN IntersectionObserverEntry. documentation>
+newIntersectionObserverEntry :: (MonadDOM m) => IntersectionObserverEntryInit -> m IntersectionObserverEntry
+newIntersectionObserverEntry intersectionObserverEntryInit = liftDOM ((js_newIntersectionObserverEntry (intersectionObserverEntryInit)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.time Mozilla IntersectionObserverEntry.time documentation> 
-getTime ::
-        (MonadIO m) => IntersectionObserverEntry -> m DOMHighResTimeStamp
-getTime self = liftIO (js_getTime self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"time\"]; })"
+        js_getTime :: IntersectionObserverEntry -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/time MDN IntersectionObserverEntry.time documentation>
+getTime :: (MonadDOM m) => IntersectionObserverEntry -> m Double
+getTime self = liftDOM ((js_getTime (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"rootBounds\"]; })"
-        js_getRootBounds :: IntersectionObserverEntry -> IO DOMRectReadOnly
+        js_getRootBounds :: IntersectionObserverEntry -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/rootBounds MDN IntersectionObserverEntry.rootBounds documentation>
+getRootBounds :: (MonadDOM m) => IntersectionObserverEntry -> m (Maybe DOMRectReadOnly)
+getRootBounds self = liftDOM (((js_getRootBounds (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.rootBounds Mozilla IntersectionObserverEntry.rootBounds documentation> 
-getRootBounds ::
-              (MonadIO m) => IntersectionObserverEntry -> m DOMRectReadOnly
-getRootBounds self = liftIO (js_getRootBounds self)
- 
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/rootBounds MDN IntersectionObserverEntry.rootBounds documentation>
+getRootBoundsUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverEntry -> m DOMRectReadOnly
+getRootBoundsUnsafe self = liftDOM ((((js_getRootBounds (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/rootBounds MDN IntersectionObserverEntry.rootBounds documentation>
+getRootBoundsUnchecked :: (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getRootBoundsUnchecked self = liftDOM ((pFromJSVal <$> (js_getRootBounds (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"boundingClientRect\"]; })"
-        js_getBoundingClientRect ::
-        IntersectionObserverEntry -> IO DOMRectReadOnly
+        js_getBoundingClientRect :: IntersectionObserverEntry -> IO DOMRectReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/boundingClientRect MDN IntersectionObserverEntry.boundingClientRect documentation>
+getBoundingClientRect :: (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getBoundingClientRect self = liftDOM ((js_getBoundingClientRect (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.boundingClientRect Mozilla IntersectionObserverEntry.boundingClientRect documentation> 
-getBoundingClientRect ::
-                      (MonadIO m) => IntersectionObserverEntry -> m DOMRectReadOnly
-getBoundingClientRect self = liftIO (js_getBoundingClientRect self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"intersectionRect\"]; })"
-        js_getIntersectionRect ::
-        IntersectionObserverEntry -> IO DOMRectReadOnly
+        js_getIntersectionRect :: IntersectionObserverEntry -> IO DOMRectReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/intersectionRect MDN IntersectionObserverEntry.intersectionRect documentation>
+getIntersectionRect :: (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getIntersectionRect self = liftDOM ((js_getIntersectionRect (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.intersectionRect Mozilla IntersectionObserverEntry.intersectionRect documentation> 
-getIntersectionRect ::
-                    (MonadIO m) => IntersectionObserverEntry -> m DOMRectReadOnly
-getIntersectionRect self = liftIO (js_getIntersectionRect self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"isIntersecting\"]; })"
+        js_getIsIntersecting :: IntersectionObserverEntry -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/isIntersecting MDN IntersectionObserverEntry.isIntersecting documentation>
+getIsIntersecting :: (MonadDOM m) => IntersectionObserverEntry -> m Bool
+getIsIntersecting self = liftDOM ((js_getIsIntersecting (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"intersectionRatio\"]; })"
         js_getIntersectionRatio :: IntersectionObserverEntry -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.intersectionRatio Mozilla IntersectionObserverEntry.intersectionRatio documentation> 
-getIntersectionRatio ::
-                     (MonadIO m) => IntersectionObserverEntry -> m Double
-getIntersectionRatio self = liftIO (js_getIntersectionRatio self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        IntersectionObserverEntry -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/intersectionRatio MDN IntersectionObserverEntry.intersectionRatio documentation>
+getIntersectionRatio :: (MonadDOM m) => IntersectionObserverEntry -> m Double
+getIntersectionRatio self = liftDOM ((js_getIntersectionRatio (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.target Mozilla IntersectionObserverEntry.target documentation> 
-getTarget :: (MonadIO m) => IntersectionObserverEntry -> m Element
-getTarget self = liftIO (js_getTarget self)
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: IntersectionObserverEntry -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/target MDN IntersectionObserverEntry.target documentation>
+getTarget :: (MonadDOM m) => IntersectionObserverEntry -> m Element
+getTarget self = liftDOM ((js_getTarget (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntryInit.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntryInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntryInit.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from intersection-observer (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntryInit
+       (js_newIntersectionObserverEntryInit, js_setTime, js_getTime, js_setRootBounds, js_getRootBounds, js_setBoundingClientRect, js_getBoundingClientRect, js_setIntersectionRect, js_getIntersectionRect, js_setIsIntersecting, js_getIsIntersecting, js_setIsVisible, js_getIsVisible, js_setIntersectionRatio, js_getIntersectionRatio, js_setTarget, js_getTarget, newIntersectionObserverEntryInit, setTime, getTime, setRootBounds, getRootBounds, getRootBoundsUnsafe, getRootBoundsUnchecked, setBoundingClientRect, getBoundingClientRect, setIntersectionRect, getIntersectionRect, setIsIntersecting, getIsIntersecting, setIsVisible, getIsVisible, setIntersectionRatio, getIntersectionRatio, setTarget, getTarget, IntersectionObserverEntryInit(..), gTypeIntersectionObserverEntryInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return ({\"time\": $1, \"rootBounds\": $2, \"boundingClientRect\": $3, \"intersectionRect\": $4, \"isIntersecting\": $5, \"isVisible\": $6, \"intersectionRatio\": $7, \"target\": $8}); })"
+        js_newIntersectionObserverEntryInit :: Double -> JSVal -> DOMRectInit -> DOMRectInit -> Bool -> Bool -> Double -> Element -> IO IntersectionObserverEntryInit
+-- | <https://w3c.github.io/IntersectionObserver/#dictdef-intersectionobserverentryinit IntersectionObserverEntryInit specification>
+newIntersectionObserverEntryInit :: (MonadDOM m, IsElement target) => Double -> Maybe DOMRectInit -> DOMRectInit -> DOMRectInit -> Bool -> Bool -> Double -> target -> m IntersectionObserverEntryInit
+newIntersectionObserverEntryInit time rootBounds boundingClientRect intersectionRect isIntersecting isVisible intersectionRatio target = liftDOM (((toJSVal rootBounds) >>= \a2' -> js_newIntersectionObserverEntryInit (time) a2' (boundingClientRect) (intersectionRect) (isIntersecting) (isVisible) (intersectionRatio) (Types.toElement target)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"time\"] = $2; })"
+        js_setTime :: IntersectionObserverEntryInit -> Double -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-time IntersectionObserverEntryInit.time specification>
+setTime :: (MonadDOM m) => IntersectionObserverEntryInit -> Double -> m ()
+setTime self val = liftDOM (void ((js_setTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"time\"]; })"
+        js_getTime :: IntersectionObserverEntryInit -> IO Double
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-time IntersectionObserverEntryInit.time specification>
+getTime :: (MonadDOM m) => IntersectionObserverEntryInit -> m Double
+getTime self = liftDOM ((js_getTime (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rootBounds\"] = $2; })"
+        js_setRootBounds :: IntersectionObserverEntryInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-rootbounds IntersectionObserverEntryInit.rootBounds specification>
+setRootBounds :: (MonadDOM m) => IntersectionObserverEntryInit -> Maybe DOMRectInit -> m ()
+setRootBounds self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRootBounds (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rootBounds\"]; })"
+        js_getRootBounds :: IntersectionObserverEntryInit -> IO JSVal
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-rootbounds IntersectionObserverEntryInit.rootBounds specification>
+getRootBounds :: (MonadDOM m) => IntersectionObserverEntryInit -> m (Maybe DOMRectInit)
+getRootBounds self = liftDOM (((js_getRootBounds (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-rootbounds IntersectionObserverEntryInit.rootBounds specification>
+getRootBoundsUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverEntryInit -> m DOMRectInit
+getRootBoundsUnsafe self = liftDOM ((((js_getRootBounds (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-rootbounds IntersectionObserverEntryInit.rootBounds specification>
+getRootBoundsUnchecked :: (MonadDOM m) => IntersectionObserverEntryInit -> m DOMRectInit
+getRootBoundsUnchecked self = liftDOM ((pFromJSVal <$> (js_getRootBounds (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"boundingClientRect\"] = $2; })"
+        js_setBoundingClientRect :: IntersectionObserverEntryInit -> DOMRectInit -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-boundingclientrect IntersectionObserverEntryInit.boundingClientRect specification>
+setBoundingClientRect :: (MonadDOM m) => IntersectionObserverEntryInit -> DOMRectInit -> m ()
+setBoundingClientRect self val = liftDOM (void ((js_setBoundingClientRect (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"boundingClientRect\"]; })"
+        js_getBoundingClientRect :: IntersectionObserverEntryInit -> IO DOMRectInit
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-boundingclientrect IntersectionObserverEntryInit.boundingClientRect specification>
+getBoundingClientRect :: (MonadDOM m) => IntersectionObserverEntryInit -> m DOMRectInit
+getBoundingClientRect self = liftDOM ((js_getBoundingClientRect (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"intersectionRect\"] = $2; })"
+        js_setIntersectionRect :: IntersectionObserverEntryInit -> DOMRectInit -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionrect IntersectionObserverEntryInit.intersectionRect specification>
+setIntersectionRect :: (MonadDOM m) => IntersectionObserverEntryInit -> DOMRectInit -> m ()
+setIntersectionRect self val = liftDOM (void ((js_setIntersectionRect (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"intersectionRect\"]; })"
+        js_getIntersectionRect :: IntersectionObserverEntryInit -> IO DOMRectInit
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionrect IntersectionObserverEntryInit.intersectionRect specification>
+getIntersectionRect :: (MonadDOM m) => IntersectionObserverEntryInit -> m DOMRectInit
+getIntersectionRect self = liftDOM ((js_getIntersectionRect (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"isIntersecting\"] = $2; })"
+        js_setIsIntersecting :: IntersectionObserverEntryInit -> Bool -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isintersecting IntersectionObserverEntryInit.isIntersecting specification>
+setIsIntersecting :: (MonadDOM m) => IntersectionObserverEntryInit -> Bool -> m ()
+setIsIntersecting self val = liftDOM (void ((js_setIsIntersecting (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isIntersecting\"]; })"
+        js_getIsIntersecting :: IntersectionObserverEntryInit -> IO Bool
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isintersecting IntersectionObserverEntryInit.isIntersecting specification>
+getIsIntersecting :: (MonadDOM m) => IntersectionObserverEntryInit -> m Bool
+getIsIntersecting self = liftDOM ((js_getIsIntersecting (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"isVisible\"] = $2; })"
+        js_setIsVisible :: IntersectionObserverEntryInit -> Bool -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isvisible IntersectionObserverEntryInit.isVisible specification>
+setIsVisible :: (MonadDOM m) => IntersectionObserverEntryInit -> Bool -> m ()
+setIsVisible self val = liftDOM (void ((js_setIsVisible (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isVisible\"]; })"
+        js_getIsVisible :: IntersectionObserverEntryInit -> IO Bool
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isvisible IntersectionObserverEntryInit.isVisible specification>
+getIsVisible :: (MonadDOM m) => IntersectionObserverEntryInit -> m Bool
+getIsVisible self = liftDOM ((js_getIsVisible (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"intersectionRatio\"] = $2; })"
+        js_setIntersectionRatio :: IntersectionObserverEntryInit -> Double -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionratio IntersectionObserverEntryInit.intersectionRatio specification>
+setIntersectionRatio :: (MonadDOM m) => IntersectionObserverEntryInit -> Double -> m ()
+setIntersectionRatio self val = liftDOM (void ((js_setIntersectionRatio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"intersectionRatio\"]; })"
+        js_getIntersectionRatio :: IntersectionObserverEntryInit -> IO Double
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionratio IntersectionObserverEntryInit.intersectionRatio specification>
+getIntersectionRatio :: (MonadDOM m) => IntersectionObserverEntryInit -> m Double
+getIntersectionRatio self = liftDOM ((js_getIntersectionRatio (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: IntersectionObserverEntryInit -> Element -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-target IntersectionObserverEntryInit.target specification>
+setTarget :: (MonadDOM m, IsElement val) => IntersectionObserverEntryInit -> val -> m ()
+setTarget self val = liftDOM (void ((js_setTarget (self) (Types.toElement val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: IntersectionObserverEntryInit -> IO Element
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-target IntersectionObserverEntryInit.target specification>
+getTarget :: (MonadDOM m) => IntersectionObserverEntryInit -> m Element
+getTarget self = liftDOM ((js_getTarget (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverInit.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverInit.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from intersection-observer (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.IntersectionObserverInit
+       (js_newIntersectionObserverInit, js_setRoot, js_getRoot, js_setRootMargin, js_getRootMargin, js_setScrollMargin, js_getScrollMargin, js_setThreshold, js_getThreshold, js_setDelay, js_getDelay, js_setTrackVisibility, js_getTrackVisibility, newIntersectionObserverInit, setRoot, getRoot, getRootUnsafe, getRootUnchecked, setRootMargin, getRootMargin, getRootMarginUnsafe, getRootMarginUnchecked, setScrollMargin, getScrollMargin, getScrollMarginUnsafe, getScrollMarginUnchecked, setThreshold, getThreshold, getThresholdUnsafe, getThresholdUnchecked, setDelay, getDelay, getDelayUnsafe, getDelayUnchecked, setTrackVisibility, getTrackVisibility, getTrackVisibilityUnsafe, getTrackVisibilityUnchecked, IntersectionObserverInit(..), gTypeIntersectionObserverInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newIntersectionObserverInit :: IO IntersectionObserverInit
+-- | <https://w3c.github.io/IntersectionObserver/#dictdef-intersectionobserverinit IntersectionObserverInit specification>
+newIntersectionObserverInit :: (MonadDOM m) => m IntersectionObserverInit
+newIntersectionObserverInit = liftDOM ((js_newIntersectionObserverInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"root\"] = $2; })"
+        js_setRoot :: IntersectionObserverInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-root IntersectionObserverInit.root specification>
+setRoot :: (MonadDOM m, IsElementOrDocument val) => IntersectionObserverInit -> Maybe val -> m ()
+setRoot self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRoot (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })"
+        js_getRoot :: IntersectionObserverInit -> IO JSVal
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-root IntersectionObserverInit.root specification>
+getRoot :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe ElementOrDocument)
+getRoot self = liftDOM (((js_getRoot (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-root IntersectionObserverInit.root specification>
+getRootUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m ElementOrDocument
+getRootUnsafe self = liftDOM ((((js_getRoot (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-root IntersectionObserverInit.root specification>
+getRootUnchecked :: (MonadDOM m) => IntersectionObserverInit -> m ElementOrDocument
+getRootUnchecked self = liftDOM ((pFromJSVal <$> (js_getRoot (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rootMargin\"] = $2; })"
+        js_setRootMargin :: IntersectionObserverInit -> JSString -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-rootmargin IntersectionObserverInit.rootMargin specification>
+setRootMargin :: (MonadDOM m, ToJSString val) => IntersectionObserverInit -> val -> m ()
+setRootMargin self val = liftDOM (void ((js_setRootMargin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rootMargin\"]; })"
+        js_getRootMargin :: IntersectionObserverInit -> IO JSVal
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-rootmargin IntersectionObserverInit.rootMargin specification>
+getRootMargin :: (MonadDOM m, FromJSString result) => IntersectionObserverInit -> m (Maybe result)
+getRootMargin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRootMargin (self))))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-rootmargin IntersectionObserverInit.rootMargin specification>
+getRootMarginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IntersectionObserverInit -> m result
+getRootMarginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRootMargin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-rootmargin IntersectionObserverInit.rootMargin specification>
+getRootMarginUnchecked :: (MonadDOM m, FromJSString result) => IntersectionObserverInit -> m result
+getRootMarginUnchecked self = liftDOM ((pFromJSVal <$> (js_getRootMargin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scrollMargin\"] = $2; })"
+        js_setScrollMargin :: IntersectionObserverInit -> JSString -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-scrollmargin IntersectionObserverInit.scrollMargin specification>
+setScrollMargin :: (MonadDOM m, ToJSString val) => IntersectionObserverInit -> val -> m ()
+setScrollMargin self val = liftDOM (void ((js_setScrollMargin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollMargin\"]; })"
+        js_getScrollMargin :: IntersectionObserverInit -> IO JSVal
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-scrollmargin IntersectionObserverInit.scrollMargin specification>
+getScrollMargin :: (MonadDOM m, FromJSString result) => IntersectionObserverInit -> m (Maybe result)
+getScrollMargin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getScrollMargin (self))))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-scrollmargin IntersectionObserverInit.scrollMargin specification>
+getScrollMarginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IntersectionObserverInit -> m result
+getScrollMarginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getScrollMargin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-scrollmargin IntersectionObserverInit.scrollMargin specification>
+getScrollMarginUnchecked :: (MonadDOM m, FromJSString result) => IntersectionObserverInit -> m result
+getScrollMarginUnchecked self = liftDOM ((pFromJSVal <$> (js_getScrollMargin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"threshold\"] = $2; })"
+        js_setThreshold :: IntersectionObserverInit -> DoubleOrSequenceDouble -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-threshold IntersectionObserverInit.threshold specification>
+setThreshold :: (MonadDOM m, IsDoubleOrSequenceDouble val) => IntersectionObserverInit -> val -> m ()
+setThreshold self val = liftDOM (void ((js_setThreshold (self) (Types.toDoubleOrSequenceDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"threshold\"]; })"
+        js_getThreshold :: IntersectionObserverInit -> IO JSVal
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-threshold IntersectionObserverInit.threshold specification>
+getThreshold :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe DoubleOrSequenceDouble)
+getThreshold self = liftDOM (((js_getThreshold (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-threshold IntersectionObserverInit.threshold specification>
+getThresholdUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m DoubleOrSequenceDouble
+getThresholdUnsafe self = liftDOM ((((js_getThreshold (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-threshold IntersectionObserverInit.threshold specification>
+getThresholdUnchecked :: (MonadDOM m) => IntersectionObserverInit -> m DoubleOrSequenceDouble
+getThresholdUnchecked self = liftDOM ((pFromJSVal <$> (js_getThreshold (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"delay\"] = $2; })"
+        js_setDelay :: IntersectionObserverInit -> Int -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-delay IntersectionObserverInit.delay specification>
+setDelay :: (MonadDOM m) => IntersectionObserverInit -> Int -> m ()
+setDelay self val = liftDOM (void ((js_setDelay (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"delay\"]; })"
+        js_getDelay :: IntersectionObserverInit -> IO JSVal
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-delay IntersectionObserverInit.delay specification>
+getDelay :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe Int)
+getDelay self = liftDOM (((js_getDelay (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-delay IntersectionObserverInit.delay specification>
+getDelayUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m Int
+getDelayUnsafe self = liftDOM ((((js_getDelay (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-delay IntersectionObserverInit.delay specification>
+getDelayUnchecked :: (MonadDOM m) => IntersectionObserverInit -> m Int
+getDelayUnchecked self = liftDOM ((pFromJSVal <$> (js_getDelay (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"trackVisibility\"] = $2; })"
+        js_setTrackVisibility :: IntersectionObserverInit -> Bool -> IO ()
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-trackvisibility IntersectionObserverInit.trackVisibility specification>
+setTrackVisibility :: (MonadDOM m) => IntersectionObserverInit -> Bool -> m ()
+setTrackVisibility self val = liftDOM (void ((js_setTrackVisibility (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"trackVisibility\"]; })"
+        js_getTrackVisibility :: IntersectionObserverInit -> IO JSVal
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-trackvisibility IntersectionObserverInit.trackVisibility specification>
+getTrackVisibility :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe Bool)
+getTrackVisibility self = liftDOM (((js_getTrackVisibility (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-trackvisibility IntersectionObserverInit.trackVisibility specification>
+getTrackVisibilityUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m Bool
+getTrackVisibilityUnsafe self = liftDOM ((((js_getTrackVisibility (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-trackvisibility IntersectionObserverInit.trackVisibility specification>
+getTrackVisibilityUnchecked :: (MonadDOM m) => IntersectionObserverInit -> m Bool
+getTrackVisibilityUnchecked self = liftDOM ((pFromJSVal <$> (js_getTrackVisibility (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/JsonWebKey.hs b/src/GHCJS/DOM/JSFFI/Generated/JsonWebKey.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/JsonWebKey.hs
@@ -0,0 +1,423 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.JsonWebKey
+       (js_newJsonWebKey, js_setKty, js_getKty, js_setUse, js_getUse, js_setKeyOps, js_getKeyOps, js_setAlg, js_getAlg, js_setExt, js_getExt, js_setCrv, js_getCrv, js_setX, js_getX, js_setY, js_getY, js_setD, js_getD, js_setN, js_getN, js_setE, js_getE, js_setP, js_getP, js_setQ, js_getQ, js_setDp, js_getDp, js_setDq, js_getDq, js_setQi, js_getQi, js_setOth, js_getOth, js_setK, js_getK, js_setPub, js_getPub, js_setPriv, js_getPriv, newJsonWebKey, setKty, getKty, getKtyUnsafe, getKtyUnchecked, setUse, getUse, getUseUnsafe, getUseUnchecked, setKeyOps, getKeyOps, getKeyOpsUnsafe, getKeyOpsUnchecked, setAlg, getAlg, getAlgUnsafe, getAlgUnchecked, setExt, getExt, getExtUnsafe, getExtUnchecked, setCrv, getCrv, getCrvUnsafe, getCrvUnchecked, setX, getX, getXUnsafe, getXUnchecked, setY, getY, getYUnsafe, getYUnchecked, setD, getD, getDUnsafe, getDUnchecked, setN, getN, getNUnsafe, getNUnchecked, setE, getE, getEUnsafe, getEUnchecked, setP, getP, getPUnsafe, getPUnchecked, setQ, getQ, getQUnsafe, getQUnchecked, setDp, getDp, getDpUnsafe, getDpUnchecked, setDq, getDq, getDqUnsafe, getDqUnchecked, setQi, getQi, getQiUnsafe, getQiUnchecked, setOth, getOth, getOthUnsafe, getOthUnchecked, setK, getK, getKUnsafe, getKUnchecked, setPub, getPub, getPubUnsafe, getPubUnchecked, setPriv, getPriv, getPrivUnsafe, getPrivUnchecked, JsonWebKey(..), gTypeJsonWebKey)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newJsonWebKey :: IO JsonWebKey
+-- | <https://w3c.github.io/webcrypto/#dfn-JsonWebKey JsonWebKey specification>
+newJsonWebKey :: (MonadDOM m) => m JsonWebKey
+newJsonWebKey = liftDOM ((js_newJsonWebKey))
+
+foreign import javascript safe "(($1, $2) => { $1[\"kty\"] = $2; })"
+        js_setKty :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-kty JsonWebKey.kty specification>
+setKty :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setKty self val = liftDOM (void ((js_setKty (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"kty\"]; })"
+        js_getKty :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-kty JsonWebKey.kty specification>
+getKty :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getKty self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getKty (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-kty JsonWebKey.kty specification>
+getKtyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getKtyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getKty (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-kty JsonWebKey.kty specification>
+getKtyUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getKtyUnchecked self = liftDOM ((pFromJSVal <$> (js_getKty (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"use\"] = $2; })"
+        js_setUse :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-use JsonWebKey.use specification>
+setUse :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setUse self val = liftDOM (void ((js_setUse (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"use\"]; })"
+        js_getUse :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-use JsonWebKey.use specification>
+getUse :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getUse self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUse (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-use JsonWebKey.use specification>
+getUseUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getUseUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUse (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-use JsonWebKey.use specification>
+getUseUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getUseUnchecked self = liftDOM ((pFromJSVal <$> (js_getUse (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"key_ops\"] = $2; })"
+        js_setKeyOps :: JsonWebKey -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-key_ops JsonWebKey.key_ops specification>
+setKeyOps :: (MonadDOM m, ToJSString val) => JsonWebKey -> [val] -> m ()
+setKeyOps self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setKeyOps (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"key_ops\"]; })"
+        js_getKeyOps :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-key_ops JsonWebKey.key_ops specification>
+getKeyOps :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe [result])
+getKeyOps self = liftDOM (((js_getKeyOps (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-key_ops JsonWebKey.key_ops specification>
+getKeyOpsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m [result]
+getKeyOpsUnsafe self = liftDOM ((((js_getKeyOps (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-key_ops JsonWebKey.key_ops specification>
+getKeyOpsUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m [result]
+getKeyOpsUnchecked self = liftDOM (((js_getKeyOps (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alg\"] = $2; })"
+        js_setAlg :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-alg JsonWebKey.alg specification>
+setAlg :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setAlg self val = liftDOM (void ((js_setAlg (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alg\"]; })"
+        js_getAlg :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-alg JsonWebKey.alg specification>
+getAlg :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getAlg self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAlg (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-alg JsonWebKey.alg specification>
+getAlgUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getAlgUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAlg (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-alg JsonWebKey.alg specification>
+getAlgUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getAlgUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlg (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ext\"] = $2; })"
+        js_setExt :: JsonWebKey -> Bool -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-ext JsonWebKey.ext specification>
+setExt :: (MonadDOM m) => JsonWebKey -> Bool -> m ()
+setExt self val = liftDOM (void ((js_setExt (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ext\"]; })"
+        js_getExt :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-ext JsonWebKey.ext specification>
+getExt :: (MonadDOM m) => JsonWebKey -> m (Maybe Bool)
+getExt self = liftDOM (((js_getExt (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-ext JsonWebKey.ext specification>
+getExtUnsafe :: (MonadDOM m, HasCallStack) => JsonWebKey -> m Bool
+getExtUnsafe self = liftDOM ((((js_getExt (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-ext JsonWebKey.ext specification>
+getExtUnchecked :: (MonadDOM m) => JsonWebKey -> m Bool
+getExtUnchecked self = liftDOM ((pFromJSVal <$> (js_getExt (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"crv\"] = $2; })"
+        js_setCrv :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-crv JsonWebKey.crv specification>
+setCrv :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setCrv self val = liftDOM (void ((js_setCrv (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"crv\"]; })"
+        js_getCrv :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-crv JsonWebKey.crv specification>
+getCrv :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getCrv self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCrv (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-crv JsonWebKey.crv specification>
+getCrvUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getCrvUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCrv (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-crv JsonWebKey.crv specification>
+getCrvUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getCrvUnchecked self = liftDOM ((pFromJSVal <$> (js_getCrv (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-x JsonWebKey.x specification>
+setX :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setX self val = liftDOM (void ((js_setX (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-x JsonWebKey.x specification>
+getX :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getX self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getX (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-x JsonWebKey.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getXUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getX (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-x JsonWebKey.x specification>
+getXUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-y JsonWebKey.y specification>
+setY :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setY self val = liftDOM (void ((js_setY (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-y JsonWebKey.y specification>
+getY :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getY self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getY (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-y JsonWebKey.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getYUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getY (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-y JsonWebKey.y specification>
+getYUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"d\"] = $2; })"
+        js_setD :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-d JsonWebKey.d specification>
+setD :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setD self val = liftDOM (void ((js_setD (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })"
+        js_getD :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-d JsonWebKey.d specification>
+getD :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getD self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getD (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-d JsonWebKey.d specification>
+getDUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getDUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getD (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-d JsonWebKey.d specification>
+getDUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getDUnchecked self = liftDOM ((pFromJSVal <$> (js_getD (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"n\"] = $2; })"
+        js_setN :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-n JsonWebKey.n specification>
+setN :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setN self val = liftDOM (void ((js_setN (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"n\"]; })"
+        js_getN :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-n JsonWebKey.n specification>
+getN :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getN self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getN (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-n JsonWebKey.n specification>
+getNUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getNUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getN (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-n JsonWebKey.n specification>
+getNUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getNUnchecked self = liftDOM ((pFromJSVal <$> (js_getN (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"e\"] = $2; })"
+        js_setE :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-e JsonWebKey.e specification>
+setE :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setE self val = liftDOM (void ((js_setE (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })"
+        js_getE :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-e JsonWebKey.e specification>
+getE :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getE self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getE (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-e JsonWebKey.e specification>
+getEUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getEUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getE (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-e JsonWebKey.e specification>
+getEUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getEUnchecked self = liftDOM ((pFromJSVal <$> (js_getE (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"p\"] = $2; })"
+        js_setP :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-p JsonWebKey.p specification>
+setP :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setP self val = liftDOM (void ((js_setP (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p\"]; })"
+        js_getP :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-p JsonWebKey.p specification>
+getP :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getP self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getP (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-p JsonWebKey.p specification>
+getPUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getPUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getP (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-p JsonWebKey.p specification>
+getPUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getPUnchecked self = liftDOM ((pFromJSVal <$> (js_getP (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"q\"] = $2; })"
+        js_setQ :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-q JsonWebKey.q specification>
+setQ :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setQ self val = liftDOM (void ((js_setQ (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"q\"]; })"
+        js_getQ :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-q JsonWebKey.q specification>
+getQ :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getQ self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getQ (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-q JsonWebKey.q specification>
+getQUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getQUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getQ (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-q JsonWebKey.q specification>
+getQUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getQUnchecked self = liftDOM ((pFromJSVal <$> (js_getQ (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dp\"] = $2; })"
+        js_setDp :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dp JsonWebKey.dp specification>
+setDp :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setDp self val = liftDOM (void ((js_setDp (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dp\"]; })"
+        js_getDp :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dp JsonWebKey.dp specification>
+getDp :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getDp self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDp (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dp JsonWebKey.dp specification>
+getDpUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getDpUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDp (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dp JsonWebKey.dp specification>
+getDpUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getDpUnchecked self = liftDOM ((pFromJSVal <$> (js_getDp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dq\"] = $2; })"
+        js_setDq :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dq JsonWebKey.dq specification>
+setDq :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setDq self val = liftDOM (void ((js_setDq (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dq\"]; })"
+        js_getDq :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dq JsonWebKey.dq specification>
+getDq :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getDq self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDq (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dq JsonWebKey.dq specification>
+getDqUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getDqUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDq (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dq JsonWebKey.dq specification>
+getDqUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getDqUnchecked self = liftDOM ((pFromJSVal <$> (js_getDq (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"qi\"] = $2; })"
+        js_setQi :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-qi JsonWebKey.qi specification>
+setQi :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setQi self val = liftDOM (void ((js_setQi (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"qi\"]; })"
+        js_getQi :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-qi JsonWebKey.qi specification>
+getQi :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getQi self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getQi (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-qi JsonWebKey.qi specification>
+getQiUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getQiUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getQi (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-qi JsonWebKey.qi specification>
+getQiUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getQiUnchecked self = liftDOM ((pFromJSVal <$> (js_getQi (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oth\"] = $2; })"
+        js_setOth :: JsonWebKey -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-oth JsonWebKey.oth specification>
+setOth :: (MonadDOM m) => JsonWebKey -> [RsaOtherPrimesInfo] -> m ()
+setOth self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOth (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oth\"]; })"
+        js_getOth :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-oth JsonWebKey.oth specification>
+getOth :: (MonadDOM m) => JsonWebKey -> m (Maybe [RsaOtherPrimesInfo])
+getOth self = liftDOM (((js_getOth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-oth JsonWebKey.oth specification>
+getOthUnsafe :: (MonadDOM m, HasCallStack) => JsonWebKey -> m [RsaOtherPrimesInfo]
+getOthUnsafe self = liftDOM ((((js_getOth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-oth JsonWebKey.oth specification>
+getOthUnchecked :: (MonadDOM m) => JsonWebKey -> m [RsaOtherPrimesInfo]
+getOthUnchecked self = liftDOM (((js_getOth (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"k\"] = $2; })"
+        js_setK :: JsonWebKey -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-k JsonWebKey.k specification>
+setK :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setK self val = liftDOM (void ((js_setK (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"k\"]; })"
+        js_getK :: JsonWebKey -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-k JsonWebKey.k specification>
+getK :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getK self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getK (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-k JsonWebKey.k specification>
+getKUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getKUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getK (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-k JsonWebKey.k specification>
+getKUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getKUnchecked self = liftDOM ((pFromJSVal <$> (js_getK (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pub\"] = $2; })"
+        js_setPub :: JsonWebKey -> JSString -> IO ()
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-pub JsonWebKey.pub specification>
+setPub :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setPub self val = liftDOM (void ((js_setPub (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pub\"]; })"
+        js_getPub :: JsonWebKey -> IO JSVal
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-pub JsonWebKey.pub specification>
+getPub :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getPub self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPub (self))))
+
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-pub JsonWebKey.pub specification>
+getPubUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getPubUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPub (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-pub JsonWebKey.pub specification>
+getPubUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getPubUnchecked self = liftDOM ((pFromJSVal <$> (js_getPub (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priv\"] = $2; })"
+        js_setPriv :: JsonWebKey -> JSString -> IO ()
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-priv JsonWebKey.priv specification>
+setPriv :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setPriv self val = liftDOM (void ((js_setPriv (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priv\"]; })"
+        js_getPriv :: JsonWebKey -> IO JSVal
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-priv JsonWebKey.priv specification>
+getPriv :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getPriv self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPriv (self))))
+
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-priv JsonWebKey.priv specification>
+getPrivUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getPrivUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPriv (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/webcrypto-modern-algos/#dom-jsonwebkey-priv JsonWebKey.priv specification>
+getPrivUnchecked :: (MonadDOM m, FromJSString result) => JsonWebKey -> m result
+getPrivUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriv (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KHR_parallel_shader_compile.hs b/src/GHCJS/DOM/JSFFI/Generated/KHR_parallel_shader_compile.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/KHR_parallel_shader_compile.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from KHR_parallel_shader_compile (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.KHR_parallel_shader_compile
+       (pattern COMPLETION_STATUS_KHR, KHR_parallel_shader_compile(..), gTypeKHR_parallel_shader_compile)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPLETION_STATUS_KHR = 0x91B1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeySystemTrackConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/KeySystemTrackConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeySystemTrackConfiguration.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.KeySystemTrackConfiguration
+       (js_newKeySystemTrackConfiguration, js_setRobustness, js_getRobustness, js_setEncryptionScheme, js_getEncryptionScheme, newKeySystemTrackConfiguration, setRobustness, getRobustness, getRobustnessUnsafe, getRobustnessUnchecked, setEncryptionScheme, getEncryptionScheme, getEncryptionSchemeUnsafe, getEncryptionSchemeUnchecked, KeySystemTrackConfiguration(..), gTypeKeySystemTrackConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newKeySystemTrackConfiguration :: IO KeySystemTrackConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dictdef-keysystemtrackconfiguration KeySystemTrackConfiguration specification>
+newKeySystemTrackConfiguration :: (MonadDOM m) => m KeySystemTrackConfiguration
+newKeySystemTrackConfiguration = liftDOM ((js_newKeySystemTrackConfiguration))
+
+foreign import javascript safe "(($1, $2) => { $1[\"robustness\"] = $2; })"
+        js_setRobustness :: KeySystemTrackConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-robustness KeySystemTrackConfiguration.robustness specification>
+setRobustness :: (MonadDOM m, ToJSString val) => KeySystemTrackConfiguration -> val -> m ()
+setRobustness self val = liftDOM (void ((js_setRobustness (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"robustness\"]; })"
+        js_getRobustness :: KeySystemTrackConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-robustness KeySystemTrackConfiguration.robustness specification>
+getRobustness :: (MonadDOM m, FromJSString result) => KeySystemTrackConfiguration -> m (Maybe result)
+getRobustness self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRobustness (self))))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-robustness KeySystemTrackConfiguration.robustness specification>
+getRobustnessUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeySystemTrackConfiguration -> m result
+getRobustnessUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRobustness (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-robustness KeySystemTrackConfiguration.robustness specification>
+getRobustnessUnchecked :: (MonadDOM m, FromJSString result) => KeySystemTrackConfiguration -> m result
+getRobustnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getRobustness (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"encryptionScheme\"] = $2; })"
+        js_setEncryptionScheme :: KeySystemTrackConfiguration -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-encryptionscheme KeySystemTrackConfiguration.encryptionScheme specification>
+setEncryptionScheme :: (MonadDOM m, ToJSString val) => KeySystemTrackConfiguration -> Maybe val -> m ()
+setEncryptionScheme self val = liftDOM (void ((js_setEncryptionScheme (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"encryptionScheme\"]; })"
+        js_getEncryptionScheme :: KeySystemTrackConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-encryptionscheme KeySystemTrackConfiguration.encryptionScheme specification>
+getEncryptionScheme :: (MonadDOM m, FromJSString result) => KeySystemTrackConfiguration -> m (Maybe result)
+getEncryptionScheme self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEncryptionScheme (self))))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-encryptionscheme KeySystemTrackConfiguration.encryptionScheme specification>
+getEncryptionSchemeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeySystemTrackConfiguration -> m result
+getEncryptionSchemeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEncryptionScheme (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-encryptionscheme KeySystemTrackConfiguration.encryptionScheme specification>
+getEncryptionSchemeUnchecked :: (MonadDOM m, FromJSString result) => KeySystemTrackConfiguration -> m result
+getEncryptionSchemeUnchecked self = liftDOM ((pFromJSVal <$> (js_getEncryptionScheme (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
@@ -1,215 +1,113 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.KeyboardEvent
-       (js_newKeyboardEvent, newKeyboardEvent, js_getModifierState,
-        getModifierState, getModifierState_, js_initKeyboardEvent,
-        initKeyboardEvent, pattern DOM_KEY_LOCATION_STANDARD,
-        pattern DOM_KEY_LOCATION_LEFT, pattern DOM_KEY_LOCATION_RIGHT,
-        pattern DOM_KEY_LOCATION_NUMPAD, js_getKey, getKey, js_getCode,
-        getCode, js_getLocation, getLocation, js_getCtrlKey, getCtrlKey,
-        js_getShiftKey, getShiftKey, js_getAltKey, getAltKey,
-        js_getMetaKey, getMetaKey, js_getRepeat, getRepeat,
-        js_getIsComposing, getIsComposing, js_getKeyIdentifier,
-        getKeyIdentifier, js_getKeyLocation, getKeyLocation,
-        js_getAltGraphKey, getAltGraphKey, js_getCharCode, getCharCode,
-        js_getKeyCode, getKeyCode, js_getWhich, getWhich,
-        KeyboardEvent(..), gTypeKeyboardEvent)
+       (js_newKeyboardEvent, js_getModifierState, js_initKeyboardEvent, js_getKey, js_getCode, js_getLocation, js_getCtrlKey, js_getShiftKey, js_getAltKey, js_getMetaKey, js_getRepeat, js_getIsComposing, js_getCharCode, js_getKeyCode, newKeyboardEvent, getModifierState, getModifierState_, initKeyboardEvent, getKey, getCode, getLocation, getCtrlKey, getShiftKey, getAltKey, getMetaKey, getRepeat, getIsComposing, getCharCode, getKeyCode, pattern DOM_KEY_LOCATION_STANDARD, pattern DOM_KEY_LOCATION_LEFT, pattern DOM_KEY_LOCATION_RIGHT, pattern DOM_KEY_LOCATION_NUMPAD, KeyboardEvent(..), gTypeKeyboardEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"KeyboardEvent\"]($1,\n$2); })" js_newKeyboardEvent ::
-        JSString -> Optional KeyboardEventInit -> IO KeyboardEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation> 
-newKeyboardEvent ::
-                 (MonadIO m, ToJSString type') =>
-                   type' -> Maybe KeyboardEventInit -> m KeyboardEvent
-newKeyboardEvent type' eventInitDict
-  = liftIO
-      (js_newKeyboardEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"getModifierState\"]($2) ? 1 : 0); })" js_getModifierState ::
-        KeyboardEvent -> JSString -> IO Bool
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"KeyboardEvent\"]($1, $2); })"
+        js_newKeyboardEvent :: JSString -> JSVal -> IO KeyboardEvent
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/KeyboardEvent MDN KeyboardEvent. documentation>
+newKeyboardEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe KeyboardEventInit -> m KeyboardEvent
+newKeyboardEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newKeyboardEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.getModifierState Mozilla KeyboardEvent.getModifierState documentation> 
-getModifierState ::
-                 (MonadIO m, ToJSString keyArg) => KeyboardEvent -> keyArg -> m Bool
-getModifierState self keyArg
-  = liftIO (js_getModifierState self (toJSString keyArg))
+foreign import javascript safe "(($1, $2) => { return $1[\"getModifierState\"]($2); })"
+        js_getModifierState :: KeyboardEvent -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/getModifierState MDN KeyboardEvent.getModifierState documentation>
+getModifierState :: (MonadDOM m, ToJSString keyArg) => KeyboardEvent -> keyArg -> m Bool
+getModifierState self keyArg = liftDOM ((js_getModifierState (self) (toJSString keyArg)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.getModifierState Mozilla KeyboardEvent.getModifierState documentation> 
-getModifierState_ ::
-                  (MonadIO m, ToJSString keyArg) => KeyboardEvent -> keyArg -> m ()
-getModifierState_ self keyArg
-  = liftIO (void (js_getModifierState self (toJSString keyArg)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"initKeyboardEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11, $12); })"
-        js_initKeyboardEvent ::
-        KeyboardEvent ->
-          Optional JSString ->
-            Bool ->
-              Bool ->
-                Optional Window ->
-                  Optional JSString ->
-                    Optional Word -> Bool -> Bool -> Bool -> Bool -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/getModifierState MDN KeyboardEvent.getModifierState documentation>
+getModifierState_ :: (MonadDOM m, ToJSString keyArg) => KeyboardEvent -> keyArg -> m ()
+getModifierState_ self keyArg = liftDOM (void ((js_getModifierState (self) (toJSString keyArg))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.initKeyboardEvent Mozilla KeyboardEvent.initKeyboardEvent documentation> 
-initKeyboardEvent ::
-                  (MonadIO m, ToJSString type', ToJSString keyIdentifier) =>
-                    KeyboardEvent ->
-                      Maybe type' ->
-                        Bool ->
-                          Bool ->
-                            Maybe Window ->
-                              Maybe keyIdentifier ->
-                                Maybe Word -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()
-initKeyboardEvent self type' canBubble cancelable view
-  keyIdentifier location ctrlKey altKey shiftKey metaKey altGraphKey
-  = liftIO
-      (js_initKeyboardEvent self (toOptionalJSString type') canBubble
-         cancelable
-         (maybeToOptional view)
-         (toOptionalJSString keyIdentifier)
-         (maybeToOptional location)
-         ctrlKey
-         altKey
-         shiftKey
-         metaKey
-         altGraphKey)
-pattern DOM_KEY_LOCATION_STANDARD = 0
-pattern DOM_KEY_LOCATION_LEFT = 1
-pattern DOM_KEY_LOCATION_RIGHT = 2
-pattern DOM_KEY_LOCATION_NUMPAD = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })" js_getKey ::
-        KeyboardEvent -> IO JSString
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"initKeyboardEvent\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_initKeyboardEvent :: KeyboardEvent -> JSString -> JSVal -> JSVal -> JSVal -> (Optional JSString) -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/initKeyboardEvent MDN KeyboardEvent.initKeyboardEvent documentation>
+initKeyboardEvent :: (MonadDOM m, ToJSString typeArg, ToJSString keyArg) => KeyboardEvent -> typeArg -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe keyArg -> Maybe Word -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> m ()
+initKeyboardEvent self typeArg bubblesArg cancelableArg viewArg keyArg locationArg ctrlKey altKey shiftKey metaKey = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubblesArg) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelableArg) >>= \a4' -> (toJSVal viewArg) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal locationArg) >>= \a7' -> (P.maybe (P.return jsUndefined) toJSVal ctrlKey) >>= \a8' -> (P.maybe (P.return jsUndefined) toJSVal altKey) >>= \a9' -> (P.maybe (P.return jsUndefined) toJSVal shiftKey) >>= \a10' -> (P.maybe (P.return jsUndefined) toJSVal metaKey) >>= \a11' -> js_initKeyboardEvent (self) (toJSString typeArg) a3' a4' a5' (toOptionalJSString keyArg) a7' a8' a9' a10' a11')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.key Mozilla KeyboardEvent.key documentation> 
-getKey ::
-       (MonadIO m, FromJSString result) => KeyboardEvent -> m result
-getKey self = liftIO (fromJSString <$> (js_getKey self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        KeyboardEvent -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: KeyboardEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/key MDN KeyboardEvent.key documentation>
+getKey :: (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
+getKey self = liftDOM ((fromJSString <$> (js_getKey (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.code Mozilla KeyboardEvent.code documentation> 
-getCode ::
-        (MonadIO m, FromJSString result) => KeyboardEvent -> m result
-getCode self = liftIO (fromJSString <$> (js_getCode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
-        :: KeyboardEvent -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: KeyboardEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/code MDN KeyboardEvent.code documentation>
+getCode :: (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
+getCode self = liftDOM ((fromJSString <$> (js_getCode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.location Mozilla KeyboardEvent.location documentation> 
-getLocation :: (MonadIO m) => KeyboardEvent -> m Word
-getLocation self = liftIO (js_getLocation self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"ctrlKey\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })"
+        js_getLocation :: KeyboardEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/location MDN KeyboardEvent.location documentation>
+getLocation :: (MonadDOM m) => KeyboardEvent -> m Word
+getLocation self = liftDOM ((js_getLocation (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ctrlKey\"]; })"
         js_getCtrlKey :: KeyboardEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/ctrlKey MDN KeyboardEvent.ctrlKey documentation>
+getCtrlKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getCtrlKey self = liftDOM ((js_getCtrlKey (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.ctrlKey Mozilla KeyboardEvent.ctrlKey documentation> 
-getCtrlKey :: (MonadIO m) => KeyboardEvent -> m Bool
-getCtrlKey self = liftIO (js_getCtrlKey self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"shiftKey\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"shiftKey\"]; })"
         js_getShiftKey :: KeyboardEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/shiftKey MDN KeyboardEvent.shiftKey documentation>
+getShiftKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getShiftKey self = liftDOM ((js_getShiftKey (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.shiftKey Mozilla KeyboardEvent.shiftKey documentation> 
-getShiftKey :: (MonadIO m) => KeyboardEvent -> m Bool
-getShiftKey self = liftIO (js_getShiftKey self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"altKey\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"altKey\"]; })"
         js_getAltKey :: KeyboardEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/altKey MDN KeyboardEvent.altKey documentation>
+getAltKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getAltKey self = liftDOM ((js_getAltKey (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altKey Mozilla KeyboardEvent.altKey documentation> 
-getAltKey :: (MonadIO m) => KeyboardEvent -> m Bool
-getAltKey self = liftIO (js_getAltKey self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"metaKey\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"metaKey\"]; })"
         js_getMetaKey :: KeyboardEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/metaKey MDN KeyboardEvent.metaKey documentation>
+getMetaKey :: (MonadDOM m) => KeyboardEvent -> m Bool
+getMetaKey self = liftDOM ((js_getMetaKey (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.metaKey Mozilla KeyboardEvent.metaKey documentation> 
-getMetaKey :: (MonadIO m) => KeyboardEvent -> m Bool
-getMetaKey self = liftIO (js_getMetaKey self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"repeat\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"repeat\"]; })"
         js_getRepeat :: KeyboardEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/repeat MDN KeyboardEvent.repeat documentation>
+getRepeat :: (MonadDOM m) => KeyboardEvent -> m Bool
+getRepeat self = liftDOM ((js_getRepeat (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.repeat Mozilla KeyboardEvent.repeat documentation> 
-getRepeat :: (MonadIO m) => KeyboardEvent -> m Bool
-getRepeat self = liftIO (js_getRepeat self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"isComposing\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"isComposing\"]; })"
         js_getIsComposing :: KeyboardEvent -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.isComposing Mozilla KeyboardEvent.isComposing documentation> 
-getIsComposing :: (MonadIO m) => KeyboardEvent -> m Bool
-getIsComposing self = liftIO (js_getIsComposing self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keyIdentifier\"]; })"
-        js_getKeyIdentifier :: KeyboardEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/isComposing MDN KeyboardEvent.isComposing documentation>
+getIsComposing :: (MonadDOM m) => KeyboardEvent -> m Bool
+getIsComposing self = liftDOM ((js_getIsComposing (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyIdentifier Mozilla KeyboardEvent.keyIdentifier documentation> 
-getKeyIdentifier ::
-                 (MonadIO m, FromJSString result) => KeyboardEvent -> m result
-getKeyIdentifier self
-  = liftIO (fromJSString <$> (js_getKeyIdentifier self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keyLocation\"]; })"
-        js_getKeyLocation :: KeyboardEvent -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"charCode\"]; })"
+        js_getCharCode :: KeyboardEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/charCode MDN KeyboardEvent.charCode documentation>
+getCharCode :: (MonadDOM m) => KeyboardEvent -> m Word
+getCharCode self = liftDOM ((js_getCharCode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyLocation Mozilla KeyboardEvent.keyLocation documentation> 
-getKeyLocation :: (MonadIO m) => KeyboardEvent -> m Word
-getKeyLocation self = liftIO (js_getKeyLocation self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"altGraphKey\"] ? 1 : 0); })"
-        js_getAltGraphKey :: KeyboardEvent -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"keyCode\"]; })"
+        js_getKeyCode :: KeyboardEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/keyCode MDN KeyboardEvent.keyCode documentation>
+getKeyCode :: (MonadDOM m) => KeyboardEvent -> m Word
+getKeyCode self = liftDOM ((js_getKeyCode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altGraphKey Mozilla KeyboardEvent.altGraphKey documentation> 
-getAltGraphKey :: (MonadIO m) => KeyboardEvent -> m Bool
-getAltGraphKey self = liftIO (js_getAltGraphKey self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"charCode\"]; })" js_getCharCode
-        :: KeyboardEvent -> IO Word
+pattern DOM_KEY_LOCATION_STANDARD = 0x00
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.charCode Mozilla KeyboardEvent.charCode documentation> 
-getCharCode :: (MonadIO m) => KeyboardEvent -> m Word
-getCharCode self = liftIO (js_getCharCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keyCode\"]; })" js_getKeyCode ::
-        KeyboardEvent -> IO Word
+pattern DOM_KEY_LOCATION_LEFT = 0x01
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode Mozilla KeyboardEvent.keyCode documentation> 
-getKeyCode :: (MonadIO m) => KeyboardEvent -> m Word
-getKeyCode self = liftIO (js_getKeyCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"which\"]; })" js_getWhich ::
-        KeyboardEvent -> IO Word
+pattern DOM_KEY_LOCATION_RIGHT = 0x02
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.which Mozilla KeyboardEvent.which documentation> 
-getWhich :: (MonadIO m) => KeyboardEvent -> m Word
-getWhich self = liftIO (js_getWhich self)
+pattern DOM_KEY_LOCATION_NUMPAD = 0x03
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyboardEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEventInit.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.KeyboardEventInit
+       (js_newKeyboardEventInit, js_setKey, js_getKey, js_setCode, js_getCode, js_setLocation, js_getLocation, js_setRepeat, js_getRepeat, js_setIsComposing, js_getIsComposing, js_setCharCode, js_getCharCode, js_setKeyCode, js_getKeyCode, newKeyboardEventInit, setKey, getKey, getKeyUnsafe, getKeyUnchecked, setCode, getCode, getCodeUnsafe, getCodeUnchecked, setLocation, getLocation, getLocationUnsafe, getLocationUnchecked, setRepeat, getRepeat, getRepeatUnsafe, getRepeatUnchecked, setIsComposing, getIsComposing, getIsComposingUnsafe, getIsComposingUnchecked, setCharCode, getCharCode, getCharCodeUnsafe, getCharCodeUnchecked, setKeyCode, getKeyCode, getKeyCodeUnsafe, getKeyCodeUnchecked, KeyboardEventInit(..), gTypeKeyboardEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newKeyboardEventInit :: IO KeyboardEventInit
+-- | <https://w3c.github.io/uievents/#dictdef-keyboardeventinit KeyboardEventInit specification>
+newKeyboardEventInit :: (MonadDOM m) => m KeyboardEventInit
+newKeyboardEventInit = liftDOM ((js_newKeyboardEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"key\"] = $2; })"
+        js_setKey :: KeyboardEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-key KeyboardEventInit.key specification>
+setKey :: (MonadDOM m, ToJSString val) => KeyboardEventInit -> val -> m ()
+setKey self val = liftDOM (void ((js_setKey (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: KeyboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-key KeyboardEventInit.key specification>
+getKey :: (MonadDOM m, FromJSString result) => KeyboardEventInit -> m (Maybe result)
+getKey self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getKey (self))))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-key KeyboardEventInit.key specification>
+getKeyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeyboardEventInit -> m result
+getKeyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getKey (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-key KeyboardEventInit.key specification>
+getKeyUnchecked :: (MonadDOM m, FromJSString result) => KeyboardEventInit -> m result
+getKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getKey (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"code\"] = $2; })"
+        js_setCode :: KeyboardEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-code KeyboardEventInit.code specification>
+setCode :: (MonadDOM m, ToJSString val) => KeyboardEventInit -> val -> m ()
+setCode self val = liftDOM (void ((js_setCode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: KeyboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-code KeyboardEventInit.code specification>
+getCode :: (MonadDOM m, FromJSString result) => KeyboardEventInit -> m (Maybe result)
+getCode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCode (self))))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-code KeyboardEventInit.code specification>
+getCodeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeyboardEventInit -> m result
+getCodeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-code KeyboardEventInit.code specification>
+getCodeUnchecked :: (MonadDOM m, FromJSString result) => KeyboardEventInit -> m result
+getCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"location\"] = $2; })"
+        js_setLocation :: KeyboardEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-location KeyboardEventInit.location specification>
+setLocation :: (MonadDOM m) => KeyboardEventInit -> Word -> m ()
+setLocation self val = liftDOM (void ((js_setLocation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })"
+        js_getLocation :: KeyboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-location KeyboardEventInit.location specification>
+getLocation :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Word)
+getLocation self = liftDOM (((js_getLocation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-location KeyboardEventInit.location specification>
+getLocationUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Word
+getLocationUnsafe self = liftDOM ((((js_getLocation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-location KeyboardEventInit.location specification>
+getLocationUnchecked :: (MonadDOM m) => KeyboardEventInit -> m Word
+getLocationUnchecked self = liftDOM ((pFromJSVal <$> (js_getLocation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"repeat\"] = $2; })"
+        js_setRepeat :: KeyboardEventInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-repeat KeyboardEventInit.repeat specification>
+setRepeat :: (MonadDOM m) => KeyboardEventInit -> Bool -> m ()
+setRepeat self val = liftDOM (void ((js_setRepeat (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"repeat\"]; })"
+        js_getRepeat :: KeyboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-repeat KeyboardEventInit.repeat specification>
+getRepeat :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Bool)
+getRepeat self = liftDOM (((js_getRepeat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-repeat KeyboardEventInit.repeat specification>
+getRepeatUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Bool
+getRepeatUnsafe self = liftDOM ((((js_getRepeat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-repeat KeyboardEventInit.repeat specification>
+getRepeatUnchecked :: (MonadDOM m) => KeyboardEventInit -> m Bool
+getRepeatUnchecked self = liftDOM ((pFromJSVal <$> (js_getRepeat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"isComposing\"] = $2; })"
+        js_setIsComposing :: KeyboardEventInit -> Bool -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-iscomposing KeyboardEventInit.isComposing specification>
+setIsComposing :: (MonadDOM m) => KeyboardEventInit -> Bool -> m ()
+setIsComposing self val = liftDOM (void ((js_setIsComposing (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isComposing\"]; })"
+        js_getIsComposing :: KeyboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-iscomposing KeyboardEventInit.isComposing specification>
+getIsComposing :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Bool)
+getIsComposing self = liftDOM (((js_getIsComposing (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-iscomposing KeyboardEventInit.isComposing specification>
+getIsComposingUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Bool
+getIsComposingUnsafe self = liftDOM ((((js_getIsComposing (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-iscomposing KeyboardEventInit.isComposing specification>
+getIsComposingUnchecked :: (MonadDOM m) => KeyboardEventInit -> m Bool
+getIsComposingUnchecked self = liftDOM ((pFromJSVal <$> (js_getIsComposing (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"charCode\"] = $2; })"
+        js_setCharCode :: KeyboardEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-charcode KeyboardEventInit.charCode specification>
+setCharCode :: (MonadDOM m) => KeyboardEventInit -> Word -> m ()
+setCharCode self val = liftDOM (void ((js_setCharCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"charCode\"]; })"
+        js_getCharCode :: KeyboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-charcode KeyboardEventInit.charCode specification>
+getCharCode :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Word)
+getCharCode self = liftDOM (((js_getCharCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-charcode KeyboardEventInit.charCode specification>
+getCharCodeUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Word
+getCharCodeUnsafe self = liftDOM ((((js_getCharCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-charcode KeyboardEventInit.charCode specification>
+getCharCodeUnchecked :: (MonadDOM m) => KeyboardEventInit -> m Word
+getCharCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCharCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keyCode\"] = $2; })"
+        js_setKeyCode :: KeyboardEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-keycode KeyboardEventInit.keyCode specification>
+setKeyCode :: (MonadDOM m) => KeyboardEventInit -> Word -> m ()
+setKeyCode self val = liftDOM (void ((js_setKeyCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keyCode\"]; })"
+        js_getKeyCode :: KeyboardEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-keycode KeyboardEventInit.keyCode specification>
+getKeyCode :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Word)
+getKeyCode self = liftDOM (((js_getKeyCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-keycode KeyboardEventInit.keyCode specification>
+getKeyCodeUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Word
+getKeyCodeUnsafe self = liftDOM ((((js_getKeyCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-keycode KeyboardEventInit.keyCode specification>
+getKeyCodeUnchecked :: (MonadDOM m) => KeyboardEventInit -> m Word
+getKeyCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeyCode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyframeAnimationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyframeAnimationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyframeAnimationOptions.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.KeyframeAnimationOptions
+       (js_newKeyframeAnimationOptions, js_setId, js_getId, js_setTimeline, js_getTimeline, js_setRangeStart, js_getRangeStart, js_setRangeEnd, js_getRangeEnd, js_setTrigger, js_getTrigger, newKeyframeAnimationOptions, setId, getId, getIdUnsafe, getIdUnchecked, setTimeline, getTimeline, getTimelineUnsafe, getTimelineUnchecked, setRangeStart, getRangeStart, getRangeStartUnsafe, getRangeStartUnchecked, setRangeEnd, getRangeEnd, getRangeEndUnsafe, getRangeEndUnchecked, setTrigger, getTrigger, getTriggerUnsafe, getTriggerUnchecked, KeyframeAnimationOptions(..), gTypeKeyframeAnimationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newKeyframeAnimationOptions :: IO KeyframeAnimationOptions
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-keyframeanimationoptions KeyframeAnimationOptions specification>
+newKeyframeAnimationOptions :: (MonadDOM m) => m KeyframeAnimationOptions
+newKeyframeAnimationOptions = liftDOM ((js_newKeyframeAnimationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: KeyframeAnimationOptions -> JSString -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-id KeyframeAnimationOptions.id specification>
+setId :: (MonadDOM m, ToJSString val) => KeyframeAnimationOptions -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: KeyframeAnimationOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-id KeyframeAnimationOptions.id specification>
+getId :: (MonadDOM m, FromJSString result) => KeyframeAnimationOptions -> m (Maybe result)
+getId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getId (self))))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-id KeyframeAnimationOptions.id specification>
+getIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeyframeAnimationOptions -> m result
+getIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-id KeyframeAnimationOptions.id specification>
+getIdUnchecked :: (MonadDOM m, FromJSString result) => KeyframeAnimationOptions -> m result
+getIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeline\"] = $2; })"
+        js_setTimeline :: KeyframeAnimationOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-timeline KeyframeAnimationOptions.timeline specification>
+setTimeline :: (MonadDOM m, IsAnimationTimeline val) => KeyframeAnimationOptions -> Maybe val -> m ()
+setTimeline self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimeline (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeline\"]; })"
+        js_getTimeline :: KeyframeAnimationOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-timeline KeyframeAnimationOptions.timeline specification>
+getTimeline :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe AnimationTimeline)
+getTimeline self = liftDOM (((js_getTimeline (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-timeline KeyframeAnimationOptions.timeline specification>
+getTimelineUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m AnimationTimeline
+getTimelineUnsafe self = liftDOM ((((js_getTimeline (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-timeline KeyframeAnimationOptions.timeline specification>
+getTimelineUnchecked :: (MonadDOM m) => KeyframeAnimationOptions -> m AnimationTimeline
+getTimelineUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeline (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rangeStart\"] = $2; })"
+        js_setRangeStart :: KeyframeAnimationOptions -> TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangestart KeyframeAnimationOptions.rangeStart specification>
+setRangeStart :: (MonadDOM m, IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString val) => KeyframeAnimationOptions -> val -> m ()
+setRangeStart self val = liftDOM (void ((js_setRangeStart (self) (Types.toTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rangeStart\"]; })"
+        js_getRangeStart :: KeyframeAnimationOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangestart KeyframeAnimationOptions.rangeStart specification>
+getRangeStart :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString)
+getRangeStart self = liftDOM (((js_getRangeStart (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangestart KeyframeAnimationOptions.rangeStart specification>
+getRangeStartUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
+getRangeStartUnsafe self = liftDOM ((((js_getRangeStart (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangestart KeyframeAnimationOptions.rangeStart specification>
+getRangeStartUnchecked :: (MonadDOM m) => KeyframeAnimationOptions -> m TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
+getRangeStartUnchecked self = liftDOM ((pFromJSVal <$> (js_getRangeStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rangeEnd\"] = $2; })"
+        js_setRangeEnd :: KeyframeAnimationOptions -> TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangeend KeyframeAnimationOptions.rangeEnd specification>
+setRangeEnd :: (MonadDOM m, IsTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString val) => KeyframeAnimationOptions -> val -> m ()
+setRangeEnd self val = liftDOM (void ((js_setRangeEnd (self) (Types.toTimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rangeEnd\"]; })"
+        js_getRangeEnd :: KeyframeAnimationOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangeend KeyframeAnimationOptions.rangeEnd specification>
+getRangeEnd :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString)
+getRangeEnd self = liftDOM (((js_getRangeEnd (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangeend KeyframeAnimationOptions.rangeEnd specification>
+getRangeEndUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
+getRangeEndUnsafe self = liftDOM ((((js_getRangeEnd (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangeend KeyframeAnimationOptions.rangeEnd specification>
+getRangeEndUnchecked :: (MonadDOM m) => KeyframeAnimationOptions -> m TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
+getRangeEndUnchecked self = liftDOM ((pFromJSVal <$> (js_getRangeEnd (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"trigger\"] = $2; })"
+        js_setTrigger :: KeyframeAnimationOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-trigger KeyframeAnimationOptions.trigger specification>
+setTrigger :: (MonadDOM m) => KeyframeAnimationOptions -> Maybe AnimationTrigger -> m ()
+setTrigger self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTrigger (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"trigger\"]; })"
+        js_getTrigger :: KeyframeAnimationOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-trigger KeyframeAnimationOptions.trigger specification>
+getTrigger :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe AnimationTrigger)
+getTrigger self = liftDOM (((js_getTrigger (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-trigger KeyframeAnimationOptions.trigger specification>
+getTriggerUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m AnimationTrigger
+getTriggerUnsafe self = liftDOM ((((js_getTrigger (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-trigger KeyframeAnimationOptions.trigger specification>
+getTriggerUnchecked :: (MonadDOM m) => KeyframeAnimationOptions -> m AnimationTrigger
+getTriggerUnchecked self = liftDOM ((pFromJSVal <$> (js_getTrigger (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
@@ -1,38 +1,109 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.KeyframeEffect
-       (js_newKeyframeEffect, newKeyframeEffect, KeyframeEffect(..),
-        gTypeKeyframeEffect)
+       (js_newKeyframeEffect', js_newKeyframeEffect, js_getKeyframes, js_setKeyframes, js_setTarget, js_getTarget, js_setPseudoElement, js_getPseudoElement, js_setComposite, js_getComposite, js_setIterationComposite, js_getIterationComposite, newKeyframeEffect', newKeyframeEffect, getKeyframes, getKeyframes_, setKeyframes, setTarget, getTarget, getTargetUnsafe, getTargetUnchecked, setPseudoElement, getPseudoElement, getPseudoElementUnsafe, getPseudoElementUnchecked, setComposite, getComposite, setIterationComposite, getIterationComposite, KeyframeEffect(..), gTypeKeyframeEffect)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"KeyframeEffect\"]($1); })" js_newKeyframeEffect ::
-        Optional Element -> IO KeyframeEffect
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect Mozilla KeyframeEffect documentation> 
-newKeyframeEffect ::
-                  (MonadIO m, IsElement target) => Maybe target -> m KeyframeEffect
-newKeyframeEffect target
-  = liftIO
-      (js_newKeyframeEffect (maybeToOptional (fmap toElement target)))
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"KeyframeEffect\"]($1, $2, $3); })"
+        js_newKeyframeEffect' :: JSVal -> JSVal -> JSVal -> IO KeyframeEffect
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/KeyframeEffect MDN KeyframeEffect. documentation>
+newKeyframeEffect' :: (MonadDOM m, IsElement target, IsDoubleOrKeyframeEffectOptions options) => Maybe target -> Maybe GObject -> Maybe options -> m KeyframeEffect
+newKeyframeEffect' target keyframes options = liftDOM (((toJSVal target) >>= \a1' -> (toJSVal keyframes) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_newKeyframeEffect' a1' a2' a3'))
+
+foreign import javascript safe "(($1) => { return new globalThis[\"KeyframeEffect\"]($1); })"
+        js_newKeyframeEffect :: KeyframeEffect -> IO KeyframeEffect
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/KeyframeEffect MDN KeyframeEffect. documentation>
+newKeyframeEffect :: (MonadDOM m) => KeyframeEffect -> m KeyframeEffect
+newKeyframeEffect source = liftDOM ((js_newKeyframeEffect (source)))
+
+foreign import javascript safe "(($1) => { return $1[\"getKeyframes\"](); })"
+        js_getKeyframes :: KeyframeEffect -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/getKeyframes MDN KeyframeEffect.getKeyframes documentation>
+getKeyframes :: (MonadDOM m) => KeyframeEffect -> m [GObject]
+getKeyframes self = liftDOM (((js_getKeyframes (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/getKeyframes MDN KeyframeEffect.getKeyframes documentation>
+getKeyframes_ :: (MonadDOM m) => KeyframeEffect -> m ()
+getKeyframes_ self = liftDOM (void ((js_getKeyframes (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setKeyframes\"]($2); })"
+        js_setKeyframes :: KeyframeEffect -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/setKeyframes MDN KeyframeEffect.setKeyframes documentation>
+setKeyframes :: (MonadDOM m) => KeyframeEffect -> Maybe GObject -> m ()
+setKeyframes self keyframes = liftDOM (void (((toJSVal keyframes) >>= \a2' -> js_setKeyframes (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: KeyframeEffect -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/target MDN KeyframeEffect.target documentation>
+setTarget :: (MonadDOM m, IsElement val) => KeyframeEffect -> Maybe val -> m ()
+setTarget self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTarget (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: KeyframeEffect -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/target MDN KeyframeEffect.target documentation>
+getTarget :: (MonadDOM m) => KeyframeEffect -> m (Maybe Element)
+getTarget self = liftDOM (((js_getTarget (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/target MDN KeyframeEffect.target documentation>
+getTargetUnsafe :: (MonadDOM m, HasCallStack) => KeyframeEffect -> m Element
+getTargetUnsafe self = liftDOM ((((js_getTarget (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/target MDN KeyframeEffect.target documentation>
+getTargetUnchecked :: (MonadDOM m) => KeyframeEffect -> m Element
+getTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getTarget (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pseudoElement\"] = $2; })"
+        js_setPseudoElement :: KeyframeEffect -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/pseudoElement MDN KeyframeEffect.pseudoElement documentation>
+setPseudoElement :: (MonadDOM m, ToJSString val) => KeyframeEffect -> Maybe val -> m ()
+setPseudoElement self val = liftDOM (void ((js_setPseudoElement (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: KeyframeEffect -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/pseudoElement MDN KeyframeEffect.pseudoElement documentation>
+getPseudoElement :: (MonadDOM m, FromJSString result) => KeyframeEffect -> m (Maybe result)
+getPseudoElement self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/pseudoElement MDN KeyframeEffect.pseudoElement documentation>
+getPseudoElementUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeyframeEffect -> m result
+getPseudoElementUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/pseudoElement MDN KeyframeEffect.pseudoElement documentation>
+getPseudoElementUnchecked :: (MonadDOM m, FromJSString result) => KeyframeEffect -> m result
+getPseudoElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPseudoElement (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"composite\"] = $2; })"
+        js_setComposite :: KeyframeEffect -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/composite MDN KeyframeEffect.composite documentation>
+setComposite :: (MonadDOM m) => KeyframeEffect -> CompositeOperation -> m ()
+setComposite self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setComposite (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"composite\"]; })"
+        js_getComposite :: KeyframeEffect -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/composite MDN KeyframeEffect.composite documentation>
+getComposite :: (MonadDOM m) => KeyframeEffect -> m CompositeOperation
+getComposite self = liftDOM (((js_getComposite (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iterationComposite\"] = $2; })"
+        js_setIterationComposite :: KeyframeEffect -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/iterationComposite MDN KeyframeEffect.iterationComposite documentation>
+setIterationComposite :: (MonadDOM m) => KeyframeEffect -> IterationCompositeOperation -> m ()
+setIterationComposite self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setIterationComposite (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iterationComposite\"]; })"
+        js_getIterationComposite :: KeyframeEffect -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/iterationComposite MDN KeyframeEffect.iterationComposite documentation>
+getIterationComposite :: (MonadDOM m) => KeyframeEffect -> m IterationCompositeOperation
+getIterationComposite self = liftDOM (((js_getIterationComposite (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffectOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffectOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffectOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.KeyframeEffectOptions
+       (js_newKeyframeEffectOptions, js_setComposite, js_getComposite, js_setPseudoElement, js_getPseudoElement, js_setIterationComposite, js_getIterationComposite, newKeyframeEffectOptions, setComposite, getComposite, getCompositeUnsafe, getCompositeUnchecked, setPseudoElement, getPseudoElement, getPseudoElementUnsafe, getPseudoElementUnchecked, setIterationComposite, getIterationComposite, getIterationCompositeUnsafe, getIterationCompositeUnchecked, KeyframeEffectOptions(..), gTypeKeyframeEffectOptions, IsKeyframeEffectOptions, toKeyframeEffectOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newKeyframeEffectOptions :: IO KeyframeEffectOptions
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-keyframeeffectoptions KeyframeEffectOptions specification>
+newKeyframeEffectOptions :: (MonadDOM m) => m KeyframeEffectOptions
+newKeyframeEffectOptions = liftDOM ((js_newKeyframeEffectOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"composite\"] = $2; })"
+        js_setComposite :: KeyframeEffectOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-composite KeyframeEffectOptions.composite specification>
+setComposite :: (MonadDOM m, IsKeyframeEffectOptions self) => self -> CompositeOperation -> m ()
+setComposite self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setComposite ((Types.toKeyframeEffectOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"composite\"]; })"
+        js_getComposite :: KeyframeEffectOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-composite KeyframeEffectOptions.composite specification>
+getComposite :: (MonadDOM m, IsKeyframeEffectOptions self) => self -> m (Maybe CompositeOperation)
+getComposite self = liftDOM (((js_getComposite ((Types.toKeyframeEffectOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-composite KeyframeEffectOptions.composite specification>
+getCompositeUnsafe :: (MonadDOM m, IsKeyframeEffectOptions self, HasCallStack) => self -> m CompositeOperation
+getCompositeUnsafe self = liftDOM ((((js_getComposite ((Types.toKeyframeEffectOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-composite KeyframeEffectOptions.composite specification>
+getCompositeUnchecked :: (MonadDOM m, IsKeyframeEffectOptions self) => self -> m CompositeOperation
+getCompositeUnchecked self = liftDOM ((pFromJSVal <$> (js_getComposite ((Types.toKeyframeEffectOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pseudoElement\"] = $2; })"
+        js_setPseudoElement :: KeyframeEffectOptions -> (Nullable JSString) -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-pseudoelement KeyframeEffectOptions.pseudoElement specification>
+setPseudoElement :: (MonadDOM m, IsKeyframeEffectOptions self, ToJSString val) => self -> Maybe val -> m ()
+setPseudoElement self val = liftDOM (void ((js_setPseudoElement ((Types.toKeyframeEffectOptions self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: KeyframeEffectOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-pseudoelement KeyframeEffectOptions.pseudoElement specification>
+getPseudoElement :: (MonadDOM m, IsKeyframeEffectOptions self, FromJSString result) => self -> m (Maybe result)
+getPseudoElement self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPseudoElement ((Types.toKeyframeEffectOptions self)))))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-pseudoelement KeyframeEffectOptions.pseudoElement specification>
+getPseudoElementUnsafe :: (MonadDOM m, IsKeyframeEffectOptions self, HasCallStack, FromJSString result) => self -> m result
+getPseudoElementUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPseudoElement ((Types.toKeyframeEffectOptions self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeeffectoptions-pseudoelement KeyframeEffectOptions.pseudoElement specification>
+getPseudoElementUnchecked :: (MonadDOM m, IsKeyframeEffectOptions self, FromJSString result) => self -> m result
+getPseudoElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPseudoElement ((Types.toKeyframeEffectOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iterationComposite\"] = $2; })"
+        js_setIterationComposite :: KeyframeEffectOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeeffectoptions-iterationcomposite KeyframeEffectOptions.iterationComposite specification>
+setIterationComposite :: (MonadDOM m, IsKeyframeEffectOptions self) => self -> IterationCompositeOperation -> m ()
+setIterationComposite self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setIterationComposite ((Types.toKeyframeEffectOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iterationComposite\"]; })"
+        js_getIterationComposite :: KeyframeEffectOptions -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeeffectoptions-iterationcomposite KeyframeEffectOptions.iterationComposite specification>
+getIterationComposite :: (MonadDOM m, IsKeyframeEffectOptions self) => self -> m (Maybe IterationCompositeOperation)
+getIterationComposite self = liftDOM (((js_getIterationComposite ((Types.toKeyframeEffectOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeeffectoptions-iterationcomposite KeyframeEffectOptions.iterationComposite specification>
+getIterationCompositeUnsafe :: (MonadDOM m, IsKeyframeEffectOptions self, HasCallStack) => self -> m IterationCompositeOperation
+getIterationCompositeUnsafe self = liftDOM ((((js_getIterationComposite ((Types.toKeyframeEffectOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeeffectoptions-iterationcomposite KeyframeEffectOptions.iterationComposite specification>
+getIterationCompositeUnchecked :: (MonadDOM m, IsKeyframeEffectOptions self) => self -> m IterationCompositeOperation
+getIterationCompositeUnchecked self = liftDOM ((pFromJSVal <$> (js_getIterationComposite ((Types.toKeyframeEffectOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/LargestContentfulPaint.hs b/src/GHCJS/DOM/JSFFI/Generated/LargestContentfulPaint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/LargestContentfulPaint.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from largest-contentful-paint (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.LargestContentfulPaint
+       (js_toJSON, js_getLoadTime, js_getRenderTime, js_getSize, js_getId, js_getUrl, js_getElement, toJSON, toJSON_, getLoadTime, getRenderTime, getSize, getId, getUrl, getElement, getElementUnsafe, getElementUnchecked, LargestContentfulPaint(..), gTypeLargestContentfulPaint)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: LargestContentfulPaint -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/toJSON MDN LargestContentfulPaint.toJSON documentation>
+toJSON :: (MonadDOM m) => LargestContentfulPaint -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/toJSON MDN LargestContentfulPaint.toJSON documentation>
+toJSON_ :: (MonadDOM m) => LargestContentfulPaint -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loadTime\"]; })"
+        js_getLoadTime :: LargestContentfulPaint -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/loadTime MDN LargestContentfulPaint.loadTime documentation>
+getLoadTime :: (MonadDOM m) => LargestContentfulPaint -> m Double
+getLoadTime self = liftDOM ((js_getLoadTime (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"renderTime\"]; })"
+        js_getRenderTime :: LargestContentfulPaint -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/renderTime MDN LargestContentfulPaint.renderTime documentation>
+getRenderTime :: (MonadDOM m) => LargestContentfulPaint -> m Double
+getRenderTime self = liftDOM ((js_getRenderTime (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: LargestContentfulPaint -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/size MDN LargestContentfulPaint.size documentation>
+getSize :: (MonadDOM m) => LargestContentfulPaint -> m Word
+getSize self = liftDOM ((js_getSize (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: LargestContentfulPaint -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/id MDN LargestContentfulPaint.id documentation>
+getId :: (MonadDOM m, FromJSString result) => LargestContentfulPaint -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: LargestContentfulPaint -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/url MDN LargestContentfulPaint.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => LargestContentfulPaint -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"element\"]; })"
+        js_getElement :: LargestContentfulPaint -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/element MDN LargestContentfulPaint.element documentation>
+getElement :: (MonadDOM m) => LargestContentfulPaint -> m (Maybe Element)
+getElement self = liftDOM (((js_getElement (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/element MDN LargestContentfulPaint.element documentation>
+getElementUnsafe :: (MonadDOM m, HasCallStack) => LargestContentfulPaint -> m Element
+getElementUnsafe self = liftDOM ((((js_getElement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/element MDN LargestContentfulPaint.element documentation>
+getElementUnchecked :: (MonadDOM m) => LargestContentfulPaint -> m Element
+getElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getElement (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/LinkStyle.hs b/src/GHCJS/DOM/JSFFI/Generated/LinkStyle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/LinkStyle.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.LinkStyle
+       (js_getSheet, getSheet, getSheetUnsafe, getSheetUnchecked, LinkStyle(..), gTypeLinkStyle, IsLinkStyle, toLinkStyle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"sheet\"]; })"
+        js_getSheet :: LinkStyle -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/sheet MDN LinkStyle.sheet documentation>
+getSheet :: (MonadDOM m, IsLinkStyle self) => self -> m (Maybe CSSStyleSheet)
+getSheet self = liftDOM (((js_getSheet ((Types.toLinkStyle self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/sheet MDN LinkStyle.sheet documentation>
+getSheetUnsafe :: (MonadDOM m, IsLinkStyle self, HasCallStack) => self -> m CSSStyleSheet
+getSheetUnsafe self = liftDOM ((((js_getSheet ((Types.toLinkStyle self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/sheet MDN LinkStyle.sheet documentation>
+getSheetUnchecked :: (MonadDOM m, IsLinkStyle self) => self -> m CSSStyleSheet
+getSheetUnchecked self = liftDOM ((pFromJSVal <$> (js_getSheet ((Types.toLinkStyle self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Location.hs b/src/GHCJS/DOM/JSFFI/Generated/Location.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Location.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Location.hs
@@ -1,193 +1,143 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Location
-       (js_assign, assign, js_replace, replace, js_reload, reload,
-        js_setHref, setHref, js_getHref, getHref, js_setProtocol,
-        setProtocol, js_getProtocol, getProtocol, js_setHost, setHost,
-        js_getHost, getHost, js_setHostname, setHostname, js_getHostname,
-        getHostname, js_setPort, setPort, js_getPort, getPort,
-        js_setPathname, setPathname, js_getPathname, getPathname,
-        js_setSearch, setSearch, js_getSearch, getSearch, js_setHash,
-        setHash, js_getHash, getHash, js_getOrigin, getOrigin,
-        js_getAncestorOrigins, getAncestorOrigins, Location(..),
-        gTypeLocation)
+       (js_assign, js_reload, js_replace, js_setHref, js_getHref, js_getOrigin, js_setProtocol, js_getProtocol, js_setHost, js_getHost, js_setHostname, js_getHostname, js_setPort, js_getPort, js_setPathname, js_getPathname, js_setSearch, js_getSearch, js_setHash, js_getHash, js_getAncestorOrigins, assign, reload, replace, setHref, getHref, getOrigin, setProtocol, getProtocol, setHost, getHost, setHostname, getHostname, setPort, getPort, setPathname, getPathname, setSearch, getSearch, setHash, getHash, getAncestorOrigins, Location(..), gTypeLocation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"assign\"]($2); })" js_assign ::
-        Location -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.assign Mozilla Location.assign documentation> 
-assign :: (MonadIO m, ToJSString url) => Location -> url -> m ()
-assign self url = liftIO (js_assign self (toJSString url))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"replace\"]($2); })" js_replace
-        :: Location -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"assign\"]($2); })"
+        js_assign :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/assign MDN Location.assign documentation>
+assign :: (MonadDOM m, ToJSString url) => Location -> url -> m ()
+assign self url = liftDOM (void ((js_assign (self) (toJSString url))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.replace Mozilla Location.replace documentation> 
-replace :: (MonadIO m, ToJSString url) => Location -> url -> m ()
-replace self url = liftIO (js_replace self (toJSString url))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"reload\"](); })" js_reload ::
-        Location -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"reload\"](); })"
+        js_reload :: Location -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/reload MDN Location.reload documentation>
+reload :: (MonadDOM m) => Location -> m ()
+reload self = liftDOM (void ((js_reload (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.reload Mozilla Location.reload documentation> 
-reload :: (MonadIO m) => Location -> m ()
-reload self = liftIO (js_reload self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
-        Location -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"replace\"]($2); })"
+        js_replace :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/replace MDN Location.replace documentation>
+replace :: (MonadDOM m, ToJSString url) => Location -> url -> m ()
+replace self url = liftDOM (void ((js_replace (self) (toJSString url))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
-setHref :: (MonadIO m, ToJSString val) => Location -> val -> m ()
-setHref self val = liftIO (js_setHref self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        Location -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"href\"] = $2; })"
+        js_setHref :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/href MDN Location.href documentation>
+setHref :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHref self val = liftDOM (void ((js_setHref (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
-getHref :: (MonadIO m, FromJSString result) => Location -> m result
-getHref self = liftIO (fromJSString <$> (js_getHref self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/href MDN Location.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => Location -> m result
+getHref self = liftDOM ((fromJSString <$> (js_getHref (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/origin MDN Location.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => Location -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin (self))))
+
 foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
         js_setProtocol :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/protocol MDN Location.protocol documentation>
+setProtocol :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
-setProtocol ::
-            (MonadIO m, ToJSString val) => Location -> val -> m ()
-setProtocol self val
-  = liftIO (js_setProtocol self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
-        :: Location -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/protocol MDN Location.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => Location -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
-getProtocol ::
-            (MonadIO m, FromJSString result) => Location -> m result
-getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"host\"] = $2; })" js_setHost ::
-        Location -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"host\"] = $2; })"
+        js_setHost :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/host MDN Location.host documentation>
+setHost :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHost self val = liftDOM (void ((js_setHost (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
-setHost :: (MonadIO m, ToJSString val) => Location -> val -> m ()
-setHost self val = liftIO (js_setHost self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
-        Location -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })"
+        js_getHost :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/host MDN Location.host documentation>
+getHost :: (MonadDOM m, FromJSString result) => Location -> m result
+getHost self = liftDOM ((fromJSString <$> (js_getHost (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
-getHost :: (MonadIO m, FromJSString result) => Location -> m result
-getHost self = liftIO (fromJSString <$> (js_getHost self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"hostname\"] = $2; })"
         js_setHostname :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/hostname MDN Location.hostname documentation>
+setHostname :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHostname self val = liftDOM (void ((js_setHostname (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
-setHostname ::
-            (MonadIO m, ToJSString val) => Location -> val -> m ()
-setHostname self val
-  = liftIO (js_setHostname self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
-        :: Location -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })"
+        js_getHostname :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/hostname MDN Location.hostname documentation>
+getHostname :: (MonadDOM m, FromJSString result) => Location -> m result
+getHostname self = liftDOM ((fromJSString <$> (js_getHostname (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
-getHostname ::
-            (MonadIO m, FromJSString result) => Location -> m result
-getHostname self = liftIO (fromJSString <$> (js_getHostname self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"port\"] = $2; })" js_setPort ::
-        Location -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"port\"] = $2; })"
+        js_setPort :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/port MDN Location.port documentation>
+setPort :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setPort self val = liftDOM (void ((js_setPort (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
-setPort :: (MonadIO m, ToJSString val) => Location -> val -> m ()
-setPort self val = liftIO (js_setPort self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
-        Location -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/port MDN Location.port documentation>
+getPort :: (MonadDOM m, FromJSString result) => Location -> m result
+getPort self = liftDOM ((fromJSString <$> (js_getPort (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
-getPort :: (MonadIO m, FromJSString result) => Location -> m result
-getPort self = liftIO (fromJSString <$> (js_getPort self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"pathname\"] = $2; })"
         js_setPathname :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/pathname MDN Location.pathname documentation>
+setPathname :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setPathname self val = liftDOM (void ((js_setPathname (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
-setPathname ::
-            (MonadIO m, ToJSString val) => Location -> val -> m ()
-setPathname self val
-  = liftIO (js_setPathname self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
-        :: Location -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })"
+        js_getPathname :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/pathname MDN Location.pathname documentation>
+getPathname :: (MonadDOM m, FromJSString result) => Location -> m result
+getPathname self = liftDOM ((fromJSString <$> (js_getPathname (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
-getPathname ::
-            (MonadIO m, FromJSString result) => Location -> m result
-getPathname self = liftIO (fromJSString <$> (js_getPathname self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"search\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"search\"] = $2; })"
         js_setSearch :: Location -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
-setSearch :: (MonadIO m, ToJSString val) => Location -> val -> m ()
-setSearch self val = liftIO (js_setSearch self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
-        Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/search MDN Location.search documentation>
+setSearch :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setSearch self val = liftDOM (void ((js_setSearch (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
-getSearch ::
-          (MonadIO m, FromJSString result) => Location -> m result
-getSearch self = liftIO (fromJSString <$> (js_getSearch self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hash\"] = $2; })" js_setHash ::
-        Location -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })"
+        js_getSearch :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/search MDN Location.search documentation>
+getSearch :: (MonadDOM m, FromJSString result) => Location -> m result
+getSearch self = liftDOM ((fromJSString <$> (js_getSearch (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
-setHash :: (MonadIO m, ToJSString val) => Location -> val -> m ()
-setHash self val = liftIO (js_setHash self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
-        Location -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"hash\"] = $2; })"
+        js_setHash :: Location -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Location/hash MDN Location.hash documentation>
+setHash :: (MonadDOM m, ToJSString val) => Location -> val -> m ()
+setHash self val = liftDOM (void ((js_setHash (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
-getHash :: (MonadIO m, FromJSString result) => Location -> m result
-getHash self = liftIO (fromJSString <$> (js_getHash self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
-        Location -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })"
+        js_getHash :: Location -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Location/hash MDN Location.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => Location -> m result
+getHash self = liftDOM ((fromJSString <$> (js_getHash (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.origin Mozilla Location.origin documentation> 
-getOrigin ::
-          (MonadIO m, FromJSString result) => Location -> m result
-getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"ancestorOrigins\"]; })"
         js_getAncestorOrigins :: Location -> IO DOMStringList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.ancestorOrigins Mozilla Location.ancestorOrigins documentation> 
-getAncestorOrigins :: (MonadIO m) => Location -> m DOMStringList
-getAncestorOrigins self = liftIO (js_getAncestorOrigins self)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/ancestorOrigins MDN Location.ancestorOrigins documentation>
+getAncestorOrigins :: (MonadDOM m) => Location -> m DOMStringList
+getAncestorOrigins self = liftDOM ((js_getAncestorOrigins (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Lock.hs b/src/GHCJS/DOM/JSFFI/Generated/Lock.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Lock.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Lock
+       (js_getName, js_getMode, getName, getMode, Lock(..), gTypeLock)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: Lock -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Lock/name MDN Lock.name documentation>
+getName :: (MonadDOM m, FromJSString result) => Lock -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: Lock -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Lock/mode MDN Lock.mode documentation>
+getMode :: (MonadDOM m) => Lock -> m LockMode
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/LockGrantedCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/LockGrantedCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/LockGrantedCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.LockGrantedCallback
+       (newLockGrantedCallback, newLockGrantedCallbackSync, newLockGrantedCallbackAsync, LockGrantedCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newLockGrantedCallback :: (MonadDOM m) => (Maybe Lock -> IO ()) -> m LockGrantedCallback
+newLockGrantedCallback callback = liftDOM ((LockGrantedCallback . coerce) <$> syncCallback1 ContinueAsync (\ lock -> do
+          lock' <- fromJSValUnchecked lock
+          callback lock'))
+
+newLockGrantedCallbackSync :: (MonadDOM m) => (Maybe Lock -> IO ()) -> m LockGrantedCallback
+newLockGrantedCallbackSync callback = liftDOM ((LockGrantedCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ lock -> do
+          lock' <- fromJSValUnchecked lock
+          callback lock'))
+
+newLockGrantedCallbackAsync :: (MonadDOM m) => (Maybe Lock -> IO ()) -> m LockGrantedCallback
+newLockGrantedCallbackAsync callback = liftDOM ((LockGrantedCallback . coerce) <$> asyncCallback1 (\ lock -> do
+          lock' <- fromJSValUnchecked lock
+          callback lock'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/LockInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/LockInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/LockInfo.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.LockInfo
+       (js_newLockInfo, js_setName, js_getName, js_setMode, js_getMode, js_setClientId, js_getClientId, newLockInfo, setName, getName, getNameUnsafe, getNameUnchecked, setMode, getMode, getModeUnsafe, getModeUnchecked, setClientId, getClientId, getClientIdUnsafe, getClientIdUnchecked, LockInfo(..), gTypeLockInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newLockInfo :: IO LockInfo
+-- | <https://w3c.github.io/web-locks/#dictdef-lockinfo LockInfo specification>
+newLockInfo :: (MonadDOM m) => m LockInfo
+newLockInfo = liftDOM ((js_newLockInfo))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: LockInfo -> JSString -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-name LockInfo.name specification>
+setName :: (MonadDOM m, ToJSString val) => LockInfo -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: LockInfo -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-name LockInfo.name specification>
+getName :: (MonadDOM m, FromJSString result) => LockInfo -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName (self))))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-name LockInfo.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => LockInfo -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-name LockInfo.name specification>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => LockInfo -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: LockInfo -> JSVal -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-mode LockInfo.mode specification>
+setMode :: (MonadDOM m) => LockInfo -> LockMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: LockInfo -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-mode LockInfo.mode specification>
+getMode :: (MonadDOM m) => LockInfo -> m (Maybe LockMode)
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-mode LockInfo.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => LockInfo -> m LockMode
+getModeUnsafe self = liftDOM ((((js_getMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-mode LockInfo.mode specification>
+getModeUnchecked :: (MonadDOM m) => LockInfo -> m LockMode
+getModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clientId\"] = $2; })"
+        js_setClientId :: LockInfo -> JSString -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-clientid LockInfo.clientId specification>
+setClientId :: (MonadDOM m, ToJSString val) => LockInfo -> val -> m ()
+setClientId self val = liftDOM (void ((js_setClientId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientId\"]; })"
+        js_getClientId :: LockInfo -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-clientid LockInfo.clientId specification>
+getClientId :: (MonadDOM m, FromJSString result) => LockInfo -> m (Maybe result)
+getClientId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getClientId (self))))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-clientid LockInfo.clientId specification>
+getClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => LockInfo -> m result
+getClientIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getClientId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-clientid LockInfo.clientId specification>
+getClientIdUnchecked :: (MonadDOM m, FromJSString result) => LockInfo -> m result
+getClientIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getClientId (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/LockManager.hs b/src/GHCJS/DOM/JSFFI/Generated/LockManager.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/LockManager.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.LockManager
+       (js_query, js_request, js_requestOptions, query, query_, request, request_, requestOptions, requestOptions_, LockManager(..), gTypeLockManager)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"query\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_query :: LockManager -> IO (JSVal, LockManagerSnapshot)
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/query MDN LockManager.query documentation>
+query :: (MonadDOM m) => LockManager -> m LockManagerSnapshot
+query self = liftDOM (((js_query (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/query MDN LockManager.query documentation>
+query_ :: (MonadDOM m) => LockManager -> m ()
+query_ self = liftDOM (void (((js_query (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"request\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_request :: LockManager -> JSString -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/request MDN LockManager.request documentation>
+request :: (MonadDOM m, ToJSString name) => LockManager -> name -> LockGrantedCallback -> m JSVal
+request self name callback' = liftDOM ((((toJSVal callback') >>= \a3' -> js_request (self) (toJSString name) a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/request MDN LockManager.request documentation>
+request_ :: (MonadDOM m, ToJSString name) => LockManager -> name -> LockGrantedCallback -> m ()
+request_ self name callback' = liftDOM (void ((((toJSVal callback') >>= \a3' -> js_request (self) (toJSString name) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"request\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestOptions :: LockManager -> JSString -> LockOptions -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/request MDN LockManager.request documentation>
+requestOptions :: (MonadDOM m, ToJSString name) => LockManager -> name -> LockOptions -> LockGrantedCallback -> m JSVal
+requestOptions self name options callback' = liftDOM ((((toJSVal callback') >>= \a4' -> js_requestOptions (self) (toJSString name) (options) a4') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/request MDN LockManager.request documentation>
+requestOptions_ :: (MonadDOM m, ToJSString name) => LockManager -> name -> LockOptions -> LockGrantedCallback -> m ()
+requestOptions_ self name options callback' = liftDOM (void ((((toJSVal callback') >>= \a4' -> js_requestOptions (self) (toJSString name) (options) a4') >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/LockManagerSnapshot.hs b/src/GHCJS/DOM/JSFFI/Generated/LockManagerSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/LockManagerSnapshot.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.LockManagerSnapshot
+       (js_newLockManagerSnapshot, js_setHeld, js_getHeld, js_setPending, js_getPending, newLockManagerSnapshot, setHeld, getHeld, getHeldUnsafe, getHeldUnchecked, setPending, getPending, getPendingUnsafe, getPendingUnchecked, LockManagerSnapshot(..), gTypeLockManagerSnapshot)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newLockManagerSnapshot :: IO LockManagerSnapshot
+-- | <https://w3c.github.io/web-locks/#dictdef-lockmanagersnapshot LockManagerSnapshot specification>
+newLockManagerSnapshot :: (MonadDOM m) => m LockManagerSnapshot
+newLockManagerSnapshot = liftDOM ((js_newLockManagerSnapshot))
+
+foreign import javascript safe "(($1, $2) => { $1[\"held\"] = $2; })"
+        js_setHeld :: LockManagerSnapshot -> JSVal -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-held LockManagerSnapshot.held specification>
+setHeld :: (MonadDOM m) => LockManagerSnapshot -> [LockInfo] -> m ()
+setHeld self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHeld (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"held\"]; })"
+        js_getHeld :: LockManagerSnapshot -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-held LockManagerSnapshot.held specification>
+getHeld :: (MonadDOM m) => LockManagerSnapshot -> m (Maybe [LockInfo])
+getHeld self = liftDOM (((js_getHeld (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-held LockManagerSnapshot.held specification>
+getHeldUnsafe :: (MonadDOM m, HasCallStack) => LockManagerSnapshot -> m [LockInfo]
+getHeldUnsafe self = liftDOM ((((js_getHeld (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-held LockManagerSnapshot.held specification>
+getHeldUnchecked :: (MonadDOM m) => LockManagerSnapshot -> m [LockInfo]
+getHeldUnchecked self = liftDOM (((js_getHeld (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pending\"] = $2; })"
+        js_setPending :: LockManagerSnapshot -> JSVal -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-pending LockManagerSnapshot.pending specification>
+setPending :: (MonadDOM m) => LockManagerSnapshot -> [LockInfo] -> m ()
+setPending self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPending (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pending\"]; })"
+        js_getPending :: LockManagerSnapshot -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-pending LockManagerSnapshot.pending specification>
+getPending :: (MonadDOM m) => LockManagerSnapshot -> m (Maybe [LockInfo])
+getPending self = liftDOM (((js_getPending (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-pending LockManagerSnapshot.pending specification>
+getPendingUnsafe :: (MonadDOM m, HasCallStack) => LockManagerSnapshot -> m [LockInfo]
+getPendingUnsafe self = liftDOM ((((js_getPending (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-pending LockManagerSnapshot.pending specification>
+getPendingUnchecked :: (MonadDOM m) => LockManagerSnapshot -> m [LockInfo]
+getPendingUnchecked self = liftDOM (((js_getPending (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/LockOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/LockOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/LockOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.LockOptions
+       (js_newLockOptions, js_setMode, js_getMode, js_setIfAvailable, js_getIfAvailable, js_setSteal, js_getSteal, js_setSignal, js_getSignal, newLockOptions, setMode, getMode, getModeUnsafe, getModeUnchecked, setIfAvailable, getIfAvailable, getIfAvailableUnsafe, getIfAvailableUnchecked, setSteal, getSteal, getStealUnsafe, getStealUnchecked, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, LockOptions(..), gTypeLockOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newLockOptions :: IO LockOptions
+-- | <https://w3c.github.io/web-locks/#dictdef-lockoptions LockOptions specification>
+newLockOptions :: (MonadDOM m) => m LockOptions
+newLockOptions = liftDOM ((js_newLockOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: LockOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-mode LockOptions.mode specification>
+setMode :: (MonadDOM m) => LockOptions -> LockMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: LockOptions -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-mode LockOptions.mode specification>
+getMode :: (MonadDOM m) => LockOptions -> m (Maybe LockMode)
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-mode LockOptions.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m LockMode
+getModeUnsafe self = liftDOM ((((js_getMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-mode LockOptions.mode specification>
+getModeUnchecked :: (MonadDOM m) => LockOptions -> m LockMode
+getModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ifAvailable\"] = $2; })"
+        js_setIfAvailable :: LockOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-ifavailable LockOptions.ifAvailable specification>
+setIfAvailable :: (MonadDOM m) => LockOptions -> Bool -> m ()
+setIfAvailable self val = liftDOM (void ((js_setIfAvailable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ifAvailable\"]; })"
+        js_getIfAvailable :: LockOptions -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-ifavailable LockOptions.ifAvailable specification>
+getIfAvailable :: (MonadDOM m) => LockOptions -> m (Maybe Bool)
+getIfAvailable self = liftDOM (((js_getIfAvailable (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-ifavailable LockOptions.ifAvailable specification>
+getIfAvailableUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m Bool
+getIfAvailableUnsafe self = liftDOM ((((js_getIfAvailable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-ifavailable LockOptions.ifAvailable specification>
+getIfAvailableUnchecked :: (MonadDOM m) => LockOptions -> m Bool
+getIfAvailableUnchecked self = liftDOM ((pFromJSVal <$> (js_getIfAvailable (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"steal\"] = $2; })"
+        js_setSteal :: LockOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-steal LockOptions.steal specification>
+setSteal :: (MonadDOM m) => LockOptions -> Bool -> m ()
+setSteal self val = liftDOM (void ((js_setSteal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"steal\"]; })"
+        js_getSteal :: LockOptions -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-steal LockOptions.steal specification>
+getSteal :: (MonadDOM m) => LockOptions -> m (Maybe Bool)
+getSteal self = liftDOM (((js_getSteal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-steal LockOptions.steal specification>
+getStealUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m Bool
+getStealUnsafe self = liftDOM ((((js_getSteal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-steal LockOptions.steal specification>
+getStealUnchecked :: (MonadDOM m) => LockOptions -> m Bool
+getStealUnchecked self = liftDOM ((pFromJSVal <$> (js_getSteal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: LockOptions -> AbortSignal -> IO ()
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-signal LockOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => LockOptions -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: LockOptions -> IO JSVal
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-signal LockOptions.signal specification>
+getSignal :: (MonadDOM m) => LockOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-signal LockOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-signal LockOptions.signal specification>
+getSignalUnchecked :: (MonadDOM m) => LockOptions -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIAccess.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIAccess.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIAccess.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIAccess
+       (js_getInputs, js_getOutputs, js_getSysexEnabled, getInputs, getOutputs, getSysexEnabled, statechange, MIDIAccess(..), gTypeMIDIAccess)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"inputs\"]; })"
+        js_getInputs :: MIDIAccess -> IO MIDIInputMap
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIAccess/inputs MDN MIDIAccess.inputs documentation>
+getInputs :: (MonadDOM m) => MIDIAccess -> m MIDIInputMap
+getInputs self = liftDOM ((js_getInputs (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outputs\"]; })"
+        js_getOutputs :: MIDIAccess -> IO MIDIOutputMap
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIAccess/outputs MDN MIDIAccess.outputs documentation>
+getOutputs :: (MonadDOM m) => MIDIAccess -> m MIDIOutputMap
+getOutputs self = liftDOM ((js_getOutputs (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sysexEnabled\"]; })"
+        js_getSysexEnabled :: MIDIAccess -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIAccess/sysexEnabled MDN MIDIAccess.sysexEnabled documentation>
+getSysexEnabled :: (MonadDOM m) => MIDIAccess -> m Bool
+getSysexEnabled self = liftDOM ((js_getSysexEnabled (self)))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiaccess-onstatechange statechange event>
+statechange :: EventName MIDIAccess MIDIConnectionEvent
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIConnectionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIConnectionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIConnectionEvent.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIConnectionEvent
+       (js_newMIDIConnectionEvent, js_getPort, newMIDIConnectionEvent, getPort, getPortUnsafe, getPortUnchecked, MIDIConnectionEvent(..), gTypeMIDIConnectionEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MIDIConnectionEvent\"]($1, $2); })"
+        js_newMIDIConnectionEvent :: JSString -> JSVal -> IO MIDIConnectionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIConnectionEvent/MIDIConnectionEvent MDN MIDIConnectionEvent. documentation>
+newMIDIConnectionEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe MIDIConnectionEventInit -> m MIDIConnectionEvent
+newMIDIConnectionEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newMIDIConnectionEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: MIDIConnectionEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIConnectionEvent/port MDN MIDIConnectionEvent.port documentation>
+getPort :: (MonadDOM m) => MIDIConnectionEvent -> m (Maybe MIDIPort)
+getPort self = liftDOM (((js_getPort (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIConnectionEvent/port MDN MIDIConnectionEvent.port documentation>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => MIDIConnectionEvent -> m MIDIPort
+getPortUnsafe self = liftDOM ((((js_getPort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIConnectionEvent/port MDN MIDIConnectionEvent.port documentation>
+getPortUnchecked :: (MonadDOM m) => MIDIConnectionEvent -> m MIDIPort
+getPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPort (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIConnectionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIConnectionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIConnectionEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIConnectionEventInit
+       (js_newMIDIConnectionEventInit, js_setPort, js_getPort, newMIDIConnectionEventInit, setPort, getPort, getPortUnsafe, getPortUnchecked, MIDIConnectionEventInit(..), gTypeMIDIConnectionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMIDIConnectionEventInit :: IO MIDIConnectionEventInit
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit MIDIConnectionEventInit specification>
+newMIDIConnectionEventInit :: (MonadDOM m) => m MIDIConnectionEventInit
+newMIDIConnectionEventInit = liftDOM ((js_newMIDIConnectionEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"port\"] = $2; })"
+        js_setPort :: MIDIConnectionEventInit -> MIDIPort -> IO ()
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit-port MIDIConnectionEventInit.port specification>
+setPort :: (MonadDOM m, IsMIDIPort val) => MIDIConnectionEventInit -> val -> m ()
+setPort self val = liftDOM (void ((js_setPort (self) (Types.toMIDIPort val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: MIDIConnectionEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit-port MIDIConnectionEventInit.port specification>
+getPort :: (MonadDOM m) => MIDIConnectionEventInit -> m (Maybe MIDIPort)
+getPort self = liftDOM (((js_getPort (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit-port MIDIConnectionEventInit.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => MIDIConnectionEventInit -> m MIDIPort
+getPortUnsafe self = liftDOM ((((js_getPort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit-port MIDIConnectionEventInit.port specification>
+getPortUnchecked :: (MonadDOM m) => MIDIConnectionEventInit -> m MIDIPort
+getPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPort (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIInput.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIInput.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIInput.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIInput
+       (midimessage, MIDIInput(..), gTypeMIDIInput)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiinput-onmidimessage midimessage event>
+midimessage :: EventName MIDIInput MIDIMessageEvent
+midimessage = unsafeEventName (toJSString "midimessage")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIInputMap.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIInputMap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIInputMap.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIInputMap
+       (MIDIInputMap(..), gTypeMIDIInputMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIMessageEvent.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIMessageEvent
+       (js_newMIDIMessageEvent, js_getData, newMIDIMessageEvent, getData, getDataUnsafe, getDataUnchecked, MIDIMessageEvent(..), gTypeMIDIMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MIDIMessageEvent\"]($1, $2); })"
+        js_newMIDIMessageEvent :: JSString -> JSVal -> IO MIDIMessageEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/MIDIMessageEvent MDN MIDIMessageEvent. documentation>
+newMIDIMessageEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe MIDIMessageEventInit -> m MIDIMessageEvent
+newMIDIMessageEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newMIDIMessageEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: MIDIMessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/data MDN MIDIMessageEvent.data documentation>
+getData :: (MonadDOM m) => MIDIMessageEvent -> m (Maybe Uint8Array)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/data MDN MIDIMessageEvent.data documentation>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => MIDIMessageEvent -> m Uint8Array
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/data MDN MIDIMessageEvent.data documentation>
+getDataUnchecked :: (MonadDOM m) => MIDIMessageEvent -> m Uint8Array
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIMessageEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIMessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIMessageEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIMessageEventInit
+       (js_newMIDIMessageEventInit, js_setData, js_getData, newMIDIMessageEventInit, setData, getData, getDataUnsafe, getDataUnchecked, MIDIMessageEventInit(..), gTypeMIDIMessageEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMIDIMessageEventInit :: IO MIDIMessageEventInit
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit MIDIMessageEventInit specification>
+newMIDIMessageEventInit :: (MonadDOM m) => m MIDIMessageEventInit
+newMIDIMessageEventInit = liftDOM ((js_newMIDIMessageEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: MIDIMessageEventInit -> Uint8Array -> IO ()
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit-data MIDIMessageEventInit.data specification>
+setData :: (MonadDOM m, IsUint8Array val) => MIDIMessageEventInit -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toUint8Array val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: MIDIMessageEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit-data MIDIMessageEventInit.data specification>
+getData :: (MonadDOM m) => MIDIMessageEventInit -> m (Maybe Uint8Array)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit-data MIDIMessageEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => MIDIMessageEventInit -> m Uint8Array
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit-data MIDIMessageEventInit.data specification>
+getDataUnchecked :: (MonadDOM m) => MIDIMessageEventInit -> m Uint8Array
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIOptions
+       (js_newMIDIOptions, js_setSysex, js_getSysex, js_setSoftware, js_getSoftware, newMIDIOptions, setSysex, getSysex, getSysexUnsafe, getSysexUnchecked, setSoftware, getSoftware, getSoftwareUnsafe, getSoftwareUnchecked, MIDIOptions(..), gTypeMIDIOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMIDIOptions :: IO MIDIOptions
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions MIDIOptions specification>
+newMIDIOptions :: (MonadDOM m) => m MIDIOptions
+newMIDIOptions = liftDOM ((js_newMIDIOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sysex\"] = $2; })"
+        js_setSysex :: MIDIOptions -> Bool -> IO ()
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-sysex MIDIOptions.sysex specification>
+setSysex :: (MonadDOM m) => MIDIOptions -> Bool -> m ()
+setSysex self val = liftDOM (void ((js_setSysex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sysex\"]; })"
+        js_getSysex :: MIDIOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-sysex MIDIOptions.sysex specification>
+getSysex :: (MonadDOM m) => MIDIOptions -> m (Maybe Bool)
+getSysex self = liftDOM (((js_getSysex (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-sysex MIDIOptions.sysex specification>
+getSysexUnsafe :: (MonadDOM m, HasCallStack) => MIDIOptions -> m Bool
+getSysexUnsafe self = liftDOM ((((js_getSysex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-sysex MIDIOptions.sysex specification>
+getSysexUnchecked :: (MonadDOM m) => MIDIOptions -> m Bool
+getSysexUnchecked self = liftDOM ((pFromJSVal <$> (js_getSysex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"software\"] = $2; })"
+        js_setSoftware :: MIDIOptions -> Bool -> IO ()
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-software MIDIOptions.software specification>
+setSoftware :: (MonadDOM m) => MIDIOptions -> Bool -> m ()
+setSoftware self val = liftDOM (void ((js_setSoftware (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"software\"]; })"
+        js_getSoftware :: MIDIOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-software MIDIOptions.software specification>
+getSoftware :: (MonadDOM m) => MIDIOptions -> m (Maybe Bool)
+getSoftware self = liftDOM (((js_getSoftware (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-software MIDIOptions.software specification>
+getSoftwareUnsafe :: (MonadDOM m, HasCallStack) => MIDIOptions -> m Bool
+getSoftwareUnsafe self = liftDOM ((((js_getSoftware (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-software MIDIOptions.software specification>
+getSoftwareUnchecked :: (MonadDOM m) => MIDIOptions -> m Bool
+getSoftwareUnchecked self = liftDOM ((pFromJSVal <$> (js_getSoftware (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIOutput.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIOutput.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIOutput.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIOutput
+       (js_send, send, MIDIOutput(..), gTypeMIDIOutput)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"send\"]($2, $3); })"
+        js_send :: MIDIOutput -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIOutput/send MDN MIDIOutput.send documentation>
+send :: (MonadDOM m) => MIDIOutput -> [Word] -> Maybe Double -> m ()
+send self data' timestamp = liftDOM (void (((toJSVal data') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal timestamp) >>= \a3' -> js_send (self) a2' a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIOutputMap.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIOutputMap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIOutputMap.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIOutputMap
+       (MIDIOutputMap(..), gTypeMIDIOutputMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MIDIPort.hs b/src/GHCJS/DOM/JSFFI/Generated/MIDIPort.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MIDIPort.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MIDIPort
+       (js_close, js_open, js_getId, js_getManufacturer, js_getName, js_getType, js_getVersion, js_getState, js_getConnection, close, close_, open, open_, getId, getManufacturer, getManufacturerUnsafe, getManufacturerUnchecked, getName, getNameUnsafe, getNameUnchecked, getType, getVersion, getVersionUnsafe, getVersionUnchecked, getState, getConnection, statechange, MIDIPort(..), gTypeMIDIPort, IsMIDIPort, toMIDIPort)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: MIDIPort -> IO (JSVal, MIDIPort)
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/close MDN MIDIPort.close documentation>
+close :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPort
+close self = liftDOM (((js_close ((Types.toMIDIPort self))) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/close MDN MIDIPort.close documentation>
+close_ :: (MonadDOM m, IsMIDIPort self) => self -> m ()
+close_ self = liftDOM (void (((js_close ((Types.toMIDIPort self))) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"open\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_open :: MIDIPort -> IO (JSVal, MIDIPort)
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/open MDN MIDIPort.open documentation>
+open :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPort
+open self = liftDOM (((js_open ((Types.toMIDIPort self))) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/open MDN MIDIPort.open documentation>
+open_ :: (MonadDOM m, IsMIDIPort self) => self -> m ()
+open_ self = liftDOM (void (((js_open ((Types.toMIDIPort self))) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: MIDIPort -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/id MDN MIDIPort.id documentation>
+getId :: (MonadDOM m, IsMIDIPort self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toMIDIPort self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"manufacturer\"]; })"
+        js_getManufacturer :: MIDIPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/manufacturer MDN MIDIPort.manufacturer documentation>
+getManufacturer :: (MonadDOM m, IsMIDIPort self, FromJSString result) => self -> m (Maybe result)
+getManufacturer self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getManufacturer ((Types.toMIDIPort self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/manufacturer MDN MIDIPort.manufacturer documentation>
+getManufacturerUnsafe :: (MonadDOM m, IsMIDIPort self, HasCallStack, FromJSString result) => self -> m result
+getManufacturerUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getManufacturer ((Types.toMIDIPort self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/manufacturer MDN MIDIPort.manufacturer documentation>
+getManufacturerUnchecked :: (MonadDOM m, IsMIDIPort self, FromJSString result) => self -> m result
+getManufacturerUnchecked self = liftDOM ((pFromJSVal <$> (js_getManufacturer ((Types.toMIDIPort self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: MIDIPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/name MDN MIDIPort.name documentation>
+getName :: (MonadDOM m, IsMIDIPort self, FromJSString result) => self -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName ((Types.toMIDIPort self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/name MDN MIDIPort.name documentation>
+getNameUnsafe :: (MonadDOM m, IsMIDIPort self, HasCallStack, FromJSString result) => self -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName ((Types.toMIDIPort self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/name MDN MIDIPort.name documentation>
+getNameUnchecked :: (MonadDOM m, IsMIDIPort self, FromJSString result) => self -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName ((Types.toMIDIPort self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: MIDIPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/type MDN MIDIPort.type documentation>
+getType :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPortType
+getType self = liftDOM (((js_getType ((Types.toMIDIPort self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })"
+        js_getVersion :: MIDIPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/version MDN MIDIPort.version documentation>
+getVersion :: (MonadDOM m, IsMIDIPort self, FromJSString result) => self -> m (Maybe result)
+getVersion self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getVersion ((Types.toMIDIPort self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/version MDN MIDIPort.version documentation>
+getVersionUnsafe :: (MonadDOM m, IsMIDIPort self, HasCallStack, FromJSString result) => self -> m result
+getVersionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getVersion ((Types.toMIDIPort self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/version MDN MIDIPort.version documentation>
+getVersionUnchecked :: (MonadDOM m, IsMIDIPort self, FromJSString result) => self -> m result
+getVersionUnchecked self = liftDOM ((pFromJSVal <$> (js_getVersion ((Types.toMIDIPort self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: MIDIPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/state MDN MIDIPort.state documentation>
+getState :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPortDeviceState
+getState self = liftDOM (((js_getState ((Types.toMIDIPort self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"connection\"]; })"
+        js_getConnection :: MIDIPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/connection MDN MIDIPort.connection documentation>
+getConnection :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPortConnectionState
+getConnection self = liftDOM (((js_getConnection ((Types.toMIDIPort self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiport-onstatechange statechange event>
+statechange :: (IsMIDIPort self, IsEventTarget self) => EventName self MIDIConnectionEvent
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MathMLElement.hs b/src/GHCJS/DOM/JSFFI/Generated/MathMLElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MathMLElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mathml-core (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MathMLElement
+       (MathMLElement(..), gTypeMathMLElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilities.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilities.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaCapabilities
+       (js_decodingInfo, js_encodingInfo, decodingInfo, decodingInfo_, encodingInfo, encodingInfo_, MediaCapabilities(..), gTypeMediaCapabilities)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"decodingInfo\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_decodingInfo :: MediaCapabilities -> MediaDecodingConfiguration -> IO (JSVal, MediaCapabilitiesDecodingInfo)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/decodingInfo MDN MediaCapabilities.decodingInfo documentation>
+decodingInfo :: (MonadDOM m) => MediaCapabilities -> MediaDecodingConfiguration -> m MediaCapabilitiesDecodingInfo
+decodingInfo self configuration = liftDOM (((js_decodingInfo (self) (configuration)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/decodingInfo MDN MediaCapabilities.decodingInfo documentation>
+decodingInfo_ :: (MonadDOM m) => MediaCapabilities -> MediaDecodingConfiguration -> m ()
+decodingInfo_ self configuration = liftDOM (void (((js_decodingInfo (self) (configuration)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"encodingInfo\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_encodingInfo :: MediaCapabilities -> MediaEncodingConfiguration -> IO (JSVal, MediaCapabilitiesEncodingInfo)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/encodingInfo MDN MediaCapabilities.encodingInfo documentation>
+encodingInfo :: (MonadDOM m) => MediaCapabilities -> MediaEncodingConfiguration -> m MediaCapabilitiesEncodingInfo
+encodingInfo self configuration = liftDOM (((js_encodingInfo (self) (configuration)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/encodingInfo MDN MediaCapabilities.encodingInfo documentation>
+encodingInfo_ :: (MonadDOM m) => MediaCapabilities -> MediaEncodingConfiguration -> m ()
+encodingInfo_ self configuration = liftDOM (void (((js_encodingInfo (self) (configuration)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesDecodingInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesDecodingInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesDecodingInfo.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesDecodingInfo
+       (js_newMediaCapabilitiesDecodingInfo, js_setKeySystemAccess, js_getKeySystemAccess, js_setConfiguration, js_getConfiguration, newMediaCapabilitiesDecodingInfo, setKeySystemAccess, getKeySystemAccess, getKeySystemAccessUnsafe, getKeySystemAccessUnchecked, setConfiguration, getConfiguration, MediaCapabilitiesDecodingInfo(..), gTypeMediaCapabilitiesDecodingInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return ({\"supported\": $1, \"smooth\": $2, \"powerEfficient\": $3, \"keySystemAccess\": $4, \"configuration\": $5}); })"
+        js_newMediaCapabilitiesDecodingInfo :: Bool -> Bool -> Bool -> JSVal -> MediaDecodingConfiguration -> IO MediaCapabilitiesDecodingInfo
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediacapabilitiesdecodinginfo MediaCapabilitiesDecodingInfo specification>
+newMediaCapabilitiesDecodingInfo :: (MonadDOM m) => Bool -> Bool -> Bool -> Maybe MediaKeySystemAccess -> MediaDecodingConfiguration -> m MediaCapabilitiesDecodingInfo
+newMediaCapabilitiesDecodingInfo supported smooth powerEfficient keySystemAccess configuration = liftDOM (((toJSVal keySystemAccess) >>= \a4' -> js_newMediaCapabilitiesDecodingInfo (supported) (smooth) (powerEfficient) a4' (configuration)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keySystemAccess\"] = $2; })"
+        js_setKeySystemAccess :: MediaCapabilitiesDecodingInfo -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-keysystemaccess MediaCapabilitiesDecodingInfo.keySystemAccess specification>
+setKeySystemAccess :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> Maybe MediaKeySystemAccess -> m ()
+setKeySystemAccess self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setKeySystemAccess (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keySystemAccess\"]; })"
+        js_getKeySystemAccess :: MediaCapabilitiesDecodingInfo -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-keysystemaccess MediaCapabilitiesDecodingInfo.keySystemAccess specification>
+getKeySystemAccess :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> m (Maybe MediaKeySystemAccess)
+getKeySystemAccess self = liftDOM (((js_getKeySystemAccess (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-keysystemaccess MediaCapabilitiesDecodingInfo.keySystemAccess specification>
+getKeySystemAccessUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesDecodingInfo -> m MediaKeySystemAccess
+getKeySystemAccessUnsafe self = liftDOM ((((js_getKeySystemAccess (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-keysystemaccess MediaCapabilitiesDecodingInfo.keySystemAccess specification>
+getKeySystemAccessUnchecked :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> m MediaKeySystemAccess
+getKeySystemAccessUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeySystemAccess (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"configuration\"] = $2; })"
+        js_setConfiguration :: MediaCapabilitiesDecodingInfo -> MediaDecodingConfiguration -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-configuration MediaCapabilitiesDecodingInfo.configuration specification>
+setConfiguration :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> MediaDecodingConfiguration -> m ()
+setConfiguration self val = liftDOM (void ((js_setConfiguration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"configuration\"]; })"
+        js_getConfiguration :: MediaCapabilitiesDecodingInfo -> IO MediaDecodingConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-configuration MediaCapabilitiesDecodingInfo.configuration specification>
+getConfiguration :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> m MediaDecodingConfiguration
+getConfiguration self = liftDOM ((js_getConfiguration (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesEncodingInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesEncodingInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesEncodingInfo.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesEncodingInfo
+       (js_newMediaCapabilitiesEncodingInfo, js_setConfiguration, js_getConfiguration, newMediaCapabilitiesEncodingInfo, setConfiguration, getConfiguration, MediaCapabilitiesEncodingInfo(..), gTypeMediaCapabilitiesEncodingInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"supported\": $1, \"smooth\": $2, \"powerEfficient\": $3, \"configuration\": $4}); })"
+        js_newMediaCapabilitiesEncodingInfo :: Bool -> Bool -> Bool -> MediaEncodingConfiguration -> IO MediaCapabilitiesEncodingInfo
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediacapabilitiesencodinginfo MediaCapabilitiesEncodingInfo specification>
+newMediaCapabilitiesEncodingInfo :: (MonadDOM m) => Bool -> Bool -> Bool -> MediaEncodingConfiguration -> m MediaCapabilitiesEncodingInfo
+newMediaCapabilitiesEncodingInfo supported smooth powerEfficient configuration = liftDOM ((js_newMediaCapabilitiesEncodingInfo (supported) (smooth) (powerEfficient) (configuration)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"configuration\"] = $2; })"
+        js_setConfiguration :: MediaCapabilitiesEncodingInfo -> MediaEncodingConfiguration -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesencodinginfo-configuration MediaCapabilitiesEncodingInfo.configuration specification>
+setConfiguration :: (MonadDOM m) => MediaCapabilitiesEncodingInfo -> MediaEncodingConfiguration -> m ()
+setConfiguration self val = liftDOM (void ((js_setConfiguration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"configuration\"]; })"
+        js_getConfiguration :: MediaCapabilitiesEncodingInfo -> IO MediaEncodingConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesencodinginfo-configuration MediaCapabilitiesEncodingInfo.configuration specification>
+getConfiguration :: (MonadDOM m) => MediaCapabilitiesEncodingInfo -> m MediaEncodingConfiguration
+getConfiguration self = liftDOM ((js_getConfiguration (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesInfo.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesInfo
+       (js_newMediaCapabilitiesInfo, js_setSupported, js_getSupported, js_setSmooth, js_getSmooth, js_setPowerEfficient, js_getPowerEfficient, newMediaCapabilitiesInfo, setSupported, getSupported, setSmooth, getSmooth, setPowerEfficient, getPowerEfficient, MediaCapabilitiesInfo(..), gTypeMediaCapabilitiesInfo, IsMediaCapabilitiesInfo, toMediaCapabilitiesInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"supported\": $1, \"smooth\": $2, \"powerEfficient\": $3}); })"
+        js_newMediaCapabilitiesInfo :: Bool -> Bool -> Bool -> IO MediaCapabilitiesInfo
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediacapabilitiesinfo MediaCapabilitiesInfo specification>
+newMediaCapabilitiesInfo :: (MonadDOM m) => Bool -> Bool -> Bool -> m MediaCapabilitiesInfo
+newMediaCapabilitiesInfo supported smooth powerEfficient = liftDOM ((js_newMediaCapabilitiesInfo (supported) (smooth) (powerEfficient)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supported\"] = $2; })"
+        js_setSupported :: MediaCapabilitiesInfo -> Bool -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-supported MediaCapabilitiesInfo.supported specification>
+setSupported :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> Bool -> m ()
+setSupported self val = liftDOM (void ((js_setSupported ((Types.toMediaCapabilitiesInfo self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supported\"]; })"
+        js_getSupported :: MediaCapabilitiesInfo -> IO Bool
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-supported MediaCapabilitiesInfo.supported specification>
+getSupported :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> m Bool
+getSupported self = liftDOM ((js_getSupported ((Types.toMediaCapabilitiesInfo self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"smooth\"] = $2; })"
+        js_setSmooth :: MediaCapabilitiesInfo -> Bool -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-smooth MediaCapabilitiesInfo.smooth specification>
+setSmooth :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> Bool -> m ()
+setSmooth self val = liftDOM (void ((js_setSmooth ((Types.toMediaCapabilitiesInfo self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"smooth\"]; })"
+        js_getSmooth :: MediaCapabilitiesInfo -> IO Bool
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-smooth MediaCapabilitiesInfo.smooth specification>
+getSmooth :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> m Bool
+getSmooth self = liftDOM ((js_getSmooth ((Types.toMediaCapabilitiesInfo self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerEfficient\"] = $2; })"
+        js_setPowerEfficient :: MediaCapabilitiesInfo -> Bool -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-powerefficient MediaCapabilitiesInfo.powerEfficient specification>
+setPowerEfficient :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> Bool -> m ()
+setPowerEfficient self val = liftDOM (void ((js_setPowerEfficient ((Types.toMediaCapabilitiesInfo self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerEfficient\"]; })"
+        js_getPowerEfficient :: MediaCapabilitiesInfo -> IO Bool
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-powerefficient MediaCapabilitiesInfo.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> m Bool
+getPowerEfficient self = liftDOM ((js_getPowerEfficient ((Types.toMediaCapabilitiesInfo self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesKeySystemConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesKeySystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaCapabilitiesKeySystemConfiguration.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaCapabilitiesKeySystemConfiguration
+       (js_newMediaCapabilitiesKeySystemConfiguration, js_setKeySystem, js_getKeySystem, js_setInitDataType, js_getInitDataType, js_setDistinctiveIdentifier, js_getDistinctiveIdentifier, js_setPersistentState, js_getPersistentState, js_setSessionTypes, js_getSessionTypes, js_setAudio, js_getAudio, js_setVideo, js_getVideo, newMediaCapabilitiesKeySystemConfiguration, setKeySystem, getKeySystem, setInitDataType, getInitDataType, getInitDataTypeUnsafe, getInitDataTypeUnchecked, setDistinctiveIdentifier, getDistinctiveIdentifier, getDistinctiveIdentifierUnsafe, getDistinctiveIdentifierUnchecked, setPersistentState, getPersistentState, getPersistentStateUnsafe, getPersistentStateUnchecked, setSessionTypes, getSessionTypes, getSessionTypesUnsafe, getSessionTypesUnchecked, setAudio, getAudio, getAudioUnsafe, getAudioUnchecked, setVideo, getVideo, getVideoUnsafe, getVideoUnchecked, MediaCapabilitiesKeySystemConfiguration(..), gTypeMediaCapabilitiesKeySystemConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"keySystem\": $1}); })"
+        js_newMediaCapabilitiesKeySystemConfiguration :: JSString -> IO MediaCapabilitiesKeySystemConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediacapabilitieskeysystemconfiguration MediaCapabilitiesKeySystemConfiguration specification>
+newMediaCapabilitiesKeySystemConfiguration :: (MonadDOM m, ToJSString keySystem) => keySystem -> m MediaCapabilitiesKeySystemConfiguration
+newMediaCapabilitiesKeySystemConfiguration keySystem = liftDOM ((js_newMediaCapabilitiesKeySystemConfiguration (toJSString keySystem)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keySystem\"] = $2; })"
+        js_setKeySystem :: MediaCapabilitiesKeySystemConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-keysystem MediaCapabilitiesKeySystemConfiguration.keySystem specification>
+setKeySystem :: (MonadDOM m, ToJSString val) => MediaCapabilitiesKeySystemConfiguration -> val -> m ()
+setKeySystem self val = liftDOM (void ((js_setKeySystem (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keySystem\"]; })"
+        js_getKeySystem :: MediaCapabilitiesKeySystemConfiguration -> IO JSString
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-keysystem MediaCapabilitiesKeySystemConfiguration.keySystem specification>
+getKeySystem :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m result
+getKeySystem self = liftDOM ((fromJSString <$> (js_getKeySystem (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"initDataType\"] = $2; })"
+        js_setInitDataType :: MediaCapabilitiesKeySystemConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-initdatatype MediaCapabilitiesKeySystemConfiguration.initDataType specification>
+setInitDataType :: (MonadDOM m, ToJSString val) => MediaCapabilitiesKeySystemConfiguration -> val -> m ()
+setInitDataType self val = liftDOM (void ((js_setInitDataType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"initDataType\"]; })"
+        js_getInitDataType :: MediaCapabilitiesKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-initdatatype MediaCapabilitiesKeySystemConfiguration.initDataType specification>
+getInitDataType :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe result)
+getInitDataType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getInitDataType (self))))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-initdatatype MediaCapabilitiesKeySystemConfiguration.initDataType specification>
+getInitDataTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m result
+getInitDataTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getInitDataType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-initdatatype MediaCapabilitiesKeySystemConfiguration.initDataType specification>
+getInitDataTypeUnchecked :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m result
+getInitDataTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getInitDataType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"distinctiveIdentifier\"] = $2; })"
+        js_setDistinctiveIdentifier :: MediaCapabilitiesKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-distinctiveidentifier MediaCapabilitiesKeySystemConfiguration.distinctiveIdentifier specification>
+setDistinctiveIdentifier :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setDistinctiveIdentifier self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDistinctiveIdentifier (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"distinctiveIdentifier\"]; })"
+        js_getDistinctiveIdentifier :: MediaCapabilitiesKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-distinctiveidentifier MediaCapabilitiesKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifier :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getDistinctiveIdentifier self = liftDOM (((js_getDistinctiveIdentifier (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-distinctiveidentifier MediaCapabilitiesKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifierUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m MediaKeysRequirement
+getDistinctiveIdentifierUnsafe self = liftDOM ((((js_getDistinctiveIdentifier (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-distinctiveidentifier MediaCapabilitiesKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifierUnchecked :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m MediaKeysRequirement
+getDistinctiveIdentifierUnchecked self = liftDOM ((pFromJSVal <$> (js_getDistinctiveIdentifier (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"persistentState\"] = $2; })"
+        js_setPersistentState :: MediaCapabilitiesKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-persistentstate MediaCapabilitiesKeySystemConfiguration.persistentState specification>
+setPersistentState :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setPersistentState self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPersistentState (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"persistentState\"]; })"
+        js_getPersistentState :: MediaCapabilitiesKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-persistentstate MediaCapabilitiesKeySystemConfiguration.persistentState specification>
+getPersistentState :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getPersistentState self = liftDOM (((js_getPersistentState (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-persistentstate MediaCapabilitiesKeySystemConfiguration.persistentState specification>
+getPersistentStateUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m MediaKeysRequirement
+getPersistentStateUnsafe self = liftDOM ((((js_getPersistentState (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-persistentstate MediaCapabilitiesKeySystemConfiguration.persistentState specification>
+getPersistentStateUnchecked :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m MediaKeysRequirement
+getPersistentStateUnchecked self = liftDOM ((pFromJSVal <$> (js_getPersistentState (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sessionTypes\"] = $2; })"
+        js_setSessionTypes :: MediaCapabilitiesKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-sessiontypes MediaCapabilitiesKeySystemConfiguration.sessionTypes specification>
+setSessionTypes :: (MonadDOM m, ToJSString val) => MediaCapabilitiesKeySystemConfiguration -> [val] -> m ()
+setSessionTypes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSessionTypes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sessionTypes\"]; })"
+        js_getSessionTypes :: MediaCapabilitiesKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-sessiontypes MediaCapabilitiesKeySystemConfiguration.sessionTypes specification>
+getSessionTypes :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe [result])
+getSessionTypes self = liftDOM (((js_getSessionTypes (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-sessiontypes MediaCapabilitiesKeySystemConfiguration.sessionTypes specification>
+getSessionTypesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m [result]
+getSessionTypesUnsafe self = liftDOM ((((js_getSessionTypes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-sessiontypes MediaCapabilitiesKeySystemConfiguration.sessionTypes specification>
+getSessionTypesUnchecked :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m [result]
+getSessionTypesUnchecked self = liftDOM (((js_getSessionTypes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audio\"] = $2; })"
+        js_setAudio :: MediaCapabilitiesKeySystemConfiguration -> KeySystemTrackConfiguration -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-audio MediaCapabilitiesKeySystemConfiguration.audio specification>
+setAudio :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> KeySystemTrackConfiguration -> m ()
+setAudio self val = liftDOM (void ((js_setAudio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audio\"]; })"
+        js_getAudio :: MediaCapabilitiesKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-audio MediaCapabilitiesKeySystemConfiguration.audio specification>
+getAudio :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe KeySystemTrackConfiguration)
+getAudio self = liftDOM (((js_getAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-audio MediaCapabilitiesKeySystemConfiguration.audio specification>
+getAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m KeySystemTrackConfiguration
+getAudioUnsafe self = liftDOM ((((js_getAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-audio MediaCapabilitiesKeySystemConfiguration.audio specification>
+getAudioUnchecked :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m KeySystemTrackConfiguration
+getAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"video\"] = $2; })"
+        js_setVideo :: MediaCapabilitiesKeySystemConfiguration -> KeySystemTrackConfiguration -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-video MediaCapabilitiesKeySystemConfiguration.video specification>
+setVideo :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> KeySystemTrackConfiguration -> m ()
+setVideo self val = liftDOM (void ((js_setVideo (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"video\"]; })"
+        js_getVideo :: MediaCapabilitiesKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-video MediaCapabilitiesKeySystemConfiguration.video specification>
+getVideo :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe KeySystemTrackConfiguration)
+getVideo self = liftDOM (((js_getVideo (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-video MediaCapabilitiesKeySystemConfiguration.video specification>
+getVideoUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m KeySystemTrackConfiguration
+getVideoUnsafe self = liftDOM ((((js_getVideo (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-video MediaCapabilitiesKeySystemConfiguration.video specification>
+getVideoUnchecked :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m KeySystemTrackConfiguration
+getVideoUnchecked self = liftDOM ((pFromJSVal <$> (js_getVideo (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaConfiguration.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaConfiguration
+       (js_newMediaConfiguration, js_setVideo, js_getVideo, js_setAudio, js_getAudio, newMediaConfiguration, setVideo, getVideo, getVideoUnsafe, getVideoUnchecked, setAudio, getAudio, getAudioUnsafe, getAudioUnchecked, MediaConfiguration(..), gTypeMediaConfiguration, IsMediaConfiguration, toMediaConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaConfiguration :: IO MediaConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediaconfiguration MediaConfiguration specification>
+newMediaConfiguration :: (MonadDOM m) => m MediaConfiguration
+newMediaConfiguration = liftDOM ((js_newMediaConfiguration))
+
+foreign import javascript safe "(($1, $2) => { $1[\"video\"] = $2; })"
+        js_setVideo :: MediaConfiguration -> VideoConfiguration -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-video MediaConfiguration.video specification>
+setVideo :: (MonadDOM m, IsMediaConfiguration self) => self -> VideoConfiguration -> m ()
+setVideo self val = liftDOM (void ((js_setVideo ((Types.toMediaConfiguration self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"video\"]; })"
+        js_getVideo :: MediaConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-video MediaConfiguration.video specification>
+getVideo :: (MonadDOM m, IsMediaConfiguration self) => self -> m (Maybe VideoConfiguration)
+getVideo self = liftDOM (((js_getVideo ((Types.toMediaConfiguration self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-video MediaConfiguration.video specification>
+getVideoUnsafe :: (MonadDOM m, IsMediaConfiguration self, HasCallStack) => self -> m VideoConfiguration
+getVideoUnsafe self = liftDOM ((((js_getVideo ((Types.toMediaConfiguration self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-video MediaConfiguration.video specification>
+getVideoUnchecked :: (MonadDOM m, IsMediaConfiguration self) => self -> m VideoConfiguration
+getVideoUnchecked self = liftDOM ((pFromJSVal <$> (js_getVideo ((Types.toMediaConfiguration self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audio\"] = $2; })"
+        js_setAudio :: MediaConfiguration -> AudioConfiguration -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-audio MediaConfiguration.audio specification>
+setAudio :: (MonadDOM m, IsMediaConfiguration self) => self -> AudioConfiguration -> m ()
+setAudio self val = liftDOM (void ((js_setAudio ((Types.toMediaConfiguration self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audio\"]; })"
+        js_getAudio :: MediaConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-audio MediaConfiguration.audio specification>
+getAudio :: (MonadDOM m, IsMediaConfiguration self) => self -> m (Maybe AudioConfiguration)
+getAudio self = liftDOM (((js_getAudio ((Types.toMediaConfiguration self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-audio MediaConfiguration.audio specification>
+getAudioUnsafe :: (MonadDOM m, IsMediaConfiguration self, HasCallStack) => self -> m AudioConfiguration
+getAudioUnsafe self = liftDOM ((((js_getAudio ((Types.toMediaConfiguration self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-audio MediaConfiguration.audio specification>
+getAudioUnchecked :: (MonadDOM m, IsMediaConfiguration self) => self -> m AudioConfiguration
+getAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudio ((Types.toMediaConfiguration self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs
+++ /dev/null
@@ -1,184 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.MediaController
-       (js_newMediaController, newMediaController, js_play, play,
-        js_pause, pause, js_unpause, unpause, js_getBuffered, getBuffered,
-        js_getSeekable, getSeekable, js_getDuration, getDuration,
-        js_setCurrentTime, setCurrentTime, js_getCurrentTime,
-        getCurrentTime, js_getPaused, getPaused, js_getPlayed, getPlayed,
-        js_getPlaybackState, getPlaybackState, js_setDefaultPlaybackRate,
-        setDefaultPlaybackRate, js_getDefaultPlaybackRate,
-        getDefaultPlaybackRate, js_setPlaybackRate, setPlaybackRate,
-        js_getPlaybackRate, getPlaybackRate, js_setVolume, setVolume,
-        js_getVolume, getVolume, js_setMuted, setMuted, js_getMuted,
-        getMuted, MediaController(..), gTypeMediaController)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"MediaController\"](); })" js_newMediaController ::
-        IO MediaController
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation> 
-newMediaController :: (MonadIO m) => m MediaController
-newMediaController = liftIO (js_newMediaController)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"play\"](); })" js_play ::
-        MediaController -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.play Mozilla MediaController.play documentation> 
-play :: (MonadIO m) => MediaController -> m ()
-play self = liftIO (js_play self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pause\"](); })" js_pause ::
-        MediaController -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.pause Mozilla MediaController.pause documentation> 
-pause :: (MonadIO m) => MediaController -> m ()
-pause self = liftIO (js_pause self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"unpause\"](); })" js_unpause ::
-        MediaController -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.unpause Mozilla MediaController.unpause documentation> 
-unpause :: (MonadIO m) => MediaController -> m ()
-unpause self = liftIO (js_unpause self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })" js_getBuffered
-        :: MediaController -> IO TimeRanges
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.buffered Mozilla MediaController.buffered documentation> 
-getBuffered :: (MonadIO m) => MediaController -> m TimeRanges
-getBuffered self = liftIO (js_getBuffered self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"seekable\"]; })" js_getSeekable
-        :: MediaController -> IO TimeRanges
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.seekable Mozilla MediaController.seekable documentation> 
-getSeekable :: (MonadIO m) => MediaController -> m TimeRanges
-getSeekable self = liftIO (js_getSeekable self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
-        :: MediaController -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.duration Mozilla MediaController.duration documentation> 
-getDuration :: (MonadIO m) => MediaController -> m Double
-getDuration self = liftIO (js_getDuration self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"currentTime\"] = $2; })"
-        js_setCurrentTime :: MediaController -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
-setCurrentTime :: (MonadIO m) => MediaController -> Double -> m ()
-setCurrentTime self val = liftIO (js_setCurrentTime self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
-        js_getCurrentTime :: MediaController -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
-getCurrentTime :: (MonadIO m) => MediaController -> m Double
-getCurrentTime self = liftIO (js_getCurrentTime self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"paused\"] ? 1 : 0); })"
-        js_getPaused :: MediaController -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.paused Mozilla MediaController.paused documentation> 
-getPaused :: (MonadIO m) => MediaController -> m Bool
-getPaused self = liftIO (js_getPaused self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"played\"]; })" js_getPlayed ::
-        MediaController -> IO TimeRanges
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.played Mozilla MediaController.played documentation> 
-getPlayed :: (MonadIO m) => MediaController -> m TimeRanges
-getPlayed self = liftIO (js_getPlayed self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"playbackState\"]; })"
-        js_getPlaybackState :: MediaController -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackState Mozilla MediaController.playbackState documentation> 
-getPlaybackState ::
-                 (MonadIO m, FromJSString result) => MediaController -> m result
-getPlaybackState self
-  = liftIO (fromJSString <$> (js_getPlaybackState self))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"defaultPlaybackRate\"] = $2; })" js_setDefaultPlaybackRate ::
-        MediaController -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
-setDefaultPlaybackRate ::
-                       (MonadIO m) => MediaController -> Double -> m ()
-setDefaultPlaybackRate self val
-  = liftIO (js_setDefaultPlaybackRate self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"defaultPlaybackRate\"]; })"
-        js_getDefaultPlaybackRate :: MediaController -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
-getDefaultPlaybackRate ::
-                       (MonadIO m) => MediaController -> m Double
-getDefaultPlaybackRate self
-  = liftIO (js_getDefaultPlaybackRate self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
-        js_setPlaybackRate :: MediaController -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
-setPlaybackRate :: (MonadIO m) => MediaController -> Double -> m ()
-setPlaybackRate self val = liftIO (js_setPlaybackRate self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
-        js_getPlaybackRate :: MediaController -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
-getPlaybackRate :: (MonadIO m) => MediaController -> m Double
-getPlaybackRate self = liftIO (js_getPlaybackRate self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"volume\"] = $2; })" js_setVolume
-        :: MediaController -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
-setVolume :: (MonadIO m) => MediaController -> Double -> m ()
-setVolume self val = liftIO (js_setVolume self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })" js_getVolume ::
-        MediaController -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
-getVolume :: (MonadIO m) => MediaController -> m Double
-getVolume self = liftIO (js_getVolume self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"muted\"] = $2; })" js_setMuted
-        :: MediaController -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
-setMuted :: (MonadIO m) => MediaController -> Bool -> m ()
-setMuted self val = liftIO (js_setMuted self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"muted\"] ? 1 : 0); })"
-        js_getMuted :: MediaController -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
-getMuted :: (MonadIO m) => MediaController -> m Bool
-getMuted self = liftIO (js_getMuted self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs
+++ /dev/null
@@ -1,338 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.MediaControlsHost
-       (js_sortedTrackListForMenu, sortedTrackListForMenu,
-        sortedTrackListForMenu_, js_sortedTrackListForMenuAudio,
-        sortedTrackListForMenuAudio, sortedTrackListForMenuAudio_,
-        js_displayNameForTrack, displayNameForTrack, displayNameForTrack_,
-        js_setSelectedTextTrack, setSelectedTextTrack,
-        js_setPreparedToReturnVideoLayerToInline,
-        setPreparedToReturnVideoLayerToInline, js_updateTextTrackContainer,
-        updateTextTrackContainer, js_enteredFullscreen, enteredFullscreen,
-        js_exitedFullscreen, exitedFullscreen, js_generateUUID,
-        generateUUID, generateUUID_, js_base64StringForIconNameAndType,
-        base64StringForIconNameAndType, base64StringForIconNameAndType_,
-        js_getCaptionMenuOffItem, getCaptionMenuOffItem,
-        js_getCaptionMenuAutomaticItem, getCaptionMenuAutomaticItem,
-        js_getCaptionDisplayMode, getCaptionDisplayMode,
-        js_getTextTrackContainer, getTextTrackContainer,
-        js_getAllowsInlineMediaPlayback, getAllowsInlineMediaPlayback,
-        js_getSupportsFullscreen, getSupportsFullscreen,
-        js_getIsVideoLayerInline, getIsVideoLayerInline,
-        js_getUserGestureRequired, getUserGestureRequired,
-        js_getIsInMediaDocument, getIsInMediaDocument,
-        js_getShouldForceControlsDisplay, getShouldForceControlsDisplay,
-        js_getExternalDeviceDisplayName, getExternalDeviceDisplayName,
-        js_getExternalDeviceType, getExternalDeviceType,
-        js_setControlsDependOnPageScaleFactor,
-        setControlsDependOnPageScaleFactor,
-        js_getControlsDependOnPageScaleFactor,
-        getControlsDependOnPageScaleFactor, js_getShadowRootCSSText,
-        getShadowRootCSSText, MediaControlsHost(..),
-        gTypeMediaControlsHost)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"sortedTrackListForMenu\"]($2); })" js_sortedTrackListForMenu ::
-        MediaControlsHost -> TextTrackList -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenu ::
-                       (MonadIO m) => MediaControlsHost -> TextTrackList -> m [TextTrack]
-sortedTrackListForMenu self trackList
-  = liftIO
-      ((js_sortedTrackListForMenu self trackList) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenu_ ::
-                        (MonadIO m) => MediaControlsHost -> TextTrackList -> m ()
-sortedTrackListForMenu_ self trackList
-  = liftIO (void (js_sortedTrackListForMenu self trackList))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"sortedTrackListForMenu\"]($2); })" js_sortedTrackListForMenuAudio
-        :: MediaControlsHost -> AudioTrackList -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenuAudio ::
-                            (MonadIO m) =>
-                              MediaControlsHost -> AudioTrackList -> m [AudioTrack]
-sortedTrackListForMenuAudio self trackList
-  = liftIO
-      ((js_sortedTrackListForMenuAudio self trackList) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenuAudio_ ::
-                             (MonadIO m) => MediaControlsHost -> AudioTrackList -> m ()
-sortedTrackListForMenuAudio_ self trackList
-  = liftIO (void (js_sortedTrackListForMenuAudio self trackList))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"displayNameForTrack\"]($2); })"
-        js_displayNameForTrack ::
-        MediaControlsHost -> Optional Track -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
-displayNameForTrack ::
-                    (MonadIO m, IsTrack track, FromJSString result) =>
-                      MediaControlsHost -> Maybe track -> m result
-displayNameForTrack self track
-  = liftIO
-      (fromJSString <$>
-         (mapM toJSVal track >>=
-            \ track' ->
-              js_displayNameForTrack self (maybeToOptional (fmap Track track'))))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
-displayNameForTrack_ ::
-                     (MonadIO m, IsTrack track) =>
-                       MediaControlsHost -> Maybe track -> m ()
-displayNameForTrack_ self track
-  = liftIO
-      (void
-         (mapM toJSVal track >>=
-            \ track' ->
-              js_displayNameForTrack self (maybeToOptional (fmap Track track'))))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setSelectedTextTrack\"]($2); })"
-        js_setSelectedTextTrack ::
-        MediaControlsHost -> Optional TextTrack -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.setSelectedTextTrack Mozilla MediaControlsHost.setSelectedTextTrack documentation> 
-setSelectedTextTrack ::
-                     (MonadIO m) => MediaControlsHost -> Maybe TextTrack -> m ()
-setSelectedTextTrack self track
-  = liftIO (js_setSelectedTextTrack self (maybeToOptional track))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"setPreparedToReturnVideoLayerToInline\"]($2); })"
-        js_setPreparedToReturnVideoLayerToInline ::
-        MediaControlsHost -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.setPreparedToReturnVideoLayerToInline Mozilla MediaControlsHost.setPreparedToReturnVideoLayerToInline documentation> 
-setPreparedToReturnVideoLayerToInline ::
-                                      (MonadIO m) => MediaControlsHost -> Bool -> m ()
-setPreparedToReturnVideoLayerToInline self prepared
-  = liftIO (js_setPreparedToReturnVideoLayerToInline self prepared)
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"updateTextTrackContainer\"](); })" js_updateTextTrackContainer ::
-        MediaControlsHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.updateTextTrackContainer Mozilla MediaControlsHost.updateTextTrackContainer documentation> 
-updateTextTrackContainer ::
-                         (MonadIO m) => MediaControlsHost -> m ()
-updateTextTrackContainer self
-  = liftIO (js_updateTextTrackContainer self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"enteredFullscreen\"](); })"
-        js_enteredFullscreen :: MediaControlsHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.enteredFullscreen Mozilla MediaControlsHost.enteredFullscreen documentation> 
-enteredFullscreen :: (MonadIO m) => MediaControlsHost -> m ()
-enteredFullscreen self = liftIO (js_enteredFullscreen self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"exitedFullscreen\"](); })"
-        js_exitedFullscreen :: MediaControlsHost -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.exitedFullscreen Mozilla MediaControlsHost.exitedFullscreen documentation> 
-exitedFullscreen :: (MonadIO m) => MediaControlsHost -> m ()
-exitedFullscreen self = liftIO (js_exitedFullscreen self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"generateUUID\"](); })"
-        js_generateUUID :: MediaControlsHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.generateUUID Mozilla MediaControlsHost.generateUUID documentation> 
-generateUUID ::
-             (MonadIO m, FromJSString result) => MediaControlsHost -> m result
-generateUUID self
-  = liftIO (fromJSString <$> (js_generateUUID self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.generateUUID Mozilla MediaControlsHost.generateUUID documentation> 
-generateUUID_ :: (MonadIO m) => MediaControlsHost -> m ()
-generateUUID_ self = liftIO (void (js_generateUUID self))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"base64StringForIconNameAndType\"]($2,\n$3); })"
-        js_base64StringForIconNameAndType ::
-        MediaControlsHost -> JSString -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.base64StringForIconNameAndType Mozilla MediaControlsHost.base64StringForIconNameAndType documentation> 
-base64StringForIconNameAndType ::
-                               (MonadIO m, ToJSString iconName, ToJSString iconType,
-                                FromJSString result) =>
-                                 MediaControlsHost -> iconName -> iconType -> m result
-base64StringForIconNameAndType self iconName iconType
-  = liftIO
-      (fromJSString <$>
-         (js_base64StringForIconNameAndType self (toJSString iconName)
-            (toJSString iconType)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.base64StringForIconNameAndType Mozilla MediaControlsHost.base64StringForIconNameAndType documentation> 
-base64StringForIconNameAndType_ ::
-                                (MonadIO m, ToJSString iconName, ToJSString iconType) =>
-                                  MediaControlsHost -> iconName -> iconType -> m ()
-base64StringForIconNameAndType_ self iconName iconType
-  = liftIO
-      (void
-         (js_base64StringForIconNameAndType self (toJSString iconName)
-            (toJSString iconType)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"captionMenuOffItem\"]; })"
-        js_getCaptionMenuOffItem :: MediaControlsHost -> IO TextTrack
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuOffItem Mozilla MediaControlsHost.captionMenuOffItem documentation> 
-getCaptionMenuOffItem ::
-                      (MonadIO m) => MediaControlsHost -> m TextTrack
-getCaptionMenuOffItem self = liftIO (js_getCaptionMenuOffItem self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"captionMenuAutomaticItem\"]; })"
-        js_getCaptionMenuAutomaticItem :: MediaControlsHost -> IO TextTrack
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuAutomaticItem Mozilla MediaControlsHost.captionMenuAutomaticItem documentation> 
-getCaptionMenuAutomaticItem ::
-                            (MonadIO m) => MediaControlsHost -> m TextTrack
-getCaptionMenuAutomaticItem self
-  = liftIO (js_getCaptionMenuAutomaticItem self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"captionDisplayMode\"]; })"
-        js_getCaptionDisplayMode :: MediaControlsHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionDisplayMode Mozilla MediaControlsHost.captionDisplayMode documentation> 
-getCaptionDisplayMode ::
-                      (MonadIO m, FromJSString result) => MediaControlsHost -> m result
-getCaptionDisplayMode self
-  = liftIO (fromJSString <$> (js_getCaptionDisplayMode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"textTrackContainer\"]; })"
-        js_getTextTrackContainer :: MediaControlsHost -> IO HTMLElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.textTrackContainer Mozilla MediaControlsHost.textTrackContainer documentation> 
-getTextTrackContainer ::
-                      (MonadIO m) => MediaControlsHost -> m HTMLElement
-getTextTrackContainer self = liftIO (js_getTextTrackContainer self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"allowsInlineMediaPlayback\"] ? 1 : 0); })"
-        js_getAllowsInlineMediaPlayback :: MediaControlsHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.allowsInlineMediaPlayback Mozilla MediaControlsHost.allowsInlineMediaPlayback documentation> 
-getAllowsInlineMediaPlayback ::
-                             (MonadIO m) => MediaControlsHost -> m Bool
-getAllowsInlineMediaPlayback self
-  = liftIO (js_getAllowsInlineMediaPlayback self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"supportsFullscreen\"] ? 1 : 0); })" js_getSupportsFullscreen ::
-        MediaControlsHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.supportsFullscreen Mozilla MediaControlsHost.supportsFullscreen documentation> 
-getSupportsFullscreen :: (MonadIO m) => MediaControlsHost -> m Bool
-getSupportsFullscreen self = liftIO (js_getSupportsFullscreen self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"isVideoLayerInline\"] ? 1 : 0); })" js_getIsVideoLayerInline ::
-        MediaControlsHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.isVideoLayerInline Mozilla MediaControlsHost.isVideoLayerInline documentation> 
-getIsVideoLayerInline :: (MonadIO m) => MediaControlsHost -> m Bool
-getIsVideoLayerInline self = liftIO (js_getIsVideoLayerInline self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"userGestureRequired\"] ? 1 : 0); })" js_getUserGestureRequired
-        :: MediaControlsHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.userGestureRequired Mozilla MediaControlsHost.userGestureRequired documentation> 
-getUserGestureRequired ::
-                       (MonadIO m) => MediaControlsHost -> m Bool
-getUserGestureRequired self
-  = liftIO (js_getUserGestureRequired self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"isInMediaDocument\"] ? 1 : 0); })" js_getIsInMediaDocument ::
-        MediaControlsHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.isInMediaDocument Mozilla MediaControlsHost.isInMediaDocument documentation> 
-getIsInMediaDocument :: (MonadIO m) => MediaControlsHost -> m Bool
-getIsInMediaDocument self = liftIO (js_getIsInMediaDocument self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"shouldForceControlsDisplay\"] ? 1 : 0); })"
-        js_getShouldForceControlsDisplay :: MediaControlsHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.shouldForceControlsDisplay Mozilla MediaControlsHost.shouldForceControlsDisplay documentation> 
-getShouldForceControlsDisplay ::
-                              (MonadIO m) => MediaControlsHost -> m Bool
-getShouldForceControlsDisplay self
-  = liftIO (js_getShouldForceControlsDisplay self)
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"externalDeviceDisplayName\"]; })" js_getExternalDeviceDisplayName
-        :: MediaControlsHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceDisplayName Mozilla MediaControlsHost.externalDeviceDisplayName documentation> 
-getExternalDeviceDisplayName ::
-                             (MonadIO m, FromJSString result) => MediaControlsHost -> m result
-getExternalDeviceDisplayName self
-  = liftIO (fromJSString <$> (js_getExternalDeviceDisplayName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"externalDeviceType\"]; })"
-        js_getExternalDeviceType :: MediaControlsHost -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceType Mozilla MediaControlsHost.externalDeviceType documentation> 
-getExternalDeviceType ::
-                      (MonadIO m) => MediaControlsHost -> m DeviceType
-getExternalDeviceType self
-  = liftIO ((js_getExternalDeviceType self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"controlsDependOnPageScaleFactor\"] = $2; })"
-        js_setControlsDependOnPageScaleFactor ::
-        MediaControlsHost -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
-setControlsDependOnPageScaleFactor ::
-                                   (MonadIO m) => MediaControlsHost -> Bool -> m ()
-setControlsDependOnPageScaleFactor self val
-  = liftIO (js_setControlsDependOnPageScaleFactor self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"controlsDependOnPageScaleFactor\"] ? 1 : 0); })"
-        js_getControlsDependOnPageScaleFactor ::
-        MediaControlsHost -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
-getControlsDependOnPageScaleFactor ::
-                                   (MonadIO m) => MediaControlsHost -> m Bool
-getControlsDependOnPageScaleFactor self
-  = liftIO (js_getControlsDependOnPageScaleFactor self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"shadowRootCSSText\"]; })"
-        js_getShadowRootCSSText :: MediaControlsHost -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.shadowRootCSSText Mozilla MediaControlsHost.shadowRootCSSText documentation> 
-getShadowRootCSSText ::
-                     (MonadIO m, FromJSString result) => MediaControlsHost -> m result
-getShadowRootCSSText self
-  = liftIO (fromJSString <$> (js_getShadowRootCSSText self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaDecodingConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaDecodingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaDecodingConfiguration.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaDecodingConfiguration
+       (js_newMediaDecodingConfiguration, js_setType, js_getType, js_setKeySystemConfiguration, js_getKeySystemConfiguration, newMediaDecodingConfiguration, setType, getType, setKeySystemConfiguration, getKeySystemConfiguration, getKeySystemConfigurationUnsafe, getKeySystemConfigurationUnchecked, MediaDecodingConfiguration(..), gTypeMediaDecodingConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"type\": $1}); })"
+        js_newMediaDecodingConfiguration :: JSVal -> IO MediaDecodingConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediadecodingconfiguration MediaDecodingConfiguration specification>
+newMediaDecodingConfiguration :: (MonadDOM m) => MediaDecodingType -> m MediaDecodingConfiguration
+newMediaDecodingConfiguration type' = liftDOM (((toJSVal type') >>= \a1' -> js_newMediaDecodingConfiguration a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: MediaDecodingConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-type MediaDecodingConfiguration.type specification>
+setType :: (MonadDOM m) => MediaDecodingConfiguration -> MediaDecodingType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: MediaDecodingConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-type MediaDecodingConfiguration.type specification>
+getType :: (MonadDOM m) => MediaDecodingConfiguration -> m MediaDecodingType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keySystemConfiguration\"] = $2; })"
+        js_setKeySystemConfiguration :: MediaDecodingConfiguration -> MediaCapabilitiesKeySystemConfiguration -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-keysystemconfiguration MediaDecodingConfiguration.keySystemConfiguration specification>
+setKeySystemConfiguration :: (MonadDOM m) => MediaDecodingConfiguration -> MediaCapabilitiesKeySystemConfiguration -> m ()
+setKeySystemConfiguration self val = liftDOM (void ((js_setKeySystemConfiguration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keySystemConfiguration\"]; })"
+        js_getKeySystemConfiguration :: MediaDecodingConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-keysystemconfiguration MediaDecodingConfiguration.keySystemConfiguration specification>
+getKeySystemConfiguration :: (MonadDOM m) => MediaDecodingConfiguration -> m (Maybe MediaCapabilitiesKeySystemConfiguration)
+getKeySystemConfiguration self = liftDOM (((js_getKeySystemConfiguration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-keysystemconfiguration MediaDecodingConfiguration.keySystemConfiguration specification>
+getKeySystemConfigurationUnsafe :: (MonadDOM m, HasCallStack) => MediaDecodingConfiguration -> m MediaCapabilitiesKeySystemConfiguration
+getKeySystemConfigurationUnsafe self = liftDOM ((((js_getKeySystemConfiguration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-keysystemconfiguration MediaDecodingConfiguration.keySystemConfiguration specification>
+getKeySystemConfigurationUnchecked :: (MonadDOM m) => MediaDecodingConfiguration -> m MediaCapabilitiesKeySystemConfiguration
+getKeySystemConfigurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeySystemConfiguration (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
@@ -1,77 +1,51 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo
-       (js_newMediaDeviceInfo, newMediaDeviceInfo, js_getDeviceId,
-        getDeviceId, js_getKind, getKind, js_getLabel, getLabel,
-        js_getGroupId, getGroupId, MediaDeviceInfo(..),
-        gTypeMediaDeviceInfo)
+       (js_toJSON, js_getDeviceId, js_getKind, js_getLabel, js_getGroupId, toJSON, toJSON_, getDeviceId, getKind, getLabel, getGroupId, MediaDeviceInfo(..), gTypeMediaDeviceInfo, IsMediaDeviceInfo, toMediaDeviceInfo)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"MediaDeviceInfo\"]($1,\n$2, $3, $4); })"
-        js_newMediaDeviceInfo ::
-        JSString -> JSString -> JSString -> JSVal -> IO MediaDeviceInfo
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo Mozilla MediaDeviceInfo documentation> 
-newMediaDeviceInfo ::
-                   (MonadIO m, ToJSString deviceId, ToJSString label,
-                    ToJSString groupId) =>
-                     deviceId ->
-                       label -> groupId -> MediaDeviceKind -> m MediaDeviceInfo
-newMediaDeviceInfo deviceId label groupId kind
-  = liftIO
-      (js_newMediaDeviceInfo (toJSString deviceId) (toJSString label)
-         (toJSString groupId)
-         (pToJSVal kind))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deviceId\"]; })" js_getDeviceId
-        :: MediaDeviceInfo -> IO JSString
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: MediaDeviceInfo -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/toJSON MDN MediaDeviceInfo.toJSON documentation>
+toJSON :: (MonadDOM m, IsMediaDeviceInfo self) => self -> m GObject
+toJSON self = liftDOM ((js_toJSON ((Types.toMediaDeviceInfo self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.deviceId Mozilla MediaDeviceInfo.deviceId documentation> 
-getDeviceId ::
-            (MonadIO m, FromJSString result) => MediaDeviceInfo -> m result
-getDeviceId self = liftIO (fromJSString <$> (js_getDeviceId self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        MediaDeviceInfo -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/toJSON MDN MediaDeviceInfo.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsMediaDeviceInfo self) => self -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON ((Types.toMediaDeviceInfo self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.kind Mozilla MediaDeviceInfo.kind documentation> 
-getKind :: (MonadIO m) => MediaDeviceInfo -> m MediaDeviceKind
-getKind self = liftIO ((js_getKind self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        MediaDeviceInfo -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"deviceId\"]; })"
+        js_getDeviceId :: MediaDeviceInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/deviceId MDN MediaDeviceInfo.deviceId documentation>
+getDeviceId :: (MonadDOM m, IsMediaDeviceInfo self, FromJSString result) => self -> m result
+getDeviceId self = liftDOM ((fromJSString <$> (js_getDeviceId ((Types.toMediaDeviceInfo self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.label Mozilla MediaDeviceInfo.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => MediaDeviceInfo -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"groupId\"]; })" js_getGroupId ::
-        MediaDeviceInfo -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: MediaDeviceInfo -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/kind MDN MediaDeviceInfo.kind documentation>
+getKind :: (MonadDOM m, IsMediaDeviceInfo self) => self -> m MediaDeviceKind
+getKind self = liftDOM (((js_getKind ((Types.toMediaDeviceInfo self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.groupId Mozilla MediaDeviceInfo.groupId documentation> 
-getGroupId ::
-           (MonadIO m, FromJSString result) => MediaDeviceInfo -> m result
-getGroupId self = liftIO (fromJSString <$> (js_getGroupId self))
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: MediaDeviceInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/label MDN MediaDeviceInfo.label documentation>
+getLabel :: (MonadDOM m, IsMediaDeviceInfo self, FromJSString result) => self -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel ((Types.toMediaDeviceInfo self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"groupId\"]; })"
+        js_getGroupId :: MediaDeviceInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/groupId MDN MediaDeviceInfo.groupId documentation>
+getGroupId :: (MonadDOM m, IsMediaDeviceInfo self, FromJSString result) => self -> m result
+getGroupId self = liftDOM ((fromJSString <$> (js_getGroupId ((Types.toMediaDeviceInfo self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
@@ -1,86 +1,61 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaDevices
-       (js_enumerateDevices, enumerateDevices, enumerateDevices_,
-        js_getSupportedConstraints, getSupportedConstraints,
-        getSupportedConstraints_, js_getUserMedia, getUserMedia,
-        getUserMedia_, devicechange, MediaDevices(..), gTypeMediaDevices)
+       (js_enumerateDevices, js_getDisplayMedia, js_getSupportedConstraints, js_getUserMedia, enumerateDevices, enumerateDevices_, getDisplayMedia, getDisplayMedia_, getSupportedConstraints, getSupportedConstraints_, getUserMedia, getUserMedia_, devicechange, MediaDevices(..), gTypeMediaDevices)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"enumerateDevices\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"enumerateDevices\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
         js_enumerateDevices :: MediaDevices -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/enumerateDevices MDN MediaDevices.enumerateDevices documentation>
+enumerateDevices :: (MonadDOM m) => MediaDevices -> m [MediaDeviceInfo]
+enumerateDevices self = liftDOM ((((js_enumerateDevices (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
-enumerateDevices ::
-                 (MonadIO m) => MediaDevices -> m [MediaDeviceInfo]
-enumerateDevices self
-  = liftIO
-      (((js_enumerateDevices self) >>= checkPromiseResult) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/enumerateDevices MDN MediaDevices.enumerateDevices documentation>
+enumerateDevices_ :: (MonadDOM m) => MediaDevices -> m ()
+enumerateDevices_ self = liftDOM (void (((js_enumerateDevices (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
-enumerateDevices_ :: (MonadIO m) => MediaDevices -> m ()
-enumerateDevices_ self = liftIO (void (js_enumerateDevices self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"getSupportedConstraints\"](); })" js_getSupportedConstraints ::
-        MediaDevices -> IO MediaTrackSupportedConstraints
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getDisplayMedia\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getDisplayMedia :: MediaDevices -> JSVal -> IO (JSVal, MediaStream)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getDisplayMedia MDN MediaDevices.getDisplayMedia documentation>
+getDisplayMedia :: (MonadDOM m) => MediaDevices -> Maybe DisplayMediaStreamOptions -> m MediaStream
+getDisplayMedia self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getDisplayMedia (self) a2') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
-getSupportedConstraints ::
-                        (MonadIO m) => MediaDevices -> m MediaTrackSupportedConstraints
-getSupportedConstraints self
-  = liftIO (js_getSupportedConstraints self)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getDisplayMedia MDN MediaDevices.getDisplayMedia documentation>
+getDisplayMedia_ :: (MonadDOM m) => MediaDevices -> Maybe DisplayMediaStreamOptions -> m ()
+getDisplayMedia_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getDisplayMedia (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
-getSupportedConstraints_ :: (MonadIO m) => MediaDevices -> m ()
-getSupportedConstraints_ self
-  = liftIO (void (js_getSupportedConstraints self))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"getUserMedia\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getUserMedia ::
-        MediaDevices ->
-          Optional MediaStreamConstraints -> IO (JSVal, MediaStream)
+foreign import javascript safe "(($1) => { return $1[\"getSupportedConstraints\"](); })"
+        js_getSupportedConstraints :: MediaDevices -> IO MediaTrackSupportedConstraints
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints MDN MediaDevices.getSupportedConstraints documentation>
+getSupportedConstraints :: (MonadDOM m) => MediaDevices -> m MediaTrackSupportedConstraints
+getSupportedConstraints self = liftDOM ((js_getSupportedConstraints (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getUserMedia Mozilla MediaDevices.getUserMedia documentation> 
-getUserMedia ::
-             (MonadIO m) =>
-               MediaDevices -> Maybe MediaStreamConstraints -> m MediaStream
-getUserMedia self constraints
-  = liftIO
-      ((js_getUserMedia self (maybeToOptional constraints)) >>=
-         checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints MDN MediaDevices.getSupportedConstraints documentation>
+getSupportedConstraints_ :: (MonadDOM m) => MediaDevices -> m ()
+getSupportedConstraints_ self = liftDOM (void ((js_getSupportedConstraints (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getUserMedia Mozilla MediaDevices.getUserMedia documentation> 
-getUserMedia_ ::
-              (MonadIO m) => MediaDevices -> Maybe MediaStreamConstraints -> m ()
-getUserMedia_ self constraints
-  = liftIO
-      (void (js_getUserMedia self (maybeToOptional constraints)))
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getUserMedia\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getUserMedia :: MediaDevices -> JSVal -> IO (JSVal, MediaStream)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getUserMedia MDN MediaDevices.getUserMedia documentation>
+getUserMedia :: (MonadDOM m) => MediaDevices -> Maybe MediaStreamConstraints -> m MediaStream
+getUserMedia self constraints = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal constraints) >>= \a2' -> js_getUserMedia (self) a2') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.ondevicechange Mozilla MediaDevices.ondevicechange documentation> 
-devicechange :: EventName MediaDevices ondevicechange
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getUserMedia MDN MediaDevices.getUserMedia documentation>
+getUserMedia_ :: (MonadDOM m) => MediaDevices -> Maybe MediaStreamConstraints -> m ()
+getUserMedia_ self constraints = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal constraints) >>= \a2' -> js_getUserMedia (self) a2') >>= checkPromiseResult)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediadevices-ondevicechange devicechange event>
+devicechange :: EventName MediaDevices DeviceChangeEvent
 devicechange = unsafeEventName (toJSString "devicechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaEffectInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaEffectInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaEffectInfo.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-extensions (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaEffectInfo
+       (js_newMediaEffectInfo, js_setEnabled, js_getEnabled, newMediaEffectInfo, setEnabled, getEnabled, MediaEffectInfo(..), gTypeMediaEffectInfo, IsMediaEffectInfo, toMediaEffectInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"enabled\": $1}); })"
+        js_newMediaEffectInfo :: Bool -> IO MediaEffectInfo
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediaeffectinfo MediaEffectInfo specification>
+newMediaEffectInfo :: (MonadDOM m) => Bool -> m MediaEffectInfo
+newMediaEffectInfo enabled = liftDOM ((js_newMediaEffectInfo (enabled)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"enabled\"] = $2; })"
+        js_setEnabled :: MediaEffectInfo -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediaeffectinfo-enabled MediaEffectInfo.enabled specification>
+setEnabled :: (MonadDOM m, IsMediaEffectInfo self) => self -> Bool -> m ()
+setEnabled self val = liftDOM (void ((js_setEnabled ((Types.toMediaEffectInfo self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"enabled\"]; })"
+        js_getEnabled :: MediaEffectInfo -> IO Bool
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediaeffectinfo-enabled MediaEffectInfo.enabled specification>
+getEnabled :: (MonadDOM m, IsMediaEffectInfo self) => self -> m Bool
+getEnabled self = liftDOM ((js_getEnabled ((Types.toMediaEffectInfo self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
@@ -1,36 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
-       (js_getMediaElement, getMediaElement,
-        MediaElementAudioSourceNode(..), gTypeMediaElementAudioSourceNode)
+       (js_newMediaElementAudioSourceNode, js_getMediaElement, newMediaElementAudioSourceNode, getMediaElement, MediaElementAudioSourceNode(..), gTypeMediaElementAudioSourceNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mediaElement\"]; })"
-        js_getMediaElement ::
-        MediaElementAudioSourceNode -> IO HTMLMediaElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
-getMediaElement ::
-                (MonadIO m) => MediaElementAudioSourceNode -> m HTMLMediaElement
-getMediaElement self = liftIO (js_getMediaElement self)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaElementAudioSourceNode\"]($1, $2); })"
+        js_newMediaElementAudioSourceNode :: AudioContext -> MediaElementAudioSourceOptions -> IO MediaElementAudioSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/MediaElementAudioSourceNode/MediaElementAudioSourceNode MDN MediaElementAudioSourceNode. documentation>
+newMediaElementAudioSourceNode :: (MonadDOM m) => AudioContext -> MediaElementAudioSourceOptions -> m MediaElementAudioSourceNode
+newMediaElementAudioSourceNode context options = liftDOM ((js_newMediaElementAudioSourceNode (context) (options)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediaElement\"]; })"
+        js_getMediaElement :: MediaElementAudioSourceNode -> IO HTMLMediaElement
+-- | <https://developer.mozilla.org/docs/Web/API/MediaElementAudioSourceNode/mediaElement MDN MediaElementAudioSourceNode.mediaElement documentation>
+getMediaElement :: (MonadDOM m) => MediaElementAudioSourceNode -> m HTMLMediaElement
+getMediaElement self = liftDOM ((js_getMediaElement (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceOptions.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceOptions
+       (js_newMediaElementAudioSourceOptions, js_setMediaElement, js_getMediaElement, newMediaElementAudioSourceOptions, setMediaElement, getMediaElement, MediaElementAudioSourceOptions(..), gTypeMediaElementAudioSourceOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"mediaElement\": $1}); })"
+        js_newMediaElementAudioSourceOptions :: HTMLMediaElement -> IO MediaElementAudioSourceOptions
+-- | <https://webaudio.github.io/web-audio-api/#MediaElementAudioSourceOptions MediaElementAudioSourceOptions specification>
+newMediaElementAudioSourceOptions :: (MonadDOM m, IsHTMLMediaElement mediaElement) => mediaElement -> m MediaElementAudioSourceOptions
+newMediaElementAudioSourceOptions mediaElement = liftDOM ((js_newMediaElementAudioSourceOptions (Types.toHTMLMediaElement mediaElement)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mediaElement\"] = $2; })"
+        js_setMediaElement :: MediaElementAudioSourceOptions -> HTMLMediaElement -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-mediaelementaudiosourceoptions-mediaelement MediaElementAudioSourceOptions.mediaElement specification>
+setMediaElement :: (MonadDOM m, IsHTMLMediaElement val) => MediaElementAudioSourceOptions -> val -> m ()
+setMediaElement self val = liftDOM (void ((js_setMediaElement (self) (Types.toHTMLMediaElement val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediaElement\"]; })"
+        js_getMediaElement :: MediaElementAudioSourceOptions -> IO HTMLMediaElement
+-- | <https://webaudio.github.io/web-audio-api/#dom-mediaelementaudiosourceoptions-mediaelement MediaElementAudioSourceOptions.mediaElement specification>
+getMediaElement :: (MonadDOM m) => MediaElementAudioSourceOptions -> m HTMLMediaElement
+getMediaElement self = liftDOM ((js_getMediaElement (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaEncodingConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaEncodingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaEncodingConfiguration.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaEncodingConfiguration
+       (js_newMediaEncodingConfiguration, js_setType, js_getType, newMediaEncodingConfiguration, setType, getType, MediaEncodingConfiguration(..), gTypeMediaEncodingConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"type\": $1}); })"
+        js_newMediaEncodingConfiguration :: JSVal -> IO MediaEncodingConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediaencodingconfiguration MediaEncodingConfiguration specification>
+newMediaEncodingConfiguration :: (MonadDOM m) => MediaEncodingType -> m MediaEncodingConfiguration
+newMediaEncodingConfiguration type' = liftDOM (((toJSVal type') >>= \a1' -> js_newMediaEncodingConfiguration a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: MediaEncodingConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaencodingconfiguration-type MediaEncodingConfiguration.type specification>
+setType :: (MonadDOM m) => MediaEncodingConfiguration -> MediaEncodingType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: MediaEncodingConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaencodingconfiguration-type MediaEncodingConfiguration.type specification>
+getType :: (MonadDOM m) => MediaEncodingConfiguration -> m MediaEncodingType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
@@ -1,76 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent
-       (js_newMediaEncryptedEvent, newMediaEncryptedEvent,
-        js_getInitDataType, getInitDataType, js_getInitData, getInitData,
-        getInitDataUnsafe, getInitDataUnchecked, MediaEncryptedEvent(..),
-        gTypeMediaEncryptedEvent)
+       (js_newMediaEncryptedEvent, js_getInitDataType, js_getInitData, newMediaEncryptedEvent, getInitDataType, getInitData, getInitDataUnsafe, getInitDataUnchecked, MediaEncryptedEvent(..), gTypeMediaEncryptedEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"MediaEncryptedEvent\"]($1,\n$2); })"
-        js_newMediaEncryptedEvent ::
-        JSString ->
-          Optional MediaEncryptedEventInit -> IO MediaEncryptedEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent Mozilla MediaEncryptedEvent documentation> 
-newMediaEncryptedEvent ::
-                       (MonadIO m, ToJSString type') =>
-                         type' -> Maybe MediaEncryptedEventInit -> m MediaEncryptedEvent
-newMediaEncryptedEvent type' eventInitDict
-  = liftIO
-      (js_newMediaEncryptedEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaEncryptedEvent\"]($1, $2); })"
+        js_newMediaEncryptedEvent :: JSString -> JSVal -> IO MediaEncryptedEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/MediaEncryptedEvent MDN MediaEncryptedEvent. documentation>
+newMediaEncryptedEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe MediaEncryptedEventInit -> m MediaEncryptedEvent
+newMediaEncryptedEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newMediaEncryptedEvent (toJSString type') a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"initDataType\"]; })"
         js_getInitDataType :: MediaEncryptedEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initDataType Mozilla MediaEncryptedEvent.initDataType documentation> 
-getInitDataType ::
-                (MonadIO m, FromJSString result) => MediaEncryptedEvent -> m result
-getInitDataType self
-  = liftIO (fromJSString <$> (js_getInitDataType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"initData\"]; })" js_getInitData
-        :: MediaEncryptedEvent -> IO (Nullable ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/initDataType MDN MediaEncryptedEvent.initDataType documentation>
+getInitDataType :: (MonadDOM m, FromJSString result) => MediaEncryptedEvent -> m result
+getInitDataType self = liftDOM ((fromJSString <$> (js_getInitDataType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
-getInitData ::
-            (MonadIO m) => MediaEncryptedEvent -> m (Maybe ArrayBuffer)
-getInitData self
-  = liftIO (nullableToMaybe <$> (js_getInitData self))
+foreign import javascript unsafe "(($1) => { return $1[\"initData\"]; })"
+        js_getInitData :: MediaEncryptedEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/initData MDN MediaEncryptedEvent.initData documentation>
+getInitData :: (MonadDOM m) => MediaEncryptedEvent -> m (Maybe ArrayBuffer)
+getInitData self = liftDOM (((js_getInitData (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
-getInitDataUnsafe ::
-                  (MonadIO m, HasCallStack) => MediaEncryptedEvent -> m ArrayBuffer
-getInitDataUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getInitData self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/initData MDN MediaEncryptedEvent.initData documentation>
+getInitDataUnsafe :: (MonadDOM m, HasCallStack) => MediaEncryptedEvent -> m ArrayBuffer
+getInitDataUnsafe self = liftDOM ((((js_getInitData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
-getInitDataUnchecked ::
-                     (MonadIO m) => MediaEncryptedEvent -> m ArrayBuffer
-getInitDataUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getInitData self))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/initData MDN MediaEncryptedEvent.initData documentation>
+getInitDataUnchecked :: (MonadDOM m) => MediaEncryptedEvent -> m ArrayBuffer
+getInitDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getInitData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaEncryptedEventInit
+       (js_newMediaEncryptedEventInit, js_setInitDataType, js_getInitDataType, js_setInitData, js_getInitData, newMediaEncryptedEventInit, setInitDataType, getInitDataType, getInitDataTypeUnsafe, getInitDataTypeUnchecked, setInitData, getInitData, getInitDataUnsafe, getInitDataUnchecked, MediaEncryptedEventInit(..), gTypeMediaEncryptedEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaEncryptedEventInit :: IO MediaEncryptedEventInit
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit MediaEncryptedEventInit specification>
+newMediaEncryptedEventInit :: (MonadDOM m) => m MediaEncryptedEventInit
+newMediaEncryptedEventInit = liftDOM ((js_newMediaEncryptedEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"initDataType\"] = $2; })"
+        js_setInitDataType :: MediaEncryptedEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdatatype MediaEncryptedEventInit.initDataType specification>
+setInitDataType :: (MonadDOM m, ToJSString val) => MediaEncryptedEventInit -> val -> m ()
+setInitDataType self val = liftDOM (void ((js_setInitDataType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"initDataType\"]; })"
+        js_getInitDataType :: MediaEncryptedEventInit -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdatatype MediaEncryptedEventInit.initDataType specification>
+getInitDataType :: (MonadDOM m, FromJSString result) => MediaEncryptedEventInit -> m (Maybe result)
+getInitDataType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getInitDataType (self))))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdatatype MediaEncryptedEventInit.initDataType specification>
+getInitDataTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaEncryptedEventInit -> m result
+getInitDataTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getInitDataType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdatatype MediaEncryptedEventInit.initDataType specification>
+getInitDataTypeUnchecked :: (MonadDOM m, FromJSString result) => MediaEncryptedEventInit -> m result
+getInitDataTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getInitDataType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"initData\"] = $2; })"
+        js_setInitData :: MediaEncryptedEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdata MediaEncryptedEventInit.initData specification>
+setInitData :: (MonadDOM m, IsArrayBuffer val) => MediaEncryptedEventInit -> Maybe val -> m ()
+setInitData self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setInitData (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"initData\"]; })"
+        js_getInitData :: MediaEncryptedEventInit -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdata MediaEncryptedEventInit.initData specification>
+getInitData :: (MonadDOM m) => MediaEncryptedEventInit -> m (Maybe ArrayBuffer)
+getInitData self = liftDOM (((js_getInitData (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdata MediaEncryptedEventInit.initData specification>
+getInitDataUnsafe :: (MonadDOM m, HasCallStack) => MediaEncryptedEventInit -> m ArrayBuffer
+getInitDataUnsafe self = liftDOM ((((js_getInitData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdata MediaEncryptedEventInit.initData specification>
+getInitDataUnchecked :: (MonadDOM m) => MediaEncryptedEventInit -> m ArrayBuffer
+getInitDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getInitData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
@@ -1,39 +1,37 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaError
-       (pattern MEDIA_ERR_ABORTED, pattern MEDIA_ERR_NETWORK,
-        pattern MEDIA_ERR_DECODE, pattern MEDIA_ERR_SRC_NOT_SUPPORTED,
-        js_getCode, getCode, MediaError(..), gTypeMediaError)
+       (js_getCode, js_getMessage, getCode, getMessage, pattern MEDIA_ERR_ABORTED, pattern MEDIA_ERR_NETWORK, pattern MEDIA_ERR_DECODE, pattern MEDIA_ERR_SRC_NOT_SUPPORTED, MediaError(..), gTypeMediaError)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })"
+        js_getCode :: MediaError -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MediaError/code MDN MediaError.code documentation>
+getCode :: (MonadDOM m) => MediaError -> m Word
+getCode self = liftDOM ((js_getCode (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: MediaError -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaError/message MDN MediaError.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => MediaError -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage (self))))
+
 pattern MEDIA_ERR_ABORTED = 1
+
 pattern MEDIA_ERR_NETWORK = 2
+
 pattern MEDIA_ERR_DECODE = 3
-pattern MEDIA_ERR_SRC_NOT_SUPPORTED = 4
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        MediaError -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaError.code Mozilla MediaError.code documentation> 
-getCode :: (MonadIO m) => MediaError -> m Word
-getCode self = liftIO (js_getCode self)
+pattern MEDIA_ERR_SRC_NOT_SUPPORTED = 4
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaImage.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaImage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaImage.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaImage
+       (js_newMediaImage, js_setSrc, js_getSrc, js_setSizes, js_getSizes, js_setType, js_getType, newMediaImage, setSrc, getSrc, setSizes, getSizes, getSizesUnsafe, getSizesUnchecked, setType, getType, getTypeUnsafe, getTypeUnchecked, MediaImage(..), gTypeMediaImage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"src\": $1}); })"
+        js_newMediaImage :: JSString -> IO MediaImage
+-- | <https://w3c.github.io/mediasession/#dictdef-mediaimage MediaImage specification>
+newMediaImage :: (MonadDOM m, ToJSString src) => src -> m MediaImage
+newMediaImage src = liftDOM ((js_newMediaImage (toJSString src)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: MediaImage -> JSString -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-src MediaImage.src specification>
+setSrc :: (MonadDOM m, ToJSString val) => MediaImage -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: MediaImage -> IO JSString
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-src MediaImage.src specification>
+getSrc :: (MonadDOM m, FromJSString result) => MediaImage -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sizes\"] = $2; })"
+        js_setSizes :: MediaImage -> JSString -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-sizes MediaImage.sizes specification>
+setSizes :: (MonadDOM m, ToJSString val) => MediaImage -> val -> m ()
+setSizes self val = liftDOM (void ((js_setSizes (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })"
+        js_getSizes :: MediaImage -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-sizes MediaImage.sizes specification>
+getSizes :: (MonadDOM m, FromJSString result) => MediaImage -> m (Maybe result)
+getSizes self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSizes (self))))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-sizes MediaImage.sizes specification>
+getSizesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaImage -> m result
+getSizesUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSizes (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-sizes MediaImage.sizes specification>
+getSizesUnchecked :: (MonadDOM m, FromJSString result) => MediaImage -> m result
+getSizesUnchecked self = liftDOM ((pFromJSVal <$> (js_getSizes (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: MediaImage -> JSString -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-type MediaImage.type specification>
+setType :: (MonadDOM m, ToJSString val) => MediaImage -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: MediaImage -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-type MediaImage.type specification>
+getType :: (MonadDOM m, FromJSString result) => MediaImage -> m (Maybe result)
+getType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getType (self))))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-type MediaImage.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaImage -> m result
+getTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-type MediaImage.type specification>
+getTypeUnchecked :: (MonadDOM m, FromJSString result) => MediaImage -> m result
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
@@ -1,57 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
-       (js_newMediaKeyMessageEvent, newMediaKeyMessageEvent,
-        js_getMessageType, getMessageType, js_getMessage, getMessage,
-        MediaKeyMessageEvent(..), gTypeMediaKeyMessageEvent)
+       (js_newMediaKeyMessageEvent, js_getMessageType, js_getMessage, newMediaKeyMessageEvent, getMessageType, getMessage, MediaKeyMessageEvent(..), gTypeMediaKeyMessageEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebKitMediaKeyMessageEvent\"]($1,\n$2); })"
-        js_newMediaKeyMessageEvent ::
-        JSString -> MediaKeyMessageEventInit -> IO MediaKeyMessageEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
-newMediaKeyMessageEvent ::
-                        (MonadIO m, ToJSString type') =>
-                          type' -> MediaKeyMessageEventInit -> m MediaKeyMessageEvent
-newMediaKeyMessageEvent type' eventInitDict
-  = liftIO
-      (js_newMediaKeyMessageEvent (toJSString type') eventInitDict)
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaKeyMessageEvent\"]($1, $2); })"
+        js_newMediaKeyMessageEvent :: JSString -> MediaKeyMessageEventInit -> IO MediaKeyMessageEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyMessageEvent/MediaKeyMessageEvent MDN MediaKeyMessageEvent. documentation>
+newMediaKeyMessageEvent :: (MonadDOM m, ToJSString type') => type' -> MediaKeyMessageEventInit -> m MediaKeyMessageEvent
+newMediaKeyMessageEvent type' eventInitDict = liftDOM ((js_newMediaKeyMessageEvent (toJSString type') (eventInitDict)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"messageType\"]; })"
         js_getMessageType :: MediaKeyMessageEvent -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.messageType Mozilla WebKitMediaKeyMessageEvent.messageType documentation> 
-getMessageType ::
-               (MonadIO m) => MediaKeyMessageEvent -> m MediaKeyMessageType
-getMessageType self
-  = liftIO ((js_getMessageType self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        MediaKeyMessageEvent -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyMessageEvent/messageType MDN MediaKeyMessageEvent.messageType documentation>
+getMessageType :: (MonadDOM m) => MediaKeyMessageEvent -> m MediaKeyMessageType
+getMessageType self = liftDOM (((js_getMessageType (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
-getMessage :: (MonadIO m) => MediaKeyMessageEvent -> m ArrayBuffer
-getMessage self = liftIO (js_getMessage self)
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: MediaKeyMessageEvent -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyMessageEvent/message MDN MediaKeyMessageEvent.message documentation>
+getMessage :: (MonadDOM m) => MediaKeyMessageEvent -> m ArrayBuffer
+getMessage self = liftDOM ((js_getMessage (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEventInit.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEventInit
+       (js_newMediaKeyMessageEventInit, js_setMessageType, js_getMessageType, js_setMessage, js_getMessage, newMediaKeyMessageEventInit, setMessageType, getMessageType, setMessage, getMessage, MediaKeyMessageEventInit(..), gTypeMediaKeyMessageEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"messageType\": $1, \"message\": $2}); })"
+        js_newMediaKeyMessageEventInit :: JSVal -> ArrayBuffer -> IO MediaKeyMessageEventInit
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit MediaKeyMessageEventInit specification>
+newMediaKeyMessageEventInit :: (MonadDOM m, IsArrayBuffer message) => MediaKeyMessageType -> message -> m MediaKeyMessageEventInit
+newMediaKeyMessageEventInit messageType message = liftDOM (((toJSVal messageType) >>= \a1' -> js_newMediaKeyMessageEventInit a1' (Types.toArrayBuffer message)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"messageType\"] = $2; })"
+        js_setMessageType :: MediaKeyMessageEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit-messagetype MediaKeyMessageEventInit.messageType specification>
+setMessageType :: (MonadDOM m) => MediaKeyMessageEventInit -> MediaKeyMessageType -> m ()
+setMessageType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMessageType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"messageType\"]; })"
+        js_getMessageType :: MediaKeyMessageEventInit -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit-messagetype MediaKeyMessageEventInit.messageType specification>
+getMessageType :: (MonadDOM m) => MediaKeyMessageEventInit -> m MediaKeyMessageType
+getMessageType self = liftDOM (((js_getMessageType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"message\"] = $2; })"
+        js_setMessage :: MediaKeyMessageEventInit -> ArrayBuffer -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit-message MediaKeyMessageEventInit.message specification>
+setMessage :: (MonadDOM m, IsArrayBuffer val) => MediaKeyMessageEventInit -> val -> m ()
+setMessage self val = liftDOM (void ((js_setMessage (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: MediaKeyMessageEventInit -> IO ArrayBuffer
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit-message MediaKeyMessageEventInit.message specification>
+getMessage :: (MonadDOM m) => MediaKeyMessageEventInit -> m ArrayBuffer
+getMessage self = liftDOM ((js_getMessage (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
@@ -1,137 +1,83 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaKeySession
-       (js_generateRequest, generateRequest, js_load, load, load_,
-        js_update, update, js_close, close, js_remove, remove,
-        js_getSessionId, getSessionId, js_getExpiration, getExpiration,
-        js_getClosed, getClosed, js_getKeyStatuses, getKeyStatuses,
-        keystatuseschange, message, MediaKeySession(..),
-        gTypeMediaKeySession)
+       (js_close, js_generateRequest, js_load, js_remove, js_update, js_getSessionId, js_getExpiration, js_getClosed, js_getKeyStatuses, close, generateRequest, load, load_, remove, update, getSessionId, getExpiration, getClosed, getKeyStatuses, keystatuseschange, message, MediaKeySession(..), gTypeMediaKeySession)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"generateRequest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_generateRequest ::
-        MediaKeySession -> JSString -> BufferSource -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.generateRequest Mozilla WebKitMediaKeySession.generateRequest documentation> 
-generateRequest ::
-                (MonadIO m, ToJSString initDataType, IsBufferSource initData) =>
-                  MediaKeySession -> initDataType -> initData -> m ()
-generateRequest self initDataType initData
-  = liftIO
-      ((js_generateRequest self (toJSString initDataType)
-          (toBufferSource initData))
-         >>= maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"load\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_load :: MediaKeySession -> JSString -> IO (JSVal, Bool)
+foreign import javascript interruptible "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: MediaKeySession -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/close MDN MediaKeySession.close documentation>
+close :: (MonadDOM m) => MediaKeySession -> m ()
+close self = liftDOM (void (((js_close (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.load Mozilla WebKitMediaKeySession.load documentation> 
-load ::
-     (MonadIO m, ToJSString sessionId) =>
-       MediaKeySession -> sessionId -> m Bool
-load self sessionId
-  = liftIO
-      ((js_load self (toJSString sessionId)) >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"generateRequest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_generateRequest :: MediaKeySession -> JSString -> BufferSource -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/generateRequest MDN MediaKeySession.generateRequest documentation>
+generateRequest :: (MonadDOM m, ToJSString initDataType, IsBufferSource initData) => MediaKeySession -> initDataType -> initData -> m ()
+generateRequest self initDataType initData = liftDOM (void (((js_generateRequest (self) (toJSString initDataType) (Types.toBufferSource initData)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.load Mozilla WebKitMediaKeySession.load documentation> 
-load_ ::
-      (MonadIO m, ToJSString sessionId) =>
-        MediaKeySession -> sessionId -> m ()
-load_ self sessionId
-  = liftIO (void (js_load self (toJSString sessionId)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"update\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_update :: MediaKeySession -> BufferSource -> IO JSVal
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"load\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_load :: MediaKeySession -> JSString -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/load MDN MediaKeySession.load documentation>
+load :: (MonadDOM m, ToJSString sessionId) => MediaKeySession -> sessionId -> m Bool
+load self sessionId = liftDOM (((js_load (self) (toJSString sessionId)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
-update ::
-       (MonadIO m, IsBufferSource response) =>
-         MediaKeySession -> response -> m ()
-update self response
-  = liftIO
-      ((js_update self (toBufferSource response)) >>=
-         maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_close :: MediaKeySession -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/load MDN MediaKeySession.load documentation>
+load_ :: (MonadDOM m, ToJSString sessionId) => MediaKeySession -> sessionId -> m ()
+load_ self sessionId = liftDOM (void (((js_load (self) (toJSString sessionId)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.close Mozilla WebKitMediaKeySession.close documentation> 
-close :: (MonadIO m) => MediaKeySession -> m ()
-close self = liftIO ((js_close self) >>= maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"remove\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_remove :: MediaKeySession -> IO JSVal
+foreign import javascript interruptible "(($1, $c) => { return $1[\"remove\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_remove :: MediaKeySession -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/remove MDN MediaKeySession.remove documentation>
+remove :: (MonadDOM m) => MediaKeySession -> m ()
+remove self = liftDOM (void (((js_remove (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.remove Mozilla WebKitMediaKeySession.remove documentation> 
-remove :: (MonadIO m) => MediaKeySession -> m ()
-remove self
-  = liftIO ((js_remove self) >>= maybeThrowPromiseRejected)
- 
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"update\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_update :: MediaKeySession -> BufferSource -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/update MDN MediaKeySession.update documentation>
+update :: (MonadDOM m, IsBufferSource response) => MediaKeySession -> response -> m ()
+update self response = liftDOM (void (((js_update (self) (Types.toBufferSource response)) >>= checkPromiseResult)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"sessionId\"]; })"
         js_getSessionId :: MediaKeySession -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/sessionId MDN MediaKeySession.sessionId documentation>
+getSessionId :: (MonadDOM m, FromJSString result) => MediaKeySession -> m result
+getSessionId self = liftDOM ((fromJSString <$> (js_getSessionId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.sessionId Mozilla WebKitMediaKeySession.sessionId documentation> 
-getSessionId ::
-             (MonadIO m, FromJSString result) => MediaKeySession -> m result
-getSessionId self
-  = liftIO (fromJSString <$> (js_getSessionId self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"expiration\"]; })"
         js_getExpiration :: MediaKeySession -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/expiration MDN MediaKeySession.expiration documentation>
+getExpiration :: (MonadDOM m) => MediaKeySession -> m Double
+getExpiration self = liftDOM ((js_getExpiration (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.expiration Mozilla WebKitMediaKeySession.expiration documentation> 
-getExpiration :: (MonadIO m) => MediaKeySession -> m Double
-getExpiration self = liftIO (js_getExpiration self)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getClosed :: MediaKeySession -> IO JSVal
+foreign import javascript interruptible "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: MediaKeySession -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/closed MDN MediaKeySession.closed documentation>
+getClosed :: (MonadDOM m) => MediaKeySession -> m MediaKeySessionClosedReason
+getClosed self = liftDOM ((((js_getClosed (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.closed Mozilla WebKitMediaKeySession.closed documentation> 
-getClosed :: (MonadIO m) => MediaKeySession -> m ()
-getClosed self
-  = liftIO ((js_getClosed self) >>= maybeThrowPromiseRejected)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"keyStatuses\"]; })"
         js_getKeyStatuses :: MediaKeySession -> IO MediaKeyStatusMap
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keyStatuses Mozilla WebKitMediaKeySession.keyStatuses documentation> 
-getKeyStatuses ::
-               (MonadIO m) => MediaKeySession -> m MediaKeyStatusMap
-getKeyStatuses self = liftIO (js_getKeyStatuses self)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/keyStatuses MDN MediaKeySession.keyStatuses documentation>
+getKeyStatuses :: (MonadDOM m) => MediaKeySession -> m MediaKeyStatusMap
+getKeyStatuses self = liftDOM ((js_getKeyStatuses (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onkeystatuseschange Mozilla WebKitMediaKeySession.onkeystatuseschange documentation> 
-keystatuseschange :: EventName MediaKeySession onkeystatuseschange
-keystatuseschange
-  = unsafeEventName (toJSString "keystatuseschange")
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysession-onkeystatuseschange keystatuseschange event>
+keystatuseschange :: EventName MediaKeySession Event
+keystatuseschange = unsafeEventName (toJSString "keystatuseschange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onmessage Mozilla WebKitMediaKeySession.onmessage documentation> 
-message :: EventName MediaKeySession MessageEvent
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysession-onmessage message event>
+message :: EventName MediaKeySession MediaKeyMessageEvent
 message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
@@ -1,66 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap
-       (js_has, has, has_, js_get, get, get_, js_getSize, getSize,
-        MediaKeyStatusMap(..), gTypeMediaKeyStatusMap)
+       (js_get, js_has, js_getSize, get, get_, has, has_, getSize, MediaKeyStatusMap(..), gTypeMediaKeyStatusMap)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
-        :: MediaKeyStatusMap -> BufferSource -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
-has ::
-    (MonadIO m, IsBufferSource keyId) =>
-      MediaKeyStatusMap -> keyId -> m Bool
-has self keyId = liftIO (js_has self (toBufferSource keyId))
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: MediaKeyStatusMap -> BufferSource -> IO MediaKeyStatusOrUndefined
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyStatusMap/get MDN MediaKeyStatusMap.get documentation>
+get :: (MonadDOM m, IsBufferSource keyId) => MediaKeyStatusMap -> keyId -> m MediaKeyStatusOrUndefined
+get self keyId = liftDOM ((js_get (self) (Types.toBufferSource keyId)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
-has_ ::
-     (MonadIO m, IsBufferSource keyId) =>
-       MediaKeyStatusMap -> keyId -> m ()
-has_ self keyId
-  = liftIO (void (js_has self (toBufferSource keyId)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
-        MediaKeyStatusMap -> BufferSource -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyStatusMap/get MDN MediaKeyStatusMap.get documentation>
+get_ :: (MonadDOM m, IsBufferSource keyId) => MediaKeyStatusMap -> keyId -> m ()
+get_ self keyId = liftDOM (void ((js_get (self) (Types.toBufferSource keyId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.get Mozilla MediaKeyStatusMap.get documentation> 
-get ::
-    (MonadIO m, IsBufferSource keyId) =>
-      MediaKeyStatusMap -> keyId -> m JSVal
-get self keyId = liftIO (js_get self (toBufferSource keyId))
+foreign import javascript safe "(($1, $2) => { return $1[\"has\"]($2); })"
+        js_has :: MediaKeyStatusMap -> BufferSource -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyStatusMap/has MDN MediaKeyStatusMap.has documentation>
+has :: (MonadDOM m, IsBufferSource keyId) => MediaKeyStatusMap -> keyId -> m Bool
+has self keyId = liftDOM ((js_has (self) (Types.toBufferSource keyId)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.get Mozilla MediaKeyStatusMap.get documentation> 
-get_ ::
-     (MonadIO m, IsBufferSource keyId) =>
-       MediaKeyStatusMap -> keyId -> m ()
-get_ self keyId
-  = liftIO (void (js_get self (toBufferSource keyId)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        MediaKeyStatusMap -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyStatusMap/has MDN MediaKeyStatusMap.has documentation>
+has_ :: (MonadDOM m, IsBufferSource keyId) => MediaKeyStatusMap -> keyId -> m ()
+has_ self keyId = liftDOM (void ((js_has (self) (Types.toBufferSource keyId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.size Mozilla MediaKeyStatusMap.size documentation> 
-getSize :: (MonadIO m) => MediaKeyStatusMap -> m Word
-getSize self = liftIO (js_getSize self)
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: MediaKeyStatusMap -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyStatusMap/size MDN MediaKeyStatusMap.size documentation>
+getSize :: (MonadDOM m) => MediaKeyStatusMap -> m Word
+getSize self = liftDOM ((js_getSize (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
@@ -1,67 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess
-       (js_getConfiguration, getConfiguration, getConfiguration_,
-        js_createMediaKeys, createMediaKeys, createMediaKeys_,
-        js_getKeySystem, getKeySystem, MediaKeySystemAccess(..),
-        gTypeMediaKeySystemAccess)
+       (js_createMediaKeys, js_getConfiguration, js_getKeySystem, createMediaKeys, createMediaKeys_, getConfiguration, getConfiguration_, getKeySystem, MediaKeySystemAccess(..), gTypeMediaKeySystemAccess)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getConfiguration\"](); })"
-        js_getConfiguration ::
-        MediaKeySystemAccess -> IO MediaKeySystemConfiguration
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.getConfiguration Mozilla MediaKeySystemAccess.getConfiguration documentation> 
-getConfiguration ::
-                 (MonadIO m) =>
-                   MediaKeySystemAccess -> m MediaKeySystemConfiguration
-getConfiguration self = liftIO (js_getConfiguration self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.getConfiguration Mozilla MediaKeySystemAccess.getConfiguration documentation> 
-getConfiguration_ :: (MonadIO m) => MediaKeySystemAccess -> m ()
-getConfiguration_ self = liftIO (void (js_getConfiguration self))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"createMediaKeys\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+foreign import javascript interruptible "(($1, $c) => { return $1[\"createMediaKeys\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
         js_createMediaKeys :: MediaKeySystemAccess -> IO (JSVal, MediaKeys)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/createMediaKeys MDN MediaKeySystemAccess.createMediaKeys documentation>
+createMediaKeys :: (MonadDOM m) => MediaKeySystemAccess -> m MediaKeys
+createMediaKeys self = liftDOM (((js_createMediaKeys (self)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.createMediaKeys Mozilla MediaKeySystemAccess.createMediaKeys documentation> 
-createMediaKeys ::
-                (MonadIO m) => MediaKeySystemAccess -> m MediaKeys
-createMediaKeys self
-  = liftIO ((js_createMediaKeys self) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/createMediaKeys MDN MediaKeySystemAccess.createMediaKeys documentation>
+createMediaKeys_ :: (MonadDOM m) => MediaKeySystemAccess -> m ()
+createMediaKeys_ self = liftDOM (void (((js_createMediaKeys (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.createMediaKeys Mozilla MediaKeySystemAccess.createMediaKeys documentation> 
-createMediaKeys_ :: (MonadIO m) => MediaKeySystemAccess -> m ()
-createMediaKeys_ self = liftIO (void (js_createMediaKeys self))
- 
+foreign import javascript safe "(($1) => { return $1[\"getConfiguration\"](); })"
+        js_getConfiguration :: MediaKeySystemAccess -> IO MediaKeySystemConfiguration
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/getConfiguration MDN MediaKeySystemAccess.getConfiguration documentation>
+getConfiguration :: (MonadDOM m) => MediaKeySystemAccess -> m MediaKeySystemConfiguration
+getConfiguration self = liftDOM ((js_getConfiguration (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/getConfiguration MDN MediaKeySystemAccess.getConfiguration documentation>
+getConfiguration_ :: (MonadDOM m) => MediaKeySystemAccess -> m ()
+getConfiguration_ self = liftDOM (void ((js_getConfiguration (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"keySystem\"]; })"
         js_getKeySystem :: MediaKeySystemAccess -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.keySystem Mozilla MediaKeySystemAccess.keySystem documentation> 
-getKeySystem ::
-             (MonadIO m, FromJSString result) =>
-               MediaKeySystemAccess -> m result
-getKeySystem self
-  = liftIO (fromJSString <$> (js_getKeySystem self))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/keySystem MDN MediaKeySystemAccess.keySystem documentation>
+getKeySystem :: (MonadDOM m, FromJSString result) => MediaKeySystemAccess -> m result
+getKeySystem self = liftDOM ((fromJSString <$> (js_getKeySystem (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemConfiguration.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaKeySystemConfiguration
+       (js_newMediaKeySystemConfiguration, js_setLabel, js_getLabel, js_setInitDataTypes, js_getInitDataTypes, js_setAudioCapabilities, js_getAudioCapabilities, js_setVideoCapabilities, js_getVideoCapabilities, js_setDistinctiveIdentifier, js_getDistinctiveIdentifier, js_setPersistentState, js_getPersistentState, js_setSessionTypes, js_getSessionTypes, newMediaKeySystemConfiguration, setLabel, getLabel, getLabelUnsafe, getLabelUnchecked, setInitDataTypes, getInitDataTypes, getInitDataTypesUnsafe, getInitDataTypesUnchecked, setAudioCapabilities, getAudioCapabilities, getAudioCapabilitiesUnsafe, getAudioCapabilitiesUnchecked, setVideoCapabilities, getVideoCapabilities, getVideoCapabilitiesUnsafe, getVideoCapabilitiesUnchecked, setDistinctiveIdentifier, getDistinctiveIdentifier, getDistinctiveIdentifierUnsafe, getDistinctiveIdentifierUnchecked, setPersistentState, getPersistentState, getPersistentStateUnsafe, getPersistentStateUnchecked, setSessionTypes, getSessionTypes, getSessionTypesUnsafe, getSessionTypesUnchecked, MediaKeySystemConfiguration(..), gTypeMediaKeySystemConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaKeySystemConfiguration :: IO MediaKeySystemConfiguration
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration MediaKeySystemConfiguration specification>
+newMediaKeySystemConfiguration :: (MonadDOM m) => m MediaKeySystemConfiguration
+newMediaKeySystemConfiguration = liftDOM ((js_newMediaKeySystemConfiguration))
+
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: MediaKeySystemConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-label MediaKeySystemConfiguration.label specification>
+setLabel :: (MonadDOM m, ToJSString val) => MediaKeySystemConfiguration -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: MediaKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-label MediaKeySystemConfiguration.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m (Maybe result)
+getLabel self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLabel (self))))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-label MediaKeySystemConfiguration.label specification>
+getLabelUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemConfiguration -> m result
+getLabelUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLabel (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-label MediaKeySystemConfiguration.label specification>
+getLabelUnchecked :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m result
+getLabelUnchecked self = liftDOM ((pFromJSVal <$> (js_getLabel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"initDataTypes\"] = $2; })"
+        js_setInitDataTypes :: MediaKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-initdatatypes MediaKeySystemConfiguration.initDataTypes specification>
+setInitDataTypes :: (MonadDOM m, ToJSString val) => MediaKeySystemConfiguration -> [val] -> m ()
+setInitDataTypes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setInitDataTypes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"initDataTypes\"]; })"
+        js_getInitDataTypes :: MediaKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-initdatatypes MediaKeySystemConfiguration.initDataTypes specification>
+getInitDataTypes :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m (Maybe [result])
+getInitDataTypes self = liftDOM (((js_getInitDataTypes (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-initdatatypes MediaKeySystemConfiguration.initDataTypes specification>
+getInitDataTypesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemConfiguration -> m [result]
+getInitDataTypesUnsafe self = liftDOM ((((js_getInitDataTypes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-initdatatypes MediaKeySystemConfiguration.initDataTypes specification>
+getInitDataTypesUnchecked :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m [result]
+getInitDataTypesUnchecked self = liftDOM (((js_getInitDataTypes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audioCapabilities\"] = $2; })"
+        js_setAudioCapabilities :: MediaKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-audiocapabilities MediaKeySystemConfiguration.audioCapabilities specification>
+setAudioCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> [MediaKeySystemMediaCapability] -> m ()
+setAudioCapabilities self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAudioCapabilities (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioCapabilities\"]; })"
+        js_getAudioCapabilities :: MediaKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-audiocapabilities MediaKeySystemConfiguration.audioCapabilities specification>
+getAudioCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe [MediaKeySystemMediaCapability])
+getAudioCapabilities self = liftDOM (((js_getAudioCapabilities (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-audiocapabilities MediaKeySystemConfiguration.audioCapabilities specification>
+getAudioCapabilitiesUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m [MediaKeySystemMediaCapability]
+getAudioCapabilitiesUnsafe self = liftDOM ((((js_getAudioCapabilities (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-audiocapabilities MediaKeySystemConfiguration.audioCapabilities specification>
+getAudioCapabilitiesUnchecked :: (MonadDOM m) => MediaKeySystemConfiguration -> m [MediaKeySystemMediaCapability]
+getAudioCapabilitiesUnchecked self = liftDOM (((js_getAudioCapabilities (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"videoCapabilities\"] = $2; })"
+        js_setVideoCapabilities :: MediaKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-videocapabilities MediaKeySystemConfiguration.videoCapabilities specification>
+setVideoCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> [MediaKeySystemMediaCapability] -> m ()
+setVideoCapabilities self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setVideoCapabilities (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"videoCapabilities\"]; })"
+        js_getVideoCapabilities :: MediaKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-videocapabilities MediaKeySystemConfiguration.videoCapabilities specification>
+getVideoCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe [MediaKeySystemMediaCapability])
+getVideoCapabilities self = liftDOM (((js_getVideoCapabilities (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-videocapabilities MediaKeySystemConfiguration.videoCapabilities specification>
+getVideoCapabilitiesUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m [MediaKeySystemMediaCapability]
+getVideoCapabilitiesUnsafe self = liftDOM ((((js_getVideoCapabilities (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-videocapabilities MediaKeySystemConfiguration.videoCapabilities specification>
+getVideoCapabilitiesUnchecked :: (MonadDOM m) => MediaKeySystemConfiguration -> m [MediaKeySystemMediaCapability]
+getVideoCapabilitiesUnchecked self = liftDOM (((js_getVideoCapabilities (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"distinctiveIdentifier\"] = $2; })"
+        js_setDistinctiveIdentifier :: MediaKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier MediaKeySystemConfiguration.distinctiveIdentifier specification>
+setDistinctiveIdentifier :: (MonadDOM m) => MediaKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setDistinctiveIdentifier self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDistinctiveIdentifier (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"distinctiveIdentifier\"]; })"
+        js_getDistinctiveIdentifier :: MediaKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier MediaKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifier :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getDistinctiveIdentifier self = liftDOM (((js_getDistinctiveIdentifier (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier MediaKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifierUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m MediaKeysRequirement
+getDistinctiveIdentifierUnsafe self = liftDOM ((((js_getDistinctiveIdentifier (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier MediaKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifierUnchecked :: (MonadDOM m) => MediaKeySystemConfiguration -> m MediaKeysRequirement
+getDistinctiveIdentifierUnchecked self = liftDOM ((pFromJSVal <$> (js_getDistinctiveIdentifier (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"persistentState\"] = $2; })"
+        js_setPersistentState :: MediaKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-persistentstate MediaKeySystemConfiguration.persistentState specification>
+setPersistentState :: (MonadDOM m) => MediaKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setPersistentState self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPersistentState (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"persistentState\"]; })"
+        js_getPersistentState :: MediaKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-persistentstate MediaKeySystemConfiguration.persistentState specification>
+getPersistentState :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getPersistentState self = liftDOM (((js_getPersistentState (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-persistentstate MediaKeySystemConfiguration.persistentState specification>
+getPersistentStateUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m MediaKeysRequirement
+getPersistentStateUnsafe self = liftDOM ((((js_getPersistentState (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-persistentstate MediaKeySystemConfiguration.persistentState specification>
+getPersistentStateUnchecked :: (MonadDOM m) => MediaKeySystemConfiguration -> m MediaKeysRequirement
+getPersistentStateUnchecked self = liftDOM ((pFromJSVal <$> (js_getPersistentState (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sessionTypes\"] = $2; })"
+        js_setSessionTypes :: MediaKeySystemConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-sessiontypes MediaKeySystemConfiguration.sessionTypes specification>
+setSessionTypes :: (MonadDOM m, ToJSString val) => MediaKeySystemConfiguration -> [val] -> m ()
+setSessionTypes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSessionTypes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sessionTypes\"]; })"
+        js_getSessionTypes :: MediaKeySystemConfiguration -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-sessiontypes MediaKeySystemConfiguration.sessionTypes specification>
+getSessionTypes :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m (Maybe [result])
+getSessionTypes self = liftDOM (((js_getSessionTypes (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-sessiontypes MediaKeySystemConfiguration.sessionTypes specification>
+getSessionTypesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemConfiguration -> m [result]
+getSessionTypesUnsafe self = liftDOM ((((js_getSessionTypes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-sessiontypes MediaKeySystemConfiguration.sessionTypes specification>
+getSessionTypesUnchecked :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m [result]
+getSessionTypesUnchecked self = liftDOM (((js_getSessionTypes (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemMediaCapability.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemMediaCapability.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemMediaCapability.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaKeySystemMediaCapability
+       (js_newMediaKeySystemMediaCapability, js_setContentType, js_getContentType, js_setEncryptionScheme, js_getEncryptionScheme, js_setRobustness, js_getRobustness, newMediaKeySystemMediaCapability, setContentType, getContentType, getContentTypeUnsafe, getContentTypeUnchecked, setEncryptionScheme, getEncryptionScheme, getEncryptionSchemeUnsafe, getEncryptionSchemeUnchecked, setRobustness, getRobustness, getRobustnessUnsafe, getRobustnessUnchecked, MediaKeySystemMediaCapability(..), gTypeMediaKeySystemMediaCapability)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaKeySystemMediaCapability :: IO MediaKeySystemMediaCapability
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability MediaKeySystemMediaCapability specification>
+newMediaKeySystemMediaCapability :: (MonadDOM m) => m MediaKeySystemMediaCapability
+newMediaKeySystemMediaCapability = liftDOM ((js_newMediaKeySystemMediaCapability))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contentType\"] = $2; })"
+        js_setContentType :: MediaKeySystemMediaCapability -> JSString -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-contenttype MediaKeySystemMediaCapability.contentType specification>
+setContentType :: (MonadDOM m, ToJSString val) => MediaKeySystemMediaCapability -> val -> m ()
+setContentType self val = liftDOM (void ((js_setContentType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentType\"]; })"
+        js_getContentType :: MediaKeySystemMediaCapability -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-contenttype MediaKeySystemMediaCapability.contentType specification>
+getContentType :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m (Maybe result)
+getContentType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getContentType (self))))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-contenttype MediaKeySystemMediaCapability.contentType specification>
+getContentTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getContentTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getContentType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-contenttype MediaKeySystemMediaCapability.contentType specification>
+getContentTypeUnchecked :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getContentTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"encryptionScheme\"] = $2; })"
+        js_setEncryptionScheme :: MediaKeySystemMediaCapability -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-encryptionscheme MediaKeySystemMediaCapability.encryptionScheme specification>
+setEncryptionScheme :: (MonadDOM m, ToJSString val) => MediaKeySystemMediaCapability -> Maybe val -> m ()
+setEncryptionScheme self val = liftDOM (void ((js_setEncryptionScheme (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"encryptionScheme\"]; })"
+        js_getEncryptionScheme :: MediaKeySystemMediaCapability -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-encryptionscheme MediaKeySystemMediaCapability.encryptionScheme specification>
+getEncryptionScheme :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m (Maybe result)
+getEncryptionScheme self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEncryptionScheme (self))))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-encryptionscheme MediaKeySystemMediaCapability.encryptionScheme specification>
+getEncryptionSchemeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getEncryptionSchemeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEncryptionScheme (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-encryptionscheme MediaKeySystemMediaCapability.encryptionScheme specification>
+getEncryptionSchemeUnchecked :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getEncryptionSchemeUnchecked self = liftDOM ((pFromJSVal <$> (js_getEncryptionScheme (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"robustness\"] = $2; })"
+        js_setRobustness :: MediaKeySystemMediaCapability -> JSString -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-robustness MediaKeySystemMediaCapability.robustness specification>
+setRobustness :: (MonadDOM m, ToJSString val) => MediaKeySystemMediaCapability -> val -> m ()
+setRobustness self val = liftDOM (void ((js_setRobustness (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"robustness\"]; })"
+        js_getRobustness :: MediaKeySystemMediaCapability -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-robustness MediaKeySystemMediaCapability.robustness specification>
+getRobustness :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m (Maybe result)
+getRobustness self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRobustness (self))))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-robustness MediaKeySystemMediaCapability.robustness specification>
+getRobustnessUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getRobustnessUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRobustness (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-robustness MediaKeySystemMediaCapability.robustness specification>
+getRobustnessUnchecked :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getRobustnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getRobustness (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
@@ -1,69 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaKeys
-       (js_createSession, createSession, createSession_,
-        js_setServerCertificate, setServerCertificate,
-        setServerCertificate_, MediaKeys(..), gTypeMediaKeys)
+       (js_createSession, js_getStatusForPolicy, js_setServerCertificate, createSession, createSession_, getStatusForPolicy, getStatusForPolicy_, setServerCertificate, setServerCertificate_, MediaKeys(..), gTypeMediaKeys)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2) => { return $1[\"createSession\"]($2); })"
-        js_createSession ::
-        MediaKeys -> Optional MediaKeySessionType -> IO MediaKeySession
+        js_createSession :: MediaKeys -> JSVal -> IO MediaKeySession
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeys/createSession MDN MediaKeys.createSession documentation>
+createSession :: (MonadDOM m) => MediaKeys -> Maybe MediaKeySessionType -> m MediaKeySession
+createSession self sessionType = liftDOM (((P.maybe (P.return jsUndefined) toJSVal sessionType) >>= \a2' -> js_createSession (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession ::
-              (MonadIO m) =>
-                MediaKeys -> Maybe MediaKeySessionType -> m MediaKeySession
-createSession self sessionType
-  = liftIO (js_createSession self (maybeToOptional sessionType))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeys/createSession MDN MediaKeys.createSession documentation>
+createSession_ :: (MonadDOM m) => MediaKeys -> Maybe MediaKeySessionType -> m ()
+createSession_ self sessionType = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal sessionType) >>= \a2' -> js_createSession (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession_ ::
-               (MonadIO m) => MediaKeys -> Maybe MediaKeySessionType -> m ()
-createSession_ self sessionType
-  = liftIO
-      (void (js_createSession self (maybeToOptional sessionType)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"setServerCertificate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_setServerCertificate ::
-        MediaKeys -> BufferSource -> IO (JSVal, Bool)
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getStatusForPolicy\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStatusForPolicy :: MediaKeys -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeys/getStatusForPolicy MDN MediaKeys.getStatusForPolicy documentation>
+getStatusForPolicy :: (MonadDOM m) => MediaKeys -> Maybe MediaKeysPolicy -> m MediaKeyStatus
+getStatusForPolicy self policy = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal policy) >>= \a2' -> js_getStatusForPolicy (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.setServerCertificate Mozilla WebKitMediaKeys.setServerCertificate documentation> 
-setServerCertificate ::
-                     (MonadIO m, IsBufferSource serverCertificate) =>
-                       MediaKeys -> serverCertificate -> m Bool
-setServerCertificate self serverCertificate
-  = liftIO
-      ((js_setServerCertificate self (toBufferSource serverCertificate))
-         >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeys/getStatusForPolicy MDN MediaKeys.getStatusForPolicy documentation>
+getStatusForPolicy_ :: (MonadDOM m) => MediaKeys -> Maybe MediaKeysPolicy -> m ()
+getStatusForPolicy_ self policy = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal policy) >>= \a2' -> js_getStatusForPolicy (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.setServerCertificate Mozilla WebKitMediaKeys.setServerCertificate documentation> 
-setServerCertificate_ ::
-                      (MonadIO m, IsBufferSource serverCertificate) =>
-                        MediaKeys -> serverCertificate -> m ()
-setServerCertificate_ self serverCertificate
-  = liftIO
-      (void
-         (js_setServerCertificate self (toBufferSource serverCertificate)))
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setServerCertificate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setServerCertificate :: MediaKeys -> BufferSource -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeys/setServerCertificate MDN MediaKeys.setServerCertificate documentation>
+setServerCertificate :: (MonadDOM m, IsBufferSource serverCertificate) => MediaKeys -> serverCertificate -> m Bool
+setServerCertificate self serverCertificate = liftDOM (((js_setServerCertificate (self) (Types.toBufferSource serverCertificate)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeys/setServerCertificate MDN MediaKeys.setServerCertificate documentation>
+setServerCertificate_ :: (MonadDOM m, IsBufferSource serverCertificate) => MediaKeys -> serverCertificate -> m ()
+setServerCertificate_ self serverCertificate = liftDOM (void (((js_setServerCertificate (self) (Types.toBufferSource serverCertificate)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeysPolicy.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeysPolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeysPolicy.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaKeysPolicy
+       (js_newMediaKeysPolicy, js_setMinHdcpVersion, js_getMinHdcpVersion, newMediaKeysPolicy, setMinHdcpVersion, getMinHdcpVersion, getMinHdcpVersionUnsafe, getMinHdcpVersionUnchecked, MediaKeysPolicy(..), gTypeMediaKeysPolicy)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaKeysPolicy :: IO MediaKeysPolicy
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy MediaKeysPolicy specification>
+newMediaKeysPolicy :: (MonadDOM m) => m MediaKeysPolicy
+newMediaKeysPolicy = liftDOM ((js_newMediaKeysPolicy))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minHdcpVersion\"] = $2; })"
+        js_setMinHdcpVersion :: MediaKeysPolicy -> JSString -> IO ()
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy-minhdcpversion MediaKeysPolicy.minHdcpVersion specification>
+setMinHdcpVersion :: (MonadDOM m, ToJSString val) => MediaKeysPolicy -> val -> m ()
+setMinHdcpVersion self val = liftDOM (void ((js_setMinHdcpVersion (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minHdcpVersion\"]; })"
+        js_getMinHdcpVersion :: MediaKeysPolicy -> IO JSVal
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy-minhdcpversion MediaKeysPolicy.minHdcpVersion specification>
+getMinHdcpVersion :: (MonadDOM m, FromJSString result) => MediaKeysPolicy -> m (Maybe result)
+getMinHdcpVersion self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMinHdcpVersion (self))))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy-minhdcpversion MediaKeysPolicy.minHdcpVersion specification>
+getMinHdcpVersionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeysPolicy -> m result
+getMinHdcpVersionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMinHdcpVersion (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy-minhdcpversion MediaKeysPolicy.minHdcpVersion specification>
+getMinHdcpVersionUnchecked :: (MonadDOM m, FromJSString result) => MediaKeysPolicy -> m result
+getMinHdcpVersionUnchecked self = liftDOM ((pFromJSVal <$> (js_getMinHdcpVersion (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
@@ -1,101 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaList
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_deleteMedium,
-        deleteMedium, js_appendMedium, appendMedium, js_setMediaText,
-        setMediaText, js_getMediaText, getMediaText, js_getLength,
-        getLength, MediaList(..), gTypeMediaList)
+       (js_appendMedium, js_deleteMedium, js_item, js_setMediaText, js_getMediaText, js_getLength, appendMedium, deleteMedium, item, item_, itemUnsafe, itemUnchecked, setMediaText, getMediaText, getLength, MediaList(..), gTypeMediaList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        MediaList -> Word -> IO (Nullable JSString)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-item ::
-     (MonadIO m, FromJSString result) =>
-       MediaList -> Word -> m (Maybe result)
-item self index
-  = liftIO (fromMaybeJSString <$> (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-item_ :: (MonadIO m) => MediaList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack, FromJSString result) =>
-             MediaList -> Word -> m result
-itemUnsafe self index
-  = liftIO
-      ((fromMaybeJSString <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return $1[\"appendMedium\"]($2); })"
+        js_appendMedium :: MediaList -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/appendMedium MDN MediaList.appendMedium documentation>
+appendMedium :: (MonadDOM m, ToJSString medium) => MediaList -> medium -> m ()
+appendMedium self medium = liftDOM (void ((js_appendMedium (self) (toJSString medium))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-itemUnchecked ::
-              (MonadIO m, FromJSString result) => MediaList -> Word -> m result
-itemUnchecked self index
-  = liftIO (fromJust . fromMaybeJSString <$> (js_item self index))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"deleteMedium\"]($2); })"
         js_deleteMedium :: MediaList -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/deleteMedium MDN MediaList.deleteMedium documentation>
+deleteMedium :: (MonadDOM m, ToJSString medium) => MediaList -> medium -> m ()
+deleteMedium self medium = liftDOM (void ((js_deleteMedium (self) (toJSString medium))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.deleteMedium Mozilla MediaList.deleteMedium documentation> 
-deleteMedium ::
-             (MonadIO m, ToJSString oldMedium) => MediaList -> oldMedium -> m ()
-deleteMedium self oldMedium
-  = liftIO (js_deleteMedium self (toJSString oldMedium))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendMedium\"]($2); })"
-        js_appendMedium :: MediaList -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: MediaList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/item MDN MediaList.item documentation>
+item :: (MonadDOM m, FromJSString result) => MediaList -> Word -> m (Maybe result)
+item self index = liftDOM (((fromMaybeJSString . Nullable) <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.appendMedium Mozilla MediaList.appendMedium documentation> 
-appendMedium ::
-             (MonadIO m, ToJSString newMedium) => MediaList -> newMedium -> m ()
-appendMedium self newMedium
-  = liftIO (js_appendMedium self (toJSString newMedium))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/item MDN MediaList.item documentation>
+item_ :: (MonadDOM m) => MediaList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/item MDN MediaList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaList -> Word -> m result
+itemUnsafe self index = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_item (self) (index))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/item MDN MediaList.item documentation>
+itemUnchecked :: (MonadDOM m, FromJSString result) => MediaList -> Word -> m result
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
+
 foreign import javascript safe "(($1, $2) => { $1[\"mediaText\"] = $2; })"
         js_setMediaText :: MediaList -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/mediaText MDN MediaList.mediaText documentation>
+setMediaText :: (MonadDOM m, ToJSString val) => MediaList -> val -> m ()
+setMediaText self val = liftDOM (void ((js_setMediaText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
-setMediaText ::
-             (MonadIO m, ToJSString val) => MediaList -> val -> m ()
-setMediaText self val
-  = liftIO (js_setMediaText self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"mediaText\"]; })"
         js_getMediaText :: MediaList -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
-getMediaText ::
-             (MonadIO m, FromJSString result) => MediaList -> m result
-getMediaText self
-  = liftIO (fromJSString <$> (js_getMediaText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        MediaList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/mediaText MDN MediaList.mediaText documentation>
+getMediaText :: (MonadDOM m, FromJSString result) => MediaList -> m result
+getMediaText self = liftDOM ((fromJSString <$> (js_getMediaText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.length Mozilla MediaList.length documentation> 
-getLength :: (MonadIO m) => MediaList -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: MediaList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/length MDN MediaList.length documentation>
+getLength :: (MonadDOM m) => MediaList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaMetadata.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaMetadata
+       (js_newMediaMetadata, js_setTitle, js_getTitle, js_setArtist, js_getArtist, js_setAlbum, js_getAlbum, js_setArtwork, js_getArtwork, newMediaMetadata, setTitle, getTitle, setArtist, getArtist, setAlbum, getAlbum, setArtwork, getArtwork, MediaMetadata(..), gTypeMediaMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"MediaMetadata\"]($1); })"
+        js_newMediaMetadata :: JSVal -> IO MediaMetadata
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/MediaMetadata MDN MediaMetadata. documentation>
+newMediaMetadata :: (MonadDOM m) => Maybe MediaMetadataInit -> m MediaMetadata
+newMediaMetadata init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a1' -> js_newMediaMetadata a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: MediaMetadata -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/title MDN MediaMetadata.title documentation>
+setTitle :: (MonadDOM m, ToJSString val) => MediaMetadata -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: MediaMetadata -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/title MDN MediaMetadata.title documentation>
+getTitle :: (MonadDOM m, FromJSString result) => MediaMetadata -> m result
+getTitle self = liftDOM ((fromJSString <$> (js_getTitle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"artist\"] = $2; })"
+        js_setArtist :: MediaMetadata -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/artist MDN MediaMetadata.artist documentation>
+setArtist :: (MonadDOM m, ToJSString val) => MediaMetadata -> val -> m ()
+setArtist self val = liftDOM (void ((js_setArtist (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"artist\"]; })"
+        js_getArtist :: MediaMetadata -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/artist MDN MediaMetadata.artist documentation>
+getArtist :: (MonadDOM m, FromJSString result) => MediaMetadata -> m result
+getArtist self = liftDOM ((fromJSString <$> (js_getArtist (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"album\"] = $2; })"
+        js_setAlbum :: MediaMetadata -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/album MDN MediaMetadata.album documentation>
+setAlbum :: (MonadDOM m, ToJSString val) => MediaMetadata -> val -> m ()
+setAlbum self val = liftDOM (void ((js_setAlbum (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"album\"]; })"
+        js_getAlbum :: MediaMetadata -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/album MDN MediaMetadata.album documentation>
+getAlbum :: (MonadDOM m, FromJSString result) => MediaMetadata -> m result
+getAlbum self = liftDOM ((fromJSString <$> (js_getAlbum (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"artwork\"] = $2; })"
+        js_setArtwork :: MediaMetadata -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/artwork MDN MediaMetadata.artwork documentation>
+setArtwork :: (MonadDOM m) => MediaMetadata -> [GObject] -> m ()
+setArtwork self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setArtwork (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"artwork\"]; })"
+        js_getArtwork :: MediaMetadata -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/artwork MDN MediaMetadata.artwork documentation>
+getArtwork :: (MonadDOM m) => MediaMetadata -> m [GObject]
+getArtwork self = liftDOM (((js_getArtwork (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaMetadataInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaMetadataInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaMetadataInit.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaMetadataInit
+       (js_newMediaMetadataInit, js_setTitle, js_getTitle, js_setArtist, js_getArtist, js_setAlbum, js_getAlbum, js_setArtwork, js_getArtwork, js_setChapterInfo, js_getChapterInfo, newMediaMetadataInit, setTitle, getTitle, getTitleUnsafe, getTitleUnchecked, setArtist, getArtist, getArtistUnsafe, getArtistUnchecked, setAlbum, getAlbum, getAlbumUnsafe, getAlbumUnchecked, setArtwork, getArtwork, getArtworkUnsafe, getArtworkUnchecked, setChapterInfo, getChapterInfo, getChapterInfoUnsafe, getChapterInfoUnchecked, MediaMetadataInit(..), gTypeMediaMetadataInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaMetadataInit :: IO MediaMetadataInit
+-- | <https://w3c.github.io/mediasession/#dictdef-mediametadatainit MediaMetadataInit specification>
+newMediaMetadataInit :: (MonadDOM m) => m MediaMetadataInit
+newMediaMetadataInit = liftDOM ((js_newMediaMetadataInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: MediaMetadataInit -> JSString -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-title MediaMetadataInit.title specification>
+setTitle :: (MonadDOM m, ToJSString val) => MediaMetadataInit -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: MediaMetadataInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-title MediaMetadataInit.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m (Maybe result)
+getTitle self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTitle (self))))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-title MediaMetadataInit.title specification>
+getTitleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaMetadataInit -> m result
+getTitleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTitle (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-title MediaMetadataInit.title specification>
+getTitleUnchecked :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m result
+getTitleUnchecked self = liftDOM ((pFromJSVal <$> (js_getTitle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"artist\"] = $2; })"
+        js_setArtist :: MediaMetadataInit -> JSString -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artist MediaMetadataInit.artist specification>
+setArtist :: (MonadDOM m, ToJSString val) => MediaMetadataInit -> val -> m ()
+setArtist self val = liftDOM (void ((js_setArtist (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"artist\"]; })"
+        js_getArtist :: MediaMetadataInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artist MediaMetadataInit.artist specification>
+getArtist :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m (Maybe result)
+getArtist self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getArtist (self))))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artist MediaMetadataInit.artist specification>
+getArtistUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaMetadataInit -> m result
+getArtistUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getArtist (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artist MediaMetadataInit.artist specification>
+getArtistUnchecked :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m result
+getArtistUnchecked self = liftDOM ((pFromJSVal <$> (js_getArtist (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"album\"] = $2; })"
+        js_setAlbum :: MediaMetadataInit -> JSString -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-album MediaMetadataInit.album specification>
+setAlbum :: (MonadDOM m, ToJSString val) => MediaMetadataInit -> val -> m ()
+setAlbum self val = liftDOM (void ((js_setAlbum (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"album\"]; })"
+        js_getAlbum :: MediaMetadataInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-album MediaMetadataInit.album specification>
+getAlbum :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m (Maybe result)
+getAlbum self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAlbum (self))))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-album MediaMetadataInit.album specification>
+getAlbumUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaMetadataInit -> m result
+getAlbumUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAlbum (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-album MediaMetadataInit.album specification>
+getAlbumUnchecked :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m result
+getAlbumUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlbum (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"artwork\"] = $2; })"
+        js_setArtwork :: MediaMetadataInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artwork MediaMetadataInit.artwork specification>
+setArtwork :: (MonadDOM m) => MediaMetadataInit -> [MediaImage] -> m ()
+setArtwork self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setArtwork (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"artwork\"]; })"
+        js_getArtwork :: MediaMetadataInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artwork MediaMetadataInit.artwork specification>
+getArtwork :: (MonadDOM m) => MediaMetadataInit -> m (Maybe [MediaImage])
+getArtwork self = liftDOM (((js_getArtwork (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artwork MediaMetadataInit.artwork specification>
+getArtworkUnsafe :: (MonadDOM m, HasCallStack) => MediaMetadataInit -> m [MediaImage]
+getArtworkUnsafe self = liftDOM ((((js_getArtwork (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artwork MediaMetadataInit.artwork specification>
+getArtworkUnchecked :: (MonadDOM m) => MediaMetadataInit -> m [MediaImage]
+getArtworkUnchecked self = liftDOM (((js_getArtwork (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"chapterInfo\"] = $2; })"
+        js_setChapterInfo :: MediaMetadataInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-chapterinfo MediaMetadataInit.chapterInfo specification>
+setChapterInfo :: (MonadDOM m) => MediaMetadataInit -> [ChapterInformationInit] -> m ()
+setChapterInfo self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChapterInfo (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"chapterInfo\"]; })"
+        js_getChapterInfo :: MediaMetadataInit -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-chapterinfo MediaMetadataInit.chapterInfo specification>
+getChapterInfo :: (MonadDOM m) => MediaMetadataInit -> m (Maybe [ChapterInformationInit])
+getChapterInfo self = liftDOM (((js_getChapterInfo (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-chapterinfo MediaMetadataInit.chapterInfo specification>
+getChapterInfoUnsafe :: (MonadDOM m, HasCallStack) => MediaMetadataInit -> m [ChapterInformationInit]
+getChapterInfoUnsafe self = liftDOM ((((js_getChapterInfo (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-chapterinfo MediaMetadataInit.chapterInfo specification>
+getChapterInfoUnchecked :: (MonadDOM m) => MediaMetadataInit -> m [ChapterInformationInit]
+getChapterInfoUnchecked self = liftDOM (((js_getChapterInfo (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaPositionState.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaPositionState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaPositionState.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaPositionState
+       (js_newMediaPositionState, js_setDuration, js_getDuration, js_setPlaybackRate, js_getPlaybackRate, js_setPosition, js_getPosition, newMediaPositionState, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setPlaybackRate, getPlaybackRate, getPlaybackRateUnsafe, getPlaybackRateUnchecked, setPosition, getPosition, getPositionUnsafe, getPositionUnchecked, MediaPositionState(..), gTypeMediaPositionState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaPositionState :: IO MediaPositionState
+-- | <https://w3c.github.io/mediasession/#dictdef-mediapositionstate MediaPositionState specification>
+newMediaPositionState :: (MonadDOM m) => m MediaPositionState
+newMediaPositionState = liftDOM ((js_newMediaPositionState))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: MediaPositionState -> Double -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-duration MediaPositionState.duration specification>
+setDuration :: (MonadDOM m) => MediaPositionState -> Double -> m ()
+setDuration self val = liftDOM (void ((js_setDuration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: MediaPositionState -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-duration MediaPositionState.duration specification>
+getDuration :: (MonadDOM m) => MediaPositionState -> m (Maybe Double)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-duration MediaPositionState.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => MediaPositionState -> m Double
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-duration MediaPositionState.duration specification>
+getDurationUnchecked :: (MonadDOM m) => MediaPositionState -> m Double
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: MediaPositionState -> Double -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-playbackrate MediaPositionState.playbackRate specification>
+setPlaybackRate :: (MonadDOM m) => MediaPositionState -> Double -> m ()
+setPlaybackRate self val = liftDOM (void ((js_setPlaybackRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: MediaPositionState -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-playbackrate MediaPositionState.playbackRate specification>
+getPlaybackRate :: (MonadDOM m) => MediaPositionState -> m (Maybe Double)
+getPlaybackRate self = liftDOM (((js_getPlaybackRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-playbackrate MediaPositionState.playbackRate specification>
+getPlaybackRateUnsafe :: (MonadDOM m, HasCallStack) => MediaPositionState -> m Double
+getPlaybackRateUnsafe self = liftDOM ((((js_getPlaybackRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-playbackrate MediaPositionState.playbackRate specification>
+getPlaybackRateUnchecked :: (MonadDOM m) => MediaPositionState -> m Double
+getPlaybackRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getPlaybackRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"position\"] = $2; })"
+        js_setPosition :: MediaPositionState -> Double -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-position MediaPositionState.position specification>
+setPosition :: (MonadDOM m) => MediaPositionState -> Double -> m ()
+setPosition self val = liftDOM (void ((js_setPosition (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })"
+        js_getPosition :: MediaPositionState -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-position MediaPositionState.position specification>
+getPosition :: (MonadDOM m) => MediaPositionState -> m (Maybe Double)
+getPosition self = liftDOM (((js_getPosition (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-position MediaPositionState.position specification>
+getPositionUnsafe :: (MonadDOM m, HasCallStack) => MediaPositionState -> m Double
+getPositionUnsafe self = liftDOM ((((js_getPosition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-position MediaPositionState.position specification>
+getPositionUnchecked :: (MonadDOM m) => MediaPositionState -> m Double
+getPositionUnchecked self = liftDOM ((pFromJSVal <$> (js_getPosition (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
@@ -1,65 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaQueryList
-       (js_addListener, addListener, js_removeListener, removeListener,
-        js_getMedia, getMedia, js_getMatches, getMatches,
-        MediaQueryList(..), gTypeMediaQueryList)
+       (js_addListener, js_removeListener, js_getMedia, js_getMatches, addListener, removeListener, getMedia, getMatches, change, MediaQueryList(..), gTypeMediaQueryList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"addListener\"]($2); })"
-        js_addListener ::
-        MediaQueryList -> Optional MediaQueryListListener -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.addListener Mozilla MediaQueryList.addListener documentation> 
-addListener ::
-            (MonadIO m) =>
-              MediaQueryList -> Maybe MediaQueryListListener -> m ()
-addListener self listener
-  = liftIO (js_addListener self (maybeToOptional listener))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"removeListener\"]($2); })"
-        js_removeListener ::
-        MediaQueryList -> Optional MediaQueryListListener -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"addListener\"]($2); })"
+        js_addListener :: MediaQueryList -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryList/addListener MDN MediaQueryList.addListener documentation>
+addListener :: (MonadDOM m) => MediaQueryList -> Maybe EventListener -> m ()
+addListener self callback' = liftDOM (void (((toJSVal callback') >>= \a2' -> js_addListener (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.removeListener Mozilla MediaQueryList.removeListener documentation> 
-removeListener ::
-               (MonadIO m) =>
-                 MediaQueryList -> Maybe MediaQueryListListener -> m ()
-removeListener self listener
-  = liftIO (js_removeListener self (maybeToOptional listener))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        MediaQueryList -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"removeListener\"]($2); })"
+        js_removeListener :: MediaQueryList -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryList/removeListener MDN MediaQueryList.removeListener documentation>
+removeListener :: (MonadDOM m) => MediaQueryList -> Maybe EventListener -> m ()
+removeListener self callback' = liftDOM (void (((toJSVal callback') >>= \a2' -> js_removeListener (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.media Mozilla MediaQueryList.media documentation> 
-getMedia ::
-         (MonadIO m, FromJSString result) => MediaQueryList -> m result
-getMedia self = liftIO (fromJSString <$> (js_getMedia self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"matches\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: MediaQueryList -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryList/media MDN MediaQueryList.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => MediaQueryList -> m result
+getMedia self = liftDOM ((fromJSString <$> (js_getMedia (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"matches\"]; })"
         js_getMatches :: MediaQueryList -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryList/matches MDN MediaQueryList.matches documentation>
+getMatches :: (MonadDOM m) => MediaQueryList -> m Bool
+getMatches self = liftDOM ((js_getMatches (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.matches Mozilla MediaQueryList.matches documentation> 
-getMatches :: (MonadIO m) => MediaQueryList -> m Bool
-getMatches self = liftIO (js_getMatches self)
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylist-onchange change event>
+change :: EventName MediaQueryList MediaQueryListEvent
+change = unsafeEventName (toJSString "change")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaQueryListEvent
+       (js_newMediaQueryListEvent, js_getMedia, js_getMatches, newMediaQueryListEvent, getMedia, getMatches, MediaQueryListEvent(..), gTypeMediaQueryListEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaQueryListEvent\"]($1, $2); })"
+        js_newMediaQueryListEvent :: JSString -> JSVal -> IO MediaQueryListEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryListEvent/MediaQueryListEvent MDN MediaQueryListEvent. documentation>
+newMediaQueryListEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe MediaQueryListEventInit -> m MediaQueryListEvent
+newMediaQueryListEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newMediaQueryListEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: MediaQueryListEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryListEvent/media MDN MediaQueryListEvent.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => MediaQueryListEvent -> m result
+getMedia self = liftDOM ((fromJSString <$> (js_getMedia (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"matches\"]; })"
+        js_getMatches :: MediaQueryListEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryListEvent/matches MDN MediaQueryListEvent.matches documentation>
+getMatches :: (MonadDOM m) => MediaQueryListEvent -> m Bool
+getMatches self = liftDOM ((js_getMatches (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaQueryListEventInit
+       (js_newMediaQueryListEventInit, js_setMedia, js_getMedia, js_setMatches, js_getMatches, newMediaQueryListEventInit, setMedia, getMedia, getMediaUnsafe, getMediaUnchecked, setMatches, getMatches, getMatchesUnsafe, getMatchesUnchecked, MediaQueryListEventInit(..), gTypeMediaQueryListEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaQueryListEventInit :: IO MediaQueryListEventInit
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-mediaquerylisteventinit MediaQueryListEventInit specification>
+newMediaQueryListEventInit :: (MonadDOM m) => m MediaQueryListEventInit
+newMediaQueryListEventInit = liftDOM ((js_newMediaQueryListEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"media\"] = $2; })"
+        js_setMedia :: MediaQueryListEventInit -> JSString -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-media MediaQueryListEventInit.media specification>
+setMedia :: (MonadDOM m, ToJSString val) => MediaQueryListEventInit -> val -> m ()
+setMedia self val = liftDOM (void ((js_setMedia (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: MediaQueryListEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-media MediaQueryListEventInit.media specification>
+getMedia :: (MonadDOM m, FromJSString result) => MediaQueryListEventInit -> m (Maybe result)
+getMedia self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMedia (self))))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-media MediaQueryListEventInit.media specification>
+getMediaUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaQueryListEventInit -> m result
+getMediaUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMedia (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-media MediaQueryListEventInit.media specification>
+getMediaUnchecked :: (MonadDOM m, FromJSString result) => MediaQueryListEventInit -> m result
+getMediaUnchecked self = liftDOM ((pFromJSVal <$> (js_getMedia (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"matches\"] = $2; })"
+        js_setMatches :: MediaQueryListEventInit -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-matches MediaQueryListEventInit.matches specification>
+setMatches :: (MonadDOM m) => MediaQueryListEventInit -> Bool -> m ()
+setMatches self val = liftDOM (void ((js_setMatches (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"matches\"]; })"
+        js_getMatches :: MediaQueryListEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-matches MediaQueryListEventInit.matches specification>
+getMatches :: (MonadDOM m) => MediaQueryListEventInit -> m (Maybe Bool)
+getMatches self = liftDOM (((js_getMatches (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-matches MediaQueryListEventInit.matches specification>
+getMatchesUnsafe :: (MonadDOM m, HasCallStack) => MediaQueryListEventInit -> m Bool
+getMatchesUnsafe self = liftDOM ((((js_getMatches (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-matches MediaQueryListEventInit.matches specification>
+getMatchesUnchecked :: (MonadDOM m) => MediaQueryListEventInit -> m Bool
+getMatchesUnchecked self = liftDOM ((pFromJSVal <$> (js_getMatches (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.MediaQueryListListener
-       (newMediaQueryListListener, newMediaQueryListListenerSync,
-        newMediaQueryListListenerAsync, MediaQueryListListener)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
-newMediaQueryListListener ::
-                          (MonadIO m) =>
-                            (Maybe MediaQueryList -> IO ()) -> m MediaQueryListListener
-newMediaQueryListListener callback
-  = liftIO
-      (MediaQueryListListener <$>
-         syncCallback1 ThrowWouldBlock
-           (\ list -> fromJSValUnchecked list >>= \ list' -> callback list'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
-newMediaQueryListListenerSync ::
-                              (MonadIO m) =>
-                                (Maybe MediaQueryList -> IO ()) -> m MediaQueryListListener
-newMediaQueryListListenerSync callback
-  = liftIO
-      (MediaQueryListListener <$>
-         syncCallback1 ContinueAsync
-           (\ list -> fromJSValUnchecked list >>= \ list' -> callback list'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
-newMediaQueryListListenerAsync ::
-                               (MonadIO m) =>
-                                 (Maybe MediaQueryList -> IO ()) -> m MediaQueryListListener
-newMediaQueryListListenerAsync callback
-  = liftIO
-      (MediaQueryListListener <$>
-         asyncCallback1
-           (\ list -> fromJSValUnchecked list >>= \ list' -> callback list'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaRecorder.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaRecorder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaRecorder.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaRecorder
+       (js_newMediaRecorder, js_pause, js_requestData, js_resume, js_start, js_stop, js_isTypeSupported, js_getStream, js_getMimeType, js_getState, js_getVideoBitsPerSecond, js_getAudioBitsPerSecond, newMediaRecorder, pause, requestData, resume, start, stop, isTypeSupported, isTypeSupported_, getStream, getMimeType, getState, getVideoBitsPerSecond, getAudioBitsPerSecond, startEvent, stopEvent, dataavailable, pauseEvent, resumeEvent, error, MediaRecorder(..), gTypeMediaRecorder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaRecorder\"]($1, $2); })"
+        js_newMediaRecorder :: MediaStream -> JSVal -> IO MediaRecorder
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/MediaRecorder MDN MediaRecorder. documentation>
+newMediaRecorder :: (MonadDOM m) => MediaStream -> Maybe MediaRecorderOptions -> m MediaRecorder
+newMediaRecorder stream options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newMediaRecorder (stream) a2'))
+
+foreign import javascript safe "(($1) => { return $1[\"pause\"](); })"
+        js_pause :: MediaRecorder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/pause MDN MediaRecorder.pause documentation>
+pause :: (MonadDOM m) => MediaRecorder -> m ()
+pause self = liftDOM (void ((js_pause (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"requestData\"](); })"
+        js_requestData :: MediaRecorder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/requestData MDN MediaRecorder.requestData documentation>
+requestData :: (MonadDOM m) => MediaRecorder -> m ()
+requestData self = liftDOM (void ((js_requestData (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"resume\"](); })"
+        js_resume :: MediaRecorder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/resume MDN MediaRecorder.resume documentation>
+resume :: (MonadDOM m) => MediaRecorder -> m ()
+resume self = liftDOM (void ((js_resume (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })"
+        js_start :: MediaRecorder -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/start MDN MediaRecorder.start documentation>
+start :: (MonadDOM m) => MediaRecorder -> Maybe Word -> m ()
+start self timeslice = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal timeslice) >>= \a2' -> js_start (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"stop\"](); })"
+        js_stop :: MediaRecorder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/stop MDN MediaRecorder.stop documentation>
+stop :: (MonadDOM m) => MediaRecorder -> m ()
+stop self = liftDOM (void ((js_stop (self))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"MediaRecorder\"][\"isTypeSupported\"]($1); })"
+        js_isTypeSupported :: JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/isTypeSupported_static MDN MediaRecorder.isTypeSupported documentation>
+isTypeSupported :: (MonadDOM m, ToJSString type') => type' -> m Bool
+isTypeSupported type' = liftDOM ((js_isTypeSupported (toJSString type')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/isTypeSupported_static MDN MediaRecorder.isTypeSupported documentation>
+isTypeSupported_ :: (MonadDOM m, ToJSString type') => type' -> m ()
+isTypeSupported_ type' = liftDOM (void ((js_isTypeSupported (toJSString type'))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stream\"]; })"
+        js_getStream :: MediaRecorder -> IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/stream MDN MediaRecorder.stream documentation>
+getStream :: (MonadDOM m) => MediaRecorder -> m MediaStream
+getStream self = liftDOM ((js_getStream (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mimeType\"]; })"
+        js_getMimeType :: MediaRecorder -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/mimeType MDN MediaRecorder.mimeType documentation>
+getMimeType :: (MonadDOM m, FromJSString result) => MediaRecorder -> m result
+getMimeType self = liftDOM ((fromJSString <$> (js_getMimeType (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: MediaRecorder -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/state MDN MediaRecorder.state documentation>
+getState :: (MonadDOM m) => MediaRecorder -> m RecordingState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"videoBitsPerSecond\"]; })"
+        js_getVideoBitsPerSecond :: MediaRecorder -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/videoBitsPerSecond MDN MediaRecorder.videoBitsPerSecond documentation>
+getVideoBitsPerSecond :: (MonadDOM m) => MediaRecorder -> m Word
+getVideoBitsPerSecond self = liftDOM ((js_getVideoBitsPerSecond (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioBitsPerSecond\"]; })"
+        js_getAudioBitsPerSecond :: MediaRecorder -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/audioBitsPerSecond MDN MediaRecorder.audioBitsPerSecond documentation>
+getAudioBitsPerSecond :: (MonadDOM m) => MediaRecorder -> m Word
+getAudioBitsPerSecond self = liftDOM ((js_getAudioBitsPerSecond (self)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorder-onstart start event>
+startEvent :: EventName MediaRecorder Event
+startEvent = unsafeEventName (toJSString "start")
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorder-onstop stop event>
+stopEvent :: EventName MediaRecorder Event
+stopEvent = unsafeEventName (toJSString "stop")
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorder-ondataavailable dataavailable event>
+dataavailable :: EventName MediaRecorder BlobEvent
+dataavailable = unsafeEventName (toJSString "dataavailable")
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorder-onpause pause event>
+pauseEvent :: EventName MediaRecorder Event
+pauseEvent = unsafeEventName (toJSString "pause")
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorder-onresume resume event>
+resumeEvent :: EventName MediaRecorder Event
+resumeEvent = unsafeEventName (toJSString "resume")
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorder-onerror error event>
+error :: EventName MediaRecorder ErrorEvent
+error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaRecorderOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaRecorderOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaRecorderOptions.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaRecorderOptions
+       (js_newMediaRecorderOptions, js_setMimeType, js_getMimeType, js_setAudioBitsPerSecond, js_getAudioBitsPerSecond, js_setVideoBitsPerSecond, js_getVideoBitsPerSecond, js_setBitsPerSecond, js_getBitsPerSecond, js_setAudioBitrateMode, js_getAudioBitrateMode, js_setVideoKeyFrameIntervalDuration, js_getVideoKeyFrameIntervalDuration, js_setVideoKeyFrameIntervalCount, js_getVideoKeyFrameIntervalCount, newMediaRecorderOptions, setMimeType, getMimeType, getMimeTypeUnsafe, getMimeTypeUnchecked, setAudioBitsPerSecond, getAudioBitsPerSecond, getAudioBitsPerSecondUnsafe, getAudioBitsPerSecondUnchecked, setVideoBitsPerSecond, getVideoBitsPerSecond, getVideoBitsPerSecondUnsafe, getVideoBitsPerSecondUnchecked, setBitsPerSecond, getBitsPerSecond, getBitsPerSecondUnsafe, getBitsPerSecondUnchecked, setAudioBitrateMode, getAudioBitrateMode, getAudioBitrateModeUnsafe, getAudioBitrateModeUnchecked, setVideoKeyFrameIntervalDuration, getVideoKeyFrameIntervalDuration, getVideoKeyFrameIntervalDurationUnsafe, getVideoKeyFrameIntervalDurationUnchecked, setVideoKeyFrameIntervalCount, getVideoKeyFrameIntervalCount, getVideoKeyFrameIntervalCountUnsafe, getVideoKeyFrameIntervalCountUnchecked, MediaRecorderOptions(..), gTypeMediaRecorderOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaRecorderOptions :: IO MediaRecorderOptions
+-- | <https://w3c.github.io/mediacapture-record/#dictdef-mediarecorderoptions MediaRecorderOptions specification>
+newMediaRecorderOptions :: (MonadDOM m) => m MediaRecorderOptions
+newMediaRecorderOptions = liftDOM ((js_newMediaRecorderOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mimeType\"] = $2; })"
+        js_setMimeType :: MediaRecorderOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-mimetype MediaRecorderOptions.mimeType specification>
+setMimeType :: (MonadDOM m, ToJSString val) => MediaRecorderOptions -> val -> m ()
+setMimeType self val = liftDOM (void ((js_setMimeType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mimeType\"]; })"
+        js_getMimeType :: MediaRecorderOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-mimetype MediaRecorderOptions.mimeType specification>
+getMimeType :: (MonadDOM m, FromJSString result) => MediaRecorderOptions -> m (Maybe result)
+getMimeType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMimeType (self))))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-mimetype MediaRecorderOptions.mimeType specification>
+getMimeTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaRecorderOptions -> m result
+getMimeTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMimeType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-mimetype MediaRecorderOptions.mimeType specification>
+getMimeTypeUnchecked :: (MonadDOM m, FromJSString result) => MediaRecorderOptions -> m result
+getMimeTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMimeType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audioBitsPerSecond\"] = $2; })"
+        js_setAudioBitsPerSecond :: MediaRecorderOptions -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitspersecond MediaRecorderOptions.audioBitsPerSecond specification>
+setAudioBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setAudioBitsPerSecond self val = liftDOM (void ((js_setAudioBitsPerSecond (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioBitsPerSecond\"]; })"
+        js_getAudioBitsPerSecond :: MediaRecorderOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitspersecond MediaRecorderOptions.audioBitsPerSecond specification>
+getAudioBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getAudioBitsPerSecond self = liftDOM (((js_getAudioBitsPerSecond (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitspersecond MediaRecorderOptions.audioBitsPerSecond specification>
+getAudioBitsPerSecondUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getAudioBitsPerSecondUnsafe self = liftDOM ((((js_getAudioBitsPerSecond (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitspersecond MediaRecorderOptions.audioBitsPerSecond specification>
+getAudioBitsPerSecondUnchecked :: (MonadDOM m) => MediaRecorderOptions -> m Word
+getAudioBitsPerSecondUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudioBitsPerSecond (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"videoBitsPerSecond\"] = $2; })"
+        js_setVideoBitsPerSecond :: MediaRecorderOptions -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videobitspersecond MediaRecorderOptions.videoBitsPerSecond specification>
+setVideoBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setVideoBitsPerSecond self val = liftDOM (void ((js_setVideoBitsPerSecond (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"videoBitsPerSecond\"]; })"
+        js_getVideoBitsPerSecond :: MediaRecorderOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videobitspersecond MediaRecorderOptions.videoBitsPerSecond specification>
+getVideoBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getVideoBitsPerSecond self = liftDOM (((js_getVideoBitsPerSecond (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videobitspersecond MediaRecorderOptions.videoBitsPerSecond specification>
+getVideoBitsPerSecondUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getVideoBitsPerSecondUnsafe self = liftDOM ((((js_getVideoBitsPerSecond (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videobitspersecond MediaRecorderOptions.videoBitsPerSecond specification>
+getVideoBitsPerSecondUnchecked :: (MonadDOM m) => MediaRecorderOptions -> m Word
+getVideoBitsPerSecondUnchecked self = liftDOM ((pFromJSVal <$> (js_getVideoBitsPerSecond (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bitsPerSecond\"] = $2; })"
+        js_setBitsPerSecond :: MediaRecorderOptions -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-bitspersecond MediaRecorderOptions.bitsPerSecond specification>
+setBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setBitsPerSecond self val = liftDOM (void ((js_setBitsPerSecond (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bitsPerSecond\"]; })"
+        js_getBitsPerSecond :: MediaRecorderOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-bitspersecond MediaRecorderOptions.bitsPerSecond specification>
+getBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getBitsPerSecond self = liftDOM (((js_getBitsPerSecond (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-bitspersecond MediaRecorderOptions.bitsPerSecond specification>
+getBitsPerSecondUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getBitsPerSecondUnsafe self = liftDOM ((((js_getBitsPerSecond (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-bitspersecond MediaRecorderOptions.bitsPerSecond specification>
+getBitsPerSecondUnchecked :: (MonadDOM m) => MediaRecorderOptions -> m Word
+getBitsPerSecondUnchecked self = liftDOM ((pFromJSVal <$> (js_getBitsPerSecond (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audioBitrateMode\"] = $2; })"
+        js_setAudioBitrateMode :: MediaRecorderOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitratemode MediaRecorderOptions.audioBitrateMode specification>
+setAudioBitrateMode :: (MonadDOM m) => MediaRecorderOptions -> BitrateMode -> m ()
+setAudioBitrateMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAudioBitrateMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioBitrateMode\"]; })"
+        js_getAudioBitrateMode :: MediaRecorderOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitratemode MediaRecorderOptions.audioBitrateMode specification>
+getAudioBitrateMode :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe BitrateMode)
+getAudioBitrateMode self = liftDOM (((js_getAudioBitrateMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitratemode MediaRecorderOptions.audioBitrateMode specification>
+getAudioBitrateModeUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m BitrateMode
+getAudioBitrateModeUnsafe self = liftDOM ((((js_getAudioBitrateMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitratemode MediaRecorderOptions.audioBitrateMode specification>
+getAudioBitrateModeUnchecked :: (MonadDOM m) => MediaRecorderOptions -> m BitrateMode
+getAudioBitrateModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudioBitrateMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"videoKeyFrameIntervalDuration\"] = $2; })"
+        js_setVideoKeyFrameIntervalDuration :: MediaRecorderOptions -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalduration MediaRecorderOptions.videoKeyFrameIntervalDuration specification>
+setVideoKeyFrameIntervalDuration :: (MonadDOM m) => MediaRecorderOptions -> Double -> m ()
+setVideoKeyFrameIntervalDuration self val = liftDOM (void ((js_setVideoKeyFrameIntervalDuration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"videoKeyFrameIntervalDuration\"]; })"
+        js_getVideoKeyFrameIntervalDuration :: MediaRecorderOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalduration MediaRecorderOptions.videoKeyFrameIntervalDuration specification>
+getVideoKeyFrameIntervalDuration :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Double)
+getVideoKeyFrameIntervalDuration self = liftDOM (((js_getVideoKeyFrameIntervalDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalduration MediaRecorderOptions.videoKeyFrameIntervalDuration specification>
+getVideoKeyFrameIntervalDurationUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Double
+getVideoKeyFrameIntervalDurationUnsafe self = liftDOM ((((js_getVideoKeyFrameIntervalDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalduration MediaRecorderOptions.videoKeyFrameIntervalDuration specification>
+getVideoKeyFrameIntervalDurationUnchecked :: (MonadDOM m) => MediaRecorderOptions -> m Double
+getVideoKeyFrameIntervalDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getVideoKeyFrameIntervalDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"videoKeyFrameIntervalCount\"] = $2; })"
+        js_setVideoKeyFrameIntervalCount :: MediaRecorderOptions -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalcount MediaRecorderOptions.videoKeyFrameIntervalCount specification>
+setVideoKeyFrameIntervalCount :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setVideoKeyFrameIntervalCount self val = liftDOM (void ((js_setVideoKeyFrameIntervalCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"videoKeyFrameIntervalCount\"]; })"
+        js_getVideoKeyFrameIntervalCount :: MediaRecorderOptions -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalcount MediaRecorderOptions.videoKeyFrameIntervalCount specification>
+getVideoKeyFrameIntervalCount :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getVideoKeyFrameIntervalCount self = liftDOM (((js_getVideoKeyFrameIntervalCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalcount MediaRecorderOptions.videoKeyFrameIntervalCount specification>
+getVideoKeyFrameIntervalCountUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getVideoKeyFrameIntervalCountUnsafe self = liftDOM ((((js_getVideoKeyFrameIntervalCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalcount MediaRecorderOptions.videoKeyFrameIntervalCount specification>
+getVideoKeyFrameIntervalCountUnchecked :: (MonadDOM m) => MediaRecorderOptions -> m Word
+getVideoKeyFrameIntervalCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getVideoKeyFrameIntervalCount (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.MediaRemoteControls
-       (js_newMediaRemoteControls, newMediaRemoteControls,
-        js_setPreviousTrackEnabled, setPreviousTrackEnabled,
-        js_getPreviousTrackEnabled, getPreviousTrackEnabled,
-        js_setNextTrackEnabled, setNextTrackEnabled,
-        js_getNextTrackEnabled, getNextTrackEnabled, previoustrack,
-        nexttrack, MediaRemoteControls(..), gTypeMediaRemoteControls)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"MediaRemoteControls\"](); })" js_newMediaRemoteControls
-        :: IO MediaRemoteControls
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls Mozilla MediaRemoteControls documentation> 
-newMediaRemoteControls :: (MonadIO m) => m MediaRemoteControls
-newMediaRemoteControls = liftIO (js_newMediaRemoteControls)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"previousTrackEnabled\"] = $2; })" js_setPreviousTrackEnabled ::
-        MediaRemoteControls -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.previousTrackEnabled Mozilla MediaRemoteControls.previousTrackEnabled documentation> 
-setPreviousTrackEnabled ::
-                        (MonadIO m) => MediaRemoteControls -> Bool -> m ()
-setPreviousTrackEnabled self val
-  = liftIO (js_setPreviousTrackEnabled self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"previousTrackEnabled\"] ? 1 : 0); })" js_getPreviousTrackEnabled
-        :: MediaRemoteControls -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.previousTrackEnabled Mozilla MediaRemoteControls.previousTrackEnabled documentation> 
-getPreviousTrackEnabled ::
-                        (MonadIO m) => MediaRemoteControls -> m Bool
-getPreviousTrackEnabled self
-  = liftIO (js_getPreviousTrackEnabled self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"nextTrackEnabled\"] = $2; })"
-        js_setNextTrackEnabled :: MediaRemoteControls -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.nextTrackEnabled Mozilla MediaRemoteControls.nextTrackEnabled documentation> 
-setNextTrackEnabled ::
-                    (MonadIO m) => MediaRemoteControls -> Bool -> m ()
-setNextTrackEnabled self val
-  = liftIO (js_setNextTrackEnabled self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"nextTrackEnabled\"] ? 1 : 0); })" js_getNextTrackEnabled ::
-        MediaRemoteControls -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.nextTrackEnabled Mozilla MediaRemoteControls.nextTrackEnabled documentation> 
-getNextTrackEnabled :: (MonadIO m) => MediaRemoteControls -> m Bool
-getNextTrackEnabled self = liftIO (js_getNextTrackEnabled self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.onprevioustrack Mozilla MediaRemoteControls.onprevioustrack documentation> 
-previoustrack :: EventName MediaRemoteControls onprevioustrack
-previoustrack = unsafeEventName (toJSString "previoustrack")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.onnexttrack Mozilla MediaRemoteControls.onnexttrack documentation> 
-nexttrack :: EventName MediaRemoteControls onnexttrack
-nexttrack = unsafeEventName (toJSString "nexttrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
@@ -1,84 +1,73 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaSession
-       (js_newMediaSession, newMediaSession, js_setMetadata, setMetadata,
-        js_deactivate, deactivate, js_getKind, getKind, js_getControls,
-        getControls, getControlsUnsafe, getControlsUnchecked,
-        MediaSession(..), gTypeMediaSession)
+       (js_setActionHandler, js_setCameraActive, js_setMicrophoneActive, js_setPositionState, js_setMetadata, js_getMetadata, js_setPlaybackState, js_getPlaybackState, setActionHandler, setCameraActive, setMicrophoneActive, setPositionState, setMetadata, getMetadata, getMetadataUnsafe, getMetadataUnchecked, setPlaybackState, getPlaybackState, MediaSession(..), gTypeMediaSession)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return new window[\"MediaSession\"]($1); })"
-        js_newMediaSession :: Optional MediaSessionKind -> IO MediaSession
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession Mozilla MediaSession documentation> 
-newMediaSession ::
-                (MonadIO m) => Maybe MediaSessionKind -> m MediaSession
-newMediaSession kind
-  = liftIO (js_newMediaSession (maybeToOptional kind))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setMetadata\"]($2); })"
-        js_setMetadata :: MediaSession -> Optional MediaMetadata -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setActionHandler\"]($2, $3); })"
+        js_setActionHandler :: MediaSession -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/setActionHandler MDN MediaSession.setActionHandler documentation>
+setActionHandler :: (MonadDOM m) => MediaSession -> MediaSessionAction -> Maybe MediaSessionActionHandler -> m ()
+setActionHandler self action handler = liftDOM (void (((toJSVal action) >>= \a2' -> (toJSVal handler) >>= \a3' -> js_setActionHandler (self) a2' a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.setMetadata Mozilla MediaSession.setMetadata documentation> 
-setMetadata ::
-            (MonadIO m) => MediaSession -> Maybe MediaMetadata -> m ()
-setMetadata self metadata
-  = liftIO (js_setMetadata self (maybeToOptional metadata))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deactivate\"](); })"
-        js_deactivate :: MediaSession -> IO ()
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setCameraActive\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setCameraActive :: MediaSession -> Bool -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/setCameraActive MDN MediaSession.setCameraActive documentation>
+setCameraActive :: (MonadDOM m) => MediaSession -> Bool -> m ()
+setCameraActive self active = liftDOM (void (((js_setCameraActive (self) (active)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.deactivate Mozilla MediaSession.deactivate documentation> 
-deactivate :: (MonadIO m) => MediaSession -> m ()
-deactivate self = liftIO (js_deactivate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        MediaSession -> IO JSVal
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setMicrophoneActive\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setMicrophoneActive :: MediaSession -> Bool -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/setMicrophoneActive MDN MediaSession.setMicrophoneActive documentation>
+setMicrophoneActive :: (MonadDOM m) => MediaSession -> Bool -> m ()
+setMicrophoneActive self active = liftDOM (void (((js_setMicrophoneActive (self) (active)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.kind Mozilla MediaSession.kind documentation> 
-getKind :: (MonadIO m) => MediaSession -> m MediaSessionKind
-getKind self = liftIO ((js_getKind self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"controls\"]; })" js_getControls
-        :: MediaSession -> IO (Nullable MediaRemoteControls)
+foreign import javascript safe "(($1, $2) => { return $1[\"setPositionState\"]($2); })"
+        js_setPositionState :: MediaSession -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/setPositionState MDN MediaSession.setPositionState documentation>
+setPositionState :: (MonadDOM m) => MediaSession -> Maybe MediaPositionState -> m ()
+setPositionState self state = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal state) >>= \a2' -> js_setPositionState (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
-getControls ::
-            (MonadIO m) => MediaSession -> m (Maybe MediaRemoteControls)
-getControls self
-  = liftIO (nullableToMaybe <$> (js_getControls self))
+foreign import javascript safe "(($1, $2) => { $1[\"metadata\"] = $2; })"
+        js_setMetadata :: MediaSession -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/metadata MDN MediaSession.metadata documentation>
+setMetadata :: (MonadDOM m) => MediaSession -> Maybe MediaMetadata -> m ()
+setMetadata self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMetadata (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
-getControlsUnsafe ::
-                  (MonadIO m, HasCallStack) => MediaSession -> m MediaRemoteControls
-getControlsUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getControls self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"metadata\"]; })"
+        js_getMetadata :: MediaSession -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/metadata MDN MediaSession.metadata documentation>
+getMetadata :: (MonadDOM m) => MediaSession -> m (Maybe MediaMetadata)
+getMetadata self = liftDOM (((js_getMetadata (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
-getControlsUnchecked ::
-                     (MonadIO m) => MediaSession -> m MediaRemoteControls
-getControlsUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getControls self))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/metadata MDN MediaSession.metadata documentation>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => MediaSession -> m MediaMetadata
+getMetadataUnsafe self = liftDOM ((((js_getMetadata (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/metadata MDN MediaSession.metadata documentation>
+getMetadataUnchecked :: (MonadDOM m) => MediaSession -> m MediaMetadata
+getMetadataUnchecked self = liftDOM ((pFromJSVal <$> (js_getMetadata (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackState\"] = $2; })"
+        js_setPlaybackState :: MediaSession -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/playbackState MDN MediaSession.playbackState documentation>
+setPlaybackState :: (MonadDOM m) => MediaSession -> MediaSessionPlaybackState -> m ()
+setPlaybackState self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPlaybackState (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackState\"]; })"
+        js_getPlaybackState :: MediaSession -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/playbackState MDN MediaSession.playbackState documentation>
+getPlaybackState :: (MonadDOM m) => MediaSession -> m MediaSessionPlaybackState
+getPlaybackState self = liftDOM (((js_getPlaybackState (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSessionActionDetails.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSessionActionDetails.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSessionActionDetails.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaSessionActionDetails
+       (js_newMediaSessionActionDetails, js_setAction, js_getAction, js_setSeekOffset, js_getSeekOffset, js_setSeekTime, js_getSeekTime, js_setFastSeek, js_getFastSeek, js_setIsActivating, js_getIsActivating, js_setEnterPictureInPictureReason, js_getEnterPictureInPictureReason, newMediaSessionActionDetails, setAction, getAction, setSeekOffset, getSeekOffset, getSeekOffsetUnsafe, getSeekOffsetUnchecked, setSeekTime, getSeekTime, getSeekTimeUnsafe, getSeekTimeUnchecked, setFastSeek, getFastSeek, getFastSeekUnsafe, getFastSeekUnchecked, setIsActivating, getIsActivating, getIsActivatingUnsafe, getIsActivatingUnchecked, setEnterPictureInPictureReason, getEnterPictureInPictureReason, getEnterPictureInPictureReasonUnsafe, getEnterPictureInPictureReasonUnchecked, MediaSessionActionDetails(..), gTypeMediaSessionActionDetails)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"action\": $1}); })"
+        js_newMediaSessionActionDetails :: JSVal -> IO MediaSessionActionDetails
+-- | <https://w3c.github.io/mediasession/#dictdef-mediasessionactiondetails MediaSessionActionDetails specification>
+newMediaSessionActionDetails :: (MonadDOM m) => MediaSessionAction -> m MediaSessionActionDetails
+newMediaSessionActionDetails action = liftDOM (((toJSVal action) >>= \a1' -> js_newMediaSessionActionDetails a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"action\"] = $2; })"
+        js_setAction :: MediaSessionActionDetails -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-action MediaSessionActionDetails.action specification>
+setAction :: (MonadDOM m) => MediaSessionActionDetails -> MediaSessionAction -> m ()
+setAction self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAction (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"action\"]; })"
+        js_getAction :: MediaSessionActionDetails -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-action MediaSessionActionDetails.action specification>
+getAction :: (MonadDOM m) => MediaSessionActionDetails -> m MediaSessionAction
+getAction self = liftDOM (((js_getAction (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"seekOffset\"] = $2; })"
+        js_setSeekOffset :: MediaSessionActionDetails -> Double -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seekoffset MediaSessionActionDetails.seekOffset specification>
+setSeekOffset :: (MonadDOM m) => MediaSessionActionDetails -> Double -> m ()
+setSeekOffset self val = liftDOM (void ((js_setSeekOffset (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"seekOffset\"]; })"
+        js_getSeekOffset :: MediaSessionActionDetails -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seekoffset MediaSessionActionDetails.seekOffset specification>
+getSeekOffset :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Double)
+getSeekOffset self = liftDOM (((js_getSeekOffset (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seekoffset MediaSessionActionDetails.seekOffset specification>
+getSeekOffsetUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Double
+getSeekOffsetUnsafe self = liftDOM ((((js_getSeekOffset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seekoffset MediaSessionActionDetails.seekOffset specification>
+getSeekOffsetUnchecked :: (MonadDOM m) => MediaSessionActionDetails -> m Double
+getSeekOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getSeekOffset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"seekTime\"] = $2; })"
+        js_setSeekTime :: MediaSessionActionDetails -> Double -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seektime MediaSessionActionDetails.seekTime specification>
+setSeekTime :: (MonadDOM m) => MediaSessionActionDetails -> Double -> m ()
+setSeekTime self val = liftDOM (void ((js_setSeekTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"seekTime\"]; })"
+        js_getSeekTime :: MediaSessionActionDetails -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seektime MediaSessionActionDetails.seekTime specification>
+getSeekTime :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Double)
+getSeekTime self = liftDOM (((js_getSeekTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seektime MediaSessionActionDetails.seekTime specification>
+getSeekTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Double
+getSeekTimeUnsafe self = liftDOM ((((js_getSeekTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seektime MediaSessionActionDetails.seekTime specification>
+getSeekTimeUnchecked :: (MonadDOM m) => MediaSessionActionDetails -> m Double
+getSeekTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSeekTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fastSeek\"] = $2; })"
+        js_setFastSeek :: MediaSessionActionDetails -> Bool -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-fastseek MediaSessionActionDetails.fastSeek specification>
+setFastSeek :: (MonadDOM m) => MediaSessionActionDetails -> Bool -> m ()
+setFastSeek self val = liftDOM (void ((js_setFastSeek (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fastSeek\"]; })"
+        js_getFastSeek :: MediaSessionActionDetails -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-fastseek MediaSessionActionDetails.fastSeek specification>
+getFastSeek :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Bool)
+getFastSeek self = liftDOM (((js_getFastSeek (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-fastseek MediaSessionActionDetails.fastSeek specification>
+getFastSeekUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Bool
+getFastSeekUnsafe self = liftDOM ((((js_getFastSeek (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-fastseek MediaSessionActionDetails.fastSeek specification>
+getFastSeekUnchecked :: (MonadDOM m) => MediaSessionActionDetails -> m Bool
+getFastSeekUnchecked self = liftDOM ((pFromJSVal <$> (js_getFastSeek (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"isActivating\"] = $2; })"
+        js_setIsActivating :: MediaSessionActionDetails -> Bool -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-isactivating MediaSessionActionDetails.isActivating specification>
+setIsActivating :: (MonadDOM m) => MediaSessionActionDetails -> Bool -> m ()
+setIsActivating self val = liftDOM (void ((js_setIsActivating (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isActivating\"]; })"
+        js_getIsActivating :: MediaSessionActionDetails -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-isactivating MediaSessionActionDetails.isActivating specification>
+getIsActivating :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Bool)
+getIsActivating self = liftDOM (((js_getIsActivating (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-isactivating MediaSessionActionDetails.isActivating specification>
+getIsActivatingUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Bool
+getIsActivatingUnsafe self = liftDOM ((((js_getIsActivating (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-isactivating MediaSessionActionDetails.isActivating specification>
+getIsActivatingUnchecked :: (MonadDOM m) => MediaSessionActionDetails -> m Bool
+getIsActivatingUnchecked self = liftDOM ((pFromJSVal <$> (js_getIsActivating (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"enterPictureInPictureReason\"] = $2; })"
+        js_setEnterPictureInPictureReason :: MediaSessionActionDetails -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-enterpictureinpicturereason MediaSessionActionDetails.enterPictureInPictureReason specification>
+setEnterPictureInPictureReason :: (MonadDOM m) => MediaSessionActionDetails -> MediaSessionEnterPictureInPictureReason -> m ()
+setEnterPictureInPictureReason self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEnterPictureInPictureReason (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"enterPictureInPictureReason\"]; })"
+        js_getEnterPictureInPictureReason :: MediaSessionActionDetails -> IO JSVal
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-enterpictureinpicturereason MediaSessionActionDetails.enterPictureInPictureReason specification>
+getEnterPictureInPictureReason :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe MediaSessionEnterPictureInPictureReason)
+getEnterPictureInPictureReason self = liftDOM (((js_getEnterPictureInPictureReason (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-enterpictureinpicturereason MediaSessionActionDetails.enterPictureInPictureReason specification>
+getEnterPictureInPictureReasonUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m MediaSessionEnterPictureInPictureReason
+getEnterPictureInPictureReasonUnsafe self = liftDOM ((((js_getEnterPictureInPictureReason (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-enterpictureinpicturereason MediaSessionActionDetails.enterPictureInPictureReason specification>
+getEnterPictureInPictureReasonUnchecked :: (MonadDOM m) => MediaSessionActionDetails -> m MediaSessionEnterPictureInPictureReason
+getEnterPictureInPictureReasonUnchecked self = liftDOM ((pFromJSVal <$> (js_getEnterPictureInPictureReason (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSessionActionHandler.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSessionActionHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSessionActionHandler.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaSessionActionHandler
+       (newMediaSessionActionHandler, newMediaSessionActionHandlerSync, newMediaSessionActionHandlerAsync, MediaSessionActionHandler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newMediaSessionActionHandler :: (MonadDOM m) => (MediaSessionActionDetails -> IO ()) -> m MediaSessionActionHandler
+newMediaSessionActionHandler callback = liftDOM ((MediaSessionActionHandler . coerce) <$> syncCallback1 ContinueAsync (\ details -> do
+          details' <- fromJSValUnchecked details
+          callback details'))
+
+newMediaSessionActionHandlerSync :: (MonadDOM m) => (MediaSessionActionDetails -> IO ()) -> m MediaSessionActionHandler
+newMediaSessionActionHandlerSync callback = liftDOM ((MediaSessionActionHandler . coerce) <$> syncCallback1 ThrowWouldBlock (\ details -> do
+          details' <- fromJSValUnchecked details
+          callback details'))
+
+newMediaSessionActionHandlerAsync :: (MonadDOM m) => (MediaSessionActionDetails -> IO ()) -> m MediaSessionActionHandler
+newMediaSessionActionHandlerAsync callback = liftDOM ((MediaSessionActionHandler . coerce) <$> asyncCallback1 (\ details -> do
+          details' <- fromJSValUnchecked details
+          callback details'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSettingsRange.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSettingsRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSettingsRange.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaSettingsRange
+       (js_newMediaSettingsRange, js_setMax, js_getMax, js_setMin, js_getMin, js_setStep, js_getStep, newMediaSettingsRange, setMax, getMax, getMaxUnsafe, getMaxUnchecked, setMin, getMin, getMinUnsafe, getMinUnchecked, setStep, getStep, getStepUnsafe, getStepUnchecked, MediaSettingsRange(..), gTypeMediaSettingsRange)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaSettingsRange :: IO MediaSettingsRange
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-mediasettingsrange MediaSettingsRange specification>
+newMediaSettingsRange :: (MonadDOM m) => m MediaSettingsRange
+newMediaSettingsRange = liftDOM ((js_newMediaSettingsRange))
+
+foreign import javascript safe "(($1, $2) => { $1[\"max\"] = $2; })"
+        js_setMax :: MediaSettingsRange -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-max MediaSettingsRange.max specification>
+setMax :: (MonadDOM m) => MediaSettingsRange -> Double -> m ()
+setMax self val = liftDOM (void ((js_setMax (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })"
+        js_getMax :: MediaSettingsRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-max MediaSettingsRange.max specification>
+getMax :: (MonadDOM m) => MediaSettingsRange -> m (Maybe Double)
+getMax self = liftDOM (((js_getMax (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-max MediaSettingsRange.max specification>
+getMaxUnsafe :: (MonadDOM m, HasCallStack) => MediaSettingsRange -> m Double
+getMaxUnsafe self = liftDOM ((((js_getMax (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-max MediaSettingsRange.max specification>
+getMaxUnchecked :: (MonadDOM m) => MediaSettingsRange -> m Double
+getMaxUnchecked self = liftDOM ((pFromJSVal <$> (js_getMax (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"min\"] = $2; })"
+        js_setMin :: MediaSettingsRange -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-min MediaSettingsRange.min specification>
+setMin :: (MonadDOM m) => MediaSettingsRange -> Double -> m ()
+setMin self val = liftDOM (void ((js_setMin (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })"
+        js_getMin :: MediaSettingsRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-min MediaSettingsRange.min specification>
+getMin :: (MonadDOM m) => MediaSettingsRange -> m (Maybe Double)
+getMin self = liftDOM (((js_getMin (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-min MediaSettingsRange.min specification>
+getMinUnsafe :: (MonadDOM m, HasCallStack) => MediaSettingsRange -> m Double
+getMinUnsafe self = liftDOM ((((js_getMin (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-min MediaSettingsRange.min specification>
+getMinUnchecked :: (MonadDOM m) => MediaSettingsRange -> m Double
+getMinUnchecked self = liftDOM ((pFromJSVal <$> (js_getMin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"step\"] = $2; })"
+        js_setStep :: MediaSettingsRange -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-step MediaSettingsRange.step specification>
+setStep :: (MonadDOM m) => MediaSettingsRange -> Double -> m ()
+setStep self val = liftDOM (void ((js_setStep (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"step\"]; })"
+        js_getStep :: MediaSettingsRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-step MediaSettingsRange.step specification>
+getStep :: (MonadDOM m) => MediaSettingsRange -> m (Maybe Double)
+getStep self = liftDOM (((js_getStep (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-step MediaSettingsRange.step specification>
+getStepUnsafe :: (MonadDOM m, HasCallStack) => MediaSettingsRange -> m Double
+getStepUnsafe self = liftDOM ((((js_getStep (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-step MediaSettingsRange.step specification>
+getStepUnchecked :: (MonadDOM m) => MediaSettingsRange -> m Double
+getStepUnchecked self = liftDOM ((pFromJSVal <$> (js_getStep (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
@@ -1,160 +1,121 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaSource
-       (js_newMediaSource, newMediaSource, js_addSourceBuffer,
-        addSourceBuffer, addSourceBuffer_, js_removeSourceBuffer,
-        removeSourceBuffer, js_endOfStream, endOfStream,
-        js_isTypeSupported, isTypeSupported, isTypeSupported_,
-        js_setLiveSeekableRange, setLiveSeekableRange,
-        js_clearLiveSeekableRange, clearLiveSeekableRange,
-        js_getSourceBuffers, getSourceBuffers, js_getActiveSourceBuffers,
-        getActiveSourceBuffers, js_setDuration, setDuration,
-        js_getDuration, getDuration, js_getReadyState, getReadyState,
-        sourceopen, sourceended, sourceclose, MediaSource(..),
-        gTypeMediaSource)
+       (js_newMediaSource, js_addSourceBuffer, js_clearLiveSeekableRange, js_endOfStream, js_removeSourceBuffer, js_setLiveSeekableRange, js_isTypeSupported, js_getHandle, js_getSourceBuffers, js_getActiveSourceBuffers, js_getReadyState, js_setDuration, js_getDuration, js_getCanConstructInDedicatedWorkerStatic, newMediaSource, addSourceBuffer, addSourceBuffer_, clearLiveSeekableRange, endOfStream, removeSourceBuffer, setLiveSeekableRange, isTypeSupported, isTypeSupported_, getHandle, getSourceBuffers, getActiveSourceBuffers, getReadyState, setDuration, getDuration, getCanConstructInDedicatedWorkerStatic, sourceopen, sourceended, sourceclose, MediaSource(..), gTypeMediaSource)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"MediaSource\"](); })"
+
+foreign import javascript safe "(() => { return new globalThis[\"MediaSource\"](); })"
         js_newMediaSource :: IO MediaSource
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/MediaSource MDN MediaSource. documentation>
+newMediaSource :: (MonadDOM m) => m MediaSource
+newMediaSource = liftDOM ((js_newMediaSource))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation> 
-newMediaSource :: (MonadIO m) => m MediaSource
-newMediaSource = liftIO (js_newMediaSource)
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"addSourceBuffer\"]($2); })"
         js_addSourceBuffer :: MediaSource -> JSString -> IO SourceBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/addSourceBuffer MDN MediaSource.addSourceBuffer documentation>
+addSourceBuffer :: (MonadDOM m, ToJSString type') => MediaSource -> type' -> m SourceBuffer
+addSourceBuffer self type' = liftDOM ((js_addSourceBuffer (self) (toJSString type')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
-addSourceBuffer ::
-                (MonadIO m, ToJSString type') =>
-                  MediaSource -> type' -> m SourceBuffer
-addSourceBuffer self type'
-  = liftIO (js_addSourceBuffer self (toJSString type'))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/addSourceBuffer MDN MediaSource.addSourceBuffer documentation>
+addSourceBuffer_ :: (MonadDOM m, ToJSString type') => MediaSource -> type' -> m ()
+addSourceBuffer_ self type' = liftDOM (void ((js_addSourceBuffer (self) (toJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
-addSourceBuffer_ ::
-                 (MonadIO m, ToJSString type') => MediaSource -> type' -> m ()
-addSourceBuffer_ self type'
-  = liftIO (void (js_addSourceBuffer self (toJSString type')))
- 
+foreign import javascript safe "(($1) => { return $1[\"clearLiveSeekableRange\"](); })"
+        js_clearLiveSeekableRange :: MediaSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/clearLiveSeekableRange MDN MediaSource.clearLiveSeekableRange documentation>
+clearLiveSeekableRange :: (MonadDOM m) => MediaSource -> m ()
+clearLiveSeekableRange self = liftDOM (void ((js_clearLiveSeekableRange (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"endOfStream\"]($2); })"
+        js_endOfStream :: MediaSource -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/endOfStream MDN MediaSource.endOfStream documentation>
+endOfStream :: (MonadDOM m) => MediaSource -> Maybe EndOfStreamError -> m ()
+endOfStream self error = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal error) >>= \a2' -> js_endOfStream (self) a2')))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeSourceBuffer\"]($2); })"
         js_removeSourceBuffer :: MediaSource -> SourceBuffer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/removeSourceBuffer MDN MediaSource.removeSourceBuffer documentation>
+removeSourceBuffer :: (MonadDOM m) => MediaSource -> SourceBuffer -> m ()
+removeSourceBuffer self sourceBuffer = liftDOM (void ((js_removeSourceBuffer (self) (sourceBuffer))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.removeSourceBuffer Mozilla MediaSource.removeSourceBuffer documentation> 
-removeSourceBuffer ::
-                   (MonadIO m) => MediaSource -> SourceBuffer -> m ()
-removeSourceBuffer self buffer
-  = liftIO (js_removeSourceBuffer self buffer)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"endOfStream\"]($2); })"
-        js_endOfStream :: MediaSource -> Optional EndOfStreamError -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setLiveSeekableRange\"]($2, $3); })"
+        js_setLiveSeekableRange :: MediaSource -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/setLiveSeekableRange MDN MediaSource.setLiveSeekableRange documentation>
+setLiveSeekableRange :: (MonadDOM m) => MediaSource -> Double -> Double -> m ()
+setLiveSeekableRange self start end = liftDOM (void ((js_setLiveSeekableRange (self) (start) (end))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.endOfStream Mozilla MediaSource.endOfStream documentation> 
-endOfStream ::
-            (MonadIO m) => MediaSource -> Maybe EndOfStreamError -> m ()
-endOfStream self error
-  = liftIO (js_endOfStream self (maybeToOptional error))
- 
-foreign import javascript unsafe
-        "(($1) => { return (window[\"MediaSource\"][\"isTypeSupported\"]($1) ? 1 : 0); })"
+foreign import javascript safe "(($1) => { return globalThis[\"MediaSource\"][\"isTypeSupported\"]($1); })"
         js_isTypeSupported :: JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
-isTypeSupported :: (MonadIO m, ToJSString type') => type' -> m Bool
-isTypeSupported type'
-  = liftIO (js_isTypeSupported (toJSString type'))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/isTypeSupported_static MDN MediaSource.isTypeSupported documentation>
+isTypeSupported :: (MonadDOM m, ToJSString type') => type' -> m Bool
+isTypeSupported type' = liftDOM ((js_isTypeSupported (toJSString type')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
-isTypeSupported_ :: (MonadIO m, ToJSString type') => type' -> m ()
-isTypeSupported_ type'
-  = liftIO (void (js_isTypeSupported (toJSString type')))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"setLiveSeekableRange\"]($2,\n$3); })" js_setLiveSeekableRange ::
-        MediaSource -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/isTypeSupported_static MDN MediaSource.isTypeSupported documentation>
+isTypeSupported_ :: (MonadDOM m, ToJSString type') => type' -> m ()
+isTypeSupported_ type' = liftDOM (void ((js_isTypeSupported (toJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.setLiveSeekableRange Mozilla MediaSource.setLiveSeekableRange documentation> 
-setLiveSeekableRange ::
-                     (MonadIO m) => MediaSource -> Double -> Double -> m ()
-setLiveSeekableRange self start end
-  = liftIO (js_setLiveSeekableRange self start end)
- 
-foreign import javascript safe "(($1) => { return $1[\"clearLiveSeekableRange\"](); })"
-        js_clearLiveSeekableRange :: MediaSource -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"handle\"]; })"
+        js_getHandle :: MediaSource -> IO MediaSourceHandle
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/handle MDN MediaSource.handle documentation>
+getHandle :: (MonadDOM m) => MediaSource -> m MediaSourceHandle
+getHandle self = liftDOM ((js_getHandle (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.clearLiveSeekableRange Mozilla MediaSource.clearLiveSeekableRange documentation> 
-clearLiveSeekableRange :: (MonadIO m) => MediaSource -> m ()
-clearLiveSeekableRange self
-  = liftIO (js_clearLiveSeekableRange self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffers\"]; })"
         js_getSourceBuffers :: MediaSource -> IO SourceBufferList
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/sourceBuffers MDN MediaSource.sourceBuffers documentation>
+getSourceBuffers :: (MonadDOM m) => MediaSource -> m SourceBufferList
+getSourceBuffers self = liftDOM ((js_getSourceBuffers (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.sourceBuffers Mozilla MediaSource.sourceBuffers documentation> 
-getSourceBuffers ::
-                 (MonadIO m) => MediaSource -> m SourceBufferList
-getSourceBuffers self = liftIO (js_getSourceBuffers self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"activeSourceBuffers\"]; })"
         js_getActiveSourceBuffers :: MediaSource -> IO SourceBufferList
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/activeSourceBuffers MDN MediaSource.activeSourceBuffers documentation>
+getActiveSourceBuffers :: (MonadDOM m) => MediaSource -> m SourceBufferList
+getActiveSourceBuffers self = liftDOM ((js_getActiveSourceBuffers (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.activeSourceBuffers Mozilla MediaSource.activeSourceBuffers documentation> 
-getActiveSourceBuffers ::
-                       (MonadIO m) => MediaSource -> m SourceBufferList
-getActiveSourceBuffers self
-  = liftIO (js_getActiveSourceBuffers self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: MediaSource -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/readyState MDN MediaSource.readyState documentation>
+getReadyState :: (MonadDOM m) => MediaSource -> m ReadyState
+getReadyState self = liftDOM (((js_getReadyState (self)) >>= fromJSValUnchecked))
+
 foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
         js_setDuration :: MediaSource -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
-setDuration :: (MonadIO m) => MediaSource -> Double -> m ()
-setDuration self val = liftIO (js_setDuration self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
-        :: MediaSource -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/duration MDN MediaSource.duration documentation>
+setDuration :: (MonadDOM m) => MediaSource -> Double -> m ()
+setDuration self val = liftDOM (void ((js_setDuration (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
-getDuration :: (MonadIO m) => MediaSource -> m Double
-getDuration self = liftIO (js_getDuration self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
-        js_getReadyState :: MediaSource -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: MediaSource -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/duration MDN MediaSource.duration documentation>
+getDuration :: (MonadDOM m) => MediaSource -> m Double
+getDuration self = liftDOM ((js_getDuration (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.readyState Mozilla MediaSource.readyState documentation> 
-getReadyState :: (MonadIO m) => MediaSource -> m ReadyState
-getReadyState self
-  = liftIO ((js_getReadyState self) >>= fromJSValUnchecked)
+foreign import javascript unsafe "(() => { return globalThis[\"MediaSource\"][\"canConstructInDedicatedWorker\"]; })"
+        js_getCanConstructInDedicatedWorkerStatic :: IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/canConstructInDedicatedWorker_static MDN MediaSource.canConstructInDedicatedWorker documentation>
+getCanConstructInDedicatedWorkerStatic :: (MonadDOM m) => m Bool
+getCanConstructInDedicatedWorkerStatic = liftDOM ((js_getCanConstructInDedicatedWorkerStatic))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceopen Mozilla MediaSource.onsourceopen documentation> 
-sourceopen :: EventName MediaSource onsourceopen
+-- | <https://w3c.github.io/media-source/#dom-mediasource-onsourceopen sourceopen event>
+sourceopen :: EventName MediaSource Event
 sourceopen = unsafeEventName (toJSString "sourceopen")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceended Mozilla MediaSource.onsourceended documentation> 
-sourceended :: EventName MediaSource onsourceended
+-- | <https://w3c.github.io/media-source/#dom-mediasource-onsourceended sourceended event>
+sourceended :: EventName MediaSource Event
 sourceended = unsafeEventName (toJSString "sourceended")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceclose Mozilla MediaSource.onsourceclose documentation> 
-sourceclose :: EventName MediaSource onsourceclose
+-- | <https://w3c.github.io/media-source/#dom-mediasource-onsourceclose sourceclose event>
+sourceclose :: EventName MediaSource Event
 sourceclose = unsafeEventName (toJSString "sourceclose")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSourceHandle.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSourceHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSourceHandle.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaSourceHandle
+       (MediaSourceHandle(..), gTypeMediaSourceHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
@@ -1,177 +1,125 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaStream
-       (js_newMediaStream, newMediaStream, js_newMediaStream',
-        newMediaStream', js_newMediaStream'', newMediaStream'',
-        js_getAudioTracks, getAudioTracks, getAudioTracks_,
-        js_getVideoTracks, getVideoTracks, getVideoTracks_, js_getTracks,
-        getTracks, getTracks_, js_getTrackById, getTrackById,
-        getTrackById_, js_addTrack, addTrack, js_removeTrack, removeTrack,
-        js_clone, clone, clone_, js_getId, getId, js_getActive, getActive,
-        addTrackEvent, removeTrackEvent, active, inactive, MediaStream(..),
-        gTypeMediaStream)
+       (js_newMediaStream, js_newMediaStream', js_newMediaStream'', js_addTrack, js_clone, js_getAudioTracks, js_getTrackById, js_getTracks, js_getVideoTracks, js_removeTrack, js_getId, js_getActive, newMediaStream, newMediaStream', newMediaStream'', addTrack, clone, clone_, getAudioTracks, getAudioTracks_, getTrackById, getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked, getTracks, getTracks_, getVideoTracks, getVideoTracks_, removeTrack, getId, getActive, addTrackEvent, removeTrackEvent, MediaStream(..), gTypeMediaStream)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"webkitMediaStream\"](); })" js_newMediaStream ::
-        IO MediaStream
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
-newMediaStream :: (MonadIO m) => m MediaStream
-newMediaStream = liftIO (js_newMediaStream)
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"webkitMediaStream\"]($1); })" js_newMediaStream' ::
-        MediaStream -> IO MediaStream
+foreign import javascript safe "(() => { return new globalThis[\"MediaStream\"](); })"
+        js_newMediaStream :: IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/MediaStream MDN MediaStream. documentation>
+newMediaStream :: (MonadDOM m) => m MediaStream
+newMediaStream = liftDOM ((js_newMediaStream))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
-newMediaStream' :: (MonadIO m) => MediaStream -> m MediaStream
-newMediaStream' stream = liftIO (js_newMediaStream' stream)
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"webkitMediaStream\"]($1); })" js_newMediaStream'' ::
-        JSVal -> IO MediaStream
+foreign import javascript safe "(($1) => { return new globalThis[\"MediaStream\"]($1); })"
+        js_newMediaStream' :: MediaStream -> IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/MediaStream MDN MediaStream. documentation>
+newMediaStream' :: (MonadDOM m) => MediaStream -> m MediaStream
+newMediaStream' stream = liftDOM ((js_newMediaStream' (stream)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
-newMediaStream'' ::
-                 (MonadIO m, IsMediaStreamTrack tracks) => [tracks] -> m MediaStream
-newMediaStream'' tracks
-  = liftIO
-      (toJSVal tracks >>= \ tracks' -> js_newMediaStream'' tracks')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getAudioTracks\"](); })"
-        js_getAudioTracks :: MediaStream -> IO JSVal
+foreign import javascript safe "(($1) => { return new globalThis[\"MediaStream\"]($1); })"
+        js_newMediaStream'' :: JSVal -> IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/MediaStream MDN MediaStream. documentation>
+newMediaStream'' :: (MonadDOM m, IsMediaStreamTrack tracks) => [tracks] -> m MediaStream
+newMediaStream'' tracks = liftDOM (((toJSVal tracks) >>= \a1' -> js_newMediaStream'' a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getAudioTracks Mozilla webkitMediaStream.getAudioTracks documentation> 
-getAudioTracks ::
-               (MonadIO m) => MediaStream -> m [MediaStreamTrack]
-getAudioTracks self
-  = liftIO ((js_getAudioTracks self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1, $2) => { return $1[\"addTrack\"]($2); })"
+        js_addTrack :: MediaStream -> MediaStreamTrack -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/addTrack MDN MediaStream.addTrack documentation>
+addTrack :: (MonadDOM m, IsMediaStreamTrack track) => MediaStream -> track -> m ()
+addTrack self track = liftDOM (void ((js_addTrack (self) (Types.toMediaStreamTrack track))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getAudioTracks Mozilla webkitMediaStream.getAudioTracks documentation> 
-getAudioTracks_ :: (MonadIO m) => MediaStream -> m ()
-getAudioTracks_ self = liftIO (void (js_getAudioTracks self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getVideoTracks\"](); })"
-        js_getVideoTracks :: MediaStream -> IO JSVal
+foreign import javascript safe "(($1) => { return $1[\"clone\"](); })"
+        js_clone :: MediaStream -> IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/clone MDN MediaStream.clone documentation>
+clone :: (MonadDOM m) => MediaStream -> m MediaStream
+clone self = liftDOM ((js_clone (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getVideoTracks Mozilla webkitMediaStream.getVideoTracks documentation> 
-getVideoTracks ::
-               (MonadIO m) => MediaStream -> m [MediaStreamTrack]
-getVideoTracks self
-  = liftIO ((js_getVideoTracks self) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/clone MDN MediaStream.clone documentation>
+clone_ :: (MonadDOM m) => MediaStream -> m ()
+clone_ self = liftDOM (void ((js_clone (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getVideoTracks Mozilla webkitMediaStream.getVideoTracks documentation> 
-getVideoTracks_ :: (MonadIO m) => MediaStream -> m ()
-getVideoTracks_ self = liftIO (void (js_getVideoTracks self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getTracks\"](); })" js_getTracks
-        :: MediaStream -> IO JSVal
+foreign import javascript safe "(($1) => { return $1[\"getAudioTracks\"](); })"
+        js_getAudioTracks :: MediaStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getAudioTracks MDN MediaStream.getAudioTracks documentation>
+getAudioTracks :: (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
+getAudioTracks self = liftDOM (((js_getAudioTracks (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTracks Mozilla webkitMediaStream.getTracks documentation> 
-getTracks :: (MonadIO m) => MediaStream -> m [MediaStreamTrack]
-getTracks self
-  = liftIO ((js_getTracks self) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getAudioTracks MDN MediaStream.getAudioTracks documentation>
+getAudioTracks_ :: (MonadDOM m) => MediaStream -> m ()
+getAudioTracks_ self = liftDOM (void ((js_getAudioTracks (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTracks Mozilla webkitMediaStream.getTracks documentation> 
-getTracks_ :: (MonadIO m) => MediaStream -> m ()
-getTracks_ self = liftIO (void (js_getTracks self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
-        js_getTrackById :: MediaStream -> JSString -> IO MediaStreamTrack
+foreign import javascript safe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: MediaStream -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTrackById MDN MediaStream.getTrackById documentation>
+getTrackById :: (MonadDOM m, ToJSString trackId) => MediaStream -> trackId -> m (Maybe MediaStreamTrack)
+getTrackById self trackId = liftDOM (((js_getTrackById (self) (toJSString trackId)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
-getTrackById ::
-             (MonadIO m, ToJSString trackId) =>
-               MediaStream -> trackId -> m MediaStreamTrack
-getTrackById self trackId
-  = liftIO (js_getTrackById self (toJSString trackId))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTrackById MDN MediaStream.getTrackById documentation>
+getTrackById_ :: (MonadDOM m, ToJSString trackId) => MediaStream -> trackId -> m ()
+getTrackById_ self trackId = liftDOM (void ((js_getTrackById (self) (toJSString trackId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
-getTrackById_ ::
-              (MonadIO m, ToJSString trackId) => MediaStream -> trackId -> m ()
-getTrackById_ self trackId
-  = liftIO (void (js_getTrackById self (toJSString trackId)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"addTrack\"]($2); })" js_addTrack
-        :: MediaStream -> MediaStreamTrack -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTrackById MDN MediaStream.getTrackById documentation>
+getTrackByIdUnsafe :: (MonadDOM m, ToJSString trackId, HasCallStack) => MediaStream -> trackId -> m MediaStreamTrack
+getTrackByIdUnsafe self trackId = liftDOM ((((js_getTrackById (self) (toJSString trackId)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.addTrack Mozilla webkitMediaStream.addTrack documentation> 
-addTrack ::
-         (MonadIO m, IsMediaStreamTrack track) =>
-           MediaStream -> track -> m ()
-addTrack self track
-  = liftIO (js_addTrack self (toMediaStreamTrack track))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"removeTrack\"]($2); })"
-        js_removeTrack :: MediaStream -> MediaStreamTrack -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTrackById MDN MediaStream.getTrackById documentation>
+getTrackByIdUnchecked :: (MonadDOM m, ToJSString trackId) => MediaStream -> trackId -> m MediaStreamTrack
+getTrackByIdUnchecked self trackId = liftDOM ((pFromJSVal <$> (js_getTrackById (self) (toJSString trackId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.removeTrack Mozilla webkitMediaStream.removeTrack documentation> 
-removeTrack ::
-            (MonadIO m, IsMediaStreamTrack track) =>
-              MediaStream -> track -> m ()
-removeTrack self track
-  = liftIO (js_removeTrack self (toMediaStreamTrack track))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clone\"](); })" js_clone ::
-        MediaStream -> IO MediaStream
+foreign import javascript safe "(($1) => { return $1[\"getTracks\"](); })"
+        js_getTracks :: MediaStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTracks MDN MediaStream.getTracks documentation>
+getTracks :: (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
+getTracks self = liftDOM (((js_getTracks (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
-clone :: (MonadIO m) => MediaStream -> m MediaStream
-clone self = liftIO (js_clone self)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTracks MDN MediaStream.getTracks documentation>
+getTracks_ :: (MonadDOM m) => MediaStream -> m ()
+getTracks_ self = liftDOM (void ((js_getTracks (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
-clone_ :: (MonadIO m) => MediaStream -> m ()
-clone_ self = liftIO (void (js_clone self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        MediaStream -> IO JSString
+foreign import javascript safe "(($1) => { return $1[\"getVideoTracks\"](); })"
+        js_getVideoTracks :: MediaStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getVideoTracks MDN MediaStream.getVideoTracks documentation>
+getVideoTracks :: (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
+getVideoTracks self = liftDOM (((js_getVideoTracks (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.id Mozilla webkitMediaStream.id documentation> 
-getId ::
-      (MonadIO m, FromJSString result) => MediaStream -> m result
-getId self = liftIO (fromJSString <$> (js_getId self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"active\"] ? 1 : 0); })"
-        js_getActive :: MediaStream -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getVideoTracks MDN MediaStream.getVideoTracks documentation>
+getVideoTracks_ :: (MonadDOM m) => MediaStream -> m ()
+getVideoTracks_ self = liftDOM (void ((js_getVideoTracks (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.active Mozilla webkitMediaStream.active documentation> 
-getActive :: (MonadIO m) => MediaStream -> m Bool
-getActive self = liftIO (js_getActive self)
+foreign import javascript safe "(($1, $2) => { return $1[\"removeTrack\"]($2); })"
+        js_removeTrack :: MediaStream -> MediaStreamTrack -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/removeTrack MDN MediaStream.removeTrack documentation>
+removeTrack :: (MonadDOM m, IsMediaStreamTrack track) => MediaStream -> track -> m ()
+removeTrack self track = liftDOM (void ((js_removeTrack (self) (Types.toMediaStreamTrack track))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onaddtrack Mozilla webkitMediaStream.onaddtrack documentation> 
-addTrackEvent :: EventName MediaStream Event
-addTrackEvent = unsafeEventName (toJSString "addtrack")
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: MediaStream -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/id MDN MediaStream.id documentation>
+getId :: (MonadDOM m, FromJSString result) => MediaStream -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onremovetrack Mozilla webkitMediaStream.onremovetrack documentation> 
-removeTrackEvent :: EventName MediaStream Event
-removeTrackEvent = unsafeEventName (toJSString "removetrack")
+foreign import javascript unsafe "(($1) => { return $1[\"active\"]; })"
+        js_getActive :: MediaStream -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/active MDN MediaStream.active documentation>
+getActive :: (MonadDOM m) => MediaStream -> m Bool
+getActive self = liftDOM ((js_getActive (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onactive Mozilla webkitMediaStream.onactive documentation> 
-active :: EventName MediaStream Event
-active = unsafeEventName (toJSString "active")
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastream-onaddtrack addtrack event>
+addTrackEvent :: EventName MediaStream MediaStreamTrackEvent
+addTrackEvent = unsafeEventName (toJSString "addtrack")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.oninactive Mozilla webkitMediaStream.oninactive documentation> 
-inactive :: EventName MediaStream Event
-inactive = unsafeEventName (toJSString "inactive")
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastream-onremovetrack removetrack event>
+removeTrackEvent :: EventName MediaStream MediaStreamTrackEvent
+removeTrackEvent = unsafeEventName (toJSString "removetrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
@@ -1,35 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
-       (js_getStream, getStream, MediaStreamAudioDestinationNode(..),
-        gTypeMediaStreamAudioDestinationNode)
+       (js_newMediaStreamAudioDestinationNode, js_getStream, newMediaStreamAudioDestinationNode, getStream, MediaStreamAudioDestinationNode(..), gTypeMediaStreamAudioDestinationNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stream\"]; })" js_getStream ::
-        MediaStreamAudioDestinationNode -> IO MediaStream
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
-getStream ::
-          (MonadIO m) => MediaStreamAudioDestinationNode -> m MediaStream
-getStream self = liftIO (js_getStream self)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaStreamAudioDestinationNode\"]($1, $2); })"
+        js_newMediaStreamAudioDestinationNode :: AudioContext -> JSVal -> IO MediaStreamAudioDestinationNode
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamAudioDestinationNode/MediaStreamAudioDestinationNode MDN MediaStreamAudioDestinationNode. documentation>
+newMediaStreamAudioDestinationNode :: (MonadDOM m, IsAudioNodeOptions options) => AudioContext -> Maybe options -> m MediaStreamAudioDestinationNode
+newMediaStreamAudioDestinationNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newMediaStreamAudioDestinationNode (context) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stream\"]; })"
+        js_getStream :: MediaStreamAudioDestinationNode -> IO MediaStream
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamAudioDestinationNode/stream MDN MediaStreamAudioDestinationNode.stream documentation>
+getStream :: (MonadDOM m) => MediaStreamAudioDestinationNode -> m MediaStream
+getStream self = liftDOM ((js_getStream (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
@@ -1,35 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
-       (js_getMediaStream, getMediaStream, MediaStreamAudioSourceNode(..),
-        gTypeMediaStreamAudioSourceNode)
+       (js_newMediaStreamAudioSourceNode, js_getMediaStream, newMediaStreamAudioSourceNode, getMediaStream, MediaStreamAudioSourceNode(..), gTypeMediaStreamAudioSourceNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaStreamAudioSourceNode\"]($1, $2); })"
+        js_newMediaStreamAudioSourceNode :: AudioContext -> MediaStreamAudioSourceOptions -> IO MediaStreamAudioSourceNode
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamAudioSourceNode/MediaStreamAudioSourceNode MDN MediaStreamAudioSourceNode. documentation>
+newMediaStreamAudioSourceNode :: (MonadDOM m) => AudioContext -> MediaStreamAudioSourceOptions -> m MediaStreamAudioSourceNode
+newMediaStreamAudioSourceNode context options = liftDOM ((js_newMediaStreamAudioSourceNode (context) (options)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"mediaStream\"]; })"
         js_getMediaStream :: MediaStreamAudioSourceNode -> IO MediaStream
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
-getMediaStream ::
-               (MonadIO m) => MediaStreamAudioSourceNode -> m MediaStream
-getMediaStream self = liftIO (js_getMediaStream self)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamAudioSourceNode/mediaStream MDN MediaStreamAudioSourceNode.mediaStream documentation>
+getMediaStream :: (MonadDOM m) => MediaStreamAudioSourceNode -> m MediaStream
+getMediaStream self = liftDOM ((js_getMediaStream (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceOptions.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceOptions
+       (js_newMediaStreamAudioSourceOptions, js_setMediaStream, js_getMediaStream, newMediaStreamAudioSourceOptions, setMediaStream, getMediaStream, MediaStreamAudioSourceOptions(..), gTypeMediaStreamAudioSourceOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"mediaStream\": $1}); })"
+        js_newMediaStreamAudioSourceOptions :: MediaStream -> IO MediaStreamAudioSourceOptions
+-- | <https://webaudio.github.io/web-audio-api/#MediaStreamAudioSourceOptions MediaStreamAudioSourceOptions specification>
+newMediaStreamAudioSourceOptions :: (MonadDOM m) => MediaStream -> m MediaStreamAudioSourceOptions
+newMediaStreamAudioSourceOptions mediaStream = liftDOM ((js_newMediaStreamAudioSourceOptions (mediaStream)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mediaStream\"] = $2; })"
+        js_setMediaStream :: MediaStreamAudioSourceOptions -> MediaStream -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-mediastreamaudiosourceoptions-mediastream MediaStreamAudioSourceOptions.mediaStream specification>
+setMediaStream :: (MonadDOM m) => MediaStreamAudioSourceOptions -> MediaStream -> m ()
+setMediaStream self val = liftDOM (void ((js_setMediaStream (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediaStream\"]; })"
+        js_getMediaStream :: MediaStreamAudioSourceOptions -> IO MediaStream
+-- | <https://webaudio.github.io/web-audio-api/#dom-mediastreamaudiosourceoptions-mediastream MediaStreamAudioSourceOptions.mediaStream specification>
+getMediaStream :: (MonadDOM m) => MediaStreamAudioSourceOptions -> m MediaStream
+getMediaStream self = liftDOM ((js_getMediaStream (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamConstraints.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamConstraints.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaStreamConstraints
+       (js_newMediaStreamConstraints, js_setVideo, js_getVideo, js_setAudio, js_getAudio, js_setSemantics, js_getSemantics, js_setPreferCurrentTab, js_getPreferCurrentTab, js_setPeerIdentity, js_getPeerIdentity, newMediaStreamConstraints, setVideo, getVideo, getVideoUnsafe, getVideoUnchecked, setAudio, getAudio, getAudioUnsafe, getAudioUnchecked, setSemantics, getSemantics, getSemanticsUnsafe, getSemanticsUnchecked, setPreferCurrentTab, getPreferCurrentTab, getPreferCurrentTabUnsafe, getPreferCurrentTabUnchecked, setPeerIdentity, getPeerIdentity, getPeerIdentityUnsafe, getPeerIdentityUnchecked, MediaStreamConstraints(..), gTypeMediaStreamConstraints)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaStreamConstraints :: IO MediaStreamConstraints
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints MediaStreamConstraints specification>
+newMediaStreamConstraints :: (MonadDOM m) => m MediaStreamConstraints
+newMediaStreamConstraints = liftDOM ((js_newMediaStreamConstraints))
+
+foreign import javascript safe "(($1, $2) => { $1[\"video\"] = $2; })"
+        js_setVideo :: MediaStreamConstraints -> BoolOrMediaTrackConstraints -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-video MediaStreamConstraints.video specification>
+setVideo :: (MonadDOM m, IsBoolOrMediaTrackConstraints val) => MediaStreamConstraints -> val -> m ()
+setVideo self val = liftDOM (void ((js_setVideo (self) (Types.toBoolOrMediaTrackConstraints val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"video\"]; })"
+        js_getVideo :: MediaStreamConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-video MediaStreamConstraints.video specification>
+getVideo :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe BoolOrMediaTrackConstraints)
+getVideo self = liftDOM (((js_getVideo (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-video MediaStreamConstraints.video specification>
+getVideoUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m BoolOrMediaTrackConstraints
+getVideoUnsafe self = liftDOM ((((js_getVideo (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-video MediaStreamConstraints.video specification>
+getVideoUnchecked :: (MonadDOM m) => MediaStreamConstraints -> m BoolOrMediaTrackConstraints
+getVideoUnchecked self = liftDOM ((pFromJSVal <$> (js_getVideo (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audio\"] = $2; })"
+        js_setAudio :: MediaStreamConstraints -> BoolOrMediaTrackConstraints -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-audio MediaStreamConstraints.audio specification>
+setAudio :: (MonadDOM m, IsBoolOrMediaTrackConstraints val) => MediaStreamConstraints -> val -> m ()
+setAudio self val = liftDOM (void ((js_setAudio (self) (Types.toBoolOrMediaTrackConstraints val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audio\"]; })"
+        js_getAudio :: MediaStreamConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-audio MediaStreamConstraints.audio specification>
+getAudio :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe BoolOrMediaTrackConstraints)
+getAudio self = liftDOM (((js_getAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-audio MediaStreamConstraints.audio specification>
+getAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m BoolOrMediaTrackConstraints
+getAudioUnsafe self = liftDOM ((((js_getAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-audio MediaStreamConstraints.audio specification>
+getAudioUnchecked :: (MonadDOM m) => MediaStreamConstraints -> m BoolOrMediaTrackConstraints
+getAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"semantics\"] = $2; })"
+        js_setSemantics :: MediaStreamConstraints -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediastreamconstraints-semantics MediaStreamConstraints.semantics specification>
+setSemantics :: (MonadDOM m) => MediaStreamConstraints -> GetUserMediaSemantics -> m ()
+setSemantics self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSemantics (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"semantics\"]; })"
+        js_getSemantics :: MediaStreamConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediastreamconstraints-semantics MediaStreamConstraints.semantics specification>
+getSemantics :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe GetUserMediaSemantics)
+getSemantics self = liftDOM (((js_getSemantics (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediastreamconstraints-semantics MediaStreamConstraints.semantics specification>
+getSemanticsUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m GetUserMediaSemantics
+getSemanticsUnsafe self = liftDOM ((((js_getSemantics (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediastreamconstraints-semantics MediaStreamConstraints.semantics specification>
+getSemanticsUnchecked :: (MonadDOM m) => MediaStreamConstraints -> m GetUserMediaSemantics
+getSemanticsUnchecked self = liftDOM ((pFromJSVal <$> (js_getSemantics (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preferCurrentTab\"] = $2; })"
+        js_setPreferCurrentTab :: MediaStreamConstraints -> Bool -> IO ()
+-- | <https://wicg.github.io/prefer-current-tab/#dom-mediastreamconstraints-prefercurrenttab MediaStreamConstraints.preferCurrentTab specification>
+setPreferCurrentTab :: (MonadDOM m) => MediaStreamConstraints -> Bool -> m ()
+setPreferCurrentTab self val = liftDOM (void ((js_setPreferCurrentTab (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preferCurrentTab\"]; })"
+        js_getPreferCurrentTab :: MediaStreamConstraints -> IO JSVal
+-- | <https://wicg.github.io/prefer-current-tab/#dom-mediastreamconstraints-prefercurrenttab MediaStreamConstraints.preferCurrentTab specification>
+getPreferCurrentTab :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe Bool)
+getPreferCurrentTab self = liftDOM (((js_getPreferCurrentTab (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/prefer-current-tab/#dom-mediastreamconstraints-prefercurrenttab MediaStreamConstraints.preferCurrentTab specification>
+getPreferCurrentTabUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m Bool
+getPreferCurrentTabUnsafe self = liftDOM ((((js_getPreferCurrentTab (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/prefer-current-tab/#dom-mediastreamconstraints-prefercurrenttab MediaStreamConstraints.preferCurrentTab specification>
+getPreferCurrentTabUnchecked :: (MonadDOM m) => MediaStreamConstraints -> m Bool
+getPreferCurrentTabUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreferCurrentTab (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"peerIdentity\"] = $2; })"
+        js_setPeerIdentity :: MediaStreamConstraints -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-identity/#dom-mediastreamconstraints-peeridentity MediaStreamConstraints.peerIdentity specification>
+setPeerIdentity :: (MonadDOM m, ToJSString val) => MediaStreamConstraints -> val -> m ()
+setPeerIdentity self val = liftDOM (void ((js_setPeerIdentity (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"peerIdentity\"]; })"
+        js_getPeerIdentity :: MediaStreamConstraints -> IO JSVal
+-- | <https://w3c.github.io/webrtc-identity/#dom-mediastreamconstraints-peeridentity MediaStreamConstraints.peerIdentity specification>
+getPeerIdentity :: (MonadDOM m, FromJSString result) => MediaStreamConstraints -> m (Maybe result)
+getPeerIdentity self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPeerIdentity (self))))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-mediastreamconstraints-peeridentity MediaStreamConstraints.peerIdentity specification>
+getPeerIdentityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaStreamConstraints -> m result
+getPeerIdentityUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPeerIdentity (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-mediastreamconstraints-peeridentity MediaStreamConstraints.peerIdentity specification>
+getPeerIdentityUnchecked :: (MonadDOM m, FromJSString result) => MediaStreamConstraints -> m result
+getPeerIdentityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPeerIdentity (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs
+++ /dev/null
@@ -1,63 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.MediaStreamEvent
-       (js_newMediaStreamEvent, newMediaStreamEvent, js_getStream,
-        getStream, getStreamUnsafe, getStreamUnchecked,
-        MediaStreamEvent(..), gTypeMediaStreamEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"MediaStreamEvent\"]($1,\n$2); })" js_newMediaStreamEvent
-        :: JSString -> Optional MediaStreamEventInit -> IO MediaStreamEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation> 
-newMediaStreamEvent ::
-                    (MonadIO m, ToJSString type') =>
-                      type' -> Maybe MediaStreamEventInit -> m MediaStreamEvent
-newMediaStreamEvent type' eventInitDict
-  = liftIO
-      (js_newMediaStreamEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stream\"]; })" js_getStream ::
-        MediaStreamEvent -> IO (Nullable MediaStream)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
-getStream ::
-          (MonadIO m) => MediaStreamEvent -> m (Maybe MediaStream)
-getStream self = liftIO (nullableToMaybe <$> (js_getStream self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
-getStreamUnsafe ::
-                (MonadIO m, HasCallStack) => MediaStreamEvent -> m MediaStream
-getStreamUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getStream self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
-getStreamUnchecked ::
-                   (MonadIO m) => MediaStreamEvent -> m MediaStream
-getStreamUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getStream self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
@@ -1,206 +1,135 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaStreamTrack
-       (js_clone, clone, clone_, js_stop, stop, js_getCapabilities,
-        getCapabilities, getCapabilities_, js_getConstraints,
-        getConstraints, getConstraints_, js_getSettings, getSettings,
-        getSettings_, js_applyConstraints, applyConstraints, js_getKind,
-        getKind, js_getId, getId, js_getLabel, getLabel, js_setEnabled,
-        setEnabled, js_getEnabled, getEnabled, js_getMuted, getMuted, mute,
-        unmute, js_getReadyState, getReadyState, ended, overConstrained,
-        MediaStreamTrack(..), gTypeMediaStreamTrack, IsMediaStreamTrack,
-        toMediaStreamTrack)
+       (js_applyConstraints, js_clone, js_getCapabilities, js_getConstraints, js_getSettings, js_stop, js_getKind, js_getId, js_getLabel, js_setEnabled, js_getEnabled, js_getMuted, js_getReadyState, js_setContentHint, js_getContentHint, applyConstraints, clone, clone_, getCapabilities, getCapabilities_, getConstraints, getConstraints_, getSettings, getSettings_, stop, getKind, getId, getLabel, setEnabled, getEnabled, getMuted, getReadyState, setContentHint, getContentHint, mute, unmute, ended, MediaStreamTrack(..), gTypeMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clone\"](); })" js_clone ::
-        MediaStreamTrack -> IO MediaStreamTrack
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
-clone ::
-      (MonadIO m, IsMediaStreamTrack self) => self -> m MediaStreamTrack
-clone self = liftIO (js_clone (toMediaStreamTrack self))
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"applyConstraints\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_applyConstraints :: MediaStreamTrack -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/applyConstraints MDN MediaStreamTrack.applyConstraints documentation>
+applyConstraints :: (MonadDOM m, IsMediaStreamTrack self) => self -> Maybe MediaTrackConstraints -> m ()
+applyConstraints self constraints = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal constraints) >>= \a2' -> js_applyConstraints ((Types.toMediaStreamTrack self)) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
-clone_ :: (MonadIO m, IsMediaStreamTrack self) => self -> m ()
-clone_ self = liftIO (void (js_clone (toMediaStreamTrack self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
-        MediaStreamTrack -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"clone\"](); })"
+        js_clone :: MediaStreamTrack -> IO MediaStreamTrack
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/clone MDN MediaStreamTrack.clone documentation>
+clone :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaStreamTrack
+clone self = liftDOM ((js_clone ((Types.toMediaStreamTrack self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.stop Mozilla MediaStreamTrack.stop documentation> 
-stop :: (MonadIO m, IsMediaStreamTrack self) => self -> m ()
-stop self = liftIO (js_stop (toMediaStreamTrack self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getCapabilities\"](); })"
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/clone MDN MediaStreamTrack.clone documentation>
+clone_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+clone_ self = liftDOM (void ((js_clone ((Types.toMediaStreamTrack self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"getCapabilities\"](); })"
         js_getCapabilities :: MediaStreamTrack -> IO MediaTrackCapabilities
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities MDN MediaStreamTrack.getCapabilities documentation>
+getCapabilities :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaTrackCapabilities
+getCapabilities self = liftDOM ((js_getCapabilities ((Types.toMediaStreamTrack self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
-getCapabilities ::
-                (MonadIO m, IsMediaStreamTrack self) =>
-                  self -> m MediaTrackCapabilities
-getCapabilities self
-  = liftIO (js_getCapabilities (toMediaStreamTrack self))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities MDN MediaStreamTrack.getCapabilities documentation>
+getCapabilities_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+getCapabilities_ self = liftDOM (void ((js_getCapabilities ((Types.toMediaStreamTrack self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
-getCapabilities_ ::
-                 (MonadIO m, IsMediaStreamTrack self) => self -> m ()
-getCapabilities_ self
-  = liftIO (void (js_getCapabilities (toMediaStreamTrack self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getConstraints\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"getConstraints\"](); })"
         js_getConstraints :: MediaStreamTrack -> IO MediaTrackConstraints
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getConstraints MDN MediaStreamTrack.getConstraints documentation>
+getConstraints :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaTrackConstraints
+getConstraints self = liftDOM ((js_getConstraints ((Types.toMediaStreamTrack self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
-getConstraints ::
-               (MonadIO m, IsMediaStreamTrack self) =>
-                 self -> m MediaTrackConstraints
-getConstraints self
-  = liftIO (js_getConstraints (toMediaStreamTrack self))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getConstraints MDN MediaStreamTrack.getConstraints documentation>
+getConstraints_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+getConstraints_ self = liftDOM (void ((js_getConstraints ((Types.toMediaStreamTrack self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
-getConstraints_ ::
-                (MonadIO m, IsMediaStreamTrack self) => self -> m ()
-getConstraints_ self
-  = liftIO (void (js_getConstraints (toMediaStreamTrack self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getSettings\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"getSettings\"](); })"
         js_getSettings :: MediaStreamTrack -> IO MediaTrackSettings
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings MDN MediaStreamTrack.getSettings documentation>
+getSettings :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaTrackSettings
+getSettings self = liftDOM ((js_getSettings ((Types.toMediaStreamTrack self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSettings Mozilla MediaStreamTrack.getSettings documentation> 
-getSettings ::
-            (MonadIO m, IsMediaStreamTrack self) =>
-              self -> m MediaTrackSettings
-getSettings self
-  = liftIO (js_getSettings (toMediaStreamTrack self))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings MDN MediaStreamTrack.getSettings documentation>
+getSettings_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+getSettings_ self = liftDOM (void ((js_getSettings ((Types.toMediaStreamTrack self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSettings Mozilla MediaStreamTrack.getSettings documentation> 
-getSettings_ ::
-             (MonadIO m, IsMediaStreamTrack self) => self -> m ()
-getSettings_ self
-  = liftIO (void (js_getSettings (toMediaStreamTrack self)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"applyConstraints\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_applyConstraints ::
-        MediaStreamTrack -> Optional MediaTrackConstraints -> IO JSVal
+foreign import javascript safe "(($1) => { return $1[\"stop\"](); })"
+        js_stop :: MediaStreamTrack -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/stop MDN MediaStreamTrack.stop documentation>
+stop :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+stop self = liftDOM (void ((js_stop ((Types.toMediaStreamTrack self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.applyConstraints Mozilla MediaStreamTrack.applyConstraints documentation> 
-applyConstraints ::
-                 (MonadIO m, IsMediaStreamTrack self) =>
-                   self -> Maybe MediaTrackConstraints -> m ()
-applyConstraints self constraints
-  = liftIO
-      ((js_applyConstraints (toMediaStreamTrack self)
-          (maybeToOptional constraints))
-         >>= maybeThrowPromiseRejected)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        MediaStreamTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: MediaStreamTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/kind MDN MediaStreamTrack.kind documentation>
+getKind :: (MonadDOM m, IsMediaStreamTrack self, FromJSString result) => self -> m result
+getKind self = liftDOM ((fromJSString <$> (js_getKind ((Types.toMediaStreamTrack self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.kind Mozilla MediaStreamTrack.kind documentation> 
-getKind ::
-        (MonadIO m, IsMediaStreamTrack self, FromJSString result) =>
-          self -> m result
-getKind self
-  = liftIO (fromJSString <$> (js_getKind (toMediaStreamTrack self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        MediaStreamTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: MediaStreamTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/id MDN MediaStreamTrack.id documentation>
+getId :: (MonadDOM m, IsMediaStreamTrack self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toMediaStreamTrack self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.id Mozilla MediaStreamTrack.id documentation> 
-getId ::
-      (MonadIO m, IsMediaStreamTrack self, FromJSString result) =>
-        self -> m result
-getId self
-  = liftIO (fromJSString <$> (js_getId (toMediaStreamTrack self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        MediaStreamTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: MediaStreamTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/label MDN MediaStreamTrack.label documentation>
+getLabel :: (MonadDOM m, IsMediaStreamTrack self, FromJSString result) => self -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel ((Types.toMediaStreamTrack self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.label Mozilla MediaStreamTrack.label documentation> 
-getLabel ::
-         (MonadIO m, IsMediaStreamTrack self, FromJSString result) =>
-           self -> m result
-getLabel self
-  = liftIO (fromJSString <$> (js_getLabel (toMediaStreamTrack self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"enabled\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"enabled\"] = $2; })"
         js_setEnabled :: MediaStreamTrack -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/enabled MDN MediaStreamTrack.enabled documentation>
+setEnabled :: (MonadDOM m, IsMediaStreamTrack self) => self -> Bool -> m ()
+setEnabled self val = liftDOM (void ((js_setEnabled ((Types.toMediaStreamTrack self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
-setEnabled ::
-           (MonadIO m, IsMediaStreamTrack self) => self -> Bool -> m ()
-setEnabled self val
-  = liftIO (js_setEnabled (toMediaStreamTrack self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"enabled\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"enabled\"]; })"
         js_getEnabled :: MediaStreamTrack -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/enabled MDN MediaStreamTrack.enabled documentation>
+getEnabled :: (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
+getEnabled self = liftDOM ((js_getEnabled ((Types.toMediaStreamTrack self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
-getEnabled ::
-           (MonadIO m, IsMediaStreamTrack self) => self -> m Bool
-getEnabled self = liftIO (js_getEnabled (toMediaStreamTrack self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"muted\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"muted\"]; })"
         js_getMuted :: MediaStreamTrack -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/muted MDN MediaStreamTrack.muted documentation>
+getMuted :: (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
+getMuted self = liftDOM ((js_getMuted ((Types.toMediaStreamTrack self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.muted Mozilla MediaStreamTrack.muted documentation> 
-getMuted :: (MonadIO m, IsMediaStreamTrack self) => self -> m Bool
-getMuted self = liftIO (js_getMuted (toMediaStreamTrack self))
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: MediaStreamTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/readyState MDN MediaStreamTrack.readyState documentation>
+getReadyState :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaStreamTrackState
+getReadyState self = liftDOM (((js_getReadyState ((Types.toMediaStreamTrack self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onmute Mozilla MediaStreamTrack.onmute documentation> 
-mute ::
-     (IsMediaStreamTrack self, IsEventTarget self) =>
-       EventName self Event
+foreign import javascript safe "(($1, $2) => { $1[\"contentHint\"] = $2; })"
+        js_setContentHint :: MediaStreamTrack -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/contentHint MDN MediaStreamTrack.contentHint documentation>
+setContentHint :: (MonadDOM m, IsMediaStreamTrack self, ToJSString val) => self -> val -> m ()
+setContentHint self val = liftDOM (void ((js_setContentHint ((Types.toMediaStreamTrack self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentHint\"]; })"
+        js_getContentHint :: MediaStreamTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/contentHint MDN MediaStreamTrack.contentHint documentation>
+getContentHint :: (MonadDOM m, IsMediaStreamTrack self, FromJSString result) => self -> m result
+getContentHint self = liftDOM ((fromJSString <$> (js_getContentHint ((Types.toMediaStreamTrack self)))))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack-onmute mute event>
+mute :: (IsMediaStreamTrack self, IsEventTarget self) => EventName self Event
 mute = unsafeEventName (toJSString "mute")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onunmute Mozilla MediaStreamTrack.onunmute documentation> 
-unmute ::
-       (IsMediaStreamTrack self, IsEventTarget self) =>
-         EventName self Event
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack-onunmute unmute event>
+unmute :: (IsMediaStreamTrack self, IsEventTarget self) => EventName self Event
 unmute = unsafeEventName (toJSString "unmute")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
-        js_getReadyState :: MediaStreamTrack -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.readyState Mozilla MediaStreamTrack.readyState documentation> 
-getReadyState ::
-              (MonadIO m, IsMediaStreamTrack self) =>
-                self -> m MediaStreamTrackState
-getReadyState self
-  = liftIO
-      ((js_getReadyState (toMediaStreamTrack self)) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onended Mozilla MediaStreamTrack.onended documentation> 
-ended ::
-      (IsMediaStreamTrack self, IsEventTarget self) =>
-        EventName self Event
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack-onended ended event>
+ended :: (IsMediaStreamTrack self, IsEventTarget self) => EventName self Event
 ended = unsafeEventName (toJSString "ended")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onoverconstrained Mozilla MediaStreamTrack.onoverconstrained documentation> 
-overConstrained ::
-                (IsMediaStreamTrack self, IsEventTarget self) =>
-                  EventName self Event
-overConstrained = unsafeEventName (toJSString "overconstrained")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
@@ -1,49 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
-       (js_newMediaStreamTrackEvent, newMediaStreamTrackEvent,
-        js_getTrack, getTrack, MediaStreamTrackEvent(..),
-        gTypeMediaStreamTrackEvent)
+       (js_newMediaStreamTrackEvent, js_getTrack, newMediaStreamTrackEvent, getTrack, MediaStreamTrackEvent(..), gTypeMediaStreamTrackEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"MediaStreamTrackEvent\"]($1,\n$2); })"
-        js_newMediaStreamTrackEvent ::
-        JSString -> MediaStreamTrackEventInit -> IO MediaStreamTrackEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation> 
-newMediaStreamTrackEvent ::
-                         (MonadIO m, ToJSString type') =>
-                           type' -> MediaStreamTrackEventInit -> m MediaStreamTrackEvent
-newMediaStreamTrackEvent type' eventInitDict
-  = liftIO
-      (js_newMediaStreamTrackEvent (toJSString type') eventInitDict)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        MediaStreamTrackEvent -> IO MediaStreamTrack
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MediaStreamTrackEvent\"]($1, $2); })"
+        js_newMediaStreamTrackEvent :: JSString -> MediaStreamTrackEventInit -> IO MediaStreamTrackEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrackEvent/MediaStreamTrackEvent MDN MediaStreamTrackEvent. documentation>
+newMediaStreamTrackEvent :: (MonadDOM m, ToJSString type') => type' -> MediaStreamTrackEventInit -> m MediaStreamTrackEvent
+newMediaStreamTrackEvent type' eventInitDict = liftDOM ((js_newMediaStreamTrackEvent (toJSString type') (eventInitDict)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
-getTrack ::
-         (MonadIO m) => MediaStreamTrackEvent -> m MediaStreamTrack
-getTrack self = liftIO (js_getTrack self)
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: MediaStreamTrackEvent -> IO MediaStreamTrack
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrackEvent/track MDN MediaStreamTrackEvent.track documentation>
+getTrack :: (MonadDOM m) => MediaStreamTrackEvent -> m MediaStreamTrack
+getTrack self = liftDOM ((js_getTrack (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEventInit
+       (js_newMediaStreamTrackEventInit, js_setTrack, js_getTrack, newMediaStreamTrackEventInit, setTrack, getTrack, MediaStreamTrackEventInit(..), gTypeMediaStreamTrackEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"track\": $1}); })"
+        js_newMediaStreamTrackEventInit :: MediaStreamTrack -> IO MediaStreamTrackEventInit
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrackeventinit MediaStreamTrackEventInit specification>
+newMediaStreamTrackEventInit :: (MonadDOM m, IsMediaStreamTrack track) => track -> m MediaStreamTrackEventInit
+newMediaStreamTrackEventInit track = liftDOM ((js_newMediaStreamTrackEventInit (Types.toMediaStreamTrack track)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"track\"] = $2; })"
+        js_setTrack :: MediaStreamTrackEventInit -> MediaStreamTrack -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrackeventinit-track MediaStreamTrackEventInit.track specification>
+setTrack :: (MonadDOM m, IsMediaStreamTrack val) => MediaStreamTrackEventInit -> val -> m ()
+setTrack self val = liftDOM (void ((js_setTrack (self) (Types.toMediaStreamTrack val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: MediaStreamTrackEventInit -> IO MediaStreamTrack
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrackeventinit-track MediaStreamTrackEventInit.track specification>
+getTrack :: (MonadDOM m) => MediaStreamTrackEventInit -> m MediaStreamTrack
+getTrack self = liftDOM ((js_getTrack (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackHandle.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackHandle.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackHandle
+       (MediaStreamTrackHandle(..), gTypeMediaStreamTrackHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackProcessor.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackProcessor.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackProcessor
+       (js_newMediaStreamTrackProcessor, js_getReadable, newMediaStreamTrackProcessor, getReadable, MediaStreamTrackProcessor(..), gTypeMediaStreamTrackProcessor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"MediaStreamTrackProcessor\"]($1); })"
+        js_newMediaStreamTrackProcessor :: MediaStreamTrackProcessorInit -> IO MediaStreamTrackProcessor
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrackProcessor/MediaStreamTrackProcessor MDN MediaStreamTrackProcessor. documentation>
+newMediaStreamTrackProcessor :: (MonadDOM m) => MediaStreamTrackProcessorInit -> m MediaStreamTrackProcessor
+newMediaStreamTrackProcessor init = liftDOM ((js_newMediaStreamTrackProcessor (init)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: MediaStreamTrackProcessor -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrackProcessor/readable MDN MediaStreamTrackProcessor.readable documentation>
+getReadable :: (MonadDOM m) => MediaStreamTrackProcessor -> m ReadableStream
+getReadable self = liftDOM ((js_getReadable (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackProcessorInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackProcessorInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackProcessorInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackProcessorInit
+       (js_newMediaStreamTrackProcessorInit, js_setTrack, js_getTrack, js_setMaxBufferSize, js_getMaxBufferSize, newMediaStreamTrackProcessorInit, setTrack, getTrack, setMaxBufferSize, getMaxBufferSize, getMaxBufferSizeUnsafe, getMaxBufferSizeUnchecked, MediaStreamTrackProcessorInit(..), gTypeMediaStreamTrackProcessorInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"track\": $1}); })"
+        js_newMediaStreamTrackProcessorInit :: MediaStreamTrackOrHandle -> IO MediaStreamTrackProcessorInit
+-- | <https://w3c.github.io/mediacapture-transform/#dictdef-mediastreamtrackprocessorinit MediaStreamTrackProcessorInit specification>
+newMediaStreamTrackProcessorInit :: (MonadDOM m, IsMediaStreamTrackOrHandle track) => track -> m MediaStreamTrackProcessorInit
+newMediaStreamTrackProcessorInit track = liftDOM ((js_newMediaStreamTrackProcessorInit (Types.toMediaStreamTrackOrHandle track)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"track\"] = $2; })"
+        js_setTrack :: MediaStreamTrackProcessorInit -> MediaStreamTrackOrHandle -> IO ()
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-track MediaStreamTrackProcessorInit.track specification>
+setTrack :: (MonadDOM m, IsMediaStreamTrackOrHandle val) => MediaStreamTrackProcessorInit -> val -> m ()
+setTrack self val = liftDOM (void ((js_setTrack (self) (Types.toMediaStreamTrackOrHandle val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: MediaStreamTrackProcessorInit -> IO MediaStreamTrackOrHandle
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-track MediaStreamTrackProcessorInit.track specification>
+getTrack :: (MonadDOM m) => MediaStreamTrackProcessorInit -> m MediaStreamTrackOrHandle
+getTrack self = liftDOM ((js_getTrack (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxBufferSize\"] = $2; })"
+        js_setMaxBufferSize :: MediaStreamTrackProcessorInit -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-maxbuffersize MediaStreamTrackProcessorInit.maxBufferSize specification>
+setMaxBufferSize :: (MonadDOM m) => MediaStreamTrackProcessorInit -> Word -> m ()
+setMaxBufferSize self val = liftDOM (void ((js_setMaxBufferSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxBufferSize\"]; })"
+        js_getMaxBufferSize :: MediaStreamTrackProcessorInit -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-maxbuffersize MediaStreamTrackProcessorInit.maxBufferSize specification>
+getMaxBufferSize :: (MonadDOM m) => MediaStreamTrackProcessorInit -> m (Maybe Word)
+getMaxBufferSize self = liftDOM (((js_getMaxBufferSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-maxbuffersize MediaStreamTrackProcessorInit.maxBufferSize specification>
+getMaxBufferSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamTrackProcessorInit -> m Word
+getMaxBufferSizeUnsafe self = liftDOM ((((js_getMaxBufferSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-maxbuffersize MediaStreamTrackProcessorInit.maxBufferSize specification>
+getMaxBufferSizeUnchecked :: (MonadDOM m) => MediaStreamTrackProcessorInit -> m Word
+getMaxBufferSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxBufferSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaTrackCapabilities.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackCapabilities.hs
@@ -0,0 +1,883 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaTrackCapabilities
+       (js_newMediaTrackCapabilities, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setAspectRatio, js_getAspectRatio, js_setFrameRate, js_getFrameRate, js_setFacingMode, js_getFacingMode, js_setResizeMode, js_getResizeMode, js_setSampleRate, js_getSampleRate, js_setSampleSize, js_getSampleSize, js_setEchoCancellation, js_getEchoCancellation, js_setAutoGainControl, js_getAutoGainControl, js_setNoiseSuppression, js_getNoiseSuppression, js_setLatency, js_getLatency, js_setChannelCount, js_getChannelCount, js_setDeviceId, js_getDeviceId, js_setGroupId, js_getGroupId, js_setBackgroundBlur, js_getBackgroundBlur, js_setWhiteBalanceMode, js_getWhiteBalanceMode, js_setExposureMode, js_getExposureMode, js_setFocusMode, js_getFocusMode, js_setExposureCompensation, js_getExposureCompensation, js_setExposureTime, js_getExposureTime, js_setColorTemperature, js_getColorTemperature, js_setIso, js_getIso, js_setBrightness, js_getBrightness, js_setContrast, js_getContrast, js_setSaturation, js_getSaturation, js_setSharpness, js_getSharpness, js_setFocusDistance, js_getFocusDistance, js_setPan, js_getPan, js_setTilt, js_getTilt, js_setZoom, js_getZoom, js_setTorch, js_getTorch, js_setPowerEfficient, js_getPowerEfficient, js_setPowerEfficientPixelFormat, js_getPowerEfficientPixelFormat, js_setGestureReactions, js_getGestureReactions, js_setFaceFraming, js_getFaceFraming, js_setEyeGazeCorrection, js_getEyeGazeCorrection, js_setVoiceIsolation, js_getVoiceIsolation, js_setHumanFaceDetectionMode, js_getHumanFaceDetectionMode, js_setBackgroundSegmentationMask, js_getBackgroundSegmentationMask, js_setDisplaySurface, js_getDisplaySurface, js_setLogicalSurface, js_getLogicalSurface, js_setCursor, js_getCursor, newMediaTrackCapabilities, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setAspectRatio, getAspectRatio, getAspectRatioUnsafe, getAspectRatioUnchecked, setFrameRate, getFrameRate, getFrameRateUnsafe, getFrameRateUnchecked, setFacingMode, getFacingMode, getFacingModeUnsafe, getFacingModeUnchecked, setResizeMode, getResizeMode, getResizeModeUnsafe, getResizeModeUnchecked, setSampleRate, getSampleRate, getSampleRateUnsafe, getSampleRateUnchecked, setSampleSize, getSampleSize, getSampleSizeUnsafe, getSampleSizeUnchecked, setEchoCancellation, getEchoCancellation, getEchoCancellationUnsafe, getEchoCancellationUnchecked, setAutoGainControl, getAutoGainControl, getAutoGainControlUnsafe, getAutoGainControlUnchecked, setNoiseSuppression, getNoiseSuppression, getNoiseSuppressionUnsafe, getNoiseSuppressionUnchecked, setLatency, getLatency, getLatencyUnsafe, getLatencyUnchecked, setChannelCount, getChannelCount, getChannelCountUnsafe, getChannelCountUnchecked, setDeviceId, getDeviceId, getDeviceIdUnsafe, getDeviceIdUnchecked, setGroupId, getGroupId, getGroupIdUnsafe, getGroupIdUnchecked, setBackgroundBlur, getBackgroundBlur, getBackgroundBlurUnsafe, getBackgroundBlurUnchecked, setWhiteBalanceMode, getWhiteBalanceMode, getWhiteBalanceModeUnsafe, getWhiteBalanceModeUnchecked, setExposureMode, getExposureMode, getExposureModeUnsafe, getExposureModeUnchecked, setFocusMode, getFocusMode, getFocusModeUnsafe, getFocusModeUnchecked, setExposureCompensation, getExposureCompensation, getExposureCompensationUnsafe, getExposureCompensationUnchecked, setExposureTime, getExposureTime, getExposureTimeUnsafe, getExposureTimeUnchecked, setColorTemperature, getColorTemperature, getColorTemperatureUnsafe, getColorTemperatureUnchecked, setIso, getIso, getIsoUnsafe, getIsoUnchecked, setBrightness, getBrightness, getBrightnessUnsafe, getBrightnessUnchecked, setContrast, getContrast, getContrastUnsafe, getContrastUnchecked, setSaturation, getSaturation, getSaturationUnsafe, getSaturationUnchecked, setSharpness, getSharpness, getSharpnessUnsafe, getSharpnessUnchecked, setFocusDistance, getFocusDistance, getFocusDistanceUnsafe, getFocusDistanceUnchecked, setPan, getPan, getPanUnsafe, getPanUnchecked, setTilt, getTilt, getTiltUnsafe, getTiltUnchecked, setZoom, getZoom, getZoomUnsafe, getZoomUnchecked, setTorch, getTorch, getTorchUnsafe, getTorchUnchecked, setPowerEfficient, getPowerEfficient, getPowerEfficientUnsafe, getPowerEfficientUnchecked, setPowerEfficientPixelFormat, getPowerEfficientPixelFormat, getPowerEfficientPixelFormatUnsafe, getPowerEfficientPixelFormatUnchecked, setGestureReactions, getGestureReactions, getGestureReactionsUnsafe, getGestureReactionsUnchecked, setFaceFraming, getFaceFraming, getFaceFramingUnsafe, getFaceFramingUnchecked, setEyeGazeCorrection, getEyeGazeCorrection, getEyeGazeCorrectionUnsafe, getEyeGazeCorrectionUnchecked, setVoiceIsolation, getVoiceIsolation, getVoiceIsolationUnsafe, getVoiceIsolationUnchecked, setHumanFaceDetectionMode, getHumanFaceDetectionMode, getHumanFaceDetectionModeUnsafe, getHumanFaceDetectionModeUnchecked, setBackgroundSegmentationMask, getBackgroundSegmentationMask, getBackgroundSegmentationMaskUnsafe, getBackgroundSegmentationMaskUnchecked, setDisplaySurface, getDisplaySurface, getDisplaySurfaceUnsafe, getDisplaySurfaceUnchecked, setLogicalSurface, getLogicalSurface, getLogicalSurfaceUnsafe, getLogicalSurfaceUnchecked, setCursor, getCursor, getCursorUnsafe, getCursorUnchecked, MediaTrackCapabilities(..), gTypeMediaTrackCapabilities)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaTrackCapabilities :: IO MediaTrackCapabilities
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities MediaTrackCapabilities specification>
+newMediaTrackCapabilities :: (MonadDOM m) => m MediaTrackCapabilities
+newMediaTrackCapabilities = liftDOM ((js_newMediaTrackCapabilities))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: MediaTrackCapabilities -> ULongRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-width MediaTrackCapabilities.width specification>
+setWidth :: (MonadDOM m, IsULongRange val) => MediaTrackCapabilities -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (Types.toULongRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-width MediaTrackCapabilities.width specification>
+getWidth :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-width MediaTrackCapabilities.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getWidthUnsafe self = liftDOM ((((js_getWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-width MediaTrackCapabilities.width specification>
+getWidthUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m ULongRange
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: MediaTrackCapabilities -> ULongRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-height MediaTrackCapabilities.height specification>
+setHeight :: (MonadDOM m, IsULongRange val) => MediaTrackCapabilities -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (Types.toULongRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-height MediaTrackCapabilities.height specification>
+getHeight :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-height MediaTrackCapabilities.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-height MediaTrackCapabilities.height specification>
+getHeightUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m ULongRange
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"aspectRatio\"] = $2; })"
+        js_setAspectRatio :: MediaTrackCapabilities -> DoubleRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-aspectratio MediaTrackCapabilities.aspectRatio specification>
+setAspectRatio :: (MonadDOM m, IsDoubleRange val) => MediaTrackCapabilities -> val -> m ()
+setAspectRatio self val = liftDOM (void ((js_setAspectRatio (self) (Types.toDoubleRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aspectRatio\"]; })"
+        js_getAspectRatio :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-aspectratio MediaTrackCapabilities.aspectRatio specification>
+getAspectRatio :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe DoubleRange)
+getAspectRatio self = liftDOM (((js_getAspectRatio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-aspectratio MediaTrackCapabilities.aspectRatio specification>
+getAspectRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m DoubleRange
+getAspectRatioUnsafe self = liftDOM ((((js_getAspectRatio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-aspectratio MediaTrackCapabilities.aspectRatio specification>
+getAspectRatioUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m DoubleRange
+getAspectRatioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAspectRatio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameRate\"] = $2; })"
+        js_setFrameRate :: MediaTrackCapabilities -> DoubleRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-framerate MediaTrackCapabilities.frameRate specification>
+setFrameRate :: (MonadDOM m, IsDoubleRange val) => MediaTrackCapabilities -> val -> m ()
+setFrameRate self val = liftDOM (void ((js_setFrameRate (self) (Types.toDoubleRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameRate\"]; })"
+        js_getFrameRate :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-framerate MediaTrackCapabilities.frameRate specification>
+getFrameRate :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe DoubleRange)
+getFrameRate self = liftDOM (((js_getFrameRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-framerate MediaTrackCapabilities.frameRate specification>
+getFrameRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m DoubleRange
+getFrameRateUnsafe self = liftDOM ((((js_getFrameRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-framerate MediaTrackCapabilities.frameRate specification>
+getFrameRateUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m DoubleRange
+getFrameRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"facingMode\"] = $2; })"
+        js_setFacingMode :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-facingmode MediaTrackCapabilities.facingMode specification>
+setFacingMode :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> [val] -> m ()
+setFacingMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFacingMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"facingMode\"]; })"
+        js_getFacingMode :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-facingmode MediaTrackCapabilities.facingMode specification>
+getFacingMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getFacingMode self = liftDOM (((js_getFacingMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-facingmode MediaTrackCapabilities.facingMode specification>
+getFacingModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m [result]
+getFacingModeUnsafe self = liftDOM ((((js_getFacingMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-facingmode MediaTrackCapabilities.facingMode specification>
+getFacingModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m [result]
+getFacingModeUnchecked self = liftDOM (((js_getFacingMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resizeMode\"] = $2; })"
+        js_setResizeMode :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-resizemode MediaTrackCapabilities.resizeMode specification>
+setResizeMode :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> [val] -> m ()
+setResizeMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setResizeMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resizeMode\"]; })"
+        js_getResizeMode :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-resizemode MediaTrackCapabilities.resizeMode specification>
+getResizeMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getResizeMode self = liftDOM (((js_getResizeMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-resizemode MediaTrackCapabilities.resizeMode specification>
+getResizeModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m [result]
+getResizeModeUnsafe self = liftDOM ((((js_getResizeMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-resizemode MediaTrackCapabilities.resizeMode specification>
+getResizeModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m [result]
+getResizeModeUnchecked self = liftDOM (((js_getResizeMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: MediaTrackCapabilities -> ULongRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplerate MediaTrackCapabilities.sampleRate specification>
+setSampleRate :: (MonadDOM m, IsULongRange val) => MediaTrackCapabilities -> val -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (Types.toULongRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplerate MediaTrackCapabilities.sampleRate specification>
+getSampleRate :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getSampleRate self = liftDOM (((js_getSampleRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplerate MediaTrackCapabilities.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getSampleRateUnsafe self = liftDOM ((((js_getSampleRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplerate MediaTrackCapabilities.sampleRate specification>
+getSampleRateUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m ULongRange
+getSampleRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleSize\"] = $2; })"
+        js_setSampleSize :: MediaTrackCapabilities -> ULongRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplesize MediaTrackCapabilities.sampleSize specification>
+setSampleSize :: (MonadDOM m, IsULongRange val) => MediaTrackCapabilities -> val -> m ()
+setSampleSize self val = liftDOM (void ((js_setSampleSize (self) (Types.toULongRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleSize\"]; })"
+        js_getSampleSize :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplesize MediaTrackCapabilities.sampleSize specification>
+getSampleSize :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getSampleSize self = liftDOM (((js_getSampleSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplesize MediaTrackCapabilities.sampleSize specification>
+getSampleSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getSampleSizeUnsafe self = liftDOM ((((js_getSampleSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplesize MediaTrackCapabilities.sampleSize specification>
+getSampleSizeUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m ULongRange
+getSampleSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"echoCancellation\"] = $2; })"
+        js_setEchoCancellation :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-echocancellation MediaTrackCapabilities.echoCancellation specification>
+setEchoCancellation :: (MonadDOM m, IsBoolOrString val) => MediaTrackCapabilities -> [val] -> m ()
+setEchoCancellation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEchoCancellation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"echoCancellation\"]; })"
+        js_getEchoCancellation :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-echocancellation MediaTrackCapabilities.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [BoolOrString])
+getEchoCancellation self = liftDOM (((js_getEchoCancellation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-echocancellation MediaTrackCapabilities.echoCancellation specification>
+getEchoCancellationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [BoolOrString]
+getEchoCancellationUnsafe self = liftDOM ((((js_getEchoCancellation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-echocancellation MediaTrackCapabilities.echoCancellation specification>
+getEchoCancellationUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [BoolOrString]
+getEchoCancellationUnchecked self = liftDOM (((js_getEchoCancellation (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autoGainControl\"] = $2; })"
+        js_setAutoGainControl :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-autogaincontrol MediaTrackCapabilities.autoGainControl specification>
+setAutoGainControl :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setAutoGainControl self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAutoGainControl (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autoGainControl\"]; })"
+        js_getAutoGainControl :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-autogaincontrol MediaTrackCapabilities.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getAutoGainControl self = liftDOM (((js_getAutoGainControl (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-autogaincontrol MediaTrackCapabilities.autoGainControl specification>
+getAutoGainControlUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getAutoGainControlUnsafe self = liftDOM ((((js_getAutoGainControl (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-autogaincontrol MediaTrackCapabilities.autoGainControl specification>
+getAutoGainControlUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getAutoGainControlUnchecked self = liftDOM (((js_getAutoGainControl (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"noiseSuppression\"] = $2; })"
+        js_setNoiseSuppression :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-noisesuppression MediaTrackCapabilities.noiseSuppression specification>
+setNoiseSuppression :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setNoiseSuppression self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setNoiseSuppression (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"noiseSuppression\"]; })"
+        js_getNoiseSuppression :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-noisesuppression MediaTrackCapabilities.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getNoiseSuppression self = liftDOM (((js_getNoiseSuppression (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-noisesuppression MediaTrackCapabilities.noiseSuppression specification>
+getNoiseSuppressionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getNoiseSuppressionUnsafe self = liftDOM ((((js_getNoiseSuppression (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-noisesuppression MediaTrackCapabilities.noiseSuppression specification>
+getNoiseSuppressionUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getNoiseSuppressionUnchecked self = liftDOM (((js_getNoiseSuppression (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"latency\"] = $2; })"
+        js_setLatency :: MediaTrackCapabilities -> DoubleRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-latency MediaTrackCapabilities.latency specification>
+setLatency :: (MonadDOM m, IsDoubleRange val) => MediaTrackCapabilities -> val -> m ()
+setLatency self val = liftDOM (void ((js_setLatency (self) (Types.toDoubleRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"latency\"]; })"
+        js_getLatency :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-latency MediaTrackCapabilities.latency specification>
+getLatency :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe DoubleRange)
+getLatency self = liftDOM (((js_getLatency (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-latency MediaTrackCapabilities.latency specification>
+getLatencyUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m DoubleRange
+getLatencyUnsafe self = liftDOM ((((js_getLatency (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-latency MediaTrackCapabilities.latency specification>
+getLatencyUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m DoubleRange
+getLatencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getLatency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channelCount\"] = $2; })"
+        js_setChannelCount :: MediaTrackCapabilities -> ULongRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-channelcount MediaTrackCapabilities.channelCount specification>
+setChannelCount :: (MonadDOM m, IsULongRange val) => MediaTrackCapabilities -> val -> m ()
+setChannelCount self val = liftDOM (void ((js_setChannelCount (self) (Types.toULongRange val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channelCount\"]; })"
+        js_getChannelCount :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-channelcount MediaTrackCapabilities.channelCount specification>
+getChannelCount :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getChannelCount self = liftDOM (((js_getChannelCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-channelcount MediaTrackCapabilities.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getChannelCountUnsafe self = liftDOM ((((js_getChannelCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-channelcount MediaTrackCapabilities.channelCount specification>
+getChannelCountUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m ULongRange
+getChannelCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannelCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deviceId\"] = $2; })"
+        js_setDeviceId :: MediaTrackCapabilities -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-deviceid MediaTrackCapabilities.deviceId specification>
+setDeviceId :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> val -> m ()
+setDeviceId self val = liftDOM (void ((js_setDeviceId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deviceId\"]; })"
+        js_getDeviceId :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-deviceid MediaTrackCapabilities.deviceId specification>
+getDeviceId :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe result)
+getDeviceId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDeviceId (self))))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-deviceid MediaTrackCapabilities.deviceId specification>
+getDeviceIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m result
+getDeviceIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDeviceId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-deviceid MediaTrackCapabilities.deviceId specification>
+getDeviceIdUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m result
+getDeviceIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeviceId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"groupId\"] = $2; })"
+        js_setGroupId :: MediaTrackCapabilities -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-groupid MediaTrackCapabilities.groupId specification>
+setGroupId :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> val -> m ()
+setGroupId self val = liftDOM (void ((js_setGroupId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"groupId\"]; })"
+        js_getGroupId :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-groupid MediaTrackCapabilities.groupId specification>
+getGroupId :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe result)
+getGroupId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getGroupId (self))))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-groupid MediaTrackCapabilities.groupId specification>
+getGroupIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m result
+getGroupIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getGroupId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-groupid MediaTrackCapabilities.groupId specification>
+getGroupIdUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m result
+getGroupIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getGroupId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundBlur\"] = $2; })"
+        js_setBackgroundBlur :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-backgroundblur MediaTrackCapabilities.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setBackgroundBlur self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBackgroundBlur (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundBlur\"]; })"
+        js_getBackgroundBlur :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-backgroundblur MediaTrackCapabilities.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getBackgroundBlur self = liftDOM (((js_getBackgroundBlur (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-backgroundblur MediaTrackCapabilities.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getBackgroundBlurUnsafe self = liftDOM ((((js_getBackgroundBlur (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-backgroundblur MediaTrackCapabilities.backgroundBlur specification>
+getBackgroundBlurUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getBackgroundBlurUnchecked self = liftDOM (((js_getBackgroundBlur (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"whiteBalanceMode\"] = $2; })"
+        js_setWhiteBalanceMode :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-whitebalancemode MediaTrackCapabilities.whiteBalanceMode specification>
+setWhiteBalanceMode :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> [val] -> m ()
+setWhiteBalanceMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setWhiteBalanceMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"whiteBalanceMode\"]; })"
+        js_getWhiteBalanceMode :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-whitebalancemode MediaTrackCapabilities.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getWhiteBalanceMode self = liftDOM (((js_getWhiteBalanceMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-whitebalancemode MediaTrackCapabilities.whiteBalanceMode specification>
+getWhiteBalanceModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m [result]
+getWhiteBalanceModeUnsafe self = liftDOM ((((js_getWhiteBalanceMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-whitebalancemode MediaTrackCapabilities.whiteBalanceMode specification>
+getWhiteBalanceModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m [result]
+getWhiteBalanceModeUnchecked self = liftDOM (((js_getWhiteBalanceMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureMode\"] = $2; })"
+        js_setExposureMode :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuremode MediaTrackCapabilities.exposureMode specification>
+setExposureMode :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> [val] -> m ()
+setExposureMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExposureMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureMode\"]; })"
+        js_getExposureMode :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuremode MediaTrackCapabilities.exposureMode specification>
+getExposureMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getExposureMode self = liftDOM (((js_getExposureMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuremode MediaTrackCapabilities.exposureMode specification>
+getExposureModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m [result]
+getExposureModeUnsafe self = liftDOM ((((js_getExposureMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuremode MediaTrackCapabilities.exposureMode specification>
+getExposureModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m [result]
+getExposureModeUnchecked self = liftDOM (((js_getExposureMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusMode\"] = $2; })"
+        js_setFocusMode :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusmode MediaTrackCapabilities.focusMode specification>
+setFocusMode :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> [val] -> m ()
+setFocusMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFocusMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusMode\"]; })"
+        js_getFocusMode :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusmode MediaTrackCapabilities.focusMode specification>
+getFocusMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getFocusMode self = liftDOM (((js_getFocusMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusmode MediaTrackCapabilities.focusMode specification>
+getFocusModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m [result]
+getFocusModeUnsafe self = liftDOM ((((js_getFocusMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusmode MediaTrackCapabilities.focusMode specification>
+getFocusModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m [result]
+getFocusModeUnchecked self = liftDOM (((js_getFocusMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureCompensation\"] = $2; })"
+        js_setExposureCompensation :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposurecompensation MediaTrackCapabilities.exposureCompensation specification>
+setExposureCompensation :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setExposureCompensation self val = liftDOM (void ((js_setExposureCompensation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureCompensation\"]; })"
+        js_getExposureCompensation :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposurecompensation MediaTrackCapabilities.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getExposureCompensation self = liftDOM (((js_getExposureCompensation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposurecompensation MediaTrackCapabilities.exposureCompensation specification>
+getExposureCompensationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getExposureCompensationUnsafe self = liftDOM ((((js_getExposureCompensation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposurecompensation MediaTrackCapabilities.exposureCompensation specification>
+getExposureCompensationUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getExposureCompensationUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureCompensation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureTime\"] = $2; })"
+        js_setExposureTime :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuretime MediaTrackCapabilities.exposureTime specification>
+setExposureTime :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setExposureTime self val = liftDOM (void ((js_setExposureTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureTime\"]; })"
+        js_getExposureTime :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuretime MediaTrackCapabilities.exposureTime specification>
+getExposureTime :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getExposureTime self = liftDOM (((js_getExposureTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuretime MediaTrackCapabilities.exposureTime specification>
+getExposureTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getExposureTimeUnsafe self = liftDOM ((((js_getExposureTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuretime MediaTrackCapabilities.exposureTime specification>
+getExposureTimeUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getExposureTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorTemperature\"] = $2; })"
+        js_setColorTemperature :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-colortemperature MediaTrackCapabilities.colorTemperature specification>
+setColorTemperature :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setColorTemperature self val = liftDOM (void ((js_setColorTemperature (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorTemperature\"]; })"
+        js_getColorTemperature :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-colortemperature MediaTrackCapabilities.colorTemperature specification>
+getColorTemperature :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getColorTemperature self = liftDOM (((js_getColorTemperature (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-colortemperature MediaTrackCapabilities.colorTemperature specification>
+getColorTemperatureUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getColorTemperatureUnsafe self = liftDOM ((((js_getColorTemperature (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-colortemperature MediaTrackCapabilities.colorTemperature specification>
+getColorTemperatureUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getColorTemperatureUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorTemperature (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iso\"] = $2; })"
+        js_setIso :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-iso MediaTrackCapabilities.iso specification>
+setIso :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setIso self val = liftDOM (void ((js_setIso (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iso\"]; })"
+        js_getIso :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-iso MediaTrackCapabilities.iso specification>
+getIso :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getIso self = liftDOM (((js_getIso (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-iso MediaTrackCapabilities.iso specification>
+getIsoUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getIsoUnsafe self = liftDOM ((((js_getIso (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-iso MediaTrackCapabilities.iso specification>
+getIsoUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getIsoUnchecked self = liftDOM ((pFromJSVal <$> (js_getIso (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"brightness\"] = $2; })"
+        js_setBrightness :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-brightness MediaTrackCapabilities.brightness specification>
+setBrightness :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setBrightness self val = liftDOM (void ((js_setBrightness (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"brightness\"]; })"
+        js_getBrightness :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-brightness MediaTrackCapabilities.brightness specification>
+getBrightness :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getBrightness self = liftDOM (((js_getBrightness (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-brightness MediaTrackCapabilities.brightness specification>
+getBrightnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getBrightnessUnsafe self = liftDOM ((((js_getBrightness (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-brightness MediaTrackCapabilities.brightness specification>
+getBrightnessUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getBrightnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getBrightness (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contrast\"] = $2; })"
+        js_setContrast :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-contrast MediaTrackCapabilities.contrast specification>
+setContrast :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setContrast self val = liftDOM (void ((js_setContrast (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contrast\"]; })"
+        js_getContrast :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-contrast MediaTrackCapabilities.contrast specification>
+getContrast :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getContrast self = liftDOM (((js_getContrast (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-contrast MediaTrackCapabilities.contrast specification>
+getContrastUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getContrastUnsafe self = liftDOM ((((js_getContrast (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-contrast MediaTrackCapabilities.contrast specification>
+getContrastUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getContrastUnchecked self = liftDOM ((pFromJSVal <$> (js_getContrast (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"saturation\"] = $2; })"
+        js_setSaturation :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-saturation MediaTrackCapabilities.saturation specification>
+setSaturation :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setSaturation self val = liftDOM (void ((js_setSaturation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"saturation\"]; })"
+        js_getSaturation :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-saturation MediaTrackCapabilities.saturation specification>
+getSaturation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getSaturation self = liftDOM (((js_getSaturation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-saturation MediaTrackCapabilities.saturation specification>
+getSaturationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getSaturationUnsafe self = liftDOM ((((js_getSaturation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-saturation MediaTrackCapabilities.saturation specification>
+getSaturationUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getSaturationUnchecked self = liftDOM ((pFromJSVal <$> (js_getSaturation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sharpness\"] = $2; })"
+        js_setSharpness :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-sharpness MediaTrackCapabilities.sharpness specification>
+setSharpness :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setSharpness self val = liftDOM (void ((js_setSharpness (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sharpness\"]; })"
+        js_getSharpness :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-sharpness MediaTrackCapabilities.sharpness specification>
+getSharpness :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getSharpness self = liftDOM (((js_getSharpness (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-sharpness MediaTrackCapabilities.sharpness specification>
+getSharpnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getSharpnessUnsafe self = liftDOM ((((js_getSharpness (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-sharpness MediaTrackCapabilities.sharpness specification>
+getSharpnessUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getSharpnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getSharpness (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusDistance\"] = $2; })"
+        js_setFocusDistance :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusdistance MediaTrackCapabilities.focusDistance specification>
+setFocusDistance :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setFocusDistance self val = liftDOM (void ((js_setFocusDistance (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusDistance\"]; })"
+        js_getFocusDistance :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusdistance MediaTrackCapabilities.focusDistance specification>
+getFocusDistance :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getFocusDistance self = liftDOM (((js_getFocusDistance (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusdistance MediaTrackCapabilities.focusDistance specification>
+getFocusDistanceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getFocusDistanceUnsafe self = liftDOM ((((js_getFocusDistance (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusdistance MediaTrackCapabilities.focusDistance specification>
+getFocusDistanceUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getFocusDistanceUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusDistance (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pan\"] = $2; })"
+        js_setPan :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-pan MediaTrackCapabilities.pan specification>
+setPan :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setPan self val = liftDOM (void ((js_setPan (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pan\"]; })"
+        js_getPan :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-pan MediaTrackCapabilities.pan specification>
+getPan :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getPan self = liftDOM (((js_getPan (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-pan MediaTrackCapabilities.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getPanUnsafe self = liftDOM ((((js_getPan (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-pan MediaTrackCapabilities.pan specification>
+getPanUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getPanUnchecked self = liftDOM ((pFromJSVal <$> (js_getPan (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tilt\"] = $2; })"
+        js_setTilt :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-tilt MediaTrackCapabilities.tilt specification>
+setTilt :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setTilt self val = liftDOM (void ((js_setTilt (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tilt\"]; })"
+        js_getTilt :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-tilt MediaTrackCapabilities.tilt specification>
+getTilt :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getTilt self = liftDOM (((js_getTilt (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-tilt MediaTrackCapabilities.tilt specification>
+getTiltUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getTiltUnsafe self = liftDOM ((((js_getTilt (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-tilt MediaTrackCapabilities.tilt specification>
+getTiltUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getTiltUnchecked self = liftDOM ((pFromJSVal <$> (js_getTilt (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"zoom\"] = $2; })"
+        js_setZoom :: MediaTrackCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-zoom MediaTrackCapabilities.zoom specification>
+setZoom :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setZoom self val = liftDOM (void ((js_setZoom (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"zoom\"]; })"
+        js_getZoom :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-zoom MediaTrackCapabilities.zoom specification>
+getZoom :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getZoom self = liftDOM (((js_getZoom (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-zoom MediaTrackCapabilities.zoom specification>
+getZoomUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getZoomUnsafe self = liftDOM ((((js_getZoom (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-zoom MediaTrackCapabilities.zoom specification>
+getZoomUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m MediaSettingsRange
+getZoomUnchecked self = liftDOM ((pFromJSVal <$> (js_getZoom (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"torch\"] = $2; })"
+        js_setTorch :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-torch MediaTrackCapabilities.torch specification>
+setTorch :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setTorch self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTorch (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"torch\"]; })"
+        js_getTorch :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-torch MediaTrackCapabilities.torch specification>
+getTorch :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getTorch self = liftDOM (((js_getTorch (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-torch MediaTrackCapabilities.torch specification>
+getTorchUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getTorchUnsafe self = liftDOM ((((js_getTorch (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-torch MediaTrackCapabilities.torch specification>
+getTorchUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getTorchUnchecked self = liftDOM (((js_getTorch (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerEfficient\"] = $2; })"
+        js_setPowerEfficient :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficient MediaTrackCapabilities.powerEfficient specification>
+setPowerEfficient :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setPowerEfficient self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPowerEfficient (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerEfficient\"]; })"
+        js_getPowerEfficient :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficient MediaTrackCapabilities.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getPowerEfficient self = liftDOM (((js_getPowerEfficient (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficient MediaTrackCapabilities.powerEfficient specification>
+getPowerEfficientUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getPowerEfficientUnsafe self = liftDOM ((((js_getPowerEfficient (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficient MediaTrackCapabilities.powerEfficient specification>
+getPowerEfficientUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getPowerEfficientUnchecked self = liftDOM (((js_getPowerEfficient (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerEfficientPixelFormat\"] = $2; })"
+        js_setPowerEfficientPixelFormat :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficientpixelformat MediaTrackCapabilities.powerEfficientPixelFormat specification>
+setPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setPowerEfficientPixelFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPowerEfficientPixelFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerEfficientPixelFormat\"]; })"
+        js_getPowerEfficientPixelFormat :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficientpixelformat MediaTrackCapabilities.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getPowerEfficientPixelFormat self = liftDOM (((js_getPowerEfficientPixelFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficientpixelformat MediaTrackCapabilities.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getPowerEfficientPixelFormatUnsafe self = liftDOM ((((js_getPowerEfficientPixelFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficientpixelformat MediaTrackCapabilities.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getPowerEfficientPixelFormatUnchecked self = liftDOM (((js_getPowerEfficientPixelFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gestureReactions\"] = $2; })"
+        js_setGestureReactions :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-gesturereactions MediaTrackCapabilities.gestureReactions specification>
+setGestureReactions :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setGestureReactions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setGestureReactions (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gestureReactions\"]; })"
+        js_getGestureReactions :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-gesturereactions MediaTrackCapabilities.gestureReactions specification>
+getGestureReactions :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getGestureReactions self = liftDOM (((js_getGestureReactions (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-gesturereactions MediaTrackCapabilities.gestureReactions specification>
+getGestureReactionsUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getGestureReactionsUnsafe self = liftDOM ((((js_getGestureReactions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-gesturereactions MediaTrackCapabilities.gestureReactions specification>
+getGestureReactionsUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getGestureReactionsUnchecked self = liftDOM (((js_getGestureReactions (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"faceFraming\"] = $2; })"
+        js_setFaceFraming :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-faceframing MediaTrackCapabilities.faceFraming specification>
+setFaceFraming :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setFaceFraming self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFaceFraming (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"faceFraming\"]; })"
+        js_getFaceFraming :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-faceframing MediaTrackCapabilities.faceFraming specification>
+getFaceFraming :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getFaceFraming self = liftDOM (((js_getFaceFraming (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-faceframing MediaTrackCapabilities.faceFraming specification>
+getFaceFramingUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getFaceFramingUnsafe self = liftDOM ((((js_getFaceFraming (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-faceframing MediaTrackCapabilities.faceFraming specification>
+getFaceFramingUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getFaceFramingUnchecked self = liftDOM (((js_getFaceFraming (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"eyeGazeCorrection\"] = $2; })"
+        js_setEyeGazeCorrection :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-eyegazecorrection MediaTrackCapabilities.eyeGazeCorrection specification>
+setEyeGazeCorrection :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setEyeGazeCorrection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEyeGazeCorrection (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"eyeGazeCorrection\"]; })"
+        js_getEyeGazeCorrection :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-eyegazecorrection MediaTrackCapabilities.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getEyeGazeCorrection self = liftDOM (((js_getEyeGazeCorrection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-eyegazecorrection MediaTrackCapabilities.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getEyeGazeCorrectionUnsafe self = liftDOM ((((js_getEyeGazeCorrection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-eyegazecorrection MediaTrackCapabilities.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getEyeGazeCorrectionUnchecked self = liftDOM (((js_getEyeGazeCorrection (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"voiceIsolation\"] = $2; })"
+        js_setVoiceIsolation :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-voiceisolation MediaTrackCapabilities.voiceIsolation specification>
+setVoiceIsolation :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setVoiceIsolation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setVoiceIsolation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"voiceIsolation\"]; })"
+        js_getVoiceIsolation :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-voiceisolation MediaTrackCapabilities.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getVoiceIsolation self = liftDOM (((js_getVoiceIsolation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-voiceisolation MediaTrackCapabilities.voiceIsolation specification>
+getVoiceIsolationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getVoiceIsolationUnsafe self = liftDOM ((((js_getVoiceIsolation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-voiceisolation MediaTrackCapabilities.voiceIsolation specification>
+getVoiceIsolationUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getVoiceIsolationUnchecked self = liftDOM (((js_getVoiceIsolation (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"humanFaceDetectionMode\"] = $2; })"
+        js_setHumanFaceDetectionMode :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-humanfacedetectionmode MediaTrackCapabilities.humanFaceDetectionMode specification>
+setHumanFaceDetectionMode :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> [val] -> m ()
+setHumanFaceDetectionMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHumanFaceDetectionMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"humanFaceDetectionMode\"]; })"
+        js_getHumanFaceDetectionMode :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-humanfacedetectionmode MediaTrackCapabilities.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getHumanFaceDetectionMode self = liftDOM (((js_getHumanFaceDetectionMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-humanfacedetectionmode MediaTrackCapabilities.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m [result]
+getHumanFaceDetectionModeUnsafe self = liftDOM ((((js_getHumanFaceDetectionMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-humanfacedetectionmode MediaTrackCapabilities.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m [result]
+getHumanFaceDetectionModeUnchecked self = liftDOM (((js_getHumanFaceDetectionMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundSegmentationMask\"] = $2; })"
+        js_setBackgroundSegmentationMask :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-backgroundsegmentationmask MediaTrackCapabilities.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBackgroundSegmentationMask (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundSegmentationMask\"]; })"
+        js_getBackgroundSegmentationMask :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-backgroundsegmentationmask MediaTrackCapabilities.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getBackgroundSegmentationMask self = liftDOM (((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-backgroundsegmentationmask MediaTrackCapabilities.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-backgroundsegmentationmask MediaTrackCapabilities.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m [Bool]
+getBackgroundSegmentationMaskUnchecked self = liftDOM (((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displaySurface\"] = $2; })"
+        js_setDisplaySurface :: MediaTrackCapabilities -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-displaysurface MediaTrackCapabilities.displaySurface specification>
+setDisplaySurface :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> val -> m ()
+setDisplaySurface self val = liftDOM (void ((js_setDisplaySurface (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displaySurface\"]; })"
+        js_getDisplaySurface :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-displaysurface MediaTrackCapabilities.displaySurface specification>
+getDisplaySurface :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe result)
+getDisplaySurface self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDisplaySurface (self))))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-displaysurface MediaTrackCapabilities.displaySurface specification>
+getDisplaySurfaceUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m result
+getDisplaySurfaceUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDisplaySurface (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-displaysurface MediaTrackCapabilities.displaySurface specification>
+getDisplaySurfaceUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m result
+getDisplaySurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplaySurface (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"logicalSurface\"] = $2; })"
+        js_setLogicalSurface :: MediaTrackCapabilities -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-logicalsurface MediaTrackCapabilities.logicalSurface specification>
+setLogicalSurface :: (MonadDOM m) => MediaTrackCapabilities -> Bool -> m ()
+setLogicalSurface self val = liftDOM (void ((js_setLogicalSurface (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"logicalSurface\"]; })"
+        js_getLogicalSurface :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-logicalsurface MediaTrackCapabilities.logicalSurface specification>
+getLogicalSurface :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe Bool)
+getLogicalSurface self = liftDOM (((js_getLogicalSurface (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-logicalsurface MediaTrackCapabilities.logicalSurface specification>
+getLogicalSurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m Bool
+getLogicalSurfaceUnsafe self = liftDOM ((((js_getLogicalSurface (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-logicalsurface MediaTrackCapabilities.logicalSurface specification>
+getLogicalSurfaceUnchecked :: (MonadDOM m) => MediaTrackCapabilities -> m Bool
+getLogicalSurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getLogicalSurface (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cursor\"] = $2; })"
+        js_setCursor :: MediaTrackCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-cursor MediaTrackCapabilities.cursor specification>
+setCursor :: (MonadDOM m, ToJSString val) => MediaTrackCapabilities -> [val] -> m ()
+setCursor self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCursor (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cursor\"]; })"
+        js_getCursor :: MediaTrackCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-cursor MediaTrackCapabilities.cursor specification>
+getCursor :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getCursor self = liftDOM (((js_getCursor (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-cursor MediaTrackCapabilities.cursor specification>
+getCursorUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m [result]
+getCursorUnsafe self = liftDOM ((((js_getCursor (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-cursor MediaTrackCapabilities.cursor specification>
+getCursorUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m [result]
+getCursorUnchecked self = liftDOM (((js_getCursor (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraintSet.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraintSet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraintSet.hs
@@ -0,0 +1,903 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaTrackConstraintSet
+       (js_newMediaTrackConstraintSet, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setAspectRatio, js_getAspectRatio, js_setFrameRate, js_getFrameRate, js_setFacingMode, js_getFacingMode, js_setResizeMode, js_getResizeMode, js_setSampleRate, js_getSampleRate, js_setSampleSize, js_getSampleSize, js_setEchoCancellation, js_getEchoCancellation, js_setAutoGainControl, js_getAutoGainControl, js_setNoiseSuppression, js_getNoiseSuppression, js_setLatency, js_getLatency, js_setChannelCount, js_getChannelCount, js_setDeviceId, js_getDeviceId, js_setGroupId, js_getGroupId, js_setBackgroundBlur, js_getBackgroundBlur, js_setWhiteBalanceMode, js_getWhiteBalanceMode, js_setExposureMode, js_getExposureMode, js_setFocusMode, js_getFocusMode, js_setPointsOfInterest, js_getPointsOfInterest, js_setExposureCompensation, js_getExposureCompensation, js_setExposureTime, js_getExposureTime, js_setColorTemperature, js_getColorTemperature, js_setIso, js_getIso, js_setBrightness, js_getBrightness, js_setContrast, js_getContrast, js_setSaturation, js_getSaturation, js_setSharpness, js_getSharpness, js_setFocusDistance, js_getFocusDistance, js_setPan, js_getPan, js_setTilt, js_getTilt, js_setZoom, js_getZoom, js_setTorch, js_getTorch, js_setGestureReactions, js_getGestureReactions, js_setFaceFraming, js_getFaceFraming, js_setEyeGazeCorrection, js_getEyeGazeCorrection, js_setVoiceIsolation, js_getVoiceIsolation, js_setHumanFaceDetectionMode, js_getHumanFaceDetectionMode, js_setBackgroundSegmentationMask, js_getBackgroundSegmentationMask, js_setDisplaySurface, js_getDisplaySurface, js_setLogicalSurface, js_getLogicalSurface, js_setCursor, js_getCursor, js_setRestrictOwnAudio, js_getRestrictOwnAudio, js_setSuppressLocalAudioPlayback, js_getSuppressLocalAudioPlayback, newMediaTrackConstraintSet, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setAspectRatio, getAspectRatio, getAspectRatioUnsafe, getAspectRatioUnchecked, setFrameRate, getFrameRate, getFrameRateUnsafe, getFrameRateUnchecked, setFacingMode, getFacingMode, getFacingModeUnsafe, getFacingModeUnchecked, setResizeMode, getResizeMode, getResizeModeUnsafe, getResizeModeUnchecked, setSampleRate, getSampleRate, getSampleRateUnsafe, getSampleRateUnchecked, setSampleSize, getSampleSize, getSampleSizeUnsafe, getSampleSizeUnchecked, setEchoCancellation, getEchoCancellation, getEchoCancellationUnsafe, getEchoCancellationUnchecked, setAutoGainControl, getAutoGainControl, getAutoGainControlUnsafe, getAutoGainControlUnchecked, setNoiseSuppression, getNoiseSuppression, getNoiseSuppressionUnsafe, getNoiseSuppressionUnchecked, setLatency, getLatency, getLatencyUnsafe, getLatencyUnchecked, setChannelCount, getChannelCount, getChannelCountUnsafe, getChannelCountUnchecked, setDeviceId, getDeviceId, getDeviceIdUnsafe, getDeviceIdUnchecked, setGroupId, getGroupId, getGroupIdUnsafe, getGroupIdUnchecked, setBackgroundBlur, getBackgroundBlur, getBackgroundBlurUnsafe, getBackgroundBlurUnchecked, setWhiteBalanceMode, getWhiteBalanceMode, getWhiteBalanceModeUnsafe, getWhiteBalanceModeUnchecked, setExposureMode, getExposureMode, getExposureModeUnsafe, getExposureModeUnchecked, setFocusMode, getFocusMode, getFocusModeUnsafe, getFocusModeUnchecked, setPointsOfInterest, getPointsOfInterest, getPointsOfInterestUnsafe, getPointsOfInterestUnchecked, setExposureCompensation, getExposureCompensation, getExposureCompensationUnsafe, getExposureCompensationUnchecked, setExposureTime, getExposureTime, getExposureTimeUnsafe, getExposureTimeUnchecked, setColorTemperature, getColorTemperature, getColorTemperatureUnsafe, getColorTemperatureUnchecked, setIso, getIso, getIsoUnsafe, getIsoUnchecked, setBrightness, getBrightness, getBrightnessUnsafe, getBrightnessUnchecked, setContrast, getContrast, getContrastUnsafe, getContrastUnchecked, setSaturation, getSaturation, getSaturationUnsafe, getSaturationUnchecked, setSharpness, getSharpness, getSharpnessUnsafe, getSharpnessUnchecked, setFocusDistance, getFocusDistance, getFocusDistanceUnsafe, getFocusDistanceUnchecked, setPan, getPan, getPanUnsafe, getPanUnchecked, setTilt, getTilt, getTiltUnsafe, getTiltUnchecked, setZoom, getZoom, getZoomUnsafe, getZoomUnchecked, setTorch, getTorch, getTorchUnsafe, getTorchUnchecked, setGestureReactions, getGestureReactions, getGestureReactionsUnsafe, getGestureReactionsUnchecked, setFaceFraming, getFaceFraming, getFaceFramingUnsafe, getFaceFramingUnchecked, setEyeGazeCorrection, getEyeGazeCorrection, getEyeGazeCorrectionUnsafe, getEyeGazeCorrectionUnchecked, setVoiceIsolation, getVoiceIsolation, getVoiceIsolationUnsafe, getVoiceIsolationUnchecked, setHumanFaceDetectionMode, getHumanFaceDetectionMode, getHumanFaceDetectionModeUnsafe, getHumanFaceDetectionModeUnchecked, setBackgroundSegmentationMask, getBackgroundSegmentationMask, getBackgroundSegmentationMaskUnsafe, getBackgroundSegmentationMaskUnchecked, setDisplaySurface, getDisplaySurface, getDisplaySurfaceUnsafe, getDisplaySurfaceUnchecked, setLogicalSurface, getLogicalSurface, getLogicalSurfaceUnsafe, getLogicalSurfaceUnchecked, setCursor, getCursor, getCursorUnsafe, getCursorUnchecked, setRestrictOwnAudio, getRestrictOwnAudio, getRestrictOwnAudioUnsafe, getRestrictOwnAudioUnchecked, setSuppressLocalAudioPlayback, getSuppressLocalAudioPlayback, getSuppressLocalAudioPlaybackUnsafe, getSuppressLocalAudioPlaybackUnchecked, MediaTrackConstraintSet(..), gTypeMediaTrackConstraintSet, IsMediaTrackConstraintSet, toMediaTrackConstraintSet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaTrackConstraintSet :: IO MediaTrackConstraintSet
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset MediaTrackConstraintSet specification>
+newMediaTrackConstraintSet :: (MonadDOM m) => m MediaTrackConstraintSet
+newMediaTrackConstraintSet = liftDOM ((js_newMediaTrackConstraintSet))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: MediaTrackConstraintSet -> ConstrainULong -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-width MediaTrackConstraintSet.width specification>
+setWidth :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainULong val) => self -> val -> m ()
+setWidth self val = liftDOM (void ((js_setWidth ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainULong val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-width MediaTrackConstraintSet.width specification>
+getWidth :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getWidth self = liftDOM (((js_getWidth ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-width MediaTrackConstraintSet.width specification>
+getWidthUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainULong
+getWidthUnsafe self = liftDOM ((((js_getWidth ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-width MediaTrackConstraintSet.width specification>
+getWidthUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainULong
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: MediaTrackConstraintSet -> ConstrainULong -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-height MediaTrackConstraintSet.height specification>
+setHeight :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainULong val) => self -> val -> m ()
+setHeight self val = liftDOM (void ((js_setHeight ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainULong val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-height MediaTrackConstraintSet.height specification>
+getHeight :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getHeight self = liftDOM (((js_getHeight ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-height MediaTrackConstraintSet.height specification>
+getHeightUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainULong
+getHeightUnsafe self = liftDOM ((((js_getHeight ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-height MediaTrackConstraintSet.height specification>
+getHeightUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainULong
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"aspectRatio\"] = $2; })"
+        js_setAspectRatio :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-aspectratio MediaTrackConstraintSet.aspectRatio specification>
+setAspectRatio :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setAspectRatio self val = liftDOM (void ((js_setAspectRatio ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aspectRatio\"]; })"
+        js_getAspectRatio :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-aspectratio MediaTrackConstraintSet.aspectRatio specification>
+getAspectRatio :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getAspectRatio self = liftDOM (((js_getAspectRatio ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-aspectratio MediaTrackConstraintSet.aspectRatio specification>
+getAspectRatioUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getAspectRatioUnsafe self = liftDOM ((((js_getAspectRatio ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-aspectratio MediaTrackConstraintSet.aspectRatio specification>
+getAspectRatioUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getAspectRatioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAspectRatio ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameRate\"] = $2; })"
+        js_setFrameRate :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-framerate MediaTrackConstraintSet.frameRate specification>
+setFrameRate :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setFrameRate self val = liftDOM (void ((js_setFrameRate ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameRate\"]; })"
+        js_getFrameRate :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-framerate MediaTrackConstraintSet.frameRate specification>
+getFrameRate :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getFrameRate self = liftDOM (((js_getFrameRate ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-framerate MediaTrackConstraintSet.frameRate specification>
+getFrameRateUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getFrameRateUnsafe self = liftDOM ((((js_getFrameRate ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-framerate MediaTrackConstraintSet.frameRate specification>
+getFrameRateUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getFrameRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameRate ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"facingMode\"] = $2; })"
+        js_setFacingMode :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-facingmode MediaTrackConstraintSet.facingMode specification>
+setFacingMode :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setFacingMode self val = liftDOM (void ((js_setFacingMode ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"facingMode\"]; })"
+        js_getFacingMode :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-facingmode MediaTrackConstraintSet.facingMode specification>
+getFacingMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getFacingMode self = liftDOM (((js_getFacingMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-facingmode MediaTrackConstraintSet.facingMode specification>
+getFacingModeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getFacingModeUnsafe self = liftDOM ((((js_getFacingMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-facingmode MediaTrackConstraintSet.facingMode specification>
+getFacingModeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getFacingModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFacingMode ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resizeMode\"] = $2; })"
+        js_setResizeMode :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-resizemode MediaTrackConstraintSet.resizeMode specification>
+setResizeMode :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setResizeMode self val = liftDOM (void ((js_setResizeMode ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resizeMode\"]; })"
+        js_getResizeMode :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-resizemode MediaTrackConstraintSet.resizeMode specification>
+getResizeMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getResizeMode self = liftDOM (((js_getResizeMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-resizemode MediaTrackConstraintSet.resizeMode specification>
+getResizeModeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getResizeModeUnsafe self = liftDOM ((((js_getResizeMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-resizemode MediaTrackConstraintSet.resizeMode specification>
+getResizeModeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getResizeModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getResizeMode ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: MediaTrackConstraintSet -> ConstrainULong -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplerate MediaTrackConstraintSet.sampleRate specification>
+setSampleRate :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainULong val) => self -> val -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainULong val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplerate MediaTrackConstraintSet.sampleRate specification>
+getSampleRate :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getSampleRate self = liftDOM (((js_getSampleRate ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplerate MediaTrackConstraintSet.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainULong
+getSampleRateUnsafe self = liftDOM ((((js_getSampleRate ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplerate MediaTrackConstraintSet.sampleRate specification>
+getSampleRateUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainULong
+getSampleRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleRate ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleSize\"] = $2; })"
+        js_setSampleSize :: MediaTrackConstraintSet -> ConstrainULong -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplesize MediaTrackConstraintSet.sampleSize specification>
+setSampleSize :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainULong val) => self -> val -> m ()
+setSampleSize self val = liftDOM (void ((js_setSampleSize ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainULong val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleSize\"]; })"
+        js_getSampleSize :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplesize MediaTrackConstraintSet.sampleSize specification>
+getSampleSize :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getSampleSize self = liftDOM (((js_getSampleSize ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplesize MediaTrackConstraintSet.sampleSize specification>
+getSampleSizeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainULong
+getSampleSizeUnsafe self = liftDOM ((((js_getSampleSize ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplesize MediaTrackConstraintSet.sampleSize specification>
+getSampleSizeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainULong
+getSampleSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleSize ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"echoCancellation\"] = $2; })"
+        js_setEchoCancellation :: MediaTrackConstraintSet -> ConstrainBooleanOrDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-echocancellation MediaTrackConstraintSet.echoCancellation specification>
+setEchoCancellation :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBooleanOrDOMString val) => self -> val -> m ()
+setEchoCancellation self val = liftDOM (void ((js_setEchoCancellation ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBooleanOrDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"echoCancellation\"]; })"
+        js_getEchoCancellation :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-echocancellation MediaTrackConstraintSet.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBooleanOrDOMString)
+getEchoCancellation self = liftDOM (((js_getEchoCancellation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-echocancellation MediaTrackConstraintSet.echoCancellation specification>
+getEchoCancellationUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBooleanOrDOMString
+getEchoCancellationUnsafe self = liftDOM ((((js_getEchoCancellation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-echocancellation MediaTrackConstraintSet.echoCancellation specification>
+getEchoCancellationUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBooleanOrDOMString
+getEchoCancellationUnchecked self = liftDOM ((pFromJSVal <$> (js_getEchoCancellation ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autoGainControl\"] = $2; })"
+        js_setAutoGainControl :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-autogaincontrol MediaTrackConstraintSet.autoGainControl specification>
+setAutoGainControl :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setAutoGainControl self val = liftDOM (void ((js_setAutoGainControl ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autoGainControl\"]; })"
+        js_getAutoGainControl :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-autogaincontrol MediaTrackConstraintSet.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getAutoGainControl self = liftDOM (((js_getAutoGainControl ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-autogaincontrol MediaTrackConstraintSet.autoGainControl specification>
+getAutoGainControlUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getAutoGainControlUnsafe self = liftDOM ((((js_getAutoGainControl ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-autogaincontrol MediaTrackConstraintSet.autoGainControl specification>
+getAutoGainControlUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getAutoGainControlUnchecked self = liftDOM ((pFromJSVal <$> (js_getAutoGainControl ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"noiseSuppression\"] = $2; })"
+        js_setNoiseSuppression :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-noisesuppression MediaTrackConstraintSet.noiseSuppression specification>
+setNoiseSuppression :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setNoiseSuppression self val = liftDOM (void ((js_setNoiseSuppression ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"noiseSuppression\"]; })"
+        js_getNoiseSuppression :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-noisesuppression MediaTrackConstraintSet.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getNoiseSuppression self = liftDOM (((js_getNoiseSuppression ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-noisesuppression MediaTrackConstraintSet.noiseSuppression specification>
+getNoiseSuppressionUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getNoiseSuppressionUnsafe self = liftDOM ((((js_getNoiseSuppression ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-noisesuppression MediaTrackConstraintSet.noiseSuppression specification>
+getNoiseSuppressionUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getNoiseSuppressionUnchecked self = liftDOM ((pFromJSVal <$> (js_getNoiseSuppression ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"latency\"] = $2; })"
+        js_setLatency :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-latency MediaTrackConstraintSet.latency specification>
+setLatency :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setLatency self val = liftDOM (void ((js_setLatency ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"latency\"]; })"
+        js_getLatency :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-latency MediaTrackConstraintSet.latency specification>
+getLatency :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getLatency self = liftDOM (((js_getLatency ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-latency MediaTrackConstraintSet.latency specification>
+getLatencyUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getLatencyUnsafe self = liftDOM ((((js_getLatency ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-latency MediaTrackConstraintSet.latency specification>
+getLatencyUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getLatencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getLatency ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channelCount\"] = $2; })"
+        js_setChannelCount :: MediaTrackConstraintSet -> ConstrainULong -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-channelcount MediaTrackConstraintSet.channelCount specification>
+setChannelCount :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainULong val) => self -> val -> m ()
+setChannelCount self val = liftDOM (void ((js_setChannelCount ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainULong val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channelCount\"]; })"
+        js_getChannelCount :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-channelcount MediaTrackConstraintSet.channelCount specification>
+getChannelCount :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getChannelCount self = liftDOM (((js_getChannelCount ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-channelcount MediaTrackConstraintSet.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainULong
+getChannelCountUnsafe self = liftDOM ((((js_getChannelCount ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-channelcount MediaTrackConstraintSet.channelCount specification>
+getChannelCountUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainULong
+getChannelCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannelCount ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deviceId\"] = $2; })"
+        js_setDeviceId :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-deviceid MediaTrackConstraintSet.deviceId specification>
+setDeviceId :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setDeviceId self val = liftDOM (void ((js_setDeviceId ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deviceId\"]; })"
+        js_getDeviceId :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-deviceid MediaTrackConstraintSet.deviceId specification>
+getDeviceId :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getDeviceId self = liftDOM (((js_getDeviceId ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-deviceid MediaTrackConstraintSet.deviceId specification>
+getDeviceIdUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getDeviceIdUnsafe self = liftDOM ((((js_getDeviceId ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-deviceid MediaTrackConstraintSet.deviceId specification>
+getDeviceIdUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getDeviceIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeviceId ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"groupId\"] = $2; })"
+        js_setGroupId :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-groupid MediaTrackConstraintSet.groupId specification>
+setGroupId :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setGroupId self val = liftDOM (void ((js_setGroupId ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"groupId\"]; })"
+        js_getGroupId :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-groupid MediaTrackConstraintSet.groupId specification>
+getGroupId :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getGroupId self = liftDOM (((js_getGroupId ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-groupid MediaTrackConstraintSet.groupId specification>
+getGroupIdUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getGroupIdUnsafe self = liftDOM ((((js_getGroupId ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-groupid MediaTrackConstraintSet.groupId specification>
+getGroupIdUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getGroupIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getGroupId ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundBlur\"] = $2; })"
+        js_setBackgroundBlur :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-backgroundblur MediaTrackConstraintSet.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setBackgroundBlur self val = liftDOM (void ((js_setBackgroundBlur ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundBlur\"]; })"
+        js_getBackgroundBlur :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-backgroundblur MediaTrackConstraintSet.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getBackgroundBlur self = liftDOM (((js_getBackgroundBlur ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-backgroundblur MediaTrackConstraintSet.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getBackgroundBlurUnsafe self = liftDOM ((((js_getBackgroundBlur ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-backgroundblur MediaTrackConstraintSet.backgroundBlur specification>
+getBackgroundBlurUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getBackgroundBlurUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundBlur ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"whiteBalanceMode\"] = $2; })"
+        js_setWhiteBalanceMode :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-whitebalancemode MediaTrackConstraintSet.whiteBalanceMode specification>
+setWhiteBalanceMode :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setWhiteBalanceMode self val = liftDOM (void ((js_setWhiteBalanceMode ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"whiteBalanceMode\"]; })"
+        js_getWhiteBalanceMode :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-whitebalancemode MediaTrackConstraintSet.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getWhiteBalanceMode self = liftDOM (((js_getWhiteBalanceMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-whitebalancemode MediaTrackConstraintSet.whiteBalanceMode specification>
+getWhiteBalanceModeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getWhiteBalanceModeUnsafe self = liftDOM ((((js_getWhiteBalanceMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-whitebalancemode MediaTrackConstraintSet.whiteBalanceMode specification>
+getWhiteBalanceModeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getWhiteBalanceModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getWhiteBalanceMode ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureMode\"] = $2; })"
+        js_setExposureMode :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuremode MediaTrackConstraintSet.exposureMode specification>
+setExposureMode :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setExposureMode self val = liftDOM (void ((js_setExposureMode ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureMode\"]; })"
+        js_getExposureMode :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuremode MediaTrackConstraintSet.exposureMode specification>
+getExposureMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getExposureMode self = liftDOM (((js_getExposureMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuremode MediaTrackConstraintSet.exposureMode specification>
+getExposureModeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getExposureModeUnsafe self = liftDOM ((((js_getExposureMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuremode MediaTrackConstraintSet.exposureMode specification>
+getExposureModeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getExposureModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureMode ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusMode\"] = $2; })"
+        js_setFocusMode :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusmode MediaTrackConstraintSet.focusMode specification>
+setFocusMode :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setFocusMode self val = liftDOM (void ((js_setFocusMode ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusMode\"]; })"
+        js_getFocusMode :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusmode MediaTrackConstraintSet.focusMode specification>
+getFocusMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getFocusMode self = liftDOM (((js_getFocusMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusmode MediaTrackConstraintSet.focusMode specification>
+getFocusModeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getFocusModeUnsafe self = liftDOM ((((js_getFocusMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusmode MediaTrackConstraintSet.focusMode specification>
+getFocusModeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getFocusModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusMode ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pointsOfInterest\"] = $2; })"
+        js_setPointsOfInterest :: MediaTrackConstraintSet -> ConstrainPoint2D -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pointsofinterest MediaTrackConstraintSet.pointsOfInterest specification>
+setPointsOfInterest :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainPoint2D val) => self -> val -> m ()
+setPointsOfInterest self val = liftDOM (void ((js_setPointsOfInterest ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainPoint2D val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pointsOfInterest\"]; })"
+        js_getPointsOfInterest :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pointsofinterest MediaTrackConstraintSet.pointsOfInterest specification>
+getPointsOfInterest :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainPoint2D)
+getPointsOfInterest self = liftDOM (((js_getPointsOfInterest ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pointsofinterest MediaTrackConstraintSet.pointsOfInterest specification>
+getPointsOfInterestUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainPoint2D
+getPointsOfInterestUnsafe self = liftDOM ((((js_getPointsOfInterest ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pointsofinterest MediaTrackConstraintSet.pointsOfInterest specification>
+getPointsOfInterestUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainPoint2D
+getPointsOfInterestUnchecked self = liftDOM ((pFromJSVal <$> (js_getPointsOfInterest ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureCompensation\"] = $2; })"
+        js_setExposureCompensation :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposurecompensation MediaTrackConstraintSet.exposureCompensation specification>
+setExposureCompensation :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setExposureCompensation self val = liftDOM (void ((js_setExposureCompensation ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureCompensation\"]; })"
+        js_getExposureCompensation :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposurecompensation MediaTrackConstraintSet.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getExposureCompensation self = liftDOM (((js_getExposureCompensation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposurecompensation MediaTrackConstraintSet.exposureCompensation specification>
+getExposureCompensationUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getExposureCompensationUnsafe self = liftDOM ((((js_getExposureCompensation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposurecompensation MediaTrackConstraintSet.exposureCompensation specification>
+getExposureCompensationUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getExposureCompensationUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureCompensation ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureTime\"] = $2; })"
+        js_setExposureTime :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuretime MediaTrackConstraintSet.exposureTime specification>
+setExposureTime :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setExposureTime self val = liftDOM (void ((js_setExposureTime ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureTime\"]; })"
+        js_getExposureTime :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuretime MediaTrackConstraintSet.exposureTime specification>
+getExposureTime :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getExposureTime self = liftDOM (((js_getExposureTime ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuretime MediaTrackConstraintSet.exposureTime specification>
+getExposureTimeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getExposureTimeUnsafe self = liftDOM ((((js_getExposureTime ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuretime MediaTrackConstraintSet.exposureTime specification>
+getExposureTimeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getExposureTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureTime ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorTemperature\"] = $2; })"
+        js_setColorTemperature :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-colortemperature MediaTrackConstraintSet.colorTemperature specification>
+setColorTemperature :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setColorTemperature self val = liftDOM (void ((js_setColorTemperature ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorTemperature\"]; })"
+        js_getColorTemperature :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-colortemperature MediaTrackConstraintSet.colorTemperature specification>
+getColorTemperature :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getColorTemperature self = liftDOM (((js_getColorTemperature ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-colortemperature MediaTrackConstraintSet.colorTemperature specification>
+getColorTemperatureUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getColorTemperatureUnsafe self = liftDOM ((((js_getColorTemperature ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-colortemperature MediaTrackConstraintSet.colorTemperature specification>
+getColorTemperatureUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getColorTemperatureUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorTemperature ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iso\"] = $2; })"
+        js_setIso :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-iso MediaTrackConstraintSet.iso specification>
+setIso :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setIso self val = liftDOM (void ((js_setIso ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iso\"]; })"
+        js_getIso :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-iso MediaTrackConstraintSet.iso specification>
+getIso :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getIso self = liftDOM (((js_getIso ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-iso MediaTrackConstraintSet.iso specification>
+getIsoUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getIsoUnsafe self = liftDOM ((((js_getIso ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-iso MediaTrackConstraintSet.iso specification>
+getIsoUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getIsoUnchecked self = liftDOM ((pFromJSVal <$> (js_getIso ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"brightness\"] = $2; })"
+        js_setBrightness :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-brightness MediaTrackConstraintSet.brightness specification>
+setBrightness :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setBrightness self val = liftDOM (void ((js_setBrightness ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"brightness\"]; })"
+        js_getBrightness :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-brightness MediaTrackConstraintSet.brightness specification>
+getBrightness :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getBrightness self = liftDOM (((js_getBrightness ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-brightness MediaTrackConstraintSet.brightness specification>
+getBrightnessUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getBrightnessUnsafe self = liftDOM ((((js_getBrightness ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-brightness MediaTrackConstraintSet.brightness specification>
+getBrightnessUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getBrightnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getBrightness ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contrast\"] = $2; })"
+        js_setContrast :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-contrast MediaTrackConstraintSet.contrast specification>
+setContrast :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setContrast self val = liftDOM (void ((js_setContrast ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contrast\"]; })"
+        js_getContrast :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-contrast MediaTrackConstraintSet.contrast specification>
+getContrast :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getContrast self = liftDOM (((js_getContrast ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-contrast MediaTrackConstraintSet.contrast specification>
+getContrastUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getContrastUnsafe self = liftDOM ((((js_getContrast ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-contrast MediaTrackConstraintSet.contrast specification>
+getContrastUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getContrastUnchecked self = liftDOM ((pFromJSVal <$> (js_getContrast ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"saturation\"] = $2; })"
+        js_setSaturation :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-saturation MediaTrackConstraintSet.saturation specification>
+setSaturation :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setSaturation self val = liftDOM (void ((js_setSaturation ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"saturation\"]; })"
+        js_getSaturation :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-saturation MediaTrackConstraintSet.saturation specification>
+getSaturation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getSaturation self = liftDOM (((js_getSaturation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-saturation MediaTrackConstraintSet.saturation specification>
+getSaturationUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getSaturationUnsafe self = liftDOM ((((js_getSaturation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-saturation MediaTrackConstraintSet.saturation specification>
+getSaturationUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getSaturationUnchecked self = liftDOM ((pFromJSVal <$> (js_getSaturation ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sharpness\"] = $2; })"
+        js_setSharpness :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-sharpness MediaTrackConstraintSet.sharpness specification>
+setSharpness :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setSharpness self val = liftDOM (void ((js_setSharpness ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sharpness\"]; })"
+        js_getSharpness :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-sharpness MediaTrackConstraintSet.sharpness specification>
+getSharpness :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getSharpness self = liftDOM (((js_getSharpness ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-sharpness MediaTrackConstraintSet.sharpness specification>
+getSharpnessUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getSharpnessUnsafe self = liftDOM ((((js_getSharpness ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-sharpness MediaTrackConstraintSet.sharpness specification>
+getSharpnessUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getSharpnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getSharpness ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusDistance\"] = $2; })"
+        js_setFocusDistance :: MediaTrackConstraintSet -> ConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusdistance MediaTrackConstraintSet.focusDistance specification>
+setFocusDistance :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDouble val) => self -> val -> m ()
+setFocusDistance self val = liftDOM (void ((js_setFocusDistance ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusDistance\"]; })"
+        js_getFocusDistance :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusdistance MediaTrackConstraintSet.focusDistance specification>
+getFocusDistance :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getFocusDistance self = liftDOM (((js_getFocusDistance ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusdistance MediaTrackConstraintSet.focusDistance specification>
+getFocusDistanceUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDouble
+getFocusDistanceUnsafe self = liftDOM ((((js_getFocusDistance ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusdistance MediaTrackConstraintSet.focusDistance specification>
+getFocusDistanceUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDouble
+getFocusDistanceUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusDistance ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pan\"] = $2; })"
+        js_setPan :: MediaTrackConstraintSet -> BoolOrConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pan MediaTrackConstraintSet.pan specification>
+setPan :: (MonadDOM m, IsMediaTrackConstraintSet self, IsBoolOrConstrainDouble val) => self -> val -> m ()
+setPan self val = liftDOM (void ((js_setPan ((Types.toMediaTrackConstraintSet self)) (Types.toBoolOrConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pan\"]; })"
+        js_getPan :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pan MediaTrackConstraintSet.pan specification>
+getPan :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe BoolOrConstrainDouble)
+getPan self = liftDOM (((js_getPan ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pan MediaTrackConstraintSet.pan specification>
+getPanUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m BoolOrConstrainDouble
+getPanUnsafe self = liftDOM ((((js_getPan ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pan MediaTrackConstraintSet.pan specification>
+getPanUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m BoolOrConstrainDouble
+getPanUnchecked self = liftDOM ((pFromJSVal <$> (js_getPan ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tilt\"] = $2; })"
+        js_setTilt :: MediaTrackConstraintSet -> BoolOrConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-tilt MediaTrackConstraintSet.tilt specification>
+setTilt :: (MonadDOM m, IsMediaTrackConstraintSet self, IsBoolOrConstrainDouble val) => self -> val -> m ()
+setTilt self val = liftDOM (void ((js_setTilt ((Types.toMediaTrackConstraintSet self)) (Types.toBoolOrConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tilt\"]; })"
+        js_getTilt :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-tilt MediaTrackConstraintSet.tilt specification>
+getTilt :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe BoolOrConstrainDouble)
+getTilt self = liftDOM (((js_getTilt ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-tilt MediaTrackConstraintSet.tilt specification>
+getTiltUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m BoolOrConstrainDouble
+getTiltUnsafe self = liftDOM ((((js_getTilt ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-tilt MediaTrackConstraintSet.tilt specification>
+getTiltUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m BoolOrConstrainDouble
+getTiltUnchecked self = liftDOM ((pFromJSVal <$> (js_getTilt ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"zoom\"] = $2; })"
+        js_setZoom :: MediaTrackConstraintSet -> BoolOrConstrainDouble -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-zoom MediaTrackConstraintSet.zoom specification>
+setZoom :: (MonadDOM m, IsMediaTrackConstraintSet self, IsBoolOrConstrainDouble val) => self -> val -> m ()
+setZoom self val = liftDOM (void ((js_setZoom ((Types.toMediaTrackConstraintSet self)) (Types.toBoolOrConstrainDouble val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"zoom\"]; })"
+        js_getZoom :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-zoom MediaTrackConstraintSet.zoom specification>
+getZoom :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe BoolOrConstrainDouble)
+getZoom self = liftDOM (((js_getZoom ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-zoom MediaTrackConstraintSet.zoom specification>
+getZoomUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m BoolOrConstrainDouble
+getZoomUnsafe self = liftDOM ((((js_getZoom ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-zoom MediaTrackConstraintSet.zoom specification>
+getZoomUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m BoolOrConstrainDouble
+getZoomUnchecked self = liftDOM ((pFromJSVal <$> (js_getZoom ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"torch\"] = $2; })"
+        js_setTorch :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-torch MediaTrackConstraintSet.torch specification>
+setTorch :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setTorch self val = liftDOM (void ((js_setTorch ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"torch\"]; })"
+        js_getTorch :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-torch MediaTrackConstraintSet.torch specification>
+getTorch :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getTorch self = liftDOM (((js_getTorch ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-torch MediaTrackConstraintSet.torch specification>
+getTorchUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getTorchUnsafe self = liftDOM ((((js_getTorch ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-torch MediaTrackConstraintSet.torch specification>
+getTorchUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getTorchUnchecked self = liftDOM ((pFromJSVal <$> (js_getTorch ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gestureReactions\"] = $2; })"
+        js_setGestureReactions :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-gesturereactions MediaTrackConstraintSet.gestureReactions specification>
+setGestureReactions :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setGestureReactions self val = liftDOM (void ((js_setGestureReactions ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gestureReactions\"]; })"
+        js_getGestureReactions :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-gesturereactions MediaTrackConstraintSet.gestureReactions specification>
+getGestureReactions :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getGestureReactions self = liftDOM (((js_getGestureReactions ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-gesturereactions MediaTrackConstraintSet.gestureReactions specification>
+getGestureReactionsUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getGestureReactionsUnsafe self = liftDOM ((((js_getGestureReactions ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-gesturereactions MediaTrackConstraintSet.gestureReactions specification>
+getGestureReactionsUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getGestureReactionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getGestureReactions ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"faceFraming\"] = $2; })"
+        js_setFaceFraming :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-faceframing MediaTrackConstraintSet.faceFraming specification>
+setFaceFraming :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setFaceFraming self val = liftDOM (void ((js_setFaceFraming ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"faceFraming\"]; })"
+        js_getFaceFraming :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-faceframing MediaTrackConstraintSet.faceFraming specification>
+getFaceFraming :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getFaceFraming self = liftDOM (((js_getFaceFraming ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-faceframing MediaTrackConstraintSet.faceFraming specification>
+getFaceFramingUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getFaceFramingUnsafe self = liftDOM ((((js_getFaceFraming ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-faceframing MediaTrackConstraintSet.faceFraming specification>
+getFaceFramingUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getFaceFramingUnchecked self = liftDOM ((pFromJSVal <$> (js_getFaceFraming ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"eyeGazeCorrection\"] = $2; })"
+        js_setEyeGazeCorrection :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-eyegazecorrection MediaTrackConstraintSet.eyeGazeCorrection specification>
+setEyeGazeCorrection :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setEyeGazeCorrection self val = liftDOM (void ((js_setEyeGazeCorrection ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"eyeGazeCorrection\"]; })"
+        js_getEyeGazeCorrection :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-eyegazecorrection MediaTrackConstraintSet.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getEyeGazeCorrection self = liftDOM (((js_getEyeGazeCorrection ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-eyegazecorrection MediaTrackConstraintSet.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getEyeGazeCorrectionUnsafe self = liftDOM ((((js_getEyeGazeCorrection ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-eyegazecorrection MediaTrackConstraintSet.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getEyeGazeCorrectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getEyeGazeCorrection ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"voiceIsolation\"] = $2; })"
+        js_setVoiceIsolation :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-voiceisolation MediaTrackConstraintSet.voiceIsolation specification>
+setVoiceIsolation :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setVoiceIsolation self val = liftDOM (void ((js_setVoiceIsolation ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"voiceIsolation\"]; })"
+        js_getVoiceIsolation :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-voiceisolation MediaTrackConstraintSet.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getVoiceIsolation self = liftDOM (((js_getVoiceIsolation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-voiceisolation MediaTrackConstraintSet.voiceIsolation specification>
+getVoiceIsolationUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getVoiceIsolationUnsafe self = liftDOM ((((js_getVoiceIsolation ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-voiceisolation MediaTrackConstraintSet.voiceIsolation specification>
+getVoiceIsolationUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getVoiceIsolationUnchecked self = liftDOM ((pFromJSVal <$> (js_getVoiceIsolation ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"humanFaceDetectionMode\"] = $2; })"
+        js_setHumanFaceDetectionMode :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-humanfacedetectionmode MediaTrackConstraintSet.humanFaceDetectionMode specification>
+setHumanFaceDetectionMode :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setHumanFaceDetectionMode self val = liftDOM (void ((js_setHumanFaceDetectionMode ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"humanFaceDetectionMode\"]; })"
+        js_getHumanFaceDetectionMode :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-humanfacedetectionmode MediaTrackConstraintSet.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getHumanFaceDetectionMode self = liftDOM (((js_getHumanFaceDetectionMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-humanfacedetectionmode MediaTrackConstraintSet.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getHumanFaceDetectionModeUnsafe self = liftDOM ((((js_getHumanFaceDetectionMode ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-humanfacedetectionmode MediaTrackConstraintSet.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getHumanFaceDetectionModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getHumanFaceDetectionMode ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundSegmentationMask\"] = $2; })"
+        js_setBackgroundSegmentationMask :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-backgroundsegmentationmask MediaTrackConstraintSet.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void ((js_setBackgroundSegmentationMask ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundSegmentationMask\"]; })"
+        js_getBackgroundSegmentationMask :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-backgroundsegmentationmask MediaTrackConstraintSet.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getBackgroundSegmentationMask self = liftDOM (((js_getBackgroundSegmentationMask ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-backgroundsegmentationmask MediaTrackConstraintSet.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((js_getBackgroundSegmentationMask ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-backgroundsegmentationmask MediaTrackConstraintSet.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getBackgroundSegmentationMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundSegmentationMask ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displaySurface\"] = $2; })"
+        js_setDisplaySurface :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-displaysurface MediaTrackConstraintSet.displaySurface specification>
+setDisplaySurface :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setDisplaySurface self val = liftDOM (void ((js_setDisplaySurface ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displaySurface\"]; })"
+        js_getDisplaySurface :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-displaysurface MediaTrackConstraintSet.displaySurface specification>
+getDisplaySurface :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getDisplaySurface self = liftDOM (((js_getDisplaySurface ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-displaysurface MediaTrackConstraintSet.displaySurface specification>
+getDisplaySurfaceUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getDisplaySurfaceUnsafe self = liftDOM ((((js_getDisplaySurface ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-displaysurface MediaTrackConstraintSet.displaySurface specification>
+getDisplaySurfaceUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getDisplaySurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplaySurface ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"logicalSurface\"] = $2; })"
+        js_setLogicalSurface :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-logicalsurface MediaTrackConstraintSet.logicalSurface specification>
+setLogicalSurface :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setLogicalSurface self val = liftDOM (void ((js_setLogicalSurface ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"logicalSurface\"]; })"
+        js_getLogicalSurface :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-logicalsurface MediaTrackConstraintSet.logicalSurface specification>
+getLogicalSurface :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getLogicalSurface self = liftDOM (((js_getLogicalSurface ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-logicalsurface MediaTrackConstraintSet.logicalSurface specification>
+getLogicalSurfaceUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getLogicalSurfaceUnsafe self = liftDOM ((((js_getLogicalSurface ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-logicalsurface MediaTrackConstraintSet.logicalSurface specification>
+getLogicalSurfaceUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getLogicalSurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getLogicalSurface ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cursor\"] = $2; })"
+        js_setCursor :: MediaTrackConstraintSet -> ConstrainDOMString -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-cursor MediaTrackConstraintSet.cursor specification>
+setCursor :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainDOMString val) => self -> val -> m ()
+setCursor self val = liftDOM (void ((js_setCursor ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainDOMString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cursor\"]; })"
+        js_getCursor :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-cursor MediaTrackConstraintSet.cursor specification>
+getCursor :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getCursor self = liftDOM (((js_getCursor ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-cursor MediaTrackConstraintSet.cursor specification>
+getCursorUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainDOMString
+getCursorUnsafe self = liftDOM ((((js_getCursor ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-cursor MediaTrackConstraintSet.cursor specification>
+getCursorUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainDOMString
+getCursorUnchecked self = liftDOM ((pFromJSVal <$> (js_getCursor ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"restrictOwnAudio\"] = $2; })"
+        js_setRestrictOwnAudio :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-restrictownaudio MediaTrackConstraintSet.restrictOwnAudio specification>
+setRestrictOwnAudio :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setRestrictOwnAudio self val = liftDOM (void ((js_setRestrictOwnAudio ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"restrictOwnAudio\"]; })"
+        js_getRestrictOwnAudio :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-restrictownaudio MediaTrackConstraintSet.restrictOwnAudio specification>
+getRestrictOwnAudio :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getRestrictOwnAudio self = liftDOM (((js_getRestrictOwnAudio ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-restrictownaudio MediaTrackConstraintSet.restrictOwnAudio specification>
+getRestrictOwnAudioUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getRestrictOwnAudioUnsafe self = liftDOM ((((js_getRestrictOwnAudio ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-restrictownaudio MediaTrackConstraintSet.restrictOwnAudio specification>
+getRestrictOwnAudioUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getRestrictOwnAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getRestrictOwnAudio ((Types.toMediaTrackConstraintSet self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"suppressLocalAudioPlayback\"] = $2; })"
+        js_setSuppressLocalAudioPlayback :: MediaTrackConstraintSet -> ConstrainBoolean -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-suppresslocalaudioplayback MediaTrackConstraintSet.suppressLocalAudioPlayback specification>
+setSuppressLocalAudioPlayback :: (MonadDOM m, IsMediaTrackConstraintSet self, IsConstrainBoolean val) => self -> val -> m ()
+setSuppressLocalAudioPlayback self val = liftDOM (void ((js_setSuppressLocalAudioPlayback ((Types.toMediaTrackConstraintSet self)) (Types.toConstrainBoolean val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"suppressLocalAudioPlayback\"]; })"
+        js_getSuppressLocalAudioPlayback :: MediaTrackConstraintSet -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-suppresslocalaudioplayback MediaTrackConstraintSet.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlayback :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getSuppressLocalAudioPlayback self = liftDOM (((js_getSuppressLocalAudioPlayback ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-suppresslocalaudioplayback MediaTrackConstraintSet.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnsafe :: (MonadDOM m, IsMediaTrackConstraintSet self, HasCallStack) => self -> m ConstrainBoolean
+getSuppressLocalAudioPlaybackUnsafe self = liftDOM ((((js_getSuppressLocalAudioPlayback ((Types.toMediaTrackConstraintSet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackconstraintset-suppresslocalaudioplayback MediaTrackConstraintSet.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnchecked :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m ConstrainBoolean
+getSuppressLocalAudioPlaybackUnchecked self = liftDOM ((pFromJSVal <$> (js_getSuppressLocalAudioPlayback ((Types.toMediaTrackConstraintSet self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraints.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraints.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints
+       (js_newMediaTrackConstraints, js_setAdvanced, js_getAdvanced, newMediaTrackConstraints, setAdvanced, getAdvanced, getAdvancedUnsafe, getAdvancedUnchecked, MediaTrackConstraints(..), gTypeMediaTrackConstraints)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaTrackConstraints :: IO MediaTrackConstraints
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints MediaTrackConstraints specification>
+newMediaTrackConstraints :: (MonadDOM m) => m MediaTrackConstraints
+newMediaTrackConstraints = liftDOM ((js_newMediaTrackConstraints))
+
+foreign import javascript safe "(($1, $2) => { $1[\"advanced\"] = $2; })"
+        js_setAdvanced :: MediaTrackConstraints -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints-advanced MediaTrackConstraints.advanced specification>
+setAdvanced :: (MonadDOM m, IsMediaTrackConstraintSet val) => MediaTrackConstraints -> [val] -> m ()
+setAdvanced self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAdvanced (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"advanced\"]; })"
+        js_getAdvanced :: MediaTrackConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints-advanced MediaTrackConstraints.advanced specification>
+getAdvanced :: (MonadDOM m) => MediaTrackConstraints -> m (Maybe [MediaTrackConstraintSet])
+getAdvanced self = liftDOM (((js_getAdvanced (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints-advanced MediaTrackConstraints.advanced specification>
+getAdvancedUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackConstraints -> m [MediaTrackConstraintSet]
+getAdvancedUnsafe self = liftDOM ((((js_getAdvanced (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints-advanced MediaTrackConstraints.advanced specification>
+getAdvancedUnchecked :: (MonadDOM m) => MediaTrackConstraints -> m [MediaTrackConstraintSet]
+getAdvancedUnchecked self = liftDOM (((js_getAdvanced (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaTrackSettings.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackSettings.hs
@@ -0,0 +1,963 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaTrackSettings
+       (js_newMediaTrackSettings, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setAspectRatio, js_getAspectRatio, js_setFrameRate, js_getFrameRate, js_setFacingMode, js_getFacingMode, js_setResizeMode, js_getResizeMode, js_setSampleRate, js_getSampleRate, js_setSampleSize, js_getSampleSize, js_setEchoCancellation, js_getEchoCancellation, js_setAutoGainControl, js_getAutoGainControl, js_setNoiseSuppression, js_getNoiseSuppression, js_setLatency, js_getLatency, js_setChannelCount, js_getChannelCount, js_setDeviceId, js_getDeviceId, js_setGroupId, js_getGroupId, js_setBackgroundBlur, js_getBackgroundBlur, js_setWhiteBalanceMode, js_getWhiteBalanceMode, js_setExposureMode, js_getExposureMode, js_setFocusMode, js_getFocusMode, js_setPointsOfInterest, js_getPointsOfInterest, js_setExposureCompensation, js_getExposureCompensation, js_setExposureTime, js_getExposureTime, js_setColorTemperature, js_getColorTemperature, js_setIso, js_getIso, js_setBrightness, js_getBrightness, js_setContrast, js_getContrast, js_setSaturation, js_getSaturation, js_setSharpness, js_getSharpness, js_setFocusDistance, js_getFocusDistance, js_setPan, js_getPan, js_setTilt, js_getTilt, js_setZoom, js_getZoom, js_setTorch, js_getTorch, js_setPowerEfficient, js_getPowerEfficient, js_setPowerEfficientPixelFormat, js_getPowerEfficientPixelFormat, js_setGestureReactions, js_getGestureReactions, js_setFaceFraming, js_getFaceFraming, js_setEyeGazeCorrection, js_getEyeGazeCorrection, js_setVoiceIsolation, js_getVoiceIsolation, js_setHumanFaceDetectionMode, js_getHumanFaceDetectionMode, js_setBackgroundSegmentationMask, js_getBackgroundSegmentationMask, js_setDisplaySurface, js_getDisplaySurface, js_setLogicalSurface, js_getLogicalSurface, js_setCursor, js_getCursor, js_setRestrictOwnAudio, js_getRestrictOwnAudio, js_setSuppressLocalAudioPlayback, js_getSuppressLocalAudioPlayback, js_setScreenPixelRatio, js_getScreenPixelRatio, newMediaTrackSettings, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setAspectRatio, getAspectRatio, getAspectRatioUnsafe, getAspectRatioUnchecked, setFrameRate, getFrameRate, getFrameRateUnsafe, getFrameRateUnchecked, setFacingMode, getFacingMode, getFacingModeUnsafe, getFacingModeUnchecked, setResizeMode, getResizeMode, getResizeModeUnsafe, getResizeModeUnchecked, setSampleRate, getSampleRate, getSampleRateUnsafe, getSampleRateUnchecked, setSampleSize, getSampleSize, getSampleSizeUnsafe, getSampleSizeUnchecked, setEchoCancellation, getEchoCancellation, getEchoCancellationUnsafe, getEchoCancellationUnchecked, setAutoGainControl, getAutoGainControl, getAutoGainControlUnsafe, getAutoGainControlUnchecked, setNoiseSuppression, getNoiseSuppression, getNoiseSuppressionUnsafe, getNoiseSuppressionUnchecked, setLatency, getLatency, getLatencyUnsafe, getLatencyUnchecked, setChannelCount, getChannelCount, getChannelCountUnsafe, getChannelCountUnchecked, setDeviceId, getDeviceId, getDeviceIdUnsafe, getDeviceIdUnchecked, setGroupId, getGroupId, getGroupIdUnsafe, getGroupIdUnchecked, setBackgroundBlur, getBackgroundBlur, getBackgroundBlurUnsafe, getBackgroundBlurUnchecked, setWhiteBalanceMode, getWhiteBalanceMode, getWhiteBalanceModeUnsafe, getWhiteBalanceModeUnchecked, setExposureMode, getExposureMode, getExposureModeUnsafe, getExposureModeUnchecked, setFocusMode, getFocusMode, getFocusModeUnsafe, getFocusModeUnchecked, setPointsOfInterest, getPointsOfInterest, getPointsOfInterestUnsafe, getPointsOfInterestUnchecked, setExposureCompensation, getExposureCompensation, getExposureCompensationUnsafe, getExposureCompensationUnchecked, setExposureTime, getExposureTime, getExposureTimeUnsafe, getExposureTimeUnchecked, setColorTemperature, getColorTemperature, getColorTemperatureUnsafe, getColorTemperatureUnchecked, setIso, getIso, getIsoUnsafe, getIsoUnchecked, setBrightness, getBrightness, getBrightnessUnsafe, getBrightnessUnchecked, setContrast, getContrast, getContrastUnsafe, getContrastUnchecked, setSaturation, getSaturation, getSaturationUnsafe, getSaturationUnchecked, setSharpness, getSharpness, getSharpnessUnsafe, getSharpnessUnchecked, setFocusDistance, getFocusDistance, getFocusDistanceUnsafe, getFocusDistanceUnchecked, setPan, getPan, getPanUnsafe, getPanUnchecked, setTilt, getTilt, getTiltUnsafe, getTiltUnchecked, setZoom, getZoom, getZoomUnsafe, getZoomUnchecked, setTorch, getTorch, getTorchUnsafe, getTorchUnchecked, setPowerEfficient, getPowerEfficient, getPowerEfficientUnsafe, getPowerEfficientUnchecked, setPowerEfficientPixelFormat, getPowerEfficientPixelFormat, getPowerEfficientPixelFormatUnsafe, getPowerEfficientPixelFormatUnchecked, setGestureReactions, getGestureReactions, getGestureReactionsUnsafe, getGestureReactionsUnchecked, setFaceFraming, getFaceFraming, getFaceFramingUnsafe, getFaceFramingUnchecked, setEyeGazeCorrection, getEyeGazeCorrection, getEyeGazeCorrectionUnsafe, getEyeGazeCorrectionUnchecked, setVoiceIsolation, getVoiceIsolation, getVoiceIsolationUnsafe, getVoiceIsolationUnchecked, setHumanFaceDetectionMode, getHumanFaceDetectionMode, getHumanFaceDetectionModeUnsafe, getHumanFaceDetectionModeUnchecked, setBackgroundSegmentationMask, getBackgroundSegmentationMask, getBackgroundSegmentationMaskUnsafe, getBackgroundSegmentationMaskUnchecked, setDisplaySurface, getDisplaySurface, getDisplaySurfaceUnsafe, getDisplaySurfaceUnchecked, setLogicalSurface, getLogicalSurface, getLogicalSurfaceUnsafe, getLogicalSurfaceUnchecked, setCursor, getCursor, getCursorUnsafe, getCursorUnchecked, setRestrictOwnAudio, getRestrictOwnAudio, getRestrictOwnAudioUnsafe, getRestrictOwnAudioUnchecked, setSuppressLocalAudioPlayback, getSuppressLocalAudioPlayback, getSuppressLocalAudioPlaybackUnsafe, getSuppressLocalAudioPlaybackUnchecked, setScreenPixelRatio, getScreenPixelRatio, getScreenPixelRatioUnsafe, getScreenPixelRatioUnchecked, MediaTrackSettings(..), gTypeMediaTrackSettings)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaTrackSettings :: IO MediaTrackSettings
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings MediaTrackSettings specification>
+newMediaTrackSettings :: (MonadDOM m) => m MediaTrackSettings
+newMediaTrackSettings = liftDOM ((js_newMediaTrackSettings))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: MediaTrackSettings -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-width MediaTrackSettings.width specification>
+setWidth :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-width MediaTrackSettings.width specification>
+getWidth :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-width MediaTrackSettings.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getWidthUnsafe self = liftDOM ((((js_getWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-width MediaTrackSettings.width specification>
+getWidthUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Word
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: MediaTrackSettings -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-height MediaTrackSettings.height specification>
+setHeight :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-height MediaTrackSettings.height specification>
+getHeight :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-height MediaTrackSettings.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-height MediaTrackSettings.height specification>
+getHeightUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Word
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"aspectRatio\"] = $2; })"
+        js_setAspectRatio :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-aspectratio MediaTrackSettings.aspectRatio specification>
+setAspectRatio :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setAspectRatio self val = liftDOM (void ((js_setAspectRatio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aspectRatio\"]; })"
+        js_getAspectRatio :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-aspectratio MediaTrackSettings.aspectRatio specification>
+getAspectRatio :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getAspectRatio self = liftDOM (((js_getAspectRatio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-aspectratio MediaTrackSettings.aspectRatio specification>
+getAspectRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getAspectRatioUnsafe self = liftDOM ((((js_getAspectRatio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-aspectratio MediaTrackSettings.aspectRatio specification>
+getAspectRatioUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getAspectRatioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAspectRatio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameRate\"] = $2; })"
+        js_setFrameRate :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-framerate MediaTrackSettings.frameRate specification>
+setFrameRate :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setFrameRate self val = liftDOM (void ((js_setFrameRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameRate\"]; })"
+        js_getFrameRate :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-framerate MediaTrackSettings.frameRate specification>
+getFrameRate :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getFrameRate self = liftDOM (((js_getFrameRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-framerate MediaTrackSettings.frameRate specification>
+getFrameRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getFrameRateUnsafe self = liftDOM ((((js_getFrameRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-framerate MediaTrackSettings.frameRate specification>
+getFrameRateUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getFrameRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"facingMode\"] = $2; })"
+        js_setFacingMode :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-facingmode MediaTrackSettings.facingMode specification>
+setFacingMode :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setFacingMode self val = liftDOM (void ((js_setFacingMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"facingMode\"]; })"
+        js_getFacingMode :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-facingmode MediaTrackSettings.facingMode specification>
+getFacingMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getFacingMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getFacingMode (self))))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-facingmode MediaTrackSettings.facingMode specification>
+getFacingModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getFacingModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getFacingMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-facingmode MediaTrackSettings.facingMode specification>
+getFacingModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getFacingModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFacingMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resizeMode\"] = $2; })"
+        js_setResizeMode :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-resizemode MediaTrackSettings.resizeMode specification>
+setResizeMode :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setResizeMode self val = liftDOM (void ((js_setResizeMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resizeMode\"]; })"
+        js_getResizeMode :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-resizemode MediaTrackSettings.resizeMode specification>
+getResizeMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getResizeMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getResizeMode (self))))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-resizemode MediaTrackSettings.resizeMode specification>
+getResizeModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getResizeModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getResizeMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-resizemode MediaTrackSettings.resizeMode specification>
+getResizeModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getResizeModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getResizeMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: MediaTrackSettings -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplerate MediaTrackSettings.sampleRate specification>
+setSampleRate :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplerate MediaTrackSettings.sampleRate specification>
+getSampleRate :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getSampleRate self = liftDOM (((js_getSampleRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplerate MediaTrackSettings.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getSampleRateUnsafe self = liftDOM ((((js_getSampleRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplerate MediaTrackSettings.sampleRate specification>
+getSampleRateUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Word
+getSampleRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleSize\"] = $2; })"
+        js_setSampleSize :: MediaTrackSettings -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplesize MediaTrackSettings.sampleSize specification>
+setSampleSize :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setSampleSize self val = liftDOM (void ((js_setSampleSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleSize\"]; })"
+        js_getSampleSize :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplesize MediaTrackSettings.sampleSize specification>
+getSampleSize :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getSampleSize self = liftDOM (((js_getSampleSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplesize MediaTrackSettings.sampleSize specification>
+getSampleSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getSampleSizeUnsafe self = liftDOM ((((js_getSampleSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplesize MediaTrackSettings.sampleSize specification>
+getSampleSizeUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Word
+getSampleSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"echoCancellation\"] = $2; })"
+        js_setEchoCancellation :: MediaTrackSettings -> BoolOrString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-echocancellation MediaTrackSettings.echoCancellation specification>
+setEchoCancellation :: (MonadDOM m, IsBoolOrString val) => MediaTrackSettings -> val -> m ()
+setEchoCancellation self val = liftDOM (void ((js_setEchoCancellation (self) (Types.toBoolOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"echoCancellation\"]; })"
+        js_getEchoCancellation :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-echocancellation MediaTrackSettings.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe BoolOrString)
+getEchoCancellation self = liftDOM (((js_getEchoCancellation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-echocancellation MediaTrackSettings.echoCancellation specification>
+getEchoCancellationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m BoolOrString
+getEchoCancellationUnsafe self = liftDOM ((((js_getEchoCancellation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-echocancellation MediaTrackSettings.echoCancellation specification>
+getEchoCancellationUnchecked :: (MonadDOM m) => MediaTrackSettings -> m BoolOrString
+getEchoCancellationUnchecked self = liftDOM ((pFromJSVal <$> (js_getEchoCancellation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autoGainControl\"] = $2; })"
+        js_setAutoGainControl :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-autogaincontrol MediaTrackSettings.autoGainControl specification>
+setAutoGainControl :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setAutoGainControl self val = liftDOM (void ((js_setAutoGainControl (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autoGainControl\"]; })"
+        js_getAutoGainControl :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-autogaincontrol MediaTrackSettings.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getAutoGainControl self = liftDOM (((js_getAutoGainControl (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-autogaincontrol MediaTrackSettings.autoGainControl specification>
+getAutoGainControlUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getAutoGainControlUnsafe self = liftDOM ((((js_getAutoGainControl (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-autogaincontrol MediaTrackSettings.autoGainControl specification>
+getAutoGainControlUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getAutoGainControlUnchecked self = liftDOM ((pFromJSVal <$> (js_getAutoGainControl (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"noiseSuppression\"] = $2; })"
+        js_setNoiseSuppression :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-noisesuppression MediaTrackSettings.noiseSuppression specification>
+setNoiseSuppression :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setNoiseSuppression self val = liftDOM (void ((js_setNoiseSuppression (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"noiseSuppression\"]; })"
+        js_getNoiseSuppression :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-noisesuppression MediaTrackSettings.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getNoiseSuppression self = liftDOM (((js_getNoiseSuppression (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-noisesuppression MediaTrackSettings.noiseSuppression specification>
+getNoiseSuppressionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getNoiseSuppressionUnsafe self = liftDOM ((((js_getNoiseSuppression (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-noisesuppression MediaTrackSettings.noiseSuppression specification>
+getNoiseSuppressionUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getNoiseSuppressionUnchecked self = liftDOM ((pFromJSVal <$> (js_getNoiseSuppression (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"latency\"] = $2; })"
+        js_setLatency :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-latency MediaTrackSettings.latency specification>
+setLatency :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setLatency self val = liftDOM (void ((js_setLatency (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"latency\"]; })"
+        js_getLatency :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-latency MediaTrackSettings.latency specification>
+getLatency :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getLatency self = liftDOM (((js_getLatency (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-latency MediaTrackSettings.latency specification>
+getLatencyUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getLatencyUnsafe self = liftDOM ((((js_getLatency (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-latency MediaTrackSettings.latency specification>
+getLatencyUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getLatencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getLatency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channelCount\"] = $2; })"
+        js_setChannelCount :: MediaTrackSettings -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-channelcount MediaTrackSettings.channelCount specification>
+setChannelCount :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setChannelCount self val = liftDOM (void ((js_setChannelCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channelCount\"]; })"
+        js_getChannelCount :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-channelcount MediaTrackSettings.channelCount specification>
+getChannelCount :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getChannelCount self = liftDOM (((js_getChannelCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-channelcount MediaTrackSettings.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getChannelCountUnsafe self = liftDOM ((((js_getChannelCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-channelcount MediaTrackSettings.channelCount specification>
+getChannelCountUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Word
+getChannelCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannelCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deviceId\"] = $2; })"
+        js_setDeviceId :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-deviceid MediaTrackSettings.deviceId specification>
+setDeviceId :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setDeviceId self val = liftDOM (void ((js_setDeviceId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deviceId\"]; })"
+        js_getDeviceId :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-deviceid MediaTrackSettings.deviceId specification>
+getDeviceId :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getDeviceId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDeviceId (self))))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-deviceid MediaTrackSettings.deviceId specification>
+getDeviceIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getDeviceIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDeviceId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-deviceid MediaTrackSettings.deviceId specification>
+getDeviceIdUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getDeviceIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeviceId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"groupId\"] = $2; })"
+        js_setGroupId :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-groupid MediaTrackSettings.groupId specification>
+setGroupId :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setGroupId self val = liftDOM (void ((js_setGroupId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"groupId\"]; })"
+        js_getGroupId :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-groupid MediaTrackSettings.groupId specification>
+getGroupId :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getGroupId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getGroupId (self))))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-groupid MediaTrackSettings.groupId specification>
+getGroupIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getGroupIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getGroupId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-groupid MediaTrackSettings.groupId specification>
+getGroupIdUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getGroupIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getGroupId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundBlur\"] = $2; })"
+        js_setBackgroundBlur :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-backgroundblur MediaTrackSettings.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setBackgroundBlur self val = liftDOM (void ((js_setBackgroundBlur (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundBlur\"]; })"
+        js_getBackgroundBlur :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-backgroundblur MediaTrackSettings.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getBackgroundBlur self = liftDOM (((js_getBackgroundBlur (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-backgroundblur MediaTrackSettings.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getBackgroundBlurUnsafe self = liftDOM ((((js_getBackgroundBlur (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-backgroundblur MediaTrackSettings.backgroundBlur specification>
+getBackgroundBlurUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getBackgroundBlurUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundBlur (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"whiteBalanceMode\"] = $2; })"
+        js_setWhiteBalanceMode :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-whitebalancemode MediaTrackSettings.whiteBalanceMode specification>
+setWhiteBalanceMode :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setWhiteBalanceMode self val = liftDOM (void ((js_setWhiteBalanceMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"whiteBalanceMode\"]; })"
+        js_getWhiteBalanceMode :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-whitebalancemode MediaTrackSettings.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getWhiteBalanceMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getWhiteBalanceMode (self))))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-whitebalancemode MediaTrackSettings.whiteBalanceMode specification>
+getWhiteBalanceModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getWhiteBalanceModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getWhiteBalanceMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-whitebalancemode MediaTrackSettings.whiteBalanceMode specification>
+getWhiteBalanceModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getWhiteBalanceModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getWhiteBalanceMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureMode\"] = $2; })"
+        js_setExposureMode :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuremode MediaTrackSettings.exposureMode specification>
+setExposureMode :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setExposureMode self val = liftDOM (void ((js_setExposureMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureMode\"]; })"
+        js_getExposureMode :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuremode MediaTrackSettings.exposureMode specification>
+getExposureMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getExposureMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getExposureMode (self))))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuremode MediaTrackSettings.exposureMode specification>
+getExposureModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getExposureModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getExposureMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuremode MediaTrackSettings.exposureMode specification>
+getExposureModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getExposureModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusMode\"] = $2; })"
+        js_setFocusMode :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusmode MediaTrackSettings.focusMode specification>
+setFocusMode :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setFocusMode self val = liftDOM (void ((js_setFocusMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusMode\"]; })"
+        js_getFocusMode :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusmode MediaTrackSettings.focusMode specification>
+getFocusMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getFocusMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getFocusMode (self))))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusmode MediaTrackSettings.focusMode specification>
+getFocusModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getFocusModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getFocusMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusmode MediaTrackSettings.focusMode specification>
+getFocusModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getFocusModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pointsOfInterest\"] = $2; })"
+        js_setPointsOfInterest :: MediaTrackSettings -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pointsofinterest MediaTrackSettings.pointsOfInterest specification>
+setPointsOfInterest :: (MonadDOM m) => MediaTrackSettings -> [Point2D] -> m ()
+setPointsOfInterest self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPointsOfInterest (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pointsOfInterest\"]; })"
+        js_getPointsOfInterest :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pointsofinterest MediaTrackSettings.pointsOfInterest specification>
+getPointsOfInterest :: (MonadDOM m) => MediaTrackSettings -> m (Maybe [Point2D])
+getPointsOfInterest self = liftDOM (((js_getPointsOfInterest (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pointsofinterest MediaTrackSettings.pointsOfInterest specification>
+getPointsOfInterestUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m [Point2D]
+getPointsOfInterestUnsafe self = liftDOM ((((js_getPointsOfInterest (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pointsofinterest MediaTrackSettings.pointsOfInterest specification>
+getPointsOfInterestUnchecked :: (MonadDOM m) => MediaTrackSettings -> m [Point2D]
+getPointsOfInterestUnchecked self = liftDOM (((js_getPointsOfInterest (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureCompensation\"] = $2; })"
+        js_setExposureCompensation :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposurecompensation MediaTrackSettings.exposureCompensation specification>
+setExposureCompensation :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setExposureCompensation self val = liftDOM (void ((js_setExposureCompensation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureCompensation\"]; })"
+        js_getExposureCompensation :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposurecompensation MediaTrackSettings.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getExposureCompensation self = liftDOM (((js_getExposureCompensation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposurecompensation MediaTrackSettings.exposureCompensation specification>
+getExposureCompensationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getExposureCompensationUnsafe self = liftDOM ((((js_getExposureCompensation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposurecompensation MediaTrackSettings.exposureCompensation specification>
+getExposureCompensationUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getExposureCompensationUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureCompensation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureTime\"] = $2; })"
+        js_setExposureTime :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuretime MediaTrackSettings.exposureTime specification>
+setExposureTime :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setExposureTime self val = liftDOM (void ((js_setExposureTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureTime\"]; })"
+        js_getExposureTime :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuretime MediaTrackSettings.exposureTime specification>
+getExposureTime :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getExposureTime self = liftDOM (((js_getExposureTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuretime MediaTrackSettings.exposureTime specification>
+getExposureTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getExposureTimeUnsafe self = liftDOM ((((js_getExposureTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuretime MediaTrackSettings.exposureTime specification>
+getExposureTimeUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getExposureTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorTemperature\"] = $2; })"
+        js_setColorTemperature :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-colortemperature MediaTrackSettings.colorTemperature specification>
+setColorTemperature :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setColorTemperature self val = liftDOM (void ((js_setColorTemperature (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorTemperature\"]; })"
+        js_getColorTemperature :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-colortemperature MediaTrackSettings.colorTemperature specification>
+getColorTemperature :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getColorTemperature self = liftDOM (((js_getColorTemperature (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-colortemperature MediaTrackSettings.colorTemperature specification>
+getColorTemperatureUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getColorTemperatureUnsafe self = liftDOM ((((js_getColorTemperature (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-colortemperature MediaTrackSettings.colorTemperature specification>
+getColorTemperatureUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getColorTemperatureUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorTemperature (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iso\"] = $2; })"
+        js_setIso :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-iso MediaTrackSettings.iso specification>
+setIso :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setIso self val = liftDOM (void ((js_setIso (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iso\"]; })"
+        js_getIso :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-iso MediaTrackSettings.iso specification>
+getIso :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getIso self = liftDOM (((js_getIso (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-iso MediaTrackSettings.iso specification>
+getIsoUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getIsoUnsafe self = liftDOM ((((js_getIso (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-iso MediaTrackSettings.iso specification>
+getIsoUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getIsoUnchecked self = liftDOM ((pFromJSVal <$> (js_getIso (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"brightness\"] = $2; })"
+        js_setBrightness :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-brightness MediaTrackSettings.brightness specification>
+setBrightness :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setBrightness self val = liftDOM (void ((js_setBrightness (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"brightness\"]; })"
+        js_getBrightness :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-brightness MediaTrackSettings.brightness specification>
+getBrightness :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getBrightness self = liftDOM (((js_getBrightness (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-brightness MediaTrackSettings.brightness specification>
+getBrightnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getBrightnessUnsafe self = liftDOM ((((js_getBrightness (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-brightness MediaTrackSettings.brightness specification>
+getBrightnessUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getBrightnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getBrightness (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contrast\"] = $2; })"
+        js_setContrast :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-contrast MediaTrackSettings.contrast specification>
+setContrast :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setContrast self val = liftDOM (void ((js_setContrast (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contrast\"]; })"
+        js_getContrast :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-contrast MediaTrackSettings.contrast specification>
+getContrast :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getContrast self = liftDOM (((js_getContrast (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-contrast MediaTrackSettings.contrast specification>
+getContrastUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getContrastUnsafe self = liftDOM ((((js_getContrast (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-contrast MediaTrackSettings.contrast specification>
+getContrastUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getContrastUnchecked self = liftDOM ((pFromJSVal <$> (js_getContrast (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"saturation\"] = $2; })"
+        js_setSaturation :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-saturation MediaTrackSettings.saturation specification>
+setSaturation :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setSaturation self val = liftDOM (void ((js_setSaturation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"saturation\"]; })"
+        js_getSaturation :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-saturation MediaTrackSettings.saturation specification>
+getSaturation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getSaturation self = liftDOM (((js_getSaturation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-saturation MediaTrackSettings.saturation specification>
+getSaturationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getSaturationUnsafe self = liftDOM ((((js_getSaturation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-saturation MediaTrackSettings.saturation specification>
+getSaturationUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getSaturationUnchecked self = liftDOM ((pFromJSVal <$> (js_getSaturation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sharpness\"] = $2; })"
+        js_setSharpness :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-sharpness MediaTrackSettings.sharpness specification>
+setSharpness :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setSharpness self val = liftDOM (void ((js_setSharpness (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sharpness\"]; })"
+        js_getSharpness :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-sharpness MediaTrackSettings.sharpness specification>
+getSharpness :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getSharpness self = liftDOM (((js_getSharpness (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-sharpness MediaTrackSettings.sharpness specification>
+getSharpnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getSharpnessUnsafe self = liftDOM ((((js_getSharpness (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-sharpness MediaTrackSettings.sharpness specification>
+getSharpnessUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getSharpnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getSharpness (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusDistance\"] = $2; })"
+        js_setFocusDistance :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusdistance MediaTrackSettings.focusDistance specification>
+setFocusDistance :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setFocusDistance self val = liftDOM (void ((js_setFocusDistance (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusDistance\"]; })"
+        js_getFocusDistance :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusdistance MediaTrackSettings.focusDistance specification>
+getFocusDistance :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getFocusDistance self = liftDOM (((js_getFocusDistance (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusdistance MediaTrackSettings.focusDistance specification>
+getFocusDistanceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getFocusDistanceUnsafe self = liftDOM ((((js_getFocusDistance (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusdistance MediaTrackSettings.focusDistance specification>
+getFocusDistanceUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getFocusDistanceUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusDistance (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pan\"] = $2; })"
+        js_setPan :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pan MediaTrackSettings.pan specification>
+setPan :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setPan self val = liftDOM (void ((js_setPan (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pan\"]; })"
+        js_getPan :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pan MediaTrackSettings.pan specification>
+getPan :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getPan self = liftDOM (((js_getPan (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pan MediaTrackSettings.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getPanUnsafe self = liftDOM ((((js_getPan (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pan MediaTrackSettings.pan specification>
+getPanUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getPanUnchecked self = liftDOM ((pFromJSVal <$> (js_getPan (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tilt\"] = $2; })"
+        js_setTilt :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-tilt MediaTrackSettings.tilt specification>
+setTilt :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setTilt self val = liftDOM (void ((js_setTilt (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tilt\"]; })"
+        js_getTilt :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-tilt MediaTrackSettings.tilt specification>
+getTilt :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getTilt self = liftDOM (((js_getTilt (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-tilt MediaTrackSettings.tilt specification>
+getTiltUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getTiltUnsafe self = liftDOM ((((js_getTilt (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-tilt MediaTrackSettings.tilt specification>
+getTiltUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getTiltUnchecked self = liftDOM ((pFromJSVal <$> (js_getTilt (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"zoom\"] = $2; })"
+        js_setZoom :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-zoom MediaTrackSettings.zoom specification>
+setZoom :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setZoom self val = liftDOM (void ((js_setZoom (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"zoom\"]; })"
+        js_getZoom :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-zoom MediaTrackSettings.zoom specification>
+getZoom :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getZoom self = liftDOM (((js_getZoom (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-zoom MediaTrackSettings.zoom specification>
+getZoomUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getZoomUnsafe self = liftDOM ((((js_getZoom (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-zoom MediaTrackSettings.zoom specification>
+getZoomUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getZoomUnchecked self = liftDOM ((pFromJSVal <$> (js_getZoom (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"torch\"] = $2; })"
+        js_setTorch :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-torch MediaTrackSettings.torch specification>
+setTorch :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setTorch self val = liftDOM (void ((js_setTorch (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"torch\"]; })"
+        js_getTorch :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-torch MediaTrackSettings.torch specification>
+getTorch :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getTorch self = liftDOM (((js_getTorch (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-torch MediaTrackSettings.torch specification>
+getTorchUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getTorchUnsafe self = liftDOM ((((js_getTorch (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-torch MediaTrackSettings.torch specification>
+getTorchUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getTorchUnchecked self = liftDOM ((pFromJSVal <$> (js_getTorch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerEfficient\"] = $2; })"
+        js_setPowerEfficient :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficient MediaTrackSettings.powerEfficient specification>
+setPowerEfficient :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setPowerEfficient self val = liftDOM (void ((js_setPowerEfficient (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerEfficient\"]; })"
+        js_getPowerEfficient :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficient MediaTrackSettings.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getPowerEfficient self = liftDOM (((js_getPowerEfficient (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficient MediaTrackSettings.powerEfficient specification>
+getPowerEfficientUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getPowerEfficientUnsafe self = liftDOM ((((js_getPowerEfficient (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficient MediaTrackSettings.powerEfficient specification>
+getPowerEfficientUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getPowerEfficientUnchecked self = liftDOM ((pFromJSVal <$> (js_getPowerEfficient (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerEfficientPixelFormat\"] = $2; })"
+        js_setPowerEfficientPixelFormat :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficientpixelformat MediaTrackSettings.powerEfficientPixelFormat specification>
+setPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setPowerEfficientPixelFormat self val = liftDOM (void ((js_setPowerEfficientPixelFormat (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerEfficientPixelFormat\"]; })"
+        js_getPowerEfficientPixelFormat :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficientpixelformat MediaTrackSettings.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getPowerEfficientPixelFormat self = liftDOM (((js_getPowerEfficientPixelFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficientpixelformat MediaTrackSettings.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getPowerEfficientPixelFormatUnsafe self = liftDOM ((((js_getPowerEfficientPixelFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficientpixelformat MediaTrackSettings.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getPowerEfficientPixelFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getPowerEfficientPixelFormat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gestureReactions\"] = $2; })"
+        js_setGestureReactions :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-gesturereactions MediaTrackSettings.gestureReactions specification>
+setGestureReactions :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setGestureReactions self val = liftDOM (void ((js_setGestureReactions (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gestureReactions\"]; })"
+        js_getGestureReactions :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-gesturereactions MediaTrackSettings.gestureReactions specification>
+getGestureReactions :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getGestureReactions self = liftDOM (((js_getGestureReactions (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-gesturereactions MediaTrackSettings.gestureReactions specification>
+getGestureReactionsUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getGestureReactionsUnsafe self = liftDOM ((((js_getGestureReactions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-gesturereactions MediaTrackSettings.gestureReactions specification>
+getGestureReactionsUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getGestureReactionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getGestureReactions (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"faceFraming\"] = $2; })"
+        js_setFaceFraming :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-faceframing MediaTrackSettings.faceFraming specification>
+setFaceFraming :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setFaceFraming self val = liftDOM (void ((js_setFaceFraming (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"faceFraming\"]; })"
+        js_getFaceFraming :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-faceframing MediaTrackSettings.faceFraming specification>
+getFaceFraming :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getFaceFraming self = liftDOM (((js_getFaceFraming (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-faceframing MediaTrackSettings.faceFraming specification>
+getFaceFramingUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getFaceFramingUnsafe self = liftDOM ((((js_getFaceFraming (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-faceframing MediaTrackSettings.faceFraming specification>
+getFaceFramingUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getFaceFramingUnchecked self = liftDOM ((pFromJSVal <$> (js_getFaceFraming (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"eyeGazeCorrection\"] = $2; })"
+        js_setEyeGazeCorrection :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-eyegazecorrection MediaTrackSettings.eyeGazeCorrection specification>
+setEyeGazeCorrection :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setEyeGazeCorrection self val = liftDOM (void ((js_setEyeGazeCorrection (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"eyeGazeCorrection\"]; })"
+        js_getEyeGazeCorrection :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-eyegazecorrection MediaTrackSettings.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getEyeGazeCorrection self = liftDOM (((js_getEyeGazeCorrection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-eyegazecorrection MediaTrackSettings.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getEyeGazeCorrectionUnsafe self = liftDOM ((((js_getEyeGazeCorrection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-eyegazecorrection MediaTrackSettings.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getEyeGazeCorrectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getEyeGazeCorrection (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"voiceIsolation\"] = $2; })"
+        js_setVoiceIsolation :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-voiceisolation MediaTrackSettings.voiceIsolation specification>
+setVoiceIsolation :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setVoiceIsolation self val = liftDOM (void ((js_setVoiceIsolation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"voiceIsolation\"]; })"
+        js_getVoiceIsolation :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-voiceisolation MediaTrackSettings.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getVoiceIsolation self = liftDOM (((js_getVoiceIsolation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-voiceisolation MediaTrackSettings.voiceIsolation specification>
+getVoiceIsolationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getVoiceIsolationUnsafe self = liftDOM ((((js_getVoiceIsolation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-voiceisolation MediaTrackSettings.voiceIsolation specification>
+getVoiceIsolationUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getVoiceIsolationUnchecked self = liftDOM ((pFromJSVal <$> (js_getVoiceIsolation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"humanFaceDetectionMode\"] = $2; })"
+        js_setHumanFaceDetectionMode :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-humanfacedetectionmode MediaTrackSettings.humanFaceDetectionMode specification>
+setHumanFaceDetectionMode :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setHumanFaceDetectionMode self val = liftDOM (void ((js_setHumanFaceDetectionMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"humanFaceDetectionMode\"]; })"
+        js_getHumanFaceDetectionMode :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-humanfacedetectionmode MediaTrackSettings.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getHumanFaceDetectionMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getHumanFaceDetectionMode (self))))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-humanfacedetectionmode MediaTrackSettings.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getHumanFaceDetectionModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getHumanFaceDetectionMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-humanfacedetectionmode MediaTrackSettings.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getHumanFaceDetectionModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getHumanFaceDetectionMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundSegmentationMask\"] = $2; })"
+        js_setBackgroundSegmentationMask :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-backgroundsegmentationmask MediaTrackSettings.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void ((js_setBackgroundSegmentationMask (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundSegmentationMask\"]; })"
+        js_getBackgroundSegmentationMask :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-backgroundsegmentationmask MediaTrackSettings.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getBackgroundSegmentationMask self = liftDOM (((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-backgroundsegmentationmask MediaTrackSettings.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-backgroundsegmentationmask MediaTrackSettings.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getBackgroundSegmentationMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundSegmentationMask (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displaySurface\"] = $2; })"
+        js_setDisplaySurface :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-displaysurface MediaTrackSettings.displaySurface specification>
+setDisplaySurface :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setDisplaySurface self val = liftDOM (void ((js_setDisplaySurface (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displaySurface\"]; })"
+        js_getDisplaySurface :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-displaysurface MediaTrackSettings.displaySurface specification>
+getDisplaySurface :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getDisplaySurface self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDisplaySurface (self))))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-displaysurface MediaTrackSettings.displaySurface specification>
+getDisplaySurfaceUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getDisplaySurfaceUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDisplaySurface (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-displaysurface MediaTrackSettings.displaySurface specification>
+getDisplaySurfaceUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getDisplaySurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplaySurface (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"logicalSurface\"] = $2; })"
+        js_setLogicalSurface :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-logicalsurface MediaTrackSettings.logicalSurface specification>
+setLogicalSurface :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setLogicalSurface self val = liftDOM (void ((js_setLogicalSurface (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"logicalSurface\"]; })"
+        js_getLogicalSurface :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-logicalsurface MediaTrackSettings.logicalSurface specification>
+getLogicalSurface :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getLogicalSurface self = liftDOM (((js_getLogicalSurface (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-logicalsurface MediaTrackSettings.logicalSurface specification>
+getLogicalSurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getLogicalSurfaceUnsafe self = liftDOM ((((js_getLogicalSurface (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-logicalsurface MediaTrackSettings.logicalSurface specification>
+getLogicalSurfaceUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getLogicalSurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getLogicalSurface (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cursor\"] = $2; })"
+        js_setCursor :: MediaTrackSettings -> JSString -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-cursor MediaTrackSettings.cursor specification>
+setCursor :: (MonadDOM m, ToJSString val) => MediaTrackSettings -> val -> m ()
+setCursor self val = liftDOM (void ((js_setCursor (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cursor\"]; })"
+        js_getCursor :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-cursor MediaTrackSettings.cursor specification>
+getCursor :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getCursor self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCursor (self))))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-cursor MediaTrackSettings.cursor specification>
+getCursorUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getCursorUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCursor (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-cursor MediaTrackSettings.cursor specification>
+getCursorUnchecked :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m result
+getCursorUnchecked self = liftDOM ((pFromJSVal <$> (js_getCursor (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"restrictOwnAudio\"] = $2; })"
+        js_setRestrictOwnAudio :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-restrictownaudio MediaTrackSettings.restrictOwnAudio specification>
+setRestrictOwnAudio :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setRestrictOwnAudio self val = liftDOM (void ((js_setRestrictOwnAudio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"restrictOwnAudio\"]; })"
+        js_getRestrictOwnAudio :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-restrictownaudio MediaTrackSettings.restrictOwnAudio specification>
+getRestrictOwnAudio :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getRestrictOwnAudio self = liftDOM (((js_getRestrictOwnAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-restrictownaudio MediaTrackSettings.restrictOwnAudio specification>
+getRestrictOwnAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getRestrictOwnAudioUnsafe self = liftDOM ((((js_getRestrictOwnAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-restrictownaudio MediaTrackSettings.restrictOwnAudio specification>
+getRestrictOwnAudioUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getRestrictOwnAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getRestrictOwnAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"suppressLocalAudioPlayback\"] = $2; })"
+        js_setSuppressLocalAudioPlayback :: MediaTrackSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-suppresslocalaudioplayback MediaTrackSettings.suppressLocalAudioPlayback specification>
+setSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setSuppressLocalAudioPlayback self val = liftDOM (void ((js_setSuppressLocalAudioPlayback (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"suppressLocalAudioPlayback\"]; })"
+        js_getSuppressLocalAudioPlayback :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-suppresslocalaudioplayback MediaTrackSettings.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getSuppressLocalAudioPlayback self = liftDOM (((js_getSuppressLocalAudioPlayback (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-suppresslocalaudioplayback MediaTrackSettings.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getSuppressLocalAudioPlaybackUnsafe self = liftDOM ((((js_getSuppressLocalAudioPlayback (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-suppresslocalaudioplayback MediaTrackSettings.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Bool
+getSuppressLocalAudioPlaybackUnchecked self = liftDOM ((pFromJSVal <$> (js_getSuppressLocalAudioPlayback (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"screenPixelRatio\"] = $2; })"
+        js_setScreenPixelRatio :: MediaTrackSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-screenpixelratio MediaTrackSettings.screenPixelRatio specification>
+setScreenPixelRatio :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setScreenPixelRatio self val = liftDOM (void ((js_setScreenPixelRatio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenPixelRatio\"]; })"
+        js_getScreenPixelRatio :: MediaTrackSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-screenpixelratio MediaTrackSettings.screenPixelRatio specification>
+getScreenPixelRatio :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getScreenPixelRatio self = liftDOM (((js_getScreenPixelRatio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-screenpixelratio MediaTrackSettings.screenPixelRatio specification>
+getScreenPixelRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getScreenPixelRatioUnsafe self = liftDOM ((((js_getScreenPixelRatio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-screenpixelratio MediaTrackSettings.screenPixelRatio specification>
+getScreenPixelRatioUnchecked :: (MonadDOM m) => MediaTrackSettings -> m Double
+getScreenPixelRatioUnchecked self = liftDOM ((pFromJSVal <$> (js_getScreenPixelRatio (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaTrackSupportedConstraints.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackSupportedConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackSupportedConstraints.hs
@@ -0,0 +1,943 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MediaTrackSupportedConstraints
+       (js_newMediaTrackSupportedConstraints, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setAspectRatio, js_getAspectRatio, js_setFrameRate, js_getFrameRate, js_setFacingMode, js_getFacingMode, js_setResizeMode, js_getResizeMode, js_setSampleRate, js_getSampleRate, js_setSampleSize, js_getSampleSize, js_setEchoCancellation, js_getEchoCancellation, js_setAutoGainControl, js_getAutoGainControl, js_setNoiseSuppression, js_getNoiseSuppression, js_setLatency, js_getLatency, js_setChannelCount, js_getChannelCount, js_setDeviceId, js_getDeviceId, js_setGroupId, js_getGroupId, js_setBackgroundBlur, js_getBackgroundBlur, js_setWhiteBalanceMode, js_getWhiteBalanceMode, js_setExposureMode, js_getExposureMode, js_setFocusMode, js_getFocusMode, js_setPointsOfInterest, js_getPointsOfInterest, js_setExposureCompensation, js_getExposureCompensation, js_setExposureTime, js_getExposureTime, js_setColorTemperature, js_getColorTemperature, js_setIso, js_getIso, js_setBrightness, js_getBrightness, js_setContrast, js_getContrast, js_setPan, js_getPan, js_setSaturation, js_getSaturation, js_setSharpness, js_getSharpness, js_setFocusDistance, js_getFocusDistance, js_setTilt, js_getTilt, js_setZoom, js_getZoom, js_setTorch, js_getTorch, js_setPowerEfficient, js_getPowerEfficient, js_setPowerEfficientPixelFormat, js_getPowerEfficientPixelFormat, js_setGestureReactions, js_getGestureReactions, js_setFaceFraming, js_getFaceFraming, js_setEyeGazeCorrection, js_getEyeGazeCorrection, js_setVoiceIsolation, js_getVoiceIsolation, js_setHumanFaceDetectionMode, js_getHumanFaceDetectionMode, js_setBackgroundSegmentationMask, js_getBackgroundSegmentationMask, js_setDisplaySurface, js_getDisplaySurface, js_setLogicalSurface, js_getLogicalSurface, js_setCursor, js_getCursor, js_setRestrictOwnAudio, js_getRestrictOwnAudio, js_setSuppressLocalAudioPlayback, js_getSuppressLocalAudioPlayback, newMediaTrackSupportedConstraints, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setAspectRatio, getAspectRatio, getAspectRatioUnsafe, getAspectRatioUnchecked, setFrameRate, getFrameRate, getFrameRateUnsafe, getFrameRateUnchecked, setFacingMode, getFacingMode, getFacingModeUnsafe, getFacingModeUnchecked, setResizeMode, getResizeMode, getResizeModeUnsafe, getResizeModeUnchecked, setSampleRate, getSampleRate, getSampleRateUnsafe, getSampleRateUnchecked, setSampleSize, getSampleSize, getSampleSizeUnsafe, getSampleSizeUnchecked, setEchoCancellation, getEchoCancellation, getEchoCancellationUnsafe, getEchoCancellationUnchecked, setAutoGainControl, getAutoGainControl, getAutoGainControlUnsafe, getAutoGainControlUnchecked, setNoiseSuppression, getNoiseSuppression, getNoiseSuppressionUnsafe, getNoiseSuppressionUnchecked, setLatency, getLatency, getLatencyUnsafe, getLatencyUnchecked, setChannelCount, getChannelCount, getChannelCountUnsafe, getChannelCountUnchecked, setDeviceId, getDeviceId, getDeviceIdUnsafe, getDeviceIdUnchecked, setGroupId, getGroupId, getGroupIdUnsafe, getGroupIdUnchecked, setBackgroundBlur, getBackgroundBlur, getBackgroundBlurUnsafe, getBackgroundBlurUnchecked, setWhiteBalanceMode, getWhiteBalanceMode, getWhiteBalanceModeUnsafe, getWhiteBalanceModeUnchecked, setExposureMode, getExposureMode, getExposureModeUnsafe, getExposureModeUnchecked, setFocusMode, getFocusMode, getFocusModeUnsafe, getFocusModeUnchecked, setPointsOfInterest, getPointsOfInterest, getPointsOfInterestUnsafe, getPointsOfInterestUnchecked, setExposureCompensation, getExposureCompensation, getExposureCompensationUnsafe, getExposureCompensationUnchecked, setExposureTime, getExposureTime, getExposureTimeUnsafe, getExposureTimeUnchecked, setColorTemperature, getColorTemperature, getColorTemperatureUnsafe, getColorTemperatureUnchecked, setIso, getIso, getIsoUnsafe, getIsoUnchecked, setBrightness, getBrightness, getBrightnessUnsafe, getBrightnessUnchecked, setContrast, getContrast, getContrastUnsafe, getContrastUnchecked, setPan, getPan, getPanUnsafe, getPanUnchecked, setSaturation, getSaturation, getSaturationUnsafe, getSaturationUnchecked, setSharpness, getSharpness, getSharpnessUnsafe, getSharpnessUnchecked, setFocusDistance, getFocusDistance, getFocusDistanceUnsafe, getFocusDistanceUnchecked, setTilt, getTilt, getTiltUnsafe, getTiltUnchecked, setZoom, getZoom, getZoomUnsafe, getZoomUnchecked, setTorch, getTorch, getTorchUnsafe, getTorchUnchecked, setPowerEfficient, getPowerEfficient, getPowerEfficientUnsafe, getPowerEfficientUnchecked, setPowerEfficientPixelFormat, getPowerEfficientPixelFormat, getPowerEfficientPixelFormatUnsafe, getPowerEfficientPixelFormatUnchecked, setGestureReactions, getGestureReactions, getGestureReactionsUnsafe, getGestureReactionsUnchecked, setFaceFraming, getFaceFraming, getFaceFramingUnsafe, getFaceFramingUnchecked, setEyeGazeCorrection, getEyeGazeCorrection, getEyeGazeCorrectionUnsafe, getEyeGazeCorrectionUnchecked, setVoiceIsolation, getVoiceIsolation, getVoiceIsolationUnsafe, getVoiceIsolationUnchecked, setHumanFaceDetectionMode, getHumanFaceDetectionMode, getHumanFaceDetectionModeUnsafe, getHumanFaceDetectionModeUnchecked, setBackgroundSegmentationMask, getBackgroundSegmentationMask, getBackgroundSegmentationMaskUnsafe, getBackgroundSegmentationMaskUnchecked, setDisplaySurface, getDisplaySurface, getDisplaySurfaceUnsafe, getDisplaySurfaceUnchecked, setLogicalSurface, getLogicalSurface, getLogicalSurfaceUnsafe, getLogicalSurfaceUnchecked, setCursor, getCursor, getCursorUnsafe, getCursorUnchecked, setRestrictOwnAudio, getRestrictOwnAudio, getRestrictOwnAudioUnsafe, getRestrictOwnAudioUnchecked, setSuppressLocalAudioPlayback, getSuppressLocalAudioPlayback, getSuppressLocalAudioPlaybackUnsafe, getSuppressLocalAudioPlaybackUnchecked, MediaTrackSupportedConstraints(..), gTypeMediaTrackSupportedConstraints)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMediaTrackSupportedConstraints :: IO MediaTrackSupportedConstraints
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints MediaTrackSupportedConstraints specification>
+newMediaTrackSupportedConstraints :: (MonadDOM m) => m MediaTrackSupportedConstraints
+newMediaTrackSupportedConstraints = liftDOM ((js_newMediaTrackSupportedConstraints))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-width MediaTrackSupportedConstraints.width specification>
+setWidth :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-width MediaTrackSupportedConstraints.width specification>
+getWidth :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-width MediaTrackSupportedConstraints.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getWidthUnsafe self = liftDOM ((((js_getWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-width MediaTrackSupportedConstraints.width specification>
+getWidthUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-height MediaTrackSupportedConstraints.height specification>
+setHeight :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-height MediaTrackSupportedConstraints.height specification>
+getHeight :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-height MediaTrackSupportedConstraints.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-height MediaTrackSupportedConstraints.height specification>
+getHeightUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"aspectRatio\"] = $2; })"
+        js_setAspectRatio :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-aspectratio MediaTrackSupportedConstraints.aspectRatio specification>
+setAspectRatio :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setAspectRatio self val = liftDOM (void ((js_setAspectRatio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"aspectRatio\"]; })"
+        js_getAspectRatio :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-aspectratio MediaTrackSupportedConstraints.aspectRatio specification>
+getAspectRatio :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getAspectRatio self = liftDOM (((js_getAspectRatio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-aspectratio MediaTrackSupportedConstraints.aspectRatio specification>
+getAspectRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getAspectRatioUnsafe self = liftDOM ((((js_getAspectRatio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-aspectratio MediaTrackSupportedConstraints.aspectRatio specification>
+getAspectRatioUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getAspectRatioUnchecked self = liftDOM ((pFromJSVal <$> (js_getAspectRatio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameRate\"] = $2; })"
+        js_setFrameRate :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-framerate MediaTrackSupportedConstraints.frameRate specification>
+setFrameRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFrameRate self val = liftDOM (void ((js_setFrameRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameRate\"]; })"
+        js_getFrameRate :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-framerate MediaTrackSupportedConstraints.frameRate specification>
+getFrameRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFrameRate self = liftDOM (((js_getFrameRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-framerate MediaTrackSupportedConstraints.frameRate specification>
+getFrameRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFrameRateUnsafe self = liftDOM ((((js_getFrameRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-framerate MediaTrackSupportedConstraints.frameRate specification>
+getFrameRateUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getFrameRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"facingMode\"] = $2; })"
+        js_setFacingMode :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-facingmode MediaTrackSupportedConstraints.facingMode specification>
+setFacingMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFacingMode self val = liftDOM (void ((js_setFacingMode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"facingMode\"]; })"
+        js_getFacingMode :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-facingmode MediaTrackSupportedConstraints.facingMode specification>
+getFacingMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFacingMode self = liftDOM (((js_getFacingMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-facingmode MediaTrackSupportedConstraints.facingMode specification>
+getFacingModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFacingModeUnsafe self = liftDOM ((((js_getFacingMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-facingmode MediaTrackSupportedConstraints.facingMode specification>
+getFacingModeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getFacingModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFacingMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resizeMode\"] = $2; })"
+        js_setResizeMode :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-resizemode MediaTrackSupportedConstraints.resizeMode specification>
+setResizeMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setResizeMode self val = liftDOM (void ((js_setResizeMode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resizeMode\"]; })"
+        js_getResizeMode :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-resizemode MediaTrackSupportedConstraints.resizeMode specification>
+getResizeMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getResizeMode self = liftDOM (((js_getResizeMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-resizemode MediaTrackSupportedConstraints.resizeMode specification>
+getResizeModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getResizeModeUnsafe self = liftDOM ((((js_getResizeMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-resizemode MediaTrackSupportedConstraints.resizeMode specification>
+getResizeModeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getResizeModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getResizeMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplerate MediaTrackSupportedConstraints.sampleRate specification>
+setSampleRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplerate MediaTrackSupportedConstraints.sampleRate specification>
+getSampleRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSampleRate self = liftDOM (((js_getSampleRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplerate MediaTrackSupportedConstraints.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSampleRateUnsafe self = liftDOM ((((js_getSampleRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplerate MediaTrackSupportedConstraints.sampleRate specification>
+getSampleRateUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getSampleRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleSize\"] = $2; })"
+        js_setSampleSize :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplesize MediaTrackSupportedConstraints.sampleSize specification>
+setSampleSize :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSampleSize self val = liftDOM (void ((js_setSampleSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleSize\"]; })"
+        js_getSampleSize :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplesize MediaTrackSupportedConstraints.sampleSize specification>
+getSampleSize :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSampleSize self = liftDOM (((js_getSampleSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplesize MediaTrackSupportedConstraints.sampleSize specification>
+getSampleSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSampleSizeUnsafe self = liftDOM ((((js_getSampleSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplesize MediaTrackSupportedConstraints.sampleSize specification>
+getSampleSizeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getSampleSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSampleSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"echoCancellation\"] = $2; })"
+        js_setEchoCancellation :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-echocancellation MediaTrackSupportedConstraints.echoCancellation specification>
+setEchoCancellation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setEchoCancellation self val = liftDOM (void ((js_setEchoCancellation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"echoCancellation\"]; })"
+        js_getEchoCancellation :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-echocancellation MediaTrackSupportedConstraints.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getEchoCancellation self = liftDOM (((js_getEchoCancellation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-echocancellation MediaTrackSupportedConstraints.echoCancellation specification>
+getEchoCancellationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getEchoCancellationUnsafe self = liftDOM ((((js_getEchoCancellation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-echocancellation MediaTrackSupportedConstraints.echoCancellation specification>
+getEchoCancellationUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getEchoCancellationUnchecked self = liftDOM ((pFromJSVal <$> (js_getEchoCancellation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"autoGainControl\"] = $2; })"
+        js_setAutoGainControl :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-autogaincontrol MediaTrackSupportedConstraints.autoGainControl specification>
+setAutoGainControl :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setAutoGainControl self val = liftDOM (void ((js_setAutoGainControl (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"autoGainControl\"]; })"
+        js_getAutoGainControl :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-autogaincontrol MediaTrackSupportedConstraints.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getAutoGainControl self = liftDOM (((js_getAutoGainControl (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-autogaincontrol MediaTrackSupportedConstraints.autoGainControl specification>
+getAutoGainControlUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getAutoGainControlUnsafe self = liftDOM ((((js_getAutoGainControl (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-autogaincontrol MediaTrackSupportedConstraints.autoGainControl specification>
+getAutoGainControlUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getAutoGainControlUnchecked self = liftDOM ((pFromJSVal <$> (js_getAutoGainControl (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"noiseSuppression\"] = $2; })"
+        js_setNoiseSuppression :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-noisesuppression MediaTrackSupportedConstraints.noiseSuppression specification>
+setNoiseSuppression :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setNoiseSuppression self val = liftDOM (void ((js_setNoiseSuppression (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"noiseSuppression\"]; })"
+        js_getNoiseSuppression :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-noisesuppression MediaTrackSupportedConstraints.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getNoiseSuppression self = liftDOM (((js_getNoiseSuppression (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-noisesuppression MediaTrackSupportedConstraints.noiseSuppression specification>
+getNoiseSuppressionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getNoiseSuppressionUnsafe self = liftDOM ((((js_getNoiseSuppression (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-noisesuppression MediaTrackSupportedConstraints.noiseSuppression specification>
+getNoiseSuppressionUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getNoiseSuppressionUnchecked self = liftDOM ((pFromJSVal <$> (js_getNoiseSuppression (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"latency\"] = $2; })"
+        js_setLatency :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-latency MediaTrackSupportedConstraints.latency specification>
+setLatency :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setLatency self val = liftDOM (void ((js_setLatency (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"latency\"]; })"
+        js_getLatency :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-latency MediaTrackSupportedConstraints.latency specification>
+getLatency :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getLatency self = liftDOM (((js_getLatency (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-latency MediaTrackSupportedConstraints.latency specification>
+getLatencyUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getLatencyUnsafe self = liftDOM ((((js_getLatency (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-latency MediaTrackSupportedConstraints.latency specification>
+getLatencyUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getLatencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getLatency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channelCount\"] = $2; })"
+        js_setChannelCount :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-channelcount MediaTrackSupportedConstraints.channelCount specification>
+setChannelCount :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setChannelCount self val = liftDOM (void ((js_setChannelCount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channelCount\"]; })"
+        js_getChannelCount :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-channelcount MediaTrackSupportedConstraints.channelCount specification>
+getChannelCount :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getChannelCount self = liftDOM (((js_getChannelCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-channelcount MediaTrackSupportedConstraints.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getChannelCountUnsafe self = liftDOM ((((js_getChannelCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-channelcount MediaTrackSupportedConstraints.channelCount specification>
+getChannelCountUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getChannelCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannelCount (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deviceId\"] = $2; })"
+        js_setDeviceId :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-deviceid MediaTrackSupportedConstraints.deviceId specification>
+setDeviceId :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setDeviceId self val = liftDOM (void ((js_setDeviceId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deviceId\"]; })"
+        js_getDeviceId :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-deviceid MediaTrackSupportedConstraints.deviceId specification>
+getDeviceId :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getDeviceId self = liftDOM (((js_getDeviceId (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-deviceid MediaTrackSupportedConstraints.deviceId specification>
+getDeviceIdUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getDeviceIdUnsafe self = liftDOM ((((js_getDeviceId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-deviceid MediaTrackSupportedConstraints.deviceId specification>
+getDeviceIdUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getDeviceIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeviceId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"groupId\"] = $2; })"
+        js_setGroupId :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-groupid MediaTrackSupportedConstraints.groupId specification>
+setGroupId :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setGroupId self val = liftDOM (void ((js_setGroupId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"groupId\"]; })"
+        js_getGroupId :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-groupid MediaTrackSupportedConstraints.groupId specification>
+getGroupId :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getGroupId self = liftDOM (((js_getGroupId (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-groupid MediaTrackSupportedConstraints.groupId specification>
+getGroupIdUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getGroupIdUnsafe self = liftDOM ((((js_getGroupId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-groupid MediaTrackSupportedConstraints.groupId specification>
+getGroupIdUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getGroupIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getGroupId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundBlur\"] = $2; })"
+        js_setBackgroundBlur :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-backgroundblur MediaTrackSupportedConstraints.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setBackgroundBlur self val = liftDOM (void ((js_setBackgroundBlur (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundBlur\"]; })"
+        js_getBackgroundBlur :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-backgroundblur MediaTrackSupportedConstraints.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getBackgroundBlur self = liftDOM (((js_getBackgroundBlur (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-backgroundblur MediaTrackSupportedConstraints.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getBackgroundBlurUnsafe self = liftDOM ((((js_getBackgroundBlur (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-backgroundblur MediaTrackSupportedConstraints.backgroundBlur specification>
+getBackgroundBlurUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getBackgroundBlurUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundBlur (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"whiteBalanceMode\"] = $2; })"
+        js_setWhiteBalanceMode :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-whitebalancemode MediaTrackSupportedConstraints.whiteBalanceMode specification>
+setWhiteBalanceMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setWhiteBalanceMode self val = liftDOM (void ((js_setWhiteBalanceMode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"whiteBalanceMode\"]; })"
+        js_getWhiteBalanceMode :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-whitebalancemode MediaTrackSupportedConstraints.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getWhiteBalanceMode self = liftDOM (((js_getWhiteBalanceMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-whitebalancemode MediaTrackSupportedConstraints.whiteBalanceMode specification>
+getWhiteBalanceModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getWhiteBalanceModeUnsafe self = liftDOM ((((js_getWhiteBalanceMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-whitebalancemode MediaTrackSupportedConstraints.whiteBalanceMode specification>
+getWhiteBalanceModeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getWhiteBalanceModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getWhiteBalanceMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureMode\"] = $2; })"
+        js_setExposureMode :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuremode MediaTrackSupportedConstraints.exposureMode specification>
+setExposureMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setExposureMode self val = liftDOM (void ((js_setExposureMode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureMode\"]; })"
+        js_getExposureMode :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuremode MediaTrackSupportedConstraints.exposureMode specification>
+getExposureMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getExposureMode self = liftDOM (((js_getExposureMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuremode MediaTrackSupportedConstraints.exposureMode specification>
+getExposureModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getExposureModeUnsafe self = liftDOM ((((js_getExposureMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuremode MediaTrackSupportedConstraints.exposureMode specification>
+getExposureModeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getExposureModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusMode\"] = $2; })"
+        js_setFocusMode :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusmode MediaTrackSupportedConstraints.focusMode specification>
+setFocusMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFocusMode self val = liftDOM (void ((js_setFocusMode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusMode\"]; })"
+        js_getFocusMode :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusmode MediaTrackSupportedConstraints.focusMode specification>
+getFocusMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFocusMode self = liftDOM (((js_getFocusMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusmode MediaTrackSupportedConstraints.focusMode specification>
+getFocusModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFocusModeUnsafe self = liftDOM ((((js_getFocusMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusmode MediaTrackSupportedConstraints.focusMode specification>
+getFocusModeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getFocusModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pointsOfInterest\"] = $2; })"
+        js_setPointsOfInterest :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pointsofinterest MediaTrackSupportedConstraints.pointsOfInterest specification>
+setPointsOfInterest :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPointsOfInterest self val = liftDOM (void ((js_setPointsOfInterest (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pointsOfInterest\"]; })"
+        js_getPointsOfInterest :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pointsofinterest MediaTrackSupportedConstraints.pointsOfInterest specification>
+getPointsOfInterest :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPointsOfInterest self = liftDOM (((js_getPointsOfInterest (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pointsofinterest MediaTrackSupportedConstraints.pointsOfInterest specification>
+getPointsOfInterestUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPointsOfInterestUnsafe self = liftDOM ((((js_getPointsOfInterest (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pointsofinterest MediaTrackSupportedConstraints.pointsOfInterest specification>
+getPointsOfInterestUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getPointsOfInterestUnchecked self = liftDOM ((pFromJSVal <$> (js_getPointsOfInterest (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureCompensation\"] = $2; })"
+        js_setExposureCompensation :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposurecompensation MediaTrackSupportedConstraints.exposureCompensation specification>
+setExposureCompensation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setExposureCompensation self val = liftDOM (void ((js_setExposureCompensation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureCompensation\"]; })"
+        js_getExposureCompensation :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposurecompensation MediaTrackSupportedConstraints.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getExposureCompensation self = liftDOM (((js_getExposureCompensation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposurecompensation MediaTrackSupportedConstraints.exposureCompensation specification>
+getExposureCompensationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getExposureCompensationUnsafe self = liftDOM ((((js_getExposureCompensation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposurecompensation MediaTrackSupportedConstraints.exposureCompensation specification>
+getExposureCompensationUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getExposureCompensationUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureCompensation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"exposureTime\"] = $2; })"
+        js_setExposureTime :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuretime MediaTrackSupportedConstraints.exposureTime specification>
+setExposureTime :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setExposureTime self val = liftDOM (void ((js_setExposureTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"exposureTime\"]; })"
+        js_getExposureTime :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuretime MediaTrackSupportedConstraints.exposureTime specification>
+getExposureTime :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getExposureTime self = liftDOM (((js_getExposureTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuretime MediaTrackSupportedConstraints.exposureTime specification>
+getExposureTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getExposureTimeUnsafe self = liftDOM ((((js_getExposureTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuretime MediaTrackSupportedConstraints.exposureTime specification>
+getExposureTimeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getExposureTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExposureTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorTemperature\"] = $2; })"
+        js_setColorTemperature :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-colortemperature MediaTrackSupportedConstraints.colorTemperature specification>
+setColorTemperature :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setColorTemperature self val = liftDOM (void ((js_setColorTemperature (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorTemperature\"]; })"
+        js_getColorTemperature :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-colortemperature MediaTrackSupportedConstraints.colorTemperature specification>
+getColorTemperature :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getColorTemperature self = liftDOM (((js_getColorTemperature (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-colortemperature MediaTrackSupportedConstraints.colorTemperature specification>
+getColorTemperatureUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getColorTemperatureUnsafe self = liftDOM ((((js_getColorTemperature (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-colortemperature MediaTrackSupportedConstraints.colorTemperature specification>
+getColorTemperatureUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getColorTemperatureUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorTemperature (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iso\"] = $2; })"
+        js_setIso :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-iso MediaTrackSupportedConstraints.iso specification>
+setIso :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setIso self val = liftDOM (void ((js_setIso (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iso\"]; })"
+        js_getIso :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-iso MediaTrackSupportedConstraints.iso specification>
+getIso :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getIso self = liftDOM (((js_getIso (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-iso MediaTrackSupportedConstraints.iso specification>
+getIsoUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getIsoUnsafe self = liftDOM ((((js_getIso (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-iso MediaTrackSupportedConstraints.iso specification>
+getIsoUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getIsoUnchecked self = liftDOM ((pFromJSVal <$> (js_getIso (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"brightness\"] = $2; })"
+        js_setBrightness :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-brightness MediaTrackSupportedConstraints.brightness specification>
+setBrightness :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setBrightness self val = liftDOM (void ((js_setBrightness (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"brightness\"]; })"
+        js_getBrightness :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-brightness MediaTrackSupportedConstraints.brightness specification>
+getBrightness :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getBrightness self = liftDOM (((js_getBrightness (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-brightness MediaTrackSupportedConstraints.brightness specification>
+getBrightnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getBrightnessUnsafe self = liftDOM ((((js_getBrightness (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-brightness MediaTrackSupportedConstraints.brightness specification>
+getBrightnessUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getBrightnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getBrightness (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contrast\"] = $2; })"
+        js_setContrast :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-contrast MediaTrackSupportedConstraints.contrast specification>
+setContrast :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setContrast self val = liftDOM (void ((js_setContrast (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contrast\"]; })"
+        js_getContrast :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-contrast MediaTrackSupportedConstraints.contrast specification>
+getContrast :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getContrast self = liftDOM (((js_getContrast (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-contrast MediaTrackSupportedConstraints.contrast specification>
+getContrastUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getContrastUnsafe self = liftDOM ((((js_getContrast (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-contrast MediaTrackSupportedConstraints.contrast specification>
+getContrastUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getContrastUnchecked self = liftDOM ((pFromJSVal <$> (js_getContrast (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pan\"] = $2; })"
+        js_setPan :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pan MediaTrackSupportedConstraints.pan specification>
+setPan :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPan self val = liftDOM (void ((js_setPan (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pan\"]; })"
+        js_getPan :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pan MediaTrackSupportedConstraints.pan specification>
+getPan :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPan self = liftDOM (((js_getPan (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pan MediaTrackSupportedConstraints.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPanUnsafe self = liftDOM ((((js_getPan (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pan MediaTrackSupportedConstraints.pan specification>
+getPanUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getPanUnchecked self = liftDOM ((pFromJSVal <$> (js_getPan (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"saturation\"] = $2; })"
+        js_setSaturation :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-saturation MediaTrackSupportedConstraints.saturation specification>
+setSaturation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSaturation self val = liftDOM (void ((js_setSaturation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"saturation\"]; })"
+        js_getSaturation :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-saturation MediaTrackSupportedConstraints.saturation specification>
+getSaturation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSaturation self = liftDOM (((js_getSaturation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-saturation MediaTrackSupportedConstraints.saturation specification>
+getSaturationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSaturationUnsafe self = liftDOM ((((js_getSaturation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-saturation MediaTrackSupportedConstraints.saturation specification>
+getSaturationUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getSaturationUnchecked self = liftDOM ((pFromJSVal <$> (js_getSaturation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sharpness\"] = $2; })"
+        js_setSharpness :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-sharpness MediaTrackSupportedConstraints.sharpness specification>
+setSharpness :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSharpness self val = liftDOM (void ((js_setSharpness (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sharpness\"]; })"
+        js_getSharpness :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-sharpness MediaTrackSupportedConstraints.sharpness specification>
+getSharpness :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSharpness self = liftDOM (((js_getSharpness (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-sharpness MediaTrackSupportedConstraints.sharpness specification>
+getSharpnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSharpnessUnsafe self = liftDOM ((((js_getSharpness (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-sharpness MediaTrackSupportedConstraints.sharpness specification>
+getSharpnessUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getSharpnessUnchecked self = liftDOM ((pFromJSVal <$> (js_getSharpness (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusDistance\"] = $2; })"
+        js_setFocusDistance :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusdistance MediaTrackSupportedConstraints.focusDistance specification>
+setFocusDistance :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFocusDistance self val = liftDOM (void ((js_setFocusDistance (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusDistance\"]; })"
+        js_getFocusDistance :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusdistance MediaTrackSupportedConstraints.focusDistance specification>
+getFocusDistance :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFocusDistance self = liftDOM (((js_getFocusDistance (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusdistance MediaTrackSupportedConstraints.focusDistance specification>
+getFocusDistanceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFocusDistanceUnsafe self = liftDOM ((((js_getFocusDistance (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusdistance MediaTrackSupportedConstraints.focusDistance specification>
+getFocusDistanceUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getFocusDistanceUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusDistance (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tilt\"] = $2; })"
+        js_setTilt :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-tilt MediaTrackSupportedConstraints.tilt specification>
+setTilt :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setTilt self val = liftDOM (void ((js_setTilt (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tilt\"]; })"
+        js_getTilt :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-tilt MediaTrackSupportedConstraints.tilt specification>
+getTilt :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getTilt self = liftDOM (((js_getTilt (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-tilt MediaTrackSupportedConstraints.tilt specification>
+getTiltUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getTiltUnsafe self = liftDOM ((((js_getTilt (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-tilt MediaTrackSupportedConstraints.tilt specification>
+getTiltUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getTiltUnchecked self = liftDOM ((pFromJSVal <$> (js_getTilt (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"zoom\"] = $2; })"
+        js_setZoom :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-zoom MediaTrackSupportedConstraints.zoom specification>
+setZoom :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setZoom self val = liftDOM (void ((js_setZoom (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"zoom\"]; })"
+        js_getZoom :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-zoom MediaTrackSupportedConstraints.zoom specification>
+getZoom :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getZoom self = liftDOM (((js_getZoom (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-zoom MediaTrackSupportedConstraints.zoom specification>
+getZoomUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getZoomUnsafe self = liftDOM ((((js_getZoom (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-zoom MediaTrackSupportedConstraints.zoom specification>
+getZoomUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getZoomUnchecked self = liftDOM ((pFromJSVal <$> (js_getZoom (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"torch\"] = $2; })"
+        js_setTorch :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-torch MediaTrackSupportedConstraints.torch specification>
+setTorch :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setTorch self val = liftDOM (void ((js_setTorch (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"torch\"]; })"
+        js_getTorch :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-torch MediaTrackSupportedConstraints.torch specification>
+getTorch :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getTorch self = liftDOM (((js_getTorch (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-torch MediaTrackSupportedConstraints.torch specification>
+getTorchUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getTorchUnsafe self = liftDOM ((((js_getTorch (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-torch MediaTrackSupportedConstraints.torch specification>
+getTorchUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getTorchUnchecked self = liftDOM ((pFromJSVal <$> (js_getTorch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerEfficient\"] = $2; })"
+        js_setPowerEfficient :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficient MediaTrackSupportedConstraints.powerEfficient specification>
+setPowerEfficient :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPowerEfficient self val = liftDOM (void ((js_setPowerEfficient (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerEfficient\"]; })"
+        js_getPowerEfficient :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficient MediaTrackSupportedConstraints.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPowerEfficient self = liftDOM (((js_getPowerEfficient (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficient MediaTrackSupportedConstraints.powerEfficient specification>
+getPowerEfficientUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPowerEfficientUnsafe self = liftDOM ((((js_getPowerEfficient (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficient MediaTrackSupportedConstraints.powerEfficient specification>
+getPowerEfficientUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getPowerEfficientUnchecked self = liftDOM ((pFromJSVal <$> (js_getPowerEfficient (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerEfficientPixelFormat\"] = $2; })"
+        js_setPowerEfficientPixelFormat :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficientpixelformat MediaTrackSupportedConstraints.powerEfficientPixelFormat specification>
+setPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPowerEfficientPixelFormat self val = liftDOM (void ((js_setPowerEfficientPixelFormat (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerEfficientPixelFormat\"]; })"
+        js_getPowerEfficientPixelFormat :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficientpixelformat MediaTrackSupportedConstraints.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPowerEfficientPixelFormat self = liftDOM (((js_getPowerEfficientPixelFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficientpixelformat MediaTrackSupportedConstraints.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPowerEfficientPixelFormatUnsafe self = liftDOM ((((js_getPowerEfficientPixelFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficientpixelformat MediaTrackSupportedConstraints.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getPowerEfficientPixelFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getPowerEfficientPixelFormat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"gestureReactions\"] = $2; })"
+        js_setGestureReactions :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-gesturereactions MediaTrackSupportedConstraints.gestureReactions specification>
+setGestureReactions :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setGestureReactions self val = liftDOM (void ((js_setGestureReactions (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"gestureReactions\"]; })"
+        js_getGestureReactions :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-gesturereactions MediaTrackSupportedConstraints.gestureReactions specification>
+getGestureReactions :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getGestureReactions self = liftDOM (((js_getGestureReactions (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-gesturereactions MediaTrackSupportedConstraints.gestureReactions specification>
+getGestureReactionsUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getGestureReactionsUnsafe self = liftDOM ((((js_getGestureReactions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-gesturereactions MediaTrackSupportedConstraints.gestureReactions specification>
+getGestureReactionsUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getGestureReactionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getGestureReactions (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"faceFraming\"] = $2; })"
+        js_setFaceFraming :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-faceframing MediaTrackSupportedConstraints.faceFraming specification>
+setFaceFraming :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFaceFraming self val = liftDOM (void ((js_setFaceFraming (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"faceFraming\"]; })"
+        js_getFaceFraming :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-faceframing MediaTrackSupportedConstraints.faceFraming specification>
+getFaceFraming :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFaceFraming self = liftDOM (((js_getFaceFraming (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-faceframing MediaTrackSupportedConstraints.faceFraming specification>
+getFaceFramingUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFaceFramingUnsafe self = liftDOM ((((js_getFaceFraming (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-faceframing MediaTrackSupportedConstraints.faceFraming specification>
+getFaceFramingUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getFaceFramingUnchecked self = liftDOM ((pFromJSVal <$> (js_getFaceFraming (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"eyeGazeCorrection\"] = $2; })"
+        js_setEyeGazeCorrection :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-eyegazecorrection MediaTrackSupportedConstraints.eyeGazeCorrection specification>
+setEyeGazeCorrection :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setEyeGazeCorrection self val = liftDOM (void ((js_setEyeGazeCorrection (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"eyeGazeCorrection\"]; })"
+        js_getEyeGazeCorrection :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-eyegazecorrection MediaTrackSupportedConstraints.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getEyeGazeCorrection self = liftDOM (((js_getEyeGazeCorrection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-eyegazecorrection MediaTrackSupportedConstraints.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getEyeGazeCorrectionUnsafe self = liftDOM ((((js_getEyeGazeCorrection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-eyegazecorrection MediaTrackSupportedConstraints.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getEyeGazeCorrectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getEyeGazeCorrection (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"voiceIsolation\"] = $2; })"
+        js_setVoiceIsolation :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-voiceisolation MediaTrackSupportedConstraints.voiceIsolation specification>
+setVoiceIsolation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setVoiceIsolation self val = liftDOM (void ((js_setVoiceIsolation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"voiceIsolation\"]; })"
+        js_getVoiceIsolation :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-voiceisolation MediaTrackSupportedConstraints.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getVoiceIsolation self = liftDOM (((js_getVoiceIsolation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-voiceisolation MediaTrackSupportedConstraints.voiceIsolation specification>
+getVoiceIsolationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getVoiceIsolationUnsafe self = liftDOM ((((js_getVoiceIsolation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-voiceisolation MediaTrackSupportedConstraints.voiceIsolation specification>
+getVoiceIsolationUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getVoiceIsolationUnchecked self = liftDOM ((pFromJSVal <$> (js_getVoiceIsolation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"humanFaceDetectionMode\"] = $2; })"
+        js_setHumanFaceDetectionMode :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-humanfacedetectionmode MediaTrackSupportedConstraints.humanFaceDetectionMode specification>
+setHumanFaceDetectionMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setHumanFaceDetectionMode self val = liftDOM (void ((js_setHumanFaceDetectionMode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"humanFaceDetectionMode\"]; })"
+        js_getHumanFaceDetectionMode :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-humanfacedetectionmode MediaTrackSupportedConstraints.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getHumanFaceDetectionMode self = liftDOM (((js_getHumanFaceDetectionMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-humanfacedetectionmode MediaTrackSupportedConstraints.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getHumanFaceDetectionModeUnsafe self = liftDOM ((((js_getHumanFaceDetectionMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-humanfacedetectionmode MediaTrackSupportedConstraints.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getHumanFaceDetectionModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getHumanFaceDetectionMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundSegmentationMask\"] = $2; })"
+        js_setBackgroundSegmentationMask :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-backgroundsegmentationmask MediaTrackSupportedConstraints.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void ((js_setBackgroundSegmentationMask (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundSegmentationMask\"]; })"
+        js_getBackgroundSegmentationMask :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-backgroundsegmentationmask MediaTrackSupportedConstraints.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getBackgroundSegmentationMask self = liftDOM (((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-backgroundsegmentationmask MediaTrackSupportedConstraints.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-backgroundsegmentationmask MediaTrackSupportedConstraints.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getBackgroundSegmentationMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundSegmentationMask (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displaySurface\"] = $2; })"
+        js_setDisplaySurface :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-displaysurface MediaTrackSupportedConstraints.displaySurface specification>
+setDisplaySurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setDisplaySurface self val = liftDOM (void ((js_setDisplaySurface (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displaySurface\"]; })"
+        js_getDisplaySurface :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-displaysurface MediaTrackSupportedConstraints.displaySurface specification>
+getDisplaySurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getDisplaySurface self = liftDOM (((js_getDisplaySurface (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-displaysurface MediaTrackSupportedConstraints.displaySurface specification>
+getDisplaySurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getDisplaySurfaceUnsafe self = liftDOM ((((js_getDisplaySurface (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-displaysurface MediaTrackSupportedConstraints.displaySurface specification>
+getDisplaySurfaceUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getDisplaySurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplaySurface (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"logicalSurface\"] = $2; })"
+        js_setLogicalSurface :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-logicalsurface MediaTrackSupportedConstraints.logicalSurface specification>
+setLogicalSurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setLogicalSurface self val = liftDOM (void ((js_setLogicalSurface (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"logicalSurface\"]; })"
+        js_getLogicalSurface :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-logicalsurface MediaTrackSupportedConstraints.logicalSurface specification>
+getLogicalSurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getLogicalSurface self = liftDOM (((js_getLogicalSurface (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-logicalsurface MediaTrackSupportedConstraints.logicalSurface specification>
+getLogicalSurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getLogicalSurfaceUnsafe self = liftDOM ((((js_getLogicalSurface (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-logicalsurface MediaTrackSupportedConstraints.logicalSurface specification>
+getLogicalSurfaceUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getLogicalSurfaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getLogicalSurface (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cursor\"] = $2; })"
+        js_setCursor :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-cursor MediaTrackSupportedConstraints.cursor specification>
+setCursor :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setCursor self val = liftDOM (void ((js_setCursor (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cursor\"]; })"
+        js_getCursor :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-cursor MediaTrackSupportedConstraints.cursor specification>
+getCursor :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getCursor self = liftDOM (((js_getCursor (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-cursor MediaTrackSupportedConstraints.cursor specification>
+getCursorUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getCursorUnsafe self = liftDOM ((((js_getCursor (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-cursor MediaTrackSupportedConstraints.cursor specification>
+getCursorUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getCursorUnchecked self = liftDOM ((pFromJSVal <$> (js_getCursor (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"restrictOwnAudio\"] = $2; })"
+        js_setRestrictOwnAudio :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-restrictownaudio MediaTrackSupportedConstraints.restrictOwnAudio specification>
+setRestrictOwnAudio :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setRestrictOwnAudio self val = liftDOM (void ((js_setRestrictOwnAudio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"restrictOwnAudio\"]; })"
+        js_getRestrictOwnAudio :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-restrictownaudio MediaTrackSupportedConstraints.restrictOwnAudio specification>
+getRestrictOwnAudio :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getRestrictOwnAudio self = liftDOM (((js_getRestrictOwnAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-restrictownaudio MediaTrackSupportedConstraints.restrictOwnAudio specification>
+getRestrictOwnAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getRestrictOwnAudioUnsafe self = liftDOM ((((js_getRestrictOwnAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-restrictownaudio MediaTrackSupportedConstraints.restrictOwnAudio specification>
+getRestrictOwnAudioUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getRestrictOwnAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getRestrictOwnAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"suppressLocalAudioPlayback\"] = $2; })"
+        js_setSuppressLocalAudioPlayback :: MediaTrackSupportedConstraints -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-suppresslocalaudioplayback MediaTrackSupportedConstraints.suppressLocalAudioPlayback specification>
+setSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSuppressLocalAudioPlayback self val = liftDOM (void ((js_setSuppressLocalAudioPlayback (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"suppressLocalAudioPlayback\"]; })"
+        js_getSuppressLocalAudioPlayback :: MediaTrackSupportedConstraints -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-suppresslocalaudioplayback MediaTrackSupportedConstraints.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSuppressLocalAudioPlayback self = liftDOM (((js_getSuppressLocalAudioPlayback (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-suppresslocalaudioplayback MediaTrackSupportedConstraints.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSuppressLocalAudioPlaybackUnsafe self = liftDOM ((((js_getSuppressLocalAudioPlayback (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-suppresslocalaudioplayback MediaTrackSupportedConstraints.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnchecked :: (MonadDOM m) => MediaTrackSupportedConstraints -> m Bool
+getSuppressLocalAudioPlaybackUnchecked self = liftDOM ((pFromJSVal <$> (js_getSuppressLocalAudioPlayback (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
@@ -1,48 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MessageChannel
-       (js_newMessageChannel, newMessageChannel, js_getPort1, getPort1,
-        js_getPort2, getPort2, MessageChannel(..), gTypeMessageChannel)
+       (js_newMessageChannel, js_getPort1, js_getPort2, newMessageChannel, getPort1, getPort2, MessageChannel(..), gTypeMessageChannel)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"MessageChannel\"](); })"
-        js_newMessageChannel :: IO MessageChannel
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation> 
-newMessageChannel :: (MonadIO m) => m MessageChannel
-newMessageChannel = liftIO (js_newMessageChannel)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"port1\"]; })" js_getPort1 ::
-        MessageChannel -> IO MessagePort
+foreign import javascript safe "(() => { return new globalThis[\"MessageChannel\"](); })"
+        js_newMessageChannel :: IO MessageChannel
+-- | <https://developer.mozilla.org/docs/Web/API/MessageChannel/MessageChannel MDN MessageChannel. documentation>
+newMessageChannel :: (MonadDOM m) => m MessageChannel
+newMessageChannel = liftDOM ((js_newMessageChannel))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port1 Mozilla MessageChannel.port1 documentation> 
-getPort1 :: (MonadIO m) => MessageChannel -> m MessagePort
-getPort1 self = liftIO (js_getPort1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"port2\"]; })" js_getPort2 ::
-        MessageChannel -> IO MessagePort
+foreign import javascript unsafe "(($1) => { return $1[\"port1\"]; })"
+        js_getPort1 :: MessageChannel -> IO MessagePort
+-- | <https://developer.mozilla.org/docs/Web/API/MessageChannel/port1 MDN MessageChannel.port1 documentation>
+getPort1 :: (MonadDOM m) => MessageChannel -> m MessagePort
+getPort1 self = liftDOM ((js_getPort1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
-getPort2 :: (MonadIO m) => MessageChannel -> m MessagePort
-getPort2 self = liftIO (js_getPort2 self)
+foreign import javascript unsafe "(($1) => { return $1[\"port2\"]; })"
+        js_getPort2 :: MessageChannel -> IO MessagePort
+-- | <https://developer.mozilla.org/docs/Web/API/MessageChannel/port2 MDN MessageChannel.port2 documentation>
+getPort2 :: (MonadDOM m) => MessageChannel -> m MessagePort
+getPort2 self = liftDOM ((js_getPort2 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
@@ -1,132 +1,67 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MessageEvent
-       (js_newMessageEvent, newMessageEvent, js_initMessageEvent,
-        initMessageEvent, js_getOrigin, getOrigin, js_getLastEventId,
-        getLastEventId, js_getSource, getSource, getSourceUnsafe,
-        getSourceUnchecked, js_getData, getData, js_getPorts, getPorts,
-        MessageEvent(..), gTypeMessageEvent)
+       (js_newMessageEvent, js_initMessageEvent, js_getData, js_getOrigin, js_getLastEventId, js_getSource, js_getPorts, newMessageEvent, initMessageEvent, getData, getOrigin, getLastEventId, getSource, getSourceUnsafe, getSourceUnchecked, getPorts, MessageEvent(..), gTypeMessageEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"MessageEvent\"]($1,\n$2); })" js_newMessageEvent ::
-        JSString -> Optional MessageEventInit -> IO MessageEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation> 
-newMessageEvent ::
-                (MonadIO m, ToJSString type') =>
-                  type' -> Maybe MessageEventInit -> m MessageEvent
-newMessageEvent type' eventInitDict
-  = liftIO
-      (js_newMessageEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initMessageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
-        js_initMessageEvent ::
-        MessageEvent ->
-          JSString ->
-            Bool ->
-              Bool ->
-                Optional JSVal ->
-                  Optional JSString ->
-                    Optional JSString -> Optional MessageEventSource -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MessageEvent\"]($1, $2); })"
+        js_newMessageEvent :: JSString -> JSVal -> IO MessageEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/MessageEvent MDN MessageEvent. documentation>
+newMessageEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe MessageEventInit -> m MessageEvent
+newMessageEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newMessageEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.initMessageEvent Mozilla MessageEvent.initMessageEvent documentation> 
-initMessageEvent ::
-                 (MonadIO m, ToJSString type', ToJSVal data', ToJSString originArg,
-                  ToJSString lastEventId, IsMessageEventSource source) =>
-                   MessageEvent ->
-                     type' ->
-                       Bool ->
-                         Bool ->
-                           Maybe data' ->
-                             Maybe originArg ->
-                               Maybe lastEventId -> Maybe source -> [MessagePort] -> m ()
-initMessageEvent self type' bubbles cancelable data' originArg
-  lastEventId source messagePorts
-  = liftIO
-      (toJSVal messagePorts >>=
-         \ messagePorts' ->
-           mapM toJSVal source >>=
-             \ source' ->
-               mapM toJSVal data' >>=
-                 \ data'' ->
-                   js_initMessageEvent self (toJSString type') bubbles cancelable
-                     (maybeToOptional data'')
-                 (toOptionalJSString originArg)
-                 (toOptionalJSString lastEventId)
-                 (maybeToOptional (fmap MessageEventSource source'))
-             messagePorts')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
-        MessageEvent -> IO JSString
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initMessageEvent\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_initMessageEvent :: MessageEvent -> JSString -> JSVal -> JSVal -> JSVal -> (Optional JSString) -> (Optional JSString) -> JSVal -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageevent-initmessageevent MessageEvent.initMessageEvent specification>
+initMessageEvent :: (MonadDOM m, ToJSString type', ToJSString origin, ToJSString lastEventId, IsMessageEventSource source) => MessageEvent -> type' -> Maybe Bool -> Maybe Bool -> JSVal -> Maybe origin -> Maybe lastEventId -> Maybe source -> Maybe [MessagePort] -> m ()
+initMessageEvent self type' bubbles cancelable data' origin lastEventId source ports = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubbles) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelable) >>= \a4' -> (toJSVal source) >>= \a8' -> (P.maybe (P.return jsUndefined) toJSVal ports) >>= \a9' -> js_initMessageEvent (self) (toJSString type') a3' a4' (data') (toOptionalJSString origin) (toOptionalJSString lastEventId) a8' a9')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.origin Mozilla MessageEvent.origin documentation> 
-getOrigin ::
-          (MonadIO m, FromJSString result) => MessageEvent -> m result
-getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lastEventId\"]; })"
-        js_getLastEventId :: MessageEvent -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: MessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/data MDN MessageEvent.data documentation>
+getData :: (MonadDOM m) => MessageEvent -> m JSVal
+getData self = liftDOM ((js_getData (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.lastEventId Mozilla MessageEvent.lastEventId documentation> 
-getLastEventId ::
-               (MonadIO m, FromJSString result) => MessageEvent -> m result
-getLastEventId self
-  = liftIO (fromJSString <$> (js_getLastEventId self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })" js_getSource ::
-        MessageEvent -> IO (Nullable EventTarget)
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: MessageEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/origin MDN MessageEvent.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => MessageEvent -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
-getSource :: (MonadIO m) => MessageEvent -> m (Maybe EventTarget)
-getSource self = liftIO (nullableToMaybe <$> (js_getSource self))
+foreign import javascript unsafe "(($1) => { return $1[\"lastEventId\"]; })"
+        js_getLastEventId :: MessageEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/lastEventId MDN MessageEvent.lastEventId documentation>
+getLastEventId :: (MonadDOM m, FromJSString result) => MessageEvent -> m result
+getLastEventId self = liftDOM ((fromJSString <$> (js_getLastEventId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
-getSourceUnsafe ::
-                (MonadIO m, HasCallStack) => MessageEvent -> m EventTarget
-getSourceUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSource self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: MessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/source MDN MessageEvent.source documentation>
+getSource :: (MonadDOM m) => MessageEvent -> m (Maybe MessageEventSource)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
-getSourceUnchecked :: (MonadIO m) => MessageEvent -> m EventTarget
-getSourceUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getSource self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        MessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/source MDN MessageEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => MessageEvent -> m MessageEventSource
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.data Mozilla MessageEvent.data documentation> 
-getData :: (MonadIO m) => MessageEvent -> m JSVal
-getData self = liftIO (js_getData self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ports\"]; })" js_getPorts ::
-        MessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/source MDN MessageEvent.source documentation>
+getSourceUnchecked :: (MonadDOM m) => MessageEvent -> m MessageEventSource
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.ports Mozilla MessageEvent.ports documentation> 
-getPorts :: (MonadIO m) => MessageEvent -> m [MessagePort]
-getPorts self = liftIO ((js_getPorts self) >>= fromJSValUnchecked)
+foreign import javascript unsafe "(($1) => { return $1[\"ports\"]; })"
+        js_getPorts :: MessageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/ports MDN MessageEvent.ports documentation>
+getPorts :: (MonadDOM m) => MessageEvent -> m [MessagePort]
+getPorts self = liftDOM (((js_getPorts (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageEventInit.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MessageEventInit
+       (js_newMessageEventInit, js_setData, js_getData, js_setOrigin, js_getOrigin, js_setLastEventId, js_getLastEventId, js_setSource, js_getSource, js_setPorts, js_getPorts, newMessageEventInit, setData, getData, setOrigin, getOrigin, getOriginUnsafe, getOriginUnchecked, setLastEventId, getLastEventId, getLastEventIdUnsafe, getLastEventIdUnchecked, setSource, getSource, getSourceUnsafe, getSourceUnchecked, setPorts, getPorts, getPortsUnsafe, getPortsUnchecked, MessageEventInit(..), gTypeMessageEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMessageEventInit :: IO MessageEventInit
+-- | <https://html.spec.whatwg.org/multipage/comms.html#messageeventinit MessageEventInit specification>
+newMessageEventInit :: (MonadDOM m) => m MessageEventInit
+newMessageEventInit = liftDOM ((js_newMessageEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: MessageEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-data MessageEventInit.data specification>
+setData :: (MonadDOM m) => MessageEventInit -> JSVal -> m ()
+setData self val = liftDOM (void ((js_setData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: MessageEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-data MessageEventInit.data specification>
+getData :: (MonadDOM m) => MessageEventInit -> m JSVal
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"origin\"] = $2; })"
+        js_setOrigin :: MessageEventInit -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-origin MessageEventInit.origin specification>
+setOrigin :: (MonadDOM m, ToJSString val) => MessageEventInit -> val -> m ()
+setOrigin self val = liftDOM (void ((js_setOrigin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: MessageEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-origin MessageEventInit.origin specification>
+getOrigin :: (MonadDOM m, FromJSString result) => MessageEventInit -> m (Maybe result)
+getOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOrigin (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-origin MessageEventInit.origin specification>
+getOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MessageEventInit -> m result
+getOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-origin MessageEventInit.origin specification>
+getOriginUnchecked :: (MonadDOM m, FromJSString result) => MessageEventInit -> m result
+getOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lastEventId\"] = $2; })"
+        js_setLastEventId :: MessageEventInit -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-lasteventid MessageEventInit.lastEventId specification>
+setLastEventId :: (MonadDOM m, ToJSString val) => MessageEventInit -> val -> m ()
+setLastEventId self val = liftDOM (void ((js_setLastEventId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lastEventId\"]; })"
+        js_getLastEventId :: MessageEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-lasteventid MessageEventInit.lastEventId specification>
+getLastEventId :: (MonadDOM m, FromJSString result) => MessageEventInit -> m (Maybe result)
+getLastEventId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLastEventId (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-lasteventid MessageEventInit.lastEventId specification>
+getLastEventIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MessageEventInit -> m result
+getLastEventIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLastEventId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-lasteventid MessageEventInit.lastEventId specification>
+getLastEventIdUnchecked :: (MonadDOM m, FromJSString result) => MessageEventInit -> m result
+getLastEventIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getLastEventId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: MessageEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-source MessageEventInit.source specification>
+setSource :: (MonadDOM m, IsMessageEventSource val) => MessageEventInit -> Maybe val -> m ()
+setSource self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSource (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: MessageEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-source MessageEventInit.source specification>
+getSource :: (MonadDOM m) => MessageEventInit -> m (Maybe MessageEventSource)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-source MessageEventInit.source specification>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => MessageEventInit -> m MessageEventSource
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-source MessageEventInit.source specification>
+getSourceUnchecked :: (MonadDOM m) => MessageEventInit -> m MessageEventSource
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ports\"] = $2; })"
+        js_setPorts :: MessageEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-ports MessageEventInit.ports specification>
+setPorts :: (MonadDOM m) => MessageEventInit -> [MessagePort] -> m ()
+setPorts self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPorts (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ports\"]; })"
+        js_getPorts :: MessageEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-ports MessageEventInit.ports specification>
+getPorts :: (MonadDOM m) => MessageEventInit -> m (Maybe [MessagePort])
+getPorts self = liftDOM (((js_getPorts (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-ports MessageEventInit.ports specification>
+getPortsUnsafe :: (MonadDOM m, HasCallStack) => MessageEventInit -> m [MessagePort]
+getPortsUnsafe self = liftDOM ((((js_getPorts (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-ports MessageEventInit.ports specification>
+getPortsUnchecked :: (MonadDOM m) => MessageEventInit -> m [MessagePort]
+getPortsUnchecked self = liftDOM (((js_getPorts (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageEventTarget.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageEventTarget.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageEventTarget.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MessageEventTarget
+       (message, messageerror, MessageEventTarget(..), gTypeMessageEventTarget, IsMessageEventTarget, toMessageEventTarget)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessage message event>
+message :: (IsMessageEventTarget self, IsEventTarget self) => EventName self MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessageerror messageerror event>
+messageerror :: (IsMessageEventTarget self, IsEventTarget self) => EventName self MessageEvent
+messageerror = unsafeEventName (toJSString "messageerror")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs b/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
@@ -1,59 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MessagePort
-       (js_postMessage, postMessage, js_start, start, js_close, close,
-        message, MessagePort(..), gTypeMessagePort)
+       (js_close, js_postMessage, js_postMessageOptions, js_start, close, postMessage, postMessageOptions, start, closeEvent, MessagePort(..), gTypeMessagePort)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: MessagePort -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MessagePort/close MDN MessagePort.close documentation>
+close :: (MonadDOM m) => MessagePort -> m ()
+close self = liftDOM (void ((js_close (self))))
+
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
         js_postMessage :: MessagePort -> JSVal -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
-postMessage ::
-            (MonadIO m, ToJSVal message, IsGObject transfer) =>
-              MessagePort -> message -> [transfer] -> m ()
-postMessage self message transfer
-  = liftIO
-      (toJSVal transfer >>=
-         \ transfer' ->
-           toJSVal message >>= \ message' -> js_postMessage self message'
-             transfer')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"start\"](); })" js_start ::
-        MessagePort -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MessagePort/postMessage MDN MessagePort.postMessage documentation>
+postMessage :: (MonadDOM m) => MessagePort -> JSVal -> [GObject] -> m ()
+postMessage self message transfer = liftDOM (void (((toJSVal transfer) >>= \a3' -> js_postMessage (self) (message) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.start Mozilla MessagePort.start documentation> 
-start :: (MonadIO m) => MessagePort -> m ()
-start self = liftIO (js_start self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        MessagePort -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessageOptions :: MessagePort -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MessagePort/postMessage MDN MessagePort.postMessage documentation>
+postMessageOptions :: (MonadDOM m, IsStructuredSerializeOptions options) => MessagePort -> JSVal -> Maybe options -> m ()
+postMessageOptions self message options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postMessageOptions (self) (message) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.close Mozilla MessagePort.close documentation> 
-close :: (MonadIO m) => MessagePort -> m ()
-close self = liftIO (js_close self)
+foreign import javascript safe "(($1) => { return $1[\"start\"](); })"
+        js_start :: MessagePort -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MessagePort/start MDN MessagePort.start documentation>
+start :: (MonadDOM m) => MessagePort -> m ()
+start self = liftDOM (void ((js_start (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.onmessage Mozilla MessagePort.onmessage documentation> 
-message :: EventName MessagePort MessageEvent
-message = unsafeEventNameAsync (toJSString "message")
+-- | <https://websockets.spec.whatwg.org/#eventdef-websocket-close close event>
+closeEvent :: EventName MessagePort Event
+closeEvent = unsafeEventNameAsync (toJSString "close")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs b/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
@@ -1,59 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MimeType
-       (js_getType, getType, js_getSuffixes, getSuffixes,
-        js_getDescription, getDescription, js_getEnabledPlugin,
-        getEnabledPlugin, MimeType(..), gTypeMimeType)
+       (js_getType, js_getDescription, js_getSuffixes, js_getEnabledPlugin, getType, getDescription, getSuffixes, getEnabledPlugin, MimeType(..), gTypeMimeType)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        MimeType -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.type Mozilla MimeType.type documentation> 
-getType :: (MonadIO m, FromJSString result) => MimeType -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"suffixes\"]; })" js_getSuffixes
-        :: MimeType -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: MimeType -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetype-type MimeType.type specification>
+getType :: (MonadDOM m, FromJSString result) => MimeType -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.suffixes Mozilla MimeType.suffixes documentation> 
-getSuffixes ::
-            (MonadIO m, FromJSString result) => MimeType -> m result
-getSuffixes self = liftIO (fromJSString <$> (js_getSuffixes self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
         js_getDescription :: MimeType -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetype-description MimeType.description specification>
+getDescription :: (MonadDOM m, FromJSString result) => MimeType -> m result
+getDescription self = liftDOM ((fromJSString <$> (js_getDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.description Mozilla MimeType.description documentation> 
-getDescription ::
-               (MonadIO m, FromJSString result) => MimeType -> m result
-getDescription self
-  = liftIO (fromJSString <$> (js_getDescription self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"suffixes\"]; })"
+        js_getSuffixes :: MimeType -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetype-suffixes MimeType.suffixes specification>
+getSuffixes :: (MonadDOM m, FromJSString result) => MimeType -> m result
+getSuffixes self = liftDOM ((fromJSString <$> (js_getSuffixes (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"enabledPlugin\"]; })"
         js_getEnabledPlugin :: MimeType -> IO Plugin
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.enabledPlugin Mozilla MimeType.enabledPlugin documentation> 
-getEnabledPlugin :: (MonadIO m) => MimeType -> m Plugin
-getEnabledPlugin self = liftIO (js_getEnabledPlugin self)
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetype-enabledplugin MimeType.enabledPlugin specification>
+getEnabledPlugin :: (MonadDOM m) => MimeType -> m Plugin
+getEnabledPlugin self = liftDOM ((js_getEnabledPlugin (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs b/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
@@ -1,93 +1,51 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MimeTypeArray
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        js_getLength, getLength, MimeTypeArray(..), gTypeMimeTypeArray)
+       (js_item, js_namedItem, js_getLength, item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, getLength, MimeTypeArray(..), gTypeMimeTypeArray)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        MimeTypeArray -> Word -> IO (Nullable MimeType)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
-item :: (MonadIO m) => MimeTypeArray -> Word -> m (Maybe MimeType)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: MimeTypeArray -> Word -> IO JSVal
+item :: (MonadDOM m) => MimeTypeArray -> Word -> m (Maybe MimeType)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
-item_ :: (MonadIO m) => MimeTypeArray -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+item_ :: (MonadDOM m) => MimeTypeArray -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => MimeTypeArray -> Word -> m MimeType
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+itemUnsafe :: (MonadDOM m, HasCallStack) => MimeTypeArray -> Word -> m MimeType
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
-itemUnchecked :: (MonadIO m) => MimeTypeArray -> Word -> m MimeType
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        MimeTypeArray -> JSString -> IO (Nullable MimeType)
+itemUnchecked :: (MonadDOM m) => MimeTypeArray -> Word -> m MimeType
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            MimeTypeArray -> name -> m (Maybe MimeType)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem :: MimeTypeArray -> JSString -> IO JSVal
+namedItem :: (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m (Maybe MimeType)
+namedItem self name = liftDOM (((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) => MimeTypeArray -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
+namedItem_ :: (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m ()
+namedItem_ self name = liftDOM (void ((js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  MimeTypeArray -> name -> m MimeType
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => MimeTypeArray -> name -> m MimeType
+namedItemUnsafe self name = liftDOM ((((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) => MimeTypeArray -> name -> m MimeType
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        MimeTypeArray -> IO Word
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m MimeType
+namedItemUnchecked self name = liftDOM ((pFromJSVal <$> (js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.length Mozilla MimeTypeArray.length documentation> 
-getLength :: (MonadIO m) => MimeTypeArray -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: MimeTypeArray -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetypearray-length MimeTypeArray.length specification>
+getLength :: (MonadDOM m) => MimeTypeArray -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MouseEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MouseEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MouseEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MouseEvent.hs
@@ -1,331 +1,173 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MouseEvent
-       (js_newMouseEvent, newMouseEvent, js_initMouseEvent,
-        initMouseEvent, pattern WEBKIT_FORCE_AT_MOUSE_DOWN,
-        pattern WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN, js_getScreenX,
-        getScreenX, js_getScreenY, getScreenY, js_getClientX, getClientX,
-        js_getClientY, getClientY, js_getCtrlKey, getCtrlKey,
-        js_getShiftKey, getShiftKey, js_getAltKey, getAltKey,
-        js_getMetaKey, getMetaKey, js_getButton, getButton,
-        js_getRelatedTarget, getRelatedTarget, getRelatedTargetUnsafe,
-        getRelatedTargetUnchecked, js_getMovementX, getMovementX,
-        js_getMovementY, getMovementY, js_getWebkitForce, getWebkitForce,
-        js_getOffsetX, getOffsetX, js_getOffsetY, getOffsetY, js_getX,
-        getX, js_getY, getY, js_getFromElement, getFromElement,
-        getFromElementUnsafe, getFromElementUnchecked, js_getToElement,
-        getToElement, getToElementUnsafe, getToElementUnchecked,
-        js_getDataTransfer, getDataTransfer, getDataTransferUnsafe,
-        getDataTransferUnchecked, MouseEvent(..), gTypeMouseEvent,
-        IsMouseEvent, toMouseEvent)
+       (js_newMouseEvent, js_getModifierState, js_initMouseEvent, js_getScreenX, js_getScreenY, js_getClientX, js_getClientY, js_getLayerX, js_getLayerY, js_getCtrlKey, js_getShiftKey, js_getAltKey, js_getMetaKey, js_getButton, js_getButtons, js_getRelatedTarget, js_getPageX, js_getPageY, js_getX, js_getY, js_getOffsetX, js_getOffsetY, js_getMovementX, js_getMovementY, newMouseEvent, getModifierState, getModifierState_, initMouseEvent, getScreenX, getScreenY, getClientX, getClientY, getLayerX, getLayerY, getCtrlKey, getShiftKey, getAltKey, getMetaKey, getButton, getButtons, getRelatedTarget, getRelatedTargetUnsafe, getRelatedTargetUnchecked, getPageX, getPageY, getX, getY, getOffsetX, getOffsetY, getMovementX, getMovementY, MouseEvent(..), gTypeMouseEvent, IsMouseEvent, toMouseEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"MouseEvent\"]($1, $2); })" js_newMouseEvent ::
-        JSString -> Optional MouseEventInit -> IO MouseEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation> 
-newMouseEvent ::
-              (MonadIO m, ToJSString type', IsMouseEventInit eventInitDict) =>
-                type' -> Maybe eventInitDict -> m MouseEvent
-newMouseEvent type' eventInitDict
-  = liftIO
-      (js_newMouseEvent (toJSString type')
-         (maybeToOptional (fmap toMouseEventInit eventInitDict)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) => { return $1[\"initMouseEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14, $15, $16); })"
-        js_initMouseEvent ::
-        MouseEvent ->
-          Optional JSString ->
-            Bool ->
-              Bool ->
-                Optional Window ->
-                  Optional Int ->
-                    Optional Int ->
-                      Optional Int ->
-                        Optional Int ->
-                          Optional Int ->
-                            Bool ->
-                              Bool -> Bool -> Bool -> Optional Word -> Optional JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.initMouseEvent Mozilla MouseEvent.initMouseEvent documentation> 
-initMouseEvent ::
-               (MonadIO m, IsMouseEvent self, ToJSString type',
-                ToJSVal relatedTarget) =>
-                 self ->
-                   Maybe type' ->
-                     Bool ->
-                       Bool ->
-                         Maybe Window ->
-                           Maybe Int ->
-                             Maybe Int ->
-                               Maybe Int ->
-                                 Maybe Int ->
-                                   Maybe Int ->
-                                     Bool ->
-                                       Bool ->
-                                         Bool -> Bool -> Maybe Word -> Maybe relatedTarget -> m ()
-initMouseEvent self type' canBubble cancelable view detail screenX
-  screenY clientX clientY ctrlKey altKey shiftKey metaKey button
-  relatedTarget
-  = liftIO
-      (mapM toJSVal relatedTarget >>=
-         \ relatedTarget' ->
-           js_initMouseEvent (toMouseEvent self) (toOptionalJSString type')
-             canBubble
-             cancelable
-             (maybeToOptional view)
-             (maybeToOptional detail)
-             (maybeToOptional screenX)
-             (maybeToOptional screenY)
-             (maybeToOptional clientX)
-             (maybeToOptional clientY)
-             ctrlKey
-             altKey
-             shiftKey
-             metaKey
-             (maybeToOptional button)
-             (maybeToOptional relatedTarget'))
-pattern WEBKIT_FORCE_AT_MOUSE_DOWN = 1
-pattern WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })" js_getScreenX ::
-        MouseEvent -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenX Mozilla MouseEvent.screenX documentation> 
-getScreenX :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getScreenX self = liftIO (js_getScreenX (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })" js_getScreenY ::
-        MouseEvent -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenY Mozilla MouseEvent.screenY documentation> 
-getScreenY :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getScreenY self = liftIO (js_getScreenY (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })" js_getClientX ::
-        MouseEvent -> IO Int
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"MouseEvent\"]($1, $2); })"
+        js_newMouseEvent :: JSString -> JSVal -> IO MouseEvent
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/MouseEvent MDN MouseEvent. documentation>
+newMouseEvent :: (MonadDOM m, ToJSString type', IsMouseEventInit eventInitDict) => type' -> Maybe eventInitDict -> m MouseEvent
+newMouseEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newMouseEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientX Mozilla MouseEvent.clientX documentation> 
-getClientX :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getClientX self = liftIO (js_getClientX (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })" js_getClientY ::
-        MouseEvent -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"getModifierState\"]($2); })"
+        js_getModifierState :: MouseEvent -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/getModifierState MDN MouseEvent.getModifierState documentation>
+getModifierState :: (MonadDOM m, IsMouseEvent self, ToJSString keyArg) => self -> keyArg -> m Bool
+getModifierState self keyArg = liftDOM ((js_getModifierState ((Types.toMouseEvent self)) (toJSString keyArg)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientY Mozilla MouseEvent.clientY documentation> 
-getClientY :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getClientY self = liftIO (js_getClientY (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"ctrlKey\"] ? 1 : 0); })"
-        js_getCtrlKey :: MouseEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/getModifierState MDN MouseEvent.getModifierState documentation>
+getModifierState_ :: (MonadDOM m, IsMouseEvent self, ToJSString keyArg) => self -> keyArg -> m ()
+getModifierState_ self keyArg = liftDOM (void ((js_getModifierState ((Types.toMouseEvent self)) (toJSString keyArg))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.ctrlKey Mozilla MouseEvent.ctrlKey documentation> 
-getCtrlKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
-getCtrlKey self = liftIO (js_getCtrlKey (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"shiftKey\"] ? 1 : 0); })"
-        js_getShiftKey :: MouseEvent -> IO Bool
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) => { return $1[\"initMouseEvent\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16); })"
+        js_initMouseEvent :: MouseEvent -> JSString -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/initMouseEvent MDN MouseEvent.initMouseEvent documentation>
+initMouseEvent :: (MonadDOM m, IsMouseEvent self, ToJSString typeArg, IsEventTarget relatedTargetArg) => self -> typeArg -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Int -> Maybe relatedTargetArg -> m ()
+initMouseEvent self typeArg bubblesArg cancelableArg viewArg detailArg screenXArg screenYArg clientXArg clientYArg ctrlKeyArg altKeyArg shiftKeyArg metaKeyArg buttonArg relatedTargetArg = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubblesArg) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelableArg) >>= \a4' -> (toJSVal viewArg) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal detailArg) >>= \a6' -> (P.maybe (P.return jsUndefined) toJSVal screenXArg) >>= \a7' -> (P.maybe (P.return jsUndefined) toJSVal screenYArg) >>= \a8' -> (P.maybe (P.return jsUndefined) toJSVal clientXArg) >>= \a9' -> (P.maybe (P.return jsUndefined) toJSVal clientYArg) >>= \a10' -> (P.maybe (P.return jsUndefined) toJSVal ctrlKeyArg) >>= \a11' -> (P.maybe (P.return jsUndefined) toJSVal altKeyArg) >>= \a12' -> (P.maybe (P.return jsUndefined) toJSVal shiftKeyArg) >>= \a13' -> (P.maybe (P.return jsUndefined) toJSVal metaKeyArg) >>= \a14' -> (P.maybe (P.return jsUndefined) toJSVal buttonArg) >>= \a15' -> (toJSVal relatedTargetArg) >>= \a16' -> js_initMouseEvent ((Types.toMouseEvent self)) (toJSString typeArg) a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.shiftKey Mozilla MouseEvent.shiftKey documentation> 
-getShiftKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
-getShiftKey self = liftIO (js_getShiftKey (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"altKey\"] ? 1 : 0); })"
-        js_getAltKey :: MouseEvent -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })"
+        js_getScreenX :: MouseEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/screenX MDN MouseEvent.screenX documentation>
+getScreenX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getScreenX self = liftDOM ((js_getScreenX ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.altKey Mozilla MouseEvent.altKey documentation> 
-getAltKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
-getAltKey self = liftIO (js_getAltKey (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"metaKey\"] ? 1 : 0); })"
-        js_getMetaKey :: MouseEvent -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })"
+        js_getScreenY :: MouseEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/screenY MDN MouseEvent.screenY documentation>
+getScreenY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getScreenY self = liftDOM ((js_getScreenY ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.metaKey Mozilla MouseEvent.metaKey documentation> 
-getMetaKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
-getMetaKey self = liftIO (js_getMetaKey (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"button\"]; })" js_getButton ::
-        MouseEvent -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })"
+        js_getClientX :: MouseEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/clientX MDN MouseEvent.clientX documentation>
+getClientX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getClientX self = liftDOM ((js_getClientX ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button Mozilla MouseEvent.button documentation> 
-getButton :: (MonadIO m, IsMouseEvent self) => self -> m Word
-getButton self = liftIO (js_getButton (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
-        js_getRelatedTarget :: MouseEvent -> IO (Nullable EventTarget)
+foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })"
+        js_getClientY :: MouseEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/clientY MDN MouseEvent.clientY documentation>
+getClientY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getClientY self = liftDOM ((js_getClientY ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
-getRelatedTarget ::
-                 (MonadIO m, IsMouseEvent self) => self -> m (Maybe EventTarget)
-getRelatedTarget self
-  = liftIO
-      (nullableToMaybe <$> (js_getRelatedTarget (toMouseEvent self)))
+foreign import javascript unsafe "(($1) => { return $1[\"layerX\"]; })"
+        js_getLayerX :: MouseEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/layerX MDN MouseEvent.layerX documentation>
+getLayerX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getLayerX self = liftDOM ((js_getLayerX ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
-getRelatedTargetUnsafe ::
-                       (MonadIO m, IsMouseEvent self, HasCallStack) =>
-                         self -> m EventTarget
-getRelatedTargetUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getRelatedTarget (toMouseEvent self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"layerY\"]; })"
+        js_getLayerY :: MouseEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/layerY MDN MouseEvent.layerY documentation>
+getLayerY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getLayerY self = liftDOM ((js_getLayerY ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
-getRelatedTargetUnchecked ::
-                          (MonadIO m, IsMouseEvent self) => self -> m EventTarget
-getRelatedTargetUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getRelatedTarget (toMouseEvent self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"movementX\"]; })"
-        js_getMovementX :: MouseEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"ctrlKey\"]; })"
+        js_getCtrlKey :: MouseEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/ctrlKey MDN MouseEvent.ctrlKey documentation>
+getCtrlKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getCtrlKey self = liftDOM ((js_getCtrlKey ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementX Mozilla MouseEvent.movementX documentation> 
-getMovementX :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getMovementX self = liftIO (js_getMovementX (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"movementY\"]; })"
-        js_getMovementY :: MouseEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"shiftKey\"]; })"
+        js_getShiftKey :: MouseEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/shiftKey MDN MouseEvent.shiftKey documentation>
+getShiftKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getShiftKey self = liftDOM ((js_getShiftKey ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementY Mozilla MouseEvent.movementY documentation> 
-getMovementY :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getMovementY self = liftIO (js_getMovementY (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitForce\"]; })"
-        js_getWebkitForce :: MouseEvent -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"altKey\"]; })"
+        js_getAltKey :: MouseEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/altKey MDN MouseEvent.altKey documentation>
+getAltKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getAltKey self = liftDOM ((js_getAltKey ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.webkitForce Mozilla MouseEvent.webkitForce documentation> 
-getWebkitForce ::
-               (MonadIO m, IsMouseEvent self) => self -> m Double
-getWebkitForce self
-  = liftIO (js_getWebkitForce (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"offsetX\"]; })" js_getOffsetX ::
-        MouseEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"metaKey\"]; })"
+        js_getMetaKey :: MouseEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/metaKey MDN MouseEvent.metaKey documentation>
+getMetaKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
+getMetaKey self = liftDOM ((js_getMetaKey ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetX Mozilla MouseEvent.offsetX documentation> 
-getOffsetX :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getOffsetX self = liftIO (js_getOffsetX (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"offsetY\"]; })" js_getOffsetY ::
-        MouseEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"button\"]; })"
+        js_getButton :: MouseEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/button MDN MouseEvent.button documentation>
+getButton :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getButton self = liftDOM ((js_getButton ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetY Mozilla MouseEvent.offsetY documentation> 
-getOffsetY :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getOffsetY self = liftIO (js_getOffsetY (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        MouseEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"buttons\"]; })"
+        js_getButtons :: MouseEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/buttons MDN MouseEvent.buttons documentation>
+getButtons :: (MonadDOM m, IsMouseEvent self) => self -> m Word
+getButtons self = liftDOM ((js_getButtons ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.x Mozilla MouseEvent.x documentation> 
-getX :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getX self = liftIO (js_getX (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        MouseEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
+        js_getRelatedTarget :: MouseEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/relatedTarget MDN MouseEvent.relatedTarget documentation>
+getRelatedTarget :: (MonadDOM m, IsMouseEvent self) => self -> m (Maybe EventTarget)
+getRelatedTarget self = liftDOM (((js_getRelatedTarget ((Types.toMouseEvent self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.y Mozilla MouseEvent.y documentation> 
-getY :: (MonadIO m, IsMouseEvent self) => self -> m Int
-getY self = liftIO (js_getY (toMouseEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fromElement\"]; })"
-        js_getFromElement :: MouseEvent -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/relatedTarget MDN MouseEvent.relatedTarget documentation>
+getRelatedTargetUnsafe :: (MonadDOM m, IsMouseEvent self, HasCallStack) => self -> m EventTarget
+getRelatedTargetUnsafe self = liftDOM ((((js_getRelatedTarget ((Types.toMouseEvent self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
-getFromElement ::
-               (MonadIO m, IsMouseEvent self) => self -> m (Maybe Node)
-getFromElement self
-  = liftIO
-      (nullableToMaybe <$> (js_getFromElement (toMouseEvent self)))
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/relatedTarget MDN MouseEvent.relatedTarget documentation>
+getRelatedTargetUnchecked :: (MonadDOM m, IsMouseEvent self) => self -> m EventTarget
+getRelatedTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelatedTarget ((Types.toMouseEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
-getFromElementUnsafe ::
-                     (MonadIO m, IsMouseEvent self, HasCallStack) => self -> m Node
-getFromElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFromElement (toMouseEvent self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"pageX\"]; })"
+        js_getPageX :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/pageX MDN MouseEvent.pageX documentation>
+getPageX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getPageX self = liftDOM ((js_getPageX ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
-getFromElementUnchecked ::
-                        (MonadIO m, IsMouseEvent self) => self -> m Node
-getFromElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getFromElement (toMouseEvent self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toElement\"]; })"
-        js_getToElement :: MouseEvent -> IO (Nullable Node)
+foreign import javascript unsafe "(($1) => { return $1[\"pageY\"]; })"
+        js_getPageY :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/pageY MDN MouseEvent.pageY documentation>
+getPageY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getPageY self = liftDOM ((js_getPageY ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
-getToElement ::
-             (MonadIO m, IsMouseEvent self) => self -> m (Maybe Node)
-getToElement self
-  = liftIO
-      (nullableToMaybe <$> (js_getToElement (toMouseEvent self)))
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/x MDN MouseEvent.x documentation>
+getX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getX self = liftDOM ((js_getX ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
-getToElementUnsafe ::
-                   (MonadIO m, IsMouseEvent self, HasCallStack) => self -> m Node
-getToElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getToElement (toMouseEvent self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/y MDN MouseEvent.y documentation>
+getY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getY self = liftDOM ((js_getY ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
-getToElementUnchecked ::
-                      (MonadIO m, IsMouseEvent self) => self -> m Node
-getToElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getToElement (toMouseEvent self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
-        js_getDataTransfer :: MouseEvent -> IO (Nullable DataTransfer)
+foreign import javascript unsafe "(($1) => { return $1[\"offsetX\"]; })"
+        js_getOffsetX :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/offsetX MDN MouseEvent.offsetX documentation>
+getOffsetX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getOffsetX self = liftDOM ((js_getOffsetX ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
-getDataTransfer ::
-                (MonadIO m, IsMouseEvent self) => self -> m (Maybe DataTransfer)
-getDataTransfer self
-  = liftIO
-      (nullableToMaybe <$> (js_getDataTransfer (toMouseEvent self)))
+foreign import javascript unsafe "(($1) => { return $1[\"offsetY\"]; })"
+        js_getOffsetY :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/offsetY MDN MouseEvent.offsetY documentation>
+getOffsetY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getOffsetY self = liftDOM ((js_getOffsetY ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
-getDataTransferUnsafe ::
-                      (MonadIO m, IsMouseEvent self, HasCallStack) =>
-                        self -> m DataTransfer
-getDataTransferUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getDataTransfer (toMouseEvent self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"movementX\"]; })"
+        js_getMovementX :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/movementX MDN MouseEvent.movementX documentation>
+getMovementX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getMovementX self = liftDOM ((js_getMovementX ((Types.toMouseEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
-getDataTransferUnchecked ::
-                         (MonadIO m, IsMouseEvent self) => self -> m DataTransfer
-getDataTransferUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getDataTransfer (toMouseEvent self)))
+foreign import javascript unsafe "(($1) => { return $1[\"movementY\"]; })"
+        js_getMovementY :: MouseEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/movementY MDN MouseEvent.movementY documentation>
+getMovementY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getMovementY self = liftDOM ((js_getMovementY ((Types.toMouseEvent self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MouseEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MouseEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MouseEventInit.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MouseEventInit
+       (js_newMouseEventInit, js_setScreenX, js_getScreenX, js_setScreenY, js_getScreenY, js_setClientX, js_getClientX, js_setClientY, js_getClientY, js_setButton, js_getButton, js_setButtons, js_getButtons, js_setRelatedTarget, js_getRelatedTarget, js_setMovementX, js_getMovementX, js_setMovementY, js_getMovementY, newMouseEventInit, setScreenX, getScreenX, getScreenXUnsafe, getScreenXUnchecked, setScreenY, getScreenY, getScreenYUnsafe, getScreenYUnchecked, setClientX, getClientX, getClientXUnsafe, getClientXUnchecked, setClientY, getClientY, getClientYUnsafe, getClientYUnchecked, setButton, getButton, getButtonUnsafe, getButtonUnchecked, setButtons, getButtons, getButtonsUnsafe, getButtonsUnchecked, setRelatedTarget, getRelatedTarget, getRelatedTargetUnsafe, getRelatedTargetUnchecked, setMovementX, getMovementX, getMovementXUnsafe, getMovementXUnchecked, setMovementY, getMovementY, getMovementYUnsafe, getMovementYUnchecked, MouseEventInit(..), gTypeMouseEventInit, IsMouseEventInit, toMouseEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMouseEventInit :: IO MouseEventInit
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit MouseEventInit specification>
+newMouseEventInit :: (MonadDOM m) => m MouseEventInit
+newMouseEventInit = liftDOM ((js_newMouseEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"screenX\"] = $2; })"
+        js_setScreenX :: MouseEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screenx MouseEventInit.screenX specification>
+setScreenX :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setScreenX self val = liftDOM (void ((js_setScreenX ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })"
+        js_getScreenX :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screenx MouseEventInit.screenX specification>
+getScreenX :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getScreenX self = liftDOM (((js_getScreenX ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screenx MouseEventInit.screenX specification>
+getScreenXUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getScreenXUnsafe self = liftDOM ((((js_getScreenX ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screenx MouseEventInit.screenX specification>
+getScreenXUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Int
+getScreenXUnchecked self = liftDOM ((pFromJSVal <$> (js_getScreenX ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"screenY\"] = $2; })"
+        js_setScreenY :: MouseEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screeny MouseEventInit.screenY specification>
+setScreenY :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setScreenY self val = liftDOM (void ((js_setScreenY ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })"
+        js_getScreenY :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screeny MouseEventInit.screenY specification>
+getScreenY :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getScreenY self = liftDOM (((js_getScreenY ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screeny MouseEventInit.screenY specification>
+getScreenYUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getScreenYUnsafe self = liftDOM ((((js_getScreenY ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screeny MouseEventInit.screenY specification>
+getScreenYUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Int
+getScreenYUnchecked self = liftDOM ((pFromJSVal <$> (js_getScreenY ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clientX\"] = $2; })"
+        js_setClientX :: MouseEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clientx MouseEventInit.clientX specification>
+setClientX :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setClientX self val = liftDOM (void ((js_setClientX ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })"
+        js_getClientX :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clientx MouseEventInit.clientX specification>
+getClientX :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getClientX self = liftDOM (((js_getClientX ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clientx MouseEventInit.clientX specification>
+getClientXUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getClientXUnsafe self = liftDOM ((((js_getClientX ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clientx MouseEventInit.clientX specification>
+getClientXUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Int
+getClientXUnchecked self = liftDOM ((pFromJSVal <$> (js_getClientX ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clientY\"] = $2; })"
+        js_setClientY :: MouseEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clienty MouseEventInit.clientY specification>
+setClientY :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setClientY self val = liftDOM (void ((js_setClientY ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })"
+        js_getClientY :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clienty MouseEventInit.clientY specification>
+getClientY :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getClientY self = liftDOM (((js_getClientY ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clienty MouseEventInit.clientY specification>
+getClientYUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getClientYUnsafe self = liftDOM ((((js_getClientY ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clienty MouseEventInit.clientY specification>
+getClientYUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Int
+getClientYUnchecked self = liftDOM ((pFromJSVal <$> (js_getClientY ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"button\"] = $2; })"
+        js_setButton :: MouseEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-button MouseEventInit.button specification>
+setButton :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setButton self val = liftDOM (void ((js_setButton ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"button\"]; })"
+        js_getButton :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-button MouseEventInit.button specification>
+getButton :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getButton self = liftDOM (((js_getButton ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-button MouseEventInit.button specification>
+getButtonUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getButtonUnsafe self = liftDOM ((((js_getButton ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-button MouseEventInit.button specification>
+getButtonUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Int
+getButtonUnchecked self = liftDOM ((pFromJSVal <$> (js_getButton ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buttons\"] = $2; })"
+        js_setButtons :: MouseEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-buttons MouseEventInit.buttons specification>
+setButtons :: (MonadDOM m, IsMouseEventInit self) => self -> Word -> m ()
+setButtons self val = liftDOM (void ((js_setButtons ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buttons\"]; })"
+        js_getButtons :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-buttons MouseEventInit.buttons specification>
+getButtons :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Word)
+getButtons self = liftDOM (((js_getButtons ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-buttons MouseEventInit.buttons specification>
+getButtonsUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Word
+getButtonsUnsafe self = liftDOM ((((js_getButtons ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-buttons MouseEventInit.buttons specification>
+getButtonsUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Word
+getButtonsUnchecked self = liftDOM ((pFromJSVal <$> (js_getButtons ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"relatedTarget\"] = $2; })"
+        js_setRelatedTarget :: MouseEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-relatedtarget MouseEventInit.relatedTarget specification>
+setRelatedTarget :: (MonadDOM m, IsMouseEventInit self, IsEventTarget val) => self -> Maybe val -> m ()
+setRelatedTarget self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRelatedTarget ((Types.toMouseEventInit self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
+        js_getRelatedTarget :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-relatedtarget MouseEventInit.relatedTarget specification>
+getRelatedTarget :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe EventTarget)
+getRelatedTarget self = liftDOM (((js_getRelatedTarget ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-relatedtarget MouseEventInit.relatedTarget specification>
+getRelatedTargetUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m EventTarget
+getRelatedTargetUnsafe self = liftDOM ((((js_getRelatedTarget ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-relatedtarget MouseEventInit.relatedTarget specification>
+getRelatedTargetUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m EventTarget
+getRelatedTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelatedTarget ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"movementX\"] = $2; })"
+        js_setMovementX :: MouseEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementx MouseEventInit.movementX specification>
+setMovementX :: (MonadDOM m, IsMouseEventInit self) => self -> Double -> m ()
+setMovementX self val = liftDOM (void ((js_setMovementX ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"movementX\"]; })"
+        js_getMovementX :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementx MouseEventInit.movementX specification>
+getMovementX :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Double)
+getMovementX self = liftDOM (((js_getMovementX ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementx MouseEventInit.movementX specification>
+getMovementXUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Double
+getMovementXUnsafe self = liftDOM ((((js_getMovementX ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementx MouseEventInit.movementX specification>
+getMovementXUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Double
+getMovementXUnchecked self = liftDOM ((pFromJSVal <$> (js_getMovementX ((Types.toMouseEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"movementY\"] = $2; })"
+        js_setMovementY :: MouseEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementy MouseEventInit.movementY specification>
+setMovementY :: (MonadDOM m, IsMouseEventInit self) => self -> Double -> m ()
+setMovementY self val = liftDOM (void ((js_setMovementY ((Types.toMouseEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"movementY\"]; })"
+        js_getMovementY :: MouseEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementy MouseEventInit.movementY specification>
+getMovementY :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Double)
+getMovementY self = liftDOM (((js_getMovementY ((Types.toMouseEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementy MouseEventInit.movementY specification>
+getMovementYUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Double
+getMovementYUnsafe self = liftDOM ((((js_getMovementY ((Types.toMouseEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementy MouseEventInit.movementY specification>
+getMovementYUnchecked :: (MonadDOM m, IsMouseEventInit self) => self -> m Double
+getMovementYUnchecked self = liftDOM ((pFromJSVal <$> (js_getMovementY ((Types.toMouseEventInit self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MultiCacheQueryOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/MultiCacheQueryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MultiCacheQueryOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MultiCacheQueryOptions
+       (js_newMultiCacheQueryOptions, js_setCacheName, js_getCacheName, newMultiCacheQueryOptions, setCacheName, getCacheName, getCacheNameUnsafe, getCacheNameUnchecked, MultiCacheQueryOptions(..), gTypeMultiCacheQueryOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMultiCacheQueryOptions :: IO MultiCacheQueryOptions
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-multicachequeryoptions MultiCacheQueryOptions specification>
+newMultiCacheQueryOptions :: (MonadDOM m) => m MultiCacheQueryOptions
+newMultiCacheQueryOptions = liftDOM ((js_newMultiCacheQueryOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cacheName\"] = $2; })"
+        js_setCacheName :: MultiCacheQueryOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-multicachequeryoptions-cachename MultiCacheQueryOptions.cacheName specification>
+setCacheName :: (MonadDOM m, ToJSString val) => MultiCacheQueryOptions -> val -> m ()
+setCacheName self val = liftDOM (void ((js_setCacheName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cacheName\"]; })"
+        js_getCacheName :: MultiCacheQueryOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-multicachequeryoptions-cachename MultiCacheQueryOptions.cacheName specification>
+getCacheName :: (MonadDOM m, FromJSString result) => MultiCacheQueryOptions -> m (Maybe result)
+getCacheName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCacheName (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-multicachequeryoptions-cachename MultiCacheQueryOptions.cacheName specification>
+getCacheNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MultiCacheQueryOptions -> m result
+getCacheNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCacheName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-multicachequeryoptions-cachename MultiCacheQueryOptions.cacheName specification>
+getCacheNameUnchecked :: (MonadDOM m, FromJSString result) => MultiCacheQueryOptions -> m result
+getCacheNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getCacheName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MutationCallback
+       (newMutationCallback, newMutationCallbackSync, newMutationCallbackAsync, MutationCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newMutationCallback :: (MonadDOM m) => ([MutationRecord] -> MutationObserver -> IO ()) -> m MutationCallback
+newMutationCallback callback = liftDOM ((MutationCallback . coerce) <$> syncCallback2 ContinueAsync (\ mutations observer -> do
+          mutations' <- fromJSValUnchecked mutations
+          observer' <- fromJSValUnchecked observer
+          callback mutations' observer'))
+
+newMutationCallbackSync :: (MonadDOM m) => ([MutationRecord] -> MutationObserver -> IO ()) -> m MutationCallback
+newMutationCallbackSync callback = liftDOM ((MutationCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ mutations observer -> do
+          mutations' <- fromJSValUnchecked mutations
+          observer' <- fromJSValUnchecked observer
+          callback mutations' observer'))
+
+newMutationCallbackAsync :: (MonadDOM m) => ([MutationRecord] -> MutationObserver -> IO ()) -> m MutationCallback
+newMutationCallbackAsync callback = liftDOM ((MutationCallback . coerce) <$> asyncCallback2 (\ mutations observer -> do
+          mutations' <- fromJSValUnchecked mutations
+          observer' <- fromJSValUnchecked observer
+          callback mutations' observer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs
+++ /dev/null
@@ -1,120 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.MutationEvent
-       (js_initMutationEvent, initMutationEvent, pattern MODIFICATION,
-        pattern ADDITION, pattern REMOVAL, js_getRelatedNode,
-        getRelatedNode, getRelatedNodeUnsafe, getRelatedNodeUnchecked,
-        js_getPrevValue, getPrevValue, js_getNewValue, getNewValue,
-        js_getAttrName, getAttrName, js_getAttrChange, getAttrChange,
-        MutationEvent(..), gTypeMutationEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initMutationEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
-        js_initMutationEvent ::
-        MutationEvent ->
-          Optional JSString ->
-            Bool ->
-              Bool ->
-                Optional Node ->
-                  Optional JSString ->
-                    Optional JSString -> Optional JSString -> Optional Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.initMutationEvent Mozilla MutationEvent.initMutationEvent documentation> 
-initMutationEvent ::
-                  (MonadIO m, ToJSString type', IsNode relatedNode,
-                   ToJSString prevValue, ToJSString newValue, ToJSString attrName) =>
-                    MutationEvent ->
-                      Maybe type' ->
-                        Bool ->
-                          Bool ->
-                            Maybe relatedNode ->
-                              Maybe prevValue ->
-                                Maybe newValue -> Maybe attrName -> Maybe Word -> m ()
-initMutationEvent self type' canBubble cancelable relatedNode
-  prevValue newValue attrName attrChange
-  = liftIO
-      (js_initMutationEvent self (toOptionalJSString type') canBubble
-         cancelable
-         (maybeToOptional (fmap toNode relatedNode))
-         (toOptionalJSString prevValue)
-         (toOptionalJSString newValue)
-         (toOptionalJSString attrName)
-         (maybeToOptional attrChange))
-pattern MODIFICATION = 1
-pattern ADDITION = 2
-pattern REMOVAL = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"relatedNode\"]; })"
-        js_getRelatedNode :: MutationEvent -> IO (Nullable Node)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
-getRelatedNode :: (MonadIO m) => MutationEvent -> m (Maybe Node)
-getRelatedNode self
-  = liftIO (nullableToMaybe <$> (js_getRelatedNode self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
-getRelatedNodeUnsafe ::
-                     (MonadIO m, HasCallStack) => MutationEvent -> m Node
-getRelatedNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getRelatedNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
-getRelatedNodeUnchecked :: (MonadIO m) => MutationEvent -> m Node
-getRelatedNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getRelatedNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"prevValue\"]; })"
-        js_getPrevValue :: MutationEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.prevValue Mozilla MutationEvent.prevValue documentation> 
-getPrevValue ::
-             (MonadIO m, FromJSString result) => MutationEvent -> m result
-getPrevValue self
-  = liftIO (fromJSString <$> (js_getPrevValue self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"newValue\"]; })" js_getNewValue
-        :: MutationEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.newValue Mozilla MutationEvent.newValue documentation> 
-getNewValue ::
-            (MonadIO m, FromJSString result) => MutationEvent -> m result
-getNewValue self = liftIO (fromJSString <$> (js_getNewValue self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"attrName\"]; })" js_getAttrName
-        :: MutationEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrName Mozilla MutationEvent.attrName documentation> 
-getAttrName ::
-            (MonadIO m, FromJSString result) => MutationEvent -> m result
-getAttrName self = liftIO (fromJSString <$> (js_getAttrName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"attrChange\"]; })"
-        js_getAttrChange :: MutationEvent -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrChange Mozilla MutationEvent.attrChange documentation> 
-getAttrChange :: (MonadIO m) => MutationEvent -> m Word
-getAttrChange self = liftIO (js_getAttrChange self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
@@ -1,71 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MutationObserver
-       (js_newMutationObserver, newMutationObserver, js_observe, observe,
-        js_disconnect, disconnect, js_takeRecords, takeRecords,
-        takeRecords_, MutationObserver(..), gTypeMutationObserver)
+       (js_newMutationObserver, js_disconnect, js_observe, js_takeRecords, newMutationObserver, disconnect, observe, takeRecords, takeRecords_, MutationObserver(..), gTypeMutationObserver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"MutationObserver\"]($1); })" js_newMutationObserver ::
-        MutationCallback -> IO MutationObserver
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation> 
-newMutationObserver ::
-                    (MonadIO m, IsMutationCallback callback) =>
-                      callback -> m MutationObserver
-newMutationObserver callback
-  = liftIO (js_newMutationObserver (toMutationCallback callback))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"observe\"]($2, $3); })" js_observe
-        ::
-        MutationObserver -> Node -> Optional MutationObserverInit -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"MutationObserver\"]($1); })"
+        js_newMutationObserver :: JSVal -> IO MutationObserver
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/MutationObserver MDN MutationObserver. documentation>
+newMutationObserver :: (MonadDOM m) => MutationCallback -> m MutationObserver
+newMutationObserver callback' = liftDOM (((toJSVal callback') >>= \a1' -> js_newMutationObserver a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.observe Mozilla MutationObserver.observe documentation> 
-observe ::
-        (MonadIO m, IsNode target) =>
-          MutationObserver -> target -> Maybe MutationObserverInit -> m ()
-observe self target options
-  = liftIO
-      (js_observe self (toNode target) (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"disconnect\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"disconnect\"](); })"
         js_disconnect :: MutationObserver -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/disconnect MDN MutationObserver.disconnect documentation>
+disconnect :: (MonadDOM m) => MutationObserver -> m ()
+disconnect self = liftDOM (void ((js_disconnect (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.disconnect Mozilla MutationObserver.disconnect documentation> 
-disconnect :: (MonadIO m) => MutationObserver -> m ()
-disconnect self = liftIO (js_disconnect self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"takeRecords\"](); })"
-        js_takeRecords :: MutationObserver -> IO JSVal
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"observe\"]($2, $3); })"
+        js_observe :: MutationObserver -> Node -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/observe MDN MutationObserver.observe documentation>
+observe :: (MonadDOM m, IsNode target) => MutationObserver -> target -> Maybe MutationObserverInit -> m ()
+observe self target options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_observe (self) (Types.toNode target) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.takeRecords Mozilla MutationObserver.takeRecords documentation> 
-takeRecords ::
-            (MonadIO m) => MutationObserver -> m [MutationRecord]
-takeRecords self
-  = liftIO ((js_takeRecords self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1) => { return $1[\"takeRecords\"](); })"
+        js_takeRecords :: MutationObserver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/takeRecords MDN MutationObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => MutationObserver -> m [MutationRecord]
+takeRecords self = liftDOM (((js_takeRecords (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.takeRecords Mozilla MutationObserver.takeRecords documentation> 
-takeRecords_ :: (MonadIO m) => MutationObserver -> m ()
-takeRecords_ self = liftIO (void (js_takeRecords self))
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/takeRecords MDN MutationObserver.takeRecords documentation>
+takeRecords_ :: (MonadDOM m) => MutationObserver -> m ()
+takeRecords_ self = liftDOM (void ((js_takeRecords (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationObserverInit.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationObserverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationObserverInit.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.MutationObserverInit
+       (js_newMutationObserverInit, js_setChildList, js_getChildList, js_setAttributes, js_getAttributes, js_setCharacterData, js_getCharacterData, js_setSubtree, js_getSubtree, js_setAttributeOldValue, js_getAttributeOldValue, js_setCharacterDataOldValue, js_getCharacterDataOldValue, js_setAttributeFilter, js_getAttributeFilter, newMutationObserverInit, setChildList, getChildList, getChildListUnsafe, getChildListUnchecked, setAttributes, getAttributes, getAttributesUnsafe, getAttributesUnchecked, setCharacterData, getCharacterData, getCharacterDataUnsafe, getCharacterDataUnchecked, setSubtree, getSubtree, getSubtreeUnsafe, getSubtreeUnchecked, setAttributeOldValue, getAttributeOldValue, getAttributeOldValueUnsafe, getAttributeOldValueUnchecked, setCharacterDataOldValue, getCharacterDataOldValue, getCharacterDataOldValueUnsafe, getCharacterDataOldValueUnchecked, setAttributeFilter, getAttributeFilter, getAttributeFilterUnsafe, getAttributeFilterUnchecked, MutationObserverInit(..), gTypeMutationObserverInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newMutationObserverInit :: IO MutationObserverInit
+-- | <https://dom.spec.whatwg.org/#dictdef-mutationobserverinit MutationObserverInit specification>
+newMutationObserverInit :: (MonadDOM m) => m MutationObserverInit
+newMutationObserverInit = liftDOM ((js_newMutationObserverInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"childList\"] = $2; })"
+        js_setChildList :: MutationObserverInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-childlist MutationObserverInit.childList specification>
+setChildList :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setChildList self val = liftDOM (void ((js_setChildList (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"childList\"]; })"
+        js_getChildList :: MutationObserverInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-childlist MutationObserverInit.childList specification>
+getChildList :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getChildList self = liftDOM (((js_getChildList (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-childlist MutationObserverInit.childList specification>
+getChildListUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getChildListUnsafe self = liftDOM ((((js_getChildList (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-childlist MutationObserverInit.childList specification>
+getChildListUnchecked :: (MonadDOM m) => MutationObserverInit -> m Bool
+getChildListUnchecked self = liftDOM ((pFromJSVal <$> (js_getChildList (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attributes\"] = $2; })"
+        js_setAttributes :: MutationObserverInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributes MutationObserverInit.attributes specification>
+setAttributes :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setAttributes self val = liftDOM (void ((js_setAttributes (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributes\"]; })"
+        js_getAttributes :: MutationObserverInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributes MutationObserverInit.attributes specification>
+getAttributes :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getAttributes self = liftDOM (((js_getAttributes (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributes MutationObserverInit.attributes specification>
+getAttributesUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getAttributesUnsafe self = liftDOM ((((js_getAttributes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributes MutationObserverInit.attributes specification>
+getAttributesUnchecked :: (MonadDOM m) => MutationObserverInit -> m Bool
+getAttributesUnchecked self = liftDOM ((pFromJSVal <$> (js_getAttributes (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"characterData\"] = $2; })"
+        js_setCharacterData :: MutationObserverInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdata MutationObserverInit.characterData specification>
+setCharacterData :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setCharacterData self val = liftDOM (void ((js_setCharacterData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"characterData\"]; })"
+        js_getCharacterData :: MutationObserverInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdata MutationObserverInit.characterData specification>
+getCharacterData :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getCharacterData self = liftDOM (((js_getCharacterData (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdata MutationObserverInit.characterData specification>
+getCharacterDataUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getCharacterDataUnsafe self = liftDOM ((((js_getCharacterData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdata MutationObserverInit.characterData specification>
+getCharacterDataUnchecked :: (MonadDOM m) => MutationObserverInit -> m Bool
+getCharacterDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getCharacterData (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"subtree\"] = $2; })"
+        js_setSubtree :: MutationObserverInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-subtree MutationObserverInit.subtree specification>
+setSubtree :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setSubtree self val = liftDOM (void ((js_setSubtree (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"subtree\"]; })"
+        js_getSubtree :: MutationObserverInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-subtree MutationObserverInit.subtree specification>
+getSubtree :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getSubtree self = liftDOM (((js_getSubtree (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-subtree MutationObserverInit.subtree specification>
+getSubtreeUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getSubtreeUnsafe self = liftDOM ((((js_getSubtree (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-subtree MutationObserverInit.subtree specification>
+getSubtreeUnchecked :: (MonadDOM m) => MutationObserverInit -> m Bool
+getSubtreeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSubtree (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attributeOldValue\"] = $2; })"
+        js_setAttributeOldValue :: MutationObserverInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributeoldvalue MutationObserverInit.attributeOldValue specification>
+setAttributeOldValue :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setAttributeOldValue self val = liftDOM (void ((js_setAttributeOldValue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributeOldValue\"]; })"
+        js_getAttributeOldValue :: MutationObserverInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributeoldvalue MutationObserverInit.attributeOldValue specification>
+getAttributeOldValue :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getAttributeOldValue self = liftDOM (((js_getAttributeOldValue (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributeoldvalue MutationObserverInit.attributeOldValue specification>
+getAttributeOldValueUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getAttributeOldValueUnsafe self = liftDOM ((((js_getAttributeOldValue (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributeoldvalue MutationObserverInit.attributeOldValue specification>
+getAttributeOldValueUnchecked :: (MonadDOM m) => MutationObserverInit -> m Bool
+getAttributeOldValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getAttributeOldValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"characterDataOldValue\"] = $2; })"
+        js_setCharacterDataOldValue :: MutationObserverInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdataoldvalue MutationObserverInit.characterDataOldValue specification>
+setCharacterDataOldValue :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setCharacterDataOldValue self val = liftDOM (void ((js_setCharacterDataOldValue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"characterDataOldValue\"]; })"
+        js_getCharacterDataOldValue :: MutationObserverInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdataoldvalue MutationObserverInit.characterDataOldValue specification>
+getCharacterDataOldValue :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getCharacterDataOldValue self = liftDOM (((js_getCharacterDataOldValue (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdataoldvalue MutationObserverInit.characterDataOldValue specification>
+getCharacterDataOldValueUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getCharacterDataOldValueUnsafe self = liftDOM ((((js_getCharacterDataOldValue (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdataoldvalue MutationObserverInit.characterDataOldValue specification>
+getCharacterDataOldValueUnchecked :: (MonadDOM m) => MutationObserverInit -> m Bool
+getCharacterDataOldValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getCharacterDataOldValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attributeFilter\"] = $2; })"
+        js_setAttributeFilter :: MutationObserverInit -> JSVal -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributefilter MutationObserverInit.attributeFilter specification>
+setAttributeFilter :: (MonadDOM m, ToJSString val) => MutationObserverInit -> [val] -> m ()
+setAttributeFilter self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAttributeFilter (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributeFilter\"]; })"
+        js_getAttributeFilter :: MutationObserverInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributefilter MutationObserverInit.attributeFilter specification>
+getAttributeFilter :: (MonadDOM m, FromJSString result) => MutationObserverInit -> m (Maybe [result])
+getAttributeFilter self = liftDOM (((js_getAttributeFilter (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributefilter MutationObserverInit.attributeFilter specification>
+getAttributeFilterUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MutationObserverInit -> m [result]
+getAttributeFilterUnsafe self = liftDOM ((((js_getAttributeFilter (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributefilter MutationObserverInit.attributeFilter specification>
+getAttributeFilterUnchecked :: (MonadDOM m, FromJSString result) => MutationObserverInit -> m [result]
+getAttributeFilterUnchecked self = liftDOM (((js_getAttributeFilter (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
@@ -1,188 +1,111 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.MutationRecord
-       (js_getType, getType, js_getTarget, getTarget, js_getAddedNodes,
-        getAddedNodes, js_getRemovedNodes, getRemovedNodes,
-        js_getPreviousSibling, getPreviousSibling,
-        getPreviousSiblingUnsafe, getPreviousSiblingUnchecked,
-        js_getNextSibling, getNextSibling, getNextSiblingUnsafe,
-        getNextSiblingUnchecked, js_getAttributeName, getAttributeName,
-        getAttributeNameUnsafe, getAttributeNameUnchecked,
-        js_getAttributeNamespace, getAttributeNamespace,
-        getAttributeNamespaceUnsafe, getAttributeNamespaceUnchecked,
-        js_getOldValue, getOldValue, getOldValueUnsafe,
-        getOldValueUnchecked, MutationRecord(..), gTypeMutationRecord)
+       (js_getType, js_getTarget, js_getAddedNodes, js_getRemovedNodes, js_getPreviousSibling, js_getNextSibling, js_getAttributeName, js_getAttributeNamespace, js_getOldValue, getType, getTarget, getAddedNodes, getRemovedNodes, getPreviousSibling, getPreviousSiblingUnsafe, getPreviousSiblingUnchecked, getNextSibling, getNextSiblingUnsafe, getNextSiblingUnchecked, getAttributeName, getAttributeNameUnsafe, getAttributeNameUnchecked, getAttributeNamespace, getAttributeNamespaceUnsafe, getAttributeNamespaceUnchecked, getOldValue, getOldValueUnsafe, getOldValueUnchecked, MutationRecord(..), gTypeMutationRecord)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        MutationRecord -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.type Mozilla MutationRecord.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => MutationRecord -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        MutationRecord -> IO Node
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: MutationRecord -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/type MDN MutationRecord.type documentation>
+getType :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.target Mozilla MutationRecord.target documentation> 
-getTarget :: (MonadIO m) => MutationRecord -> m Node
-getTarget self = liftIO (js_getTarget self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: MutationRecord -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/target MDN MutationRecord.target documentation>
+getTarget :: (MonadDOM m) => MutationRecord -> m Node
+getTarget self = liftDOM ((js_getTarget (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"addedNodes\"]; })"
         js_getAddedNodes :: MutationRecord -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/addedNodes MDN MutationRecord.addedNodes documentation>
+getAddedNodes :: (MonadDOM m) => MutationRecord -> m NodeList
+getAddedNodes self = liftDOM ((js_getAddedNodes (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.addedNodes Mozilla MutationRecord.addedNodes documentation> 
-getAddedNodes :: (MonadIO m) => MutationRecord -> m NodeList
-getAddedNodes self = liftIO (js_getAddedNodes self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"removedNodes\"]; })"
         js_getRemovedNodes :: MutationRecord -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/removedNodes MDN MutationRecord.removedNodes documentation>
+getRemovedNodes :: (MonadDOM m) => MutationRecord -> m NodeList
+getRemovedNodes self = liftDOM ((js_getRemovedNodes (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.removedNodes Mozilla MutationRecord.removedNodes documentation> 
-getRemovedNodes :: (MonadIO m) => MutationRecord -> m NodeList
-getRemovedNodes self = liftIO (js_getRemovedNodes self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"previousSibling\"]; })"
-        js_getPreviousSibling :: MutationRecord -> IO (Nullable Node)
+        js_getPreviousSibling :: MutationRecord -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/previousSibling MDN MutationRecord.previousSibling documentation>
+getPreviousSibling :: (MonadDOM m) => MutationRecord -> m (Maybe Node)
+getPreviousSibling self = liftDOM (((js_getPreviousSibling (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
-getPreviousSibling ::
-                   (MonadIO m) => MutationRecord -> m (Maybe Node)
-getPreviousSibling self
-  = liftIO (nullableToMaybe <$> (js_getPreviousSibling self))
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/previousSibling MDN MutationRecord.previousSibling documentation>
+getPreviousSiblingUnsafe :: (MonadDOM m, HasCallStack) => MutationRecord -> m Node
+getPreviousSiblingUnsafe self = liftDOM ((((js_getPreviousSibling (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
-getPreviousSiblingUnsafe ::
-                         (MonadIO m, HasCallStack) => MutationRecord -> m Node
-getPreviousSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getPreviousSibling self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/previousSibling MDN MutationRecord.previousSibling documentation>
+getPreviousSiblingUnchecked :: (MonadDOM m) => MutationRecord -> m Node
+getPreviousSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreviousSibling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
-getPreviousSiblingUnchecked ::
-                            (MonadIO m) => MutationRecord -> m Node
-getPreviousSiblingUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getPreviousSibling self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"nextSibling\"]; })"
-        js_getNextSibling :: MutationRecord -> IO (Nullable Node)
+        js_getNextSibling :: MutationRecord -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/nextSibling MDN MutationRecord.nextSibling documentation>
+getNextSibling :: (MonadDOM m) => MutationRecord -> m (Maybe Node)
+getNextSibling self = liftDOM (((js_getNextSibling (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
-getNextSibling :: (MonadIO m) => MutationRecord -> m (Maybe Node)
-getNextSibling self
-  = liftIO (nullableToMaybe <$> (js_getNextSibling self))
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/nextSibling MDN MutationRecord.nextSibling documentation>
+getNextSiblingUnsafe :: (MonadDOM m, HasCallStack) => MutationRecord -> m Node
+getNextSiblingUnsafe self = liftDOM ((((js_getNextSibling (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
-getNextSiblingUnsafe ::
-                     (MonadIO m, HasCallStack) => MutationRecord -> m Node
-getNextSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getNextSibling self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/nextSibling MDN MutationRecord.nextSibling documentation>
+getNextSiblingUnchecked :: (MonadDOM m) => MutationRecord -> m Node
+getNextSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_getNextSibling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
-getNextSiblingUnchecked :: (MonadIO m) => MutationRecord -> m Node
-getNextSiblingUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getNextSibling self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"attributeName\"]; })"
-        js_getAttributeName :: MutationRecord -> IO (Nullable JSString)
+        js_getAttributeName :: MutationRecord -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeName MDN MutationRecord.attributeName documentation>
+getAttributeName :: (MonadDOM m, FromJSString result) => MutationRecord -> m (Maybe result)
+getAttributeName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAttributeName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
-getAttributeName ::
-                 (MonadIO m, FromJSString result) =>
-                   MutationRecord -> m (Maybe result)
-getAttributeName self
-  = liftIO (fromMaybeJSString <$> (js_getAttributeName self))
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeName MDN MutationRecord.attributeName documentation>
+getAttributeNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MutationRecord -> m result
+getAttributeNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAttributeName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
-getAttributeNameUnsafe ::
-                       (MonadIO m, HasCallStack, FromJSString result) =>
-                         MutationRecord -> m result
-getAttributeNameUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getAttributeName self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeName MDN MutationRecord.attributeName documentation>
+getAttributeNameUnchecked :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getAttributeNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getAttributeName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
-getAttributeNameUnchecked ::
-                          (MonadIO m, FromJSString result) => MutationRecord -> m result
-getAttributeNameUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getAttributeName self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"attributeNamespace\"]; })"
-        js_getAttributeNamespace ::
-        MutationRecord -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
-getAttributeNamespace ::
-                      (MonadIO m, FromJSString result) =>
-                        MutationRecord -> m (Maybe result)
-getAttributeNamespace self
-  = liftIO (fromMaybeJSString <$> (js_getAttributeNamespace self))
+        js_getAttributeNamespace :: MutationRecord -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeNamespace MDN MutationRecord.attributeNamespace documentation>
+getAttributeNamespace :: (MonadDOM m, FromJSString result) => MutationRecord -> m (Maybe result)
+getAttributeNamespace self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAttributeNamespace (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
-getAttributeNamespaceUnsafe ::
-                            (MonadIO m, HasCallStack, FromJSString result) =>
-                              MutationRecord -> m result
-getAttributeNamespaceUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getAttributeNamespace self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeNamespace MDN MutationRecord.attributeNamespace documentation>
+getAttributeNamespaceUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MutationRecord -> m result
+getAttributeNamespaceUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAttributeNamespace (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
-getAttributeNamespaceUnchecked ::
-                               (MonadIO m, FromJSString result) => MutationRecord -> m result
-getAttributeNamespaceUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getAttributeNamespace self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"oldValue\"]; })" js_getOldValue
-        :: MutationRecord -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeNamespace MDN MutationRecord.attributeNamespace documentation>
+getAttributeNamespaceUnchecked :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getAttributeNamespaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getAttributeNamespace (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
-getOldValue ::
-            (MonadIO m, FromJSString result) =>
-              MutationRecord -> m (Maybe result)
-getOldValue self
-  = liftIO (fromMaybeJSString <$> (js_getOldValue self))
+foreign import javascript unsafe "(($1) => { return $1[\"oldValue\"]; })"
+        js_getOldValue :: MutationRecord -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/oldValue MDN MutationRecord.oldValue documentation>
+getOldValue :: (MonadDOM m, FromJSString result) => MutationRecord -> m (Maybe result)
+getOldValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOldValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
-getOldValueUnsafe ::
-                  (MonadIO m, HasCallStack, FromJSString result) =>
-                    MutationRecord -> m result
-getOldValueUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getOldValue self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/oldValue MDN MutationRecord.oldValue documentation>
+getOldValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MutationRecord -> m result
+getOldValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOldValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
-getOldValueUnchecked ::
-                     (MonadIO m, FromJSString result) => MutationRecord -> m result
-getOldValueUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getOldValue self))
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/oldValue MDN MutationRecord.oldValue documentation>
+getOldValueUnchecked :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getOldValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs b/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
@@ -1,248 +1,133 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NamedNodeMap
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getNamedItem,
-        getNamedItem, getNamedItem_, getNamedItemUnsafe,
-        getNamedItemUnchecked, js_getNamedItemNS, getNamedItemNS,
-        getNamedItemNS_, getNamedItemNSUnsafe, getNamedItemNSUnchecked,
-        js_setNamedItem, setNamedItem, setNamedItem_, setNamedItemUnsafe,
-        setNamedItemUnchecked, js_setNamedItemNS, setNamedItemNS,
-        setNamedItemNS_, setNamedItemNSUnsafe, setNamedItemNSUnchecked,
-        js_removeNamedItem, removeNamedItem, removeNamedItem_,
-        js_removeNamedItemNS, removeNamedItemNS, removeNamedItemNS_,
-        js_getLength, getLength, NamedNodeMap(..), gTypeNamedNodeMap)
+       (js_getNamedItem, js_getNamedItemNS, js_item, js_removeNamedItem, js_removeNamedItemNS, js_setNamedItem, js_setNamedItemNS, js_getLength, getNamedItem, getNamedItem_, getNamedItemUnsafe, getNamedItemUnchecked, getNamedItemNS, getNamedItemNS_, getNamedItemNSUnsafe, getNamedItemNSUnchecked, item, item_, itemUnsafe, itemUnchecked, removeNamedItem, removeNamedItem_, removeNamedItemNS, removeNamedItemNS_, setNamedItem, setNamedItem_, setNamedItemUnsafe, setNamedItemUnchecked, setNamedItemNS, setNamedItemNS_, setNamedItemNSUnsafe, setNamedItemNSUnchecked, getLength, NamedNodeMap(..), gTypeNamedNodeMap)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        NamedNodeMap -> Word -> IO (Nullable Attr)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
-item :: (MonadIO m) => NamedNodeMap -> Word -> m (Maybe Attr)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"getNamedItem\"]($2); })"
+        js_getNamedItem :: NamedNodeMap -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItem MDN NamedNodeMap.getNamedItem documentation>
+getNamedItem :: (MonadDOM m, ToJSString qualifiedName) => NamedNodeMap -> qualifiedName -> m (Maybe Attr)
+getNamedItem self qualifiedName = liftDOM (((js_getNamedItem (self) (toJSString qualifiedName)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
-item_ :: (MonadIO m) => NamedNodeMap -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItem MDN NamedNodeMap.getNamedItem documentation>
+getNamedItem_ :: (MonadDOM m, ToJSString qualifiedName) => NamedNodeMap -> qualifiedName -> m ()
+getNamedItem_ self qualifiedName = liftDOM (void ((js_getNamedItem (self) (toJSString qualifiedName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => NamedNodeMap -> Word -> m Attr
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItem MDN NamedNodeMap.getNamedItem documentation>
+getNamedItemUnsafe :: (MonadDOM m, ToJSString qualifiedName, HasCallStack) => NamedNodeMap -> qualifiedName -> m Attr
+getNamedItemUnsafe self qualifiedName = liftDOM ((((js_getNamedItem (self) (toJSString qualifiedName)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
-itemUnchecked :: (MonadIO m) => NamedNodeMap -> Word -> m Attr
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_getNamedItem ::
-        NamedNodeMap -> JSString -> IO (Nullable Attr)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItem MDN NamedNodeMap.getNamedItem documentation>
+getNamedItemUnchecked :: (MonadDOM m, ToJSString qualifiedName) => NamedNodeMap -> qualifiedName -> m Attr
+getNamedItemUnchecked self qualifiedName = liftDOM ((pFromJSVal <$> (js_getNamedItem (self) (toJSString qualifiedName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
-getNamedItem ::
-             (MonadIO m, ToJSString qualifiedName) =>
-               NamedNodeMap -> qualifiedName -> m (Maybe Attr)
-getNamedItem self qualifiedName
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getNamedItem self (toJSString qualifiedName)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getNamedItemNS\"]($2, $3); })"
+        js_getNamedItemNS :: NamedNodeMap -> (Nullable JSString) -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItemNS MDN NamedNodeMap.getNamedItemNS documentation>
+getNamedItemNS :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m (Maybe Attr)
+getNamedItemNS self namespace localName = liftDOM (((js_getNamedItemNS (self) (toMaybeJSString namespace) (toJSString localName)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
-getNamedItem_ ::
-              (MonadIO m, ToJSString qualifiedName) =>
-                NamedNodeMap -> qualifiedName -> m ()
-getNamedItem_ self qualifiedName
-  = liftIO (void (js_getNamedItem self (toJSString qualifiedName)))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItemNS MDN NamedNodeMap.getNamedItemNS documentation>
+getNamedItemNS_ :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m ()
+getNamedItemNS_ self namespace localName = liftDOM (void ((js_getNamedItemNS (self) (toMaybeJSString namespace) (toJSString localName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
-getNamedItemUnsafe ::
-                   (MonadIO m, ToJSString qualifiedName, HasCallStack) =>
-                     NamedNodeMap -> qualifiedName -> m Attr
-getNamedItemUnsafe self qualifiedName
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getNamedItem self (toJSString qualifiedName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItemNS MDN NamedNodeMap.getNamedItemNS documentation>
+getNamedItemNSUnsafe :: (MonadDOM m, ToJSString namespace, ToJSString localName, HasCallStack) => NamedNodeMap -> Maybe namespace -> localName -> m Attr
+getNamedItemNSUnsafe self namespace localName = liftDOM ((((js_getNamedItemNS (self) (toMaybeJSString namespace) (toJSString localName)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
-getNamedItemUnchecked ::
-                      (MonadIO m, ToJSString qualifiedName) =>
-                        NamedNodeMap -> qualifiedName -> m Attr
-getNamedItemUnchecked self qualifiedName
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getNamedItem self (toJSString qualifiedName)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getNamedItemNS\"]($2, $3); })"
-        js_getNamedItemNS ::
-        NamedNodeMap -> Optional JSString -> JSString -> IO (Nullable Attr)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/getNamedItemNS MDN NamedNodeMap.getNamedItemNS documentation>
+getNamedItemNSUnchecked :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m Attr
+getNamedItemNSUnchecked self namespace localName = liftDOM ((pFromJSVal <$> (js_getNamedItemNS (self) (toMaybeJSString namespace) (toJSString localName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
-getNamedItemNS ::
-               (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
-                 NamedNodeMap -> Maybe namespaceURI -> localName -> m (Maybe Attr)
-getNamedItemNS self namespaceURI localName
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getNamedItemNS self (toOptionalJSString namespaceURI)
-            (toJSString localName)))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: NamedNodeMap -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/item MDN NamedNodeMap.item documentation>
+item :: (MonadDOM m) => NamedNodeMap -> Word -> m (Maybe Attr)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
-getNamedItemNS_ ::
-                (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
-                  NamedNodeMap -> Maybe namespaceURI -> localName -> m ()
-getNamedItemNS_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_getNamedItemNS self (toOptionalJSString namespaceURI)
-            (toJSString localName)))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/item MDN NamedNodeMap.item documentation>
+item_ :: (MonadDOM m) => NamedNodeMap -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
-getNamedItemNSUnsafe ::
-                     (MonadIO m, ToJSString namespaceURI, ToJSString localName,
-                      HasCallStack) =>
-                       NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
-getNamedItemNSUnsafe self namespaceURI localName
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getNamedItemNS self (toOptionalJSString namespaceURI)
-             (toJSString localName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/item MDN NamedNodeMap.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => NamedNodeMap -> Word -> m Attr
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
-getNamedItemNSUnchecked ::
-                        (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
-                          NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
-getNamedItemNSUnchecked self namespaceURI localName
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getNamedItemNS self (toOptionalJSString namespaceURI)
-            (toJSString localName)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setNamedItem\"]($2); })"
-        js_setNamedItem :: NamedNodeMap -> Attr -> IO (Nullable Attr)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/item MDN NamedNodeMap.item documentation>
+itemUnchecked :: (MonadDOM m) => NamedNodeMap -> Word -> m Attr
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItem ::
-             (MonadIO m) => NamedNodeMap -> Attr -> m (Maybe Attr)
-setNamedItem self attr
-  = liftIO (nullableToMaybe <$> (js_setNamedItem self attr))
+foreign import javascript safe "(($1, $2) => { return $1[\"removeNamedItem\"]($2); })"
+        js_removeNamedItem :: NamedNodeMap -> JSString -> IO Attr
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/removeNamedItem MDN NamedNodeMap.removeNamedItem documentation>
+removeNamedItem :: (MonadDOM m, ToJSString qualifiedName) => NamedNodeMap -> qualifiedName -> m Attr
+removeNamedItem self qualifiedName = liftDOM ((js_removeNamedItem (self) (toJSString qualifiedName)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItem_ :: (MonadIO m) => NamedNodeMap -> Attr -> m ()
-setNamedItem_ self attr = liftIO (void (js_setNamedItem self attr))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/removeNamedItem MDN NamedNodeMap.removeNamedItem documentation>
+removeNamedItem_ :: (MonadDOM m, ToJSString qualifiedName) => NamedNodeMap -> qualifiedName -> m ()
+removeNamedItem_ self qualifiedName = liftDOM (void ((js_removeNamedItem (self) (toJSString qualifiedName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItemUnsafe ::
-                   (MonadIO m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
-setNamedItemUnsafe self attr
-  = liftIO
-      ((nullableToMaybe <$> (js_setNamedItem self attr)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"removeNamedItemNS\"]($2, $3); })"
+        js_removeNamedItemNS :: NamedNodeMap -> (Nullable JSString) -> JSString -> IO Attr
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/removeNamedItemNS MDN NamedNodeMap.removeNamedItemNS documentation>
+removeNamedItemNS :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m Attr
+removeNamedItemNS self namespace localName = liftDOM ((js_removeNamedItemNS (self) (toMaybeJSString namespace) (toJSString localName)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItemUnchecked ::
-                      (MonadIO m) => NamedNodeMap -> Attr -> m Attr
-setNamedItemUnchecked self attr
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_setNamedItem self attr))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setNamedItemNS\"]($2); })"
-        js_setNamedItemNS :: NamedNodeMap -> Attr -> IO (Nullable Attr)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/removeNamedItemNS MDN NamedNodeMap.removeNamedItemNS documentation>
+removeNamedItemNS_ :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m ()
+removeNamedItemNS_ self namespace localName = liftDOM (void ((js_removeNamedItemNS (self) (toMaybeJSString namespace) (toJSString localName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
-setNamedItemNS ::
-               (MonadIO m) => NamedNodeMap -> Attr -> m (Maybe Attr)
-setNamedItemNS self attr
-  = liftIO (nullableToMaybe <$> (js_setNamedItemNS self attr))
+foreign import javascript safe "(($1, $2) => { return $1[\"setNamedItem\"]($2); })"
+        js_setNamedItem :: NamedNodeMap -> Attr -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItem MDN NamedNodeMap.setNamedItem documentation>
+setNamedItem :: (MonadDOM m) => NamedNodeMap -> Attr -> m (Maybe Attr)
+setNamedItem self attr = liftDOM (((js_setNamedItem (self) (attr)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
-setNamedItemNS_ :: (MonadIO m) => NamedNodeMap -> Attr -> m ()
-setNamedItemNS_ self attr
-  = liftIO (void (js_setNamedItemNS self attr))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItem MDN NamedNodeMap.setNamedItem documentation>
+setNamedItem_ :: (MonadDOM m) => NamedNodeMap -> Attr -> m ()
+setNamedItem_ self attr = liftDOM (void ((js_setNamedItem (self) (attr))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
-setNamedItemNSUnsafe ::
-                     (MonadIO m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
-setNamedItemNSUnsafe self attr
-  = liftIO
-      ((nullableToMaybe <$> (js_setNamedItemNS self attr)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItem MDN NamedNodeMap.setNamedItem documentation>
+setNamedItemUnsafe :: (MonadDOM m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
+setNamedItemUnsafe self attr = liftDOM ((((js_setNamedItem (self) (attr)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
-setNamedItemNSUnchecked ::
-                        (MonadIO m) => NamedNodeMap -> Attr -> m Attr
-setNamedItemNSUnchecked self attr
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_setNamedItemNS self attr))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"removeNamedItem\"]($2); })"
-        js_removeNamedItem :: NamedNodeMap -> JSString -> IO Attr
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItem MDN NamedNodeMap.setNamedItem documentation>
+setNamedItemUnchecked :: (MonadDOM m) => NamedNodeMap -> Attr -> m Attr
+setNamedItemUnchecked self attr = liftDOM ((pFromJSVal <$> (js_setNamedItem (self) (attr))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
-removeNamedItem ::
-                (MonadIO m, ToJSString qualifiedName) =>
-                  NamedNodeMap -> qualifiedName -> m Attr
-removeNamedItem self qualifiedName
-  = liftIO (js_removeNamedItem self (toJSString qualifiedName))
+foreign import javascript safe "(($1, $2) => { return $1[\"setNamedItemNS\"]($2); })"
+        js_setNamedItemNS :: NamedNodeMap -> Attr -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItemNS MDN NamedNodeMap.setNamedItemNS documentation>
+setNamedItemNS :: (MonadDOM m) => NamedNodeMap -> Attr -> m (Maybe Attr)
+setNamedItemNS self attr = liftDOM (((js_setNamedItemNS (self) (attr)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
-removeNamedItem_ ::
-                 (MonadIO m, ToJSString qualifiedName) =>
-                   NamedNodeMap -> qualifiedName -> m ()
-removeNamedItem_ self qualifiedName
-  = liftIO
-      (void (js_removeNamedItem self (toJSString qualifiedName)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"removeNamedItemNS\"]($2, $3); })"
-        js_removeNamedItemNS ::
-        NamedNodeMap -> Optional JSString -> JSString -> IO Attr
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItemNS MDN NamedNodeMap.setNamedItemNS documentation>
+setNamedItemNS_ :: (MonadDOM m) => NamedNodeMap -> Attr -> m ()
+setNamedItemNS_ self attr = liftDOM (void ((js_setNamedItemNS (self) (attr))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
-removeNamedItemNS ::
-                  (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
-                    NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
-removeNamedItemNS self namespaceURI localName
-  = liftIO
-      (js_removeNamedItemNS self (toOptionalJSString namespaceURI)
-         (toJSString localName))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItemNS MDN NamedNodeMap.setNamedItemNS documentation>
+setNamedItemNSUnsafe :: (MonadDOM m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
+setNamedItemNSUnsafe self attr = liftDOM ((((js_setNamedItemNS (self) (attr)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
-removeNamedItemNS_ ::
-                   (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
-                     NamedNodeMap -> Maybe namespaceURI -> localName -> m ()
-removeNamedItemNS_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_removeNamedItemNS self (toOptionalJSString namespaceURI)
-            (toJSString localName)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        NamedNodeMap -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItemNS MDN NamedNodeMap.setNamedItemNS documentation>
+setNamedItemNSUnchecked :: (MonadDOM m) => NamedNodeMap -> Attr -> m Attr
+setNamedItemNSUnchecked self attr = liftDOM ((pFromJSVal <$> (js_setNamedItemNS (self) (attr))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.length Mozilla NamedNodeMap.length documentation> 
-getLength :: (MonadIO m) => NamedNodeMap -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: NamedNodeMap -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/length MDN NamedNodeMap.length documentation>
+getLength :: (MonadDOM m) => NamedNodeMap -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigateEvent.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigateEvent
+       (js_newNavigateEvent, js_intercept, js_scroll, js_getNavigationType, js_getDestination, js_getCanIntercept, js_getUserInitiated, js_getHashChange, js_getSignal, js_getFormData, js_getDownloadRequest, js_getInfo, js_getHasUAVisualTransition, js_getSourceElement, newNavigateEvent, intercept, scroll, getNavigationType, getDestination, getCanIntercept, getUserInitiated, getHashChange, getSignal, getFormData, getFormDataUnsafe, getFormDataUnchecked, getDownloadRequest, getDownloadRequestUnsafe, getDownloadRequestUnchecked, getInfo, getHasUAVisualTransition, getSourceElement, getSourceElementUnsafe, getSourceElementUnchecked, NavigateEvent(..), gTypeNavigateEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"NavigateEvent\"]($1, $2); })"
+        js_newNavigateEvent :: JSString -> NavigateEventInit -> IO NavigateEvent
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/NavigateEvent MDN NavigateEvent. documentation>
+newNavigateEvent :: (MonadDOM m, ToJSString type') => type' -> NavigateEventInit -> m NavigateEvent
+newNavigateEvent type' eventInitDict = liftDOM ((js_newNavigateEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"intercept\"]($2); })"
+        js_intercept :: NavigateEvent -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/intercept MDN NavigateEvent.intercept documentation>
+intercept :: (MonadDOM m) => NavigateEvent -> Maybe NavigationInterceptOptions -> m ()
+intercept self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_intercept (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"scroll\"](); })"
+        js_scroll :: NavigateEvent -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/scroll MDN NavigateEvent.scroll documentation>
+scroll :: (MonadDOM m) => NavigateEvent -> m ()
+scroll self = liftDOM (void ((js_scroll (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationType\"]; })"
+        js_getNavigationType :: NavigateEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/navigationType MDN NavigateEvent.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigateEvent -> m NavigationType
+getNavigationType self = liftDOM (((js_getNavigationType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"destination\"]; })"
+        js_getDestination :: NavigateEvent -> IO NavigationDestination
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/destination MDN NavigateEvent.destination documentation>
+getDestination :: (MonadDOM m) => NavigateEvent -> m NavigationDestination
+getDestination self = liftDOM ((js_getDestination (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"canIntercept\"]; })"
+        js_getCanIntercept :: NavigateEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/canIntercept MDN NavigateEvent.canIntercept documentation>
+getCanIntercept :: (MonadDOM m) => NavigateEvent -> m Bool
+getCanIntercept self = liftDOM ((js_getCanIntercept (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userInitiated\"]; })"
+        js_getUserInitiated :: NavigateEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/userInitiated MDN NavigateEvent.userInitiated documentation>
+getUserInitiated :: (MonadDOM m) => NavigateEvent -> m Bool
+getUserInitiated self = liftDOM ((js_getUserInitiated (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hashChange\"]; })"
+        js_getHashChange :: NavigateEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/hashChange MDN NavigateEvent.hashChange documentation>
+getHashChange :: (MonadDOM m) => NavigateEvent -> m Bool
+getHashChange self = liftDOM ((js_getHashChange (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: NavigateEvent -> IO AbortSignal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/signal MDN NavigateEvent.signal documentation>
+getSignal :: (MonadDOM m) => NavigateEvent -> m AbortSignal
+getSignal self = liftDOM ((js_getSignal (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formData\"]; })"
+        js_getFormData :: NavigateEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/formData MDN NavigateEvent.formData documentation>
+getFormData :: (MonadDOM m) => NavigateEvent -> m (Maybe FormData)
+getFormData self = liftDOM (((js_getFormData (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/formData MDN NavigateEvent.formData documentation>
+getFormDataUnsafe :: (MonadDOM m, HasCallStack) => NavigateEvent -> m FormData
+getFormDataUnsafe self = liftDOM ((((js_getFormData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/formData MDN NavigateEvent.formData documentation>
+getFormDataUnchecked :: (MonadDOM m) => NavigateEvent -> m FormData
+getFormDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormData (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"downloadRequest\"]; })"
+        js_getDownloadRequest :: NavigateEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/downloadRequest MDN NavigateEvent.downloadRequest documentation>
+getDownloadRequest :: (MonadDOM m, FromJSString result) => NavigateEvent -> m (Maybe result)
+getDownloadRequest self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDownloadRequest (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/downloadRequest MDN NavigateEvent.downloadRequest documentation>
+getDownloadRequestUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NavigateEvent -> m result
+getDownloadRequestUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDownloadRequest (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/downloadRequest MDN NavigateEvent.downloadRequest documentation>
+getDownloadRequestUnchecked :: (MonadDOM m, FromJSString result) => NavigateEvent -> m result
+getDownloadRequestUnchecked self = liftDOM ((pFromJSVal <$> (js_getDownloadRequest (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"info\"]; })"
+        js_getInfo :: NavigateEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/info MDN NavigateEvent.info documentation>
+getInfo :: (MonadDOM m) => NavigateEvent -> m JSVal
+getInfo self = liftDOM ((js_getInfo (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasUAVisualTransition\"]; })"
+        js_getHasUAVisualTransition :: NavigateEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/hasUAVisualTransition MDN NavigateEvent.hasUAVisualTransition documentation>
+getHasUAVisualTransition :: (MonadDOM m) => NavigateEvent -> m Bool
+getHasUAVisualTransition self = liftDOM ((js_getHasUAVisualTransition (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sourceElement\"]; })"
+        js_getSourceElement :: NavigateEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/sourceElement MDN NavigateEvent.sourceElement documentation>
+getSourceElement :: (MonadDOM m) => NavigateEvent -> m (Maybe Element)
+getSourceElement self = liftDOM (((js_getSourceElement (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/sourceElement MDN NavigateEvent.sourceElement documentation>
+getSourceElementUnsafe :: (MonadDOM m, HasCallStack) => NavigateEvent -> m Element
+getSourceElementUnsafe self = liftDOM ((((js_getSourceElement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/sourceElement MDN NavigateEvent.sourceElement documentation>
+getSourceElementUnchecked :: (MonadDOM m) => NavigateEvent -> m Element
+getSourceElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getSourceElement (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigateEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigateEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigateEventInit.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigateEventInit
+       (js_newNavigateEventInit, js_setNavigationType, js_getNavigationType, js_setDestination, js_getDestination, js_setCanIntercept, js_getCanIntercept, js_setUserInitiated, js_getUserInitiated, js_setHashChange, js_getHashChange, js_setSignal, js_getSignal, js_setFormData, js_getFormData, js_setDownloadRequest, js_getDownloadRequest, js_setInfo, js_getInfo, js_setHasUAVisualTransition, js_getHasUAVisualTransition, js_setSourceElement, js_getSourceElement, newNavigateEventInit, setNavigationType, getNavigationType, getNavigationTypeUnsafe, getNavigationTypeUnchecked, setDestination, getDestination, setCanIntercept, getCanIntercept, getCanInterceptUnsafe, getCanInterceptUnchecked, setUserInitiated, getUserInitiated, getUserInitiatedUnsafe, getUserInitiatedUnchecked, setHashChange, getHashChange, getHashChangeUnsafe, getHashChangeUnchecked, setSignal, getSignal, setFormData, getFormData, getFormDataUnsafe, getFormDataUnchecked, setDownloadRequest, getDownloadRequest, getDownloadRequestUnsafe, getDownloadRequestUnchecked, setInfo, getInfo, setHasUAVisualTransition, getHasUAVisualTransition, getHasUAVisualTransitionUnsafe, getHasUAVisualTransitionUnchecked, setSourceElement, getSourceElement, getSourceElementUnsafe, getSourceElementUnchecked, NavigateEventInit(..), gTypeNavigateEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"destination\": $1, \"signal\": $2}); })"
+        js_newNavigateEventInit :: NavigationDestination -> AbortSignal -> IO NavigateEventInit
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigateeventinit NavigateEventInit specification>
+newNavigateEventInit :: (MonadDOM m, IsAbortSignal signal) => NavigationDestination -> signal -> m NavigateEventInit
+newNavigateEventInit destination signal = liftDOM ((js_newNavigateEventInit (destination) (Types.toAbortSignal signal)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"navigationType\"] = $2; })"
+        js_setNavigationType :: NavigateEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-navigationtype NavigateEventInit.navigationType specification>
+setNavigationType :: (MonadDOM m) => NavigateEventInit -> NavigationType -> m ()
+setNavigationType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setNavigationType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationType\"]; })"
+        js_getNavigationType :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-navigationtype NavigateEventInit.navigationType specification>
+getNavigationType :: (MonadDOM m) => NavigateEventInit -> m (Maybe NavigationType)
+getNavigationType self = liftDOM (((js_getNavigationType (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-navigationtype NavigateEventInit.navigationType specification>
+getNavigationTypeUnsafe :: (MonadDOM m, HasCallStack) => NavigateEventInit -> m NavigationType
+getNavigationTypeUnsafe self = liftDOM ((((js_getNavigationType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-navigationtype NavigateEventInit.navigationType specification>
+getNavigationTypeUnchecked :: (MonadDOM m) => NavigateEventInit -> m NavigationType
+getNavigationTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getNavigationType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"destination\"] = $2; })"
+        js_setDestination :: NavigateEventInit -> NavigationDestination -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-destination NavigateEventInit.destination specification>
+setDestination :: (MonadDOM m) => NavigateEventInit -> NavigationDestination -> m ()
+setDestination self val = liftDOM (void ((js_setDestination (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"destination\"]; })"
+        js_getDestination :: NavigateEventInit -> IO NavigationDestination
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-destination NavigateEventInit.destination specification>
+getDestination :: (MonadDOM m) => NavigateEventInit -> m NavigationDestination
+getDestination self = liftDOM ((js_getDestination (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"canIntercept\"] = $2; })"
+        js_setCanIntercept :: NavigateEventInit -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-canintercept NavigateEventInit.canIntercept specification>
+setCanIntercept :: (MonadDOM m) => NavigateEventInit -> Bool -> m ()
+setCanIntercept self val = liftDOM (void ((js_setCanIntercept (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"canIntercept\"]; })"
+        js_getCanIntercept :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-canintercept NavigateEventInit.canIntercept specification>
+getCanIntercept :: (MonadDOM m) => NavigateEventInit -> m (Maybe Bool)
+getCanIntercept self = liftDOM (((js_getCanIntercept (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-canintercept NavigateEventInit.canIntercept specification>
+getCanInterceptUnsafe :: (MonadDOM m, HasCallStack) => NavigateEventInit -> m Bool
+getCanInterceptUnsafe self = liftDOM ((((js_getCanIntercept (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-canintercept NavigateEventInit.canIntercept specification>
+getCanInterceptUnchecked :: (MonadDOM m) => NavigateEventInit -> m Bool
+getCanInterceptUnchecked self = liftDOM ((pFromJSVal <$> (js_getCanIntercept (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"userInitiated\"] = $2; })"
+        js_setUserInitiated :: NavigateEventInit -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-userinitiated NavigateEventInit.userInitiated specification>
+setUserInitiated :: (MonadDOM m) => NavigateEventInit -> Bool -> m ()
+setUserInitiated self val = liftDOM (void ((js_setUserInitiated (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userInitiated\"]; })"
+        js_getUserInitiated :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-userinitiated NavigateEventInit.userInitiated specification>
+getUserInitiated :: (MonadDOM m) => NavigateEventInit -> m (Maybe Bool)
+getUserInitiated self = liftDOM (((js_getUserInitiated (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-userinitiated NavigateEventInit.userInitiated specification>
+getUserInitiatedUnsafe :: (MonadDOM m, HasCallStack) => NavigateEventInit -> m Bool
+getUserInitiatedUnsafe self = liftDOM ((((js_getUserInitiated (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-userinitiated NavigateEventInit.userInitiated specification>
+getUserInitiatedUnchecked :: (MonadDOM m) => NavigateEventInit -> m Bool
+getUserInitiatedUnchecked self = liftDOM ((pFromJSVal <$> (js_getUserInitiated (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hashChange\"] = $2; })"
+        js_setHashChange :: NavigateEventInit -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hashchange NavigateEventInit.hashChange specification>
+setHashChange :: (MonadDOM m) => NavigateEventInit -> Bool -> m ()
+setHashChange self val = liftDOM (void ((js_setHashChange (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hashChange\"]; })"
+        js_getHashChange :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hashchange NavigateEventInit.hashChange specification>
+getHashChange :: (MonadDOM m) => NavigateEventInit -> m (Maybe Bool)
+getHashChange self = liftDOM (((js_getHashChange (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hashchange NavigateEventInit.hashChange specification>
+getHashChangeUnsafe :: (MonadDOM m, HasCallStack) => NavigateEventInit -> m Bool
+getHashChangeUnsafe self = liftDOM ((((js_getHashChange (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hashchange NavigateEventInit.hashChange specification>
+getHashChangeUnchecked :: (MonadDOM m) => NavigateEventInit -> m Bool
+getHashChangeUnchecked self = liftDOM ((pFromJSVal <$> (js_getHashChange (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: NavigateEventInit -> AbortSignal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-signal NavigateEventInit.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => NavigateEventInit -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: NavigateEventInit -> IO AbortSignal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-signal NavigateEventInit.signal specification>
+getSignal :: (MonadDOM m) => NavigateEventInit -> m AbortSignal
+getSignal self = liftDOM ((js_getSignal (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"formData\"] = $2; })"
+        js_setFormData :: NavigateEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-formdata NavigateEventInit.formData specification>
+setFormData :: (MonadDOM m) => NavigateEventInit -> Maybe FormData -> m ()
+setFormData self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormData (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"formData\"]; })"
+        js_getFormData :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-formdata NavigateEventInit.formData specification>
+getFormData :: (MonadDOM m) => NavigateEventInit -> m (Maybe FormData)
+getFormData self = liftDOM (((js_getFormData (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-formdata NavigateEventInit.formData specification>
+getFormDataUnsafe :: (MonadDOM m, HasCallStack) => NavigateEventInit -> m FormData
+getFormDataUnsafe self = liftDOM ((((js_getFormData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-formdata NavigateEventInit.formData specification>
+getFormDataUnchecked :: (MonadDOM m) => NavigateEventInit -> m FormData
+getFormDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormData (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"downloadRequest\"] = $2; })"
+        js_setDownloadRequest :: NavigateEventInit -> (Nullable JSString) -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-downloadrequest NavigateEventInit.downloadRequest specification>
+setDownloadRequest :: (MonadDOM m, ToJSString val) => NavigateEventInit -> Maybe val -> m ()
+setDownloadRequest self val = liftDOM (void ((js_setDownloadRequest (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"downloadRequest\"]; })"
+        js_getDownloadRequest :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-downloadrequest NavigateEventInit.downloadRequest specification>
+getDownloadRequest :: (MonadDOM m, FromJSString result) => NavigateEventInit -> m (Maybe result)
+getDownloadRequest self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDownloadRequest (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-downloadrequest NavigateEventInit.downloadRequest specification>
+getDownloadRequestUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NavigateEventInit -> m result
+getDownloadRequestUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDownloadRequest (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-downloadrequest NavigateEventInit.downloadRequest specification>
+getDownloadRequestUnchecked :: (MonadDOM m, FromJSString result) => NavigateEventInit -> m result
+getDownloadRequestUnchecked self = liftDOM ((pFromJSVal <$> (js_getDownloadRequest (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"info\"] = $2; })"
+        js_setInfo :: NavigateEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-info NavigateEventInit.info specification>
+setInfo :: (MonadDOM m) => NavigateEventInit -> JSVal -> m ()
+setInfo self val = liftDOM (void ((js_setInfo (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"info\"]; })"
+        js_getInfo :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-info NavigateEventInit.info specification>
+getInfo :: (MonadDOM m) => NavigateEventInit -> m JSVal
+getInfo self = liftDOM ((js_getInfo (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hasUAVisualTransition\"] = $2; })"
+        js_setHasUAVisualTransition :: NavigateEventInit -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hasuavisualtransition NavigateEventInit.hasUAVisualTransition specification>
+setHasUAVisualTransition :: (MonadDOM m) => NavigateEventInit -> Bool -> m ()
+setHasUAVisualTransition self val = liftDOM (void ((js_setHasUAVisualTransition (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasUAVisualTransition\"]; })"
+        js_getHasUAVisualTransition :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hasuavisualtransition NavigateEventInit.hasUAVisualTransition specification>
+getHasUAVisualTransition :: (MonadDOM m) => NavigateEventInit -> m (Maybe Bool)
+getHasUAVisualTransition self = liftDOM (((js_getHasUAVisualTransition (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hasuavisualtransition NavigateEventInit.hasUAVisualTransition specification>
+getHasUAVisualTransitionUnsafe :: (MonadDOM m, HasCallStack) => NavigateEventInit -> m Bool
+getHasUAVisualTransitionUnsafe self = liftDOM ((((js_getHasUAVisualTransition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-hasuavisualtransition NavigateEventInit.hasUAVisualTransition specification>
+getHasUAVisualTransitionUnchecked :: (MonadDOM m) => NavigateEventInit -> m Bool
+getHasUAVisualTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getHasUAVisualTransition (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sourceElement\"] = $2; })"
+        js_setSourceElement :: NavigateEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-sourceelement NavigateEventInit.sourceElement specification>
+setSourceElement :: (MonadDOM m, IsElement val) => NavigateEventInit -> Maybe val -> m ()
+setSourceElement self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSourceElement (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sourceElement\"]; })"
+        js_getSourceElement :: NavigateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-sourceelement NavigateEventInit.sourceElement specification>
+getSourceElement :: (MonadDOM m) => NavigateEventInit -> m (Maybe Element)
+getSourceElement self = liftDOM (((js_getSourceElement (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-sourceelement NavigateEventInit.sourceElement specification>
+getSourceElementUnsafe :: (MonadDOM m, HasCallStack) => NavigateEventInit -> m Element
+getSourceElementUnsafe self = liftDOM ((((js_getSourceElement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigateeventinit-sourceelement NavigateEventInit.sourceElement specification>
+getSourceElementUnchecked :: (MonadDOM m) => NavigateEventInit -> m Element
+getSourceElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getSourceElement (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Navigation.hs b/src/GHCJS/DOM/JSFFI/Generated/Navigation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Navigation.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Navigation
+       (js_back, js_entries, js_forward, js_navigate, js_reload, js_traverseTo, js_updateCurrentEntry, js_getCurrentEntry, js_getTransition, js_getActivation, js_getCanGoBack, js_getCanGoForward, back, back_, entries, entries_, forward, forward_, navigate, navigate_, reload, reload_, traverseTo, traverseTo_, updateCurrentEntry, getCurrentEntry, getCurrentEntryUnsafe, getCurrentEntryUnchecked, getTransition, getTransitionUnsafe, getTransitionUnchecked, getActivation, getActivationUnsafe, getActivationUnchecked, getCanGoBack, getCanGoForward, navigateEvent, navigatesuccess, navigateerror, currententrychange, Navigation(..), gTypeNavigation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"back\"]($2); })"
+        js_back :: Navigation -> JSVal -> IO NavigationResult
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/back MDN Navigation.back documentation>
+back :: (MonadDOM m, IsNavigationOptions options) => Navigation -> Maybe options -> m NavigationResult
+back self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_back (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/back MDN Navigation.back documentation>
+back_ :: (MonadDOM m, IsNavigationOptions options) => Navigation -> Maybe options -> m ()
+back_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_back (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"entries\"](); })"
+        js_entries :: Navigation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/entries MDN Navigation.entries documentation>
+entries :: (MonadDOM m) => Navigation -> m [NavigationHistoryEntry]
+entries self = liftDOM (((js_entries (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/entries MDN Navigation.entries documentation>
+entries_ :: (MonadDOM m) => Navigation -> m ()
+entries_ self = liftDOM (void ((js_entries (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"forward\"]($2); })"
+        js_forward :: Navigation -> JSVal -> IO NavigationResult
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/forward MDN Navigation.forward documentation>
+forward :: (MonadDOM m, IsNavigationOptions options) => Navigation -> Maybe options -> m NavigationResult
+forward self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_forward (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/forward MDN Navigation.forward documentation>
+forward_ :: (MonadDOM m, IsNavigationOptions options) => Navigation -> Maybe options -> m ()
+forward_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_forward (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"navigate\"]($2, $3); })"
+        js_navigate :: Navigation -> JSString -> JSVal -> IO NavigationResult
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/navigate MDN Navigation.navigate documentation>
+navigate :: (MonadDOM m, ToJSString url) => Navigation -> url -> Maybe NavigationNavigateOptions -> m NavigationResult
+navigate self url options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_navigate (self) (toJSString url) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/navigate MDN Navigation.navigate documentation>
+navigate_ :: (MonadDOM m, ToJSString url) => Navigation -> url -> Maybe NavigationNavigateOptions -> m ()
+navigate_ self url options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_navigate (self) (toJSString url) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"reload\"]($2); })"
+        js_reload :: Navigation -> JSVal -> IO NavigationResult
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/reload MDN Navigation.reload documentation>
+reload :: (MonadDOM m) => Navigation -> Maybe NavigationReloadOptions -> m NavigationResult
+reload self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_reload (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/reload MDN Navigation.reload documentation>
+reload_ :: (MonadDOM m) => Navigation -> Maybe NavigationReloadOptions -> m ()
+reload_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_reload (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"traverseTo\"]($2, $3); })"
+        js_traverseTo :: Navigation -> JSString -> JSVal -> IO NavigationResult
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/traverseTo MDN Navigation.traverseTo documentation>
+traverseTo :: (MonadDOM m, ToJSString key, IsNavigationOptions options) => Navigation -> key -> Maybe options -> m NavigationResult
+traverseTo self key options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_traverseTo (self) (toJSString key) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/traverseTo MDN Navigation.traverseTo documentation>
+traverseTo_ :: (MonadDOM m, ToJSString key, IsNavigationOptions options) => Navigation -> key -> Maybe options -> m ()
+traverseTo_ self key options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_traverseTo (self) (toJSString key) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"updateCurrentEntry\"]($2); })"
+        js_updateCurrentEntry :: Navigation -> NavigationUpdateCurrentEntryOptions -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/updateCurrentEntry MDN Navigation.updateCurrentEntry documentation>
+updateCurrentEntry :: (MonadDOM m) => Navigation -> NavigationUpdateCurrentEntryOptions -> m ()
+updateCurrentEntry self options = liftDOM (void ((js_updateCurrentEntry (self) (options))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currentEntry\"]; })"
+        js_getCurrentEntry :: Navigation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/currentEntry MDN Navigation.currentEntry documentation>
+getCurrentEntry :: (MonadDOM m) => Navigation -> m (Maybe NavigationHistoryEntry)
+getCurrentEntry self = liftDOM (((js_getCurrentEntry (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/currentEntry MDN Navigation.currentEntry documentation>
+getCurrentEntryUnsafe :: (MonadDOM m, HasCallStack) => Navigation -> m NavigationHistoryEntry
+getCurrentEntryUnsafe self = liftDOM ((((js_getCurrentEntry (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/currentEntry MDN Navigation.currentEntry documentation>
+getCurrentEntryUnchecked :: (MonadDOM m) => Navigation -> m NavigationHistoryEntry
+getCurrentEntryUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentEntry (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transition\"]; })"
+        js_getTransition :: Navigation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/transition MDN Navigation.transition documentation>
+getTransition :: (MonadDOM m) => Navigation -> m (Maybe NavigationTransition)
+getTransition self = liftDOM (((js_getTransition (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/transition MDN Navigation.transition documentation>
+getTransitionUnsafe :: (MonadDOM m, HasCallStack) => Navigation -> m NavigationTransition
+getTransitionUnsafe self = liftDOM ((((js_getTransition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/transition MDN Navigation.transition documentation>
+getTransitionUnchecked :: (MonadDOM m) => Navigation -> m NavigationTransition
+getTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransition (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"activation\"]; })"
+        js_getActivation :: Navigation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/activation MDN Navigation.activation documentation>
+getActivation :: (MonadDOM m) => Navigation -> m (Maybe NavigationActivation)
+getActivation self = liftDOM (((js_getActivation (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/activation MDN Navigation.activation documentation>
+getActivationUnsafe :: (MonadDOM m, HasCallStack) => Navigation -> m NavigationActivation
+getActivationUnsafe self = liftDOM ((((js_getActivation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/activation MDN Navigation.activation documentation>
+getActivationUnchecked :: (MonadDOM m) => Navigation -> m NavigationActivation
+getActivationUnchecked self = liftDOM ((pFromJSVal <$> (js_getActivation (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"canGoBack\"]; })"
+        js_getCanGoBack :: Navigation -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/canGoBack MDN Navigation.canGoBack documentation>
+getCanGoBack :: (MonadDOM m) => Navigation -> m Bool
+getCanGoBack self = liftDOM ((js_getCanGoBack (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"canGoForward\"]; })"
+        js_getCanGoForward :: Navigation -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/canGoForward MDN Navigation.canGoForward documentation>
+getCanGoForward :: (MonadDOM m) => Navigation -> m Bool
+getCanGoForward self = liftDOM ((js_getCanGoForward (self)))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#handler-navigation-onnavigate navigate event>
+navigateEvent :: EventName Navigation NavigateEvent
+navigateEvent = unsafeEventName (toJSString "navigate")
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#handler-navigation-onnavigatesuccess navigatesuccess event>
+navigatesuccess :: EventName Navigation Event
+navigatesuccess = unsafeEventName (toJSString "navigatesuccess")
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#handler-navigation-onnavigateerror navigateerror event>
+navigateerror :: EventName Navigation ErrorEvent
+navigateerror = unsafeEventName (toJSString "navigateerror")
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#handler-navigation-oncurrententrychange currententrychange event>
+currententrychange :: EventName Navigation NavigationCurrentEntryChangeEvent
+currententrychange = unsafeEventName (toJSString "currententrychange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationActivation.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationActivation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationActivation.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationActivation
+       (js_getFrom, js_getEntry, js_getNavigationType, getFrom, getFromUnsafe, getFromUnchecked, getEntry, getNavigationType, NavigationActivation(..), gTypeNavigationActivation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"from\"]; })"
+        js_getFrom :: NavigationActivation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/from MDN NavigationActivation.from documentation>
+getFrom :: (MonadDOM m) => NavigationActivation -> m (Maybe NavigationHistoryEntry)
+getFrom self = liftDOM (((js_getFrom (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/from MDN NavigationActivation.from documentation>
+getFromUnsafe :: (MonadDOM m, HasCallStack) => NavigationActivation -> m NavigationHistoryEntry
+getFromUnsafe self = liftDOM ((((js_getFrom (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/from MDN NavigationActivation.from documentation>
+getFromUnchecked :: (MonadDOM m) => NavigationActivation -> m NavigationHistoryEntry
+getFromUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrom (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"entry\"]; })"
+        js_getEntry :: NavigationActivation -> IO NavigationHistoryEntry
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/entry MDN NavigationActivation.entry documentation>
+getEntry :: (MonadDOM m) => NavigationActivation -> m NavigationHistoryEntry
+getEntry self = liftDOM ((js_getEntry (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationType\"]; })"
+        js_getNavigationType :: NavigationActivation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/navigationType MDN NavigationActivation.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigationActivation -> m NavigationType
+getNavigationType self = liftDOM (((js_getNavigationType (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationCurrentEntryChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationCurrentEntryChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationCurrentEntryChangeEvent.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationCurrentEntryChangeEvent
+       (js_newNavigationCurrentEntryChangeEvent, js_getNavigationType, js_getFrom, newNavigationCurrentEntryChangeEvent, getNavigationType, getNavigationTypeUnsafe, getNavigationTypeUnchecked, getFrom, NavigationCurrentEntryChangeEvent(..), gTypeNavigationCurrentEntryChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"NavigationCurrentEntryChangeEvent\"]($1, $2); })"
+        js_newNavigationCurrentEntryChangeEvent :: JSString -> NavigationCurrentEntryChangeEventInit -> IO NavigationCurrentEntryChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/NavigationCurrentEntryChangeEvent MDN NavigationCurrentEntryChangeEvent. documentation>
+newNavigationCurrentEntryChangeEvent :: (MonadDOM m, ToJSString type') => type' -> NavigationCurrentEntryChangeEventInit -> m NavigationCurrentEntryChangeEvent
+newNavigationCurrentEntryChangeEvent type' eventInitDict = liftDOM ((js_newNavigationCurrentEntryChangeEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationType\"]; })"
+        js_getNavigationType :: NavigationCurrentEntryChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/navigationType MDN NavigationCurrentEntryChangeEvent.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigationCurrentEntryChangeEvent -> m (Maybe NavigationType)
+getNavigationType self = liftDOM (((js_getNavigationType (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/navigationType MDN NavigationCurrentEntryChangeEvent.navigationType documentation>
+getNavigationTypeUnsafe :: (MonadDOM m, HasCallStack) => NavigationCurrentEntryChangeEvent -> m NavigationType
+getNavigationTypeUnsafe self = liftDOM ((((js_getNavigationType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/navigationType MDN NavigationCurrentEntryChangeEvent.navigationType documentation>
+getNavigationTypeUnchecked :: (MonadDOM m) => NavigationCurrentEntryChangeEvent -> m NavigationType
+getNavigationTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getNavigationType (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"from\"]; })"
+        js_getFrom :: NavigationCurrentEntryChangeEvent -> IO NavigationHistoryEntry
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/from MDN NavigationCurrentEntryChangeEvent.from documentation>
+getFrom :: (MonadDOM m) => NavigationCurrentEntryChangeEvent -> m NavigationHistoryEntry
+getFrom self = liftDOM ((js_getFrom (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationCurrentEntryChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationCurrentEntryChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationCurrentEntryChangeEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationCurrentEntryChangeEventInit
+       (js_newNavigationCurrentEntryChangeEventInit, js_setNavigationType, js_getNavigationType, js_setFrom, js_getFrom, newNavigationCurrentEntryChangeEventInit, setNavigationType, getNavigationType, getNavigationTypeUnsafe, getNavigationTypeUnchecked, setFrom, getFrom, NavigationCurrentEntryChangeEventInit(..), gTypeNavigationCurrentEntryChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"from\": $1}); })"
+        js_newNavigationCurrentEntryChangeEventInit :: NavigationHistoryEntry -> IO NavigationCurrentEntryChangeEventInit
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationcurrententrychangeeventinit NavigationCurrentEntryChangeEventInit specification>
+newNavigationCurrentEntryChangeEventInit :: (MonadDOM m) => NavigationHistoryEntry -> m NavigationCurrentEntryChangeEventInit
+newNavigationCurrentEntryChangeEventInit from = liftDOM ((js_newNavigationCurrentEntryChangeEventInit (from)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"navigationType\"] = $2; })"
+        js_setNavigationType :: NavigationCurrentEntryChangeEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationcurrententrychangeeventinit-navigationtype NavigationCurrentEntryChangeEventInit.navigationType specification>
+setNavigationType :: (MonadDOM m) => NavigationCurrentEntryChangeEventInit -> Maybe NavigationType -> m ()
+setNavigationType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setNavigationType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationType\"]; })"
+        js_getNavigationType :: NavigationCurrentEntryChangeEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationcurrententrychangeeventinit-navigationtype NavigationCurrentEntryChangeEventInit.navigationType specification>
+getNavigationType :: (MonadDOM m) => NavigationCurrentEntryChangeEventInit -> m (Maybe NavigationType)
+getNavigationType self = liftDOM (((js_getNavigationType (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationcurrententrychangeeventinit-navigationtype NavigationCurrentEntryChangeEventInit.navigationType specification>
+getNavigationTypeUnsafe :: (MonadDOM m, HasCallStack) => NavigationCurrentEntryChangeEventInit -> m NavigationType
+getNavigationTypeUnsafe self = liftDOM ((((js_getNavigationType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationcurrententrychangeeventinit-navigationtype NavigationCurrentEntryChangeEventInit.navigationType specification>
+getNavigationTypeUnchecked :: (MonadDOM m) => NavigationCurrentEntryChangeEventInit -> m NavigationType
+getNavigationTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getNavigationType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"from\"] = $2; })"
+        js_setFrom :: NavigationCurrentEntryChangeEventInit -> NavigationHistoryEntry -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationcurrententrychangeeventinit-from NavigationCurrentEntryChangeEventInit.from specification>
+setFrom :: (MonadDOM m) => NavigationCurrentEntryChangeEventInit -> NavigationHistoryEntry -> m ()
+setFrom self val = liftDOM (void ((js_setFrom (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"from\"]; })"
+        js_getFrom :: NavigationCurrentEntryChangeEventInit -> IO NavigationHistoryEntry
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationcurrententrychangeeventinit-from NavigationCurrentEntryChangeEventInit.from specification>
+getFrom :: (MonadDOM m) => NavigationCurrentEntryChangeEventInit -> m NavigationHistoryEntry
+getFrom self = liftDOM ((js_getFrom (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationDestination.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationDestination.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationDestination.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationDestination
+       (js_getState, js_getUrl, js_getKey, js_getId, js_getIndex, js_getSameDocument, getState, getState_, getUrl, getKey, getId, getIndex, getSameDocument, NavigationDestination(..), gTypeNavigationDestination)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getState\"](); })"
+        js_getState :: NavigationDestination -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/getState MDN NavigationDestination.getState documentation>
+getState :: (MonadDOM m) => NavigationDestination -> m JSVal
+getState self = liftDOM ((js_getState (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/getState MDN NavigationDestination.getState documentation>
+getState_ :: (MonadDOM m) => NavigationDestination -> m ()
+getState_ self = liftDOM (void ((js_getState (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: NavigationDestination -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/url MDN NavigationDestination.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => NavigationDestination -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: NavigationDestination -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/key MDN NavigationDestination.key documentation>
+getKey :: (MonadDOM m, FromJSString result) => NavigationDestination -> m result
+getKey self = liftDOM ((fromJSString <$> (js_getKey (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: NavigationDestination -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/id MDN NavigationDestination.id documentation>
+getId :: (MonadDOM m, FromJSString result) => NavigationDestination -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })"
+        js_getIndex :: NavigationDestination -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/index MDN NavigationDestination.index documentation>
+getIndex :: (MonadDOM m) => NavigationDestination -> m Int53
+getIndex self = liftDOM (((js_getIndex (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sameDocument\"]; })"
+        js_getSameDocument :: NavigationDestination -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/sameDocument MDN NavigationDestination.sameDocument documentation>
+getSameDocument :: (MonadDOM m) => NavigationDestination -> m Bool
+getSameDocument self = liftDOM ((js_getSameDocument (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationEvent.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-nav-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationEvent
+       (NavigationEvent(..), gTypeNavigationEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationHistoryEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationHistoryEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationHistoryEntry.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationHistoryEntry
+       (js_getState, js_getUrl, js_getKey, js_getId, js_getIndex, js_getSameDocument, getState, getState_, getUrl, getUrlUnsafe, getUrlUnchecked, getKey, getId, getIndex, getSameDocument, dispose, NavigationHistoryEntry(..), gTypeNavigationHistoryEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getState\"](); })"
+        js_getState :: NavigationHistoryEntry -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/getState MDN NavigationHistoryEntry.getState documentation>
+getState :: (MonadDOM m) => NavigationHistoryEntry -> m JSVal
+getState self = liftDOM ((js_getState (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/getState MDN NavigationHistoryEntry.getState documentation>
+getState_ :: (MonadDOM m) => NavigationHistoryEntry -> m ()
+getState_ self = liftDOM (void ((js_getState (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: NavigationHistoryEntry -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/url MDN NavigationHistoryEntry.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => NavigationHistoryEntry -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/url MDN NavigationHistoryEntry.url documentation>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NavigationHistoryEntry -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/url MDN NavigationHistoryEntry.url documentation>
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => NavigationHistoryEntry -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: NavigationHistoryEntry -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/key MDN NavigationHistoryEntry.key documentation>
+getKey :: (MonadDOM m, FromJSString result) => NavigationHistoryEntry -> m result
+getKey self = liftDOM ((fromJSString <$> (js_getKey (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: NavigationHistoryEntry -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/id MDN NavigationHistoryEntry.id documentation>
+getId :: (MonadDOM m, FromJSString result) => NavigationHistoryEntry -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })"
+        js_getIndex :: NavigationHistoryEntry -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/index MDN NavigationHistoryEntry.index documentation>
+getIndex :: (MonadDOM m) => NavigationHistoryEntry -> m Int53
+getIndex self = liftDOM (((js_getIndex (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sameDocument\"]; })"
+        js_getSameDocument :: NavigationHistoryEntry -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/sameDocument MDN NavigationHistoryEntry.sameDocument documentation>
+getSameDocument :: (MonadDOM m) => NavigationHistoryEntry -> m Bool
+getSameDocument self = liftDOM ((js_getSameDocument (self)))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#handler-navigationhistoryentry-ondispose dispose event>
+dispose :: EventName NavigationHistoryEntry Event
+dispose = unsafeEventName (toJSString "dispose")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationInterceptHandler.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationInterceptHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationInterceptHandler.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationInterceptHandler
+       (newNavigationInterceptHandler, newNavigationInterceptHandlerSync, newNavigationInterceptHandlerAsync, NavigationInterceptHandler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback, asyncCallback)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newNavigationInterceptHandler :: (MonadDOM m) => (IO ()) -> m NavigationInterceptHandler
+newNavigationInterceptHandler callback = liftDOM ((NavigationInterceptHandler . coerce) <$> syncCallback ContinueAsync callback)
+
+newNavigationInterceptHandlerSync :: (MonadDOM m) => (IO ()) -> m NavigationInterceptHandler
+newNavigationInterceptHandlerSync callback = liftDOM ((NavigationInterceptHandler . coerce) <$> syncCallback ThrowWouldBlock callback)
+
+newNavigationInterceptHandlerAsync :: (MonadDOM m) => (IO ()) -> m NavigationInterceptHandler
+newNavigationInterceptHandlerAsync callback = liftDOM ((NavigationInterceptHandler . coerce) <$> asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationInterceptOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationInterceptOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationInterceptOptions.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationInterceptOptions
+       (js_newNavigationInterceptOptions, js_setPrecommitHandler, js_setHandler, js_setFocusReset, js_getFocusReset, js_setScroll, js_getScroll, newNavigationInterceptOptions, setPrecommitHandler, setHandler, setFocusReset, getFocusReset, getFocusResetUnsafe, getFocusResetUnchecked, setScroll, getScroll, getScrollUnsafe, getScrollUnchecked, NavigationInterceptOptions(..), gTypeNavigationInterceptOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newNavigationInterceptOptions :: IO NavigationInterceptOptions
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationinterceptoptions NavigationInterceptOptions specification>
+newNavigationInterceptOptions :: (MonadDOM m) => m NavigationInterceptOptions
+newNavigationInterceptOptions = liftDOM ((js_newNavigationInterceptOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"precommitHandler\"] = $2; })"
+        js_setPrecommitHandler :: NavigationInterceptOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-precommithandler NavigationInterceptOptions.precommitHandler specification>
+setPrecommitHandler :: (MonadDOM m) => NavigationInterceptOptions -> NavigationPrecommitHandler -> m ()
+setPrecommitHandler self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPrecommitHandler (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"handler\"] = $2; })"
+        js_setHandler :: NavigationInterceptOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-handler NavigationInterceptOptions.handler specification>
+setHandler :: (MonadDOM m) => NavigationInterceptOptions -> NavigationInterceptHandler -> m ()
+setHandler self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHandler (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"focusReset\"] = $2; })"
+        js_setFocusReset :: NavigationInterceptOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-focusreset NavigationInterceptOptions.focusReset specification>
+setFocusReset :: (MonadDOM m) => NavigationInterceptOptions -> NavigationFocusReset -> m ()
+setFocusReset self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFocusReset (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focusReset\"]; })"
+        js_getFocusReset :: NavigationInterceptOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-focusreset NavigationInterceptOptions.focusReset specification>
+getFocusReset :: (MonadDOM m) => NavigationInterceptOptions -> m (Maybe NavigationFocusReset)
+getFocusReset self = liftDOM (((js_getFocusReset (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-focusreset NavigationInterceptOptions.focusReset specification>
+getFocusResetUnsafe :: (MonadDOM m, HasCallStack) => NavigationInterceptOptions -> m NavigationFocusReset
+getFocusResetUnsafe self = liftDOM ((((js_getFocusReset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-focusreset NavigationInterceptOptions.focusReset specification>
+getFocusResetUnchecked :: (MonadDOM m) => NavigationInterceptOptions -> m NavigationFocusReset
+getFocusResetUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusReset (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scroll\"] = $2; })"
+        js_setScroll :: NavigationInterceptOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-scroll NavigationInterceptOptions.scroll specification>
+setScroll :: (MonadDOM m) => NavigationInterceptOptions -> NavigationScrollBehavior -> m ()
+setScroll self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setScroll (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scroll\"]; })"
+        js_getScroll :: NavigationInterceptOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-scroll NavigationInterceptOptions.scroll specification>
+getScroll :: (MonadDOM m) => NavigationInterceptOptions -> m (Maybe NavigationScrollBehavior)
+getScroll self = liftDOM (((js_getScroll (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-scroll NavigationInterceptOptions.scroll specification>
+getScrollUnsafe :: (MonadDOM m, HasCallStack) => NavigationInterceptOptions -> m NavigationScrollBehavior
+getScrollUnsafe self = liftDOM ((((js_getScroll (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationinterceptoptions-scroll NavigationInterceptOptions.scroll specification>
+getScrollUnchecked :: (MonadDOM m) => NavigationInterceptOptions -> m NavigationScrollBehavior
+getScrollUnchecked self = liftDOM ((pFromJSVal <$> (js_getScroll (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationNavigateOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationNavigateOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationNavigateOptions.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationNavigateOptions
+       (js_newNavigationNavigateOptions, js_setState, js_getState, js_setHistory, js_getHistory, newNavigationNavigateOptions, setState, getState, setHistory, getHistory, getHistoryUnsafe, getHistoryUnchecked, NavigationNavigateOptions(..), gTypeNavigationNavigateOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newNavigationNavigateOptions :: IO NavigationNavigateOptions
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationnavigateoptions NavigationNavigateOptions specification>
+newNavigationNavigateOptions :: (MonadDOM m) => m NavigationNavigateOptions
+newNavigationNavigateOptions = liftDOM ((js_newNavigationNavigateOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"state\"] = $2; })"
+        js_setState :: NavigationNavigateOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationnavigateoptions-state NavigationNavigateOptions.state specification>
+setState :: (MonadDOM m) => NavigationNavigateOptions -> JSVal -> m ()
+setState self val = liftDOM (void ((js_setState (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: NavigationNavigateOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationnavigateoptions-state NavigationNavigateOptions.state specification>
+getState :: (MonadDOM m) => NavigationNavigateOptions -> m JSVal
+getState self = liftDOM ((js_getState (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"history\"] = $2; })"
+        js_setHistory :: NavigationNavigateOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationnavigateoptions-history NavigationNavigateOptions.history specification>
+setHistory :: (MonadDOM m) => NavigationNavigateOptions -> NavigationHistoryBehavior -> m ()
+setHistory self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHistory (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"history\"]; })"
+        js_getHistory :: NavigationNavigateOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationnavigateoptions-history NavigationNavigateOptions.history specification>
+getHistory :: (MonadDOM m) => NavigationNavigateOptions -> m (Maybe NavigationHistoryBehavior)
+getHistory self = liftDOM (((js_getHistory (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationnavigateoptions-history NavigationNavigateOptions.history specification>
+getHistoryUnsafe :: (MonadDOM m, HasCallStack) => NavigationNavigateOptions -> m NavigationHistoryBehavior
+getHistoryUnsafe self = liftDOM ((((js_getHistory (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationnavigateoptions-history NavigationNavigateOptions.history specification>
+getHistoryUnchecked :: (MonadDOM m) => NavigationNavigateOptions -> m NavigationHistoryBehavior
+getHistoryUnchecked self = liftDOM ((pFromJSVal <$> (js_getHistory (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationOptions.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationOptions
+       (js_newNavigationOptions, js_setInfo, js_getInfo, newNavigationOptions, setInfo, getInfo, NavigationOptions(..), gTypeNavigationOptions, IsNavigationOptions, toNavigationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newNavigationOptions :: IO NavigationOptions
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationoptions NavigationOptions specification>
+newNavigationOptions :: (MonadDOM m) => m NavigationOptions
+newNavigationOptions = liftDOM ((js_newNavigationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"info\"] = $2; })"
+        js_setInfo :: NavigationOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationoptions-info NavigationOptions.info specification>
+setInfo :: (MonadDOM m, IsNavigationOptions self) => self -> JSVal -> m ()
+setInfo self val = liftDOM (void ((js_setInfo ((Types.toNavigationOptions self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"info\"]; })"
+        js_getInfo :: NavigationOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationoptions-info NavigationOptions.info specification>
+getInfo :: (MonadDOM m, IsNavigationOptions self) => self -> m JSVal
+getInfo self = liftDOM ((js_getInfo ((Types.toNavigationOptions self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationPrecommitController.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationPrecommitController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationPrecommitController.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationPrecommitController
+       (js_addHandler, js_redirect, addHandler, redirect, NavigationPrecommitController(..), gTypeNavigationPrecommitController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"addHandler\"]($2); })"
+        js_addHandler :: NavigationPrecommitController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPrecommitController/addHandler MDN NavigationPrecommitController.addHandler documentation>
+addHandler :: (MonadDOM m) => NavigationPrecommitController -> NavigationInterceptHandler -> m ()
+addHandler self handler = liftDOM (void (((toJSVal handler) >>= \a2' -> js_addHandler (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"redirect\"]($2, $3); })"
+        js_redirect :: NavigationPrecommitController -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPrecommitController/redirect MDN NavigationPrecommitController.redirect documentation>
+redirect :: (MonadDOM m, ToJSString url) => NavigationPrecommitController -> url -> Maybe NavigationNavigateOptions -> m ()
+redirect self url options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_redirect (self) (toJSString url) a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationPrecommitHandler.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationPrecommitHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationPrecommitHandler.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationPrecommitHandler
+       (newNavigationPrecommitHandler, newNavigationPrecommitHandlerSync, newNavigationPrecommitHandlerAsync, NavigationPrecommitHandler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newNavigationPrecommitHandler :: (MonadDOM m) => (NavigationPrecommitController -> IO ()) -> m NavigationPrecommitHandler
+newNavigationPrecommitHandler callback = liftDOM ((NavigationPrecommitHandler . coerce) <$> syncCallback1 ContinueAsync (\ controller -> do
+          controller' <- fromJSValUnchecked controller
+          callback controller'))
+
+newNavigationPrecommitHandlerSync :: (MonadDOM m) => (NavigationPrecommitController -> IO ()) -> m NavigationPrecommitHandler
+newNavigationPrecommitHandlerSync callback = liftDOM ((NavigationPrecommitHandler . coerce) <$> syncCallback1 ThrowWouldBlock (\ controller -> do
+          controller' <- fromJSValUnchecked controller
+          callback controller'))
+
+newNavigationPrecommitHandlerAsync :: (MonadDOM m) => (NavigationPrecommitController -> IO ()) -> m NavigationPrecommitHandler
+newNavigationPrecommitHandlerAsync callback = liftDOM ((NavigationPrecommitHandler . coerce) <$> asyncCallback1 (\ controller -> do
+          controller' <- fromJSValUnchecked controller
+          callback controller'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationPreloadManager.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationPreloadManager.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationPreloadManager.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationPreloadManager
+       (js_disable, js_enable, js_getState, js_setHeaderValue, disable, enable, getState, getState_, setHeaderValue, NavigationPreloadManager(..), gTypeNavigationPreloadManager)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"disable\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_disable :: NavigationPreloadManager -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/disable MDN NavigationPreloadManager.disable documentation>
+disable :: (MonadDOM m) => NavigationPreloadManager -> m ()
+disable self = liftDOM (void (((js_disable (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"enable\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_enable :: NavigationPreloadManager -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/enable MDN NavigationPreloadManager.enable documentation>
+enable :: (MonadDOM m) => NavigationPreloadManager -> m ()
+enable self = liftDOM (void (((js_enable (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getState\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getState :: NavigationPreloadManager -> IO (JSVal, NavigationPreloadState)
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/getState MDN NavigationPreloadManager.getState documentation>
+getState :: (MonadDOM m) => NavigationPreloadManager -> m NavigationPreloadState
+getState self = liftDOM (((js_getState (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/getState MDN NavigationPreloadManager.getState documentation>
+getState_ :: (MonadDOM m) => NavigationPreloadManager -> m ()
+getState_ self = liftDOM (void (((js_getState (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setHeaderValue\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setHeaderValue :: NavigationPreloadManager -> JSString -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/setHeaderValue MDN NavigationPreloadManager.setHeaderValue documentation>
+setHeaderValue :: (MonadDOM m, ToJSString value) => NavigationPreloadManager -> value -> m ()
+setHeaderValue self value = liftDOM (void (((js_setHeaderValue (self) (toJSString value)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationPreloadState.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationPreloadState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationPreloadState.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationPreloadState
+       (js_newNavigationPreloadState, js_setEnabled, js_getEnabled, js_setHeaderValue, js_getHeaderValue, newNavigationPreloadState, setEnabled, getEnabled, getEnabledUnsafe, getEnabledUnchecked, setHeaderValue, getHeaderValue, getHeaderValueUnsafe, getHeaderValueUnchecked, NavigationPreloadState(..), gTypeNavigationPreloadState)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newNavigationPreloadState :: IO NavigationPreloadState
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-navigationpreloadstate NavigationPreloadState specification>
+newNavigationPreloadState :: (MonadDOM m) => m NavigationPreloadState
+newNavigationPreloadState = liftDOM ((js_newNavigationPreloadState))
+
+foreign import javascript safe "(($1, $2) => { $1[\"enabled\"] = $2; })"
+        js_setEnabled :: NavigationPreloadState -> Bool -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-enabled NavigationPreloadState.enabled specification>
+setEnabled :: (MonadDOM m) => NavigationPreloadState -> Bool -> m ()
+setEnabled self val = liftDOM (void ((js_setEnabled (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"enabled\"]; })"
+        js_getEnabled :: NavigationPreloadState -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-enabled NavigationPreloadState.enabled specification>
+getEnabled :: (MonadDOM m) => NavigationPreloadState -> m (Maybe Bool)
+getEnabled self = liftDOM (((js_getEnabled (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-enabled NavigationPreloadState.enabled specification>
+getEnabledUnsafe :: (MonadDOM m, HasCallStack) => NavigationPreloadState -> m Bool
+getEnabledUnsafe self = liftDOM ((((js_getEnabled (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-enabled NavigationPreloadState.enabled specification>
+getEnabledUnchecked :: (MonadDOM m) => NavigationPreloadState -> m Bool
+getEnabledUnchecked self = liftDOM ((pFromJSVal <$> (js_getEnabled (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"headerValue\"] = $2; })"
+        js_setHeaderValue :: NavigationPreloadState -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-headervalue NavigationPreloadState.headerValue specification>
+setHeaderValue :: (MonadDOM m, ToJSString val) => NavigationPreloadState -> val -> m ()
+setHeaderValue self val = liftDOM (void ((js_setHeaderValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"headerValue\"]; })"
+        js_getHeaderValue :: NavigationPreloadState -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-headervalue NavigationPreloadState.headerValue specification>
+getHeaderValue :: (MonadDOM m, FromJSString result) => NavigationPreloadState -> m (Maybe result)
+getHeaderValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getHeaderValue (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-headervalue NavigationPreloadState.headerValue specification>
+getHeaderValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NavigationPreloadState -> m result
+getHeaderValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getHeaderValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-headervalue NavigationPreloadState.headerValue specification>
+getHeaderValueUnchecked :: (MonadDOM m, FromJSString result) => NavigationPreloadState -> m result
+getHeaderValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeaderValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationReloadOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationReloadOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationReloadOptions.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationReloadOptions
+       (js_newNavigationReloadOptions, js_setState, js_getState, newNavigationReloadOptions, setState, getState, NavigationReloadOptions(..), gTypeNavigationReloadOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newNavigationReloadOptions :: IO NavigationReloadOptions
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationreloadoptions NavigationReloadOptions specification>
+newNavigationReloadOptions :: (MonadDOM m) => m NavigationReloadOptions
+newNavigationReloadOptions = liftDOM ((js_newNavigationReloadOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"state\"] = $2; })"
+        js_setState :: NavigationReloadOptions -> JSVal -> IO ()
+setState :: (MonadDOM m) => NavigationReloadOptions -> JSVal -> m ()
+setState self val = liftDOM (void ((js_setState (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: NavigationReloadOptions -> IO JSVal
+getState :: (MonadDOM m) => NavigationReloadOptions -> m JSVal
+getState self = liftDOM ((js_getState (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationResult.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationResult.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationResult
+       (js_newNavigationResult, js_setCommitted, js_getCommitted, js_setFinished, js_getFinished, newNavigationResult, setCommitted, getCommitted, getCommittedUnsafe, getCommittedUnchecked, setFinished, getFinished, getFinishedUnsafe, getFinishedUnchecked, NavigationResult(..), gTypeNavigationResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newNavigationResult :: IO NavigationResult
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationresult NavigationResult specification>
+newNavigationResult :: (MonadDOM m) => m NavigationResult
+newNavigationResult = liftDOM ((js_newNavigationResult))
+
+foreign import javascript safe "(($1, $2) => { $1[\"committed\"] = $2; })"
+        js_setCommitted :: NavigationResult -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-committed NavigationResult.committed specification>
+setCommitted :: (MonadDOM m) => NavigationResult -> JSVal -> m ()
+setCommitted self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCommitted (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"committed\"]; })"
+        js_getCommitted :: NavigationResult -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-committed NavigationResult.committed specification>
+getCommitted :: (MonadDOM m) => NavigationResult -> m (Maybe NavigationHistoryEntry)
+getCommitted self = liftDOM (((js_getCommitted (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-committed NavigationResult.committed specification>
+getCommittedUnsafe :: (MonadDOM m, HasCallStack) => NavigationResult -> m NavigationHistoryEntry
+getCommittedUnsafe self = liftDOM ((((js_getCommitted (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-committed NavigationResult.committed specification>
+getCommittedUnchecked :: (MonadDOM m) => NavigationResult -> m NavigationHistoryEntry
+getCommittedUnchecked self = liftDOM ((pFromJSVal <$> (js_getCommitted (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"finished\"] = $2; })"
+        js_setFinished :: NavigationResult -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-finished NavigationResult.finished specification>
+setFinished :: (MonadDOM m) => NavigationResult -> JSVal -> m ()
+setFinished self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFinished (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"finished\"]; })"
+        js_getFinished :: NavigationResult -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-finished NavigationResult.finished specification>
+getFinished :: (MonadDOM m) => NavigationResult -> m (Maybe NavigationHistoryEntry)
+getFinished self = liftDOM (((js_getFinished (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-finished NavigationResult.finished specification>
+getFinishedUnsafe :: (MonadDOM m, HasCallStack) => NavigationResult -> m NavigationHistoryEntry
+getFinishedUnsafe self = liftDOM ((((js_getFinished (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationresult-finished NavigationResult.finished specification>
+getFinishedUnchecked :: (MonadDOM m) => NavigationResult -> m NavigationHistoryEntry
+getFinishedUnchecked self = liftDOM ((pFromJSVal <$> (js_getFinished (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationTransition.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationTransition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationTransition.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationTransition
+       (js_getNavigationType, js_getFrom, js_getCommitted, js_getFinished, getNavigationType, getFrom, getCommitted, getFinished, NavigationTransition(..), gTypeNavigationTransition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationType\"]; })"
+        js_getNavigationType :: NavigationTransition -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/navigationType MDN NavigationTransition.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigationTransition -> m NavigationType
+getNavigationType self = liftDOM (((js_getNavigationType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"from\"]; })"
+        js_getFrom :: NavigationTransition -> IO NavigationHistoryEntry
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/from MDN NavigationTransition.from documentation>
+getFrom :: (MonadDOM m) => NavigationTransition -> m NavigationHistoryEntry
+getFrom self = liftDOM ((js_getFrom (self)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"committed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getCommitted :: NavigationTransition -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/committed MDN NavigationTransition.committed documentation>
+getCommitted :: (MonadDOM m) => NavigationTransition -> m ()
+getCommitted self = liftDOM (void (((js_getCommitted (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"finished\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getFinished :: NavigationTransition -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/finished MDN NavigationTransition.finished documentation>
+getFinished :: (MonadDOM m) => NavigationTransition -> m ()
+getFinished self = liftDOM (void (((js_getFinished (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigationUpdateCurrentEntryOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigationUpdateCurrentEntryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigationUpdateCurrentEntryOptions.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigationUpdateCurrentEntryOptions
+       (js_newNavigationUpdateCurrentEntryOptions, js_setState, js_getState, newNavigationUpdateCurrentEntryOptions, setState, getState, NavigationUpdateCurrentEntryOptions(..), gTypeNavigationUpdateCurrentEntryOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"state\": $1}); })"
+        js_newNavigationUpdateCurrentEntryOptions :: JSVal -> IO NavigationUpdateCurrentEntryOptions
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationupdatecurrententryoptions NavigationUpdateCurrentEntryOptions specification>
+newNavigationUpdateCurrentEntryOptions :: (MonadDOM m) => JSVal -> m NavigationUpdateCurrentEntryOptions
+newNavigationUpdateCurrentEntryOptions state = liftDOM ((js_newNavigationUpdateCurrentEntryOptions (state)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"state\"] = $2; })"
+        js_setState :: NavigationUpdateCurrentEntryOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationupdatecurrententryoptions-state NavigationUpdateCurrentEntryOptions.state specification>
+setState :: (MonadDOM m) => NavigationUpdateCurrentEntryOptions -> JSVal -> m ()
+setState self val = liftDOM (void ((js_setState (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: NavigationUpdateCurrentEntryOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-navigationupdatecurrententryoptions-state NavigationUpdateCurrentEntryOptions.state specification>
+getState :: (MonadDOM m) => NavigationUpdateCurrentEntryOptions -> m JSVal
+getState self = liftDOM ((js_getState (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs b/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
@@ -1,264 +1,161 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Navigator
-       (js_requestMediaKeySystemAccess, requestMediaKeySystemAccess,
-        requestMediaKeySystemAccess_, js_getGamepads, getGamepads,
-        getGamepads_, js_getUserMedia, getUserMedia,
-        js_registerProtocolHandler, registerProtocolHandler,
-        js_isProtocolHandlerRegistered, isProtocolHandlerRegistered,
-        isProtocolHandlerRegistered_, js_unregisterProtocolHandler,
-        unregisterProtocolHandler, js_vibratePattern, vibratePattern,
-        vibratePattern_, js_vibrate, vibrate, vibrate_, js_javaEnabled,
-        javaEnabled, javaEnabled_, js_getStorageUpdates, getStorageUpdates,
-        js_getGeolocation, getGeolocation, js_getMediaDevices,
-        getMediaDevices, js_getWebkitTemporaryStorage,
-        getWebkitTemporaryStorage, js_getWebkitPersistentStorage,
-        getWebkitPersistentStorage, js_getWebdriver, getWebdriver,
-        js_getPlugins, getPlugins, js_getMimeTypes, getMimeTypes,
-        js_getCookieEnabled, getCookieEnabled, Navigator(..),
-        gTypeNavigator)
+       (js_canShare, js_getGamepads, js_requestMIDIAccess, js_requestMediaKeySystemAccess, js_sendBeacon, js_share, js_vibrate, js_getClipboard, js_getCredentials, js_getGeolocation, js_getUserActivation, js_getLogin, js_getMediaCapabilities, js_getMediaDevices, js_getMediaSession, js_getPermissions, js_getMaxTouchPoints, js_getWakeLock, js_getSerial, js_getServiceWorker, canShare, canShare_, getGamepads, getGamepads_, requestMIDIAccess, requestMIDIAccess_, requestMediaKeySystemAccess, requestMediaKeySystemAccess_, sendBeacon, sendBeacon_, share, vibrate, vibrate_, getClipboard, getCredentials, getGeolocation, getUserActivation, getLogin, getMediaCapabilities, getMediaDevices, getMediaSession, getPermissions, getMaxTouchPoints, getWakeLock, getSerial, getServiceWorker, Navigator(..), gTypeNavigator)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"requestMediaKeySystemAccess\"]($2,\n$3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_requestMediaKeySystemAccess ::
-        Navigator -> JSString -> JSVal -> IO (JSVal, MediaKeySystemAccess)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.requestMediaKeySystemAccess Mozilla Navigator.requestMediaKeySystemAccess documentation> 
-requestMediaKeySystemAccess ::
-                            (MonadIO m, ToJSString keySystem) =>
-                              Navigator ->
-                                keySystem ->
-                                  [MediaKeySystemConfiguration] -> m MediaKeySystemAccess
-requestMediaKeySystemAccess self keySystem supportedConfiguration
-  = liftIO
-      ((toJSVal supportedConfiguration >>=
-          \ supportedConfiguration' ->
-            js_requestMediaKeySystemAccess self (toJSString keySystem)
-              supportedConfiguration')
-         >>= checkPromiseResult)
+foreign import javascript safe "(($1, $2) => { return $1[\"canShare\"]($2); })"
+        js_canShare :: Navigator -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/canShare MDN Navigator.canShare documentation>
+canShare :: (MonadDOM m) => Navigator -> Maybe ShareData -> m Bool
+canShare self data' = liftDOM (((P.maybe (P.return jsUndefined) toJSVal data') >>= \a2' -> js_canShare (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.requestMediaKeySystemAccess Mozilla Navigator.requestMediaKeySystemAccess documentation> 
-requestMediaKeySystemAccess_ ::
-                             (MonadIO m, ToJSString keySystem) =>
-                               Navigator -> keySystem -> [MediaKeySystemConfiguration] -> m ()
-requestMediaKeySystemAccess_ self keySystem supportedConfiguration
-  = liftIO
-      (void
-         (toJSVal supportedConfiguration >>=
-            \ supportedConfiguration' ->
-              js_requestMediaKeySystemAccess self (toJSString keySystem)
-                supportedConfiguration'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getGamepads\"](); })"
-        js_getGamepads :: Navigator -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/canShare MDN Navigator.canShare documentation>
+canShare_ :: (MonadDOM m) => Navigator -> Maybe ShareData -> m ()
+canShare_ self data' = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal data') >>= \a2' -> js_canShare (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
-getGamepads :: (MonadIO m) => Navigator -> m [Gamepad]
-getGamepads self
-  = liftIO ((js_getGamepads self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1) => { return $1[\"getGamepads\"](); })"
+        js_getGamepads :: Navigator -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/getGamepads MDN Navigator.getGamepads documentation>
+getGamepads :: (MonadDOM m) => Navigator -> m [Maybe Gamepad]
+getGamepads self = liftDOM (((js_getGamepads (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
-getGamepads_ :: (MonadIO m) => Navigator -> m ()
-getGamepads_ self = liftIO (void (js_getGamepads self))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"getUserMedia\"]($2, $3, $4); })"
-        js_getUserMedia ::
-        Navigator ->
-          MediaStreamConstraints ->
-            NavigatorUserMediaSuccessCallback ->
-              NavigatorUserMediaErrorCallback -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/getGamepads MDN Navigator.getGamepads documentation>
+getGamepads_ :: (MonadDOM m) => Navigator -> m ()
+getGamepads_ self = liftDOM (void ((js_getGamepads (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getUserMedia Mozilla Navigator.getUserMedia documentation> 
-getUserMedia ::
-             (MonadIO m) =>
-               Navigator ->
-                 MediaStreamConstraints ->
-                   NavigatorUserMediaSuccessCallback ->
-                     NavigatorUserMediaErrorCallback -> m ()
-getUserMedia self constraints successCallback errorCallback
-  = liftIO
-      (js_getUserMedia self constraints successCallback errorCallback)
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4) => { return $1[\"registerProtocolHandler\"]($2,\n$3, $4); })"
-        js_registerProtocolHandler ::
-        Navigator -> JSString -> JSString -> JSString -> IO ()
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"requestMIDIAccess\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestMIDIAccess :: Navigator -> JSVal -> IO (JSVal, MIDIAccess)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/requestMIDIAccess MDN Navigator.requestMIDIAccess documentation>
+requestMIDIAccess :: (MonadDOM m) => Navigator -> Maybe MIDIOptions -> m MIDIAccess
+requestMIDIAccess self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestMIDIAccess (self) a2') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.registerProtocolHandler Mozilla Navigator.registerProtocolHandler documentation> 
-registerProtocolHandler ::
-                        (MonadIO m, ToJSString scheme, ToJSString url, ToJSString title) =>
-                          Navigator -> scheme -> url -> title -> m ()
-registerProtocolHandler self scheme url title
-  = liftIO
-      (js_registerProtocolHandler self (toJSString scheme)
-         (toJSString url)
-         (toJSString title))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"isProtocolHandlerRegistered\"]($2,\n$3); })"
-        js_isProtocolHandlerRegistered ::
-        Navigator -> JSString -> JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/requestMIDIAccess MDN Navigator.requestMIDIAccess documentation>
+requestMIDIAccess_ :: (MonadDOM m) => Navigator -> Maybe MIDIOptions -> m ()
+requestMIDIAccess_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestMIDIAccess (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.isProtocolHandlerRegistered Mozilla Navigator.isProtocolHandlerRegistered documentation> 
-isProtocolHandlerRegistered ::
-                            (MonadIO m, ToJSString scheme, ToJSString url,
-                             FromJSString result) =>
-                              Navigator -> scheme -> url -> m result
-isProtocolHandlerRegistered self scheme url
-  = liftIO
-      (fromJSString <$>
-         (js_isProtocolHandlerRegistered self (toJSString scheme)
-            (toJSString url)))
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"requestMediaKeySystemAccess\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestMediaKeySystemAccess :: Navigator -> JSString -> JSVal -> IO (JSVal, MediaKeySystemAccess)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/requestMediaKeySystemAccess MDN Navigator.requestMediaKeySystemAccess documentation>
+requestMediaKeySystemAccess :: (MonadDOM m, ToJSString keySystem) => Navigator -> keySystem -> [MediaKeySystemConfiguration] -> m MediaKeySystemAccess
+requestMediaKeySystemAccess self keySystem supportedConfigurations = liftDOM ((((toJSVal supportedConfigurations) >>= \a3' -> js_requestMediaKeySystemAccess (self) (toJSString keySystem) a3') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.isProtocolHandlerRegistered Mozilla Navigator.isProtocolHandlerRegistered documentation> 
-isProtocolHandlerRegistered_ ::
-                             (MonadIO m, ToJSString scheme, ToJSString url) =>
-                               Navigator -> scheme -> url -> m ()
-isProtocolHandlerRegistered_ self scheme url
-  = liftIO
-      (void
-         (js_isProtocolHandlerRegistered self (toJSString scheme)
-            (toJSString url)))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"unregisterProtocolHandler\"]($2,\n$3); })"
-        js_unregisterProtocolHandler ::
-        Navigator -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/requestMediaKeySystemAccess MDN Navigator.requestMediaKeySystemAccess documentation>
+requestMediaKeySystemAccess_ :: (MonadDOM m, ToJSString keySystem) => Navigator -> keySystem -> [MediaKeySystemConfiguration] -> m ()
+requestMediaKeySystemAccess_ self keySystem supportedConfigurations = liftDOM (void ((((toJSVal supportedConfigurations) >>= \a3' -> js_requestMediaKeySystemAccess (self) (toJSString keySystem) a3') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.unregisterProtocolHandler Mozilla Navigator.unregisterProtocolHandler documentation> 
-unregisterProtocolHandler ::
-                          (MonadIO m, ToJSString scheme, ToJSString url) =>
-                            Navigator -> scheme -> url -> m ()
-unregisterProtocolHandler self scheme url
-  = liftIO
-      (js_unregisterProtocolHandler self (toJSString scheme)
-         (toJSString url))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"vibrate\"]($2) ? 1 : 0); })"
-        js_vibratePattern :: Navigator -> JSVal -> IO Bool
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"sendBeacon\"]($2, $3); })"
+        js_sendBeacon :: Navigator -> JSString -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/sendBeacon MDN Navigator.sendBeacon documentation>
+sendBeacon :: (MonadDOM m, ToJSString url, IsBodyInit data') => Navigator -> url -> Maybe data' -> m Bool
+sendBeacon self url data' = liftDOM (((toJSVal data') >>= \a3' -> js_sendBeacon (self) (toJSString url) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibratePattern :: (MonadIO m) => Navigator -> [Word] -> m Bool
-vibratePattern self pattern'
-  = liftIO
-      (toJSVal pattern' >>=
-         \ pattern'' -> js_vibratePattern self pattern'')
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/sendBeacon MDN Navigator.sendBeacon documentation>
+sendBeacon_ :: (MonadDOM m, ToJSString url, IsBodyInit data') => Navigator -> url -> Maybe data' -> m ()
+sendBeacon_ self url data' = liftDOM (void (((toJSVal data') >>= \a3' -> js_sendBeacon (self) (toJSString url) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibratePattern_ :: (MonadIO m) => Navigator -> [Word] -> m ()
-vibratePattern_ self pattern'
-  = liftIO
-      (void
-         (toJSVal pattern' >>=
-            \ pattern'' -> js_vibratePattern self pattern''))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"vibrate\"]($2) ? 1 : 0); })"
-        js_vibrate :: Navigator -> Word -> IO Bool
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"share\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_share :: Navigator -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/share MDN Navigator.share documentation>
+share :: (MonadDOM m) => Navigator -> Maybe ShareData -> m ()
+share self data' = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal data') >>= \a2' -> js_share (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibrate :: (MonadIO m) => Navigator -> Word -> m Bool
-vibrate self time = liftIO (js_vibrate self time)
+foreign import javascript safe "(($1, $2) => { return $1[\"vibrate\"]($2); })"
+        js_vibrate :: Navigator -> VibratePattern -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/vibrate MDN Navigator.vibrate documentation>
+vibrate :: (MonadDOM m, IsVibratePattern pattern') => Navigator -> pattern' -> m Bool
+vibrate self pattern' = liftDOM ((js_vibrate (self) (Types.toVibratePattern pattern')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibrate_ :: (MonadIO m) => Navigator -> Word -> m ()
-vibrate_ self time = liftIO (void (js_vibrate self time))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"javaEnabled\"]() ? 1 : 0); })"
-        js_javaEnabled :: Navigator -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/vibrate MDN Navigator.vibrate documentation>
+vibrate_ :: (MonadDOM m, IsVibratePattern pattern') => Navigator -> pattern' -> m ()
+vibrate_ self pattern' = liftDOM (void ((js_vibrate (self) (Types.toVibratePattern pattern'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.javaEnabled Mozilla Navigator.javaEnabled documentation> 
-javaEnabled :: (MonadIO m) => Navigator -> m Bool
-javaEnabled self = liftIO (js_javaEnabled self)
+foreign import javascript unsafe "(($1) => { return $1[\"clipboard\"]; })"
+        js_getClipboard :: Navigator -> IO Clipboard
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/clipboard MDN Navigator.clipboard documentation>
+getClipboard :: (MonadDOM m) => Navigator -> m Clipboard
+getClipboard self = liftDOM ((js_getClipboard (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.javaEnabled Mozilla Navigator.javaEnabled documentation> 
-javaEnabled_ :: (MonadIO m) => Navigator -> m ()
-javaEnabled_ self = liftIO (void (js_javaEnabled self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getStorageUpdates\"](); })"
-        js_getStorageUpdates :: Navigator -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"credentials\"]; })"
+        js_getCredentials :: Navigator -> IO CredentialsContainer
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/credentials MDN Navigator.credentials documentation>
+getCredentials :: (MonadDOM m) => Navigator -> m CredentialsContainer
+getCredentials self = liftDOM ((js_getCredentials (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getStorageUpdates Mozilla Navigator.getStorageUpdates documentation> 
-getStorageUpdates :: (MonadIO m) => Navigator -> m ()
-getStorageUpdates self = liftIO (js_getStorageUpdates self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"geolocation\"]; })"
         js_getGeolocation :: Navigator -> IO Geolocation
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/geolocation MDN Navigator.geolocation documentation>
+getGeolocation :: (MonadDOM m) => Navigator -> m Geolocation
+getGeolocation self = liftDOM ((js_getGeolocation (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.geolocation Mozilla Navigator.geolocation documentation> 
-getGeolocation :: (MonadIO m) => Navigator -> m Geolocation
-getGeolocation self = liftIO (js_getGeolocation self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"userActivation\"]; })"
+        js_getUserActivation :: Navigator -> IO UserActivation
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/userActivation MDN Navigator.userActivation documentation>
+getUserActivation :: (MonadDOM m) => Navigator -> m UserActivation
+getUserActivation self = liftDOM ((js_getUserActivation (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"login\"]; })"
+        js_getLogin :: Navigator -> IO NavigatorLogin
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/login MDN Navigator.login documentation>
+getLogin :: (MonadDOM m) => Navigator -> m NavigatorLogin
+getLogin self = liftDOM ((js_getLogin (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediaCapabilities\"]; })"
+        js_getMediaCapabilities :: Navigator -> IO MediaCapabilities
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mediaCapabilities MDN Navigator.mediaCapabilities documentation>
+getMediaCapabilities :: (MonadDOM m) => Navigator -> m MediaCapabilities
+getMediaCapabilities self = liftDOM ((js_getMediaCapabilities (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"mediaDevices\"]; })"
         js_getMediaDevices :: Navigator -> IO MediaDevices
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mediaDevices Mozilla Navigator.mediaDevices documentation> 
-getMediaDevices :: (MonadIO m) => Navigator -> m MediaDevices
-getMediaDevices self = liftIO (js_getMediaDevices self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitTemporaryStorage\"]; })"
-        js_getWebkitTemporaryStorage :: Navigator -> IO StorageQuota
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mediaDevices MDN Navigator.mediaDevices documentation>
+getMediaDevices :: (MonadDOM m) => Navigator -> m MediaDevices
+getMediaDevices self = liftDOM ((js_getMediaDevices (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitTemporaryStorage Mozilla Navigator.webkitTemporaryStorage documentation> 
-getWebkitTemporaryStorage ::
-                          (MonadIO m) => Navigator -> m StorageQuota
-getWebkitTemporaryStorage self
-  = liftIO (js_getWebkitTemporaryStorage self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitPersistentStorage\"]; })"
-        js_getWebkitPersistentStorage :: Navigator -> IO StorageQuota
+foreign import javascript unsafe "(($1) => { return $1[\"mediaSession\"]; })"
+        js_getMediaSession :: Navigator -> IO MediaSession
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mediaSession MDN Navigator.mediaSession documentation>
+getMediaSession :: (MonadDOM m) => Navigator -> m MediaSession
+getMediaSession self = liftDOM ((js_getMediaSession (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitPersistentStorage Mozilla Navigator.webkitPersistentStorage documentation> 
-getWebkitPersistentStorage ::
-                           (MonadIO m) => Navigator -> m StorageQuota
-getWebkitPersistentStorage self
-  = liftIO (js_getWebkitPersistentStorage self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"webdriver\"] ? 1 : 0); })"
-        js_getWebdriver :: Navigator -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"permissions\"]; })"
+        js_getPermissions :: Navigator -> IO Permissions
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/permissions MDN Navigator.permissions documentation>
+getPermissions :: (MonadDOM m) => Navigator -> m Permissions
+getPermissions self = liftDOM ((js_getPermissions (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webdriver Mozilla Navigator.webdriver documentation> 
-getWebdriver :: (MonadIO m) => Navigator -> m Bool
-getWebdriver self = liftIO (js_getWebdriver self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"plugins\"]; })" js_getPlugins ::
-        Navigator -> IO PluginArray
+foreign import javascript unsafe "(($1) => { return $1[\"maxTouchPoints\"]; })"
+        js_getMaxTouchPoints :: Navigator -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/maxTouchPoints MDN Navigator.maxTouchPoints documentation>
+getMaxTouchPoints :: (MonadDOM m) => Navigator -> m Int
+getMaxTouchPoints self = liftDOM ((js_getMaxTouchPoints (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.plugins Mozilla Navigator.plugins documentation> 
-getPlugins :: (MonadIO m) => Navigator -> m PluginArray
-getPlugins self = liftIO (js_getPlugins self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mimeTypes\"]; })"
-        js_getMimeTypes :: Navigator -> IO MimeTypeArray
+foreign import javascript unsafe "(($1) => { return $1[\"wakeLock\"]; })"
+        js_getWakeLock :: Navigator -> IO WakeLock
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/wakeLock MDN Navigator.wakeLock documentation>
+getWakeLock :: (MonadDOM m) => Navigator -> m WakeLock
+getWakeLock self = liftDOM ((js_getWakeLock (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mimeTypes Mozilla Navigator.mimeTypes documentation> 
-getMimeTypes :: (MonadIO m) => Navigator -> m MimeTypeArray
-getMimeTypes self = liftIO (js_getMimeTypes self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"cookieEnabled\"] ? 1 : 0); })"
-        js_getCookieEnabled :: Navigator -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"serial\"]; })"
+        js_getSerial :: Navigator -> IO Serial
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/serial MDN Navigator.serial documentation>
+getSerial :: (MonadDOM m) => Navigator -> m Serial
+getSerial self = liftDOM ((js_getSerial (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.cookieEnabled Mozilla Navigator.cookieEnabled documentation> 
-getCookieEnabled :: (MonadIO m) => Navigator -> m Bool
-getCookieEnabled self = liftIO (js_getCookieEnabled self)
+foreign import javascript unsafe "(($1) => { return $1[\"serviceWorker\"]; })"
+        js_getServiceWorker :: Navigator -> IO ServiceWorkerContainer
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/serviceWorker MDN Navigator.serviceWorker documentation>
+getServiceWorker :: (MonadDOM m) => Navigator -> m ServiceWorkerContainer
+getServiceWorker self = liftDOM ((js_getServiceWorker (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorAutomationInformation.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorAutomationInformation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorAutomationInformation.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webdriver2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorAutomationInformation
+       (js_getWebdriver, getWebdriver, NavigatorAutomationInformation(..), gTypeNavigatorAutomationInformation, IsNavigatorAutomationInformation, toNavigatorAutomationInformation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"webdriver\"]; })"
+        js_getWebdriver :: NavigatorAutomationInformation -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/webdriver MDN NavigatorAutomationInformation.webdriver documentation>
+getWebdriver :: (MonadDOM m, IsNavigatorAutomationInformation self) => self -> m Bool
+getWebdriver self = liftDOM ((js_getWebdriver ((Types.toNavigatorAutomationInformation self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorBadge.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorBadge.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorBadge.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from badging (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorBadge
+       (js_clearAppBadge, js_setAppBadge, clearAppBadge, setAppBadge, NavigatorBadge(..), gTypeNavigatorBadge, IsNavigatorBadge, toNavigatorBadge)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"clearAppBadge\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_clearAppBadge :: NavigatorBadge -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/clearAppBadge MDN NavigatorBadge.clearAppBadge documentation>
+clearAppBadge :: (MonadDOM m, IsNavigatorBadge self) => self -> m ()
+clearAppBadge self = liftDOM (void (((js_clearAppBadge ((Types.toNavigatorBadge self))) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setAppBadge\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setAppBadge :: NavigatorBadge -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/setAppBadge MDN NavigatorBadge.setAppBadge documentation>
+setAppBadge :: (MonadDOM m, IsNavigatorBadge self) => self -> Maybe Word53 -> m ()
+setAppBadge self contents = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal contents) >>= \a2' -> js_setAppBadge ((Types.toNavigatorBadge self)) a2') >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
@@ -1,40 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware
-       (js_getHardwareConcurrency, getHardwareConcurrency,
-        NavigatorConcurrentHardware(..), gTypeNavigatorConcurrentHardware,
-        IsNavigatorConcurrentHardware, toNavigatorConcurrentHardware)
+       (js_getHardwareConcurrency, getHardwareConcurrency, NavigatorConcurrentHardware(..), gTypeNavigatorConcurrentHardware, IsNavigatorConcurrentHardware, toNavigatorConcurrentHardware)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hardwareConcurrency\"]; })"
-        js_getHardwareConcurrency ::
-        NavigatorConcurrentHardware -> IO Double
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorConcurrentHardware.hardwareConcurrency Mozilla NavigatorConcurrentHardware.hardwareConcurrency documentation> 
-getHardwareConcurrency ::
-                       (MonadIO m, IsNavigatorConcurrentHardware self) => self -> m Word64
-getHardwareConcurrency self
-  = liftIO
-      (round <$>
-         (js_getHardwareConcurrency (toNavigatorConcurrentHardware self)))
+foreign import javascript unsafe "(($1) => { return $1[\"hardwareConcurrency\"]; })"
+        js_getHardwareConcurrency :: NavigatorConcurrentHardware -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/hardwareConcurrency MDN NavigatorConcurrentHardware.hardwareConcurrency documentation>
+getHardwareConcurrency :: (MonadDOM m, IsNavigatorConcurrentHardware self) => self -> m Word53
+getHardwareConcurrency self = liftDOM (((js_getHardwareConcurrency ((Types.toNavigatorConcurrentHardware self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorContentUtils.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorContentUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorContentUtils.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorContentUtils
+       (js_registerProtocolHandler, js_unregisterProtocolHandler, registerProtocolHandler, unregisterProtocolHandler, NavigatorContentUtils(..), gTypeNavigatorContentUtils, IsNavigatorContentUtils, toNavigatorContentUtils)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"registerProtocolHandler\"]($2, $3); })"
+        js_registerProtocolHandler :: NavigatorContentUtils -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/registerProtocolHandler MDN NavigatorContentUtils.registerProtocolHandler documentation>
+registerProtocolHandler :: (MonadDOM m, IsNavigatorContentUtils self, ToJSString scheme, ToJSString url) => self -> scheme -> url -> m ()
+registerProtocolHandler self scheme url = liftDOM (void ((js_registerProtocolHandler ((Types.toNavigatorContentUtils self)) (toJSString scheme) (toJSString url))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"unregisterProtocolHandler\"]($2, $3); })"
+        js_unregisterProtocolHandler :: NavigatorContentUtils -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/unregisterProtocolHandler MDN NavigatorContentUtils.unregisterProtocolHandler documentation>
+unregisterProtocolHandler :: (MonadDOM m, IsNavigatorContentUtils self, ToJSString scheme, ToJSString url) => self -> scheme -> url -> m ()
+unregisterProtocolHandler self scheme url = liftDOM (void ((js_unregisterProtocolHandler ((Types.toNavigatorContentUtils self)) (toJSString scheme) (toJSString url))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorCookies.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorCookies.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorCookies.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorCookies
+       (js_getCookieEnabled, getCookieEnabled, NavigatorCookies(..), gTypeNavigatorCookies, IsNavigatorCookies, toNavigatorCookies)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"cookieEnabled\"]; })"
+        js_getCookieEnabled :: NavigatorCookies -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/cookieEnabled MDN NavigatorCookies.cookieEnabled documentation>
+getCookieEnabled :: (MonadDOM m, IsNavigatorCookies self) => self -> m Bool
+getCookieEnabled self = liftDOM ((js_getCookieEnabled ((Types.toNavigatorCookies self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorGPU.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorGPU.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorGPU.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorGPU
+       (js_getGpu, getGpu, NavigatorGPU(..), gTypeNavigatorGPU, IsNavigatorGPU, toNavigatorGPU)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"gpu\"]; })"
+        js_getGpu :: NavigatorGPU -> IO GPU
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/gpu MDN NavigatorGPU.gpu documentation>
+getGpu :: (MonadDOM m, IsNavigatorGPU self) => self -> m GPU
+getGpu self = liftDOM ((js_getGpu ((Types.toNavigatorGPU self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
@@ -1,122 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NavigatorID
-       (js_getAppCodeName, getAppCodeName, js_getAppName, getAppName,
-        js_getAppVersion, getAppVersion, js_getPlatform, getPlatform,
-        js_getProduct, getProduct, js_getProductSub, getProductSub,
-        js_getUserAgent, getUserAgent, js_getVendor, getVendor,
-        js_getVendorSub, getVendorSub, NavigatorID(..), gTypeNavigatorID,
-        IsNavigatorID, toNavigatorID)
+       (js_getAppCodeName, js_getAppName, js_getAppVersion, js_getPlatform, js_getProduct, js_getProductSub, js_getUserAgent, js_getVendor, js_getVendorSub, getAppCodeName, getAppName, getAppVersion, getPlatform, getProduct, getProductSub, getUserAgent, getVendor, getVendorSub, NavigatorID(..), gTypeNavigatorID, IsNavigatorID, toNavigatorID)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"appCodeName\"]; })"
         js_getAppCodeName :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/appCodeName MDN NavigatorID.appCodeName documentation>
+getAppCodeName :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getAppCodeName self = liftDOM ((fromJSString <$> (js_getAppCodeName ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appCodeName Mozilla NavigatorID.appCodeName documentation> 
-getAppCodeName ::
-               (MonadIO m, IsNavigatorID self, FromJSString result) =>
-                 self -> m result
-getAppCodeName self
-  = liftIO
-      (fromJSString <$> (js_getAppCodeName (toNavigatorID self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"appName\"]; })" js_getAppName ::
-        NavigatorID -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"appName\"]; })"
+        js_getAppName :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/appName MDN NavigatorID.appName documentation>
+getAppName :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getAppName self = liftDOM ((fromJSString <$> (js_getAppName ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appName Mozilla NavigatorID.appName documentation> 
-getAppName ::
-           (MonadIO m, IsNavigatorID self, FromJSString result) =>
-             self -> m result
-getAppName self
-  = liftIO (fromJSString <$> (js_getAppName (toNavigatorID self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"appVersion\"]; })"
         js_getAppVersion :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/appVersion MDN NavigatorID.appVersion documentation>
+getAppVersion :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getAppVersion self = liftDOM ((fromJSString <$> (js_getAppVersion ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appVersion Mozilla NavigatorID.appVersion documentation> 
-getAppVersion ::
-              (MonadIO m, IsNavigatorID self, FromJSString result) =>
-                self -> m result
-getAppVersion self
-  = liftIO (fromJSString <$> (js_getAppVersion (toNavigatorID self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"platform\"]; })" js_getPlatform
-        :: NavigatorID -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"platform\"]; })"
+        js_getPlatform :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/platform MDN NavigatorID.platform documentation>
+getPlatform :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getPlatform self = liftDOM ((fromJSString <$> (js_getPlatform ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.platform Mozilla NavigatorID.platform documentation> 
-getPlatform ::
-            (MonadIO m, IsNavigatorID self, FromJSString result) =>
-              self -> m result
-getPlatform self
-  = liftIO (fromJSString <$> (js_getPlatform (toNavigatorID self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"product\"]; })" js_getProduct ::
-        NavigatorID -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"product\"]; })"
+        js_getProduct :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/product MDN NavigatorID.product documentation>
+getProduct :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getProduct self = liftDOM ((fromJSString <$> (js_getProduct ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.product Mozilla NavigatorID.product documentation> 
-getProduct ::
-           (MonadIO m, IsNavigatorID self, FromJSString result) =>
-             self -> m result
-getProduct self
-  = liftIO (fromJSString <$> (js_getProduct (toNavigatorID self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"productSub\"]; })"
         js_getProductSub :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/productSub MDN NavigatorID.productSub documentation>
+getProductSub :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getProductSub self = liftDOM ((fromJSString <$> (js_getProductSub ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.productSub Mozilla NavigatorID.productSub documentation> 
-getProductSub ::
-              (MonadIO m, IsNavigatorID self, FromJSString result) =>
-                self -> m result
-getProductSub self
-  = liftIO (fromJSString <$> (js_getProductSub (toNavigatorID self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"userAgent\"]; })"
         js_getUserAgent :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/userAgent MDN NavigatorID.userAgent documentation>
+getUserAgent :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getUserAgent self = liftDOM ((fromJSString <$> (js_getUserAgent ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.userAgent Mozilla NavigatorID.userAgent documentation> 
-getUserAgent ::
-             (MonadIO m, IsNavigatorID self, FromJSString result) =>
-               self -> m result
-getUserAgent self
-  = liftIO (fromJSString <$> (js_getUserAgent (toNavigatorID self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vendor\"]; })" js_getVendor ::
-        NavigatorID -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"vendor\"]; })"
+        js_getVendor :: NavigatorID -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/vendor MDN NavigatorID.vendor documentation>
+getVendor :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getVendor self = liftDOM ((fromJSString <$> (js_getVendor ((Types.toNavigatorID self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.vendor Mozilla NavigatorID.vendor documentation> 
-getVendor ::
-          (MonadIO m, IsNavigatorID self, FromJSString result) =>
-            self -> m result
-getVendor self
-  = liftIO (fromJSString <$> (js_getVendor (toNavigatorID self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"vendorSub\"]; })"
         js_getVendorSub :: NavigatorID -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.vendorSub Mozilla NavigatorID.vendorSub documentation> 
-getVendorSub ::
-             (MonadIO m, IsNavigatorID self, FromJSString result) =>
-               self -> m result
-getVendorSub self
-  = liftIO (fromJSString <$> (js_getVendorSub (toNavigatorID self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/vendorSub MDN NavigatorID.vendorSub documentation>
+getVendorSub :: (MonadDOM m, IsNavigatorID self, FromJSString result) => self -> m result
+getVendorSub self = liftDOM ((fromJSString <$> (js_getVendorSub ((Types.toNavigatorID self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
@@ -1,51 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NavigatorLanguage
-       (js_getLanguage, getLanguage, js_getLanguages, getLanguages,
-        NavigatorLanguage(..), gTypeNavigatorLanguage, IsNavigatorLanguage,
-        toNavigatorLanguage)
+       (js_getLanguage, js_getLanguages, getLanguage, getLanguages, NavigatorLanguage(..), gTypeNavigatorLanguage, IsNavigatorLanguage, toNavigatorLanguage)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
-        :: NavigatorLanguage -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage.language Mozilla NavigatorLanguage.language documentation> 
-getLanguage ::
-            (MonadIO m, IsNavigatorLanguage self, FromJSString result) =>
-              self -> m result
-getLanguage self
-  = liftIO
-      (fromJSString <$> (js_getLanguage (toNavigatorLanguage self)))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })"
+        js_getLanguage :: NavigatorLanguage -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/language MDN NavigatorLanguage.language documentation>
+getLanguage :: (MonadDOM m, IsNavigatorLanguage self, FromJSString result) => self -> m result
+getLanguage self = liftDOM ((fromJSString <$> (js_getLanguage ((Types.toNavigatorLanguage self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"languages\"]; })"
         js_getLanguages :: NavigatorLanguage -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage.languages Mozilla NavigatorLanguage.languages documentation> 
-getLanguages ::
-             (MonadIO m, IsNavigatorLanguage self, FromJSString result) =>
-               self -> m [result]
-getLanguages self
-  = liftIO
-      ((js_getLanguages (toNavigatorLanguage self)) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/languages MDN NavigatorLanguage.languages documentation>
+getLanguages :: (MonadDOM m, IsNavigatorLanguage self, FromJSString result) => self -> m [result]
+getLanguages self = liftDOM (((js_getLanguages ((Types.toNavigatorLanguage self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorLocks.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLocks.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLocks.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorLocks
+       (js_getLocks, getLocks, NavigatorLocks(..), gTypeNavigatorLocks, IsNavigatorLocks, toNavigatorLocks)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"locks\"]; })"
+        js_getLocks :: NavigatorLocks -> IO LockManager
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/locks MDN NavigatorLocks.locks documentation>
+getLocks :: (MonadDOM m, IsNavigatorLocks self) => self -> m LockManager
+getLocks self = liftDOM ((js_getLocks ((Types.toNavigatorLocks self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorLogin.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLogin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLogin.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from login-status (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorLogin
+       (js_setStatus, setStatus, NavigatorLogin(..), gTypeNavigatorLogin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setStatus\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setStatus :: NavigatorLogin -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/NavigatorLogin/setStatus MDN NavigatorLogin.setStatus documentation>
+setStatus :: (MonadDOM m) => NavigatorLogin -> LoginStatus -> m ()
+setStatus self status = liftDOM (void ((((toJSVal status) >>= \a2' -> js_setStatus (self) a2') >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
@@ -1,34 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NavigatorOnLine
-       (js_getOnLine, getOnLine, NavigatorOnLine(..),
-        gTypeNavigatorOnLine, IsNavigatorOnLine, toNavigatorOnLine)
+       (js_getOnLine, getOnLine, NavigatorOnLine(..), gTypeNavigatorOnLine, IsNavigatorOnLine, toNavigatorOnLine)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"onLine\"] ? 1 : 0); })"
-        js_getOnLine :: NavigatorOnLine -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine Mozilla NavigatorOnLine.onLine documentation> 
-getOnLine :: (MonadIO m, IsNavigatorOnLine self) => self -> m Bool
-getOnLine self = liftIO (js_getOnLine (toNavigatorOnLine self))
+foreign import javascript unsafe "(($1) => { return $1[\"onLine\"]; })"
+        js_getOnLine :: NavigatorOnLine -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/onLine MDN NavigatorOnLine.onLine documentation>
+getOnLine :: (MonadDOM m, IsNavigatorOnLine self) => self -> m Bool
+getOnLine self = liftDOM ((js_getOnLine ((Types.toNavigatorOnLine self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorPlugins.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorPlugins.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorPlugins.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorPlugins
+       (js_javaEnabled, js_getPlugins, js_getMimeTypes, js_getPdfViewerEnabled, javaEnabled, javaEnabled_, getPlugins, getMimeTypes, getPdfViewerEnabled, NavigatorPlugins(..), gTypeNavigatorPlugins, IsNavigatorPlugins, toNavigatorPlugins)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"javaEnabled\"](); })"
+        js_javaEnabled :: NavigatorPlugins -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/javaEnabled MDN NavigatorPlugins.javaEnabled documentation>
+javaEnabled :: (MonadDOM m, IsNavigatorPlugins self) => self -> m Bool
+javaEnabled self = liftDOM ((js_javaEnabled ((Types.toNavigatorPlugins self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/javaEnabled MDN NavigatorPlugins.javaEnabled documentation>
+javaEnabled_ :: (MonadDOM m, IsNavigatorPlugins self) => self -> m ()
+javaEnabled_ self = liftDOM (void ((js_javaEnabled ((Types.toNavigatorPlugins self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"plugins\"]; })"
+        js_getPlugins :: NavigatorPlugins -> IO PluginArray
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/plugins MDN NavigatorPlugins.plugins documentation>
+getPlugins :: (MonadDOM m, IsNavigatorPlugins self) => self -> m PluginArray
+getPlugins self = liftDOM ((js_getPlugins ((Types.toNavigatorPlugins self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mimeTypes\"]; })"
+        js_getMimeTypes :: NavigatorPlugins -> IO MimeTypeArray
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mimeTypes MDN NavigatorPlugins.mimeTypes documentation>
+getMimeTypes :: (MonadDOM m, IsNavigatorPlugins self) => self -> m MimeTypeArray
+getMimeTypes self = liftDOM ((js_getMimeTypes ((Types.toNavigatorPlugins self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pdfViewerEnabled\"]; })"
+        js_getPdfViewerEnabled :: NavigatorPlugins -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/pdfViewerEnabled MDN NavigatorPlugins.pdfViewerEnabled documentation>
+getPdfViewerEnabled :: (MonadDOM m, IsNavigatorPlugins self) => self -> m Bool
+getPdfViewerEnabled self = liftDOM ((js_getPdfViewerEnabled ((Types.toNavigatorPlugins self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorStorage.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorStorage.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from storage (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NavigatorStorage
+       (js_getStorage, getStorage, NavigatorStorage(..), gTypeNavigatorStorage, IsNavigatorStorage, toNavigatorStorage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"storage\"]; })"
+        js_getStorage :: NavigatorStorage -> IO StorageManager
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/storage MDN NavigatorStorage.storage documentation>
+getStorage :: (MonadDOM m, IsNavigatorStorage self) => self -> m StorageManager
+getStorage self = liftDOM ((js_getStorage ((Types.toNavigatorStorage self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaError
-       (js_getConstraintName, getConstraintName,
-        NavigatorUserMediaError(..), gTypeNavigatorUserMediaError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"constraintName\"]; })"
-        js_getConstraintName :: NavigatorUserMediaError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError.constraintName Mozilla NavigatorUserMediaError.constraintName documentation> 
-getConstraintName ::
-                  (MonadIO m, FromJSString result) =>
-                    NavigatorUserMediaError -> m result
-getConstraintName self
-  = liftIO (fromJSString <$> (js_getConstraintName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback
-       (newNavigatorUserMediaErrorCallback,
-        newNavigatorUserMediaErrorCallbackSync,
-        newNavigatorUserMediaErrorCallbackAsync,
-        NavigatorUserMediaErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
-newNavigatorUserMediaErrorCallback ::
-                                   (MonadIO m) =>
-                                     (NavigatorUserMediaError -> IO ()) ->
-                                       m NavigatorUserMediaErrorCallback
-newNavigatorUserMediaErrorCallback callback
-  = liftIO
-      (NavigatorUserMediaErrorCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
-newNavigatorUserMediaErrorCallbackSync ::
-                                       (MonadIO m) =>
-                                         (NavigatorUserMediaError -> IO ()) ->
-                                           m NavigatorUserMediaErrorCallback
-newNavigatorUserMediaErrorCallbackSync callback
-  = liftIO
-      (NavigatorUserMediaErrorCallback <$>
-         syncCallback1 ContinueAsync
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
-newNavigatorUserMediaErrorCallbackAsync ::
-                                        (MonadIO m) =>
-                                          (NavigatorUserMediaError -> IO ()) ->
-                                            m NavigatorUserMediaErrorCallback
-newNavigatorUserMediaErrorCallbackAsync callback
-  = liftIO
-      (NavigatorUserMediaErrorCallback <$>
-         asyncCallback1
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback
-       (newNavigatorUserMediaSuccessCallback,
-        newNavigatorUserMediaSuccessCallbackSync,
-        newNavigatorUserMediaSuccessCallbackAsync,
-        NavigatorUserMediaSuccessCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
-newNavigatorUserMediaSuccessCallback ::
-                                     (MonadIO m) =>
-                                       (MediaStream -> IO ()) -> m NavigatorUserMediaSuccessCallback
-newNavigatorUserMediaSuccessCallback callback
-  = liftIO
-      (NavigatorUserMediaSuccessCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ stream ->
-              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
-newNavigatorUserMediaSuccessCallbackSync ::
-                                         (MonadIO m) =>
-                                           (MediaStream -> IO ()) ->
-                                             m NavigatorUserMediaSuccessCallback
-newNavigatorUserMediaSuccessCallbackSync callback
-  = liftIO
-      (NavigatorUserMediaSuccessCallback <$>
-         syncCallback1 ContinueAsync
-           (\ stream ->
-              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
-newNavigatorUserMediaSuccessCallbackAsync ::
-                                          (MonadIO m) =>
-                                            (MediaStream -> IO ()) ->
-                                              m NavigatorUserMediaSuccessCallback
-newNavigatorUserMediaSuccessCallbackAsync callback
-  = liftIO
-      (NavigatorUserMediaSuccessCallback <$>
-         asyncCallback1
-           (\ stream ->
-              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Node.hs b/src/GHCJS/DOM/JSFFI/Generated/Node.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Node.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Node.hs
@@ -1,676 +1,383 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Node
-       (js_getRootNode, getRootNode, getRootNode_, js_hasChildNodes,
-        hasChildNodes, hasChildNodes_, js_normalize, normalize,
-        js_cloneNode, cloneNode, cloneNode_, js_isEqualNode, isEqualNode,
-        isEqualNode_, js_isSameNode, isSameNode, isSameNode_,
-        js_compareDocumentPosition, compareDocumentPosition,
-        compareDocumentPosition_, js_contains, contains, contains_,
-        js_lookupPrefix, lookupPrefix, lookupPrefix_, lookupPrefixUnsafe,
-        lookupPrefixUnchecked, js_lookupNamespaceURI, lookupNamespaceURI,
-        lookupNamespaceURI_, lookupNamespaceURIUnsafe,
-        lookupNamespaceURIUnchecked, js_isDefaultNamespace,
-        isDefaultNamespace, isDefaultNamespace_, js_insertBefore,
-        insertBefore, insertBefore_, js_appendChild, appendChild,
-        appendChild_, js_replaceChild, replaceChild, replaceChild_,
-        js_removeChild, removeChild, removeChild_, pattern ELEMENT_NODE,
-        pattern ATTRIBUTE_NODE, pattern TEXT_NODE,
-        pattern CDATA_SECTION_NODE, pattern ENTITY_REFERENCE_NODE,
-        pattern ENTITY_NODE, pattern PROCESSING_INSTRUCTION_NODE,
-        pattern COMMENT_NODE, pattern DOCUMENT_NODE,
-        pattern DOCUMENT_TYPE_NODE, pattern DOCUMENT_FRAGMENT_NODE,
-        pattern NOTATION_NODE, pattern DOCUMENT_POSITION_DISCONNECTED,
-        pattern DOCUMENT_POSITION_PRECEDING,
-        pattern DOCUMENT_POSITION_FOLLOWING,
-        pattern DOCUMENT_POSITION_CONTAINS,
-        pattern DOCUMENT_POSITION_CONTAINED_BY,
-        pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, js_getNodeType,
-        getNodeType, js_getNodeName, getNodeName, js_getBaseURI,
-        getBaseURI, js_getIsConnected, getIsConnected, js_getOwnerDocument,
-        getOwnerDocument, getOwnerDocumentUnsafe,
-        getOwnerDocumentUnchecked, js_getParentNode, getParentNode,
-        getParentNodeUnsafe, getParentNodeUnchecked, js_getParentElement,
-        getParentElement, getParentElementUnsafe,
-        getParentElementUnchecked, js_getChildNodes, getChildNodes,
-        js_getFirstChild, getFirstChild, getFirstChildUnsafe,
-        getFirstChildUnchecked, js_getLastChild, getLastChild,
-        getLastChildUnsafe, getLastChildUnchecked, js_getPreviousSibling,
-        getPreviousSibling, getPreviousSiblingUnsafe,
-        getPreviousSiblingUnchecked, js_getNextSibling, getNextSibling,
-        getNextSiblingUnsafe, getNextSiblingUnchecked, js_setNodeValue,
-        setNodeValue, js_getNodeValue, getNodeValue, getNodeValueUnsafe,
-        getNodeValueUnchecked, js_setTextContent, setTextContent,
-        js_getTextContent, getTextContent, getTextContentUnsafe,
-        getTextContentUnchecked, Node(..), gTypeNode, IsNode, toNode)
+       (js_appendChild, js_cloneNode, js_compareDocumentPosition, js_contains, js_getRootNode, js_hasChildNodes, js_insertBefore, js_isDefaultNamespace, js_isEqualNode, js_isSameNode, js_lookupNamespaceURI, js_lookupPrefix, js_normalize, js_removeChild, js_replaceChild, js_getNodeType, js_getNodeName, js_getBaseURI, js_getIsConnected, js_getOwnerDocument, js_getParentNode, js_getParentElement, js_getChildNodes, js_getFirstChild, js_getLastChild, js_getPreviousSibling, js_getNextSibling, js_setNodeValue, js_getNodeValue, js_setTextContent, js_getTextContent, appendChild, appendChild_, cloneNode, cloneNode_, compareDocumentPosition, compareDocumentPosition_, contains, contains_, getRootNode, getRootNode_, hasChildNodes, hasChildNodes_, insertBefore, insertBefore_, isDefaultNamespace, isDefaultNamespace_, isEqualNode, isEqualNode_, isSameNode, isSameNode_, lookupNamespaceURI, lookupNamespaceURI_, lookupNamespaceURIUnsafe, lookupNamespaceURIUnchecked, lookupPrefix, lookupPrefix_, lookupPrefixUnsafe, lookupPrefixUnchecked, normalize, removeChild, removeChild_, replaceChild, replaceChild_, getNodeType, getNodeName, getBaseURI, getIsConnected, getOwnerDocument, getOwnerDocumentUnsafe, getOwnerDocumentUnchecked, getParentNode, getParentNodeUnsafe, getParentNodeUnchecked, getParentElement, getParentElementUnsafe, getParentElementUnchecked, getChildNodes, getFirstChild, getFirstChildUnsafe, getFirstChildUnchecked, getLastChild, getLastChildUnsafe, getLastChildUnchecked, getPreviousSibling, getPreviousSiblingUnsafe, getPreviousSiblingUnchecked, getNextSibling, getNextSiblingUnsafe, getNextSiblingUnchecked, setNodeValue, getNodeValue, getNodeValueUnsafe, getNodeValueUnchecked, setTextContent, getTextContent, getTextContentUnsafe, getTextContentUnchecked, pattern ELEMENT_NODE, pattern ATTRIBUTE_NODE, pattern TEXT_NODE, pattern CDATA_SECTION_NODE, pattern ENTITY_REFERENCE_NODE, pattern ENTITY_NODE, pattern PROCESSING_INSTRUCTION_NODE, pattern COMMENT_NODE, pattern DOCUMENT_NODE, pattern DOCUMENT_TYPE_NODE, pattern DOCUMENT_FRAGMENT_NODE, pattern NOTATION_NODE, pattern DOCUMENT_POSITION_DISCONNECTED, pattern DOCUMENT_POSITION_PRECEDING, pattern DOCUMENT_POSITION_FOLLOWING, pattern DOCUMENT_POSITION_CONTAINS, pattern DOCUMENT_POSITION_CONTAINED_BY, pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, Node(..), gTypeNode, IsNode, toNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getRootNode\"]($2); })"
-        js_getRootNode :: Node -> Optional GetRootNodeOptions -> IO Node
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.getRootNode Mozilla Node.getRootNode documentation> 
-getRootNode ::
-            (MonadIO m, IsNode self) =>
-              self -> Maybe GetRootNodeOptions -> m Node
-getRootNode self options
-  = liftIO (js_getRootNode (toNode self) (maybeToOptional options))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.getRootNode Mozilla Node.getRootNode documentation> 
-getRootNode_ ::
-             (MonadIO m, IsNode self) =>
-               self -> Maybe GetRootNodeOptions -> m ()
-getRootNode_ self options
-  = liftIO
-      (void (js_getRootNode (toNode self) (maybeToOptional options)))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"hasChildNodes\"]() ? 1 : 0); })" js_hasChildNodes ::
-        Node -> IO Bool
+foreign import javascript safe "(($1, $2) => { return $1[\"appendChild\"]($2); })"
+        js_appendChild :: Node -> Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/appendChild MDN Node.appendChild documentation>
+appendChild :: (MonadDOM m, IsNode self, IsNode node) => self -> node -> m Node
+appendChild self node = liftDOM ((js_appendChild ((Types.toNode self)) (Types.toNode node)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes Mozilla Node.hasChildNodes documentation> 
-hasChildNodes :: (MonadIO m, IsNode self) => self -> m Bool
-hasChildNodes self = liftIO (js_hasChildNodes (toNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/appendChild MDN Node.appendChild documentation>
+appendChild_ :: (MonadDOM m, IsNode self, IsNode node) => self -> node -> m ()
+appendChild_ self node = liftDOM (void ((js_appendChild ((Types.toNode self)) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes Mozilla Node.hasChildNodes documentation> 
-hasChildNodes_ :: (MonadIO m, IsNode self) => self -> m ()
-hasChildNodes_ self
-  = liftIO (void (js_hasChildNodes (toNode self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"normalize\"](); })" js_normalize
-        :: Node -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"cloneNode\"]($2); })"
+        js_cloneNode :: Node -> JSVal -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/cloneNode MDN Node.cloneNode documentation>
+cloneNode :: (MonadDOM m, IsNode self) => self -> Maybe Bool -> m Node
+cloneNode self subtree = liftDOM (((P.maybe (P.return jsUndefined) toJSVal subtree) >>= \a2' -> js_cloneNode ((Types.toNode self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize Mozilla Node.normalize documentation> 
-normalize :: (MonadIO m, IsNode self) => self -> m ()
-normalize self = liftIO (js_normalize (toNode self))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"cloneNode\"]($2); })" js_cloneNode
-        :: Node -> Bool -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/cloneNode MDN Node.cloneNode documentation>
+cloneNode_ :: (MonadDOM m, IsNode self) => self -> Maybe Bool -> m ()
+cloneNode_ self subtree = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal subtree) >>= \a2' -> js_cloneNode ((Types.toNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
-cloneNode :: (MonadIO m, IsNode self) => self -> Bool -> m Node
-cloneNode self deep = liftIO (js_cloneNode (toNode self) deep)
+foreign import javascript safe "(($1, $2) => { return $1[\"compareDocumentPosition\"]($2); })"
+        js_compareDocumentPosition :: Node -> Node -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Node/compareDocumentPosition MDN Node.compareDocumentPosition documentation>
+compareDocumentPosition :: (MonadDOM m, IsNode self, IsNode other) => self -> other -> m Word
+compareDocumentPosition self other = liftDOM ((js_compareDocumentPosition ((Types.toNode self)) (Types.toNode other)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
-cloneNode_ :: (MonadIO m, IsNode self) => self -> Bool -> m ()
-cloneNode_ self deep
-  = liftIO (void (js_cloneNode (toNode self) deep))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"isEqualNode\"]($2) ? 1 : 0); })" js_isEqualNode ::
-        Node -> Optional Node -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/compareDocumentPosition MDN Node.compareDocumentPosition documentation>
+compareDocumentPosition_ :: (MonadDOM m, IsNode self, IsNode other) => self -> other -> m ()
+compareDocumentPosition_ self other = liftDOM (void ((js_compareDocumentPosition ((Types.toNode self)) (Types.toNode other))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isEqualNode Mozilla Node.isEqualNode documentation> 
-isEqualNode ::
-            (MonadIO m, IsNode self, IsNode other) =>
-              self -> Maybe other -> m Bool
-isEqualNode self other
-  = liftIO
-      (js_isEqualNode (toNode self)
-         (maybeToOptional (fmap toNode other)))
+foreign import javascript safe "(($1, $2) => { return $1[\"contains\"]($2); })"
+        js_contains :: Node -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/contains MDN Node.contains documentation>
+contains :: (MonadDOM m, IsNode self, IsNode other) => self -> Maybe other -> m Bool
+contains self other = liftDOM (((toJSVal other) >>= \a2' -> js_contains ((Types.toNode self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isEqualNode Mozilla Node.isEqualNode documentation> 
-isEqualNode_ ::
-             (MonadIO m, IsNode self, IsNode other) =>
-               self -> Maybe other -> m ()
-isEqualNode_ self other
-  = liftIO
-      (void
-         (js_isEqualNode (toNode self)
-            (maybeToOptional (fmap toNode other))))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"isSameNode\"]($2) ? 1 : 0); })"
-        js_isSameNode :: Node -> Optional Node -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/contains MDN Node.contains documentation>
+contains_ :: (MonadDOM m, IsNode self, IsNode other) => self -> Maybe other -> m ()
+contains_ self other = liftDOM (void (((toJSVal other) >>= \a2' -> js_contains ((Types.toNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode Mozilla Node.isSameNode documentation> 
-isSameNode ::
-           (MonadIO m, IsNode self, IsNode other) =>
-             self -> Maybe other -> m Bool
-isSameNode self other
-  = liftIO
-      (js_isSameNode (toNode self) (maybeToOptional (fmap toNode other)))
+foreign import javascript safe "(($1, $2) => { return $1[\"getRootNode\"]($2); })"
+        js_getRootNode :: Node -> JSVal -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/getRootNode MDN Node.getRootNode documentation>
+getRootNode :: (MonadDOM m, IsNode self) => self -> Maybe GetRootNodeOptions -> m Node
+getRootNode self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getRootNode ((Types.toNode self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode Mozilla Node.isSameNode documentation> 
-isSameNode_ ::
-            (MonadIO m, IsNode self, IsNode other) =>
-              self -> Maybe other -> m ()
-isSameNode_ self other
-  = liftIO
-      (void
-         (js_isSameNode (toNode self)
-            (maybeToOptional (fmap toNode other))))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"compareDocumentPosition\"]($2); })" js_compareDocumentPosition ::
-        Node -> Node -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Node/getRootNode MDN Node.getRootNode documentation>
+getRootNode_ :: (MonadDOM m, IsNode self) => self -> Maybe GetRootNodeOptions -> m ()
+getRootNode_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getRootNode ((Types.toNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition Mozilla Node.compareDocumentPosition documentation> 
-compareDocumentPosition ::
-                        (MonadIO m, IsNode self, IsNode other) => self -> other -> m Word
-compareDocumentPosition self other
-  = liftIO (js_compareDocumentPosition (toNode self) (toNode other))
+foreign import javascript safe "(($1) => { return $1[\"hasChildNodes\"](); })"
+        js_hasChildNodes :: Node -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/hasChildNodes MDN Node.hasChildNodes documentation>
+hasChildNodes :: (MonadDOM m, IsNode self) => self -> m Bool
+hasChildNodes self = liftDOM ((js_hasChildNodes ((Types.toNode self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition Mozilla Node.compareDocumentPosition documentation> 
-compareDocumentPosition_ ::
-                         (MonadIO m, IsNode self, IsNode other) => self -> other -> m ()
-compareDocumentPosition_ self other
-  = liftIO
-      (void (js_compareDocumentPosition (toNode self) (toNode other)))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"contains\"]($2) ? 1 : 0); })"
-        js_contains :: Node -> Optional Node -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/hasChildNodes MDN Node.hasChildNodes documentation>
+hasChildNodes_ :: (MonadDOM m, IsNode self) => self -> m ()
+hasChildNodes_ self = liftDOM (void ((js_hasChildNodes ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.contains Mozilla Node.contains documentation> 
-contains ::
-         (MonadIO m, IsNode self, IsNode other) =>
-           self -> Maybe other -> m Bool
-contains self other
-  = liftIO
-      (js_contains (toNode self) (maybeToOptional (fmap toNode other)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertBefore\"]($2, $3); })"
+        js_insertBefore :: Node -> Node -> JSVal -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/insertBefore MDN Node.insertBefore documentation>
+insertBefore :: (MonadDOM m, IsNode self, IsNode node, IsNode child) => self -> node -> Maybe child -> m Node
+insertBefore self node child = liftDOM (((toJSVal child) >>= \a3' -> js_insertBefore ((Types.toNode self)) (Types.toNode node) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.contains Mozilla Node.contains documentation> 
-contains_ ::
-          (MonadIO m, IsNode self, IsNode other) =>
-            self -> Maybe other -> m ()
-contains_ self other
-  = liftIO
-      (void
-         (js_contains (toNode self) (maybeToOptional (fmap toNode other))))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"lookupPrefix\"]($2); })"
-        js_lookupPrefix ::
-        Node -> Optional JSString -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/insertBefore MDN Node.insertBefore documentation>
+insertBefore_ :: (MonadDOM m, IsNode self, IsNode node, IsNode child) => self -> node -> Maybe child -> m ()
+insertBefore_ self node child = liftDOM (void (((toJSVal child) >>= \a3' -> js_insertBefore ((Types.toNode self)) (Types.toNode node) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefix ::
-             (MonadIO m, IsNode self, ToJSString namespaceURI,
-              FromJSString result) =>
-               self -> Maybe namespaceURI -> m (Maybe result)
-lookupPrefix self namespaceURI
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
+foreign import javascript safe "(($1, $2) => { return $1[\"isDefaultNamespace\"]($2); })"
+        js_isDefaultNamespace :: Node -> (Nullable JSString) -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isDefaultNamespace MDN Node.isDefaultNamespace documentation>
+isDefaultNamespace :: (MonadDOM m, IsNode self, ToJSString namespace) => self -> Maybe namespace -> m Bool
+isDefaultNamespace self namespace = liftDOM ((js_isDefaultNamespace ((Types.toNode self)) (toMaybeJSString namespace)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefix_ ::
-              (MonadIO m, IsNode self, ToJSString namespaceURI) =>
-                self -> Maybe namespaceURI -> m ()
-lookupPrefix_ self namespaceURI
-  = liftIO
-      (void
-         (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isDefaultNamespace MDN Node.isDefaultNamespace documentation>
+isDefaultNamespace_ :: (MonadDOM m, IsNode self, ToJSString namespace) => self -> Maybe namespace -> m ()
+isDefaultNamespace_ self namespace = liftDOM (void ((js_isDefaultNamespace ((Types.toNode self)) (toMaybeJSString namespace))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefixUnsafe ::
-                   (MonadIO m, IsNode self, ToJSString namespaceURI, HasCallStack,
-                    FromJSString result) =>
-                     self -> Maybe namespaceURI -> m result
-lookupPrefixUnsafe self namespaceURI
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return $1[\"isEqualNode\"]($2); })"
+        js_isEqualNode :: Node -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isEqualNode MDN Node.isEqualNode documentation>
+isEqualNode :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m Bool
+isEqualNode self otherNode = liftDOM (((toJSVal otherNode) >>= \a2' -> js_isEqualNode ((Types.toNode self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefixUnchecked ::
-                      (MonadIO m, IsNode self, ToJSString namespaceURI,
-                       FromJSString result) =>
-                        self -> Maybe namespaceURI -> m result
-lookupPrefixUnchecked self namespaceURI
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"lookupNamespaceURI\"]($2); })"
-        js_lookupNamespaceURI ::
-        Node -> Optional JSString -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isEqualNode MDN Node.isEqualNode documentation>
+isEqualNode_ :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m ()
+isEqualNode_ self otherNode = liftDOM (void (((toJSVal otherNode) >>= \a2' -> js_isEqualNode ((Types.toNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURI ::
-                   (MonadIO m, IsNode self, ToJSString prefix, FromJSString result) =>
-                     self -> Maybe prefix -> m (Maybe result)
-lookupNamespaceURI self prefix
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
+foreign import javascript safe "(($1, $2) => { return $1[\"isSameNode\"]($2); })"
+        js_isSameNode :: Node -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isSameNode MDN Node.isSameNode documentation>
+isSameNode :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m Bool
+isSameNode self otherNode = liftDOM (((toJSVal otherNode) >>= \a2' -> js_isSameNode ((Types.toNode self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURI_ ::
-                    (MonadIO m, IsNode self, ToJSString prefix) =>
-                      self -> Maybe prefix -> m ()
-lookupNamespaceURI_ self prefix
-  = liftIO
-      (void
-         (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isSameNode MDN Node.isSameNode documentation>
+isSameNode_ :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m ()
+isSameNode_ self otherNode = liftDOM (void (((toJSVal otherNode) >>= \a2' -> js_isSameNode ((Types.toNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnsafe ::
-                         (MonadIO m, IsNode self, ToJSString prefix, HasCallStack,
-                          FromJSString result) =>
-                           self -> Maybe prefix -> m result
-lookupNamespaceURIUnsafe self prefix
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return $1[\"lookupNamespaceURI\"]($2); })"
+        js_lookupNamespaceURI :: Node -> (Nullable JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupNamespaceURI MDN Node.lookupNamespaceURI documentation>
+lookupNamespaceURI :: (MonadDOM m, IsNode self, ToJSString prefix, FromJSString result) => self -> Maybe prefix -> m (Maybe result)
+lookupNamespaceURI self prefix = liftDOM (((fromMaybeJSString . Nullable) <$> (js_lookupNamespaceURI ((Types.toNode self)) (toMaybeJSString prefix))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnchecked ::
-                            (MonadIO m, IsNode self, ToJSString prefix, FromJSString result) =>
-                              self -> Maybe prefix -> m result
-lookupNamespaceURIUnchecked self prefix
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"isDefaultNamespace\"]($2) ? 1 : 0); })" js_isDefaultNamespace ::
-        Node -> Optional JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupNamespaceURI MDN Node.lookupNamespaceURI documentation>
+lookupNamespaceURI_ :: (MonadDOM m, IsNode self, ToJSString prefix) => self -> Maybe prefix -> m ()
+lookupNamespaceURI_ self prefix = liftDOM (void ((js_lookupNamespaceURI ((Types.toNode self)) (toMaybeJSString prefix))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isDefaultNamespace Mozilla Node.isDefaultNamespace documentation> 
-isDefaultNamespace ::
-                   (MonadIO m, IsNode self, ToJSString namespaceURI) =>
-                     self -> Maybe namespaceURI -> m Bool
-isDefaultNamespace self namespaceURI
-  = liftIO
-      (js_isDefaultNamespace (toNode self)
-         (toOptionalJSString namespaceURI))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupNamespaceURI MDN Node.lookupNamespaceURI documentation>
+lookupNamespaceURIUnsafe :: (MonadDOM m, IsNode self, ToJSString prefix, HasCallStack, FromJSString result) => self -> Maybe prefix -> m result
+lookupNamespaceURIUnsafe self prefix = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_lookupNamespaceURI ((Types.toNode self)) (toMaybeJSString prefix))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isDefaultNamespace Mozilla Node.isDefaultNamespace documentation> 
-isDefaultNamespace_ ::
-                    (MonadIO m, IsNode self, ToJSString namespaceURI) =>
-                      self -> Maybe namespaceURI -> m ()
-isDefaultNamespace_ self namespaceURI
-  = liftIO
-      (void
-         (js_isDefaultNamespace (toNode self)
-            (toOptionalJSString namespaceURI)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertBefore\"]($2, $3); })"
-        js_insertBefore :: Node -> Node -> Optional Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupNamespaceURI MDN Node.lookupNamespaceURI documentation>
+lookupNamespaceURIUnchecked :: (MonadDOM m, IsNode self, ToJSString prefix, FromJSString result) => self -> Maybe prefix -> m result
+lookupNamespaceURIUnchecked self prefix = liftDOM ((pFromJSVal <$> (js_lookupNamespaceURI ((Types.toNode self)) (toMaybeJSString prefix))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
-insertBefore ::
-             (MonadIO m, IsNode self, IsNode node, IsNode child) =>
-               self -> node -> Maybe child -> m Node
-insertBefore self node child
-  = liftIO
-      (js_insertBefore (toNode self) (toNode node)
-         (maybeToOptional (fmap toNode child)))
+foreign import javascript safe "(($1, $2) => { return $1[\"lookupPrefix\"]($2); })"
+        js_lookupPrefix :: Node -> (Nullable JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupPrefix MDN Node.lookupPrefix documentation>
+lookupPrefix :: (MonadDOM m, IsNode self, ToJSString namespace, FromJSString result) => self -> Maybe namespace -> m (Maybe result)
+lookupPrefix self namespace = liftDOM (((fromMaybeJSString . Nullable) <$> (js_lookupPrefix ((Types.toNode self)) (toMaybeJSString namespace))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
-insertBefore_ ::
-              (MonadIO m, IsNode self, IsNode node, IsNode child) =>
-                self -> node -> Maybe child -> m ()
-insertBefore_ self node child
-  = liftIO
-      (void
-         (js_insertBefore (toNode self) (toNode node)
-            (maybeToOptional (fmap toNode child))))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendChild\"]($2); })"
-        js_appendChild :: Node -> Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupPrefix MDN Node.lookupPrefix documentation>
+lookupPrefix_ :: (MonadDOM m, IsNode self, ToJSString namespace) => self -> Maybe namespace -> m ()
+lookupPrefix_ self namespace = liftDOM (void ((js_lookupPrefix ((Types.toNode self)) (toMaybeJSString namespace))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
-appendChild ::
-            (MonadIO m, IsNode self, IsNode node) => self -> node -> m Node
-appendChild self node
-  = liftIO (js_appendChild (toNode self) (toNode node))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupPrefix MDN Node.lookupPrefix documentation>
+lookupPrefixUnsafe :: (MonadDOM m, IsNode self, ToJSString namespace, HasCallStack, FromJSString result) => self -> Maybe namespace -> m result
+lookupPrefixUnsafe self namespace = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_lookupPrefix ((Types.toNode self)) (toMaybeJSString namespace))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
-appendChild_ ::
-             (MonadIO m, IsNode self, IsNode node) => self -> node -> m ()
-appendChild_ self node
-  = liftIO (void (js_appendChild (toNode self) (toNode node)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceChild\"]($2, $3); })"
-        js_replaceChild :: Node -> Node -> Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lookupPrefix MDN Node.lookupPrefix documentation>
+lookupPrefixUnchecked :: (MonadDOM m, IsNode self, ToJSString namespace, FromJSString result) => self -> Maybe namespace -> m result
+lookupPrefixUnchecked self namespace = liftDOM ((pFromJSVal <$> (js_lookupPrefix ((Types.toNode self)) (toMaybeJSString namespace))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
-replaceChild ::
-             (MonadIO m, IsNode self, IsNode node, IsNode child) =>
-               self -> node -> child -> m Node
-replaceChild self node child
-  = liftIO
-      (js_replaceChild (toNode self) (toNode node) (toNode child))
+foreign import javascript safe "(($1) => { return $1[\"normalize\"](); })"
+        js_normalize :: Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Node/normalize MDN Node.normalize documentation>
+normalize :: (MonadDOM m, IsNode self) => self -> m ()
+normalize self = liftDOM (void ((js_normalize ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
-replaceChild_ ::
-              (MonadIO m, IsNode self, IsNode node, IsNode child) =>
-                self -> node -> child -> m ()
-replaceChild_ self node child
-  = liftIO
-      (void (js_replaceChild (toNode self) (toNode node) (toNode child)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"removeChild\"]($2); })"
         js_removeChild :: Node -> Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/removeChild MDN Node.removeChild documentation>
+removeChild :: (MonadDOM m, IsNode self, IsNode child) => self -> child -> m Node
+removeChild self child = liftDOM ((js_removeChild ((Types.toNode self)) (Types.toNode child)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
-removeChild ::
-            (MonadIO m, IsNode self, IsNode child) => self -> child -> m Node
-removeChild self child
-  = liftIO (js_removeChild (toNode self) (toNode child))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/removeChild MDN Node.removeChild documentation>
+removeChild_ :: (MonadDOM m, IsNode self, IsNode child) => self -> child -> m ()
+removeChild_ self child = liftDOM (void ((js_removeChild ((Types.toNode self)) (Types.toNode child))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
-removeChild_ ::
-             (MonadIO m, IsNode self, IsNode child) => self -> child -> m ()
-removeChild_ self child
-  = liftIO (void (js_removeChild (toNode self) (toNode child)))
-pattern ELEMENT_NODE = 1
-pattern ATTRIBUTE_NODE = 2
-pattern TEXT_NODE = 3
-pattern CDATA_SECTION_NODE = 4
-pattern ENTITY_REFERENCE_NODE = 5
-pattern ENTITY_NODE = 6
-pattern PROCESSING_INSTRUCTION_NODE = 7
-pattern COMMENT_NODE = 8
-pattern DOCUMENT_NODE = 9
-pattern DOCUMENT_TYPE_NODE = 10
-pattern DOCUMENT_FRAGMENT_NODE = 11
-pattern NOTATION_NODE = 12
-pattern DOCUMENT_POSITION_DISCONNECTED = 1
-pattern DOCUMENT_POSITION_PRECEDING = 2
-pattern DOCUMENT_POSITION_FOLLOWING = 4
-pattern DOCUMENT_POSITION_CONTAINS = 8
-pattern DOCUMENT_POSITION_CONTAINED_BY = 16
-pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nodeType\"]; })" js_getNodeType
-        :: Node -> IO Word
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceChild\"]($2, $3); })"
+        js_replaceChild :: Node -> Node -> Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Node/replaceChild MDN Node.replaceChild documentation>
+replaceChild :: (MonadDOM m, IsNode self, IsNode node, IsNode child) => self -> node -> child -> m Node
+replaceChild self node child = liftDOM ((js_replaceChild ((Types.toNode self)) (Types.toNode node) (Types.toNode child)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType Mozilla Node.nodeType documentation> 
-getNodeType :: (MonadIO m, IsNode self) => self -> m Word
-getNodeType self = liftIO (js_getNodeType (toNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nodeName\"]; })" js_getNodeName
-        :: Node -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Node/replaceChild MDN Node.replaceChild documentation>
+replaceChild_ :: (MonadDOM m, IsNode self, IsNode node, IsNode child) => self -> node -> child -> m ()
+replaceChild_ self node child = liftDOM (void ((js_replaceChild ((Types.toNode self)) (Types.toNode node) (Types.toNode child))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName Mozilla Node.nodeName documentation> 
-getNodeName ::
-            (MonadIO m, IsNode self, FromJSString result) => self -> m result
-getNodeName self
-  = liftIO (fromJSString <$> (js_getNodeName (toNode self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseURI\"]; })" js_getBaseURI ::
-        Node -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"nodeType\"]; })"
+        js_getNodeType :: Node -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nodeType MDN Node.nodeType documentation>
+getNodeType :: (MonadDOM m, IsNode self) => self -> m Word
+getNodeType self = liftDOM ((js_getNodeType ((Types.toNode self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.baseURI Mozilla Node.baseURI documentation> 
-getBaseURI ::
-           (MonadIO m, IsNode self, FromJSString result) => self -> m result
-getBaseURI self
-  = liftIO (fromJSString <$> (js_getBaseURI (toNode self)))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"isConnected\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"nodeName\"]; })"
+        js_getNodeName :: Node -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nodeName MDN Node.nodeName documentation>
+getNodeName :: (MonadDOM m, IsNode self, FromJSString result) => self -> m result
+getNodeName self = liftDOM ((fromJSString <$> (js_getNodeName ((Types.toNode self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"baseURI\"]; })"
+        js_getBaseURI :: Node -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Node/baseURI MDN Node.baseURI documentation>
+getBaseURI :: (MonadDOM m, IsNode self, FromJSString result) => self -> m result
+getBaseURI self = liftDOM ((fromJSString <$> (js_getBaseURI ((Types.toNode self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isConnected\"]; })"
         js_getIsConnected :: Node -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isConnected MDN Node.isConnected documentation>
+getIsConnected :: (MonadDOM m, IsNode self) => self -> m Bool
+getIsConnected self = liftDOM ((js_getIsConnected ((Types.toNode self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isConnected Mozilla Node.isConnected documentation> 
-getIsConnected :: (MonadIO m, IsNode self) => self -> m Bool
-getIsConnected self = liftIO (js_getIsConnected (toNode self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"ownerDocument\"]; })"
-        js_getOwnerDocument :: Node -> IO (Nullable Document)
+        js_getOwnerDocument :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/ownerDocument MDN Node.ownerDocument documentation>
+getOwnerDocument :: (MonadDOM m, IsNode self) => self -> m (Maybe Document)
+getOwnerDocument self = liftDOM (((js_getOwnerDocument ((Types.toNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
-getOwnerDocument ::
-                 (MonadIO m, IsNode self) => self -> m (Maybe Document)
-getOwnerDocument self
-  = liftIO (nullableToMaybe <$> (js_getOwnerDocument (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/ownerDocument MDN Node.ownerDocument documentation>
+getOwnerDocumentUnsafe :: (MonadDOM m, IsNode self, HasCallStack) => self -> m Document
+getOwnerDocumentUnsafe self = liftDOM ((((js_getOwnerDocument ((Types.toNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
-getOwnerDocumentUnsafe ::
-                       (MonadIO m, IsNode self, HasCallStack) => self -> m Document
-getOwnerDocumentUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getOwnerDocument (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/ownerDocument MDN Node.ownerDocument documentation>
+getOwnerDocumentUnchecked :: (MonadDOM m, IsNode self) => self -> m Document
+getOwnerDocumentUnchecked self = liftDOM ((pFromJSVal <$> (js_getOwnerDocument ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
-getOwnerDocumentUnchecked ::
-                          (MonadIO m, IsNode self) => self -> m Document
-getOwnerDocumentUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getOwnerDocument (toNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"parentNode\"]; })"
-        js_getParentNode :: Node -> IO (Nullable Node)
+        js_getParentNode :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentNode MDN Node.parentNode documentation>
+getParentNode :: (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getParentNode self = liftDOM (((js_getParentNode ((Types.toNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
-getParentNode :: (MonadIO m, IsNode self) => self -> m (Maybe Node)
-getParentNode self
-  = liftIO (nullableToMaybe <$> (js_getParentNode (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentNode MDN Node.parentNode documentation>
+getParentNodeUnsafe :: (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getParentNodeUnsafe self = liftDOM ((((js_getParentNode ((Types.toNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
-getParentNodeUnsafe ::
-                    (MonadIO m, IsNode self, HasCallStack) => self -> m Node
-getParentNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getParentNode (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentNode MDN Node.parentNode documentation>
+getParentNodeUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getParentNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getParentNode ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
-getParentNodeUnchecked ::
-                       (MonadIO m, IsNode self) => self -> m Node
-getParentNodeUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getParentNode (toNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"parentElement\"]; })"
-        js_getParentElement :: Node -> IO (Nullable Element)
+        js_getParentElement :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentElement MDN Node.parentElement documentation>
+getParentElement :: (MonadDOM m, IsNode self) => self -> m (Maybe Element)
+getParentElement self = liftDOM (((js_getParentElement ((Types.toNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
-getParentElement ::
-                 (MonadIO m, IsNode self) => self -> m (Maybe Element)
-getParentElement self
-  = liftIO (nullableToMaybe <$> (js_getParentElement (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentElement MDN Node.parentElement documentation>
+getParentElementUnsafe :: (MonadDOM m, IsNode self, HasCallStack) => self -> m Element
+getParentElementUnsafe self = liftDOM ((((js_getParentElement ((Types.toNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
-getParentElementUnsafe ::
-                       (MonadIO m, IsNode self, HasCallStack) => self -> m Element
-getParentElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getParentElement (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentElement MDN Node.parentElement documentation>
+getParentElementUnchecked :: (MonadDOM m, IsNode self) => self -> m Element
+getParentElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getParentElement ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
-getParentElementUnchecked ::
-                          (MonadIO m, IsNode self) => self -> m Element
-getParentElementUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getParentElement (toNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"childNodes\"]; })"
         js_getChildNodes :: Node -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/Node/childNodes MDN Node.childNodes documentation>
+getChildNodes :: (MonadDOM m, IsNode self) => self -> m NodeList
+getChildNodes self = liftDOM ((js_getChildNodes ((Types.toNode self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes Mozilla Node.childNodes documentation> 
-getChildNodes :: (MonadIO m, IsNode self) => self -> m NodeList
-getChildNodes self = liftIO (js_getChildNodes (toNode self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"firstChild\"]; })"
-        js_getFirstChild :: Node -> IO (Nullable Node)
+        js_getFirstChild :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/firstChild MDN Node.firstChild documentation>
+getFirstChild :: (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getFirstChild self = liftDOM (((js_getFirstChild ((Types.toNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
-getFirstChild :: (MonadIO m, IsNode self) => self -> m (Maybe Node)
-getFirstChild self
-  = liftIO (nullableToMaybe <$> (js_getFirstChild (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/firstChild MDN Node.firstChild documentation>
+getFirstChildUnsafe :: (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getFirstChildUnsafe self = liftDOM ((((js_getFirstChild ((Types.toNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
-getFirstChildUnsafe ::
-                    (MonadIO m, IsNode self, HasCallStack) => self -> m Node
-getFirstChildUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFirstChild (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/firstChild MDN Node.firstChild documentation>
+getFirstChildUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getFirstChildUnchecked self = liftDOM ((pFromJSVal <$> (js_getFirstChild ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
-getFirstChildUnchecked ::
-                       (MonadIO m, IsNode self) => self -> m Node
-getFirstChildUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getFirstChild (toNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"lastChild\"]; })"
-        js_getLastChild :: Node -> IO (Nullable Node)
+        js_getLastChild :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lastChild MDN Node.lastChild documentation>
+getLastChild :: (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getLastChild self = liftDOM (((js_getLastChild ((Types.toNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
-getLastChild :: (MonadIO m, IsNode self) => self -> m (Maybe Node)
-getLastChild self
-  = liftIO (nullableToMaybe <$> (js_getLastChild (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lastChild MDN Node.lastChild documentation>
+getLastChildUnsafe :: (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getLastChildUnsafe self = liftDOM ((((js_getLastChild ((Types.toNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
-getLastChildUnsafe ::
-                   (MonadIO m, IsNode self, HasCallStack) => self -> m Node
-getLastChildUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getLastChild (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lastChild MDN Node.lastChild documentation>
+getLastChildUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getLastChildUnchecked self = liftDOM ((pFromJSVal <$> (js_getLastChild ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
-getLastChildUnchecked :: (MonadIO m, IsNode self) => self -> m Node
-getLastChildUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getLastChild (toNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"previousSibling\"]; })"
-        js_getPreviousSibling :: Node -> IO (Nullable Node)
+        js_getPreviousSibling :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/previousSibling MDN Node.previousSibling documentation>
+getPreviousSibling :: (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getPreviousSibling self = liftDOM (((js_getPreviousSibling ((Types.toNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
-getPreviousSibling ::
-                   (MonadIO m, IsNode self) => self -> m (Maybe Node)
-getPreviousSibling self
-  = liftIO
-      (nullableToMaybe <$> (js_getPreviousSibling (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/previousSibling MDN Node.previousSibling documentation>
+getPreviousSiblingUnsafe :: (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getPreviousSiblingUnsafe self = liftDOM ((((js_getPreviousSibling ((Types.toNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
-getPreviousSiblingUnsafe ::
-                         (MonadIO m, IsNode self, HasCallStack) => self -> m Node
-getPreviousSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getPreviousSibling (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/previousSibling MDN Node.previousSibling documentation>
+getPreviousSiblingUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getPreviousSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreviousSibling ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
-getPreviousSiblingUnchecked ::
-                            (MonadIO m, IsNode self) => self -> m Node
-getPreviousSiblingUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getPreviousSibling (toNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"nextSibling\"]; })"
-        js_getNextSibling :: Node -> IO (Nullable Node)
+        js_getNextSibling :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nextSibling MDN Node.nextSibling documentation>
+getNextSibling :: (MonadDOM m, IsNode self) => self -> m (Maybe Node)
+getNextSibling self = liftDOM (((js_getNextSibling ((Types.toNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
-getNextSibling ::
-               (MonadIO m, IsNode self) => self -> m (Maybe Node)
-getNextSibling self
-  = liftIO (nullableToMaybe <$> (js_getNextSibling (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nextSibling MDN Node.nextSibling documentation>
+getNextSiblingUnsafe :: (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getNextSiblingUnsafe self = liftDOM ((((js_getNextSibling ((Types.toNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
-getNextSiblingUnsafe ::
-                     (MonadIO m, IsNode self, HasCallStack) => self -> m Node
-getNextSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getNextSibling (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nextSibling MDN Node.nextSibling documentation>
+getNextSiblingUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getNextSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_getNextSibling ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
-getNextSiblingUnchecked ::
-                        (MonadIO m, IsNode self) => self -> m Node
-getNextSiblingUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getNextSibling (toNode self)))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"nodeValue\"] = $2; })"
-        js_setNodeValue :: Node -> Optional JSString -> IO ()
+        js_setNodeValue :: Node -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nodeValue MDN Node.nodeValue documentation>
+setNodeValue :: (MonadDOM m, IsNode self, ToJSString val) => self -> Maybe val -> m ()
+setNodeValue self val = liftDOM (void ((js_setNodeValue ((Types.toNode self)) (toMaybeJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-setNodeValue ::
-             (MonadIO m, IsNode self, ToJSString val) =>
-               self -> Maybe val -> m ()
-setNodeValue self val
-  = liftIO (js_setNodeValue (toNode self) (toOptionalJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"nodeValue\"]; })"
-        js_getNodeValue :: Node -> IO (Nullable JSString)
+        js_getNodeValue :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nodeValue MDN Node.nodeValue documentation>
+getNodeValue :: (MonadDOM m, IsNode self, FromJSString result) => self -> m (Maybe result)
+getNodeValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNodeValue ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-getNodeValue ::
-             (MonadIO m, IsNode self, FromJSString result) =>
-               self -> m (Maybe result)
-getNodeValue self
-  = liftIO (fromMaybeJSString <$> (js_getNodeValue (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nodeValue MDN Node.nodeValue documentation>
+getNodeValueUnsafe :: (MonadDOM m, IsNode self, HasCallStack, FromJSString result) => self -> m result
+getNodeValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNodeValue ((Types.toNode self)))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-getNodeValueUnsafe ::
-                   (MonadIO m, IsNode self, HasCallStack, FromJSString result) =>
-                     self -> m result
-getNodeValueUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getNodeValue (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nodeValue MDN Node.nodeValue documentation>
+getNodeValueUnchecked :: (MonadDOM m, IsNode self, FromJSString result) => self -> m result
+getNodeValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getNodeValue ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-getNodeValueUnchecked ::
-                      (MonadIO m, IsNode self, FromJSString result) => self -> m result
-getNodeValueUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getNodeValue (toNode self)))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"textContent\"] = $2; })"
-        js_setTextContent :: Node -> Optional JSString -> IO ()
+        js_setTextContent :: Node -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Node/textContent MDN Node.textContent documentation>
+setTextContent :: (MonadDOM m, IsNode self, ToJSString val) => self -> Maybe val -> m ()
+setTextContent self val = liftDOM (void ((js_setTextContent ((Types.toNode self)) (toMaybeJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-setTextContent ::
-               (MonadIO m, IsNode self, ToJSString val) =>
-                 self -> Maybe val -> m ()
-setTextContent self val
-  = liftIO (js_setTextContent (toNode self) (toOptionalJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"textContent\"]; })"
-        js_getTextContent :: Node -> IO (Nullable JSString)
+        js_getTextContent :: Node -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Node/textContent MDN Node.textContent documentation>
+getTextContent :: (MonadDOM m, IsNode self, FromJSString result) => self -> m (Maybe result)
+getTextContent self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTextContent ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-getTextContent ::
-               (MonadIO m, IsNode self, FromJSString result) =>
-                 self -> m (Maybe result)
-getTextContent self
-  = liftIO (fromMaybeJSString <$> (js_getTextContent (toNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/textContent MDN Node.textContent documentation>
+getTextContentUnsafe :: (MonadDOM m, IsNode self, HasCallStack, FromJSString result) => self -> m result
+getTextContentUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTextContent ((Types.toNode self)))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-getTextContentUnsafe ::
-                     (MonadIO m, IsNode self, HasCallStack, FromJSString result) =>
-                       self -> m result
-getTextContentUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getTextContent (toNode self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/textContent MDN Node.textContent documentation>
+getTextContentUnchecked :: (MonadDOM m, IsNode self, FromJSString result) => self -> m result
+getTextContentUnchecked self = liftDOM ((pFromJSVal <$> (js_getTextContent ((Types.toNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-getTextContentUnchecked ::
-                        (MonadIO m, IsNode self, FromJSString result) => self -> m result
-getTextContentUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getTextContent (toNode self)))
+pattern ELEMENT_NODE = 1
+
+pattern ATTRIBUTE_NODE = 2
+
+pattern TEXT_NODE = 3
+
+pattern CDATA_SECTION_NODE = 4
+
+pattern ENTITY_REFERENCE_NODE = 5
+
+pattern ENTITY_NODE = 6
+
+pattern PROCESSING_INSTRUCTION_NODE = 7
+
+pattern COMMENT_NODE = 8
+
+pattern DOCUMENT_NODE = 9
+
+pattern DOCUMENT_TYPE_NODE = 10
+
+pattern DOCUMENT_FRAGMENT_NODE = 11
+
+pattern NOTATION_NODE = 12
+
+pattern DOCUMENT_POSITION_DISCONNECTED = 0x01
+
+pattern DOCUMENT_POSITION_PRECEDING = 0x02
+
+pattern DOCUMENT_POSITION_FOLLOWING = 0x04
+
+pattern DOCUMENT_POSITION_CONTAINS = 0x08
+
+pattern DOCUMENT_POSITION_CONTAINED_BY = 0x10
+
+pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
@@ -1,74 +1,29 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NodeFilter
-       (newNodeFilter, newNodeFilterSync, newNodeFilterAsync,
-        pattern FILTER_ACCEPT, pattern FILTER_REJECT, pattern FILTER_SKIP,
-        pattern SHOW_ALL, pattern SHOW_ELEMENT, pattern SHOW_ATTRIBUTE,
-        pattern SHOW_TEXT, pattern SHOW_CDATA_SECTION,
-        pattern SHOW_ENTITY_REFERENCE, pattern SHOW_ENTITY,
-        pattern SHOW_PROCESSING_INSTRUCTION, pattern SHOW_COMMENT,
-        pattern SHOW_DOCUMENT, pattern SHOW_DOCUMENT_TYPE,
-        pattern SHOW_DOCUMENT_FRAGMENT, pattern SHOW_NOTATION, NodeFilter)
+       (newNodeFilter, newNodeFilterSync, newNodeFilterAsync, NodeFilter)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
-newNodeFilter :: (MonadIO m) => (Node -> IO ()) -> m NodeFilter
-newNodeFilter callback
-  = liftIO
-      (NodeFilter <$>
-         syncCallback1 ThrowWouldBlock
-           (\ node -> fromJSValUnchecked node >>= \ node' -> callback node'))
+newNodeFilter :: (MonadDOM m) => (Node -> IO ()) -> m NodeFilter
+newNodeFilter callback = liftDOM ((NodeFilter . coerce) <$> syncCallback1 ContinueAsync (\ node -> do
+          node' <- fromJSValUnchecked node
+          callback node'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
-newNodeFilterSync :: (MonadIO m) => (Node -> IO ()) -> m NodeFilter
-newNodeFilterSync callback
-  = liftIO
-      (NodeFilter <$>
-         syncCallback1 ContinueAsync
-           (\ node -> fromJSValUnchecked node >>= \ node' -> callback node'))
+newNodeFilterSync :: (MonadDOM m) => (Node -> IO ()) -> m NodeFilter
+newNodeFilterSync callback = liftDOM ((NodeFilter . coerce) <$> syncCallback1 ThrowWouldBlock (\ node -> do
+          node' <- fromJSValUnchecked node
+          callback node'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
-newNodeFilterAsync ::
-                   (MonadIO m) => (Node -> IO ()) -> m NodeFilter
-newNodeFilterAsync callback
-  = liftIO
-      (NodeFilter <$>
-         asyncCallback1
-           (\ node -> fromJSValUnchecked node >>= \ node' -> callback node'))
-pattern FILTER_ACCEPT = 1
-pattern FILTER_REJECT = 2
-pattern FILTER_SKIP = 3
-pattern SHOW_ALL = 4294967295
-pattern SHOW_ELEMENT = 1
-pattern SHOW_ATTRIBUTE = 2
-pattern SHOW_TEXT = 4
-pattern SHOW_CDATA_SECTION = 8
-pattern SHOW_ENTITY_REFERENCE = 16
-pattern SHOW_ENTITY = 32
-pattern SHOW_PROCESSING_INSTRUCTION = 64
-pattern SHOW_COMMENT = 128
-pattern SHOW_DOCUMENT = 256
-pattern SHOW_DOCUMENT_TYPE = 512
-pattern SHOW_DOCUMENT_FRAGMENT = 1024
-pattern SHOW_NOTATION = 2048
+newNodeFilterAsync :: (MonadDOM m) => (Node -> IO ()) -> m NodeFilter
+newNodeFilterAsync callback = liftDOM ((NodeFilter . coerce) <$> asyncCallback1 (\ node -> do
+          node' <- fromJSValUnchecked node
+          callback node'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
@@ -1,119 +1,83 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NodeIterator
-       (js_nextNode, nextNode, nextNode_, nextNodeUnsafe,
-        nextNodeUnchecked, js_previousNode, previousNode, previousNode_,
-        previousNodeUnsafe, previousNodeUnchecked, js_detach, detach,
-        js_getRoot, getRoot, js_getReferenceNode, getReferenceNode,
-        js_getPointerBeforeReferenceNode, getPointerBeforeReferenceNode,
-        js_getWhatToShow, getWhatToShow, NodeIterator(..),
-        gTypeNodeIterator)
+       (js_detach, js_nextNode, js_previousNode, js_getRoot, js_getReferenceNode, js_getPointerBeforeReferenceNode, js_getWhatToShow, detach, nextNode, nextNode_, nextNodeUnsafe, nextNodeUnchecked, previousNode, previousNode_, previousNodeUnsafe, previousNodeUnchecked, getRoot, getReferenceNode, getPointerBeforeReferenceNode, getWhatToShow, NodeIterator(..), gTypeNodeIterator)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nextNode\"](); })" js_nextNode
-        :: NodeIterator -> IO (Nullable Node)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
-nextNode :: (MonadIO m) => NodeIterator -> m (Maybe Node)
-nextNode self = liftIO (nullableToMaybe <$> (js_nextNode self))
+foreign import javascript safe "(($1) => { return $1[\"detach\"](); })"
+        js_detach :: NodeIterator -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/detach MDN NodeIterator.detach documentation>
+detach :: (MonadDOM m) => NodeIterator -> m ()
+detach self = liftDOM (void ((js_detach (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
-nextNode_ :: (MonadIO m) => NodeIterator -> m ()
-nextNode_ self = liftIO (void (js_nextNode self))
+foreign import javascript safe "(($1) => { return $1[\"nextNode\"](); })"
+        js_nextNode :: NodeIterator -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
+nextNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
+nextNode self = liftDOM (((js_nextNode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
-nextNodeUnsafe ::
-               (MonadIO m, HasCallStack) => NodeIterator -> m Node
-nextNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_nextNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
+nextNode_ :: (MonadDOM m) => NodeIterator -> m ()
+nextNode_ self = liftDOM (void ((js_nextNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
-nextNodeUnchecked :: (MonadIO m) => NodeIterator -> m Node
-nextNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_nextNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"previousNode\"](); })"
-        js_previousNode :: NodeIterator -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
+nextNodeUnsafe :: (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+nextNodeUnsafe self = liftDOM ((((js_nextNode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
-previousNode :: (MonadIO m) => NodeIterator -> m (Maybe Node)
-previousNode self
-  = liftIO (nullableToMaybe <$> (js_previousNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
+nextNodeUnchecked :: (MonadDOM m) => NodeIterator -> m Node
+nextNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_nextNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
-previousNode_ :: (MonadIO m) => NodeIterator -> m ()
-previousNode_ self = liftIO (void (js_previousNode self))
+foreign import javascript safe "(($1) => { return $1[\"previousNode\"](); })"
+        js_previousNode :: NodeIterator -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
+previousNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
+previousNode self = liftDOM (((js_previousNode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
-previousNodeUnsafe ::
-                   (MonadIO m, HasCallStack) => NodeIterator -> m Node
-previousNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_previousNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
+previousNode_ :: (MonadDOM m) => NodeIterator -> m ()
+previousNode_ self = liftDOM (void ((js_previousNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
-previousNodeUnchecked :: (MonadIO m) => NodeIterator -> m Node
-previousNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_previousNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"detach\"](); })" js_detach ::
-        NodeIterator -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
+previousNodeUnsafe :: (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+previousNodeUnsafe self = liftDOM ((((js_previousNode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.detach Mozilla NodeIterator.detach documentation> 
-detach :: (MonadIO m) => NodeIterator -> m ()
-detach self = liftIO (js_detach self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })" js_getRoot ::
-        NodeIterator -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
+previousNodeUnchecked :: (MonadDOM m) => NodeIterator -> m Node
+previousNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_previousNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.root Mozilla NodeIterator.root documentation> 
-getRoot :: (MonadIO m) => NodeIterator -> m Node
-getRoot self = liftIO (js_getRoot self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })"
+        js_getRoot :: NodeIterator -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/root MDN NodeIterator.root documentation>
+getRoot :: (MonadDOM m) => NodeIterator -> m Node
+getRoot self = liftDOM ((js_getRoot (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"referenceNode\"]; })"
         js_getReferenceNode :: NodeIterator -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/referenceNode MDN NodeIterator.referenceNode documentation>
+getReferenceNode :: (MonadDOM m) => NodeIterator -> m Node
+getReferenceNode self = liftDOM ((js_getReferenceNode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.referenceNode Mozilla NodeIterator.referenceNode documentation> 
-getReferenceNode :: (MonadIO m) => NodeIterator -> m Node
-getReferenceNode self = liftIO (js_getReferenceNode self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"pointerBeforeReferenceNode\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"pointerBeforeReferenceNode\"]; })"
         js_getPointerBeforeReferenceNode :: NodeIterator -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/pointerBeforeReferenceNode MDN NodeIterator.pointerBeforeReferenceNode documentation>
+getPointerBeforeReferenceNode :: (MonadDOM m) => NodeIterator -> m Bool
+getPointerBeforeReferenceNode self = liftDOM ((js_getPointerBeforeReferenceNode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.pointerBeforeReferenceNode Mozilla NodeIterator.pointerBeforeReferenceNode documentation> 
-getPointerBeforeReferenceNode ::
-                              (MonadIO m) => NodeIterator -> m Bool
-getPointerBeforeReferenceNode self
-  = liftIO (js_getPointerBeforeReferenceNode self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"whatToShow\"]; })"
         js_getWhatToShow :: NodeIterator -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.whatToShow Mozilla NodeIterator.whatToShow documentation> 
-getWhatToShow :: (MonadIO m) => NodeIterator -> m Word
-getWhatToShow self = liftIO (js_getWhatToShow self)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/whatToShow MDN NodeIterator.whatToShow documentation>
+getWhatToShow :: (MonadDOM m) => NodeIterator -> m Word
+getWhatToShow self = liftDOM ((js_getWhatToShow (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
@@ -1,63 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NodeList
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getLength,
-        getLength, NodeList(..), gTypeNodeList, IsNodeList, toNodeList)
+       (js_item, js_getLength, item, item_, itemUnsafe, itemUnchecked, getLength, NodeList(..), gTypeNodeList, IsNodeList, toNodeList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        NodeList -> Word -> IO (Nullable Node)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
-item ::
-     (MonadIO m, IsNodeList self) => self -> Word -> m (Maybe Node)
-item self index
-  = liftIO (nullableToMaybe <$> (js_item (toNodeList self) index))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: NodeList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/NodeList/item MDN NodeList.item documentation>
+item :: (MonadDOM m, IsNodeList self) => self -> Word -> m (Maybe Node)
+item self index = liftDOM (((js_item ((Types.toNodeList self)) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
-item_ :: (MonadIO m, IsNodeList self) => self -> Word -> m ()
-item_ self index = liftIO (void (js_item (toNodeList self) index))
+-- | <https://developer.mozilla.org/docs/Web/API/NodeList/item MDN NodeList.item documentation>
+item_ :: (MonadDOM m, IsNodeList self) => self -> Word -> m ()
+item_ self index = liftDOM (void ((js_item ((Types.toNodeList self)) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
-itemUnsafe ::
-           (MonadIO m, IsNodeList self, HasCallStack) =>
-             self -> Word -> m Node
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item (toNodeList self) index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeList/item MDN NodeList.item documentation>
+itemUnsafe :: (MonadDOM m, IsNodeList self, HasCallStack) => self -> Word -> m Node
+itemUnsafe self index = liftDOM ((((js_item ((Types.toNodeList self)) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
-itemUnchecked ::
-              (MonadIO m, IsNodeList self) => self -> Word -> m Node
-itemUnchecked self index
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_item (toNodeList self) index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        NodeList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/NodeList/item MDN NodeList.item documentation>
+itemUnchecked :: (MonadDOM m, IsNodeList self) => self -> Word -> m Node
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item ((Types.toNodeList self)) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.length Mozilla NodeList.length documentation> 
-getLength :: (MonadIO m, IsNodeList self) => self -> m Word
-getLength self = liftIO (js_getLength (toNodeList self))
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: NodeList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/NodeList/length MDN NodeList.length documentation>
+getLength :: (MonadDOM m, IsNodeList self) => self -> m Word
+getLength self = liftDOM ((js_getLength ((Types.toNodeList self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs b/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
@@ -1,94 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode
-       (js_getPreviousElementSibling, getPreviousElementSibling,
-        getPreviousElementSiblingUnsafe,
-        getPreviousElementSiblingUnchecked, js_getNextElementSibling,
-        getNextElementSibling, getNextElementSiblingUnsafe,
-        getNextElementSiblingUnchecked, NonDocumentTypeChildNode(..),
-        gTypeNonDocumentTypeChildNode, IsNonDocumentTypeChildNode,
-        toNonDocumentTypeChildNode)
+       (js_getPreviousElementSibling, js_getNextElementSibling, getPreviousElementSibling, getPreviousElementSiblingUnsafe, getPreviousElementSiblingUnchecked, getNextElementSibling, getNextElementSiblingUnsafe, getNextElementSiblingUnchecked, NonDocumentTypeChildNode(..), gTypeNonDocumentTypeChildNode, IsNonDocumentTypeChildNode, toNonDocumentTypeChildNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"previousElementSibling\"]; })"
-        js_getPreviousElementSibling ::
-        NonDocumentTypeChildNode -> IO (Nullable Element)
+        js_getPreviousElementSibling :: NonDocumentTypeChildNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/previousElementSibling MDN NonDocumentTypeChildNode.previousElementSibling documentation>
+getPreviousElementSibling :: (MonadDOM m, IsNonDocumentTypeChildNode self) => self -> m (Maybe Element)
+getPreviousElementSibling self = liftDOM (((js_getPreviousElementSibling ((Types.toNonDocumentTypeChildNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
-getPreviousElementSibling ::
-                          (MonadIO m, IsNonDocumentTypeChildNode self) =>
-                            self -> m (Maybe Element)
-getPreviousElementSibling self
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getPreviousElementSibling (toNonDocumentTypeChildNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/previousElementSibling MDN NonDocumentTypeChildNode.previousElementSibling documentation>
+getPreviousElementSiblingUnsafe :: (MonadDOM m, IsNonDocumentTypeChildNode self, HasCallStack) => self -> m Element
+getPreviousElementSiblingUnsafe self = liftDOM ((((js_getPreviousElementSibling ((Types.toNonDocumentTypeChildNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
-getPreviousElementSiblingUnsafe ::
-                                (MonadIO m, IsNonDocumentTypeChildNode self, HasCallStack) =>
-                                  self -> m Element
-getPreviousElementSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getPreviousElementSibling (toNonDocumentTypeChildNode self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/previousElementSibling MDN NonDocumentTypeChildNode.previousElementSibling documentation>
+getPreviousElementSiblingUnchecked :: (MonadDOM m, IsNonDocumentTypeChildNode self) => self -> m Element
+getPreviousElementSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreviousElementSibling ((Types.toNonDocumentTypeChildNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
-getPreviousElementSiblingUnchecked ::
-                                   (MonadIO m, IsNonDocumentTypeChildNode self) => self -> m Element
-getPreviousElementSiblingUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getPreviousElementSibling (toNonDocumentTypeChildNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"nextElementSibling\"]; })"
-        js_getNextElementSibling ::
-        NonDocumentTypeChildNode -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
-getNextElementSibling ::
-                      (MonadIO m, IsNonDocumentTypeChildNode self) =>
-                        self -> m (Maybe Element)
-getNextElementSibling self
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getNextElementSibling (toNonDocumentTypeChildNode self)))
+        js_getNextElementSibling :: NonDocumentTypeChildNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/nextElementSibling MDN NonDocumentTypeChildNode.nextElementSibling documentation>
+getNextElementSibling :: (MonadDOM m, IsNonDocumentTypeChildNode self) => self -> m (Maybe Element)
+getNextElementSibling self = liftDOM (((js_getNextElementSibling ((Types.toNonDocumentTypeChildNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
-getNextElementSiblingUnsafe ::
-                            (MonadIO m, IsNonDocumentTypeChildNode self, HasCallStack) =>
-                              self -> m Element
-getNextElementSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getNextElementSibling (toNonDocumentTypeChildNode self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/nextElementSibling MDN NonDocumentTypeChildNode.nextElementSibling documentation>
+getNextElementSiblingUnsafe :: (MonadDOM m, IsNonDocumentTypeChildNode self, HasCallStack) => self -> m Element
+getNextElementSiblingUnsafe self = liftDOM ((((js_getNextElementSibling ((Types.toNonDocumentTypeChildNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
-getNextElementSiblingUnchecked ::
-                               (MonadIO m, IsNonDocumentTypeChildNode self) => self -> m Element
-getNextElementSiblingUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getNextElementSibling (toNonDocumentTypeChildNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/nextElementSibling MDN NonDocumentTypeChildNode.nextElementSibling documentation>
+getNextElementSiblingUnchecked :: (MonadDOM m, IsNonDocumentTypeChildNode self) => self -> m Element
+getNextElementSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_getNextElementSibling ((Types.toNonDocumentTypeChildNode self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs b/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
@@ -1,75 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NonElementParentNode
-       (js_getElementById, getElementById, getElementById_,
-        getElementByIdUnsafe, getElementByIdUnchecked,
-        NonElementParentNode(..), gTypeNonElementParentNode,
-        IsNonElementParentNode, toNonElementParentNode)
+       (js_getElementById, getElementById, getElementById_, getElementByIdUnsafe, getElementByIdUnchecked, NonElementParentNode(..), gTypeNonElementParentNode, IsNonElementParentNode, toNonElementParentNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementById\"]($2); })"
-        js_getElementById ::
-        NonElementParentNode -> JSString -> IO (Nullable Element)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
-getElementById ::
-               (MonadIO m, IsNonElementParentNode self, ToJSString elementId) =>
-                 self -> elementId -> m (Maybe Element)
-getElementById self elementId
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getElementById (toNonElementParentNode self)
-            (toJSString elementId)))
+foreign import javascript safe "(($1, $2) => { return $1[\"getElementById\"]($2); })"
+        js_getElementById :: NonElementParentNode -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementById MDN NonElementParentNode.getElementById documentation>
+getElementById :: (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) => self -> elementId -> m (Maybe Element)
+getElementById self elementId = liftDOM (((js_getElementById ((Types.toNonElementParentNode self)) (toJSString elementId)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
-getElementById_ ::
-                (MonadIO m, IsNonElementParentNode self, ToJSString elementId) =>
-                  self -> elementId -> m ()
-getElementById_ self elementId
-  = liftIO
-      (void
-         (js_getElementById (toNonElementParentNode self)
-            (toJSString elementId)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementById MDN NonElementParentNode.getElementById documentation>
+getElementById_ :: (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) => self -> elementId -> m ()
+getElementById_ self elementId = liftDOM (void ((js_getElementById ((Types.toNonElementParentNode self)) (toJSString elementId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
-getElementByIdUnsafe ::
-                     (MonadIO m, IsNonElementParentNode self, ToJSString elementId,
-                      HasCallStack) =>
-                       self -> elementId -> m Element
-getElementByIdUnsafe self elementId
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getElementById (toNonElementParentNode self)
-             (toJSString elementId)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementById MDN NonElementParentNode.getElementById documentation>
+getElementByIdUnsafe :: (MonadDOM m, IsNonElementParentNode self, ToJSString elementId, HasCallStack) => self -> elementId -> m Element
+getElementByIdUnsafe self elementId = liftDOM ((((js_getElementById ((Types.toNonElementParentNode self)) (toJSString elementId)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
-getElementByIdUnchecked ::
-                        (MonadIO m, IsNonElementParentNode self, ToJSString elementId) =>
-                          self -> elementId -> m Element
-getElementByIdUnchecked self elementId
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getElementById (toNonElementParentNode self)
-            (toJSString elementId)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getElementById MDN NonElementParentNode.getElementById documentation>
+getElementByIdUnchecked :: (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) => self -> elementId -> m Element
+getElementByIdUnchecked self elementId = liftDOM ((pFromJSVal <$> (js_getElementById ((Types.toNonElementParentNode self)) (toJSString elementId))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Notification.hs b/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
@@ -1,113 +1,141 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Notification
-       (js_newNotification, newNotification, js_show, show, js_close,
-        close, js_requestPermission, requestPermission, js_getPermission,
-        getPermission, click, error, cLoseEvent, display, showEvent,
-        js_setTag, setTag, js_getTag, getTag, Notification(..),
-        gTypeNotification)
+       (js_newNotification, js_close, js_requestPermission, js_getPermissionStatic, js_getMaxActionsStatic, js_getTitle, js_getDir, js_getLang, js_getBody, js_getNavigate, js_getTag, js_getIcon, js_getSilent, js_getRequireInteraction, js_getData, js_getActions, newNotification, close, requestPermission, requestPermission_, getPermissionStatic, getMaxActionsStatic, getTitle, getDir, getLang, getBody, getNavigate, getTag, getIcon, getSilent, getSilentUnsafe, getSilentUnchecked, getRequireInteraction, getData, getActions, click, showEvent, error, cLoseEvent, Notification(..), gTypeNotification)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"Notification\"]($1,\n$2); })" js_newNotification ::
-        JSString -> Optional NotificationOptions -> IO Notification
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation> 
-newNotification ::
-                (MonadIO m, ToJSString title) =>
-                  title -> Maybe NotificationOptions -> m Notification
-newNotification title options
-  = liftIO
-      (js_newNotification (toJSString title) (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"show\"](); })" js_show ::
-        Notification -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"Notification\"]($1, $2); })"
+        js_newNotification :: JSString -> JSVal -> IO Notification
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/Notification MDN Notification. documentation>
+newNotification :: (MonadDOM m, ToJSString title) => title -> Maybe NotificationOptions -> m Notification
+newNotification title options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newNotification (toJSString title) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.show Mozilla Notification.show documentation> 
-show :: (MonadIO m) => Notification -> m ()
-show self = liftIO (js_show self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        Notification -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: Notification -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/close MDN Notification.close documentation>
+close :: (MonadDOM m) => Notification -> m ()
+close self = liftDOM (void ((js_close (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.close Mozilla Notification.close documentation> 
-close :: (MonadIO m) => Notification -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"Notification\"][\"requestPermission\"]($1); })"
-        js_requestPermission ::
-        Optional (NotificationPermissionCallback callback) -> IO ()
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"Notification\"][\"requestPermission\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestPermission :: JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/requestPermission_static MDN Notification.requestPermission documentation>
+requestPermission :: (MonadDOM m) => Maybe NotificationPermissionCallback -> m NotificationPermission
+requestPermission deprecatedCallback = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal deprecatedCallback) >>= \a1' -> js_requestPermission a1') >>= checkPromiseResult) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.requestPermission Mozilla Notification.requestPermission documentation> 
-requestPermission ::
-                  (MonadIO m, ToJSString callback) =>
-                    Maybe (NotificationPermissionCallback callback) -> m ()
-requestPermission callback
-  = liftIO (js_requestPermission (maybeToOptional callback))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"permission\"]; })"
-        js_getPermission :: Notification -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/requestPermission_static MDN Notification.requestPermission documentation>
+requestPermission_ :: (MonadDOM m) => Maybe NotificationPermissionCallback -> m ()
+requestPermission_ deprecatedCallback = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal deprecatedCallback) >>= \a1' -> js_requestPermission a1') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.permission Mozilla Notification.permission documentation> 
-getPermission ::
-              (MonadIO m, FromJSString result) => Notification -> m result
-getPermission self
-  = liftIO (fromJSString <$> (js_getPermission self))
+foreign import javascript unsafe "(() => { return globalThis[\"Notification\"][\"permission\"]; })"
+        js_getPermissionStatic :: IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/permission_static MDN Notification.permission documentation>
+getPermissionStatic :: (MonadDOM m) => m NotificationPermission
+getPermissionStatic = liftDOM (((js_getPermissionStatic) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclick Mozilla Notification.onclick documentation> 
-click :: EventName Notification MouseEvent
-click = unsafeEventName (toJSString "click")
+foreign import javascript unsafe "(() => { return globalThis[\"Notification\"][\"maxActions\"]; })"
+        js_getMaxActionsStatic :: IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/maxActions_static MDN Notification.maxActions documentation>
+getMaxActionsStatic :: (MonadDOM m) => m Word
+getMaxActionsStatic = liftDOM ((js_getMaxActionsStatic))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onerror Mozilla Notification.onerror documentation> 
-error :: EventName Notification UIEvent
-error = unsafeEventNameAsync (toJSString "error")
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: Notification -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/title MDN Notification.title documentation>
+getTitle :: (MonadDOM m, FromJSString result) => Notification -> m result
+getTitle self = liftDOM ((fromJSString <$> (js_getTitle (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclose Mozilla Notification.onclose documentation> 
-cLoseEvent :: EventName Notification CloseEvent
-cLoseEvent = unsafeEventNameAsync (toJSString "close")
+foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })"
+        js_getDir :: Notification -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/dir MDN Notification.dir documentation>
+getDir :: (MonadDOM m) => Notification -> m NotificationDirection
+getDir self = liftDOM (((js_getDir (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.ondisplay Mozilla Notification.ondisplay documentation> 
-display :: EventName Notification ondisplay
-display = unsafeEventName (toJSString "display")
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })"
+        js_getLang :: Notification -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/lang MDN Notification.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => Notification -> m result
+getLang self = liftDOM ((fromJSString <$> (js_getLang (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onshow Mozilla Notification.onshow documentation> 
-showEvent :: EventName Notification MouseEvent
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })"
+        js_getBody :: Notification -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/body MDN Notification.body documentation>
+getBody :: (MonadDOM m, FromJSString result) => Notification -> m result
+getBody self = liftDOM ((fromJSString <$> (js_getBody (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigate\"]; })"
+        js_getNavigate :: Notification -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/navigate MDN Notification.navigate documentation>
+getNavigate :: (MonadDOM m, FromJSString result) => Notification -> m result
+getNavigate self = liftDOM ((fromJSString <$> (js_getNavigate (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tag\"]; })"
+        js_getTag :: Notification -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/tag MDN Notification.tag documentation>
+getTag :: (MonadDOM m, FromJSString result) => Notification -> m result
+getTag self = liftDOM ((fromJSString <$> (js_getTag (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"icon\"]; })"
+        js_getIcon :: Notification -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/icon MDN Notification.icon documentation>
+getIcon :: (MonadDOM m, FromJSString result) => Notification -> m result
+getIcon self = liftDOM ((fromJSString <$> (js_getIcon (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"silent\"]; })"
+        js_getSilent :: Notification -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/silent MDN Notification.silent documentation>
+getSilent :: (MonadDOM m) => Notification -> m (Maybe Bool)
+getSilent self = liftDOM (((js_getSilent (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/silent MDN Notification.silent documentation>
+getSilentUnsafe :: (MonadDOM m, HasCallStack) => Notification -> m Bool
+getSilentUnsafe self = liftDOM ((((js_getSilent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/silent MDN Notification.silent documentation>
+getSilentUnchecked :: (MonadDOM m) => Notification -> m Bool
+getSilentUnchecked self = liftDOM ((pFromJSVal <$> (js_getSilent (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requireInteraction\"]; })"
+        js_getRequireInteraction :: Notification -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/requireInteraction MDN Notification.requireInteraction documentation>
+getRequireInteraction :: (MonadDOM m) => Notification -> m Bool
+getRequireInteraction self = liftDOM ((js_getRequireInteraction (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: Notification -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/data MDN Notification.data documentation>
+getData :: (MonadDOM m) => Notification -> m JSVal
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"actions\"]; })"
+        js_getActions :: Notification -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/actions MDN Notification.actions documentation>
+getActions :: (MonadDOM m) => Notification -> m [NotificationAction]
+getActions self = liftDOM (((js_getActions (self)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notification-onclick click event>
+click :: EventName Notification Event
+click = unsafeEventName (toJSString "click")
+
+-- | <https://notifications.spec.whatwg.org/#dom-notification-onshow show event>
+showEvent :: EventName Notification Event
 showEvent = unsafeEventName (toJSString "show")
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"tag\"] = $2; })" js_setTag ::
-        Notification -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.tag Mozilla Notification.tag documentation> 
-setTag ::
-       (MonadIO m, ToJSString val) => Notification -> val -> m ()
-setTag self val = liftIO (js_setTag self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tag\"]; })" js_getTag ::
-        Notification -> IO JSString
+-- | <https://notifications.spec.whatwg.org/#dom-notification-onerror error event>
+error :: EventName Notification Event
+error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.tag Mozilla Notification.tag documentation> 
-getTag ::
-       (MonadIO m, FromJSString result) => Notification -> m result
-getTag self = liftIO (fromJSString <$> (js_getTag self))
+-- | <https://notifications.spec.whatwg.org/#dom-notification-onclose close event>
+cLoseEvent :: EventName Notification Event
+cLoseEvent = unsafeEventNameAsync (toJSString "close")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationAction.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationAction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationAction.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NotificationAction
+       (js_newNotificationAction, js_setAction, js_getAction, js_setTitle, js_getTitle, js_setNavigate, js_getNavigate, js_setIcon, js_getIcon, newNotificationAction, setAction, getAction, setTitle, getTitle, setNavigate, getNavigate, getNavigateUnsafe, getNavigateUnchecked, setIcon, getIcon, getIconUnsafe, getIconUnchecked, NotificationAction(..), gTypeNotificationAction)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"action\": $1, \"title\": $2}); })"
+        js_newNotificationAction :: JSString -> JSString -> IO NotificationAction
+-- | <https://notifications.spec.whatwg.org/#dictdef-notificationaction NotificationAction specification>
+newNotificationAction :: (MonadDOM m, ToJSString action, ToJSString title) => action -> title -> m NotificationAction
+newNotificationAction action title = liftDOM ((js_newNotificationAction (toJSString action) (toJSString title)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"action\"] = $2; })"
+        js_setAction :: NotificationAction -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-action NotificationAction.action specification>
+setAction :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setAction self val = liftDOM (void ((js_setAction (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"action\"]; })"
+        js_getAction :: NotificationAction -> IO JSString
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-action NotificationAction.action specification>
+getAction :: (MonadDOM m, FromJSString result) => NotificationAction -> m result
+getAction self = liftDOM ((fromJSString <$> (js_getAction (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: NotificationAction -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-title NotificationAction.title specification>
+setTitle :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: NotificationAction -> IO JSString
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-title NotificationAction.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => NotificationAction -> m result
+getTitle self = liftDOM ((fromJSString <$> (js_getTitle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"navigate\"] = $2; })"
+        js_setNavigate :: NotificationAction -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-navigate NotificationAction.navigate specification>
+setNavigate :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setNavigate self val = liftDOM (void ((js_setNavigate (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigate\"]; })"
+        js_getNavigate :: NotificationAction -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-navigate NotificationAction.navigate specification>
+getNavigate :: (MonadDOM m, FromJSString result) => NotificationAction -> m (Maybe result)
+getNavigate self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNavigate (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-navigate NotificationAction.navigate specification>
+getNavigateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationAction -> m result
+getNavigateUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNavigate (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-navigate NotificationAction.navigate specification>
+getNavigateUnchecked :: (MonadDOM m, FromJSString result) => NotificationAction -> m result
+getNavigateUnchecked self = liftDOM ((pFromJSVal <$> (js_getNavigate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"icon\"] = $2; })"
+        js_setIcon :: NotificationAction -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-icon NotificationAction.icon specification>
+setIcon :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setIcon self val = liftDOM (void ((js_setIcon (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"icon\"]; })"
+        js_getIcon :: NotificationAction -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-icon NotificationAction.icon specification>
+getIcon :: (MonadDOM m, FromJSString result) => NotificationAction -> m (Maybe result)
+getIcon self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getIcon (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-icon NotificationAction.icon specification>
+getIconUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationAction -> m result
+getIconUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getIcon (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-icon NotificationAction.icon specification>
+getIconUnchecked :: (MonadDOM m, FromJSString result) => NotificationAction -> m result
+getIconUnchecked self = liftDOM ((pFromJSVal <$> (js_getIcon (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NotificationEvent
+       (js_newNotificationEvent, js_getNotification, js_getAction, newNotificationEvent, getNotification, getAction, NotificationEvent(..), gTypeNotificationEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"NotificationEvent\"]($1, $2); })"
+        js_newNotificationEvent :: JSString -> NotificationEventInit -> IO NotificationEvent
+-- | <https://developer.mozilla.org/docs/Web/API/NotificationEvent/NotificationEvent MDN NotificationEvent. documentation>
+newNotificationEvent :: (MonadDOM m, ToJSString type') => type' -> NotificationEventInit -> m NotificationEvent
+newNotificationEvent type' eventInitDict = liftDOM ((js_newNotificationEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"notification\"]; })"
+        js_getNotification :: NotificationEvent -> IO Notification
+-- | <https://developer.mozilla.org/docs/Web/API/NotificationEvent/notification MDN NotificationEvent.notification documentation>
+getNotification :: (MonadDOM m) => NotificationEvent -> m Notification
+getNotification self = liftDOM ((js_getNotification (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"action\"]; })"
+        js_getAction :: NotificationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/NotificationEvent/action MDN NotificationEvent.action documentation>
+getAction :: (MonadDOM m, FromJSString result) => NotificationEvent -> m result
+getAction self = liftDOM ((fromJSString <$> (js_getAction (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NotificationEventInit
+       (js_newNotificationEventInit, js_setNotification, js_getNotification, js_setAction, js_getAction, newNotificationEventInit, setNotification, getNotification, setAction, getAction, getActionUnsafe, getActionUnchecked, NotificationEventInit(..), gTypeNotificationEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"notification\": $1}); })"
+        js_newNotificationEventInit :: Notification -> IO NotificationEventInit
+-- | <https://notifications.spec.whatwg.org/#dictdef-notificationeventinit NotificationEventInit specification>
+newNotificationEventInit :: (MonadDOM m) => Notification -> m NotificationEventInit
+newNotificationEventInit notification = liftDOM ((js_newNotificationEventInit (notification)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"notification\"] = $2; })"
+        js_setNotification :: NotificationEventInit -> Notification -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-notification NotificationEventInit.notification specification>
+setNotification :: (MonadDOM m) => NotificationEventInit -> Notification -> m ()
+setNotification self val = liftDOM (void ((js_setNotification (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"notification\"]; })"
+        js_getNotification :: NotificationEventInit -> IO Notification
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-notification NotificationEventInit.notification specification>
+getNotification :: (MonadDOM m) => NotificationEventInit -> m Notification
+getNotification self = liftDOM ((js_getNotification (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"action\"] = $2; })"
+        js_setAction :: NotificationEventInit -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-action NotificationEventInit.action specification>
+setAction :: (MonadDOM m, ToJSString val) => NotificationEventInit -> val -> m ()
+setAction self val = liftDOM (void ((js_setAction (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"action\"]; })"
+        js_getAction :: NotificationEventInit -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-action NotificationEventInit.action specification>
+getAction :: (MonadDOM m, FromJSString result) => NotificationEventInit -> m (Maybe result)
+getAction self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAction (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-action NotificationEventInit.action specification>
+getActionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationEventInit -> m result
+getActionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAction (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-action NotificationEventInit.action specification>
+getActionUnchecked :: (MonadDOM m, FromJSString result) => NotificationEventInit -> m result
+getActionUnchecked self = liftDOM ((pFromJSVal <$> (js_getAction (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationOptions.hs
@@ -0,0 +1,295 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.NotificationOptions
+       (js_newNotificationOptions, js_setDir, js_getDir, js_setLang, js_getLang, js_setBody, js_getBody, js_setNavigate, js_getNavigate, js_setTag, js_getTag, js_setImage, js_getImage, js_setIcon, js_getIcon, js_setBadge, js_getBadge, js_setTimestamp, js_getTimestamp, js_setRenotify, js_getRenotify, js_setSilent, js_getSilent, js_setRequireInteraction, js_getRequireInteraction, js_setData, js_getData, js_setActions, js_getActions, newNotificationOptions, setDir, getDir, getDirUnsafe, getDirUnchecked, setLang, getLang, getLangUnsafe, getLangUnchecked, setBody, getBody, getBodyUnsafe, getBodyUnchecked, setNavigate, getNavigate, getNavigateUnsafe, getNavigateUnchecked, setTag, getTag, getTagUnsafe, getTagUnchecked, setImage, getImage, getImageUnsafe, getImageUnchecked, setIcon, getIcon, getIconUnsafe, getIconUnchecked, setBadge, getBadge, getBadgeUnsafe, getBadgeUnchecked, setTimestamp, getTimestamp, getTimestampUnsafe, getTimestampUnchecked, setRenotify, getRenotify, getRenotifyUnsafe, getRenotifyUnchecked, setSilent, getSilent, getSilentUnsafe, getSilentUnchecked, setRequireInteraction, getRequireInteraction, getRequireInteractionUnsafe, getRequireInteractionUnchecked, setData, getData, setActions, getActions, getActionsUnsafe, getActionsUnchecked, NotificationOptions(..), gTypeNotificationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newNotificationOptions :: IO NotificationOptions
+-- | <https://notifications.spec.whatwg.org/#dictdef-notificationoptions NotificationOptions specification>
+newNotificationOptions :: (MonadDOM m) => m NotificationOptions
+newNotificationOptions = liftDOM ((js_newNotificationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dir\"] = $2; })"
+        js_setDir :: NotificationOptions -> JSVal -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-dir NotificationOptions.dir specification>
+setDir :: (MonadDOM m) => NotificationOptions -> NotificationDirection -> m ()
+setDir self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDir (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })"
+        js_getDir :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-dir NotificationOptions.dir specification>
+getDir :: (MonadDOM m) => NotificationOptions -> m (Maybe NotificationDirection)
+getDir self = liftDOM (((js_getDir (self)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-dir NotificationOptions.dir specification>
+getDirUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m NotificationDirection
+getDirUnsafe self = liftDOM ((((js_getDir (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-dir NotificationOptions.dir specification>
+getDirUnchecked :: (MonadDOM m) => NotificationOptions -> m NotificationDirection
+getDirUnchecked self = liftDOM ((pFromJSVal <$> (js_getDir (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lang\"] = $2; })"
+        js_setLang :: NotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-lang NotificationOptions.lang specification>
+setLang :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setLang self val = liftDOM (void ((js_setLang (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })"
+        js_getLang :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-lang NotificationOptions.lang specification>
+getLang :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getLang self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getLang (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-lang NotificationOptions.lang specification>
+getLangUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getLangUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getLang (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-lang NotificationOptions.lang specification>
+getLangUnchecked :: (MonadDOM m, FromJSString result) => NotificationOptions -> m result
+getLangUnchecked self = liftDOM ((pFromJSVal <$> (js_getLang (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"body\"] = $2; })"
+        js_setBody :: NotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-body NotificationOptions.body specification>
+setBody :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setBody self val = liftDOM (void ((js_setBody (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })"
+        js_getBody :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-body NotificationOptions.body specification>
+getBody :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getBody self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getBody (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-body NotificationOptions.body specification>
+getBodyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getBodyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getBody (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-body NotificationOptions.body specification>
+getBodyUnchecked :: (MonadDOM m, FromJSString result) => NotificationOptions -> m result
+getBodyUnchecked self = liftDOM ((pFromJSVal <$> (js_getBody (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"navigate\"] = $2; })"
+        js_setNavigate :: NotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-navigate NotificationOptions.navigate specification>
+setNavigate :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setNavigate self val = liftDOM (void ((js_setNavigate (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigate\"]; })"
+        js_getNavigate :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-navigate NotificationOptions.navigate specification>
+getNavigate :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getNavigate self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNavigate (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-navigate NotificationOptions.navigate specification>
+getNavigateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getNavigateUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNavigate (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-navigate NotificationOptions.navigate specification>
+getNavigateUnchecked :: (MonadDOM m, FromJSString result) => NotificationOptions -> m result
+getNavigateUnchecked self = liftDOM ((pFromJSVal <$> (js_getNavigate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tag\"] = $2; })"
+        js_setTag :: NotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-tag NotificationOptions.tag specification>
+setTag :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setTag self val = liftDOM (void ((js_setTag (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tag\"]; })"
+        js_getTag :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-tag NotificationOptions.tag specification>
+getTag :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getTag self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTag (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-tag NotificationOptions.tag specification>
+getTagUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getTagUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTag (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-tag NotificationOptions.tag specification>
+getTagUnchecked :: (MonadDOM m, FromJSString result) => NotificationOptions -> m result
+getTagUnchecked self = liftDOM ((pFromJSVal <$> (js_getTag (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"image\"] = $2; })"
+        js_setImage :: NotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-image NotificationOptions.image specification>
+setImage :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setImage self val = liftDOM (void ((js_setImage (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"image\"]; })"
+        js_getImage :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-image NotificationOptions.image specification>
+getImage :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getImage self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getImage (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-image NotificationOptions.image specification>
+getImageUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getImageUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getImage (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-image NotificationOptions.image specification>
+getImageUnchecked :: (MonadDOM m, FromJSString result) => NotificationOptions -> m result
+getImageUnchecked self = liftDOM ((pFromJSVal <$> (js_getImage (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"icon\"] = $2; })"
+        js_setIcon :: NotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-icon NotificationOptions.icon specification>
+setIcon :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setIcon self val = liftDOM (void ((js_setIcon (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"icon\"]; })"
+        js_getIcon :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-icon NotificationOptions.icon specification>
+getIcon :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getIcon self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getIcon (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-icon NotificationOptions.icon specification>
+getIconUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getIconUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getIcon (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-icon NotificationOptions.icon specification>
+getIconUnchecked :: (MonadDOM m, FromJSString result) => NotificationOptions -> m result
+getIconUnchecked self = liftDOM ((pFromJSVal <$> (js_getIcon (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"badge\"] = $2; })"
+        js_setBadge :: NotificationOptions -> JSString -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-badge NotificationOptions.badge specification>
+setBadge :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setBadge self val = liftDOM (void ((js_setBadge (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"badge\"]; })"
+        js_getBadge :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-badge NotificationOptions.badge specification>
+getBadge :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getBadge self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getBadge (self))))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-badge NotificationOptions.badge specification>
+getBadgeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getBadgeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getBadge (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-badge NotificationOptions.badge specification>
+getBadgeUnchecked :: (MonadDOM m, FromJSString result) => NotificationOptions -> m result
+getBadgeUnchecked self = liftDOM ((pFromJSVal <$> (js_getBadge (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: NotificationOptions -> JSVal -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-timestamp NotificationOptions.timestamp specification>
+setTimestamp :: (MonadDOM m) => NotificationOptions -> Word53 -> m ()
+setTimestamp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimestamp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-timestamp NotificationOptions.timestamp specification>
+getTimestamp :: (MonadDOM m) => NotificationOptions -> m (Maybe Word53)
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-timestamp NotificationOptions.timestamp specification>
+getTimestampUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Word53
+getTimestampUnsafe self = liftDOM ((((js_getTimestamp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-timestamp NotificationOptions.timestamp specification>
+getTimestampUnchecked :: (MonadDOM m) => NotificationOptions -> m Word53
+getTimestampUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimestamp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"renotify\"] = $2; })"
+        js_setRenotify :: NotificationOptions -> Bool -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-renotify NotificationOptions.renotify specification>
+setRenotify :: (MonadDOM m) => NotificationOptions -> Bool -> m ()
+setRenotify self val = liftDOM (void ((js_setRenotify (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"renotify\"]; })"
+        js_getRenotify :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-renotify NotificationOptions.renotify specification>
+getRenotify :: (MonadDOM m) => NotificationOptions -> m (Maybe Bool)
+getRenotify self = liftDOM (((js_getRenotify (self)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-renotify NotificationOptions.renotify specification>
+getRenotifyUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Bool
+getRenotifyUnsafe self = liftDOM ((((js_getRenotify (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-renotify NotificationOptions.renotify specification>
+getRenotifyUnchecked :: (MonadDOM m) => NotificationOptions -> m Bool
+getRenotifyUnchecked self = liftDOM ((pFromJSVal <$> (js_getRenotify (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"silent\"] = $2; })"
+        js_setSilent :: NotificationOptions -> JSVal -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-silent NotificationOptions.silent specification>
+setSilent :: (MonadDOM m) => NotificationOptions -> Maybe Bool -> m ()
+setSilent self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSilent (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"silent\"]; })"
+        js_getSilent :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-silent NotificationOptions.silent specification>
+getSilent :: (MonadDOM m) => NotificationOptions -> m (Maybe Bool)
+getSilent self = liftDOM (((js_getSilent (self)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-silent NotificationOptions.silent specification>
+getSilentUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Bool
+getSilentUnsafe self = liftDOM ((((js_getSilent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-silent NotificationOptions.silent specification>
+getSilentUnchecked :: (MonadDOM m) => NotificationOptions -> m Bool
+getSilentUnchecked self = liftDOM ((pFromJSVal <$> (js_getSilent (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requireInteraction\"] = $2; })"
+        js_setRequireInteraction :: NotificationOptions -> Bool -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-requireinteraction NotificationOptions.requireInteraction specification>
+setRequireInteraction :: (MonadDOM m) => NotificationOptions -> Bool -> m ()
+setRequireInteraction self val = liftDOM (void ((js_setRequireInteraction (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requireInteraction\"]; })"
+        js_getRequireInteraction :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-requireinteraction NotificationOptions.requireInteraction specification>
+getRequireInteraction :: (MonadDOM m) => NotificationOptions -> m (Maybe Bool)
+getRequireInteraction self = liftDOM (((js_getRequireInteraction (self)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-requireinteraction NotificationOptions.requireInteraction specification>
+getRequireInteractionUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Bool
+getRequireInteractionUnsafe self = liftDOM ((((js_getRequireInteraction (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-requireinteraction NotificationOptions.requireInteraction specification>
+getRequireInteractionUnchecked :: (MonadDOM m) => NotificationOptions -> m Bool
+getRequireInteractionUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequireInteraction (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: NotificationOptions -> JSVal -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-data NotificationOptions.data specification>
+setData :: (MonadDOM m) => NotificationOptions -> JSVal -> m ()
+setData self val = liftDOM (void ((js_setData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-data NotificationOptions.data specification>
+getData :: (MonadDOM m) => NotificationOptions -> m JSVal
+getData self = liftDOM ((js_getData (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"actions\"] = $2; })"
+        js_setActions :: NotificationOptions -> JSVal -> IO ()
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-actions NotificationOptions.actions specification>
+setActions :: (MonadDOM m) => NotificationOptions -> [NotificationAction] -> m ()
+setActions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setActions (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"actions\"]; })"
+        js_getActions :: NotificationOptions -> IO JSVal
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-actions NotificationOptions.actions specification>
+getActions :: (MonadDOM m) => NotificationOptions -> m (Maybe [NotificationAction])
+getActions self = liftDOM (((js_getActions (self)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-actions NotificationOptions.actions specification>
+getActionsUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m [NotificationAction]
+getActionsUnsafe self = liftDOM ((((js_getActions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-actions NotificationOptions.actions specification>
+getActionsUnchecked :: (MonadDOM m) => NotificationOptions -> m [NotificationAction]
+getActionsUnchecked self = liftDOM (((js_getActions (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
@@ -1,68 +1,29 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback
-       (newNotificationPermissionCallback,
-        newNotificationPermissionCallbackSync,
-        newNotificationPermissionCallbackAsync,
-        NotificationPermissionCallback)
+       (newNotificationPermissionCallback, newNotificationPermissionCallbackSync, newNotificationPermissionCallbackAsync, NotificationPermissionCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
-newNotificationPermissionCallback ::
-                                  (MonadIO m, FromJSString permission) =>
-                                    (permission -> IO ()) ->
-                                      m (NotificationPermissionCallback permission)
-newNotificationPermissionCallback callback
-  = liftIO
-      (NotificationPermissionCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ permission ->
-              fromJSValUnchecked permission >>=
-                \ permission' -> callback permission'))
+newNotificationPermissionCallback :: (MonadDOM m) => (NotificationPermission -> IO ()) -> m NotificationPermissionCallback
+newNotificationPermissionCallback callback = liftDOM ((NotificationPermissionCallback . coerce) <$> syncCallback1 ContinueAsync (\ permission -> do
+          permission' <- fromJSValUnchecked permission
+          callback permission'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
-newNotificationPermissionCallbackSync ::
-                                      (MonadIO m, FromJSString permission) =>
-                                        (permission -> IO ()) ->
-                                          m (NotificationPermissionCallback permission)
-newNotificationPermissionCallbackSync callback
-  = liftIO
-      (NotificationPermissionCallback <$>
-         syncCallback1 ContinueAsync
-           (\ permission ->
-              fromJSValUnchecked permission >>=
-                \ permission' -> callback permission'))
+newNotificationPermissionCallbackSync :: (MonadDOM m) => (NotificationPermission -> IO ()) -> m NotificationPermissionCallback
+newNotificationPermissionCallbackSync callback = liftDOM ((NotificationPermissionCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ permission -> do
+          permission' <- fromJSValUnchecked permission
+          callback permission'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
-newNotificationPermissionCallbackAsync ::
-                                       (MonadIO m, FromJSString permission) =>
-                                         (permission -> IO ()) ->
-                                           m (NotificationPermissionCallback permission)
-newNotificationPermissionCallbackAsync callback
-  = liftIO
-      (NotificationPermissionCallback <$>
-         asyncCallback1
-           (\ permission ->
-              fromJSValUnchecked permission >>=
-                \ permission' -> callback permission'))
+newNotificationPermissionCallbackAsync :: (MonadDOM m) => (NotificationPermission -> IO ()) -> m NotificationPermissionCallback
+newNotificationPermissionCallbackAsync callback = liftDOM ((NotificationPermissionCallback . coerce) <$> asyncCallback1 (\ permission -> do
+          permission' <- fromJSValUnchecked permission
+          callback permission'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs b/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives
-       (pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
-        OESStandardDerivatives(..), gTypeOESStandardDerivatives)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs b/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat
-       (pattern HALF_FLOAT_OES, OESTextureHalfFloat(..),
-        gTypeOESTextureHalfFloat)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern HALF_FLOAT_OES = 36193
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs b/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs
+++ /dev/null
@@ -1,90 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject
-       (js_createVertexArrayOES, createVertexArrayOES,
-        createVertexArrayOES_, js_deleteVertexArrayOES,
-        deleteVertexArrayOES, js_isVertexArrayOES, isVertexArrayOES,
-        isVertexArrayOES_, js_bindVertexArrayOES, bindVertexArrayOES,
-        pattern VERTEX_ARRAY_BINDING_OES, OESVertexArrayObject(..),
-        gTypeOESVertexArrayObject)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createVertexArrayOES\"](); })"
-        js_createVertexArrayOES ::
-        OESVertexArrayObject -> IO WebGLVertexArrayObjectOES
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
-createVertexArrayOES ::
-                     (MonadIO m) => OESVertexArrayObject -> m WebGLVertexArrayObjectOES
-createVertexArrayOES self = liftIO (js_createVertexArrayOES self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
-createVertexArrayOES_ ::
-                      (MonadIO m) => OESVertexArrayObject -> m ()
-createVertexArrayOES_ self
-  = liftIO (void (js_createVertexArrayOES self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteVertexArrayOES\"]($2); })"
-        js_deleteVertexArrayOES ::
-        OESVertexArrayObject -> Optional WebGLVertexArrayObjectOES -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.deleteVertexArrayOES Mozilla OESVertexArrayObject.deleteVertexArrayOES documentation> 
-deleteVertexArrayOES ::
-                     (MonadIO m) =>
-                       OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
-deleteVertexArrayOES self arrayObject
-  = liftIO
-      (js_deleteVertexArrayOES self (maybeToOptional arrayObject))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"isVertexArrayOES\"]($2) ? 1 : 0); })" js_isVertexArrayOES ::
-        OESVertexArrayObject ->
-          Optional WebGLVertexArrayObjectOES -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.isVertexArrayOES Mozilla OESVertexArrayObject.isVertexArrayOES documentation> 
-isVertexArrayOES ::
-                 (MonadIO m) =>
-                   OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m Bool
-isVertexArrayOES self arrayObject
-  = liftIO (js_isVertexArrayOES self (maybeToOptional arrayObject))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.isVertexArrayOES Mozilla OESVertexArrayObject.isVertexArrayOES documentation> 
-isVertexArrayOES_ ::
-                  (MonadIO m) =>
-                    OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
-isVertexArrayOES_ self arrayObject
-  = liftIO
-      (void (js_isVertexArrayOES self (maybeToOptional arrayObject)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"bindVertexArrayOES\"]($2); })"
-        js_bindVertexArrayOES ::
-        OESVertexArrayObject -> Optional WebGLVertexArrayObjectOES -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.bindVertexArrayOES Mozilla OESVertexArrayObject.bindVertexArrayOES documentation> 
-bindVertexArrayOES ::
-                   (MonadIO m) =>
-                     OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
-bindVertexArrayOES self arrayObject
-  = liftIO (js_bindVertexArrayOES self (maybeToOptional arrayObject))
-pattern VERTEX_ARRAY_BINDING_OES = 34229
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_draw_buffers_indexed.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_draw_buffers_indexed.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_draw_buffers_indexed.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_draw_buffers_indexed (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_draw_buffers_indexed
+       (js_blendEquationSeparateiOES, js_blendEquationiOES, js_blendFuncSeparateiOES, js_blendFunciOES, js_colorMaskiOES, js_disableiOES, js_enableiOES, blendEquationSeparateiOES, blendEquationiOES, blendFuncSeparateiOES, blendFunciOES, colorMaskiOES, disableiOES, enableiOES, OES_draw_buffers_indexed(..), gTypeOES_draw_buffers_indexed)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"blendEquationSeparateiOES\"]($2, $3, $4); })"
+        js_blendEquationSeparateiOES :: OES_draw_buffers_indexed -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_draw_buffers_indexed/blendEquationSeparateiOES MDN OES_draw_buffers_indexed.blendEquationSeparateiOES documentation>
+blendEquationSeparateiOES :: (MonadDOM m) => OES_draw_buffers_indexed -> Word -> Word -> Word -> m ()
+blendEquationSeparateiOES self buf modeRGB modeAlpha = liftDOM (void ((js_blendEquationSeparateiOES (self) (buf) (modeRGB) (modeAlpha))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"blendEquationiOES\"]($2, $3); })"
+        js_blendEquationiOES :: OES_draw_buffers_indexed -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_draw_buffers_indexed/blendEquationiOES MDN OES_draw_buffers_indexed.blendEquationiOES documentation>
+blendEquationiOES :: (MonadDOM m) => OES_draw_buffers_indexed -> Word -> Word -> m ()
+blendEquationiOES self buf mode = liftDOM (void ((js_blendEquationiOES (self) (buf) (mode))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"blendFuncSeparateiOES\"]($2, $3, $4, $5, $6); })"
+        js_blendFuncSeparateiOES :: OES_draw_buffers_indexed -> Word -> Word -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_draw_buffers_indexed/blendFuncSeparateiOES MDN OES_draw_buffers_indexed.blendFuncSeparateiOES documentation>
+blendFuncSeparateiOES :: (MonadDOM m) => OES_draw_buffers_indexed -> Word -> Word -> Word -> Word -> Word -> m ()
+blendFuncSeparateiOES self buf srcRGB dstRGB srcAlpha dstAlpha = liftDOM (void ((js_blendFuncSeparateiOES (self) (buf) (srcRGB) (dstRGB) (srcAlpha) (dstAlpha))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"blendFunciOES\"]($2, $3, $4); })"
+        js_blendFunciOES :: OES_draw_buffers_indexed -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_draw_buffers_indexed/blendFunciOES MDN OES_draw_buffers_indexed.blendFunciOES documentation>
+blendFunciOES :: (MonadDOM m) => OES_draw_buffers_indexed -> Word -> Word -> Word -> m ()
+blendFunciOES self buf src dst = liftDOM (void ((js_blendFunciOES (self) (buf) (src) (dst))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"colorMaskiOES\"]($2, $3, $4, $5, $6); })"
+        js_colorMaskiOES :: OES_draw_buffers_indexed -> Word -> Bool -> Bool -> Bool -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_draw_buffers_indexed/colorMaskiOES MDN OES_draw_buffers_indexed.colorMaskiOES documentation>
+colorMaskiOES :: (MonadDOM m) => OES_draw_buffers_indexed -> Word -> Bool -> Bool -> Bool -> Bool -> m ()
+colorMaskiOES self buf r g b a = liftDOM (void ((js_colorMaskiOES (self) (buf) (r) (g) (b) (a))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"disableiOES\"]($2, $3); })"
+        js_disableiOES :: OES_draw_buffers_indexed -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_draw_buffers_indexed/disableiOES MDN OES_draw_buffers_indexed.disableiOES documentation>
+disableiOES :: (MonadDOM m) => OES_draw_buffers_indexed -> Word -> Word -> m ()
+disableiOES self target index = liftDOM (void ((js_disableiOES (self) (target) (index))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"enableiOES\"]($2, $3); })"
+        js_enableiOES :: OES_draw_buffers_indexed -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_draw_buffers_indexed/enableiOES MDN OES_draw_buffers_indexed.enableiOES documentation>
+enableiOES :: (MonadDOM m) => OES_draw_buffers_indexed -> Word -> Word -> m ()
+enableiOES self target index = liftDOM (void ((js_enableiOES (self) (target) (index))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_element_index_uint.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_element_index_uint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_element_index_uint.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_element_index_uint (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_element_index_uint
+       (OES_element_index_uint(..), gTypeOES_element_index_uint)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_fbo_render_mipmap.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_fbo_render_mipmap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_fbo_render_mipmap.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_fbo_render_mipmap (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_fbo_render_mipmap
+       (OES_fbo_render_mipmap(..), gTypeOES_fbo_render_mipmap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_standard_derivatives.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_standard_derivatives.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_standard_derivatives.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_standard_derivatives (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_standard_derivatives
+       (pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES, OES_standard_derivatives(..), gTypeOES_standard_derivatives)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_texture_float.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_float.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_float.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_texture_float (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_texture_float
+       (OES_texture_float(..), gTypeOES_texture_float)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_texture_float_linear.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_float_linear.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_float_linear.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_texture_float_linear (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_texture_float_linear
+       (OES_texture_float_linear(..), gTypeOES_texture_float_linear)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_texture_half_float.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_half_float.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_half_float.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_texture_half_float (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_texture_half_float
+       (pattern HALF_FLOAT_OES, OES_texture_half_float(..), gTypeOES_texture_half_float)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern HALF_FLOAT_OES = 0x8D61
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_texture_half_float_linear.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_half_float_linear.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_texture_half_float_linear.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_texture_half_float_linear (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_texture_half_float_linear
+       (OES_texture_half_float_linear(..), gTypeOES_texture_half_float_linear)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OES_vertex_array_object.hs b/src/GHCJS/DOM/JSFFI/Generated/OES_vertex_array_object.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OES_vertex_array_object.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_vertex_array_object (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OES_vertex_array_object
+       (js_bindVertexArrayOES, js_createVertexArrayOES, js_deleteVertexArrayOES, js_isVertexArrayOES, bindVertexArrayOES, createVertexArrayOES, createVertexArrayOES_, deleteVertexArrayOES, isVertexArrayOES, isVertexArrayOES_, pattern VERTEX_ARRAY_BINDING_OES, OES_vertex_array_object(..), gTypeOES_vertex_array_object)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"bindVertexArrayOES\"]($2); })"
+        js_bindVertexArrayOES :: OES_vertex_array_object -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_vertex_array_object/bindVertexArrayOES MDN OES_vertex_array_object.bindVertexArrayOES documentation>
+bindVertexArrayOES :: (MonadDOM m) => OES_vertex_array_object -> Maybe WebGLVertexArrayObjectOES -> m ()
+bindVertexArrayOES self arrayObject = liftDOM (void (((toJSVal arrayObject) >>= \a2' -> js_bindVertexArrayOES (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"createVertexArrayOES\"](); })"
+        js_createVertexArrayOES :: OES_vertex_array_object -> IO WebGLVertexArrayObjectOES
+-- | <https://developer.mozilla.org/docs/Web/API/OES_vertex_array_object/createVertexArrayOES MDN OES_vertex_array_object.createVertexArrayOES documentation>
+createVertexArrayOES :: (MonadDOM m) => OES_vertex_array_object -> m WebGLVertexArrayObjectOES
+createVertexArrayOES self = liftDOM ((js_createVertexArrayOES (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OES_vertex_array_object/createVertexArrayOES MDN OES_vertex_array_object.createVertexArrayOES documentation>
+createVertexArrayOES_ :: (MonadDOM m) => OES_vertex_array_object -> m ()
+createVertexArrayOES_ self = liftDOM (void ((js_createVertexArrayOES (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteVertexArrayOES\"]($2); })"
+        js_deleteVertexArrayOES :: OES_vertex_array_object -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OES_vertex_array_object/deleteVertexArrayOES MDN OES_vertex_array_object.deleteVertexArrayOES documentation>
+deleteVertexArrayOES :: (MonadDOM m) => OES_vertex_array_object -> Maybe WebGLVertexArrayObjectOES -> m ()
+deleteVertexArrayOES self arrayObject = liftDOM (void (((toJSVal arrayObject) >>= \a2' -> js_deleteVertexArrayOES (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isVertexArrayOES\"]($2); })"
+        js_isVertexArrayOES :: OES_vertex_array_object -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/OES_vertex_array_object/isVertexArrayOES MDN OES_vertex_array_object.isVertexArrayOES documentation>
+isVertexArrayOES :: (MonadDOM m) => OES_vertex_array_object -> Maybe WebGLVertexArrayObjectOES -> m Bool
+isVertexArrayOES self arrayObject = liftDOM (((toJSVal arrayObject) >>= \a2' -> js_isVertexArrayOES (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OES_vertex_array_object/isVertexArrayOES MDN OES_vertex_array_object.isVertexArrayOES documentation>
+isVertexArrayOES_ :: (MonadDOM m) => OES_vertex_array_object -> Maybe WebGLVertexArrayObjectOES -> m ()
+isVertexArrayOES_ self arrayObject = liftDOM (void (((toJSVal arrayObject) >>= \a2' -> js_isVertexArrayOES (self) a2')))
+
+pattern VERTEX_ARRAY_BINDING_OES = 0x85B5
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OTPCredentialRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/OTPCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OTPCredentialRequestOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-otp (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OTPCredentialRequestOptions
+       (js_newOTPCredentialRequestOptions, js_setTransport, js_getTransport, newOTPCredentialRequestOptions, setTransport, getTransport, getTransportUnsafe, getTransportUnchecked, OTPCredentialRequestOptions(..), gTypeOTPCredentialRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newOTPCredentialRequestOptions :: IO OTPCredentialRequestOptions
+-- | <https://wicg.github.io/web-otp/#dictdef-otpcredentialrequestoptions OTPCredentialRequestOptions specification>
+newOTPCredentialRequestOptions :: (MonadDOM m) => m OTPCredentialRequestOptions
+newOTPCredentialRequestOptions = liftDOM ((js_newOTPCredentialRequestOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transport\"] = $2; })"
+        js_setTransport :: OTPCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://wicg.github.io/web-otp/#dom-otpcredentialrequestoptions-transport OTPCredentialRequestOptions.transport specification>
+setTransport :: (MonadDOM m) => OTPCredentialRequestOptions -> [OTPCredentialTransportType] -> m ()
+setTransport self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransport (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transport\"]; })"
+        js_getTransport :: OTPCredentialRequestOptions -> IO JSVal
+-- | <https://wicg.github.io/web-otp/#dom-otpcredentialrequestoptions-transport OTPCredentialRequestOptions.transport specification>
+getTransport :: (MonadDOM m) => OTPCredentialRequestOptions -> m (Maybe [OTPCredentialTransportType])
+getTransport self = liftDOM (((js_getTransport (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/web-otp/#dom-otpcredentialrequestoptions-transport OTPCredentialRequestOptions.transport specification>
+getTransportUnsafe :: (MonadDOM m, HasCallStack) => OTPCredentialRequestOptions -> m [OTPCredentialTransportType]
+getTransportUnsafe self = liftDOM ((((js_getTransport (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/web-otp/#dom-otpcredentialrequestoptions-transport OTPCredentialRequestOptions.transport specification>
+getTransportUnchecked :: (MonadDOM m) => OTPCredentialRequestOptions -> m [OTPCredentialTransportType]
+getTransportUnchecked self = liftDOM (((js_getTransport (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OVR_multiview2.hs b/src/GHCJS/DOM/JSFFI/Generated/OVR_multiview2.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OVR_multiview2.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OVR_multiview2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OVR_multiview2
+       (js_framebufferTextureMultiviewOVR, framebufferTextureMultiviewOVR, pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR, pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR, pattern MAX_VIEWS_OVR, pattern FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR, OVR_multiview2(..), gTypeOVR_multiview2)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"framebufferTextureMultiviewOVR\"]($2, $3, $4, $5, $6, $7); })"
+        js_framebufferTextureMultiviewOVR :: OVR_multiview2 -> Word -> Word -> JSVal -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OVR_multiview2/framebufferTextureMultiviewOVR MDN OVR_multiview2.framebufferTextureMultiviewOVR documentation>
+framebufferTextureMultiviewOVR :: (MonadDOM m) => OVR_multiview2 -> Word -> Word -> Maybe WebGLTexture -> Int -> Int -> Int -> m ()
+framebufferTextureMultiviewOVR self target attachment texture level baseViewIndex numViews = liftDOM (void (((toJSVal texture) >>= \a4' -> js_framebufferTextureMultiviewOVR (self) (target) (attachment) a4' (level) (baseViewIndex) (numViews))))
+
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630
+
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632
+
+pattern MAX_VIEWS_OVR = 0x9631
+
+pattern FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
@@ -1,36 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
-       (js_getRenderedBuffer, getRenderedBuffer,
-        OfflineAudioCompletionEvent(..), gTypeOfflineAudioCompletionEvent)
+       (js_newOfflineAudioCompletionEvent, js_getRenderedBuffer, newOfflineAudioCompletionEvent, getRenderedBuffer, OfflineAudioCompletionEvent(..), gTypeOfflineAudioCompletionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"renderedBuffer\"]; })"
-        js_getRenderedBuffer ::
-        OfflineAudioCompletionEvent -> IO AudioBuffer
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
-getRenderedBuffer ::
-                  (MonadIO m) => OfflineAudioCompletionEvent -> m AudioBuffer
-getRenderedBuffer self = liftIO (js_getRenderedBuffer self)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"OfflineAudioCompletionEvent\"]($1, $2); })"
+        js_newOfflineAudioCompletionEvent :: JSString -> OfflineAudioCompletionEventInit -> IO OfflineAudioCompletionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioCompletionEvent/OfflineAudioCompletionEvent MDN OfflineAudioCompletionEvent. documentation>
+newOfflineAudioCompletionEvent :: (MonadDOM m, ToJSString type') => type' -> OfflineAudioCompletionEventInit -> m OfflineAudioCompletionEvent
+newOfflineAudioCompletionEvent type' eventInitDict = liftDOM ((js_newOfflineAudioCompletionEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"renderedBuffer\"]; })"
+        js_getRenderedBuffer :: OfflineAudioCompletionEvent -> IO AudioBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioCompletionEvent/renderedBuffer MDN OfflineAudioCompletionEvent.renderedBuffer documentation>
+getRenderedBuffer :: (MonadDOM m) => OfflineAudioCompletionEvent -> m AudioBuffer
+getRenderedBuffer self = liftDOM ((js_getRenderedBuffer (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEventInit
+       (js_newOfflineAudioCompletionEventInit, js_setRenderedBuffer, js_getRenderedBuffer, newOfflineAudioCompletionEventInit, setRenderedBuffer, getRenderedBuffer, OfflineAudioCompletionEventInit(..), gTypeOfflineAudioCompletionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"renderedBuffer\": $1}); })"
+        js_newOfflineAudioCompletionEventInit :: AudioBuffer -> IO OfflineAudioCompletionEventInit
+-- | <https://webaudio.github.io/web-audio-api/#OfflineAudioCompletionEventInit OfflineAudioCompletionEventInit specification>
+newOfflineAudioCompletionEventInit :: (MonadDOM m) => AudioBuffer -> m OfflineAudioCompletionEventInit
+newOfflineAudioCompletionEventInit renderedBuffer = liftDOM ((js_newOfflineAudioCompletionEventInit (renderedBuffer)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"renderedBuffer\"] = $2; })"
+        js_setRenderedBuffer :: OfflineAudioCompletionEventInit -> AudioBuffer -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocompletioneventinit-renderedbuffer OfflineAudioCompletionEventInit.renderedBuffer specification>
+setRenderedBuffer :: (MonadDOM m) => OfflineAudioCompletionEventInit -> AudioBuffer -> m ()
+setRenderedBuffer self val = liftDOM (void ((js_setRenderedBuffer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"renderedBuffer\"]; })"
+        js_getRenderedBuffer :: OfflineAudioCompletionEventInit -> IO AudioBuffer
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocompletioneventinit-renderedbuffer OfflineAudioCompletionEventInit.renderedBuffer specification>
+getRenderedBuffer :: (MonadDOM m) => OfflineAudioCompletionEventInit -> m AudioBuffer
+getRenderedBuffer self = liftDOM ((js_getRenderedBuffer (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
@@ -1,40 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
-       (js_newOfflineAudioContext, newOfflineAudioContext,
-        OfflineAudioContext(..), gTypeOfflineAudioContext)
+       (js_newOfflineAudioContext', js_newOfflineAudioContext, js_resume, js_startRendering, js_suspend, js_getLength, newOfflineAudioContext', newOfflineAudioContext, resume, startRendering, startRendering_, suspend, getLength, getLengthUnsafe, getLengthUnchecked, complete, OfflineAudioContext(..), gTypeOfflineAudioContext)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return new window[\"OfflineAudioContext\"]($1,\n$2, $3); })"
-        js_newOfflineAudioContext ::
-        Word -> Word -> Float -> IO OfflineAudioContext
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation> 
-newOfflineAudioContext ::
-                       (MonadIO m) => Word -> Word -> Float -> m OfflineAudioContext
-newOfflineAudioContext numberOfChannels numberOfFrames sampleRate
-  = liftIO
-      (js_newOfflineAudioContext numberOfChannels numberOfFrames
-         sampleRate)
+foreign import javascript safe "(($1) => { return new globalThis[\"OfflineAudioContext\"]($1); })"
+        js_newOfflineAudioContext' :: OfflineAudioContextOptions -> IO OfflineAudioContext
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/OfflineAudioContext MDN OfflineAudioContext. documentation>
+newOfflineAudioContext' :: (MonadDOM m) => OfflineAudioContextOptions -> m OfflineAudioContext
+newOfflineAudioContext' contextOptions = liftDOM ((js_newOfflineAudioContext' (contextOptions)))
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"OfflineAudioContext\"]($1, $2, $3); })"
+        js_newOfflineAudioContext :: Word -> Word -> Float -> IO OfflineAudioContext
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/OfflineAudioContext MDN OfflineAudioContext. documentation>
+newOfflineAudioContext :: (MonadDOM m) => Word -> Word -> Float -> m OfflineAudioContext
+newOfflineAudioContext numberOfChannels length sampleRate = liftDOM ((js_newOfflineAudioContext (numberOfChannels) (length) (sampleRate)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"resume\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_resume :: OfflineAudioContext -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/resume MDN OfflineAudioContext.resume documentation>
+resume :: (MonadDOM m) => OfflineAudioContext -> m ()
+resume self = liftDOM (void (((js_resume (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"startRendering\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_startRendering :: OfflineAudioContext -> JSVal -> IO (JSVal, AudioBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/startRendering MDN OfflineAudioContext.startRendering documentation>
+startRendering :: (MonadDOM m) => OfflineAudioContext -> Maybe Word -> m AudioBuffer
+startRendering self chunkSize = liftDOM ((((toJSVal chunkSize) >>= \a2' -> js_startRendering (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/startRendering MDN OfflineAudioContext.startRendering documentation>
+startRendering_ :: (MonadDOM m) => OfflineAudioContext -> Maybe Word -> m ()
+startRendering_ self chunkSize = liftDOM (void ((((toJSVal chunkSize) >>= \a2' -> js_startRendering (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"suspend\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_suspend :: OfflineAudioContext -> Double -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/suspend MDN OfflineAudioContext.suspend documentation>
+suspend :: (MonadDOM m) => OfflineAudioContext -> Double -> m ()
+suspend self suspendTime = liftDOM (void (((js_suspend (self) (suspendTime)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: OfflineAudioContext -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/length MDN OfflineAudioContext.length documentation>
+getLength :: (MonadDOM m) => OfflineAudioContext -> m (Maybe Word)
+getLength self = liftDOM (((js_getLength (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/length MDN OfflineAudioContext.length documentation>
+getLengthUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContext -> m Word
+getLengthUnsafe self = liftDOM ((((js_getLength (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/length MDN OfflineAudioContext.length documentation>
+getLengthUnchecked :: (MonadDOM m) => OfflineAudioContext -> m Word
+getLengthUnchecked self = liftDOM ((pFromJSVal <$> (js_getLength (self))))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontext-oncomplete complete event>
+complete :: EventName OfflineAudioContext OfflineAudioCompletionEvent
+complete = unsafeEventName (toJSString "complete")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContextOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContextOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContextOptions.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OfflineAudioContextOptions
+       (js_newOfflineAudioContextOptions, js_setNumberOfChannels, js_getNumberOfChannels, js_setLength, js_getLength, js_setSampleRate, js_getSampleRate, js_setRenderSizeHint, js_getRenderSizeHint, newOfflineAudioContextOptions, setNumberOfChannels, getNumberOfChannels, getNumberOfChannelsUnsafe, getNumberOfChannelsUnchecked, setLength, getLength, getLengthUnsafe, getLengthUnchecked, setSampleRate, getSampleRate, setRenderSizeHint, getRenderSizeHint, getRenderSizeHintUnsafe, getRenderSizeHintUnchecked, OfflineAudioContextOptions(..), gTypeOfflineAudioContextOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"sampleRate\": $1}); })"
+        js_newOfflineAudioContextOptions :: Float -> IO OfflineAudioContextOptions
+-- | <https://webaudio.github.io/web-audio-api/#OfflineAudioContextOptions OfflineAudioContextOptions specification>
+newOfflineAudioContextOptions :: (MonadDOM m) => Float -> m OfflineAudioContextOptions
+newOfflineAudioContextOptions sampleRate = liftDOM ((js_newOfflineAudioContextOptions (sampleRate)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"numberOfChannels\"] = $2; })"
+        js_setNumberOfChannels :: OfflineAudioContextOptions -> Word -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-numberofchannels OfflineAudioContextOptions.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => OfflineAudioContextOptions -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void ((js_setNumberOfChannels (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
+        js_getNumberOfChannels :: OfflineAudioContextOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-numberofchannels OfflineAudioContextOptions.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => OfflineAudioContextOptions -> m (Maybe Word)
+getNumberOfChannels self = liftDOM (((js_getNumberOfChannels (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-numberofchannels OfflineAudioContextOptions.numberOfChannels specification>
+getNumberOfChannelsUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContextOptions -> m Word
+getNumberOfChannelsUnsafe self = liftDOM ((((js_getNumberOfChannels (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-numberofchannels OfflineAudioContextOptions.numberOfChannels specification>
+getNumberOfChannelsUnchecked :: (MonadDOM m) => OfflineAudioContextOptions -> m Word
+getNumberOfChannelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getNumberOfChannels (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })"
+        js_setLength :: OfflineAudioContextOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-length OfflineAudioContextOptions.length specification>
+setLength :: (MonadDOM m) => OfflineAudioContextOptions -> Maybe Word -> m ()
+setLength self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLength (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: OfflineAudioContextOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-length OfflineAudioContextOptions.length specification>
+getLength :: (MonadDOM m) => OfflineAudioContextOptions -> m (Maybe Word)
+getLength self = liftDOM (((js_getLength (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-length OfflineAudioContextOptions.length specification>
+getLengthUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContextOptions -> m Word
+getLengthUnsafe self = liftDOM ((((js_getLength (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-length OfflineAudioContextOptions.length specification>
+getLengthUnchecked :: (MonadDOM m) => OfflineAudioContextOptions -> m Word
+getLengthUnchecked self = liftDOM ((pFromJSVal <$> (js_getLength (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sampleRate\"] = $2; })"
+        js_setSampleRate :: OfflineAudioContextOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-samplerate OfflineAudioContextOptions.sampleRate specification>
+setSampleRate :: (MonadDOM m) => OfflineAudioContextOptions -> Float -> m ()
+setSampleRate self val = liftDOM (void ((js_setSampleRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: OfflineAudioContextOptions -> IO Float
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-samplerate OfflineAudioContextOptions.sampleRate specification>
+getSampleRate :: (MonadDOM m) => OfflineAudioContextOptions -> m Float
+getSampleRate self = liftDOM ((js_getSampleRate (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"renderSizeHint\"] = $2; })"
+        js_setRenderSizeHint :: OfflineAudioContextOptions -> AudioContextRenderSizeCategoryOrWord -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-rendersizehint OfflineAudioContextOptions.renderSizeHint specification>
+setRenderSizeHint :: (MonadDOM m, IsAudioContextRenderSizeCategoryOrWord val) => OfflineAudioContextOptions -> val -> m ()
+setRenderSizeHint self val = liftDOM (void ((js_setRenderSizeHint (self) (Types.toAudioContextRenderSizeCategoryOrWord val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"renderSizeHint\"]; })"
+        js_getRenderSizeHint :: OfflineAudioContextOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-rendersizehint OfflineAudioContextOptions.renderSizeHint specification>
+getRenderSizeHint :: (MonadDOM m) => OfflineAudioContextOptions -> m (Maybe AudioContextRenderSizeCategoryOrWord)
+getRenderSizeHint self = liftDOM (((js_getRenderSizeHint (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-rendersizehint OfflineAudioContextOptions.renderSizeHint specification>
+getRenderSizeHintUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContextOptions -> m AudioContextRenderSizeCategoryOrWord
+getRenderSizeHintUnsafe self = liftDOM ((((js_getRenderSizeHint (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-rendersizehint OfflineAudioContextOptions.renderSizeHint specification>
+getRenderSizeHintUnchecked :: (MonadDOM m) => OfflineAudioContextOptions -> m AudioContextRenderSizeCategoryOrWord
+getRenderSizeHintUnchecked self = liftDOM ((pFromJSVal <$> (js_getRenderSizeHint (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OffscreenCanvas.hs b/src/GHCJS/DOM/JSFFI/Generated/OffscreenCanvas.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OffscreenCanvas.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OffscreenCanvas
+       (js_newOffscreenCanvas, js_convertToBlob, js_getContext, js_transferToImageBitmap, js_setWidth, js_getWidth, js_setHeight, js_getHeight, newOffscreenCanvas, convertToBlob, convertToBlob_, getContext, getContext_, getContextUnsafe, getContextUnchecked, transferToImageBitmap, transferToImageBitmap_, setWidth, getWidth, setHeight, getHeight, contextlost, contextrestored, webglcontextcreationerror, webglcontextlost, webglcontextrestored, OffscreenCanvas(..), gTypeOffscreenCanvas)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"OffscreenCanvas\"]($1, $2); })"
+        js_newOffscreenCanvas :: JSVal -> JSVal -> IO OffscreenCanvas
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/OffscreenCanvas MDN OffscreenCanvas. documentation>
+newOffscreenCanvas :: (MonadDOM m) => Word53 -> Word53 -> m OffscreenCanvas
+newOffscreenCanvas width height = liftDOM (((toJSVal width) >>= \a1' -> (toJSVal height) >>= \a2' -> js_newOffscreenCanvas a1' a2'))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"convertToBlob\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_convertToBlob :: OffscreenCanvas -> JSVal -> IO (JSVal, Blob)
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/convertToBlob MDN OffscreenCanvas.convertToBlob documentation>
+convertToBlob :: (MonadDOM m) => OffscreenCanvas -> Maybe ImageEncodeOptions -> m Blob
+convertToBlob self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_convertToBlob (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/convertToBlob MDN OffscreenCanvas.convertToBlob documentation>
+convertToBlob_ :: (MonadDOM m) => OffscreenCanvas -> Maybe ImageEncodeOptions -> m ()
+convertToBlob_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_convertToBlob (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getContext\"]($2, $3); })"
+        js_getContext :: OffscreenCanvas -> JSVal -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/getContext MDN OffscreenCanvas.getContext documentation>
+getContext :: (MonadDOM m) => OffscreenCanvas -> OffscreenRenderingContextId -> JSVal -> m (Maybe OffscreenRenderingContext)
+getContext self contextId options = liftDOM ((((toJSVal contextId) >>= \a2' -> js_getContext (self) a2' (options)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/getContext MDN OffscreenCanvas.getContext documentation>
+getContext_ :: (MonadDOM m) => OffscreenCanvas -> OffscreenRenderingContextId -> JSVal -> m ()
+getContext_ self contextId options = liftDOM (void (((toJSVal contextId) >>= \a2' -> js_getContext (self) a2' (options))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/getContext MDN OffscreenCanvas.getContext documentation>
+getContextUnsafe :: (MonadDOM m, HasCallStack) => OffscreenCanvas -> OffscreenRenderingContextId -> JSVal -> m OffscreenRenderingContext
+getContextUnsafe self contextId options = liftDOM (((((toJSVal contextId) >>= \a2' -> js_getContext (self) a2' (options)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/getContext MDN OffscreenCanvas.getContext documentation>
+getContextUnchecked :: (MonadDOM m) => OffscreenCanvas -> OffscreenRenderingContextId -> JSVal -> m OffscreenRenderingContext
+getContextUnchecked self contextId options = liftDOM ((pFromJSVal <$> ((toJSVal contextId) >>= \a2' -> js_getContext (self) a2' (options))))
+
+foreign import javascript safe "(($1) => { return $1[\"transferToImageBitmap\"](); })"
+        js_transferToImageBitmap :: OffscreenCanvas -> IO ImageBitmap
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/transferToImageBitmap MDN OffscreenCanvas.transferToImageBitmap documentation>
+transferToImageBitmap :: (MonadDOM m) => OffscreenCanvas -> m ImageBitmap
+transferToImageBitmap self = liftDOM ((js_transferToImageBitmap (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/transferToImageBitmap MDN OffscreenCanvas.transferToImageBitmap documentation>
+transferToImageBitmap_ :: (MonadDOM m) => OffscreenCanvas -> m ()
+transferToImageBitmap_ self = liftDOM (void ((js_transferToImageBitmap (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: OffscreenCanvas -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/width MDN OffscreenCanvas.width documentation>
+setWidth :: (MonadDOM m) => OffscreenCanvas -> Word53 -> m ()
+setWidth self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setWidth (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: OffscreenCanvas -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/width MDN OffscreenCanvas.width documentation>
+getWidth :: (MonadDOM m) => OffscreenCanvas -> m Word53
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: OffscreenCanvas -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/height MDN OffscreenCanvas.height documentation>
+setHeight :: (MonadDOM m) => OffscreenCanvas -> Word53 -> m ()
+setHeight self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHeight (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: OffscreenCanvas -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/height MDN OffscreenCanvas.height documentation>
+getHeight :: (MonadDOM m) => OffscreenCanvas -> m Word53
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#handler-offscreencanvas-oncontextlost contextlost event>
+contextlost :: EventName OffscreenCanvas Event
+contextlost = unsafeEventName (toJSString "contextlost")
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#handler-offscreencanvas-oncontextrestored contextrestored event>
+contextrestored :: EventName OffscreenCanvas Event
+contextrestored = unsafeEventName (toJSString "contextrestored")
+
+webglcontextcreationerror :: EventName OffscreenCanvas WebGLContextEvent
+webglcontextcreationerror = unsafeEventName (toJSString "webglcontextcreationerror")
+
+webglcontextlost :: EventName OffscreenCanvas WebGLContextEvent
+webglcontextlost = unsafeEventName (toJSString "webglcontextlost")
+
+webglcontextrestored :: EventName OffscreenCanvas WebGLContextEvent
+webglcontextrestored = unsafeEventName (toJSString "webglcontextrestored")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OffscreenCanvasRenderingContext2D.hs b/src/GHCJS/DOM/JSFFI/Generated/OffscreenCanvasRenderingContext2D.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OffscreenCanvasRenderingContext2D.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OffscreenCanvasRenderingContext2D
+       (js_getCanvas, getCanvas, OffscreenCanvasRenderingContext2D(..), gTypeOffscreenCanvasRenderingContext2D)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })"
+        js_getCanvas :: OffscreenCanvasRenderingContext2D -> IO OffscreenCanvas
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/canvas MDN OffscreenCanvasRenderingContext2D.canvas documentation>
+getCanvas :: (MonadDOM m) => OffscreenCanvasRenderingContext2D -> m OffscreenCanvas
+getCanvas self = liftDOM ((js_getCanvas (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OptionalEffectTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/OptionalEffectTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OptionalEffectTiming.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OptionalEffectTiming
+       (js_newOptionalEffectTiming, js_setDelay, js_getDelay, js_setEndDelay, js_getEndDelay, js_setFill, js_getFill, js_setIterationStart, js_getIterationStart, js_setIterations, js_getIterations, js_setDuration, js_getDuration, js_setDirection, js_getDirection, js_setEasing, js_getEasing, js_setPlaybackRate, js_getPlaybackRate, newOptionalEffectTiming, setDelay, getDelay, getDelayUnsafe, getDelayUnchecked, setEndDelay, getEndDelay, getEndDelayUnsafe, getEndDelayUnchecked, setFill, getFill, getFillUnsafe, getFillUnchecked, setIterationStart, getIterationStart, getIterationStartUnsafe, getIterationStartUnchecked, setIterations, getIterations, getIterationsUnsafe, getIterationsUnchecked, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setDirection, getDirection, getDirectionUnsafe, getDirectionUnchecked, setEasing, getEasing, getEasingUnsafe, getEasingUnchecked, setPlaybackRate, getPlaybackRate, getPlaybackRateUnsafe, getPlaybackRateUnchecked, OptionalEffectTiming(..), gTypeOptionalEffectTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newOptionalEffectTiming :: IO OptionalEffectTiming
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-optionaleffecttiming OptionalEffectTiming specification>
+newOptionalEffectTiming :: (MonadDOM m) => m OptionalEffectTiming
+newOptionalEffectTiming = liftDOM ((js_newOptionalEffectTiming))
+
+foreign import javascript safe "(($1, $2) => { $1[\"delay\"] = $2; })"
+        js_setDelay :: OptionalEffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-delay OptionalEffectTiming.delay specification>
+setDelay :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setDelay self val = liftDOM (void ((js_setDelay (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"delay\"]; })"
+        js_getDelay :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-delay OptionalEffectTiming.delay specification>
+getDelay :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getDelay self = liftDOM (((js_getDelay (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-delay OptionalEffectTiming.delay specification>
+getDelayUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getDelayUnsafe self = liftDOM ((((js_getDelay (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-delay OptionalEffectTiming.delay specification>
+getDelayUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m Double
+getDelayUnchecked self = liftDOM ((pFromJSVal <$> (js_getDelay (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endDelay\"] = $2; })"
+        js_setEndDelay :: OptionalEffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-enddelay OptionalEffectTiming.endDelay specification>
+setEndDelay :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setEndDelay self val = liftDOM (void ((js_setEndDelay (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endDelay\"]; })"
+        js_getEndDelay :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-enddelay OptionalEffectTiming.endDelay specification>
+getEndDelay :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getEndDelay self = liftDOM (((js_getEndDelay (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-enddelay OptionalEffectTiming.endDelay specification>
+getEndDelayUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getEndDelayUnsafe self = liftDOM ((((js_getEndDelay (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-enddelay OptionalEffectTiming.endDelay specification>
+getEndDelayUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m Double
+getEndDelayUnchecked self = liftDOM ((pFromJSVal <$> (js_getEndDelay (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fill\"] = $2; })"
+        js_setFill :: OptionalEffectTiming -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-fill OptionalEffectTiming.fill specification>
+setFill :: (MonadDOM m) => OptionalEffectTiming -> FillMode -> m ()
+setFill self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFill (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fill\"]; })"
+        js_getFill :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-fill OptionalEffectTiming.fill specification>
+getFill :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe FillMode)
+getFill self = liftDOM (((js_getFill (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-fill OptionalEffectTiming.fill specification>
+getFillUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m FillMode
+getFillUnsafe self = liftDOM ((((js_getFill (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-fill OptionalEffectTiming.fill specification>
+getFillUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m FillMode
+getFillUnchecked self = liftDOM ((pFromJSVal <$> (js_getFill (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iterationStart\"] = $2; })"
+        js_setIterationStart :: OptionalEffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterationstart OptionalEffectTiming.iterationStart specification>
+setIterationStart :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setIterationStart self val = liftDOM (void ((js_setIterationStart (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iterationStart\"]; })"
+        js_getIterationStart :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterationstart OptionalEffectTiming.iterationStart specification>
+getIterationStart :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getIterationStart self = liftDOM (((js_getIterationStart (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterationstart OptionalEffectTiming.iterationStart specification>
+getIterationStartUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getIterationStartUnsafe self = liftDOM ((((js_getIterationStart (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterationstart OptionalEffectTiming.iterationStart specification>
+getIterationStartUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m Double
+getIterationStartUnchecked self = liftDOM ((pFromJSVal <$> (js_getIterationStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iterations\"] = $2; })"
+        js_setIterations :: OptionalEffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterations OptionalEffectTiming.iterations specification>
+setIterations :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setIterations self val = liftDOM (void ((js_setIterations (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iterations\"]; })"
+        js_getIterations :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterations OptionalEffectTiming.iterations specification>
+getIterations :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getIterations self = liftDOM (((js_getIterations (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterations OptionalEffectTiming.iterations specification>
+getIterationsUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getIterationsUnsafe self = liftDOM ((((js_getIterations (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterations OptionalEffectTiming.iterations specification>
+getIterationsUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m Double
+getIterationsUnchecked self = liftDOM ((pFromJSVal <$> (js_getIterations (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: OptionalEffectTiming -> DoubleOrString -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-duration OptionalEffectTiming.duration specification>
+setDuration :: (MonadDOM m, IsDoubleOrString val) => OptionalEffectTiming -> val -> m ()
+setDuration self val = liftDOM (void ((js_setDuration (self) (Types.toDoubleOrString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-duration OptionalEffectTiming.duration specification>
+getDuration :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe DoubleOrString)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-duration OptionalEffectTiming.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m DoubleOrString
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-duration OptionalEffectTiming.duration specification>
+getDurationUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m DoubleOrString
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: OptionalEffectTiming -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-direction OptionalEffectTiming.direction specification>
+setDirection :: (MonadDOM m) => OptionalEffectTiming -> PlaybackDirection -> m ()
+setDirection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDirection (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-direction OptionalEffectTiming.direction specification>
+getDirection :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe PlaybackDirection)
+getDirection self = liftDOM (((js_getDirection (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-direction OptionalEffectTiming.direction specification>
+getDirectionUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m PlaybackDirection
+getDirectionUnsafe self = liftDOM ((((js_getDirection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-direction OptionalEffectTiming.direction specification>
+getDirectionUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m PlaybackDirection
+getDirectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDirection (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"easing\"] = $2; })"
+        js_setEasing :: OptionalEffectTiming -> JSString -> IO ()
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-easing OptionalEffectTiming.easing specification>
+setEasing :: (MonadDOM m, ToJSString val) => OptionalEffectTiming -> val -> m ()
+setEasing self val = liftDOM (void ((js_setEasing (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"easing\"]; })"
+        js_getEasing :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-easing OptionalEffectTiming.easing specification>
+getEasing :: (MonadDOM m, FromJSString result) => OptionalEffectTiming -> m (Maybe result)
+getEasing self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEasing (self))))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-easing OptionalEffectTiming.easing specification>
+getEasingUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => OptionalEffectTiming -> m result
+getEasingUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEasing (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-easing OptionalEffectTiming.easing specification>
+getEasingUnchecked :: (MonadDOM m, FromJSString result) => OptionalEffectTiming -> m result
+getEasingUnchecked self = liftDOM ((pFromJSVal <$> (js_getEasing (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: OptionalEffectTiming -> Double -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-optionaleffecttiming-playbackrate OptionalEffectTiming.playbackRate specification>
+setPlaybackRate :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setPlaybackRate self val = liftDOM (void ((js_setPlaybackRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: OptionalEffectTiming -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-optionaleffecttiming-playbackrate OptionalEffectTiming.playbackRate specification>
+getPlaybackRate :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getPlaybackRate self = liftDOM (((js_getPlaybackRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-optionaleffecttiming-playbackrate OptionalEffectTiming.playbackRate specification>
+getPlaybackRateUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getPlaybackRateUnsafe self = liftDOM ((((js_getPlaybackRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-optionaleffecttiming-playbackrate OptionalEffectTiming.playbackRate specification>
+getPlaybackRateUnchecked :: (MonadDOM m) => OptionalEffectTiming -> m Double
+getPlaybackRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getPlaybackRate (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OpusEncoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/OpusEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OpusEncoderConfig.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-opus-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OpusEncoderConfig
+       (js_newOpusEncoderConfig, js_setFormat, js_getFormat, js_setSignal, js_getSignal, js_setApplication, js_getApplication, js_setFrameDuration, js_getFrameDuration, js_setComplexity, js_getComplexity, js_setPacketlossperc, js_getPacketlossperc, js_setUseinbandfec, js_getUseinbandfec, js_setUsedtx, js_getUsedtx, newOpusEncoderConfig, setFormat, getFormat, getFormatUnsafe, getFormatUnchecked, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, setApplication, getApplication, getApplicationUnsafe, getApplicationUnchecked, setFrameDuration, getFrameDuration, getFrameDurationUnsafe, getFrameDurationUnchecked, setComplexity, getComplexity, getComplexityUnsafe, getComplexityUnchecked, setPacketlossperc, getPacketlossperc, getPacketlosspercUnsafe, getPacketlosspercUnchecked, setUseinbandfec, getUseinbandfec, getUseinbandfecUnsafe, getUseinbandfecUnchecked, setUsedtx, getUsedtx, getUsedtxUnsafe, getUsedtxUnchecked, OpusEncoderConfig(..), gTypeOpusEncoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newOpusEncoderConfig :: IO OpusEncoderConfig
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dictdef-opusencoderconfig OpusEncoderConfig specification>
+newOpusEncoderConfig :: (MonadDOM m) => m OpusEncoderConfig
+newOpusEncoderConfig = liftDOM ((js_newOpusEncoderConfig))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: OpusEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-format OpusEncoderConfig.format specification>
+setFormat :: (MonadDOM m) => OpusEncoderConfig -> OpusBitstreamFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-format OpusEncoderConfig.format specification>
+getFormat :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe OpusBitstreamFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-format OpusEncoderConfig.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m OpusBitstreamFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-format OpusEncoderConfig.format specification>
+getFormatUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m OpusBitstreamFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: OpusEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-signal OpusEncoderConfig.signal specification>
+setSignal :: (MonadDOM m) => OpusEncoderConfig -> OpusSignal -> m ()
+setSignal self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSignal (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-signal OpusEncoderConfig.signal specification>
+getSignal :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe OpusSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-signal OpusEncoderConfig.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m OpusSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-signal OpusEncoderConfig.signal specification>
+getSignalUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m OpusSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"application\"] = $2; })"
+        js_setApplication :: OpusEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-application OpusEncoderConfig.application specification>
+setApplication :: (MonadDOM m) => OpusEncoderConfig -> OpusApplication -> m ()
+setApplication self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setApplication (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"application\"]; })"
+        js_getApplication :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-application OpusEncoderConfig.application specification>
+getApplication :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe OpusApplication)
+getApplication self = liftDOM (((js_getApplication (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-application OpusEncoderConfig.application specification>
+getApplicationUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m OpusApplication
+getApplicationUnsafe self = liftDOM ((((js_getApplication (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-application OpusEncoderConfig.application specification>
+getApplicationUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m OpusApplication
+getApplicationUnchecked self = liftDOM ((pFromJSVal <$> (js_getApplication (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameDuration\"] = $2; })"
+        js_setFrameDuration :: OpusEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-frameduration OpusEncoderConfig.frameDuration specification>
+setFrameDuration :: (MonadDOM m) => OpusEncoderConfig -> Word53 -> m ()
+setFrameDuration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFrameDuration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameDuration\"]; })"
+        js_getFrameDuration :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-frameduration OpusEncoderConfig.frameDuration specification>
+getFrameDuration :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe Word53)
+getFrameDuration self = liftDOM (((js_getFrameDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-frameduration OpusEncoderConfig.frameDuration specification>
+getFrameDurationUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m Word53
+getFrameDurationUnsafe self = liftDOM ((((js_getFrameDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-frameduration OpusEncoderConfig.frameDuration specification>
+getFrameDurationUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m Word53
+getFrameDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"complexity\"] = $2; })"
+        js_setComplexity :: OpusEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-complexity OpusEncoderConfig.complexity specification>
+setComplexity :: (MonadDOM m) => OpusEncoderConfig -> Word -> m ()
+setComplexity self val = liftDOM (void ((js_setComplexity (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"complexity\"]; })"
+        js_getComplexity :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-complexity OpusEncoderConfig.complexity specification>
+getComplexity :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe Word)
+getComplexity self = liftDOM (((js_getComplexity (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-complexity OpusEncoderConfig.complexity specification>
+getComplexityUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m Word
+getComplexityUnsafe self = liftDOM ((((js_getComplexity (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-complexity OpusEncoderConfig.complexity specification>
+getComplexityUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m Word
+getComplexityUnchecked self = liftDOM ((pFromJSVal <$> (js_getComplexity (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"packetlossperc\"] = $2; })"
+        js_setPacketlossperc :: OpusEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-packetlossperc OpusEncoderConfig.packetlossperc specification>
+setPacketlossperc :: (MonadDOM m) => OpusEncoderConfig -> Word -> m ()
+setPacketlossperc self val = liftDOM (void ((js_setPacketlossperc (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"packetlossperc\"]; })"
+        js_getPacketlossperc :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-packetlossperc OpusEncoderConfig.packetlossperc specification>
+getPacketlossperc :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe Word)
+getPacketlossperc self = liftDOM (((js_getPacketlossperc (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-packetlossperc OpusEncoderConfig.packetlossperc specification>
+getPacketlosspercUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m Word
+getPacketlosspercUnsafe self = liftDOM ((((js_getPacketlossperc (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-packetlossperc OpusEncoderConfig.packetlossperc specification>
+getPacketlosspercUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m Word
+getPacketlosspercUnchecked self = liftDOM ((pFromJSVal <$> (js_getPacketlossperc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"useinbandfec\"] = $2; })"
+        js_setUseinbandfec :: OpusEncoderConfig -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-useinbandfec OpusEncoderConfig.useinbandfec specification>
+setUseinbandfec :: (MonadDOM m) => OpusEncoderConfig -> Bool -> m ()
+setUseinbandfec self val = liftDOM (void ((js_setUseinbandfec (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"useinbandfec\"]; })"
+        js_getUseinbandfec :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-useinbandfec OpusEncoderConfig.useinbandfec specification>
+getUseinbandfec :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe Bool)
+getUseinbandfec self = liftDOM (((js_getUseinbandfec (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-useinbandfec OpusEncoderConfig.useinbandfec specification>
+getUseinbandfecUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m Bool
+getUseinbandfecUnsafe self = liftDOM ((((js_getUseinbandfec (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-useinbandfec OpusEncoderConfig.useinbandfec specification>
+getUseinbandfecUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m Bool
+getUseinbandfecUnchecked self = liftDOM ((pFromJSVal <$> (js_getUseinbandfec (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usedtx\"] = $2; })"
+        js_setUsedtx :: OpusEncoderConfig -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-usedtx OpusEncoderConfig.usedtx specification>
+setUsedtx :: (MonadDOM m) => OpusEncoderConfig -> Bool -> m ()
+setUsedtx self val = liftDOM (void ((js_setUsedtx (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usedtx\"]; })"
+        js_getUsedtx :: OpusEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-usedtx OpusEncoderConfig.usedtx specification>
+getUsedtx :: (MonadDOM m) => OpusEncoderConfig -> m (Maybe Bool)
+getUsedtx self = liftDOM (((js_getUsedtx (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-usedtx OpusEncoderConfig.usedtx specification>
+getUsedtxUnsafe :: (MonadDOM m, HasCallStack) => OpusEncoderConfig -> m Bool
+getUsedtxUnsafe self = liftDOM ((((js_getUsedtx (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dom-opusencoderconfig-usedtx OpusEncoderConfig.usedtx specification>
+getUsedtxUnchecked :: (MonadDOM m) => OpusEncoderConfig -> m Bool
+getUsedtxUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsedtx (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Origin.hs b/src/GHCJS/DOM/JSFFI/Generated/Origin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Origin.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Origin
+       (js_newOrigin, js_isSameOrigin, js_isSameSite, js_from, js_getOpaque, newOrigin, isSameOrigin, isSameOrigin_, isSameSite, isSameSite_, from, from_, getOpaque, Origin(..), gTypeOrigin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return new globalThis[\"Origin\"](); })"
+        js_newOrigin :: IO Origin
+newOrigin :: (MonadDOM m) => m Origin
+newOrigin = liftDOM ((js_newOrigin))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isSameOrigin\"]($2); })"
+        js_isSameOrigin :: Origin -> Origin -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-issameorigin Origin.isSameOrigin specification>
+isSameOrigin :: (MonadDOM m) => Origin -> Origin -> m Bool
+isSameOrigin self other = liftDOM ((js_isSameOrigin (self) (other)))
+
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-issameorigin Origin.isSameOrigin specification>
+isSameOrigin_ :: (MonadDOM m) => Origin -> Origin -> m ()
+isSameOrigin_ self other = liftDOM (void ((js_isSameOrigin (self) (other))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isSameSite\"]($2); })"
+        js_isSameSite :: Origin -> Origin -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-issamesite Origin.isSameSite specification>
+isSameSite :: (MonadDOM m) => Origin -> Origin -> m Bool
+isSameSite self other = liftDOM ((js_isSameSite (self) (other)))
+
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-issamesite Origin.isSameSite specification>
+isSameSite_ :: (MonadDOM m) => Origin -> Origin -> m ()
+isSameSite_ self other = liftDOM (void ((js_isSameSite (self) (other))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"Origin\"][\"from\"]($1); })"
+        js_from :: JSVal -> IO Origin
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-from Origin.from specification>
+from :: (MonadDOM m) => JSVal -> m Origin
+from value = liftDOM ((js_from (value)))
+
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-from Origin.from specification>
+from_ :: (MonadDOM m) => JSVal -> m ()
+from_ value = liftDOM (void ((js_from (value))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"opaque\"]; })"
+        js_getOpaque :: Origin -> IO Bool
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-opaque Origin.opaque specification>
+getOpaque :: (MonadDOM m) => Origin -> m Bool
+getOpaque self = liftDOM ((js_getOpaque (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
@@ -1,99 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.OscillatorNode
-       (js_start, start, js_stop, stop, js_setPeriodicWave,
-        setPeriodicWave, pattern UNSCHEDULED_STATE,
-        pattern SCHEDULED_STATE, pattern PLAYING_STATE,
-        pattern FINISHED_STATE, js_setType, setType, js_getType, getType,
-        js_getPlaybackState, getPlaybackState, js_getFrequency,
-        getFrequency, js_getDetune, getDetune, ended, OscillatorNode(..),
-        gTypeOscillatorNode)
+       (js_newOscillatorNode, js_setPeriodicWave, js_setType, js_getType, js_getFrequency, js_getDetune, newOscillatorNode, setPeriodicWave, setType, getType, getFrequency, getDetune, OscillatorNode(..), gTypeOscillatorNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })" js_start ::
-        OscillatorNode -> Optional Double -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
-start :: (MonadIO m) => OscillatorNode -> Maybe Double -> m ()
-start self when = liftIO (js_start self (maybeToOptional when))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"stop\"]($2); })" js_stop ::
-        OscillatorNode -> Optional Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.stop Mozilla OscillatorNode.stop documentation> 
-stop :: (MonadIO m) => OscillatorNode -> Maybe Double -> m ()
-stop self when = liftIO (js_stop self (maybeToOptional when))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setPeriodicWave\"]($2); })"
-        js_setPeriodicWave ::
-        OscillatorNode -> Optional PeriodicWave -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"OscillatorNode\"]($1, $2); })"
+        js_newOscillatorNode :: BaseAudioContext -> JSVal -> IO OscillatorNode
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/OscillatorNode MDN OscillatorNode. documentation>
+newOscillatorNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe OscillatorOptions -> m OscillatorNode
+newOscillatorNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newOscillatorNode (Types.toBaseAudioContext context) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.setPeriodicWave Mozilla OscillatorNode.setPeriodicWave documentation> 
-setPeriodicWave ::
-                (MonadIO m) => OscillatorNode -> Maybe PeriodicWave -> m ()
-setPeriodicWave self wave
-  = liftIO (js_setPeriodicWave self (maybeToOptional wave))
-pattern UNSCHEDULED_STATE = 0
-pattern SCHEDULED_STATE = 1
-pattern PLAYING_STATE = 2
-pattern FINISHED_STATE = 3
- 
-foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        OscillatorNode -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"setPeriodicWave\"]($2); })"
+        js_setPeriodicWave :: OscillatorNode -> PeriodicWave -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/setPeriodicWave MDN OscillatorNode.setPeriodicWave documentation>
+setPeriodicWave :: (MonadDOM m) => OscillatorNode -> PeriodicWave -> m ()
+setPeriodicWave self periodicWave = liftDOM (void ((js_setPeriodicWave (self) (periodicWave))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
-setType :: (MonadIO m) => OscillatorNode -> OscillatorType -> m ()
-setType self val = liftIO (js_setType self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        OscillatorNode -> IO JSVal
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: OscillatorNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/type MDN OscillatorNode.type documentation>
+setType :: (MonadDOM m) => OscillatorNode -> OscillatorType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
-getType :: (MonadIO m) => OscillatorNode -> m OscillatorType
-getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"playbackState\"]; })"
-        js_getPlaybackState :: OscillatorNode -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: OscillatorNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/type MDN OscillatorNode.type documentation>
+getType :: (MonadDOM m) => OscillatorNode -> m OscillatorType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.playbackState Mozilla OscillatorNode.playbackState documentation> 
-getPlaybackState :: (MonadIO m) => OscillatorNode -> m Word
-getPlaybackState self = liftIO (js_getPlaybackState self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"frequency\"]; })"
         js_getFrequency :: OscillatorNode -> IO AudioParam
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.frequency Mozilla OscillatorNode.frequency documentation> 
-getFrequency :: (MonadIO m) => OscillatorNode -> m AudioParam
-getFrequency self = liftIO (js_getFrequency self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })" js_getDetune ::
-        OscillatorNode -> IO AudioParam
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
-getDetune :: (MonadIO m) => OscillatorNode -> m AudioParam
-getDetune self = liftIO (js_getDetune self)
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/frequency MDN OscillatorNode.frequency documentation>
+getFrequency :: (MonadDOM m) => OscillatorNode -> m AudioParam
+getFrequency self = liftDOM ((js_getFrequency (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.onended Mozilla OscillatorNode.onended documentation> 
-ended :: EventName OscillatorNode Event
-ended = unsafeEventName (toJSString "ended")
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })"
+        js_getDetune :: OscillatorNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/detune MDN OscillatorNode.detune documentation>
+getDetune :: (MonadDOM m) => OscillatorNode -> m AudioParam
+getDetune self = liftDOM ((js_getDetune (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OscillatorOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/OscillatorOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OscillatorOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.OscillatorOptions
+       (js_newOscillatorOptions, js_setType, js_getType, js_setFrequency, js_getFrequency, js_setDetune, js_getDetune, js_setPeriodicWave, js_getPeriodicWave, newOscillatorOptions, setType, getType, getTypeUnsafe, getTypeUnchecked, setFrequency, getFrequency, getFrequencyUnsafe, getFrequencyUnchecked, setDetune, getDetune, getDetuneUnsafe, getDetuneUnchecked, setPeriodicWave, getPeriodicWave, getPeriodicWaveUnsafe, getPeriodicWaveUnchecked, OscillatorOptions(..), gTypeOscillatorOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newOscillatorOptions :: IO OscillatorOptions
+-- | <https://webaudio.github.io/web-audio-api/#OscillatorOptions OscillatorOptions specification>
+newOscillatorOptions :: (MonadDOM m) => m OscillatorOptions
+newOscillatorOptions = liftDOM ((js_newOscillatorOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: OscillatorOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-type OscillatorOptions.type specification>
+setType :: (MonadDOM m) => OscillatorOptions -> OscillatorType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: OscillatorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-type OscillatorOptions.type specification>
+getType :: (MonadDOM m) => OscillatorOptions -> m (Maybe OscillatorType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-type OscillatorOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m OscillatorType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-type OscillatorOptions.type specification>
+getTypeUnchecked :: (MonadDOM m) => OscillatorOptions -> m OscillatorType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frequency\"] = $2; })"
+        js_setFrequency :: OscillatorOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-frequency OscillatorOptions.frequency specification>
+setFrequency :: (MonadDOM m) => OscillatorOptions -> Float -> m ()
+setFrequency self val = liftDOM (void ((js_setFrequency (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frequency\"]; })"
+        js_getFrequency :: OscillatorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-frequency OscillatorOptions.frequency specification>
+getFrequency :: (MonadDOM m) => OscillatorOptions -> m (Maybe Float)
+getFrequency self = liftDOM (((js_getFrequency (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-frequency OscillatorOptions.frequency specification>
+getFrequencyUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m Float
+getFrequencyUnsafe self = liftDOM ((((js_getFrequency (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-frequency OscillatorOptions.frequency specification>
+getFrequencyUnchecked :: (MonadDOM m) => OscillatorOptions -> m Float
+getFrequencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrequency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"detune\"] = $2; })"
+        js_setDetune :: OscillatorOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-detune OscillatorOptions.detune specification>
+setDetune :: (MonadDOM m) => OscillatorOptions -> Float -> m ()
+setDetune self val = liftDOM (void ((js_setDetune (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })"
+        js_getDetune :: OscillatorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-detune OscillatorOptions.detune specification>
+getDetune :: (MonadDOM m) => OscillatorOptions -> m (Maybe Float)
+getDetune self = liftDOM (((js_getDetune (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-detune OscillatorOptions.detune specification>
+getDetuneUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m Float
+getDetuneUnsafe self = liftDOM ((((js_getDetune (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-detune OscillatorOptions.detune specification>
+getDetuneUnchecked :: (MonadDOM m) => OscillatorOptions -> m Float
+getDetuneUnchecked self = liftDOM ((pFromJSVal <$> (js_getDetune (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"periodicWave\"] = $2; })"
+        js_setPeriodicWave :: OscillatorOptions -> PeriodicWave -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-periodicwave OscillatorOptions.periodicWave specification>
+setPeriodicWave :: (MonadDOM m) => OscillatorOptions -> PeriodicWave -> m ()
+setPeriodicWave self val = liftDOM (void ((js_setPeriodicWave (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"periodicWave\"]; })"
+        js_getPeriodicWave :: OscillatorOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-periodicwave OscillatorOptions.periodicWave specification>
+getPeriodicWave :: (MonadDOM m) => OscillatorOptions -> m (Maybe PeriodicWave)
+getPeriodicWave self = liftDOM (((js_getPeriodicWave (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-periodicwave OscillatorOptions.periodicWave specification>
+getPeriodicWaveUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m PeriodicWave
+getPeriodicWaveUnsafe self = liftDOM ((((js_getPeriodicWave (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-periodicwave OscillatorOptions.periodicWave specification>
+getPeriodicWaveUnchecked :: (MonadDOM m) => OscillatorOptions -> m PeriodicWave
+getPeriodicWaveUnchecked self = liftDOM ((pFromJSVal <$> (js_getPeriodicWave (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
@@ -1,61 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.OverconstrainedError
-       (js_newOverconstrainedError, newOverconstrainedError,
-        js_getMessage, getMessage, js_getConstraint, getConstraint,
-        OverconstrainedError(..), gTypeOverconstrainedError)
+       (js_newOverconstrainedError, js_getConstraint, newOverconstrainedError, getConstraint, OverconstrainedError(..), gTypeOverconstrainedError)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"OverconstrainedError\"]($1,\n$2); })"
-        js_newOverconstrainedError ::
-        Optional JSString -> Optional JSString -> IO OverconstrainedError
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError Mozilla OverconstrainedError documentation> 
-newOverconstrainedError ::
-                        (MonadIO m, ToJSString constraint, ToJSString message) =>
-                          Maybe constraint -> Maybe message -> m OverconstrainedError
-newOverconstrainedError constraint message
-  = liftIO
-      (js_newOverconstrainedError (toOptionalJSString constraint)
-         (toOptionalJSString message))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        OverconstrainedError -> IO JSString
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"OverconstrainedError\"]($1, $2); })"
+        js_newOverconstrainedError :: JSString -> (Optional JSString) -> IO OverconstrainedError
+-- | <https://developer.mozilla.org/docs/Web/API/OverconstrainedError/OverconstrainedError MDN OverconstrainedError. documentation>
+newOverconstrainedError :: (MonadDOM m, ToJSString constraint, ToJSString message) => constraint -> Maybe message -> m OverconstrainedError
+newOverconstrainedError constraint message = liftDOM ((js_newOverconstrainedError (toJSString constraint) (toOptionalJSString message)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError.message Mozilla OverconstrainedError.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) =>
-             OverconstrainedError -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"constraint\"]; })"
         js_getConstraint :: OverconstrainedError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError.constraint Mozilla OverconstrainedError.constraint documentation> 
-getConstraint ::
-              (MonadIO m, FromJSString result) =>
-                OverconstrainedError -> m result
-getConstraint self
-  = liftIO (fromJSString <$> (js_getConstraint self))
+-- | <https://developer.mozilla.org/docs/Web/API/OverconstrainedError/constraint MDN OverconstrainedError.constraint documentation>
+getConstraint :: (MonadDOM m, FromJSString result) => OverconstrainedError -> m result
+getConstraint self = liftDOM ((fromJSString <$> (js_getConstraint (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.OverconstrainedErrorEvent
-       (js_newOverconstrainedErrorEvent, newOverconstrainedErrorEvent,
-        js_getError, getError, getErrorUnsafe, getErrorUnchecked,
-        OverconstrainedErrorEvent(..), gTypeOverconstrainedErrorEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"OverconstrainedErrorEvent\"]($1,\n$2); })"
-        js_newOverconstrainedErrorEvent ::
-        JSString ->
-          Optional OverconstrainedErrorEventInit ->
-            IO OverconstrainedErrorEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent Mozilla OverconstrainedErrorEvent documentation> 
-newOverconstrainedErrorEvent ::
-                             (MonadIO m, ToJSString type') =>
-                               type' ->
-                                 Maybe OverconstrainedErrorEventInit -> m OverconstrainedErrorEvent
-newOverconstrainedErrorEvent type' eventInitDict
-  = liftIO
-      (js_newOverconstrainedErrorEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        OverconstrainedErrorEvent -> IO (Nullable OverconstrainedError)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
-getError ::
-         (MonadIO m) =>
-           OverconstrainedErrorEvent -> m (Maybe OverconstrainedError)
-getError self = liftIO (nullableToMaybe <$> (js_getError self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
-getErrorUnsafe ::
-               (MonadIO m, HasCallStack) =>
-                 OverconstrainedErrorEvent -> m OverconstrainedError
-getErrorUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getError self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
-getErrorUnchecked ::
-                  (MonadIO m) => OverconstrainedErrorEvent -> m OverconstrainedError
-getErrorUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getError self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.OverflowEvent
-       (js_newOverflowEvent, newOverflowEvent, pattern HORIZONTAL,
-        pattern VERTICAL, pattern BOTH, js_getOrient, getOrient,
-        js_getHorizontalOverflow, getHorizontalOverflow,
-        js_getVerticalOverflow, getVerticalOverflow, OverflowEvent(..),
-        gTypeOverflowEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"OverflowEvent\"]($1,\n$2); })" js_newOverflowEvent ::
-        JSString -> Optional OverflowEventInit -> IO OverflowEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation> 
-newOverflowEvent ::
-                 (MonadIO m, ToJSString type') =>
-                   type' -> Maybe OverflowEventInit -> m OverflowEvent
-newOverflowEvent type' eventInitDict
-  = liftIO
-      (js_newOverflowEvent (toJSString type')
-         (maybeToOptional eventInitDict))
-pattern HORIZONTAL = 0
-pattern VERTICAL = 1
-pattern BOTH = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"orient\"]; })" js_getOrient ::
-        OverflowEvent -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.orient Mozilla OverflowEvent.orient documentation> 
-getOrient :: (MonadIO m) => OverflowEvent -> m Word
-getOrient self = liftIO (js_getOrient self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"horizontalOverflow\"] ? 1 : 0); })" js_getHorizontalOverflow ::
-        OverflowEvent -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.horizontalOverflow Mozilla OverflowEvent.horizontalOverflow documentation> 
-getHorizontalOverflow :: (MonadIO m) => OverflowEvent -> m Bool
-getHorizontalOverflow self = liftIO (js_getHorizontalOverflow self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"verticalOverflow\"] ? 1 : 0); })" js_getVerticalOverflow ::
-        OverflowEvent -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.verticalOverflow Mozilla OverflowEvent.verticalOverflow documentation> 
-getVerticalOverflow :: (MonadIO m) => OverflowEvent -> m Bool
-getVerticalOverflow self = liftIO (js_getVerticalOverflow self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageRevealEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PageRevealEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageRevealEvent.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PageRevealEvent
+       (js_newPageRevealEvent, js_getViewTransition, newPageRevealEvent, getViewTransition, getViewTransitionUnsafe, getViewTransitionUnchecked, PageRevealEvent(..), gTypePageRevealEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PageRevealEvent\"]($1, $2); })"
+        js_newPageRevealEvent :: JSString -> JSVal -> IO PageRevealEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PageRevealEvent/PageRevealEvent MDN PageRevealEvent. documentation>
+newPageRevealEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PageRevealEventInit -> m PageRevealEvent
+newPageRevealEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPageRevealEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewTransition\"]; })"
+        js_getViewTransition :: PageRevealEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PageRevealEvent/viewTransition MDN PageRevealEvent.viewTransition documentation>
+getViewTransition :: (MonadDOM m) => PageRevealEvent -> m (Maybe ViewTransition)
+getViewTransition self = liftDOM (((js_getViewTransition (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageRevealEvent/viewTransition MDN PageRevealEvent.viewTransition documentation>
+getViewTransitionUnsafe :: (MonadDOM m, HasCallStack) => PageRevealEvent -> m ViewTransition
+getViewTransitionUnsafe self = liftDOM ((((js_getViewTransition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageRevealEvent/viewTransition MDN PageRevealEvent.viewTransition documentation>
+getViewTransitionUnchecked :: (MonadDOM m) => PageRevealEvent -> m ViewTransition
+getViewTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getViewTransition (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageRevealEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PageRevealEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageRevealEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PageRevealEventInit
+       (js_newPageRevealEventInit, js_setViewTransition, js_getViewTransition, newPageRevealEventInit, setViewTransition, getViewTransition, getViewTransitionUnsafe, getViewTransitionUnchecked, PageRevealEventInit(..), gTypePageRevealEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPageRevealEventInit :: IO PageRevealEventInit
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#pagerevealeventinit PageRevealEventInit specification>
+newPageRevealEventInit :: (MonadDOM m) => m PageRevealEventInit
+newPageRevealEventInit = liftDOM ((js_newPageRevealEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"viewTransition\"] = $2; })"
+        js_setViewTransition :: PageRevealEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pagerevealeventinit-viewtransition PageRevealEventInit.viewTransition specification>
+setViewTransition :: (MonadDOM m) => PageRevealEventInit -> Maybe ViewTransition -> m ()
+setViewTransition self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setViewTransition (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewTransition\"]; })"
+        js_getViewTransition :: PageRevealEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pagerevealeventinit-viewtransition PageRevealEventInit.viewTransition specification>
+getViewTransition :: (MonadDOM m) => PageRevealEventInit -> m (Maybe ViewTransition)
+getViewTransition self = liftDOM (((js_getViewTransition (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pagerevealeventinit-viewtransition PageRevealEventInit.viewTransition specification>
+getViewTransitionUnsafe :: (MonadDOM m, HasCallStack) => PageRevealEventInit -> m ViewTransition
+getViewTransitionUnsafe self = liftDOM ((((js_getViewTransition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pagerevealeventinit-viewtransition PageRevealEventInit.viewTransition specification>
+getViewTransitionUnchecked :: (MonadDOM m) => PageRevealEventInit -> m ViewTransition
+getViewTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getViewTransition (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageSwapEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PageSwapEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageSwapEvent.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PageSwapEvent
+       (js_newPageSwapEvent, js_getActivation, js_getViewTransition, newPageSwapEvent, getActivation, getActivationUnsafe, getActivationUnchecked, getViewTransition, getViewTransitionUnsafe, getViewTransitionUnchecked, PageSwapEvent(..), gTypePageSwapEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PageSwapEvent\"]($1, $2); })"
+        js_newPageSwapEvent :: JSString -> JSVal -> IO PageSwapEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/PageSwapEvent MDN PageSwapEvent. documentation>
+newPageSwapEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PageSwapEventInit -> m PageSwapEvent
+newPageSwapEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPageSwapEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"activation\"]; })"
+        js_getActivation :: PageSwapEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/activation MDN PageSwapEvent.activation documentation>
+getActivation :: (MonadDOM m) => PageSwapEvent -> m (Maybe NavigationActivation)
+getActivation self = liftDOM (((js_getActivation (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/activation MDN PageSwapEvent.activation documentation>
+getActivationUnsafe :: (MonadDOM m, HasCallStack) => PageSwapEvent -> m NavigationActivation
+getActivationUnsafe self = liftDOM ((((js_getActivation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/activation MDN PageSwapEvent.activation documentation>
+getActivationUnchecked :: (MonadDOM m) => PageSwapEvent -> m NavigationActivation
+getActivationUnchecked self = liftDOM ((pFromJSVal <$> (js_getActivation (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewTransition\"]; })"
+        js_getViewTransition :: PageSwapEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/viewTransition MDN PageSwapEvent.viewTransition documentation>
+getViewTransition :: (MonadDOM m) => PageSwapEvent -> m (Maybe ViewTransition)
+getViewTransition self = liftDOM (((js_getViewTransition (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/viewTransition MDN PageSwapEvent.viewTransition documentation>
+getViewTransitionUnsafe :: (MonadDOM m, HasCallStack) => PageSwapEvent -> m ViewTransition
+getViewTransitionUnsafe self = liftDOM ((((js_getViewTransition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/viewTransition MDN PageSwapEvent.viewTransition documentation>
+getViewTransitionUnchecked :: (MonadDOM m) => PageSwapEvent -> m ViewTransition
+getViewTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getViewTransition (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageSwapEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PageSwapEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageSwapEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PageSwapEventInit
+       (js_newPageSwapEventInit, js_setActivation, js_getActivation, js_setViewTransition, js_getViewTransition, newPageSwapEventInit, setActivation, getActivation, getActivationUnsafe, getActivationUnchecked, setViewTransition, getViewTransition, getViewTransitionUnsafe, getViewTransitionUnchecked, PageSwapEventInit(..), gTypePageSwapEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPageSwapEventInit :: IO PageSwapEventInit
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#pageswapeventinit PageSwapEventInit specification>
+newPageSwapEventInit :: (MonadDOM m) => m PageSwapEventInit
+newPageSwapEventInit = liftDOM ((js_newPageSwapEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"activation\"] = $2; })"
+        js_setActivation :: PageSwapEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-activation PageSwapEventInit.activation specification>
+setActivation :: (MonadDOM m) => PageSwapEventInit -> Maybe NavigationActivation -> m ()
+setActivation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setActivation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"activation\"]; })"
+        js_getActivation :: PageSwapEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-activation PageSwapEventInit.activation specification>
+getActivation :: (MonadDOM m) => PageSwapEventInit -> m (Maybe NavigationActivation)
+getActivation self = liftDOM (((js_getActivation (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-activation PageSwapEventInit.activation specification>
+getActivationUnsafe :: (MonadDOM m, HasCallStack) => PageSwapEventInit -> m NavigationActivation
+getActivationUnsafe self = liftDOM ((((js_getActivation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-activation PageSwapEventInit.activation specification>
+getActivationUnchecked :: (MonadDOM m) => PageSwapEventInit -> m NavigationActivation
+getActivationUnchecked self = liftDOM ((pFromJSVal <$> (js_getActivation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"viewTransition\"] = $2; })"
+        js_setViewTransition :: PageSwapEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-viewtransition PageSwapEventInit.viewTransition specification>
+setViewTransition :: (MonadDOM m) => PageSwapEventInit -> Maybe ViewTransition -> m ()
+setViewTransition self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setViewTransition (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"viewTransition\"]; })"
+        js_getViewTransition :: PageSwapEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-viewtransition PageSwapEventInit.viewTransition specification>
+getViewTransition :: (MonadDOM m) => PageSwapEventInit -> m (Maybe ViewTransition)
+getViewTransition self = liftDOM (((js_getViewTransition (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-viewtransition PageSwapEventInit.viewTransition specification>
+getViewTransitionUnsafe :: (MonadDOM m, HasCallStack) => PageSwapEventInit -> m ViewTransition
+getViewTransitionUnsafe self = liftDOM ((((js_getViewTransition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-pageswapeventinit-viewtransition PageSwapEventInit.viewTransition specification>
+getViewTransitionUnchecked :: (MonadDOM m) => PageSwapEventInit -> m ViewTransition
+getViewTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getViewTransition (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
@@ -1,50 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
-       (js_newPageTransitionEvent, newPageTransitionEvent,
-        js_getPersisted, getPersisted, PageTransitionEvent(..),
-        gTypePageTransitionEvent)
+       (js_newPageTransitionEvent, js_getPersisted, newPageTransitionEvent, getPersisted, PageTransitionEvent(..), gTypePageTransitionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"PageTransitionEvent\"]($1,\n$2); })"
-        js_newPageTransitionEvent ::
-        JSString ->
-          Optional PageTransitionEventInit -> IO PageTransitionEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation> 
-newPageTransitionEvent ::
-                       (MonadIO m, ToJSString type') =>
-                         type' -> Maybe PageTransitionEventInit -> m PageTransitionEvent
-newPageTransitionEvent type' eventInitDict
-  = liftIO
-      (js_newPageTransitionEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"persisted\"] ? 1 : 0); })"
-        js_getPersisted :: PageTransitionEvent -> IO Bool
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PageTransitionEvent\"]($1, $2); })"
+        js_newPageTransitionEvent :: JSString -> JSVal -> IO PageTransitionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PageTransitionEvent/PageTransitionEvent MDN PageTransitionEvent. documentation>
+newPageTransitionEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PageTransitionEventInit -> m PageTransitionEvent
+newPageTransitionEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPageTransitionEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent.persisted Mozilla PageTransitionEvent.persisted documentation> 
-getPersisted :: (MonadIO m) => PageTransitionEvent -> m Bool
-getPersisted self = liftIO (js_getPersisted self)
+foreign import javascript unsafe "(($1) => { return $1[\"persisted\"]; })"
+        js_getPersisted :: PageTransitionEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/PageTransitionEvent/persisted MDN PageTransitionEvent.persisted documentation>
+getPersisted :: (MonadDOM m) => PageTransitionEvent -> m Bool
+getPersisted self = liftDOM ((js_getPersisted (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEventInit.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PageTransitionEventInit
+       (js_newPageTransitionEventInit, js_setPersisted, js_getPersisted, newPageTransitionEventInit, setPersisted, getPersisted, getPersistedUnsafe, getPersistedUnchecked, PageTransitionEventInit(..), gTypePageTransitionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPageTransitionEventInit :: IO PageTransitionEventInit
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#pagetransitioneventinit PageTransitionEventInit specification>
+newPageTransitionEventInit :: (MonadDOM m) => m PageTransitionEventInit
+newPageTransitionEventInit = liftDOM ((js_newPageTransitionEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"persisted\"] = $2; })"
+        js_setPersisted :: PageTransitionEventInit -> Bool -> IO ()
+setPersisted :: (MonadDOM m) => PageTransitionEventInit -> Bool -> m ()
+setPersisted self val = liftDOM (void ((js_setPersisted (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"persisted\"]; })"
+        js_getPersisted :: PageTransitionEventInit -> IO JSVal
+getPersisted :: (MonadDOM m) => PageTransitionEventInit -> m (Maybe Bool)
+getPersisted self = liftDOM (((js_getPersisted (self)) >>= fromJSValUnchecked))
+
+getPersistedUnsafe :: (MonadDOM m, HasCallStack) => PageTransitionEventInit -> m Bool
+getPersistedUnsafe self = liftDOM ((((js_getPersisted (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPersistedUnchecked :: (MonadDOM m) => PageTransitionEventInit -> m Bool
+getPersistedUnchecked self = liftDOM ((pFromJSVal <$> (js_getPersisted (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaintTimingMixin.hs b/src/GHCJS/DOM/JSFFI/Generated/PaintTimingMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaintTimingMixin.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from paint-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaintTimingMixin
+       (js_getPaintTime, js_getPresentationTime, getPaintTime, getPresentationTime, getPresentationTimeUnsafe, getPresentationTimeUnchecked, PaintTimingMixin(..), gTypePaintTimingMixin, IsPaintTimingMixin, toPaintTimingMixin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"paintTime\"]; })"
+        js_getPaintTime :: PaintTimingMixin -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/InteractionContentfulPaint/paintTime MDN PaintTimingMixin.paintTime documentation>
+getPaintTime :: (MonadDOM m, IsPaintTimingMixin self) => self -> m Double
+getPaintTime self = liftDOM ((js_getPaintTime ((Types.toPaintTimingMixin self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"presentationTime\"]; })"
+        js_getPresentationTime :: PaintTimingMixin -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/InteractionContentfulPaint/presentationTime MDN PaintTimingMixin.presentationTime documentation>
+getPresentationTime :: (MonadDOM m, IsPaintTimingMixin self) => self -> m (Maybe Double)
+getPresentationTime self = liftDOM (((js_getPresentationTime ((Types.toPaintTimingMixin self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/InteractionContentfulPaint/presentationTime MDN PaintTimingMixin.presentationTime documentation>
+getPresentationTimeUnsafe :: (MonadDOM m, IsPaintTimingMixin self, HasCallStack) => self -> m Double
+getPresentationTimeUnsafe self = liftDOM ((((js_getPresentationTime ((Types.toPaintTimingMixin self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/InteractionContentfulPaint/presentationTime MDN PaintTimingMixin.presentationTime documentation>
+getPresentationTimeUnchecked :: (MonadDOM m, IsPaintTimingMixin self) => self -> m Double
+getPresentationTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getPresentationTime ((Types.toPaintTimingMixin self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs b/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
@@ -1,182 +1,167 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PannerNode
-       (js_setPosition, setPosition, js_setOrientation, setOrientation,
-        js_setVelocity, setVelocity, js_setPanningModel, setPanningModel,
-        js_getPanningModel, getPanningModel, js_setDistanceModel,
-        setDistanceModel, js_getDistanceModel, getDistanceModel,
-        js_setRefDistance, setRefDistance, js_getRefDistance,
-        getRefDistance, js_setMaxDistance, setMaxDistance,
-        js_getMaxDistance, getMaxDistance, js_setRolloffFactor,
-        setRolloffFactor, js_getRolloffFactor, getRolloffFactor,
-        js_setConeInnerAngle, setConeInnerAngle, js_getConeInnerAngle,
-        getConeInnerAngle, js_setConeOuterAngle, setConeOuterAngle,
-        js_getConeOuterAngle, getConeOuterAngle, js_setConeOuterGain,
-        setConeOuterGain, js_getConeOuterGain, getConeOuterGain,
-        PannerNode(..), gTypePannerNode)
+       (js_newPannerNode, js_setOrientation, js_setPosition, js_setPanningModel, js_getPanningModel, js_getPositionX, js_getPositionY, js_getPositionZ, js_getOrientationX, js_getOrientationY, js_getOrientationZ, js_setDistanceModel, js_getDistanceModel, js_setRefDistance, js_getRefDistance, js_setMaxDistance, js_getMaxDistance, js_setRolloffFactor, js_getRolloffFactor, js_setConeInnerAngle, js_getConeInnerAngle, js_setConeOuterAngle, js_getConeOuterAngle, js_setConeOuterGain, js_getConeOuterGain, newPannerNode, setOrientation, setPosition, setPanningModel, getPanningModel, getPositionX, getPositionY, getPositionZ, getOrientationX, getOrientationY, getOrientationZ, setDistanceModel, getDistanceModel, setRefDistance, getRefDistance, setMaxDistance, getMaxDistance, setRolloffFactor, getRolloffFactor, setConeInnerAngle, getConeInnerAngle, setConeOuterAngle, getConeOuterAngle, setConeOuterGain, getConeOuterGain, PannerNode(..), gTypePannerNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setPosition\"]($2, $3, $4); })"
-        js_setPosition :: PannerNode -> Float -> Float -> Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setPosition Mozilla webkitAudioPannerNode.setPosition documentation> 
-setPosition ::
-            (MonadIO m) => PannerNode -> Float -> Float -> Float -> m ()
-setPosition self x y z = liftIO (js_setPosition self x y z)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"setOrientation\"]($2, $3, $4); })" js_setOrientation ::
-        PannerNode -> Float -> Float -> Float -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PannerNode\"]($1, $2); })"
+        js_newPannerNode :: BaseAudioContext -> JSVal -> IO PannerNode
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/PannerNode MDN PannerNode. documentation>
+newPannerNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe PannerOptions -> m PannerNode
+newPannerNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newPannerNode (Types.toBaseAudioContext context) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setOrientation Mozilla webkitAudioPannerNode.setOrientation documentation> 
-setOrientation ::
-               (MonadIO m) => PannerNode -> Float -> Float -> Float -> m ()
-setOrientation self x y z = liftIO (js_setOrientation self x y z)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setVelocity\"]($2, $3, $4); })"
-        js_setVelocity :: PannerNode -> Float -> Float -> Float -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setOrientation\"]($2, $3, $4); })"
+        js_setOrientation :: PannerNode -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/setOrientation MDN PannerNode.setOrientation documentation>
+setOrientation :: (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
+setOrientation self x y z = liftDOM (void ((js_setOrientation (self) (x) (y) (z))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setVelocity Mozilla webkitAudioPannerNode.setVelocity documentation> 
-setVelocity ::
-            (MonadIO m) => PannerNode -> Float -> Float -> Float -> m ()
-setVelocity self x y z = liftIO (js_setVelocity self x y z)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"panningModel\"] = $2; })"
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setPosition\"]($2, $3, $4); })"
+        js_setPosition :: PannerNode -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/setPosition MDN PannerNode.setPosition documentation>
+setPosition :: (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
+setPosition self x y z = liftDOM (void ((js_setPosition (self) (x) (y) (z))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"panningModel\"] = $2; })"
         js_setPanningModel :: PannerNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/panningModel MDN PannerNode.panningModel documentation>
+setPanningModel :: (MonadDOM m) => PannerNode -> PanningModelType -> m ()
+setPanningModel self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPanningModel (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
-setPanningModel ::
-                (MonadIO m) => PannerNode -> PanningModelType -> m ()
-setPanningModel self val
-  = liftIO (js_setPanningModel self (pToJSVal val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"panningModel\"]; })"
         js_getPanningModel :: PannerNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/panningModel MDN PannerNode.panningModel documentation>
+getPanningModel :: (MonadDOM m) => PannerNode -> m PanningModelType
+getPanningModel self = liftDOM (((js_getPanningModel (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
-getPanningModel :: (MonadIO m) => PannerNode -> m PanningModelType
-getPanningModel self
-  = liftIO ((js_getPanningModel self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"distanceModel\"] = $2; })"
+foreign import javascript unsafe "(($1) => { return $1[\"positionX\"]; })"
+        js_getPositionX :: PannerNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/positionX MDN PannerNode.positionX documentation>
+getPositionX :: (MonadDOM m) => PannerNode -> m AudioParam
+getPositionX self = liftDOM ((js_getPositionX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"positionY\"]; })"
+        js_getPositionY :: PannerNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/positionY MDN PannerNode.positionY documentation>
+getPositionY :: (MonadDOM m) => PannerNode -> m AudioParam
+getPositionY self = liftDOM ((js_getPositionY (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"positionZ\"]; })"
+        js_getPositionZ :: PannerNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/positionZ MDN PannerNode.positionZ documentation>
+getPositionZ :: (MonadDOM m) => PannerNode -> m AudioParam
+getPositionZ self = liftDOM ((js_getPositionZ (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"orientationX\"]; })"
+        js_getOrientationX :: PannerNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/orientationX MDN PannerNode.orientationX documentation>
+getOrientationX :: (MonadDOM m) => PannerNode -> m AudioParam
+getOrientationX self = liftDOM ((js_getOrientationX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"orientationY\"]; })"
+        js_getOrientationY :: PannerNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/orientationY MDN PannerNode.orientationY documentation>
+getOrientationY :: (MonadDOM m) => PannerNode -> m AudioParam
+getOrientationY self = liftDOM ((js_getOrientationY (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"orientationZ\"]; })"
+        js_getOrientationZ :: PannerNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/orientationZ MDN PannerNode.orientationZ documentation>
+getOrientationZ :: (MonadDOM m) => PannerNode -> m AudioParam
+getOrientationZ self = liftDOM ((js_getOrientationZ (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"distanceModel\"] = $2; })"
         js_setDistanceModel :: PannerNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/distanceModel MDN PannerNode.distanceModel documentation>
+setDistanceModel :: (MonadDOM m) => PannerNode -> DistanceModelType -> m ()
+setDistanceModel self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDistanceModel (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
-setDistanceModel ::
-                 (MonadIO m) => PannerNode -> DistanceModelType -> m ()
-setDistanceModel self val
-  = liftIO (js_setDistanceModel self (pToJSVal val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"distanceModel\"]; })"
         js_getDistanceModel :: PannerNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/distanceModel MDN PannerNode.distanceModel documentation>
+getDistanceModel :: (MonadDOM m) => PannerNode -> m DistanceModelType
+getDistanceModel self = liftDOM (((js_getDistanceModel (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
-getDistanceModel ::
-                 (MonadIO m) => PannerNode -> m DistanceModelType
-getDistanceModel self
-  = liftIO ((js_getDistanceModel self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"refDistance\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"refDistance\"] = $2; })"
         js_setRefDistance :: PannerNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/refDistance MDN PannerNode.refDistance documentation>
+setRefDistance :: (MonadDOM m) => PannerNode -> Double -> m ()
+setRefDistance self val = liftDOM (void ((js_setRefDistance (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
-setRefDistance :: (MonadIO m) => PannerNode -> Double -> m ()
-setRefDistance self val = liftIO (js_setRefDistance self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"refDistance\"]; })"
         js_getRefDistance :: PannerNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/refDistance MDN PannerNode.refDistance documentation>
+getRefDistance :: (MonadDOM m) => PannerNode -> m Double
+getRefDistance self = liftDOM ((js_getRefDistance (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
-getRefDistance :: (MonadIO m) => PannerNode -> m Double
-getRefDistance self = liftIO (js_getRefDistance self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"maxDistance\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"maxDistance\"] = $2; })"
         js_setMaxDistance :: PannerNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/maxDistance MDN PannerNode.maxDistance documentation>
+setMaxDistance :: (MonadDOM m) => PannerNode -> Double -> m ()
+setMaxDistance self val = liftDOM (void ((js_setMaxDistance (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
-setMaxDistance :: (MonadIO m) => PannerNode -> Double -> m ()
-setMaxDistance self val = liftIO (js_setMaxDistance self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"maxDistance\"]; })"
         js_getMaxDistance :: PannerNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/maxDistance MDN PannerNode.maxDistance documentation>
+getMaxDistance :: (MonadDOM m) => PannerNode -> m Double
+getMaxDistance self = liftDOM ((js_getMaxDistance (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
-getMaxDistance :: (MonadIO m) => PannerNode -> m Double
-getMaxDistance self = liftIO (js_getMaxDistance self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rolloffFactor\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"rolloffFactor\"] = $2; })"
         js_setRolloffFactor :: PannerNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/rolloffFactor MDN PannerNode.rolloffFactor documentation>
+setRolloffFactor :: (MonadDOM m) => PannerNode -> Double -> m ()
+setRolloffFactor self val = liftDOM (void ((js_setRolloffFactor (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
-setRolloffFactor :: (MonadIO m) => PannerNode -> Double -> m ()
-setRolloffFactor self val = liftIO (js_setRolloffFactor self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"rolloffFactor\"]; })"
         js_getRolloffFactor :: PannerNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/rolloffFactor MDN PannerNode.rolloffFactor documentation>
+getRolloffFactor :: (MonadDOM m) => PannerNode -> m Double
+getRolloffFactor self = liftDOM ((js_getRolloffFactor (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
-getRolloffFactor :: (MonadIO m) => PannerNode -> m Double
-getRolloffFactor self = liftIO (js_getRolloffFactor self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"coneInnerAngle\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"coneInnerAngle\"] = $2; })"
         js_setConeInnerAngle :: PannerNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneInnerAngle MDN PannerNode.coneInnerAngle documentation>
+setConeInnerAngle :: (MonadDOM m) => PannerNode -> Double -> m ()
+setConeInnerAngle self val = liftDOM (void ((js_setConeInnerAngle (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
-setConeInnerAngle :: (MonadIO m) => PannerNode -> Double -> m ()
-setConeInnerAngle self val = liftIO (js_setConeInnerAngle self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"coneInnerAngle\"]; })"
         js_getConeInnerAngle :: PannerNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneInnerAngle MDN PannerNode.coneInnerAngle documentation>
+getConeInnerAngle :: (MonadDOM m) => PannerNode -> m Double
+getConeInnerAngle self = liftDOM ((js_getConeInnerAngle (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
-getConeInnerAngle :: (MonadIO m) => PannerNode -> m Double
-getConeInnerAngle self = liftIO (js_getConeInnerAngle self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"coneOuterAngle\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"coneOuterAngle\"] = $2; })"
         js_setConeOuterAngle :: PannerNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterAngle MDN PannerNode.coneOuterAngle documentation>
+setConeOuterAngle :: (MonadDOM m) => PannerNode -> Double -> m ()
+setConeOuterAngle self val = liftDOM (void ((js_setConeOuterAngle (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
-setConeOuterAngle :: (MonadIO m) => PannerNode -> Double -> m ()
-setConeOuterAngle self val = liftIO (js_setConeOuterAngle self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"coneOuterAngle\"]; })"
         js_getConeOuterAngle :: PannerNode -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterAngle MDN PannerNode.coneOuterAngle documentation>
+getConeOuterAngle :: (MonadDOM m) => PannerNode -> m Double
+getConeOuterAngle self = liftDOM ((js_getConeOuterAngle (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
-getConeOuterAngle :: (MonadIO m) => PannerNode -> m Double
-getConeOuterAngle self = liftIO (js_getConeOuterAngle self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"coneOuterGain\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"coneOuterGain\"] = $2; })"
         js_setConeOuterGain :: PannerNode -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterGain MDN PannerNode.coneOuterGain documentation>
+setConeOuterGain :: (MonadDOM m) => PannerNode -> Double -> m ()
+setConeOuterGain self val = liftDOM (void ((js_setConeOuterGain (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
-setConeOuterGain :: (MonadIO m) => PannerNode -> Double -> m ()
-setConeOuterGain self val = liftIO (js_setConeOuterGain self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"coneOuterGain\"]; })"
         js_getConeOuterGain :: PannerNode -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
-getConeOuterGain :: (MonadIO m) => PannerNode -> m Double
-getConeOuterGain self = liftIO (js_getConeOuterGain self)
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterGain MDN PannerNode.coneOuterGain documentation>
+getConeOuterGain :: (MonadDOM m) => PannerNode -> m Double
+getConeOuterGain self = liftDOM ((js_getConeOuterGain (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PannerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PannerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PannerOptions.hs
@@ -0,0 +1,303 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PannerOptions
+       (js_newPannerOptions, js_setPanningModel, js_getPanningModel, js_setDistanceModel, js_getDistanceModel, js_setPositionX, js_getPositionX, js_setPositionY, js_getPositionY, js_setPositionZ, js_getPositionZ, js_setOrientationX, js_getOrientationX, js_setOrientationY, js_getOrientationY, js_setOrientationZ, js_getOrientationZ, js_setRefDistance, js_getRefDistance, js_setMaxDistance, js_getMaxDistance, js_setRolloffFactor, js_getRolloffFactor, js_setConeInnerAngle, js_getConeInnerAngle, js_setConeOuterAngle, js_getConeOuterAngle, js_setConeOuterGain, js_getConeOuterGain, newPannerOptions, setPanningModel, getPanningModel, getPanningModelUnsafe, getPanningModelUnchecked, setDistanceModel, getDistanceModel, getDistanceModelUnsafe, getDistanceModelUnchecked, setPositionX, getPositionX, getPositionXUnsafe, getPositionXUnchecked, setPositionY, getPositionY, getPositionYUnsafe, getPositionYUnchecked, setPositionZ, getPositionZ, getPositionZUnsafe, getPositionZUnchecked, setOrientationX, getOrientationX, getOrientationXUnsafe, getOrientationXUnchecked, setOrientationY, getOrientationY, getOrientationYUnsafe, getOrientationYUnchecked, setOrientationZ, getOrientationZ, getOrientationZUnsafe, getOrientationZUnchecked, setRefDistance, getRefDistance, getRefDistanceUnsafe, getRefDistanceUnchecked, setMaxDistance, getMaxDistance, getMaxDistanceUnsafe, getMaxDistanceUnchecked, setRolloffFactor, getRolloffFactor, getRolloffFactorUnsafe, getRolloffFactorUnchecked, setConeInnerAngle, getConeInnerAngle, getConeInnerAngleUnsafe, getConeInnerAngleUnchecked, setConeOuterAngle, getConeOuterAngle, getConeOuterAngleUnsafe, getConeOuterAngleUnchecked, setConeOuterGain, getConeOuterGain, getConeOuterGainUnsafe, getConeOuterGainUnchecked, PannerOptions(..), gTypePannerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPannerOptions :: IO PannerOptions
+-- | <https://webaudio.github.io/web-audio-api/#PannerOptions PannerOptions specification>
+newPannerOptions :: (MonadDOM m) => m PannerOptions
+newPannerOptions = liftDOM ((js_newPannerOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"panningModel\"] = $2; })"
+        js_setPanningModel :: PannerOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-panningmodel PannerOptions.panningModel specification>
+setPanningModel :: (MonadDOM m) => PannerOptions -> PanningModelType -> m ()
+setPanningModel self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPanningModel (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"panningModel\"]; })"
+        js_getPanningModel :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-panningmodel PannerOptions.panningModel specification>
+getPanningModel :: (MonadDOM m) => PannerOptions -> m (Maybe PanningModelType)
+getPanningModel self = liftDOM (((js_getPanningModel (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-panningmodel PannerOptions.panningModel specification>
+getPanningModelUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m PanningModelType
+getPanningModelUnsafe self = liftDOM ((((js_getPanningModel (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-panningmodel PannerOptions.panningModel specification>
+getPanningModelUnchecked :: (MonadDOM m) => PannerOptions -> m PanningModelType
+getPanningModelUnchecked self = liftDOM ((pFromJSVal <$> (js_getPanningModel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"distanceModel\"] = $2; })"
+        js_setDistanceModel :: PannerOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-distancemodel PannerOptions.distanceModel specification>
+setDistanceModel :: (MonadDOM m) => PannerOptions -> DistanceModelType -> m ()
+setDistanceModel self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDistanceModel (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"distanceModel\"]; })"
+        js_getDistanceModel :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-distancemodel PannerOptions.distanceModel specification>
+getDistanceModel :: (MonadDOM m) => PannerOptions -> m (Maybe DistanceModelType)
+getDistanceModel self = liftDOM (((js_getDistanceModel (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-distancemodel PannerOptions.distanceModel specification>
+getDistanceModelUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m DistanceModelType
+getDistanceModelUnsafe self = liftDOM ((((js_getDistanceModel (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-distancemodel PannerOptions.distanceModel specification>
+getDistanceModelUnchecked :: (MonadDOM m) => PannerOptions -> m DistanceModelType
+getDistanceModelUnchecked self = liftDOM ((pFromJSVal <$> (js_getDistanceModel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"positionX\"] = $2; })"
+        js_setPositionX :: PannerOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionx PannerOptions.positionX specification>
+setPositionX :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setPositionX self val = liftDOM (void ((js_setPositionX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"positionX\"]; })"
+        js_getPositionX :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionx PannerOptions.positionX specification>
+getPositionX :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getPositionX self = liftDOM (((js_getPositionX (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionx PannerOptions.positionX specification>
+getPositionXUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getPositionXUnsafe self = liftDOM ((((js_getPositionX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionx PannerOptions.positionX specification>
+getPositionXUnchecked :: (MonadDOM m) => PannerOptions -> m Float
+getPositionXUnchecked self = liftDOM ((pFromJSVal <$> (js_getPositionX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"positionY\"] = $2; })"
+        js_setPositionY :: PannerOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positiony PannerOptions.positionY specification>
+setPositionY :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setPositionY self val = liftDOM (void ((js_setPositionY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"positionY\"]; })"
+        js_getPositionY :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positiony PannerOptions.positionY specification>
+getPositionY :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getPositionY self = liftDOM (((js_getPositionY (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positiony PannerOptions.positionY specification>
+getPositionYUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getPositionYUnsafe self = liftDOM ((((js_getPositionY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positiony PannerOptions.positionY specification>
+getPositionYUnchecked :: (MonadDOM m) => PannerOptions -> m Float
+getPositionYUnchecked self = liftDOM ((pFromJSVal <$> (js_getPositionY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"positionZ\"] = $2; })"
+        js_setPositionZ :: PannerOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionz PannerOptions.positionZ specification>
+setPositionZ :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setPositionZ self val = liftDOM (void ((js_setPositionZ (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"positionZ\"]; })"
+        js_getPositionZ :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionz PannerOptions.positionZ specification>
+getPositionZ :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getPositionZ self = liftDOM (((js_getPositionZ (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionz PannerOptions.positionZ specification>
+getPositionZUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getPositionZUnsafe self = liftDOM ((((js_getPositionZ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionz PannerOptions.positionZ specification>
+getPositionZUnchecked :: (MonadDOM m) => PannerOptions -> m Float
+getPositionZUnchecked self = liftDOM ((pFromJSVal <$> (js_getPositionZ (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"orientationX\"] = $2; })"
+        js_setOrientationX :: PannerOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationx PannerOptions.orientationX specification>
+setOrientationX :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setOrientationX self val = liftDOM (void ((js_setOrientationX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"orientationX\"]; })"
+        js_getOrientationX :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationx PannerOptions.orientationX specification>
+getOrientationX :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getOrientationX self = liftDOM (((js_getOrientationX (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationx PannerOptions.orientationX specification>
+getOrientationXUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getOrientationXUnsafe self = liftDOM ((((js_getOrientationX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationx PannerOptions.orientationX specification>
+getOrientationXUnchecked :: (MonadDOM m) => PannerOptions -> m Float
+getOrientationXUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrientationX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"orientationY\"] = $2; })"
+        js_setOrientationY :: PannerOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationy PannerOptions.orientationY specification>
+setOrientationY :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setOrientationY self val = liftDOM (void ((js_setOrientationY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"orientationY\"]; })"
+        js_getOrientationY :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationy PannerOptions.orientationY specification>
+getOrientationY :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getOrientationY self = liftDOM (((js_getOrientationY (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationy PannerOptions.orientationY specification>
+getOrientationYUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getOrientationYUnsafe self = liftDOM ((((js_getOrientationY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationy PannerOptions.orientationY specification>
+getOrientationYUnchecked :: (MonadDOM m) => PannerOptions -> m Float
+getOrientationYUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrientationY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"orientationZ\"] = $2; })"
+        js_setOrientationZ :: PannerOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationz PannerOptions.orientationZ specification>
+setOrientationZ :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setOrientationZ self val = liftDOM (void ((js_setOrientationZ (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"orientationZ\"]; })"
+        js_getOrientationZ :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationz PannerOptions.orientationZ specification>
+getOrientationZ :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getOrientationZ self = liftDOM (((js_getOrientationZ (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationz PannerOptions.orientationZ specification>
+getOrientationZUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getOrientationZUnsafe self = liftDOM ((((js_getOrientationZ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationz PannerOptions.orientationZ specification>
+getOrientationZUnchecked :: (MonadDOM m) => PannerOptions -> m Float
+getOrientationZUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrientationZ (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"refDistance\"] = $2; })"
+        js_setRefDistance :: PannerOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-refdistance PannerOptions.refDistance specification>
+setRefDistance :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setRefDistance self val = liftDOM (void ((js_setRefDistance (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"refDistance\"]; })"
+        js_getRefDistance :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-refdistance PannerOptions.refDistance specification>
+getRefDistance :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getRefDistance self = liftDOM (((js_getRefDistance (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-refdistance PannerOptions.refDistance specification>
+getRefDistanceUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getRefDistanceUnsafe self = liftDOM ((((js_getRefDistance (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-refdistance PannerOptions.refDistance specification>
+getRefDistanceUnchecked :: (MonadDOM m) => PannerOptions -> m Double
+getRefDistanceUnchecked self = liftDOM ((pFromJSVal <$> (js_getRefDistance (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxDistance\"] = $2; })"
+        js_setMaxDistance :: PannerOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-maxdistance PannerOptions.maxDistance specification>
+setMaxDistance :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setMaxDistance self val = liftDOM (void ((js_setMaxDistance (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxDistance\"]; })"
+        js_getMaxDistance :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-maxdistance PannerOptions.maxDistance specification>
+getMaxDistance :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getMaxDistance self = liftDOM (((js_getMaxDistance (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-maxdistance PannerOptions.maxDistance specification>
+getMaxDistanceUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getMaxDistanceUnsafe self = liftDOM ((((js_getMaxDistance (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-maxdistance PannerOptions.maxDistance specification>
+getMaxDistanceUnchecked :: (MonadDOM m) => PannerOptions -> m Double
+getMaxDistanceUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxDistance (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rolloffFactor\"] = $2; })"
+        js_setRolloffFactor :: PannerOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-rollofffactor PannerOptions.rolloffFactor specification>
+setRolloffFactor :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setRolloffFactor self val = liftDOM (void ((js_setRolloffFactor (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rolloffFactor\"]; })"
+        js_getRolloffFactor :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-rollofffactor PannerOptions.rolloffFactor specification>
+getRolloffFactor :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getRolloffFactor self = liftDOM (((js_getRolloffFactor (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-rollofffactor PannerOptions.rolloffFactor specification>
+getRolloffFactorUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getRolloffFactorUnsafe self = liftDOM ((((js_getRolloffFactor (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-rollofffactor PannerOptions.rolloffFactor specification>
+getRolloffFactorUnchecked :: (MonadDOM m) => PannerOptions -> m Double
+getRolloffFactorUnchecked self = liftDOM ((pFromJSVal <$> (js_getRolloffFactor (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"coneInnerAngle\"] = $2; })"
+        js_setConeInnerAngle :: PannerOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneinnerangle PannerOptions.coneInnerAngle specification>
+setConeInnerAngle :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setConeInnerAngle self val = liftDOM (void ((js_setConeInnerAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"coneInnerAngle\"]; })"
+        js_getConeInnerAngle :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneinnerangle PannerOptions.coneInnerAngle specification>
+getConeInnerAngle :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getConeInnerAngle self = liftDOM (((js_getConeInnerAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneinnerangle PannerOptions.coneInnerAngle specification>
+getConeInnerAngleUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getConeInnerAngleUnsafe self = liftDOM ((((js_getConeInnerAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneinnerangle PannerOptions.coneInnerAngle specification>
+getConeInnerAngleUnchecked :: (MonadDOM m) => PannerOptions -> m Double
+getConeInnerAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getConeInnerAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"coneOuterAngle\"] = $2; })"
+        js_setConeOuterAngle :: PannerOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneouterangle PannerOptions.coneOuterAngle specification>
+setConeOuterAngle :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setConeOuterAngle self val = liftDOM (void ((js_setConeOuterAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"coneOuterAngle\"]; })"
+        js_getConeOuterAngle :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneouterangle PannerOptions.coneOuterAngle specification>
+getConeOuterAngle :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getConeOuterAngle self = liftDOM (((js_getConeOuterAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneouterangle PannerOptions.coneOuterAngle specification>
+getConeOuterAngleUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getConeOuterAngleUnsafe self = liftDOM ((((js_getConeOuterAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneouterangle PannerOptions.coneOuterAngle specification>
+getConeOuterAngleUnchecked :: (MonadDOM m) => PannerOptions -> m Double
+getConeOuterAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getConeOuterAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"coneOuterGain\"] = $2; })"
+        js_setConeOuterGain :: PannerOptions -> Double -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneoutergain PannerOptions.coneOuterGain specification>
+setConeOuterGain :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setConeOuterGain self val = liftDOM (void ((js_setConeOuterGain (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"coneOuterGain\"]; })"
+        js_getConeOuterGain :: PannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneoutergain PannerOptions.coneOuterGain specification>
+getConeOuterGain :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getConeOuterGain self = liftDOM (((js_getConeOuterGain (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneoutergain PannerOptions.coneOuterGain specification>
+getConeOuterGainUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getConeOuterGainUnsafe self = liftDOM ((((js_getConeOuterGain (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneoutergain PannerOptions.coneOuterGain specification>
+getConeOuterGainUnchecked :: (MonadDOM m) => PannerOptions -> m Double
+getConeOuterGainUnchecked self = liftDOM ((pFromJSVal <$> (js_getConeOuterGain (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
@@ -1,190 +1,109 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ParentNode
-       (js_prepend, prepend, js_append, append, js_querySelector,
-        querySelector, querySelector_, querySelectorUnsafe,
-        querySelectorUnchecked, js_querySelectorAll, querySelectorAll,
-        querySelectorAll_, js_getChildren, getChildren,
-        js_getFirstElementChild, getFirstElementChild,
-        getFirstElementChildUnsafe, getFirstElementChildUnchecked,
-        js_getLastElementChild, getLastElementChild,
-        getLastElementChildUnsafe, getLastElementChildUnchecked,
-        js_getChildElementCount, getChildElementCount, ParentNode(..),
-        gTypeParentNode, IsParentNode, toParentNode)
+       (js_append, js_moveBefore, js_prepend, js_querySelector, js_querySelectorAll, js_replaceChildren, js_getChildren, js_getFirstElementChild, js_getLastElementChild, js_getChildElementCount, append, moveBefore, prepend, querySelector, querySelector_, querySelectorUnsafe, querySelectorUnchecked, querySelectorAll, querySelectorAll_, replaceChildren, getChildren, getFirstElementChild, getFirstElementChildUnsafe, getFirstElementChildUnchecked, getLastElementChild, getLastElementChildUnsafe, getLastElementChildUnchecked, getChildElementCount, ParentNode(..), gTypeParentNode, IsParentNode, toParentNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"prepend\"]($2); })" js_prepend ::
-        ParentNode -> JSVal -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.prepend Mozilla ParentNode.prepend documentation> 
-prepend ::
-        (MonadIO m, IsParentNode self, IsNodeOrString nodes) =>
-          self -> [nodes] -> m ()
-prepend self nodes
-  = liftIO
-      (toJSVal nodes >>=
-         \ nodes' -> js_prepend (toParentNode self) nodes')
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"append\"]($2); })" js_append ::
-        ParentNode -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"append\"](...$2); })"
+        js_append :: ParentNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/append MDN ParentNode.append documentation>
+append :: (MonadDOM m, IsParentNode self, IsNodeOrString nodes) => self -> [nodes] -> m ()
+append self nodes = liftDOM (void (((toJSVal nodes) >>= \a2' -> js_append ((Types.toParentNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.append Mozilla ParentNode.append documentation> 
-append ::
-       (MonadIO m, IsParentNode self, IsNodeOrString nodes) =>
-         self -> [nodes] -> m ()
-append self nodes
-  = liftIO
-      (toJSVal nodes >>=
-         \ nodes' -> js_append (toParentNode self) nodes')
- 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"moveBefore\"]($2, $3); })"
+        js_moveBefore :: ParentNode -> Node -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/moveBefore MDN ParentNode.moveBefore documentation>
+moveBefore :: (MonadDOM m, IsParentNode self, IsNode node, IsNode child) => self -> node -> Maybe child -> m ()
+moveBefore self node child = liftDOM (void (((toJSVal child) >>= \a3' -> js_moveBefore ((Types.toParentNode self)) (Types.toNode node) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"prepend\"](...$2); })"
+        js_prepend :: ParentNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/prepend MDN ParentNode.prepend documentation>
+prepend :: (MonadDOM m, IsParentNode self, IsNodeOrString nodes) => self -> [nodes] -> m ()
+prepend self nodes = liftDOM (void (((toJSVal nodes) >>= \a2' -> js_prepend ((Types.toParentNode self)) a2')))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"querySelector\"]($2); })"
-        js_querySelector :: ParentNode -> JSString -> IO (Nullable Element)
+        js_querySelector :: ParentNode -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/querySelector MDN ParentNode.querySelector documentation>
+querySelector :: (MonadDOM m, IsParentNode self, ToJSString selectors) => self -> selectors -> m (Maybe Element)
+querySelector self selectors = liftDOM (((js_querySelector ((Types.toParentNode self)) (toJSString selectors)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelector ::
-              (MonadIO m, IsParentNode self, ToJSString selectors) =>
-                self -> selectors -> m (Maybe Element)
-querySelector self selectors
-  = liftIO
-      (nullableToMaybe <$>
-         (js_querySelector (toParentNode self) (toJSString selectors)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/querySelector MDN ParentNode.querySelector documentation>
+querySelector_ :: (MonadDOM m, IsParentNode self, ToJSString selectors) => self -> selectors -> m ()
+querySelector_ self selectors = liftDOM (void ((js_querySelector ((Types.toParentNode self)) (toJSString selectors))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelector_ ::
-               (MonadIO m, IsParentNode self, ToJSString selectors) =>
-                 self -> selectors -> m ()
-querySelector_ self selectors
-  = liftIO
-      (void
-         (js_querySelector (toParentNode self) (toJSString selectors)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/querySelector MDN ParentNode.querySelector documentation>
+querySelectorUnsafe :: (MonadDOM m, IsParentNode self, ToJSString selectors, HasCallStack) => self -> selectors -> m Element
+querySelectorUnsafe self selectors = liftDOM ((((js_querySelector ((Types.toParentNode self)) (toJSString selectors)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelectorUnsafe ::
-                    (MonadIO m, IsParentNode self, ToJSString selectors,
-                     HasCallStack) =>
-                      self -> selectors -> m Element
-querySelectorUnsafe self selectors
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_querySelector (toParentNode self) (toJSString selectors)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/querySelector MDN ParentNode.querySelector documentation>
+querySelectorUnchecked :: (MonadDOM m, IsParentNode self, ToJSString selectors) => self -> selectors -> m Element
+querySelectorUnchecked self selectors = liftDOM ((pFromJSVal <$> (js_querySelector ((Types.toParentNode self)) (toJSString selectors))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelectorUnchecked ::
-                       (MonadIO m, IsParentNode self, ToJSString selectors) =>
-                         self -> selectors -> m Element
-querySelectorUnchecked self selectors
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_querySelector (toParentNode self) (toJSString selectors)))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"querySelectorAll\"]($2); })"
         js_querySelectorAll :: ParentNode -> JSString -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/Document/querySelectorAll MDN ParentNode.querySelectorAll documentation>
+querySelectorAll :: (MonadDOM m, IsParentNode self, ToJSString selectors) => self -> selectors -> m NodeList
+querySelectorAll self selectors = liftDOM ((js_querySelectorAll ((Types.toParentNode self)) (toJSString selectors)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelectorAll Mozilla ParentNode.querySelectorAll documentation> 
-querySelectorAll ::
-                 (MonadIO m, IsParentNode self, ToJSString selectors) =>
-                   self -> selectors -> m NodeList
-querySelectorAll self selectors
-  = liftIO
-      (js_querySelectorAll (toParentNode self) (toJSString selectors))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/querySelectorAll MDN ParentNode.querySelectorAll documentation>
+querySelectorAll_ :: (MonadDOM m, IsParentNode self, ToJSString selectors) => self -> selectors -> m ()
+querySelectorAll_ self selectors = liftDOM (void ((js_querySelectorAll ((Types.toParentNode self)) (toJSString selectors))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelectorAll Mozilla ParentNode.querySelectorAll documentation> 
-querySelectorAll_ ::
-                  (MonadIO m, IsParentNode self, ToJSString selectors) =>
-                    self -> selectors -> m ()
-querySelectorAll_ self selectors
-  = liftIO
-      (void
-         (js_querySelectorAll (toParentNode self) (toJSString selectors)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"children\"]; })" js_getChildren
-        :: ParentNode -> IO HTMLCollection
+foreign import javascript safe "(($1, $2) => { return $1[\"replaceChildren\"](...$2); })"
+        js_replaceChildren :: ParentNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Document/replaceChildren MDN ParentNode.replaceChildren documentation>
+replaceChildren :: (MonadDOM m, IsParentNode self, IsNodeOrString nodes) => self -> [nodes] -> m ()
+replaceChildren self nodes = liftDOM (void (((toJSVal nodes) >>= \a2' -> js_replaceChildren ((Types.toParentNode self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.children Mozilla ParentNode.children documentation> 
-getChildren ::
-            (MonadIO m, IsParentNode self) => self -> m HTMLCollection
-getChildren self = liftIO (js_getChildren (toParentNode self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"children\"]; })"
+        js_getChildren :: ParentNode -> IO HTMLCollection
+-- | <https://developer.mozilla.org/docs/Web/API/Document/children MDN ParentNode.children documentation>
+getChildren :: (MonadDOM m, IsParentNode self) => self -> m HTMLCollection
+getChildren self = liftDOM ((js_getChildren ((Types.toParentNode self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"firstElementChild\"]; })"
-        js_getFirstElementChild :: ParentNode -> IO (Nullable Element)
+        js_getFirstElementChild :: ParentNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/firstElementChild MDN ParentNode.firstElementChild documentation>
+getFirstElementChild :: (MonadDOM m, IsParentNode self) => self -> m (Maybe Element)
+getFirstElementChild self = liftDOM (((js_getFirstElementChild ((Types.toParentNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
-getFirstElementChild ::
-                     (MonadIO m, IsParentNode self) => self -> m (Maybe Element)
-getFirstElementChild self
-  = liftIO
-      (nullableToMaybe <$> (js_getFirstElementChild (toParentNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/firstElementChild MDN ParentNode.firstElementChild documentation>
+getFirstElementChildUnsafe :: (MonadDOM m, IsParentNode self, HasCallStack) => self -> m Element
+getFirstElementChildUnsafe self = liftDOM ((((js_getFirstElementChild ((Types.toParentNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
-getFirstElementChildUnsafe ::
-                           (MonadIO m, IsParentNode self, HasCallStack) => self -> m Element
-getFirstElementChildUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getFirstElementChild (toParentNode self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/firstElementChild MDN ParentNode.firstElementChild documentation>
+getFirstElementChildUnchecked :: (MonadDOM m, IsParentNode self) => self -> m Element
+getFirstElementChildUnchecked self = liftDOM ((pFromJSVal <$> (js_getFirstElementChild ((Types.toParentNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
-getFirstElementChildUnchecked ::
-                              (MonadIO m, IsParentNode self) => self -> m Element
-getFirstElementChildUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getFirstElementChild (toParentNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"lastElementChild\"]; })"
-        js_getLastElementChild :: ParentNode -> IO (Nullable Element)
+        js_getLastElementChild :: ParentNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Document/lastElementChild MDN ParentNode.lastElementChild documentation>
+getLastElementChild :: (MonadDOM m, IsParentNode self) => self -> m (Maybe Element)
+getLastElementChild self = liftDOM (((js_getLastElementChild ((Types.toParentNode self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
-getLastElementChild ::
-                    (MonadIO m, IsParentNode self) => self -> m (Maybe Element)
-getLastElementChild self
-  = liftIO
-      (nullableToMaybe <$> (js_getLastElementChild (toParentNode self)))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/lastElementChild MDN ParentNode.lastElementChild documentation>
+getLastElementChildUnsafe :: (MonadDOM m, IsParentNode self, HasCallStack) => self -> m Element
+getLastElementChildUnsafe self = liftDOM ((((js_getLastElementChild ((Types.toParentNode self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
-getLastElementChildUnsafe ::
-                          (MonadIO m, IsParentNode self, HasCallStack) => self -> m Element
-getLastElementChildUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getLastElementChild (toParentNode self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/lastElementChild MDN ParentNode.lastElementChild documentation>
+getLastElementChildUnchecked :: (MonadDOM m, IsParentNode self) => self -> m Element
+getLastElementChildUnchecked self = liftDOM ((pFromJSVal <$> (js_getLastElementChild ((Types.toParentNode self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
-getLastElementChildUnchecked ::
-                             (MonadIO m, IsParentNode self) => self -> m Element
-getLastElementChildUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getLastElementChild (toParentNode self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"childElementCount\"]; })"
         js_getChildElementCount :: ParentNode -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.childElementCount Mozilla ParentNode.childElementCount documentation> 
-getChildElementCount ::
-                     (MonadIO m, IsParentNode self) => self -> m Word
-getChildElementCount self
-  = liftIO (js_getChildElementCount (toParentNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/Document/childElementCount MDN ParentNode.childElementCount documentation>
+getChildElementCount :: (MonadDOM m, IsParentNode self) => self -> m Word
+getChildElementCount self = liftDOM ((js_getChildElementCount ((Types.toParentNode self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ParseHTMLUnsafeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ParseHTMLUnsafeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ParseHTMLUnsafeOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ParseHTMLUnsafeOptions
+       (js_newParseHTMLUnsafeOptions, js_setSanitizer, js_getSanitizer, newParseHTMLUnsafeOptions, setSanitizer, getSanitizer, getSanitizerUnsafe, getSanitizerUnchecked, ParseHTMLUnsafeOptions(..), gTypeParseHTMLUnsafeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newParseHTMLUnsafeOptions :: IO ParseHTMLUnsafeOptions
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#parsehtmlunsafeoptions ParseHTMLUnsafeOptions specification>
+newParseHTMLUnsafeOptions :: (MonadDOM m) => m ParseHTMLUnsafeOptions
+newParseHTMLUnsafeOptions = liftDOM ((js_newParseHTMLUnsafeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sanitizer\"] = $2; })"
+        js_setSanitizer :: ParseHTMLUnsafeOptions -> SanitizerOrSanitizerConfigOrSanitizerPresets -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsehtmlunsafeoptions-sanitizer ParseHTMLUnsafeOptions.sanitizer specification>
+setSanitizer :: (MonadDOM m, IsSanitizerOrSanitizerConfigOrSanitizerPresets val) => ParseHTMLUnsafeOptions -> val -> m ()
+setSanitizer self val = liftDOM (void ((js_setSanitizer (self) (Types.toSanitizerOrSanitizerConfigOrSanitizerPresets val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sanitizer\"]; })"
+        js_getSanitizer :: ParseHTMLUnsafeOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsehtmlunsafeoptions-sanitizer ParseHTMLUnsafeOptions.sanitizer specification>
+getSanitizer :: (MonadDOM m) => ParseHTMLUnsafeOptions -> m (Maybe SanitizerOrSanitizerConfigOrSanitizerPresets)
+getSanitizer self = liftDOM (((js_getSanitizer (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsehtmlunsafeoptions-sanitizer ParseHTMLUnsafeOptions.sanitizer specification>
+getSanitizerUnsafe :: (MonadDOM m, HasCallStack) => ParseHTMLUnsafeOptions -> m SanitizerOrSanitizerConfigOrSanitizerPresets
+getSanitizerUnsafe self = liftDOM ((((js_getSanitizer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsehtmlunsafeoptions-sanitizer ParseHTMLUnsafeOptions.sanitizer specification>
+getSanitizerUnchecked :: (MonadDOM m) => ParseHTMLUnsafeOptions -> m SanitizerOrSanitizerConfigOrSanitizerPresets
+getSanitizerUnchecked self = liftDOM ((pFromJSVal <$> (js_getSanitizer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
@@ -1,126 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PasswordCredential
-       (js_newPasswordCredential, newPasswordCredential,
-        js_newPasswordCredential', newPasswordCredential', js_setIdName,
-        setIdName, js_getIdName, getIdName, js_setPasswordName,
-        setPasswordName, js_getPasswordName, getPasswordName,
-        js_setAdditionalData, setAdditionalData, js_getAdditionalData,
-        getAdditionalData, getAdditionalDataUnsafe,
-        getAdditionalDataUnchecked, PasswordCredential(..),
-        gTypePasswordCredential)
+       (js_newPasswordCredential', js_newPasswordCredential, newPasswordCredential', newPasswordCredential, PasswordCredential(..), gTypePasswordCredential)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"PasswordCredential\"]($1); })" js_newPasswordCredential
-        :: PasswordCredentialData -> IO PasswordCredential
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
-newPasswordCredential ::
-                      (MonadIO m) => PasswordCredentialData -> m PasswordCredential
-newPasswordCredential data'
-  = liftIO (js_newPasswordCredential data')
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"PasswordCredential\"]($1); })" js_newPasswordCredential'
-        :: HTMLFormElement -> IO PasswordCredential
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
-newPasswordCredential' ::
-                       (MonadIO m) => HTMLFormElement -> m PasswordCredential
-newPasswordCredential' form
-  = liftIO (js_newPasswordCredential' form)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"idName\"] = $2; })"
-        js_setIdName :: PasswordCredential -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
-setIdName ::
-          (MonadIO m, ToJSString val) => PasswordCredential -> val -> m ()
-setIdName self val = liftIO (js_setIdName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"idName\"]; })" js_getIdName ::
-        PasswordCredential -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
-getIdName ::
-          (MonadIO m, FromJSString result) => PasswordCredential -> m result
-getIdName self = liftIO (fromJSString <$> (js_getIdName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"passwordName\"] = $2; })"
-        js_setPasswordName :: PasswordCredential -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
-setPasswordName ::
-                (MonadIO m, ToJSString val) => PasswordCredential -> val -> m ()
-setPasswordName self val
-  = liftIO (js_setPasswordName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"passwordName\"]; })"
-        js_getPasswordName :: PasswordCredential -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
-getPasswordName ::
-                (MonadIO m, FromJSString result) => PasswordCredential -> m result
-getPasswordName self
-  = liftIO (fromJSString <$> (js_getPasswordName self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"additionalData\"] = $2; })"
-        js_setAdditionalData ::
-        PasswordCredential -> Optional CredentialBodyType -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-setAdditionalData ::
-                  (MonadIO m, IsCredentialBodyType val) =>
-                    PasswordCredential -> Maybe val -> m ()
-setAdditionalData self val
-  = liftIO
-      (js_setAdditionalData self
-         (maybeToOptional (fmap toCredentialBodyType val)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"additionalData\"]; })"
-        js_getAdditionalData ::
-        PasswordCredential -> IO (Nullable CredentialBodyType)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-getAdditionalData ::
-                  (MonadIO m) => PasswordCredential -> m (Maybe CredentialBodyType)
-getAdditionalData self
-  = liftIO (nullableToMaybe <$> (js_getAdditionalData self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-getAdditionalDataUnsafe ::
-                        (MonadIO m, HasCallStack) =>
-                          PasswordCredential -> m CredentialBodyType
-getAdditionalDataUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAdditionalData self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1) => { return new globalThis[\"PasswordCredential\"]($1); })"
+        js_newPasswordCredential' :: HTMLFormElement -> IO PasswordCredential
+-- | <https://developer.mozilla.org/docs/Web/API/PasswordCredential/PasswordCredential MDN PasswordCredential. documentation>
+newPasswordCredential' :: (MonadDOM m) => HTMLFormElement -> m PasswordCredential
+newPasswordCredential' form = liftDOM ((js_newPasswordCredential' (form)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-getAdditionalDataUnchecked ::
-                           (MonadIO m) => PasswordCredential -> m CredentialBodyType
-getAdditionalDataUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getAdditionalData self))
+foreign import javascript safe "(($1) => { return new globalThis[\"PasswordCredential\"]($1); })"
+        js_newPasswordCredential :: PasswordCredentialData -> IO PasswordCredential
+-- | <https://developer.mozilla.org/docs/Web/API/PasswordCredential/PasswordCredential MDN PasswordCredential. documentation>
+newPasswordCredential :: (MonadDOM m) => PasswordCredentialData -> m PasswordCredential
+newPasswordCredential data' = liftDOM ((js_newPasswordCredential (data')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PasswordCredentialData.hs b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredentialData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredentialData.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PasswordCredentialData
+       (js_newPasswordCredentialData, js_setName, js_getName, js_setIconURL, js_getIconURL, js_setOrigin, js_getOrigin, js_setPassword, js_getPassword, newPasswordCredentialData, setName, getName, getNameUnsafe, getNameUnchecked, setIconURL, getIconURL, getIconURLUnsafe, getIconURLUnchecked, setOrigin, getOrigin, setPassword, getPassword, PasswordCredentialData(..), gTypePasswordCredentialData)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"id\": $1, \"origin\": $2, \"password\": $3}); })"
+        js_newPasswordCredentialData :: JSString -> JSString -> JSString -> IO PasswordCredentialData
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-passwordcredentialdata PasswordCredentialData specification>
+newPasswordCredentialData :: (MonadDOM m, ToJSString id, ToJSString origin, ToJSString password) => id -> origin -> password -> m PasswordCredentialData
+newPasswordCredentialData id origin password = liftDOM ((js_newPasswordCredentialData (toJSString id) (toJSString origin) (toJSString password)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: PasswordCredentialData -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-name PasswordCredentialData.name specification>
+setName :: (MonadDOM m, ToJSString val) => PasswordCredentialData -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PasswordCredentialData -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-name PasswordCredentialData.name specification>
+getName :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName (self))))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-name PasswordCredentialData.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PasswordCredentialData -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-name PasswordCredentialData.name specification>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iconURL\"] = $2; })"
+        js_setIconURL :: PasswordCredentialData -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-iconurl PasswordCredentialData.iconURL specification>
+setIconURL :: (MonadDOM m, ToJSString val) => PasswordCredentialData -> val -> m ()
+setIconURL self val = liftDOM (void ((js_setIconURL (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iconURL\"]; })"
+        js_getIconURL :: PasswordCredentialData -> IO JSVal
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-iconurl PasswordCredentialData.iconURL specification>
+getIconURL :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m (Maybe result)
+getIconURL self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getIconURL (self))))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-iconurl PasswordCredentialData.iconURL specification>
+getIconURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PasswordCredentialData -> m result
+getIconURLUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getIconURL (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-iconurl PasswordCredentialData.iconURL specification>
+getIconURLUnchecked :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m result
+getIconURLUnchecked self = liftDOM ((pFromJSVal <$> (js_getIconURL (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"origin\"] = $2; })"
+        js_setOrigin :: PasswordCredentialData -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-origin PasswordCredentialData.origin specification>
+setOrigin :: (MonadDOM m, ToJSString val) => PasswordCredentialData -> val -> m ()
+setOrigin self val = liftDOM (void ((js_setOrigin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: PasswordCredentialData -> IO JSString
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-origin PasswordCredentialData.origin specification>
+getOrigin :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: PasswordCredentialData -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-password PasswordCredentialData.password specification>
+setPassword :: (MonadDOM m, ToJSString val) => PasswordCredentialData -> val -> m ()
+setPassword self val = liftDOM (void ((js_setPassword (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: PasswordCredentialData -> IO JSString
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-password PasswordCredentialData.password specification>
+getPassword :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m result
+getPassword self = liftDOM ((fromJSString <$> (js_getPassword (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs b/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
@@ -1,68 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Path2D
-       (js_newPath2D, newPath2D, js_newPath2D', newPath2D',
-        js_newPath2D'', newPath2D'', js_addPath, addPath,
-        js_addPathWithTransform, addPathWithTransform, Path2D(..),
-        gTypePath2D)
+       (js_newPath2D, js_newPath2D', js_addPath, js_addPath', newPath2D, newPath2D', addPath, addPath', Path2D(..), gTypePath2D)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"Path2D\"](); })"
-        js_newPath2D :: IO Path2D
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
-newPath2D :: (MonadIO m) => m Path2D
-newPath2D = liftIO (js_newPath2D)
- 
-foreign import javascript unsafe "(($1) => { return new window[\"Path2D\"]($1); })"
-        js_newPath2D' :: Path2D -> IO Path2D
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
-newPath2D' :: (MonadIO m) => Path2D -> m Path2D
-newPath2D' path = liftIO (js_newPath2D' path)
- 
-foreign import javascript unsafe "(($1) => { return new window[\"Path2D\"]($1); })"
-        js_newPath2D'' :: JSString -> IO Path2D
+foreign import javascript safe "(() => { return new globalThis[\"Path2D\"](); })"
+        js_newPath2D :: IO Path2D
+-- | <https://developer.mozilla.org/docs/Web/API/Path2D/Path2D MDN Path2D. documentation>
+newPath2D :: (MonadDOM m) => m Path2D
+newPath2D = liftDOM ((js_newPath2D))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
-newPath2D'' :: (MonadIO m, ToJSString text) => text -> m Path2D
-newPath2D'' text = liftIO (js_newPath2D'' (toJSString text))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"addPath\"]($2); })" js_addPath
-        :: Path2D -> Optional Path2D -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"Path2D\"]($1); })"
+        js_newPath2D' :: JSVal -> IO Path2D
+-- | <https://developer.mozilla.org/docs/Web/API/Path2D/Path2D MDN Path2D. documentation>
+newPath2D' :: (MonadDOM m, IsPath2DOrString path) => Maybe path -> m Path2D
+newPath2D' path = liftDOM (((P.maybe (P.return jsUndefined) toJSVal path) >>= \a1' -> js_newPath2D' a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
-addPath :: (MonadIO m) => Path2D -> Maybe Path2D -> m ()
-addPath self path = liftIO (js_addPath self (maybeToOptional path))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"addPath\"]($2, $3); })"
-        js_addPathWithTransform ::
-        Path2D -> Optional Path2D -> SVGMatrix -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"addPath\"]($2); })"
+        js_addPath :: Path2D -> Path2D -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Path2D/addPath MDN Path2D.addPath documentation>
+addPath :: (MonadDOM m) => Path2D -> Path2D -> m ()
+addPath self path = liftDOM (void ((js_addPath (self) (path))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
-addPathWithTransform ::
-                     (MonadIO m) => Path2D -> Maybe Path2D -> SVGMatrix -> m ()
-addPathWithTransform self path transform
-  = liftIO
-      (js_addPathWithTransform self (maybeToOptional path) transform)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addPath\"]($2, $3); })"
+        js_addPath' :: Path2D -> Path2D -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Path2D/addPath MDN Path2D.addPath documentation>
+addPath' :: (MonadDOM m, IsDOMMatrix2DInit transform) => Path2D -> Path2D -> Maybe transform -> m ()
+addPath' self path transform = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal transform) >>= \a3' -> js_addPath' (self) (path) a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PayerErrors.hs b/src/GHCJS/DOM/JSFFI/Generated/PayerErrors.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PayerErrors.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PayerErrors
+       (js_newPayerErrors, js_setEmail, js_getEmail, js_setName, js_getName, js_setPhone, js_getPhone, newPayerErrors, setEmail, getEmail, getEmailUnsafe, getEmailUnchecked, setName, getName, getNameUnsafe, getNameUnchecked, setPhone, getPhone, getPhoneUnsafe, getPhoneUnchecked, PayerErrors(..), gTypePayerErrors)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPayerErrors :: IO PayerErrors
+-- | <https://w3c.github.io/payment-request/#dom-payererrors PayerErrors specification>
+newPayerErrors :: (MonadDOM m) => m PayerErrors
+newPayerErrors = liftDOM ((js_newPayerErrors))
+
+foreign import javascript safe "(($1, $2) => { $1[\"email\"] = $2; })"
+        js_setEmail :: PayerErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-email PayerErrors.email specification>
+setEmail :: (MonadDOM m, ToJSString val) => PayerErrors -> val -> m ()
+setEmail self val = liftDOM (void ((js_setEmail (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"email\"]; })"
+        js_getEmail :: PayerErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-email PayerErrors.email specification>
+getEmail :: (MonadDOM m, FromJSString result) => PayerErrors -> m (Maybe result)
+getEmail self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEmail (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-email PayerErrors.email specification>
+getEmailUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PayerErrors -> m result
+getEmailUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEmail (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-email PayerErrors.email specification>
+getEmailUnchecked :: (MonadDOM m, FromJSString result) => PayerErrors -> m result
+getEmailUnchecked self = liftDOM ((pFromJSVal <$> (js_getEmail (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: PayerErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-name PayerErrors.name specification>
+setName :: (MonadDOM m, ToJSString val) => PayerErrors -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PayerErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-name PayerErrors.name specification>
+getName :: (MonadDOM m, FromJSString result) => PayerErrors -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-name PayerErrors.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PayerErrors -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-name PayerErrors.name specification>
+getNameUnchecked :: (MonadDOM m, FromJSString result) => PayerErrors -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"phone\"] = $2; })"
+        js_setPhone :: PayerErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-phone PayerErrors.phone specification>
+setPhone :: (MonadDOM m, ToJSString val) => PayerErrors -> val -> m ()
+setPhone self val = liftDOM (void ((js_setPhone (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"phone\"]; })"
+        js_getPhone :: PayerErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-phone PayerErrors.phone specification>
+getPhone :: (MonadDOM m, FromJSString result) => PayerErrors -> m (Maybe result)
+getPhone self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPhone (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-phone PayerErrors.phone specification>
+getPhoneUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PayerErrors -> m result
+getPhoneUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPhone (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-phone PayerErrors.phone specification>
+getPhoneUnchecked :: (MonadDOM m, FromJSString result) => PayerErrors -> m result
+getPhoneUnchecked self = liftDOM ((pFromJSVal <$> (js_getPhone (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentCompleteDetails.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentCompleteDetails.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentCompleteDetails.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentCompleteDetails
+       (js_newPaymentCompleteDetails, js_setData, js_getData, newPaymentCompleteDetails, setData, getData, getDataUnsafe, getDataUnchecked, PaymentCompleteDetails(..), gTypePaymentCompleteDetails)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPaymentCompleteDetails :: IO PaymentCompleteDetails
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails PaymentCompleteDetails specification>
+newPaymentCompleteDetails :: (MonadDOM m) => m PaymentCompleteDetails
+newPaymentCompleteDetails = liftDOM ((js_newPaymentCompleteDetails))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: PaymentCompleteDetails -> JSVal -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails-data PaymentCompleteDetails.data specification>
+setData :: (MonadDOM m) => PaymentCompleteDetails -> Maybe GObject -> m ()
+setData self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setData (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: PaymentCompleteDetails -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails-data PaymentCompleteDetails.data specification>
+getData :: (MonadDOM m) => PaymentCompleteDetails -> m (Maybe GObject)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails-data PaymentCompleteDetails.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PaymentCompleteDetails -> m GObject
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails-data PaymentCompleteDetails.data specification>
+getDataUnchecked :: (MonadDOM m) => PaymentCompleteDetails -> m GObject
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentCredentialInstrument.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentCredentialInstrument.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentCredentialInstrument.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentCredentialInstrument
+       (js_newPaymentCredentialInstrument, js_setDisplayName, js_getDisplayName, js_setIcon, js_getIcon, js_setIconMustBeShown, js_getIconMustBeShown, js_setDetails, js_getDetails, newPaymentCredentialInstrument, setDisplayName, getDisplayName, setIcon, getIcon, setIconMustBeShown, getIconMustBeShown, getIconMustBeShownUnsafe, getIconMustBeShownUnchecked, setDetails, getDetails, getDetailsUnsafe, getDetailsUnchecked, PaymentCredentialInstrument(..), gTypePaymentCredentialInstrument)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"displayName\": $1, \"icon\": $2}); })"
+        js_newPaymentCredentialInstrument :: JSString -> JSString -> IO PaymentCredentialInstrument
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-paymentcredentialinstrument PaymentCredentialInstrument specification>
+newPaymentCredentialInstrument :: (MonadDOM m, ToJSString displayName, ToJSString icon) => displayName -> icon -> m PaymentCredentialInstrument
+newPaymentCredentialInstrument displayName icon = liftDOM ((js_newPaymentCredentialInstrument (toJSString displayName) (toJSString icon)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayName\"] = $2; })"
+        js_setDisplayName :: PaymentCredentialInstrument -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-displayname PaymentCredentialInstrument.displayName specification>
+setDisplayName :: (MonadDOM m, ToJSString val) => PaymentCredentialInstrument -> val -> m ()
+setDisplayName self val = liftDOM (void ((js_setDisplayName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayName\"]; })"
+        js_getDisplayName :: PaymentCredentialInstrument -> IO JSString
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-displayname PaymentCredentialInstrument.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => PaymentCredentialInstrument -> m result
+getDisplayName self = liftDOM ((fromJSString <$> (js_getDisplayName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"icon\"] = $2; })"
+        js_setIcon :: PaymentCredentialInstrument -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-icon PaymentCredentialInstrument.icon specification>
+setIcon :: (MonadDOM m, ToJSString val) => PaymentCredentialInstrument -> val -> m ()
+setIcon self val = liftDOM (void ((js_setIcon (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"icon\"]; })"
+        js_getIcon :: PaymentCredentialInstrument -> IO JSString
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-icon PaymentCredentialInstrument.icon specification>
+getIcon :: (MonadDOM m, FromJSString result) => PaymentCredentialInstrument -> m result
+getIcon self = liftDOM ((fromJSString <$> (js_getIcon (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iconMustBeShown\"] = $2; })"
+        js_setIconMustBeShown :: PaymentCredentialInstrument -> Bool -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-iconmustbeshown PaymentCredentialInstrument.iconMustBeShown specification>
+setIconMustBeShown :: (MonadDOM m) => PaymentCredentialInstrument -> Bool -> m ()
+setIconMustBeShown self val = liftDOM (void ((js_setIconMustBeShown (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iconMustBeShown\"]; })"
+        js_getIconMustBeShown :: PaymentCredentialInstrument -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-iconmustbeshown PaymentCredentialInstrument.iconMustBeShown specification>
+getIconMustBeShown :: (MonadDOM m) => PaymentCredentialInstrument -> m (Maybe Bool)
+getIconMustBeShown self = liftDOM (((js_getIconMustBeShown (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-iconmustbeshown PaymentCredentialInstrument.iconMustBeShown specification>
+getIconMustBeShownUnsafe :: (MonadDOM m, HasCallStack) => PaymentCredentialInstrument -> m Bool
+getIconMustBeShownUnsafe self = liftDOM ((((js_getIconMustBeShown (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-iconmustbeshown PaymentCredentialInstrument.iconMustBeShown specification>
+getIconMustBeShownUnchecked :: (MonadDOM m) => PaymentCredentialInstrument -> m Bool
+getIconMustBeShownUnchecked self = liftDOM ((pFromJSVal <$> (js_getIconMustBeShown (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"details\"] = $2; })"
+        js_setDetails :: PaymentCredentialInstrument -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-details PaymentCredentialInstrument.details specification>
+setDetails :: (MonadDOM m, ToJSString val) => PaymentCredentialInstrument -> val -> m ()
+setDetails self val = liftDOM (void ((js_setDetails (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"details\"]; })"
+        js_getDetails :: PaymentCredentialInstrument -> IO JSVal
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-details PaymentCredentialInstrument.details specification>
+getDetails :: (MonadDOM m, FromJSString result) => PaymentCredentialInstrument -> m (Maybe result)
+getDetails self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDetails (self))))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-details PaymentCredentialInstrument.details specification>
+getDetailsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentCredentialInstrument -> m result
+getDetailsUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDetails (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-details PaymentCredentialInstrument.details specification>
+getDetailsUnchecked :: (MonadDOM m, FromJSString result) => PaymentCredentialInstrument -> m result
+getDetailsUnchecked self = liftDOM ((pFromJSVal <$> (js_getDetails (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentCurrencyAmount.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentCurrencyAmount.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentCurrencyAmount.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentCurrencyAmount
+       (js_newPaymentCurrencyAmount, js_setCurrency, js_getCurrency, js_setValue, js_getValue, newPaymentCurrencyAmount, setCurrency, getCurrency, setValue, getValue, PaymentCurrencyAmount(..), gTypePaymentCurrencyAmount)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"currency\": $1, \"value\": $2}); })"
+        js_newPaymentCurrencyAmount :: JSString -> JSString -> IO PaymentCurrencyAmount
+-- | <https://w3c.github.io/payment-request/#dom-paymentcurrencyamount PaymentCurrencyAmount specification>
+newPaymentCurrencyAmount :: (MonadDOM m, ToJSString currency, ToJSString value) => currency -> value -> m PaymentCurrencyAmount
+newPaymentCurrencyAmount currency value = liftDOM ((js_newPaymentCurrencyAmount (toJSString currency) (toJSString value)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"currency\"] = $2; })"
+        js_setCurrency :: PaymentCurrencyAmount -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentcurrencyamount-currency PaymentCurrencyAmount.currency specification>
+setCurrency :: (MonadDOM m, ToJSString val) => PaymentCurrencyAmount -> val -> m ()
+setCurrency self val = liftDOM (void ((js_setCurrency (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"currency\"]; })"
+        js_getCurrency :: PaymentCurrencyAmount -> IO JSString
+-- | <https://w3c.github.io/payment-request/#dom-paymentcurrencyamount-currency PaymentCurrencyAmount.currency specification>
+getCurrency :: (MonadDOM m, FromJSString result) => PaymentCurrencyAmount -> m result
+getCurrency self = liftDOM ((fromJSString <$> (js_getCurrency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: PaymentCurrencyAmount -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentcurrencyamount-value PaymentCurrencyAmount.value specification>
+setValue :: (MonadDOM m, ToJSString val) => PaymentCurrencyAmount -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: PaymentCurrencyAmount -> IO JSString
+-- | <https://w3c.github.io/payment-request/#dom-paymentcurrencyamount-value PaymentCurrencyAmount.value specification>
+getValue :: (MonadDOM m, FromJSString result) => PaymentCurrencyAmount -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsBase.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsBase.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentDetailsBase
+       (js_newPaymentDetailsBase, js_setDisplayItems, js_getDisplayItems, js_setShippingOptions, js_getShippingOptions, js_setModifiers, js_getModifiers, newPaymentDetailsBase, setDisplayItems, getDisplayItems, getDisplayItemsUnsafe, getDisplayItemsUnchecked, setShippingOptions, getShippingOptions, getShippingOptionsUnsafe, getShippingOptionsUnchecked, setModifiers, getModifiers, getModifiersUnsafe, getModifiersUnchecked, PaymentDetailsBase(..), gTypePaymentDetailsBase, IsPaymentDetailsBase, toPaymentDetailsBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPaymentDetailsBase :: IO PaymentDetailsBase
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase PaymentDetailsBase specification>
+newPaymentDetailsBase :: (MonadDOM m) => m PaymentDetailsBase
+newPaymentDetailsBase = liftDOM ((js_newPaymentDetailsBase))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayItems\"] = $2; })"
+        js_setDisplayItems :: PaymentDetailsBase -> JSVal -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-displayitems PaymentDetailsBase.displayItems specification>
+setDisplayItems :: (MonadDOM m, IsPaymentDetailsBase self) => self -> [PaymentItem] -> m ()
+setDisplayItems self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDisplayItems ((Types.toPaymentDetailsBase self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayItems\"]; })"
+        js_getDisplayItems :: PaymentDetailsBase -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-displayitems PaymentDetailsBase.displayItems specification>
+getDisplayItems :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m (Maybe [PaymentItem])
+getDisplayItems self = liftDOM (((js_getDisplayItems ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-displayitems PaymentDetailsBase.displayItems specification>
+getDisplayItemsUnsafe :: (MonadDOM m, IsPaymentDetailsBase self, HasCallStack) => self -> m [PaymentItem]
+getDisplayItemsUnsafe self = liftDOM ((((js_getDisplayItems ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-displayitems PaymentDetailsBase.displayItems specification>
+getDisplayItemsUnchecked :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m [PaymentItem]
+getDisplayItemsUnchecked self = liftDOM (((js_getDisplayItems ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shippingOptions\"] = $2; })"
+        js_setShippingOptions :: PaymentDetailsBase -> JSVal -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-shippingoptions PaymentDetailsBase.shippingOptions specification>
+setShippingOptions :: (MonadDOM m, IsPaymentDetailsBase self) => self -> [PaymentShippingOption] -> m ()
+setShippingOptions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setShippingOptions ((Types.toPaymentDetailsBase self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingOptions\"]; })"
+        js_getShippingOptions :: PaymentDetailsBase -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-shippingoptions PaymentDetailsBase.shippingOptions specification>
+getShippingOptions :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m (Maybe [PaymentShippingOption])
+getShippingOptions self = liftDOM (((js_getShippingOptions ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-shippingoptions PaymentDetailsBase.shippingOptions specification>
+getShippingOptionsUnsafe :: (MonadDOM m, IsPaymentDetailsBase self, HasCallStack) => self -> m [PaymentShippingOption]
+getShippingOptionsUnsafe self = liftDOM ((((js_getShippingOptions ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-shippingoptions PaymentDetailsBase.shippingOptions specification>
+getShippingOptionsUnchecked :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m [PaymentShippingOption]
+getShippingOptionsUnchecked self = liftDOM (((js_getShippingOptions ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"modifiers\"] = $2; })"
+        js_setModifiers :: PaymentDetailsBase -> JSVal -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-modifiers PaymentDetailsBase.modifiers specification>
+setModifiers :: (MonadDOM m, IsPaymentDetailsBase self) => self -> [PaymentDetailsModifier] -> m ()
+setModifiers self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setModifiers ((Types.toPaymentDetailsBase self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"modifiers\"]; })"
+        js_getModifiers :: PaymentDetailsBase -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-modifiers PaymentDetailsBase.modifiers specification>
+getModifiers :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m (Maybe [PaymentDetailsModifier])
+getModifiers self = liftDOM (((js_getModifiers ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-modifiers PaymentDetailsBase.modifiers specification>
+getModifiersUnsafe :: (MonadDOM m, IsPaymentDetailsBase self, HasCallStack) => self -> m [PaymentDetailsModifier]
+getModifiersUnsafe self = liftDOM ((((js_getModifiers ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-modifiers PaymentDetailsBase.modifiers specification>
+getModifiersUnchecked :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m [PaymentDetailsModifier]
+getModifiersUnchecked self = liftDOM (((js_getModifiers ((Types.toPaymentDetailsBase self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentDetailsInit
+       (js_newPaymentDetailsInit, js_setId, js_getId, js_setTotal, js_getTotal, newPaymentDetailsInit, setId, getId, getIdUnsafe, getIdUnchecked, setTotal, getTotal, PaymentDetailsInit(..), gTypePaymentDetailsInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"total\": $1}); })"
+        js_newPaymentDetailsInit :: PaymentItem -> IO PaymentDetailsInit
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit PaymentDetailsInit specification>
+newPaymentDetailsInit :: (MonadDOM m) => PaymentItem -> m PaymentDetailsInit
+newPaymentDetailsInit total = liftDOM ((js_newPaymentDetailsInit (total)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: PaymentDetailsInit -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-id PaymentDetailsInit.id specification>
+setId :: (MonadDOM m, ToJSString val) => PaymentDetailsInit -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PaymentDetailsInit -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-id PaymentDetailsInit.id specification>
+getId :: (MonadDOM m, FromJSString result) => PaymentDetailsInit -> m (Maybe result)
+getId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getId (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-id PaymentDetailsInit.id specification>
+getIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentDetailsInit -> m result
+getIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-id PaymentDetailsInit.id specification>
+getIdUnchecked :: (MonadDOM m, FromJSString result) => PaymentDetailsInit -> m result
+getIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"total\"] = $2; })"
+        js_setTotal :: PaymentDetailsInit -> PaymentItem -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-total PaymentDetailsInit.total specification>
+setTotal :: (MonadDOM m) => PaymentDetailsInit -> PaymentItem -> m ()
+setTotal self val = liftDOM (void ((js_setTotal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })"
+        js_getTotal :: PaymentDetailsInit -> IO PaymentItem
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-total PaymentDetailsInit.total specification>
+getTotal :: (MonadDOM m) => PaymentDetailsInit -> m PaymentItem
+getTotal self = liftDOM ((js_getTotal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsModifier.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsModifier.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsModifier.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentDetailsModifier
+       (js_newPaymentDetailsModifier, js_setSupportedMethods, js_getSupportedMethods, js_setTotal, js_getTotal, js_setAdditionalDisplayItems, js_getAdditionalDisplayItems, js_setData, js_getData, newPaymentDetailsModifier, setSupportedMethods, getSupportedMethods, setTotal, getTotal, getTotalUnsafe, getTotalUnchecked, setAdditionalDisplayItems, getAdditionalDisplayItems, getAdditionalDisplayItemsUnsafe, getAdditionalDisplayItemsUnchecked, setData, getData, getDataUnsafe, getDataUnchecked, PaymentDetailsModifier(..), gTypePaymentDetailsModifier)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"supportedMethods\": $1}); })"
+        js_newPaymentDetailsModifier :: JSString -> IO PaymentDetailsModifier
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier PaymentDetailsModifier specification>
+newPaymentDetailsModifier :: (MonadDOM m, ToJSString supportedMethods) => supportedMethods -> m PaymentDetailsModifier
+newPaymentDetailsModifier supportedMethods = liftDOM ((js_newPaymentDetailsModifier (toJSString supportedMethods)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supportedMethods\"] = $2; })"
+        js_setSupportedMethods :: PaymentDetailsModifier -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-supportedmethods PaymentDetailsModifier.supportedMethods specification>
+setSupportedMethods :: (MonadDOM m, ToJSString val) => PaymentDetailsModifier -> val -> m ()
+setSupportedMethods self val = liftDOM (void ((js_setSupportedMethods (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supportedMethods\"]; })"
+        js_getSupportedMethods :: PaymentDetailsModifier -> IO JSString
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-supportedmethods PaymentDetailsModifier.supportedMethods specification>
+getSupportedMethods :: (MonadDOM m, FromJSString result) => PaymentDetailsModifier -> m result
+getSupportedMethods self = liftDOM ((fromJSString <$> (js_getSupportedMethods (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"total\"] = $2; })"
+        js_setTotal :: PaymentDetailsModifier -> PaymentItem -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-total PaymentDetailsModifier.total specification>
+setTotal :: (MonadDOM m) => PaymentDetailsModifier -> PaymentItem -> m ()
+setTotal self val = liftDOM (void ((js_setTotal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })"
+        js_getTotal :: PaymentDetailsModifier -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-total PaymentDetailsModifier.total specification>
+getTotal :: (MonadDOM m) => PaymentDetailsModifier -> m (Maybe PaymentItem)
+getTotal self = liftDOM (((js_getTotal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-total PaymentDetailsModifier.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsModifier -> m PaymentItem
+getTotalUnsafe self = liftDOM ((((js_getTotal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-total PaymentDetailsModifier.total specification>
+getTotalUnchecked :: (MonadDOM m) => PaymentDetailsModifier -> m PaymentItem
+getTotalUnchecked self = liftDOM ((pFromJSVal <$> (js_getTotal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"additionalDisplayItems\"] = $2; })"
+        js_setAdditionalDisplayItems :: PaymentDetailsModifier -> JSVal -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-additionaldisplayitems PaymentDetailsModifier.additionalDisplayItems specification>
+setAdditionalDisplayItems :: (MonadDOM m) => PaymentDetailsModifier -> [PaymentItem] -> m ()
+setAdditionalDisplayItems self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAdditionalDisplayItems (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"additionalDisplayItems\"]; })"
+        js_getAdditionalDisplayItems :: PaymentDetailsModifier -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-additionaldisplayitems PaymentDetailsModifier.additionalDisplayItems specification>
+getAdditionalDisplayItems :: (MonadDOM m) => PaymentDetailsModifier -> m (Maybe [PaymentItem])
+getAdditionalDisplayItems self = liftDOM (((js_getAdditionalDisplayItems (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-additionaldisplayitems PaymentDetailsModifier.additionalDisplayItems specification>
+getAdditionalDisplayItemsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsModifier -> m [PaymentItem]
+getAdditionalDisplayItemsUnsafe self = liftDOM ((((js_getAdditionalDisplayItems (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-additionaldisplayitems PaymentDetailsModifier.additionalDisplayItems specification>
+getAdditionalDisplayItemsUnchecked :: (MonadDOM m) => PaymentDetailsModifier -> m [PaymentItem]
+getAdditionalDisplayItemsUnchecked self = liftDOM (((js_getAdditionalDisplayItems (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: PaymentDetailsModifier -> GObject -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-data PaymentDetailsModifier.data specification>
+setData :: (MonadDOM m) => PaymentDetailsModifier -> GObject -> m ()
+setData self val = liftDOM (void ((js_setData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: PaymentDetailsModifier -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-data PaymentDetailsModifier.data specification>
+getData :: (MonadDOM m) => PaymentDetailsModifier -> m (Maybe GObject)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-data PaymentDetailsModifier.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsModifier -> m GObject
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-data PaymentDetailsModifier.data specification>
+getDataUnchecked :: (MonadDOM m) => PaymentDetailsModifier -> m GObject
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsUpdate.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsUpdate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentDetailsUpdate.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentDetailsUpdate
+       (js_newPaymentDetailsUpdate, js_setError, js_getError, js_setTotal, js_getTotal, js_setShippingAddressErrors, js_getShippingAddressErrors, js_setPayerErrors, js_getPayerErrors, js_setPaymentMethodErrors, js_getPaymentMethodErrors, newPaymentDetailsUpdate, setError, getError, getErrorUnsafe, getErrorUnchecked, setTotal, getTotal, getTotalUnsafe, getTotalUnchecked, setShippingAddressErrors, getShippingAddressErrors, getShippingAddressErrorsUnsafe, getShippingAddressErrorsUnchecked, setPayerErrors, getPayerErrors, getPayerErrorsUnsafe, getPayerErrorsUnchecked, setPaymentMethodErrors, getPaymentMethodErrors, getPaymentMethodErrorsUnsafe, getPaymentMethodErrorsUnchecked, PaymentDetailsUpdate(..), gTypePaymentDetailsUpdate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPaymentDetailsUpdate :: IO PaymentDetailsUpdate
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate PaymentDetailsUpdate specification>
+newPaymentDetailsUpdate :: (MonadDOM m) => m PaymentDetailsUpdate
+newPaymentDetailsUpdate = liftDOM ((js_newPaymentDetailsUpdate))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: PaymentDetailsUpdate -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-error PaymentDetailsUpdate.error specification>
+setError :: (MonadDOM m, ToJSString val) => PaymentDetailsUpdate -> val -> m ()
+setError self val = liftDOM (void ((js_setError (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: PaymentDetailsUpdate -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-error PaymentDetailsUpdate.error specification>
+getError :: (MonadDOM m, FromJSString result) => PaymentDetailsUpdate -> m (Maybe result)
+getError self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getError (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-error PaymentDetailsUpdate.error specification>
+getErrorUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentDetailsUpdate -> m result
+getErrorUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getError (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-error PaymentDetailsUpdate.error specification>
+getErrorUnchecked :: (MonadDOM m, FromJSString result) => PaymentDetailsUpdate -> m result
+getErrorUnchecked self = liftDOM ((pFromJSVal <$> (js_getError (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"total\"] = $2; })"
+        js_setTotal :: PaymentDetailsUpdate -> PaymentItem -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-total PaymentDetailsUpdate.total specification>
+setTotal :: (MonadDOM m) => PaymentDetailsUpdate -> PaymentItem -> m ()
+setTotal self val = liftDOM (void ((js_setTotal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })"
+        js_getTotal :: PaymentDetailsUpdate -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-total PaymentDetailsUpdate.total specification>
+getTotal :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe PaymentItem)
+getTotal self = liftDOM (((js_getTotal (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-total PaymentDetailsUpdate.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m PaymentItem
+getTotalUnsafe self = liftDOM ((((js_getTotal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-total PaymentDetailsUpdate.total specification>
+getTotalUnchecked :: (MonadDOM m) => PaymentDetailsUpdate -> m PaymentItem
+getTotalUnchecked self = liftDOM ((pFromJSVal <$> (js_getTotal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shippingAddressErrors\"] = $2; })"
+        js_setShippingAddressErrors :: PaymentDetailsUpdate -> AddressErrors -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-shippingaddresserrors PaymentDetailsUpdate.shippingAddressErrors specification>
+setShippingAddressErrors :: (MonadDOM m) => PaymentDetailsUpdate -> AddressErrors -> m ()
+setShippingAddressErrors self val = liftDOM (void ((js_setShippingAddressErrors (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingAddressErrors\"]; })"
+        js_getShippingAddressErrors :: PaymentDetailsUpdate -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-shippingaddresserrors PaymentDetailsUpdate.shippingAddressErrors specification>
+getShippingAddressErrors :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe AddressErrors)
+getShippingAddressErrors self = liftDOM (((js_getShippingAddressErrors (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-shippingaddresserrors PaymentDetailsUpdate.shippingAddressErrors specification>
+getShippingAddressErrorsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m AddressErrors
+getShippingAddressErrorsUnsafe self = liftDOM ((((js_getShippingAddressErrors (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-shippingaddresserrors PaymentDetailsUpdate.shippingAddressErrors specification>
+getShippingAddressErrorsUnchecked :: (MonadDOM m) => PaymentDetailsUpdate -> m AddressErrors
+getShippingAddressErrorsUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingAddressErrors (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payerErrors\"] = $2; })"
+        js_setPayerErrors :: PaymentDetailsUpdate -> PayerErrors -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-payererrors PaymentDetailsUpdate.payerErrors specification>
+setPayerErrors :: (MonadDOM m) => PaymentDetailsUpdate -> PayerErrors -> m ()
+setPayerErrors self val = liftDOM (void ((js_setPayerErrors (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payerErrors\"]; })"
+        js_getPayerErrors :: PaymentDetailsUpdate -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-payererrors PaymentDetailsUpdate.payerErrors specification>
+getPayerErrors :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe PayerErrors)
+getPayerErrors self = liftDOM (((js_getPayerErrors (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-payererrors PaymentDetailsUpdate.payerErrors specification>
+getPayerErrorsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m PayerErrors
+getPayerErrorsUnsafe self = liftDOM ((((js_getPayerErrors (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-payererrors PaymentDetailsUpdate.payerErrors specification>
+getPayerErrorsUnchecked :: (MonadDOM m) => PaymentDetailsUpdate -> m PayerErrors
+getPayerErrorsUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayerErrors (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"paymentMethodErrors\"] = $2; })"
+        js_setPaymentMethodErrors :: PaymentDetailsUpdate -> GObject -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-paymentmethoderrors PaymentDetailsUpdate.paymentMethodErrors specification>
+setPaymentMethodErrors :: (MonadDOM m) => PaymentDetailsUpdate -> GObject -> m ()
+setPaymentMethodErrors self val = liftDOM (void ((js_setPaymentMethodErrors (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"paymentMethodErrors\"]; })"
+        js_getPaymentMethodErrors :: PaymentDetailsUpdate -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-paymentmethoderrors PaymentDetailsUpdate.paymentMethodErrors specification>
+getPaymentMethodErrors :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe GObject)
+getPaymentMethodErrors self = liftDOM (((js_getPaymentMethodErrors (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-paymentmethoderrors PaymentDetailsUpdate.paymentMethodErrors specification>
+getPaymentMethodErrorsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m GObject
+getPaymentMethodErrorsUnsafe self = liftDOM ((((js_getPaymentMethodErrors (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-paymentmethoderrors PaymentDetailsUpdate.paymentMethodErrors specification>
+getPaymentMethodErrorsUnchecked :: (MonadDOM m) => PaymentDetailsUpdate -> m GObject
+getPaymentMethodErrorsUnchecked self = liftDOM ((pFromJSVal <$> (js_getPaymentMethodErrors (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentEntityLogo.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentEntityLogo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentEntityLogo.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentEntityLogo
+       (js_newPaymentEntityLogo, js_setUrl, js_getUrl, js_setLabel, js_getLabel, newPaymentEntityLogo, setUrl, getUrl, setLabel, getLabel, PaymentEntityLogo(..), gTypePaymentEntityLogo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"url\": $1, \"label\": $2}); })"
+        js_newPaymentEntityLogo :: JSString -> JSString -> IO PaymentEntityLogo
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-paymententitylogo PaymentEntityLogo specification>
+newPaymentEntityLogo :: (MonadDOM m, ToJSString url, ToJSString label) => url -> label -> m PaymentEntityLogo
+newPaymentEntityLogo url label = liftDOM ((js_newPaymentEntityLogo (toJSString url) (toJSString label)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: PaymentEntityLogo -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymententitylogo-url PaymentEntityLogo.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => PaymentEntityLogo -> val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: PaymentEntityLogo -> IO JSString
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymententitylogo-url PaymentEntityLogo.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => PaymentEntityLogo -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: PaymentEntityLogo -> JSString -> IO ()
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymententitylogo-label PaymentEntityLogo.label specification>
+setLabel :: (MonadDOM m, ToJSString val) => PaymentEntityLogo -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: PaymentEntityLogo -> IO JSString
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymententitylogo-label PaymentEntityLogo.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => PaymentEntityLogo -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentItem.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentItem.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentItem.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentItem
+       (js_newPaymentItem, js_setLabel, js_getLabel, js_setAmount, js_getAmount, js_setPending, js_getPending, newPaymentItem, setLabel, getLabel, setAmount, getAmount, setPending, getPending, getPendingUnsafe, getPendingUnchecked, PaymentItem(..), gTypePaymentItem)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"label\": $1, \"amount\": $2}); })"
+        js_newPaymentItem :: JSString -> PaymentCurrencyAmount -> IO PaymentItem
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem PaymentItem specification>
+newPaymentItem :: (MonadDOM m, ToJSString label) => label -> PaymentCurrencyAmount -> m PaymentItem
+newPaymentItem label amount = liftDOM ((js_newPaymentItem (toJSString label) (amount)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: PaymentItem -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-label PaymentItem.label specification>
+setLabel :: (MonadDOM m, ToJSString val) => PaymentItem -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: PaymentItem -> IO JSString
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-label PaymentItem.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => PaymentItem -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"amount\"] = $2; })"
+        js_setAmount :: PaymentItem -> PaymentCurrencyAmount -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-amount PaymentItem.amount specification>
+setAmount :: (MonadDOM m) => PaymentItem -> PaymentCurrencyAmount -> m ()
+setAmount self val = liftDOM (void ((js_setAmount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"amount\"]; })"
+        js_getAmount :: PaymentItem -> IO PaymentCurrencyAmount
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-amount PaymentItem.amount specification>
+getAmount :: (MonadDOM m) => PaymentItem -> m PaymentCurrencyAmount
+getAmount self = liftDOM ((js_getAmount (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pending\"] = $2; })"
+        js_setPending :: PaymentItem -> Bool -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-pending PaymentItem.pending specification>
+setPending :: (MonadDOM m) => PaymentItem -> Bool -> m ()
+setPending self val = liftDOM (void ((js_setPending (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pending\"]; })"
+        js_getPending :: PaymentItem -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-pending PaymentItem.pending specification>
+getPending :: (MonadDOM m) => PaymentItem -> m (Maybe Bool)
+getPending self = liftDOM (((js_getPending (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-pending PaymentItem.pending specification>
+getPendingUnsafe :: (MonadDOM m, HasCallStack) => PaymentItem -> m Bool
+getPendingUnsafe self = liftDOM ((((js_getPending (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-pending PaymentItem.pending specification>
+getPendingUnchecked :: (MonadDOM m) => PaymentItem -> m Bool
+getPendingUnchecked self = liftDOM ((pFromJSVal <$> (js_getPending (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodChangeEvent.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentMethodChangeEvent
+       (js_newPaymentMethodChangeEvent, js_getMethodName, js_getMethodDetails, newPaymentMethodChangeEvent, getMethodName, getMethodDetails, getMethodDetailsUnsafe, getMethodDetailsUnchecked, PaymentMethodChangeEvent(..), gTypePaymentMethodChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PaymentMethodChangeEvent\"]($1, $2); })"
+        js_newPaymentMethodChangeEvent :: JSString -> JSVal -> IO PaymentMethodChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/PaymentMethodChangeEvent MDN PaymentMethodChangeEvent. documentation>
+newPaymentMethodChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PaymentMethodChangeEventInit -> m PaymentMethodChangeEvent
+newPaymentMethodChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPaymentMethodChangeEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"methodName\"]; })"
+        js_getMethodName :: PaymentMethodChangeEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/methodName MDN PaymentMethodChangeEvent.methodName documentation>
+getMethodName :: (MonadDOM m, FromJSString result) => PaymentMethodChangeEvent -> m result
+getMethodName self = liftDOM ((fromJSString <$> (js_getMethodName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"methodDetails\"]; })"
+        js_getMethodDetails :: PaymentMethodChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/methodDetails MDN PaymentMethodChangeEvent.methodDetails documentation>
+getMethodDetails :: (MonadDOM m) => PaymentMethodChangeEvent -> m (Maybe GObject)
+getMethodDetails self = liftDOM (((js_getMethodDetails (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/methodDetails MDN PaymentMethodChangeEvent.methodDetails documentation>
+getMethodDetailsUnsafe :: (MonadDOM m, HasCallStack) => PaymentMethodChangeEvent -> m GObject
+getMethodDetailsUnsafe self = liftDOM ((((js_getMethodDetails (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/methodDetails MDN PaymentMethodChangeEvent.methodDetails documentation>
+getMethodDetailsUnchecked :: (MonadDOM m) => PaymentMethodChangeEvent -> m GObject
+getMethodDetailsUnchecked self = liftDOM ((pFromJSVal <$> (js_getMethodDetails (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodChangeEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentMethodChangeEventInit
+       (js_newPaymentMethodChangeEventInit, js_setMethodName, js_getMethodName, js_setMethodDetails, js_getMethodDetails, newPaymentMethodChangeEventInit, setMethodName, getMethodName, getMethodNameUnsafe, getMethodNameUnchecked, setMethodDetails, getMethodDetails, getMethodDetailsUnsafe, getMethodDetailsUnchecked, PaymentMethodChangeEventInit(..), gTypePaymentMethodChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPaymentMethodChangeEventInit :: IO PaymentMethodChangeEventInit
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit PaymentMethodChangeEventInit specification>
+newPaymentMethodChangeEventInit :: (MonadDOM m) => m PaymentMethodChangeEventInit
+newPaymentMethodChangeEventInit = liftDOM ((js_newPaymentMethodChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"methodName\"] = $2; })"
+        js_setMethodName :: PaymentMethodChangeEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methodname PaymentMethodChangeEventInit.methodName specification>
+setMethodName :: (MonadDOM m, ToJSString val) => PaymentMethodChangeEventInit -> val -> m ()
+setMethodName self val = liftDOM (void ((js_setMethodName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"methodName\"]; })"
+        js_getMethodName :: PaymentMethodChangeEventInit -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methodname PaymentMethodChangeEventInit.methodName specification>
+getMethodName :: (MonadDOM m, FromJSString result) => PaymentMethodChangeEventInit -> m (Maybe result)
+getMethodName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMethodName (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methodname PaymentMethodChangeEventInit.methodName specification>
+getMethodNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentMethodChangeEventInit -> m result
+getMethodNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMethodName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methodname PaymentMethodChangeEventInit.methodName specification>
+getMethodNameUnchecked :: (MonadDOM m, FromJSString result) => PaymentMethodChangeEventInit -> m result
+getMethodNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getMethodName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"methodDetails\"] = $2; })"
+        js_setMethodDetails :: PaymentMethodChangeEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methoddetails PaymentMethodChangeEventInit.methodDetails specification>
+setMethodDetails :: (MonadDOM m) => PaymentMethodChangeEventInit -> Maybe GObject -> m ()
+setMethodDetails self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMethodDetails (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"methodDetails\"]; })"
+        js_getMethodDetails :: PaymentMethodChangeEventInit -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methoddetails PaymentMethodChangeEventInit.methodDetails specification>
+getMethodDetails :: (MonadDOM m) => PaymentMethodChangeEventInit -> m (Maybe GObject)
+getMethodDetails self = liftDOM (((js_getMethodDetails (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methoddetails PaymentMethodChangeEventInit.methodDetails specification>
+getMethodDetailsUnsafe :: (MonadDOM m, HasCallStack) => PaymentMethodChangeEventInit -> m GObject
+getMethodDetailsUnsafe self = liftDOM ((((js_getMethodDetails (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methoddetails PaymentMethodChangeEventInit.methodDetails specification>
+getMethodDetailsUnchecked :: (MonadDOM m) => PaymentMethodChangeEventInit -> m GObject
+getMethodDetailsUnchecked self = liftDOM ((pFromJSVal <$> (js_getMethodDetails (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodData.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentMethodData.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentMethodData
+       (js_newPaymentMethodData, js_setSupportedMethods, js_getSupportedMethods, js_setData, js_getData, newPaymentMethodData, setSupportedMethods, getSupportedMethods, setData, getData, getDataUnsafe, getDataUnchecked, PaymentMethodData(..), gTypePaymentMethodData)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"supportedMethods\": $1}); })"
+        js_newPaymentMethodData :: JSString -> IO PaymentMethodData
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata PaymentMethodData specification>
+newPaymentMethodData :: (MonadDOM m, ToJSString supportedMethods) => supportedMethods -> m PaymentMethodData
+newPaymentMethodData supportedMethods = liftDOM ((js_newPaymentMethodData (toJSString supportedMethods)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supportedMethods\"] = $2; })"
+        js_setSupportedMethods :: PaymentMethodData -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-supportedmethods PaymentMethodData.supportedMethods specification>
+setSupportedMethods :: (MonadDOM m, ToJSString val) => PaymentMethodData -> val -> m ()
+setSupportedMethods self val = liftDOM (void ((js_setSupportedMethods (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supportedMethods\"]; })"
+        js_getSupportedMethods :: PaymentMethodData -> IO JSString
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-supportedmethods PaymentMethodData.supportedMethods specification>
+getSupportedMethods :: (MonadDOM m, FromJSString result) => PaymentMethodData -> m result
+getSupportedMethods self = liftDOM ((fromJSString <$> (js_getSupportedMethods (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: PaymentMethodData -> GObject -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-data PaymentMethodData.data specification>
+setData :: (MonadDOM m) => PaymentMethodData -> GObject -> m ()
+setData self val = liftDOM (void ((js_setData (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: PaymentMethodData -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-data PaymentMethodData.data specification>
+getData :: (MonadDOM m) => PaymentMethodData -> m (Maybe GObject)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-data PaymentMethodData.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PaymentMethodData -> m GObject
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-data PaymentMethodData.data specification>
+getDataUnchecked :: (MonadDOM m) => PaymentMethodData -> m GObject
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentOptions.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentOptions
+       (js_newPaymentOptions, js_setRequestPayerName, js_getRequestPayerName, js_setRequestBillingAddress, js_getRequestBillingAddress, js_setRequestPayerEmail, js_getRequestPayerEmail, js_setRequestPayerPhone, js_getRequestPayerPhone, js_setRequestShipping, js_getRequestShipping, js_setShippingType, js_getShippingType, newPaymentOptions, setRequestPayerName, getRequestPayerName, getRequestPayerNameUnsafe, getRequestPayerNameUnchecked, setRequestBillingAddress, getRequestBillingAddress, getRequestBillingAddressUnsafe, getRequestBillingAddressUnchecked, setRequestPayerEmail, getRequestPayerEmail, getRequestPayerEmailUnsafe, getRequestPayerEmailUnchecked, setRequestPayerPhone, getRequestPayerPhone, getRequestPayerPhoneUnsafe, getRequestPayerPhoneUnchecked, setRequestShipping, getRequestShipping, getRequestShippingUnsafe, getRequestShippingUnchecked, setShippingType, getShippingType, getShippingTypeUnsafe, getShippingTypeUnchecked, PaymentOptions(..), gTypePaymentOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPaymentOptions :: IO PaymentOptions
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions PaymentOptions specification>
+newPaymentOptions :: (MonadDOM m) => m PaymentOptions
+newPaymentOptions = liftDOM ((js_newPaymentOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestPayerName\"] = $2; })"
+        js_setRequestPayerName :: PaymentOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayername PaymentOptions.requestPayerName specification>
+setRequestPayerName :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestPayerName self val = liftDOM (void ((js_setRequestPayerName (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestPayerName\"]; })"
+        js_getRequestPayerName :: PaymentOptions -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayername PaymentOptions.requestPayerName specification>
+getRequestPayerName :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestPayerName self = liftDOM (((js_getRequestPayerName (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayername PaymentOptions.requestPayerName specification>
+getRequestPayerNameUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestPayerNameUnsafe self = liftDOM ((((js_getRequestPayerName (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayername PaymentOptions.requestPayerName specification>
+getRequestPayerNameUnchecked :: (MonadDOM m) => PaymentOptions -> m Bool
+getRequestPayerNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestPayerName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestBillingAddress\"] = $2; })"
+        js_setRequestBillingAddress :: PaymentOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestbillingaddress PaymentOptions.requestBillingAddress specification>
+setRequestBillingAddress :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestBillingAddress self val = liftDOM (void ((js_setRequestBillingAddress (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestBillingAddress\"]; })"
+        js_getRequestBillingAddress :: PaymentOptions -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestbillingaddress PaymentOptions.requestBillingAddress specification>
+getRequestBillingAddress :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestBillingAddress self = liftDOM (((js_getRequestBillingAddress (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestbillingaddress PaymentOptions.requestBillingAddress specification>
+getRequestBillingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestBillingAddressUnsafe self = liftDOM ((((js_getRequestBillingAddress (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestbillingaddress PaymentOptions.requestBillingAddress specification>
+getRequestBillingAddressUnchecked :: (MonadDOM m) => PaymentOptions -> m Bool
+getRequestBillingAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestBillingAddress (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestPayerEmail\"] = $2; })"
+        js_setRequestPayerEmail :: PaymentOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayeremail PaymentOptions.requestPayerEmail specification>
+setRequestPayerEmail :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestPayerEmail self val = liftDOM (void ((js_setRequestPayerEmail (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestPayerEmail\"]; })"
+        js_getRequestPayerEmail :: PaymentOptions -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayeremail PaymentOptions.requestPayerEmail specification>
+getRequestPayerEmail :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestPayerEmail self = liftDOM (((js_getRequestPayerEmail (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayeremail PaymentOptions.requestPayerEmail specification>
+getRequestPayerEmailUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestPayerEmailUnsafe self = liftDOM ((((js_getRequestPayerEmail (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayeremail PaymentOptions.requestPayerEmail specification>
+getRequestPayerEmailUnchecked :: (MonadDOM m) => PaymentOptions -> m Bool
+getRequestPayerEmailUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestPayerEmail (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestPayerPhone\"] = $2; })"
+        js_setRequestPayerPhone :: PaymentOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayerphone PaymentOptions.requestPayerPhone specification>
+setRequestPayerPhone :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestPayerPhone self val = liftDOM (void ((js_setRequestPayerPhone (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestPayerPhone\"]; })"
+        js_getRequestPayerPhone :: PaymentOptions -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayerphone PaymentOptions.requestPayerPhone specification>
+getRequestPayerPhone :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestPayerPhone self = liftDOM (((js_getRequestPayerPhone (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayerphone PaymentOptions.requestPayerPhone specification>
+getRequestPayerPhoneUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestPayerPhoneUnsafe self = liftDOM ((((js_getRequestPayerPhone (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayerphone PaymentOptions.requestPayerPhone specification>
+getRequestPayerPhoneUnchecked :: (MonadDOM m) => PaymentOptions -> m Bool
+getRequestPayerPhoneUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestPayerPhone (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestShipping\"] = $2; })"
+        js_setRequestShipping :: PaymentOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestshipping PaymentOptions.requestShipping specification>
+setRequestShipping :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestShipping self val = liftDOM (void ((js_setRequestShipping (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestShipping\"]; })"
+        js_getRequestShipping :: PaymentOptions -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestshipping PaymentOptions.requestShipping specification>
+getRequestShipping :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestShipping self = liftDOM (((js_getRequestShipping (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestshipping PaymentOptions.requestShipping specification>
+getRequestShippingUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestShippingUnsafe self = liftDOM ((((js_getRequestShipping (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestshipping PaymentOptions.requestShipping specification>
+getRequestShippingUnchecked :: (MonadDOM m) => PaymentOptions -> m Bool
+getRequestShippingUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestShipping (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shippingType\"] = $2; })"
+        js_setShippingType :: PaymentOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-shippingtype PaymentOptions.shippingType specification>
+setShippingType :: (MonadDOM m) => PaymentOptions -> PaymentShippingType -> m ()
+setShippingType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setShippingType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingType\"]; })"
+        js_getShippingType :: PaymentOptions -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-shippingtype PaymentOptions.shippingType specification>
+getShippingType :: (MonadDOM m) => PaymentOptions -> m (Maybe PaymentShippingType)
+getShippingType self = liftDOM (((js_getShippingType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-shippingtype PaymentOptions.shippingType specification>
+getShippingTypeUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m PaymentShippingType
+getShippingTypeUnsafe self = liftDOM ((((js_getShippingType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-shippingtype PaymentOptions.shippingType specification>
+getShippingTypeUnchecked :: (MonadDOM m) => PaymentOptions -> m PaymentShippingType
+getShippingTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentRequest.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentRequest
+       (js_newPaymentRequest, js_abort, js_canMakePayment, js_show, js_getId, js_getShippingAddress, js_getShippingOption, js_getShippingType, newPaymentRequest, abort, canMakePayment, canMakePayment_, show, show_, getId, getShippingAddress, getShippingAddressUnsafe, getShippingAddressUnchecked, getShippingOption, getShippingOptionUnsafe, getShippingOptionUnchecked, getShippingType, getShippingTypeUnsafe, getShippingTypeUnchecked, shippingaddresschange, shippingoptionchange, paymentmethodchange, PaymentRequest(..), gTypePaymentRequest)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"PaymentRequest\"]($1, $2, $3); })"
+        js_newPaymentRequest :: JSVal -> PaymentDetailsInit -> JSVal -> IO PaymentRequest
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/PaymentRequest MDN PaymentRequest. documentation>
+newPaymentRequest :: (MonadDOM m) => [PaymentMethodData] -> PaymentDetailsInit -> Maybe PaymentOptions -> m PaymentRequest
+newPaymentRequest methodData details options = liftDOM (((toJSVal methodData) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_newPaymentRequest a1' (details) a3'))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"abort\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_abort :: PaymentRequest -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/abort MDN PaymentRequest.abort documentation>
+abort :: (MonadDOM m) => PaymentRequest -> m ()
+abort self = liftDOM (void (((js_abort (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"canMakePayment\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_canMakePayment :: PaymentRequest -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/canMakePayment MDN PaymentRequest.canMakePayment documentation>
+canMakePayment :: (MonadDOM m) => PaymentRequest -> m Bool
+canMakePayment self = liftDOM (((js_canMakePayment (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/canMakePayment MDN PaymentRequest.canMakePayment documentation>
+canMakePayment_ :: (MonadDOM m) => PaymentRequest -> m ()
+canMakePayment_ self = liftDOM (void (((js_canMakePayment (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"show\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_show :: PaymentRequest -> JSVal -> IO (JSVal, PaymentResponse)
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/show MDN PaymentRequest.show documentation>
+show :: (MonadDOM m) => PaymentRequest -> Maybe JSVal -> m PaymentResponse
+show self detailsPromise = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal detailsPromise) >>= \a2' -> js_show (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/show MDN PaymentRequest.show documentation>
+show_ :: (MonadDOM m) => PaymentRequest -> Maybe JSVal -> m ()
+show_ self detailsPromise = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal detailsPromise) >>= \a2' -> js_show (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PaymentRequest -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/id MDN PaymentRequest.id documentation>
+getId :: (MonadDOM m, FromJSString result) => PaymentRequest -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingAddress\"]; })"
+        js_getShippingAddress :: PaymentRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingAddress MDN PaymentRequest.shippingAddress documentation>
+getShippingAddress :: (MonadDOM m) => PaymentRequest -> m (Maybe ContactAddress)
+getShippingAddress self = liftDOM (((js_getShippingAddress (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingAddress MDN PaymentRequest.shippingAddress documentation>
+getShippingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentRequest -> m ContactAddress
+getShippingAddressUnsafe self = liftDOM ((((js_getShippingAddress (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingAddress MDN PaymentRequest.shippingAddress documentation>
+getShippingAddressUnchecked :: (MonadDOM m) => PaymentRequest -> m ContactAddress
+getShippingAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingAddress (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingOption\"]; })"
+        js_getShippingOption :: PaymentRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingOption MDN PaymentRequest.shippingOption documentation>
+getShippingOption :: (MonadDOM m, FromJSString result) => PaymentRequest -> m (Maybe result)
+getShippingOption self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getShippingOption (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingOption MDN PaymentRequest.shippingOption documentation>
+getShippingOptionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentRequest -> m result
+getShippingOptionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getShippingOption (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingOption MDN PaymentRequest.shippingOption documentation>
+getShippingOptionUnchecked :: (MonadDOM m, FromJSString result) => PaymentRequest -> m result
+getShippingOptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingOption (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingType\"]; })"
+        js_getShippingType :: PaymentRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingType MDN PaymentRequest.shippingType documentation>
+getShippingType :: (MonadDOM m) => PaymentRequest -> m (Maybe PaymentShippingType)
+getShippingType self = liftDOM (((js_getShippingType (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingType MDN PaymentRequest.shippingType documentation>
+getShippingTypeUnsafe :: (MonadDOM m, HasCallStack) => PaymentRequest -> m PaymentShippingType
+getShippingTypeUnsafe self = liftDOM ((((js_getShippingType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingType MDN PaymentRequest.shippingType documentation>
+getShippingTypeUnchecked :: (MonadDOM m) => PaymentRequest -> m PaymentShippingType
+getShippingTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingType (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentrequest-onshippingaddresschange shippingaddresschange event>
+shippingaddresschange :: EventName PaymentRequest PaymentRequestUpdateEvent
+shippingaddresschange = unsafeEventName (toJSString "shippingaddresschange")
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentrequest-onshippingoptionchange shippingoptionchange event>
+shippingoptionchange :: EventName PaymentRequest PaymentRequestUpdateEvent
+shippingoptionchange = unsafeEventName (toJSString "shippingoptionchange")
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentrequest-onpaymentmethodchange paymentmethodchange event>
+paymentmethodchange :: EventName PaymentRequest PaymentMethodChangeEvent
+paymentmethodchange = unsafeEventName (toJSString "paymentmethodchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentRequestUpdateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentRequestUpdateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentRequestUpdateEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentRequestUpdateEvent
+       (js_newPaymentRequestUpdateEvent, js_updateWith, newPaymentRequestUpdateEvent, updateWith, PaymentRequestUpdateEvent(..), gTypePaymentRequestUpdateEvent, IsPaymentRequestUpdateEvent, toPaymentRequestUpdateEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PaymentRequestUpdateEvent\"]($1, $2); })"
+        js_newPaymentRequestUpdateEvent :: JSString -> JSVal -> IO PaymentRequestUpdateEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequestUpdateEvent/PaymentRequestUpdateEvent MDN PaymentRequestUpdateEvent. documentation>
+newPaymentRequestUpdateEvent :: (MonadDOM m, ToJSString type', IsPaymentRequestUpdateEventInit eventInitDict) => type' -> Maybe eventInitDict -> m PaymentRequestUpdateEvent
+newPaymentRequestUpdateEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPaymentRequestUpdateEvent (toJSString type') a2'))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"updateWith\"]($2); })"
+        js_updateWith :: PaymentRequestUpdateEvent -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequestUpdateEvent/updateWith MDN PaymentRequestUpdateEvent.updateWith documentation>
+updateWith :: (MonadDOM m, IsPaymentRequestUpdateEvent self) => self -> JSVal -> m ()
+updateWith self detailsPromise = liftDOM (void (((toJSVal detailsPromise) >>= \a2' -> js_updateWith ((Types.toPaymentRequestUpdateEvent self)) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentRequestUpdateEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentRequestUpdateEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentRequestUpdateEventInit.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentRequestUpdateEventInit
+       (js_newPaymentRequestUpdateEventInit, newPaymentRequestUpdateEventInit, PaymentRequestUpdateEventInit(..), gTypePaymentRequestUpdateEventInit, IsPaymentRequestUpdateEventInit, toPaymentRequestUpdateEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPaymentRequestUpdateEventInit :: IO PaymentRequestUpdateEventInit
+-- | <https://w3c.github.io/payment-request/#dom-paymentrequestupdateeventinit PaymentRequestUpdateEventInit specification>
+newPaymentRequestUpdateEventInit :: (MonadDOM m) => m PaymentRequestUpdateEventInit
+newPaymentRequestUpdateEventInit = liftDOM ((js_newPaymentRequestUpdateEventInit))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentResponse.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentResponse.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentResponse
+       (js_complete, js_retry, js_toJSON, js_getRequestId, js_getMethodName, js_getDetails, js_getShippingAddress, js_getShippingOption, js_getPayerName, js_getPayerEmail, js_getPayerPhone, complete, retry, toJSON, toJSON_, getRequestId, getMethodName, getDetails, getShippingAddress, getShippingAddressUnsafe, getShippingAddressUnchecked, getShippingOption, getShippingOptionUnsafe, getShippingOptionUnchecked, getPayerName, getPayerNameUnsafe, getPayerNameUnchecked, getPayerEmail, getPayerEmailUnsafe, getPayerEmailUnchecked, getPayerPhone, getPayerPhoneUnsafe, getPayerPhoneUnchecked, payerdetailchange, PaymentResponse(..), gTypePaymentResponse)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"complete\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_complete :: PaymentResponse -> JSVal -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/complete MDN PaymentResponse.complete documentation>
+complete :: (MonadDOM m) => PaymentResponse -> Maybe PaymentComplete -> Maybe PaymentCompleteDetails -> m ()
+complete self result' details = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal result') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal details) >>= \a3' -> js_complete (self) a2' a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"retry\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_retry :: PaymentResponse -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/retry MDN PaymentResponse.retry documentation>
+retry :: (MonadDOM m) => PaymentResponse -> Maybe PaymentValidationErrors -> m ()
+retry self errorFields = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal errorFields) >>= \a2' -> js_retry (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PaymentResponse -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/toJSON MDN PaymentResponse.toJSON documentation>
+toJSON :: (MonadDOM m) => PaymentResponse -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/toJSON MDN PaymentResponse.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PaymentResponse -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestId\"]; })"
+        js_getRequestId :: PaymentResponse -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/requestId MDN PaymentResponse.requestId documentation>
+getRequestId :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getRequestId self = liftDOM ((fromJSString <$> (js_getRequestId (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"methodName\"]; })"
+        js_getMethodName :: PaymentResponse -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/methodName MDN PaymentResponse.methodName documentation>
+getMethodName :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getMethodName self = liftDOM ((fromJSString <$> (js_getMethodName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"details\"]; })"
+        js_getDetails :: PaymentResponse -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/details MDN PaymentResponse.details documentation>
+getDetails :: (MonadDOM m) => PaymentResponse -> m GObject
+getDetails self = liftDOM ((js_getDetails (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingAddress\"]; })"
+        js_getShippingAddress :: PaymentResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingAddress MDN PaymentResponse.shippingAddress documentation>
+getShippingAddress :: (MonadDOM m) => PaymentResponse -> m (Maybe ContactAddress)
+getShippingAddress self = liftDOM (((js_getShippingAddress (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingAddress MDN PaymentResponse.shippingAddress documentation>
+getShippingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentResponse -> m ContactAddress
+getShippingAddressUnsafe self = liftDOM ((((js_getShippingAddress (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingAddress MDN PaymentResponse.shippingAddress documentation>
+getShippingAddressUnchecked :: (MonadDOM m) => PaymentResponse -> m ContactAddress
+getShippingAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingAddress (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingOption\"]; })"
+        js_getShippingOption :: PaymentResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingOption MDN PaymentResponse.shippingOption documentation>
+getShippingOption :: (MonadDOM m, FromJSString result) => PaymentResponse -> m (Maybe result)
+getShippingOption self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getShippingOption (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingOption MDN PaymentResponse.shippingOption documentation>
+getShippingOptionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentResponse -> m result
+getShippingOptionUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getShippingOption (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingOption MDN PaymentResponse.shippingOption documentation>
+getShippingOptionUnchecked :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getShippingOptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingOption (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payerName\"]; })"
+        js_getPayerName :: PaymentResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerName MDN PaymentResponse.payerName documentation>
+getPayerName :: (MonadDOM m, FromJSString result) => PaymentResponse -> m (Maybe result)
+getPayerName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPayerName (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerName MDN PaymentResponse.payerName documentation>
+getPayerNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentResponse -> m result
+getPayerNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPayerName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerName MDN PaymentResponse.payerName documentation>
+getPayerNameUnchecked :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getPayerNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayerName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payerEmail\"]; })"
+        js_getPayerEmail :: PaymentResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerEmail MDN PaymentResponse.payerEmail documentation>
+getPayerEmail :: (MonadDOM m, FromJSString result) => PaymentResponse -> m (Maybe result)
+getPayerEmail self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPayerEmail (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerEmail MDN PaymentResponse.payerEmail documentation>
+getPayerEmailUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentResponse -> m result
+getPayerEmailUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPayerEmail (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerEmail MDN PaymentResponse.payerEmail documentation>
+getPayerEmailUnchecked :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getPayerEmailUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayerEmail (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payerPhone\"]; })"
+        js_getPayerPhone :: PaymentResponse -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerPhone MDN PaymentResponse.payerPhone documentation>
+getPayerPhone :: (MonadDOM m, FromJSString result) => PaymentResponse -> m (Maybe result)
+getPayerPhone self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPayerPhone (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerPhone MDN PaymentResponse.payerPhone documentation>
+getPayerPhoneUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentResponse -> m result
+getPayerPhoneUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPayerPhone (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/payerPhone MDN PaymentResponse.payerPhone documentation>
+getPayerPhoneUnchecked :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getPayerPhoneUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayerPhone (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentresponse-onpayerdetailchange payerdetailchange event>
+payerdetailchange :: EventName PaymentResponse PaymentRequestUpdateEvent
+payerdetailchange = unsafeEventName (toJSString "payerdetailchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentShippingOption.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentShippingOption.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentShippingOption.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentShippingOption
+       (js_newPaymentShippingOption, js_setId, js_getId, js_setLabel, js_getLabel, js_setAmount, js_getAmount, js_setSelected, js_getSelected, newPaymentShippingOption, setId, getId, setLabel, getLabel, setAmount, getAmount, setSelected, getSelected, getSelectedUnsafe, getSelectedUnchecked, PaymentShippingOption(..), gTypePaymentShippingOption)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"id\": $1, \"label\": $2, \"amount\": $3}); })"
+        js_newPaymentShippingOption :: JSString -> JSString -> PaymentCurrencyAmount -> IO PaymentShippingOption
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption PaymentShippingOption specification>
+newPaymentShippingOption :: (MonadDOM m, ToJSString id, ToJSString label) => id -> label -> PaymentCurrencyAmount -> m PaymentShippingOption
+newPaymentShippingOption id label amount = liftDOM ((js_newPaymentShippingOption (toJSString id) (toJSString label) (amount)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: PaymentShippingOption -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-id PaymentShippingOption.id specification>
+setId :: (MonadDOM m, ToJSString val) => PaymentShippingOption -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PaymentShippingOption -> IO JSString
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-id PaymentShippingOption.id specification>
+getId :: (MonadDOM m, FromJSString result) => PaymentShippingOption -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"label\"] = $2; })"
+        js_setLabel :: PaymentShippingOption -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-label PaymentShippingOption.label specification>
+setLabel :: (MonadDOM m, ToJSString val) => PaymentShippingOption -> val -> m ()
+setLabel self val = liftDOM (void ((js_setLabel (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: PaymentShippingOption -> IO JSString
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-label PaymentShippingOption.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => PaymentShippingOption -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"amount\"] = $2; })"
+        js_setAmount :: PaymentShippingOption -> PaymentCurrencyAmount -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-amount PaymentShippingOption.amount specification>
+setAmount :: (MonadDOM m) => PaymentShippingOption -> PaymentCurrencyAmount -> m ()
+setAmount self val = liftDOM (void ((js_setAmount (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"amount\"]; })"
+        js_getAmount :: PaymentShippingOption -> IO PaymentCurrencyAmount
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-amount PaymentShippingOption.amount specification>
+getAmount :: (MonadDOM m) => PaymentShippingOption -> m PaymentCurrencyAmount
+getAmount self = liftDOM ((js_getAmount (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"selected\"] = $2; })"
+        js_setSelected :: PaymentShippingOption -> Bool -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-selected PaymentShippingOption.selected specification>
+setSelected :: (MonadDOM m) => PaymentShippingOption -> Bool -> m ()
+setSelected self val = liftDOM (void ((js_setSelected (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"selected\"]; })"
+        js_getSelected :: PaymentShippingOption -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-selected PaymentShippingOption.selected specification>
+getSelected :: (MonadDOM m) => PaymentShippingOption -> m (Maybe Bool)
+getSelected self = liftDOM (((js_getSelected (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-selected PaymentShippingOption.selected specification>
+getSelectedUnsafe :: (MonadDOM m, HasCallStack) => PaymentShippingOption -> m Bool
+getSelectedUnsafe self = liftDOM ((((js_getSelected (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-selected PaymentShippingOption.selected specification>
+getSelectedUnchecked :: (MonadDOM m) => PaymentShippingOption -> m Bool
+getSelectedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelected (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PaymentValidationErrors.hs b/src/GHCJS/DOM/JSFFI/Generated/PaymentValidationErrors.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PaymentValidationErrors.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PaymentValidationErrors
+       (js_newPaymentValidationErrors, js_setPayer, js_getPayer, js_setShippingAddress, js_getShippingAddress, js_setError, js_getError, js_setPaymentMethod, js_getPaymentMethod, newPaymentValidationErrors, setPayer, getPayer, getPayerUnsafe, getPayerUnchecked, setShippingAddress, getShippingAddress, getShippingAddressUnsafe, getShippingAddressUnchecked, setError, getError, getErrorUnsafe, getErrorUnchecked, setPaymentMethod, getPaymentMethod, getPaymentMethodUnsafe, getPaymentMethodUnchecked, PaymentValidationErrors(..), gTypePaymentValidationErrors)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPaymentValidationErrors :: IO PaymentValidationErrors
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors PaymentValidationErrors specification>
+newPaymentValidationErrors :: (MonadDOM m) => m PaymentValidationErrors
+newPaymentValidationErrors = liftDOM ((js_newPaymentValidationErrors))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payer\"] = $2; })"
+        js_setPayer :: PaymentValidationErrors -> PayerErrors -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-payer PaymentValidationErrors.payer specification>
+setPayer :: (MonadDOM m) => PaymentValidationErrors -> PayerErrors -> m ()
+setPayer self val = liftDOM (void ((js_setPayer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payer\"]; })"
+        js_getPayer :: PaymentValidationErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-payer PaymentValidationErrors.payer specification>
+getPayer :: (MonadDOM m) => PaymentValidationErrors -> m (Maybe PayerErrors)
+getPayer self = liftDOM (((js_getPayer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-payer PaymentValidationErrors.payer specification>
+getPayerUnsafe :: (MonadDOM m, HasCallStack) => PaymentValidationErrors -> m PayerErrors
+getPayerUnsafe self = liftDOM ((((js_getPayer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-payer PaymentValidationErrors.payer specification>
+getPayerUnchecked :: (MonadDOM m) => PaymentValidationErrors -> m PayerErrors
+getPayerUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"shippingAddress\"] = $2; })"
+        js_setShippingAddress :: PaymentValidationErrors -> AddressErrors -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-shippingaddress PaymentValidationErrors.shippingAddress specification>
+setShippingAddress :: (MonadDOM m) => PaymentValidationErrors -> AddressErrors -> m ()
+setShippingAddress self val = liftDOM (void ((js_setShippingAddress (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shippingAddress\"]; })"
+        js_getShippingAddress :: PaymentValidationErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-shippingaddress PaymentValidationErrors.shippingAddress specification>
+getShippingAddress :: (MonadDOM m) => PaymentValidationErrors -> m (Maybe AddressErrors)
+getShippingAddress self = liftDOM (((js_getShippingAddress (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-shippingaddress PaymentValidationErrors.shippingAddress specification>
+getShippingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentValidationErrors -> m AddressErrors
+getShippingAddressUnsafe self = liftDOM ((((js_getShippingAddress (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-shippingaddress PaymentValidationErrors.shippingAddress specification>
+getShippingAddressUnchecked :: (MonadDOM m) => PaymentValidationErrors -> m AddressErrors
+getShippingAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getShippingAddress (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: PaymentValidationErrors -> JSString -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-error PaymentValidationErrors.error specification>
+setError :: (MonadDOM m, ToJSString val) => PaymentValidationErrors -> val -> m ()
+setError self val = liftDOM (void ((js_setError (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: PaymentValidationErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-error PaymentValidationErrors.error specification>
+getError :: (MonadDOM m, FromJSString result) => PaymentValidationErrors -> m (Maybe result)
+getError self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getError (self))))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-error PaymentValidationErrors.error specification>
+getErrorUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentValidationErrors -> m result
+getErrorUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getError (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-error PaymentValidationErrors.error specification>
+getErrorUnchecked :: (MonadDOM m, FromJSString result) => PaymentValidationErrors -> m result
+getErrorUnchecked self = liftDOM ((pFromJSVal <$> (js_getError (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"paymentMethod\"] = $2; })"
+        js_setPaymentMethod :: PaymentValidationErrors -> GObject -> IO ()
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-paymentmethod PaymentValidationErrors.paymentMethod specification>
+setPaymentMethod :: (MonadDOM m) => PaymentValidationErrors -> GObject -> m ()
+setPaymentMethod self val = liftDOM (void ((js_setPaymentMethod (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"paymentMethod\"]; })"
+        js_getPaymentMethod :: PaymentValidationErrors -> IO JSVal
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-paymentmethod PaymentValidationErrors.paymentMethod specification>
+getPaymentMethod :: (MonadDOM m) => PaymentValidationErrors -> m (Maybe GObject)
+getPaymentMethod self = liftDOM (((js_getPaymentMethod (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-paymentmethod PaymentValidationErrors.paymentMethod specification>
+getPaymentMethodUnsafe :: (MonadDOM m, HasCallStack) => PaymentValidationErrors -> m GObject
+getPaymentMethodUnsafe self = liftDOM ((((js_getPaymentMethod (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-paymentmethod PaymentValidationErrors.paymentMethod specification>
+getPaymentMethodUnchecked :: (MonadDOM m) => PaymentValidationErrors -> m GObject
+getPaymentMethodUnchecked self = liftDOM ((pFromJSVal <$> (js_getPaymentMethod (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Performance.hs b/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
@@ -1,183 +1,155 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from hr-time-3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Performance
-       (js_now, now, now_, js_getEntries, getEntries, getEntries_,
-        js_getEntriesByType, getEntriesByType, getEntriesByType_,
-        js_getEntriesByName, getEntriesByName, getEntriesByName_,
-        js_clearResourceTimings, clearResourceTimings,
-        js_setResourceTimingBufferSize, setResourceTimingBufferSize,
-        js_mark, mark, js_clearMarks, clearMarks, js_measure, measure,
-        js_clearMeasures, clearMeasures, js_getNavigation, getNavigation,
-        js_getTiming, getTiming, resourceTimingBufferFull, Performance(..),
-        gTypePerformance)
+       (js_clearMarks, js_clearMeasures, js_clearResourceTimings, js_getEntries, js_getEntriesByName, js_getEntriesByType, js_mark, js_mark', js_measure, js_now, js_setResourceTimingBufferSize, js_toJSON, js_getTimeOrigin, js_getEventCounts, js_getInteractionCount, js_getTiming, js_getNavigation, clearMarks, clearMeasures, clearResourceTimings, getEntries, getEntries_, getEntriesByName, getEntriesByName_, getEntriesByType, getEntriesByType_, mark, mark_, mark', mark'_, measure, measure_, now, now_, setResourceTimingBufferSize, toJSON, toJSON_, getTimeOrigin, getEventCounts, getInteractionCount, getTiming, getNavigation, resourceTimingBufferFull, Performance(..), gTypePerformance)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"now\"](); })" js_now ::
-        Performance -> IO DOMHighResTimeStamp
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
-now :: (MonadIO m) => Performance -> m DOMHighResTimeStamp
-now self = liftIO (js_now self)
+foreign import javascript safe "(($1, $2) => { return $1[\"clearMarks\"]($2); })"
+        js_clearMarks :: Performance -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/clearMarks MDN Performance.clearMarks documentation>
+clearMarks :: (MonadDOM m, ToJSString markName) => Performance -> Maybe markName -> m ()
+clearMarks self markName = liftDOM (void ((js_clearMarks (self) (toOptionalJSString markName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
-now_ :: (MonadIO m) => Performance -> m ()
-now_ self = liftIO (void (js_now self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getEntries\"](); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"clearMeasures\"]($2); })"
+        js_clearMeasures :: Performance -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/clearMeasures MDN Performance.clearMeasures documentation>
+clearMeasures :: (MonadDOM m, ToJSString measureName) => Performance -> Maybe measureName -> m ()
+clearMeasures self measureName = liftDOM (void ((js_clearMeasures (self) (toOptionalJSString measureName))))
+
+foreign import javascript safe "(($1) => { return $1[\"clearResourceTimings\"](); })"
+        js_clearResourceTimings :: Performance -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/clearResourceTimings MDN Performance.clearResourceTimings documentation>
+clearResourceTimings :: (MonadDOM m) => Performance -> m ()
+clearResourceTimings self = liftDOM (void ((js_clearResourceTimings (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"getEntries\"](); })"
         js_getEntries :: Performance -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntries MDN Performance.getEntries documentation>
+getEntries :: (MonadDOM m) => Performance -> m [PerformanceEntry]
+getEntries self = liftDOM (((js_getEntries (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntries Mozilla Performance.getEntries documentation> 
-getEntries :: (MonadIO m) => Performance -> m PerformanceEntryList
-getEntries self
-  = liftIO ((js_getEntries self) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntries MDN Performance.getEntries documentation>
+getEntries_ :: (MonadDOM m) => Performance -> m ()
+getEntries_ self = liftDOM (void ((js_getEntries (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntries Mozilla Performance.getEntries documentation> 
-getEntries_ :: (MonadIO m) => Performance -> m ()
-getEntries_ self = liftIO (void (js_getEntries self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getEntriesByType\"]($2); })"
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getEntriesByName\"]($2, $3); })"
+        js_getEntriesByName :: Performance -> JSString -> (Optional JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntriesByName MDN Performance.getEntriesByName documentation>
+getEntriesByName :: (MonadDOM m, ToJSString name, ToJSString type') => Performance -> name -> Maybe type' -> m [PerformanceEntry]
+getEntriesByName self name type' = liftDOM (((js_getEntriesByName (self) (toJSString name) (toOptionalJSString type')) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntriesByName MDN Performance.getEntriesByName documentation>
+getEntriesByName_ :: (MonadDOM m, ToJSString name, ToJSString type') => Performance -> name -> Maybe type' -> m ()
+getEntriesByName_ self name type' = liftDOM (void ((js_getEntriesByName (self) (toJSString name) (toOptionalJSString type'))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getEntriesByType\"]($2); })"
         js_getEntriesByType :: Performance -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntriesByType MDN Performance.getEntriesByType documentation>
+getEntriesByType :: (MonadDOM m, ToJSString type') => Performance -> type' -> m [PerformanceEntry]
+getEntriesByType self type' = liftDOM (((js_getEntriesByType (self) (toJSString type')) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
-getEntriesByType ::
-                 (MonadIO m, ToJSString entryType) =>
-                   Performance -> entryType -> m PerformanceEntryList
-getEntriesByType self entryType
-  = liftIO
-      ((js_getEntriesByType self (toJSString entryType)) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntriesByType MDN Performance.getEntriesByType documentation>
+getEntriesByType_ :: (MonadDOM m, ToJSString type') => Performance -> type' -> m ()
+getEntriesByType_ self type' = liftDOM (void ((js_getEntriesByType (self) (toJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
-getEntriesByType_ ::
-                  (MonadIO m, ToJSString entryType) =>
-                    Performance -> entryType -> m ()
-getEntriesByType_ self entryType
-  = liftIO (void (js_getEntriesByType self (toJSString entryType)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getEntriesByName\"]($2, $3); })"
-        js_getEntriesByName ::
-        Performance -> JSString -> Optional JSString -> IO JSVal
+foreign import javascript safe "(($1, $2) => { return $1[\"mark\"]($2); })"
+        js_mark :: Performance -> JSString -> IO PerformanceMark
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/mark MDN Performance.mark documentation>
+mark :: (MonadDOM m, ToJSString markName) => Performance -> markName -> m PerformanceMark
+mark self markName = liftDOM ((js_mark (self) (toJSString markName)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
-getEntriesByName ::
-                 (MonadIO m, ToJSString name, ToJSString entryType) =>
-                   Performance -> name -> Maybe entryType -> m PerformanceEntryList
-getEntriesByName self name entryType
-  = liftIO
-      ((js_getEntriesByName self (toJSString name)
-          (toOptionalJSString entryType))
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/mark MDN Performance.mark documentation>
+mark_ :: (MonadDOM m, ToJSString markName) => Performance -> markName -> m ()
+mark_ self markName = liftDOM (void ((js_mark (self) (toJSString markName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
-getEntriesByName_ ::
-                  (MonadIO m, ToJSString name, ToJSString entryType) =>
-                    Performance -> name -> Maybe entryType -> m ()
-getEntriesByName_ self name entryType
-  = liftIO
-      (void
-         (js_getEntriesByName self (toJSString name)
-            (toOptionalJSString entryType)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clearResourceTimings\"](); })"
-        js_clearResourceTimings :: Performance -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"mark\"]($2, $3); })"
+        js_mark' :: Performance -> JSString -> JSVal -> IO PerformanceMark
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/mark MDN Performance.mark documentation>
+mark' :: (MonadDOM m, ToJSString markName) => Performance -> markName -> Maybe PerformanceMarkOptions -> m PerformanceMark
+mark' self markName markOptions = liftDOM (((P.maybe (P.return jsUndefined) toJSVal markOptions) >>= \a3' -> js_mark' (self) (toJSString markName) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearResourceTimings Mozilla Performance.clearResourceTimings documentation> 
-clearResourceTimings :: (MonadIO m) => Performance -> m ()
-clearResourceTimings self = liftIO (js_clearResourceTimings self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"setResourceTimingBufferSize\"]($2); })"
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/mark MDN Performance.mark documentation>
+mark'_ :: (MonadDOM m, ToJSString markName) => Performance -> markName -> Maybe PerformanceMarkOptions -> m ()
+mark'_ self markName markOptions = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal markOptions) >>= \a3' -> js_mark' (self) (toJSString markName) a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"measure\"]($2, $3, $4); })"
+        js_measure :: Performance -> JSString -> JSVal -> (Optional JSString) -> IO PerformanceMeasure
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/measure MDN Performance.measure documentation>
+measure :: (MonadDOM m, ToJSString measureName, IsStringOrPerformanceMeasureOptions startOrMeasureOptions, ToJSString endMark) => Performance -> measureName -> Maybe startOrMeasureOptions -> Maybe endMark -> m PerformanceMeasure
+measure self measureName startOrMeasureOptions endMark = liftDOM (((P.maybe (P.return jsUndefined) toJSVal startOrMeasureOptions) >>= \a3' -> js_measure (self) (toJSString measureName) a3' (toOptionalJSString endMark)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/measure MDN Performance.measure documentation>
+measure_ :: (MonadDOM m, ToJSString measureName, IsStringOrPerformanceMeasureOptions startOrMeasureOptions, ToJSString endMark) => Performance -> measureName -> Maybe startOrMeasureOptions -> Maybe endMark -> m ()
+measure_ self measureName startOrMeasureOptions endMark = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal startOrMeasureOptions) >>= \a3' -> js_measure (self) (toJSString measureName) a3' (toOptionalJSString endMark))))
+
+foreign import javascript safe "(($1) => { return $1[\"now\"](); })"
+        js_now :: Performance -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/now MDN Performance.now documentation>
+now :: (MonadDOM m) => Performance -> m Double
+now self = liftDOM ((js_now (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/now MDN Performance.now documentation>
+now_ :: (MonadDOM m) => Performance -> m ()
+now_ self = liftDOM (void ((js_now (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setResourceTimingBufferSize\"]($2); })"
         js_setResourceTimingBufferSize :: Performance -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/setResourceTimingBufferSize MDN Performance.setResourceTimingBufferSize documentation>
+setResourceTimingBufferSize :: (MonadDOM m) => Performance -> Word -> m ()
+setResourceTimingBufferSize self maxSize = liftDOM (void ((js_setResourceTimingBufferSize (self) (maxSize))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.setResourceTimingBufferSize Mozilla Performance.setResourceTimingBufferSize documentation> 
-setResourceTimingBufferSize ::
-                            (MonadIO m) => Performance -> Word -> m ()
-setResourceTimingBufferSize self maxSize
-  = liftIO (js_setResourceTimingBufferSize self maxSize)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"mark\"]($2); })" js_mark ::
-        Performance -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: Performance -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/toJSON MDN Performance.toJSON documentation>
+toJSON :: (MonadDOM m) => Performance -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.mark Mozilla Performance.mark documentation> 
-mark ::
-     (MonadIO m, ToJSString markName) => Performance -> markName -> m ()
-mark self markName = liftIO (js_mark self (toJSString markName))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearMarks\"]($2); })"
-        js_clearMarks :: Performance -> Optional JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/toJSON MDN Performance.toJSON documentation>
+toJSON_ :: (MonadDOM m) => Performance -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMarks Mozilla Performance.clearMarks documentation> 
-clearMarks ::
-           (MonadIO m, ToJSString markName) =>
-             Performance -> Maybe markName -> m ()
-clearMarks self markName
-  = liftIO (js_clearMarks self (toOptionalJSString markName))
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"measure\"]($2, $3, $4); })"
-        js_measure ::
-        Performance ->
-          JSString -> Optional JSString -> Optional JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"timeOrigin\"]; })"
+        js_getTimeOrigin :: Performance -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/timeOrigin MDN Performance.timeOrigin documentation>
+getTimeOrigin :: (MonadDOM m) => Performance -> m Double
+getTimeOrigin self = liftDOM ((js_getTimeOrigin (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.measure Mozilla Performance.measure documentation> 
-measure ::
-        (MonadIO m, ToJSString measureName, ToJSString startMark,
-         ToJSString endMark) =>
-          Performance ->
-            measureName -> Maybe startMark -> Maybe endMark -> m ()
-measure self measureName startMark endMark
-  = liftIO
-      (js_measure self (toJSString measureName)
-         (toOptionalJSString startMark)
-         (toOptionalJSString endMark))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearMeasures\"]($2); })"
-        js_clearMeasures :: Performance -> Optional JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"eventCounts\"]; })"
+        js_getEventCounts :: Performance -> IO EventCounts
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/eventCounts MDN Performance.eventCounts documentation>
+getEventCounts :: (MonadDOM m) => Performance -> m EventCounts
+getEventCounts self = liftDOM ((js_getEventCounts (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMeasures Mozilla Performance.clearMeasures documentation> 
-clearMeasures ::
-              (MonadIO m, ToJSString measureName) =>
-                Performance -> Maybe measureName -> m ()
-clearMeasures self measureName
-  = liftIO (js_clearMeasures self (toOptionalJSString measureName))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"navigation\"]; })"
-        js_getNavigation :: Performance -> IO PerformanceNavigation
+foreign import javascript unsafe "(($1) => { return $1[\"interactionCount\"]; })"
+        js_getInteractionCount :: Performance -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/interactionCount MDN Performance.interactionCount documentation>
+getInteractionCount :: (MonadDOM m) => Performance -> m Word53
+getInteractionCount self = liftDOM (((js_getInteractionCount (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.navigation Mozilla Performance.navigation documentation> 
-getNavigation ::
-              (MonadIO m) => Performance -> m PerformanceNavigation
-getNavigation self = liftIO (js_getNavigation self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"timing\"]; })" js_getTiming ::
-        Performance -> IO PerformanceTiming
+foreign import javascript unsafe "(($1) => { return $1[\"timing\"]; })"
+        js_getTiming :: Performance -> IO PerformanceTiming
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/timing MDN Performance.timing documentation>
+getTiming :: (MonadDOM m) => Performance -> m PerformanceTiming
+getTiming self = liftDOM ((js_getTiming (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.timing Mozilla Performance.timing documentation> 
-getTiming :: (MonadIO m) => Performance -> m PerformanceTiming
-getTiming self = liftIO (js_getTiming self)
+foreign import javascript unsafe "(($1) => { return $1[\"navigation\"]; })"
+        js_getNavigation :: Performance -> IO PerformanceNavigation
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/navigation MDN Performance.navigation documentation>
+getNavigation :: (MonadDOM m) => Performance -> m PerformanceNavigation
+getNavigation self = liftDOM ((js_getNavigation (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.onresourcetimingbufferfull Mozilla Performance.onresourcetimingbufferfull documentation> 
-resourceTimingBufferFull ::
-                           EventName Performance onresourcetimingbufferfull
-resourceTimingBufferFull
-  = unsafeEventName (toJSString "resourcetimingbufferfull")
+-- | <https://w3c.github.io/resource-timing/#dom-performance-onresourcetimingbufferfull resourcetimingbufferfull event>
+resourceTimingBufferFull :: EventName Performance Event
+resourceTimingBufferFull = unsafeEventName (toJSString "resourcetimingbufferfull")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
@@ -1,70 +1,51 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PerformanceEntry
-       (js_getName, getName, js_getEntryType, getEntryType,
-        js_getStartTime, getStartTime, js_getDuration, getDuration,
-        PerformanceEntry(..), gTypePerformanceEntry, IsPerformanceEntry,
-        toPerformanceEntry)
+       (js_toJSON, js_getName, js_getEntryType, js_getStartTime, js_getDuration, toJSON, toJSON_, getName, getEntryType, getStartTime, getDuration, PerformanceEntry(..), gTypePerformanceEntry, IsPerformanceEntry, toPerformanceEntry)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        PerformanceEntry -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.name Mozilla PerformanceEntry.name documentation> 
-getName ::
-        (MonadIO m, IsPerformanceEntry self, FromJSString result) =>
-          self -> m result
-getName self
-  = liftIO (fromJSString <$> (js_getName (toPerformanceEntry self)))
- 
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformanceEntry -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/toJSON MDN PerformanceEntry.toJSON documentation>
+toJSON :: (MonadDOM m, IsPerformanceEntry self) => self -> m GObject
+toJSON self = liftDOM ((js_toJSON ((Types.toPerformanceEntry self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/toJSON MDN PerformanceEntry.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsPerformanceEntry self) => self -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON ((Types.toPerformanceEntry self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PerformanceEntry -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/name MDN PerformanceEntry.name documentation>
+getName :: (MonadDOM m, IsPerformanceEntry self, FromJSString result) => self -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName ((Types.toPerformanceEntry self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"entryType\"]; })"
         js_getEntryType :: PerformanceEntry -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/entryType MDN PerformanceEntry.entryType documentation>
+getEntryType :: (MonadDOM m, IsPerformanceEntry self, FromJSString result) => self -> m result
+getEntryType self = liftDOM ((fromJSString <$> (js_getEntryType ((Types.toPerformanceEntry self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.entryType Mozilla PerformanceEntry.entryType documentation> 
-getEntryType ::
-             (MonadIO m, IsPerformanceEntry self, FromJSString result) =>
-               self -> m result
-getEntryType self
-  = liftIO
-      (fromJSString <$> (js_getEntryType (toPerformanceEntry self)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
-        js_getStartTime :: PerformanceEntry -> IO DOMHighResTimeStamp
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.startTime Mozilla PerformanceEntry.startTime documentation> 
-getStartTime ::
-             (MonadIO m, IsPerformanceEntry self) =>
-               self -> m DOMHighResTimeStamp
-getStartTime self
-  = liftIO (js_getStartTime (toPerformanceEntry self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
-        :: PerformanceEntry -> IO DOMHighResTimeStamp
+        js_getStartTime :: PerformanceEntry -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/startTime MDN PerformanceEntry.startTime documentation>
+getStartTime :: (MonadDOM m, IsPerformanceEntry self) => self -> m Double
+getStartTime self = liftDOM ((js_getStartTime ((Types.toPerformanceEntry self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.duration Mozilla PerformanceEntry.duration documentation> 
-getDuration ::
-            (MonadIO m, IsPerformanceEntry self) =>
-              self -> m DOMHighResTimeStamp
-getDuration self
-  = liftIO (js_getDuration (toPerformanceEntry self))
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: PerformanceEntry -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/duration MDN PerformanceEntry.duration documentation>
+getDuration :: (MonadDOM m, IsPerformanceEntry self) => self -> m Double
+getDuration self = liftDOM ((js_getDuration ((Types.toPerformanceEntry self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceEventTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEventTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEventTiming.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from event-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceEventTiming
+       (js_toJSON, js_getProcessingStart, js_getProcessingEnd, js_getCancelable, js_getTarget, js_getInteractionId, toJSON, toJSON_, getProcessingStart, getProcessingEnd, getCancelable, getTarget, getTargetUnsafe, getTargetUnchecked, getInteractionId, PerformanceEventTiming(..), gTypePerformanceEventTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformanceEventTiming -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/toJSON MDN PerformanceEventTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceEventTiming -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/toJSON MDN PerformanceEventTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceEventTiming -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"processingStart\"]; })"
+        js_getProcessingStart :: PerformanceEventTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/processingStart MDN PerformanceEventTiming.processingStart documentation>
+getProcessingStart :: (MonadDOM m) => PerformanceEventTiming -> m Double
+getProcessingStart self = liftDOM ((js_getProcessingStart (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"processingEnd\"]; })"
+        js_getProcessingEnd :: PerformanceEventTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/processingEnd MDN PerformanceEventTiming.processingEnd documentation>
+getProcessingEnd :: (MonadDOM m) => PerformanceEventTiming -> m Double
+getProcessingEnd self = liftDOM ((js_getProcessingEnd (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cancelable\"]; })"
+        js_getCancelable :: PerformanceEventTiming -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/cancelable MDN PerformanceEventTiming.cancelable documentation>
+getCancelable :: (MonadDOM m) => PerformanceEventTiming -> m Bool
+getCancelable self = liftDOM ((js_getCancelable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: PerformanceEventTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/target MDN PerformanceEventTiming.target documentation>
+getTarget :: (MonadDOM m) => PerformanceEventTiming -> m (Maybe Node)
+getTarget self = liftDOM (((js_getTarget (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/target MDN PerformanceEventTiming.target documentation>
+getTargetUnsafe :: (MonadDOM m, HasCallStack) => PerformanceEventTiming -> m Node
+getTargetUnsafe self = liftDOM ((((js_getTarget (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/target MDN PerformanceEventTiming.target documentation>
+getTargetUnchecked :: (MonadDOM m) => PerformanceEventTiming -> m Node
+getTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getTarget (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"interactionId\"]; })"
+        js_getInteractionId :: PerformanceEventTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/interactionId MDN PerformanceEventTiming.interactionId documentation>
+getInteractionId :: (MonadDOM m) => PerformanceEventTiming -> m Word53
+getInteractionId self = liftDOM (((js_getInteractionId (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceMark.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMark.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMark.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceMark
+       (js_newPerformanceMark, js_getDetail, newPerformanceMark, getDetail, PerformanceMark(..), gTypePerformanceMark)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PerformanceMark\"]($1, $2); })"
+        js_newPerformanceMark :: JSString -> JSVal -> IO PerformanceMark
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceMark/PerformanceMark MDN PerformanceMark. documentation>
+newPerformanceMark :: (MonadDOM m, ToJSString markName) => markName -> Maybe PerformanceMarkOptions -> m PerformanceMark
+newPerformanceMark markName markOptions = liftDOM (((P.maybe (P.return jsUndefined) toJSVal markOptions) >>= \a2' -> js_newPerformanceMark (toJSString markName) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: PerformanceMark -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceMark/detail MDN PerformanceMark.detail documentation>
+getDetail :: (MonadDOM m) => PerformanceMark -> m JSVal
+getDetail self = liftDOM ((js_getDetail (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceMarkOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMarkOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMarkOptions.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceMarkOptions
+       (js_newPerformanceMarkOptions, js_setDetail, js_getDetail, js_setStartTime, js_getStartTime, newPerformanceMarkOptions, setDetail, getDetail, setStartTime, getStartTime, getStartTimeUnsafe, getStartTimeUnchecked, PerformanceMarkOptions(..), gTypePerformanceMarkOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPerformanceMarkOptions :: IO PerformanceMarkOptions
+-- | <https://w3c.github.io/user-timing/#dictdef-performancemarkoptions PerformanceMarkOptions specification>
+newPerformanceMarkOptions :: (MonadDOM m) => m PerformanceMarkOptions
+newPerformanceMarkOptions = liftDOM ((js_newPerformanceMarkOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"detail\"] = $2; })"
+        js_setDetail :: PerformanceMarkOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-detail PerformanceMarkOptions.detail specification>
+setDetail :: (MonadDOM m) => PerformanceMarkOptions -> JSVal -> m ()
+setDetail self val = liftDOM (void ((js_setDetail (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: PerformanceMarkOptions -> IO JSVal
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-detail PerformanceMarkOptions.detail specification>
+getDetail :: (MonadDOM m) => PerformanceMarkOptions -> m JSVal
+getDetail self = liftDOM ((js_getDetail (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startTime\"] = $2; })"
+        js_setStartTime :: PerformanceMarkOptions -> Double -> IO ()
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-starttime PerformanceMarkOptions.startTime specification>
+setStartTime :: (MonadDOM m) => PerformanceMarkOptions -> Double -> m ()
+setStartTime self val = liftDOM (void ((js_setStartTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
+        js_getStartTime :: PerformanceMarkOptions -> IO JSVal
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-starttime PerformanceMarkOptions.startTime specification>
+getStartTime :: (MonadDOM m) => PerformanceMarkOptions -> m (Maybe Double)
+getStartTime self = liftDOM (((js_getStartTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-starttime PerformanceMarkOptions.startTime specification>
+getStartTimeUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMarkOptions -> m Double
+getStartTimeUnsafe self = liftDOM ((((js_getStartTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-starttime PerformanceMarkOptions.startTime specification>
+getStartTimeUnchecked :: (MonadDOM m) => PerformanceMarkOptions -> m Double
+getStartTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStartTime (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceMeasure.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMeasure.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMeasure.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceMeasure
+       (js_getDetail, getDetail, PerformanceMeasure(..), gTypePerformanceMeasure)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: PerformanceMeasure -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceMeasure/detail MDN PerformanceMeasure.detail documentation>
+getDetail :: (MonadDOM m) => PerformanceMeasure -> m JSVal
+getDetail self = liftDOM ((js_getDetail (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceMeasureOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMeasureOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceMeasureOptions.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceMeasureOptions
+       (js_newPerformanceMeasureOptions, js_setDetail, js_getDetail, js_setStart, js_getStart, js_setDuration, js_getDuration, js_setEnd, js_getEnd, newPerformanceMeasureOptions, setDetail, getDetail, setStart, getStart, getStartUnsafe, getStartUnchecked, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setEnd, getEnd, getEndUnsafe, getEndUnchecked, PerformanceMeasureOptions(..), gTypePerformanceMeasureOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPerformanceMeasureOptions :: IO PerformanceMeasureOptions
+-- | <https://w3c.github.io/user-timing/#dictdef-performancemeasureoptions PerformanceMeasureOptions specification>
+newPerformanceMeasureOptions :: (MonadDOM m) => m PerformanceMeasureOptions
+newPerformanceMeasureOptions = liftDOM ((js_newPerformanceMeasureOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"detail\"] = $2; })"
+        js_setDetail :: PerformanceMeasureOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-detail PerformanceMeasureOptions.detail specification>
+setDetail :: (MonadDOM m) => PerformanceMeasureOptions -> JSVal -> m ()
+setDetail self val = liftDOM (void ((js_setDetail (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: PerformanceMeasureOptions -> IO JSVal
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-detail PerformanceMeasureOptions.detail specification>
+getDetail :: (MonadDOM m) => PerformanceMeasureOptions -> m JSVal
+getDetail self = liftDOM ((js_getDetail (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"start\"] = $2; })"
+        js_setStart :: PerformanceMeasureOptions -> StringOrDOMHighResTimeStamp -> IO ()
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-start PerformanceMeasureOptions.start specification>
+setStart :: (MonadDOM m, IsStringOrDOMHighResTimeStamp val) => PerformanceMeasureOptions -> val -> m ()
+setStart self val = liftDOM (void ((js_setStart (self) (Types.toStringOrDOMHighResTimeStamp val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"start\"]; })"
+        js_getStart :: PerformanceMeasureOptions -> IO JSVal
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-start PerformanceMeasureOptions.start specification>
+getStart :: (MonadDOM m) => PerformanceMeasureOptions -> m (Maybe StringOrDOMHighResTimeStamp)
+getStart self = liftDOM (((js_getStart (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-start PerformanceMeasureOptions.start specification>
+getStartUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMeasureOptions -> m StringOrDOMHighResTimeStamp
+getStartUnsafe self = liftDOM ((((js_getStart (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-start PerformanceMeasureOptions.start specification>
+getStartUnchecked :: (MonadDOM m) => PerformanceMeasureOptions -> m StringOrDOMHighResTimeStamp
+getStartUnchecked self = liftDOM ((pFromJSVal <$> (js_getStart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: PerformanceMeasureOptions -> Double -> IO ()
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-duration PerformanceMeasureOptions.duration specification>
+setDuration :: (MonadDOM m) => PerformanceMeasureOptions -> Double -> m ()
+setDuration self val = liftDOM (void ((js_setDuration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: PerformanceMeasureOptions -> IO JSVal
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-duration PerformanceMeasureOptions.duration specification>
+getDuration :: (MonadDOM m) => PerformanceMeasureOptions -> m (Maybe Double)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-duration PerformanceMeasureOptions.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMeasureOptions -> m Double
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-duration PerformanceMeasureOptions.duration specification>
+getDurationUnchecked :: (MonadDOM m) => PerformanceMeasureOptions -> m Double
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"end\"] = $2; })"
+        js_setEnd :: PerformanceMeasureOptions -> StringOrDOMHighResTimeStamp -> IO ()
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-end PerformanceMeasureOptions.end specification>
+setEnd :: (MonadDOM m, IsStringOrDOMHighResTimeStamp val) => PerformanceMeasureOptions -> val -> m ()
+setEnd self val = liftDOM (void ((js_setEnd (self) (Types.toStringOrDOMHighResTimeStamp val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"end\"]; })"
+        js_getEnd :: PerformanceMeasureOptions -> IO JSVal
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-end PerformanceMeasureOptions.end specification>
+getEnd :: (MonadDOM m) => PerformanceMeasureOptions -> m (Maybe StringOrDOMHighResTimeStamp)
+getEnd self = liftDOM (((js_getEnd (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-end PerformanceMeasureOptions.end specification>
+getEndUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMeasureOptions -> m StringOrDOMHighResTimeStamp
+getEndUnsafe self = liftDOM ((((js_getEnd (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-end PerformanceMeasureOptions.end specification>
+getEndUnchecked :: (MonadDOM m) => PerformanceMeasureOptions -> m StringOrDOMHighResTimeStamp
+getEndUnchecked self = liftDOM ((pFromJSVal <$> (js_getEnd (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
@@ -1,47 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from navigation-timing-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
-       (pattern TYPE_NAVIGATE, pattern TYPE_RELOAD,
-        pattern TYPE_BACK_FORWARD, pattern TYPE_RESERVED, js_getType,
-        getType, js_getRedirectCount, getRedirectCount,
-        PerformanceNavigation(..), gTypePerformanceNavigation)
+       (js_toJSON, js_getType, js_getRedirectCount, toJSON, toJSON_, getType, getRedirectCount, pattern TYPE_NAVIGATE, pattern TYPE_RELOAD, pattern TYPE_BACK_FORWARD, pattern TYPE_RESERVED, PerformanceNavigation(..), gTypePerformanceNavigation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern TYPE_NAVIGATE = 0
-pattern TYPE_RELOAD = 1
-pattern TYPE_BACK_FORWARD = 2
-pattern TYPE_RESERVED = 255
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        PerformanceNavigation -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.type Mozilla PerformanceNavigation.type documentation> 
-getType :: (MonadIO m) => PerformanceNavigation -> m Word
-getType self = liftIO (js_getType self)
- 
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformanceNavigation -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/toJSON MDN PerformanceNavigation.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceNavigation -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/toJSON MDN PerformanceNavigation.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceNavigation -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: PerformanceNavigation -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/type MDN PerformanceNavigation.type documentation>
+getType :: (MonadDOM m) => PerformanceNavigation -> m Word
+getType self = liftDOM ((js_getType (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"redirectCount\"]; })"
         js_getRedirectCount :: PerformanceNavigation -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/redirectCount MDN PerformanceNavigation.redirectCount documentation>
+getRedirectCount :: (MonadDOM m) => PerformanceNavigation -> m Word
+getRedirectCount self = liftDOM ((js_getRedirectCount (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.redirectCount Mozilla PerformanceNavigation.redirectCount documentation> 
-getRedirectCount :: (MonadIO m) => PerformanceNavigation -> m Word
-getRedirectCount self = liftIO (js_getRedirectCount self)
+pattern TYPE_NAVIGATE = 0
+
+pattern TYPE_RELOAD = 1
+
+pattern TYPE_BACK_FORWARD = 2
+
+pattern TYPE_RESERVED = 255
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigationTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigationTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigationTiming.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from navigation-timing-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceNavigationTiming
+       (js_toJSON, js_getUnloadEventStart, js_getUnloadEventEnd, js_getDomInteractive, js_getDomContentLoadedEventStart, js_getDomContentLoadedEventEnd, js_getDomComplete, js_getLoadEventStart, js_getLoadEventEnd, js_getType, js_getRedirectCount, toJSON, toJSON_, getUnloadEventStart, getUnloadEventEnd, getDomInteractive, getDomContentLoadedEventStart, getDomContentLoadedEventEnd, getDomComplete, getLoadEventStart, getLoadEventEnd, getType, getRedirectCount, PerformanceNavigationTiming(..), gTypePerformanceNavigationTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformanceNavigationTiming -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/toJSON MDN PerformanceNavigationTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceNavigationTiming -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/toJSON MDN PerformanceNavigationTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceNavigationTiming -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unloadEventStart\"]; })"
+        js_getUnloadEventStart :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/unloadEventStart MDN PerformanceNavigationTiming.unloadEventStart documentation>
+getUnloadEventStart :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getUnloadEventStart self = liftDOM ((js_getUnloadEventStart (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unloadEventEnd\"]; })"
+        js_getUnloadEventEnd :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/unloadEventEnd MDN PerformanceNavigationTiming.unloadEventEnd documentation>
+getUnloadEventEnd :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getUnloadEventEnd self = liftDOM ((js_getUnloadEventEnd (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domInteractive\"]; })"
+        js_getDomInteractive :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domInteractive MDN PerformanceNavigationTiming.domInteractive documentation>
+getDomInteractive :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomInteractive self = liftDOM ((js_getDomInteractive (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domContentLoadedEventStart\"]; })"
+        js_getDomContentLoadedEventStart :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domContentLoadedEventStart MDN PerformanceNavigationTiming.domContentLoadedEventStart documentation>
+getDomContentLoadedEventStart :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomContentLoadedEventStart self = liftDOM ((js_getDomContentLoadedEventStart (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domContentLoadedEventEnd\"]; })"
+        js_getDomContentLoadedEventEnd :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domContentLoadedEventEnd MDN PerformanceNavigationTiming.domContentLoadedEventEnd documentation>
+getDomContentLoadedEventEnd :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomContentLoadedEventEnd self = liftDOM ((js_getDomContentLoadedEventEnd (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"domComplete\"]; })"
+        js_getDomComplete :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domComplete MDN PerformanceNavigationTiming.domComplete documentation>
+getDomComplete :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomComplete self = liftDOM ((js_getDomComplete (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loadEventStart\"]; })"
+        js_getLoadEventStart :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/loadEventStart MDN PerformanceNavigationTiming.loadEventStart documentation>
+getLoadEventStart :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getLoadEventStart self = liftDOM ((js_getLoadEventStart (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loadEventEnd\"]; })"
+        js_getLoadEventEnd :: PerformanceNavigationTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/loadEventEnd MDN PerformanceNavigationTiming.loadEventEnd documentation>
+getLoadEventEnd :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getLoadEventEnd self = liftDOM ((js_getLoadEventEnd (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: PerformanceNavigationTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/type MDN PerformanceNavigationTiming.type documentation>
+getType :: (MonadDOM m) => PerformanceNavigationTiming -> m NavigationTimingType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"redirectCount\"]; })"
+        js_getRedirectCount :: PerformanceNavigationTiming -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/redirectCount MDN PerformanceNavigationTiming.redirectCount documentation>
+getRedirectCount :: (MonadDOM m) => PerformanceNavigationTiming -> m Word
+getRedirectCount self = liftDOM ((js_getRedirectCount (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
@@ -1,54 +1,51 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PerformanceObserver
-       (js_newPerformanceObserver, newPerformanceObserver, js_observe,
-        observe, js_disconnect, disconnect, PerformanceObserver(..),
-        gTypePerformanceObserver)
+       (js_newPerformanceObserver, js_disconnect, js_observe, js_takeRecords, js_getSupportedEntryTypesStatic, newPerformanceObserver, disconnect, observe, takeRecords, takeRecords_, getSupportedEntryTypesStatic, PerformanceObserver(..), gTypePerformanceObserver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"PerformanceObserver\"]($1); })" js_newPerformanceObserver
-        :: PerformanceObserverCallback -> IO PerformanceObserver
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver Mozilla PerformanceObserver documentation> 
-newPerformanceObserver ::
-                       (MonadIO m) => PerformanceObserverCallback -> m PerformanceObserver
-newPerformanceObserver callback
-  = liftIO (js_newPerformanceObserver callback)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"observe\"]($2); })" js_observe ::
-        PerformanceObserver -> PerformanceObserverInit -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"PerformanceObserver\"]($1); })"
+        js_newPerformanceObserver :: JSVal -> IO PerformanceObserver
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/PerformanceObserver MDN PerformanceObserver. documentation>
+newPerformanceObserver :: (MonadDOM m) => PerformanceObserverCallback -> m PerformanceObserver
+newPerformanceObserver callback' = liftDOM (((toJSVal callback') >>= \a1' -> js_newPerformanceObserver a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.observe Mozilla PerformanceObserver.observe documentation> 
-observe ::
-        (MonadIO m) =>
-          PerformanceObserver -> PerformanceObserverInit -> m ()
-observe self options = liftIO (js_observe self options)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"disconnect\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"disconnect\"](); })"
         js_disconnect :: PerformanceObserver -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/disconnect MDN PerformanceObserver.disconnect documentation>
+disconnect :: (MonadDOM m) => PerformanceObserver -> m ()
+disconnect self = liftDOM (void ((js_disconnect (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.disconnect Mozilla PerformanceObserver.disconnect documentation> 
-disconnect :: (MonadIO m) => PerformanceObserver -> m ()
-disconnect self = liftIO (js_disconnect self)
+foreign import javascript safe "(($1, $2) => { return $1[\"observe\"]($2); })"
+        js_observe :: PerformanceObserver -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/observe MDN PerformanceObserver.observe documentation>
+observe :: (MonadDOM m) => PerformanceObserver -> Maybe PerformanceObserverInit -> m ()
+observe self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_observe (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"takeRecords\"](); })"
+        js_takeRecords :: PerformanceObserver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/takeRecords MDN PerformanceObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => PerformanceObserver -> m [PerformanceEntry]
+takeRecords self = liftDOM (((js_takeRecords (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/takeRecords MDN PerformanceObserver.takeRecords documentation>
+takeRecords_ :: (MonadDOM m) => PerformanceObserver -> m ()
+takeRecords_ self = liftDOM (void ((js_takeRecords (self))))
+
+foreign import javascript unsafe "(() => { return globalThis[\"PerformanceObserver\"][\"supportedEntryTypes\"]; })"
+        js_getSupportedEntryTypesStatic :: IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/supportedEntryTypes_static MDN PerformanceObserver.supportedEntryTypes documentation>
+getSupportedEntryTypesStatic :: (MonadDOM m, FromJSString result) => m [result]
+getSupportedEntryTypesStatic = liftDOM (((js_getSupportedEntryTypesStatic) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
@@ -1,73 +1,35 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback
-       (newPerformanceObserverCallback,
-        newPerformanceObserverCallbackSync,
-        newPerformanceObserverCallbackAsync, PerformanceObserverCallback)
+       (newPerformanceObserverCallback, newPerformanceObserverCallbackSync, newPerformanceObserverCallbackAsync, PerformanceObserverCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback3, asyncCallback3)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
-newPerformanceObserverCallback ::
-                               (MonadIO m) =>
-                                 (PerformanceObserverEntryList -> PerformanceObserver -> IO ()) ->
-                                   m PerformanceObserverCallback
-newPerformanceObserverCallback callback
-  = liftIO
-      (PerformanceObserverCallback <$>
-         syncCallback2 ThrowWouldBlock
-           (\ entries observer ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newPerformanceObserverCallback :: (MonadDOM m) => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> IO ()) -> m PerformanceObserverCallback
+newPerformanceObserverCallback callback = liftDOM ((PerformanceObserverCallback . coerce) <$> syncCallback3 ContinueAsync (\ entries observer options -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          options' <- fromJSValUnchecked options
+          callback entries' observer' options'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
-newPerformanceObserverCallbackSync ::
-                                   (MonadIO m) =>
-                                     (PerformanceObserverEntryList -> PerformanceObserver -> IO ())
-                                       -> m PerformanceObserverCallback
-newPerformanceObserverCallbackSync callback
-  = liftIO
-      (PerformanceObserverCallback <$>
-         syncCallback2 ContinueAsync
-           (\ entries observer ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newPerformanceObserverCallbackSync :: (MonadDOM m) => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> IO ()) -> m PerformanceObserverCallback
+newPerformanceObserverCallbackSync callback = liftDOM ((PerformanceObserverCallback . coerce) <$> syncCallback3 ThrowWouldBlock (\ entries observer options -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          options' <- fromJSValUnchecked options
+          callback entries' observer' options'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
-newPerformanceObserverCallbackAsync ::
-                                    (MonadIO m) =>
-                                      (PerformanceObserverEntryList -> PerformanceObserver -> IO ())
-                                        -> m PerformanceObserverCallback
-newPerformanceObserverCallbackAsync callback
-  = liftIO
-      (PerformanceObserverCallback <$>
-         asyncCallback2
-           (\ entries observer ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newPerformanceObserverCallbackAsync :: (MonadDOM m) => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> IO ()) -> m PerformanceObserverCallback
+newPerformanceObserverCallbackAsync callback = liftDOM ((PerformanceObserverCallback . coerce) <$> asyncCallback3 (\ entries observer options -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          options' <- fromJSValUnchecked options
+          callback entries' observer' options'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallbackOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallbackOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallbackOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallbackOptions
+       (js_newPerformanceObserverCallbackOptions, js_setDroppedEntriesCount, js_getDroppedEntriesCount, newPerformanceObserverCallbackOptions, setDroppedEntriesCount, getDroppedEntriesCount, getDroppedEntriesCountUnsafe, getDroppedEntriesCountUnchecked, PerformanceObserverCallbackOptions(..), gTypePerformanceObserverCallbackOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPerformanceObserverCallbackOptions :: IO PerformanceObserverCallbackOptions
+-- | <https://w3c.github.io/performance-timeline/#dictdef-performanceobservercallbackoptions PerformanceObserverCallbackOptions specification>
+newPerformanceObserverCallbackOptions :: (MonadDOM m) => m PerformanceObserverCallbackOptions
+newPerformanceObserverCallbackOptions = liftDOM ((js_newPerformanceObserverCallbackOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"droppedEntriesCount\"] = $2; })"
+        js_setDroppedEntriesCount :: PerformanceObserverCallbackOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobservercallbackoptions-droppedentriescount PerformanceObserverCallbackOptions.droppedEntriesCount specification>
+setDroppedEntriesCount :: (MonadDOM m) => PerformanceObserverCallbackOptions -> Word53 -> m ()
+setDroppedEntriesCount self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDroppedEntriesCount (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"droppedEntriesCount\"]; })"
+        js_getDroppedEntriesCount :: PerformanceObserverCallbackOptions -> IO JSVal
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobservercallbackoptions-droppedentriescount PerformanceObserverCallbackOptions.droppedEntriesCount specification>
+getDroppedEntriesCount :: (MonadDOM m) => PerformanceObserverCallbackOptions -> m (Maybe Word53)
+getDroppedEntriesCount self = liftDOM (((js_getDroppedEntriesCount (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobservercallbackoptions-droppedentriescount PerformanceObserverCallbackOptions.droppedEntriesCount specification>
+getDroppedEntriesCountUnsafe :: (MonadDOM m, HasCallStack) => PerformanceObserverCallbackOptions -> m Word53
+getDroppedEntriesCountUnsafe self = liftDOM ((((js_getDroppedEntriesCount (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobservercallbackoptions-droppedentriescount PerformanceObserverCallbackOptions.droppedEntriesCount specification>
+getDroppedEntriesCountUnchecked :: (MonadDOM m) => PerformanceObserverCallbackOptions -> m Word53
+getDroppedEntriesCountUnchecked self = liftDOM ((pFromJSVal <$> (js_getDroppedEntriesCount (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
@@ -1,90 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList
-       (js_getEntries, getEntries, getEntries_, js_getEntriesByType,
-        getEntriesByType, getEntriesByType_, js_getEntriesByName,
-        getEntriesByName, getEntriesByName_,
-        PerformanceObserverEntryList(..),
-        gTypePerformanceObserverEntryList)
+       (js_getEntries, js_getEntriesByName, js_getEntriesByType, getEntries, getEntries_, getEntriesByName, getEntriesByName_, getEntriesByType, getEntriesByType_, PerformanceObserverEntryList(..), gTypePerformanceObserverEntryList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getEntries\"](); })"
-        js_getEntries :: PerformanceObserverEntryList -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntries Mozilla PerformanceObserverEntryList.getEntries documentation> 
-getEntries ::
-           (MonadIO m) =>
-             PerformanceObserverEntryList -> m PerformanceEntryList
-getEntries self
-  = liftIO ((js_getEntries self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1) => { return $1[\"getEntries\"](); })"
+        js_getEntries :: PerformanceObserverEntryList -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntries MDN PerformanceObserverEntryList.getEntries documentation>
+getEntries :: (MonadDOM m) => PerformanceObserverEntryList -> m [PerformanceEntry]
+getEntries self = liftDOM (((js_getEntries (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntries Mozilla PerformanceObserverEntryList.getEntries documentation> 
-getEntries_ :: (MonadIO m) => PerformanceObserverEntryList -> m ()
-getEntries_ self = liftIO (void (js_getEntries self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getEntriesByType\"]($2); })"
-        js_getEntriesByType ::
-        PerformanceObserverEntryList -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntries MDN PerformanceObserverEntryList.getEntries documentation>
+getEntries_ :: (MonadDOM m) => PerformanceObserverEntryList -> m ()
+getEntries_ self = liftDOM (void ((js_getEntries (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByType Mozilla PerformanceObserverEntryList.getEntriesByType documentation> 
-getEntriesByType ::
-                 (MonadIO m, ToJSString type') =>
-                   PerformanceObserverEntryList -> type' -> m PerformanceEntryList
-getEntriesByType self type'
-  = liftIO
-      ((js_getEntriesByType self (toJSString type')) >>=
-         fromJSValUnchecked)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getEntriesByName\"]($2, $3); })"
+        js_getEntriesByName :: PerformanceObserverEntryList -> JSString -> (Optional JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntriesByName MDN PerformanceObserverEntryList.getEntriesByName documentation>
+getEntriesByName :: (MonadDOM m, ToJSString name, ToJSString type') => PerformanceObserverEntryList -> name -> Maybe type' -> m [PerformanceEntry]
+getEntriesByName self name type' = liftDOM (((js_getEntriesByName (self) (toJSString name) (toOptionalJSString type')) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByType Mozilla PerformanceObserverEntryList.getEntriesByType documentation> 
-getEntriesByType_ ::
-                  (MonadIO m, ToJSString type') =>
-                    PerformanceObserverEntryList -> type' -> m ()
-getEntriesByType_ self type'
-  = liftIO (void (js_getEntriesByType self (toJSString type')))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getEntriesByName\"]($2, $3); })"
-        js_getEntriesByName ::
-        PerformanceObserverEntryList ->
-          JSString -> Optional JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntriesByName MDN PerformanceObserverEntryList.getEntriesByName documentation>
+getEntriesByName_ :: (MonadDOM m, ToJSString name, ToJSString type') => PerformanceObserverEntryList -> name -> Maybe type' -> m ()
+getEntriesByName_ self name type' = liftDOM (void ((js_getEntriesByName (self) (toJSString name) (toOptionalJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByName Mozilla PerformanceObserverEntryList.getEntriesByName documentation> 
-getEntriesByName ::
-                 (MonadIO m, ToJSString name, ToJSString type') =>
-                   PerformanceObserverEntryList ->
-                     name -> Maybe type' -> m PerformanceEntryList
-getEntriesByName self name type'
-  = liftIO
-      ((js_getEntriesByName self (toJSString name)
-          (toOptionalJSString type'))
-         >>= fromJSValUnchecked)
+foreign import javascript safe "(($1, $2) => { return $1[\"getEntriesByType\"]($2); })"
+        js_getEntriesByType :: PerformanceObserverEntryList -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntriesByType MDN PerformanceObserverEntryList.getEntriesByType documentation>
+getEntriesByType :: (MonadDOM m, ToJSString type') => PerformanceObserverEntryList -> type' -> m [PerformanceEntry]
+getEntriesByType self type' = liftDOM (((js_getEntriesByType (self) (toJSString type')) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByName Mozilla PerformanceObserverEntryList.getEntriesByName documentation> 
-getEntriesByName_ ::
-                  (MonadIO m, ToJSString name, ToJSString type') =>
-                    PerformanceObserverEntryList -> name -> Maybe type' -> m ()
-getEntriesByName_ self name type'
-  = liftIO
-      (void
-         (js_getEntriesByName self (toJSString name)
-            (toOptionalJSString type')))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntriesByType MDN PerformanceObserverEntryList.getEntriesByType documentation>
+getEntriesByType_ :: (MonadDOM m, ToJSString type') => PerformanceObserverEntryList -> type' -> m ()
+getEntriesByType_ self type' = liftDOM (void ((js_getEntriesByType (self) (toJSString type'))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceObserverInit
+       (js_newPerformanceObserverInit, js_setEntryTypes, js_getEntryTypes, js_setType, js_getType, js_setBuffered, js_getBuffered, js_setDurationThreshold, js_getDurationThreshold, newPerformanceObserverInit, setEntryTypes, getEntryTypes, getEntryTypesUnsafe, getEntryTypesUnchecked, setType, getType, getTypeUnsafe, getTypeUnchecked, setBuffered, getBuffered, getBufferedUnsafe, getBufferedUnchecked, setDurationThreshold, getDurationThreshold, getDurationThresholdUnsafe, getDurationThresholdUnchecked, PerformanceObserverInit(..), gTypePerformanceObserverInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPerformanceObserverInit :: IO PerformanceObserverInit
+-- | <https://w3c.github.io/performance-timeline/#dictdef-performanceobserverinit PerformanceObserverInit specification>
+newPerformanceObserverInit :: (MonadDOM m) => m PerformanceObserverInit
+newPerformanceObserverInit = liftDOM ((js_newPerformanceObserverInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"entryTypes\"] = $2; })"
+        js_setEntryTypes :: PerformanceObserverInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-entrytypes PerformanceObserverInit.entryTypes specification>
+setEntryTypes :: (MonadDOM m, ToJSString val) => PerformanceObserverInit -> [val] -> m ()
+setEntryTypes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEntryTypes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"entryTypes\"]; })"
+        js_getEntryTypes :: PerformanceObserverInit -> IO JSVal
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-entrytypes PerformanceObserverInit.entryTypes specification>
+getEntryTypes :: (MonadDOM m, FromJSString result) => PerformanceObserverInit -> m (Maybe [result])
+getEntryTypes self = liftDOM (((js_getEntryTypes (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-entrytypes PerformanceObserverInit.entryTypes specification>
+getEntryTypesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PerformanceObserverInit -> m [result]
+getEntryTypesUnsafe self = liftDOM ((((js_getEntryTypes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-entrytypes PerformanceObserverInit.entryTypes specification>
+getEntryTypesUnchecked :: (MonadDOM m, FromJSString result) => PerformanceObserverInit -> m [result]
+getEntryTypesUnchecked self = liftDOM (((js_getEntryTypes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: PerformanceObserverInit -> JSString -> IO ()
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-type PerformanceObserverInit.type specification>
+setType :: (MonadDOM m, ToJSString val) => PerformanceObserverInit -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: PerformanceObserverInit -> IO JSVal
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-type PerformanceObserverInit.type specification>
+getType :: (MonadDOM m, FromJSString result) => PerformanceObserverInit -> m (Maybe result)
+getType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getType (self))))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-type PerformanceObserverInit.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PerformanceObserverInit -> m result
+getTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-type PerformanceObserverInit.type specification>
+getTypeUnchecked :: (MonadDOM m, FromJSString result) => PerformanceObserverInit -> m result
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffered\"] = $2; })"
+        js_setBuffered :: PerformanceObserverInit -> Bool -> IO ()
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-buffered PerformanceObserverInit.buffered specification>
+setBuffered :: (MonadDOM m) => PerformanceObserverInit -> Bool -> m ()
+setBuffered self val = liftDOM (void ((js_setBuffered (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })"
+        js_getBuffered :: PerformanceObserverInit -> IO JSVal
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-buffered PerformanceObserverInit.buffered specification>
+getBuffered :: (MonadDOM m) => PerformanceObserverInit -> m (Maybe Bool)
+getBuffered self = liftDOM (((js_getBuffered (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-buffered PerformanceObserverInit.buffered specification>
+getBufferedUnsafe :: (MonadDOM m, HasCallStack) => PerformanceObserverInit -> m Bool
+getBufferedUnsafe self = liftDOM ((((js_getBuffered (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-buffered PerformanceObserverInit.buffered specification>
+getBufferedUnchecked :: (MonadDOM m) => PerformanceObserverInit -> m Bool
+getBufferedUnchecked self = liftDOM ((pFromJSVal <$> (js_getBuffered (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"durationThreshold\"] = $2; })"
+        js_setDurationThreshold :: PerformanceObserverInit -> Double -> IO ()
+-- | <https://w3c.github.io/event-timing/#dom-performanceobserverinit-durationthreshold PerformanceObserverInit.durationThreshold specification>
+setDurationThreshold :: (MonadDOM m) => PerformanceObserverInit -> Double -> m ()
+setDurationThreshold self val = liftDOM (void ((js_setDurationThreshold (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"durationThreshold\"]; })"
+        js_getDurationThreshold :: PerformanceObserverInit -> IO JSVal
+-- | <https://w3c.github.io/event-timing/#dom-performanceobserverinit-durationthreshold PerformanceObserverInit.durationThreshold specification>
+getDurationThreshold :: (MonadDOM m) => PerformanceObserverInit -> m (Maybe Double)
+getDurationThreshold self = liftDOM (((js_getDurationThreshold (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/event-timing/#dom-performanceobserverinit-durationthreshold PerformanceObserverInit.durationThreshold specification>
+getDurationThresholdUnsafe :: (MonadDOM m, HasCallStack) => PerformanceObserverInit -> m Double
+getDurationThresholdUnsafe self = liftDOM ((((js_getDurationThreshold (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/event-timing/#dom-performanceobserverinit-durationthreshold PerformanceObserverInit.durationThreshold specification>
+getDurationThresholdUnchecked :: (MonadDOM m) => PerformanceObserverInit -> m Double
+getDurationThresholdUnchecked self = liftDOM ((pFromJSVal <$> (js_getDurationThreshold (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformancePaintTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformancePaintTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformancePaintTiming.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from paint-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformancePaintTiming
+       (js_toJSON, toJSON, toJSON_, PerformancePaintTiming(..), gTypePerformancePaintTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformancePaintTiming -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformancePaintTiming/toJSON MDN PerformancePaintTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformancePaintTiming -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformancePaintTiming/toJSON MDN PerformancePaintTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformancePaintTiming -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
@@ -1,165 +1,177 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resource-timing (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
-       (js_getInitiatorType, getInitiatorType, js_getNextHopProtocol,
-        getNextHopProtocol, js_getWorkerStart, getWorkerStart,
-        js_getRedirectStart, getRedirectStart, js_getRedirectEnd,
-        getRedirectEnd, js_getFetchStart, getFetchStart,
-        js_getDomainLookupStart, getDomainLookupStart,
-        js_getDomainLookupEnd, getDomainLookupEnd, js_getConnectStart,
-        getConnectStart, js_getConnectEnd, getConnectEnd,
-        js_getSecureConnectionStart, getSecureConnectionStart,
-        js_getRequestStart, getRequestStart, js_getResponseStart,
-        getResponseStart, js_getResponseEnd, getResponseEnd,
-        PerformanceResourceTiming(..), gTypePerformanceResourceTiming)
+       (js_toJSON, js_getInitiatorType, js_getDeliveryType, js_getNextHopProtocol, js_getWorkerStart, js_getRedirectStart, js_getRedirectEnd, js_getFetchStart, js_getDomainLookupStart, js_getDomainLookupEnd, js_getConnectStart, js_getConnectEnd, js_getSecureConnectionStart, js_getRequestStart, js_getFinalResponseHeadersStart, js_getFirstInterimResponseStart, js_getResponseStart, js_getResponseEnd, js_getWorkerRouterEvaluationStart, js_getWorkerCacheLookupStart, js_getTransferSize, js_getEncodedBodySize, js_getDecodedBodySize, js_getResponseStatus, js_getContentType, js_getServerTiming, toJSON, toJSON_, getInitiatorType, getDeliveryType, getNextHopProtocol, getWorkerStart, getRedirectStart, getRedirectEnd, getFetchStart, getDomainLookupStart, getDomainLookupEnd, getConnectStart, getConnectEnd, getSecureConnectionStart, getRequestStart, getFinalResponseHeadersStart, getFirstInterimResponseStart, getResponseStart, getResponseEnd, getWorkerRouterEvaluationStart, getWorkerCacheLookupStart, getTransferSize, getEncodedBodySize, getDecodedBodySize, getResponseStatus, getContentType, getServerTiming, PerformanceResourceTiming(..), gTypePerformanceResourceTiming, IsPerformanceResourceTiming, toPerformanceResourceTiming)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformanceResourceTiming -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/toJSON MDN PerformanceResourceTiming.toJSON documentation>
+toJSON :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m GObject
+toJSON self = liftDOM ((js_toJSON ((Types.toPerformanceResourceTiming self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/toJSON MDN PerformanceResourceTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON ((Types.toPerformanceResourceTiming self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"initiatorType\"]; })"
         js_getInitiatorType :: PerformanceResourceTiming -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/initiatorType MDN PerformanceResourceTiming.initiatorType documentation>
+getInitiatorType :: (MonadDOM m, IsPerformanceResourceTiming self, FromJSString result) => self -> m result
+getInitiatorType self = liftDOM ((fromJSString <$> (js_getInitiatorType ((Types.toPerformanceResourceTiming self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.initiatorType Mozilla PerformanceResourceTiming.initiatorType documentation> 
-getInitiatorType ::
-                 (MonadIO m, FromJSString result) =>
-                   PerformanceResourceTiming -> m result
-getInitiatorType self
-  = liftIO (fromJSString <$> (js_getInitiatorType self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"deliveryType\"]; })"
+        js_getDeliveryType :: PerformanceResourceTiming -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/deliveryType MDN PerformanceResourceTiming.deliveryType documentation>
+getDeliveryType :: (MonadDOM m, IsPerformanceResourceTiming self, FromJSString result) => self -> m result
+getDeliveryType self = liftDOM ((fromJSString <$> (js_getDeliveryType ((Types.toPerformanceResourceTiming self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"nextHopProtocol\"]; })"
         js_getNextHopProtocol :: PerformanceResourceTiming -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/nextHopProtocol MDN PerformanceResourceTiming.nextHopProtocol documentation>
+getNextHopProtocol :: (MonadDOM m, IsPerformanceResourceTiming self, FromJSString result) => self -> m result
+getNextHopProtocol self = liftDOM ((fromJSString <$> (js_getNextHopProtocol ((Types.toPerformanceResourceTiming self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.nextHopProtocol Mozilla PerformanceResourceTiming.nextHopProtocol documentation> 
-getNextHopProtocol ::
-                   (MonadIO m, FromJSString result) =>
-                     PerformanceResourceTiming -> m result
-getNextHopProtocol self
-  = liftIO (fromJSString <$> (js_getNextHopProtocol self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"workerStart\"]; })"
-        js_getWorkerStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getWorkerStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/workerStart MDN PerformanceResourceTiming.workerStart documentation>
+getWorkerStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getWorkerStart self = liftDOM ((js_getWorkerStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.workerStart Mozilla PerformanceResourceTiming.workerStart documentation> 
-getWorkerStart ::
-               (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getWorkerStart self = liftIO (js_getWorkerStart self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"redirectStart\"]; })"
-        js_getRedirectStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getRedirectStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/redirectStart MDN PerformanceResourceTiming.redirectStart documentation>
+getRedirectStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getRedirectStart self = liftDOM ((js_getRedirectStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectStart Mozilla PerformanceResourceTiming.redirectStart documentation> 
-getRedirectStart ::
-                 (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getRedirectStart self = liftIO (js_getRedirectStart self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"redirectEnd\"]; })"
-        js_getRedirectEnd ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getRedirectEnd :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/redirectEnd MDN PerformanceResourceTiming.redirectEnd documentation>
+getRedirectEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getRedirectEnd self = liftDOM ((js_getRedirectEnd ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectEnd Mozilla PerformanceResourceTiming.redirectEnd documentation> 
-getRedirectEnd ::
-               (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getRedirectEnd self = liftIO (js_getRedirectEnd self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"fetchStart\"]; })"
-        js_getFetchStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getFetchStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/fetchStart MDN PerformanceResourceTiming.fetchStart documentation>
+getFetchStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getFetchStart self = liftDOM ((js_getFetchStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.fetchStart Mozilla PerformanceResourceTiming.fetchStart documentation> 
-getFetchStart ::
-              (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getFetchStart self = liftIO (js_getFetchStart self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domainLookupStart\"]; })"
-        js_getDomainLookupStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getDomainLookupStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/domainLookupStart MDN PerformanceResourceTiming.domainLookupStart documentation>
+getDomainLookupStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getDomainLookupStart self = liftDOM ((js_getDomainLookupStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupStart Mozilla PerformanceResourceTiming.domainLookupStart documentation> 
-getDomainLookupStart ::
-                     (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getDomainLookupStart self = liftIO (js_getDomainLookupStart self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domainLookupEnd\"]; })"
-        js_getDomainLookupEnd ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getDomainLookupEnd :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/domainLookupEnd MDN PerformanceResourceTiming.domainLookupEnd documentation>
+getDomainLookupEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getDomainLookupEnd self = liftDOM ((js_getDomainLookupEnd ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupEnd Mozilla PerformanceResourceTiming.domainLookupEnd documentation> 
-getDomainLookupEnd ::
-                   (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getDomainLookupEnd self = liftIO (js_getDomainLookupEnd self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"connectStart\"]; })"
-        js_getConnectStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getConnectStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/connectStart MDN PerformanceResourceTiming.connectStart documentation>
+getConnectStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getConnectStart self = liftDOM ((js_getConnectStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectStart Mozilla PerformanceResourceTiming.connectStart documentation> 
-getConnectStart ::
-                (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getConnectStart self = liftIO (js_getConnectStart self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"connectEnd\"]; })"
-        js_getConnectEnd ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getConnectEnd :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/connectEnd MDN PerformanceResourceTiming.connectEnd documentation>
+getConnectEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getConnectEnd self = liftDOM ((js_getConnectEnd ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectEnd Mozilla PerformanceResourceTiming.connectEnd documentation> 
-getConnectEnd ::
-              (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getConnectEnd self = liftIO (js_getConnectEnd self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"secureConnectionStart\"]; })"
-        js_getSecureConnectionStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getSecureConnectionStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/secureConnectionStart MDN PerformanceResourceTiming.secureConnectionStart documentation>
+getSecureConnectionStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getSecureConnectionStart self = liftDOM ((js_getSecureConnectionStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.secureConnectionStart Mozilla PerformanceResourceTiming.secureConnectionStart documentation> 
-getSecureConnectionStart ::
-                         (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getSecureConnectionStart self
-  = liftIO (js_getSecureConnectionStart self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"requestStart\"]; })"
-        js_getRequestStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getRequestStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/requestStart MDN PerformanceResourceTiming.requestStart documentation>
+getRequestStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getRequestStart self = liftDOM ((js_getRequestStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.requestStart Mozilla PerformanceResourceTiming.requestStart documentation> 
-getRequestStart ::
-                (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getRequestStart self = liftIO (js_getRequestStart self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"finalResponseHeadersStart\"]; })"
+        js_getFinalResponseHeadersStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/finalResponseHeadersStart MDN PerformanceResourceTiming.finalResponseHeadersStart documentation>
+getFinalResponseHeadersStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getFinalResponseHeadersStart self = liftDOM ((js_getFinalResponseHeadersStart ((Types.toPerformanceResourceTiming self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"firstInterimResponseStart\"]; })"
+        js_getFirstInterimResponseStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/firstInterimResponseStart MDN PerformanceResourceTiming.firstInterimResponseStart documentation>
+getFirstInterimResponseStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getFirstInterimResponseStart self = liftDOM ((js_getFirstInterimResponseStart ((Types.toPerformanceResourceTiming self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"responseStart\"]; })"
-        js_getResponseStart ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getResponseStart :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/responseStart MDN PerformanceResourceTiming.responseStart documentation>
+getResponseStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getResponseStart self = liftDOM ((js_getResponseStart ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseStart Mozilla PerformanceResourceTiming.responseStart documentation> 
-getResponseStart ::
-                 (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getResponseStart self = liftIO (js_getResponseStart self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"responseEnd\"]; })"
-        js_getResponseEnd ::
-        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+        js_getResponseEnd :: PerformanceResourceTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/responseEnd MDN PerformanceResourceTiming.responseEnd documentation>
+getResponseEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getResponseEnd self = liftDOM ((js_getResponseEnd ((Types.toPerformanceResourceTiming self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseEnd Mozilla PerformanceResourceTiming.responseEnd documentation> 
-getResponseEnd ::
-               (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getResponseEnd self = liftIO (js_getResponseEnd self)
+foreign import javascript unsafe "(($1) => { return $1[\"workerRouterEvaluationStart\"]; })"
+        js_getWorkerRouterEvaluationStart :: PerformanceResourceTiming -> IO Double
+-- | <https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-workerrouterevaluationstart PerformanceResourceTiming.workerRouterEvaluationStart specification>
+getWorkerRouterEvaluationStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getWorkerRouterEvaluationStart self = liftDOM ((js_getWorkerRouterEvaluationStart ((Types.toPerformanceResourceTiming self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"workerCacheLookupStart\"]; })"
+        js_getWorkerCacheLookupStart :: PerformanceResourceTiming -> IO Double
+-- | <https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-workercachelookupstart PerformanceResourceTiming.workerCacheLookupStart specification>
+getWorkerCacheLookupStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getWorkerCacheLookupStart self = liftDOM ((js_getWorkerCacheLookupStart ((Types.toPerformanceResourceTiming self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transferSize\"]; })"
+        js_getTransferSize :: PerformanceResourceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/transferSize MDN PerformanceResourceTiming.transferSize documentation>
+getTransferSize :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word53
+getTransferSize self = liftDOM (((js_getTransferSize ((Types.toPerformanceResourceTiming self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"encodedBodySize\"]; })"
+        js_getEncodedBodySize :: PerformanceResourceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/encodedBodySize MDN PerformanceResourceTiming.encodedBodySize documentation>
+getEncodedBodySize :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word53
+getEncodedBodySize self = liftDOM (((js_getEncodedBodySize ((Types.toPerformanceResourceTiming self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"decodedBodySize\"]; })"
+        js_getDecodedBodySize :: PerformanceResourceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/decodedBodySize MDN PerformanceResourceTiming.decodedBodySize documentation>
+getDecodedBodySize :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word53
+getDecodedBodySize self = liftDOM (((js_getDecodedBodySize ((Types.toPerformanceResourceTiming self))) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"responseStatus\"]; })"
+        js_getResponseStatus :: PerformanceResourceTiming -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/responseStatus MDN PerformanceResourceTiming.responseStatus documentation>
+getResponseStatus :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word
+getResponseStatus self = liftDOM ((js_getResponseStatus ((Types.toPerformanceResourceTiming self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentType\"]; })"
+        js_getContentType :: PerformanceResourceTiming -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/contentType MDN PerformanceResourceTiming.contentType documentation>
+getContentType :: (MonadDOM m, IsPerformanceResourceTiming self, FromJSString result) => self -> m result
+getContentType self = liftDOM ((fromJSString <$> (js_getContentType ((Types.toPerformanceResourceTiming self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serverTiming\"]; })"
+        js_getServerTiming :: PerformanceResourceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/serverTiming MDN PerformanceResourceTiming.serverTiming documentation>
+getServerTiming :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m [PerformanceServerTiming]
+getServerTiming self = liftDOM (((js_getServerTiming ((Types.toPerformanceResourceTiming self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceServerTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceServerTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceServerTiming.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from server-timing (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PerformanceServerTiming
+       (js_toJSON, js_getName, js_getDuration, js_getDescription, toJSON, toJSON_, getName, getDuration, getDescription, PerformanceServerTiming(..), gTypePerformanceServerTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformanceServerTiming -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/toJSON MDN PerformanceServerTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceServerTiming -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/toJSON MDN PerformanceServerTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceServerTiming -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PerformanceServerTiming -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/name MDN PerformanceServerTiming.name documentation>
+getName :: (MonadDOM m, FromJSString result) => PerformanceServerTiming -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: PerformanceServerTiming -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/duration MDN PerformanceServerTiming.duration documentation>
+getDuration :: (MonadDOM m) => PerformanceServerTiming -> m Double
+getDuration self = liftDOM ((js_getDuration (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
+        js_getDescription :: PerformanceServerTiming -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/description MDN PerformanceServerTiming.description documentation>
+getDescription :: (MonadDOM m, FromJSString result) => PerformanceServerTiming -> m result
+getDescription self = liftDOM ((fromJSString <$> (js_getDescription (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
@@ -1,205 +1,153 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from navigation-timing-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PerformanceTiming
-       (js_getNavigationStart, getNavigationStart, js_getUnloadEventStart,
-        getUnloadEventStart, js_getUnloadEventEnd, getUnloadEventEnd,
-        js_getRedirectStart, getRedirectStart, js_getRedirectEnd,
-        getRedirectEnd, js_getFetchStart, getFetchStart,
-        js_getDomainLookupStart, getDomainLookupStart,
-        js_getDomainLookupEnd, getDomainLookupEnd, js_getConnectStart,
-        getConnectStart, js_getConnectEnd, getConnectEnd,
-        js_getSecureConnectionStart, getSecureConnectionStart,
-        js_getRequestStart, getRequestStart, js_getResponseStart,
-        getResponseStart, js_getResponseEnd, getResponseEnd,
-        js_getDomLoading, getDomLoading, js_getDomInteractive,
-        getDomInteractive, js_getDomContentLoadedEventStart,
-        getDomContentLoadedEventStart, js_getDomContentLoadedEventEnd,
-        getDomContentLoadedEventEnd, js_getDomComplete, getDomComplete,
-        js_getLoadEventStart, getLoadEventStart, js_getLoadEventEnd,
-        getLoadEventEnd, PerformanceTiming(..), gTypePerformanceTiming)
+       (js_toJSON, js_getNavigationStart, js_getUnloadEventStart, js_getUnloadEventEnd, js_getRedirectStart, js_getRedirectEnd, js_getFetchStart, js_getDomainLookupStart, js_getDomainLookupEnd, js_getConnectStart, js_getConnectEnd, js_getSecureConnectionStart, js_getRequestStart, js_getResponseStart, js_getResponseEnd, js_getDomLoading, js_getDomInteractive, js_getDomContentLoadedEventStart, js_getDomContentLoadedEventEnd, js_getDomComplete, js_getLoadEventStart, js_getLoadEventEnd, toJSON, toJSON_, getNavigationStart, getUnloadEventStart, getUnloadEventEnd, getRedirectStart, getRedirectEnd, getFetchStart, getDomainLookupStart, getDomainLookupEnd, getConnectStart, getConnectEnd, getSecureConnectionStart, getRequestStart, getResponseStart, getResponseEnd, getDomLoading, getDomInteractive, getDomContentLoadedEventStart, getDomContentLoadedEventEnd, getDomComplete, getLoadEventStart, getLoadEventEnd, PerformanceTiming(..), gTypePerformanceTiming)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PerformanceTiming -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/toJSON MDN PerformanceTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceTiming -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/toJSON MDN PerformanceTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceTiming -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"navigationStart\"]; })"
-        js_getNavigationStart :: PerformanceTiming -> IO Double
+        js_getNavigationStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/navigationStart MDN PerformanceTiming.navigationStart documentation>
+getNavigationStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getNavigationStart self = liftDOM (((js_getNavigationStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.navigationStart Mozilla PerformanceTiming.navigationStart documentation> 
-getNavigationStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getNavigationStart self
-  = liftIO (round <$> (js_getNavigationStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"unloadEventStart\"]; })"
-        js_getUnloadEventStart :: PerformanceTiming -> IO Double
+        js_getUnloadEventStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/unloadEventStart MDN PerformanceTiming.unloadEventStart documentation>
+getUnloadEventStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getUnloadEventStart self = liftDOM (((js_getUnloadEventStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventStart Mozilla PerformanceTiming.unloadEventStart documentation> 
-getUnloadEventStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getUnloadEventStart self
-  = liftIO (round <$> (js_getUnloadEventStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"unloadEventEnd\"]; })"
-        js_getUnloadEventEnd :: PerformanceTiming -> IO Double
+        js_getUnloadEventEnd :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/unloadEventEnd MDN PerformanceTiming.unloadEventEnd documentation>
+getUnloadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getUnloadEventEnd self = liftDOM (((js_getUnloadEventEnd (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventEnd Mozilla PerformanceTiming.unloadEventEnd documentation> 
-getUnloadEventEnd :: (MonadIO m) => PerformanceTiming -> m Word64
-getUnloadEventEnd self
-  = liftIO (round <$> (js_getUnloadEventEnd self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"redirectStart\"]; })"
-        js_getRedirectStart :: PerformanceTiming -> IO Double
+        js_getRedirectStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/redirectStart MDN PerformanceTiming.redirectStart documentation>
+getRedirectStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getRedirectStart self = liftDOM (((js_getRedirectStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectStart Mozilla PerformanceTiming.redirectStart documentation> 
-getRedirectStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getRedirectStart self
-  = liftIO (round <$> (js_getRedirectStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"redirectEnd\"]; })"
-        js_getRedirectEnd :: PerformanceTiming -> IO Double
+        js_getRedirectEnd :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/redirectEnd MDN PerformanceTiming.redirectEnd documentation>
+getRedirectEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getRedirectEnd self = liftDOM (((js_getRedirectEnd (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectEnd Mozilla PerformanceTiming.redirectEnd documentation> 
-getRedirectEnd :: (MonadIO m) => PerformanceTiming -> m Word64
-getRedirectEnd self = liftIO (round <$> (js_getRedirectEnd self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"fetchStart\"]; })"
-        js_getFetchStart :: PerformanceTiming -> IO Double
+        js_getFetchStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/fetchStart MDN PerformanceTiming.fetchStart documentation>
+getFetchStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getFetchStart self = liftDOM (((js_getFetchStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.fetchStart Mozilla PerformanceTiming.fetchStart documentation> 
-getFetchStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getFetchStart self = liftIO (round <$> (js_getFetchStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domainLookupStart\"]; })"
-        js_getDomainLookupStart :: PerformanceTiming -> IO Double
+        js_getDomainLookupStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domainLookupStart MDN PerformanceTiming.domainLookupStart documentation>
+getDomainLookupStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomainLookupStart self = liftDOM (((js_getDomainLookupStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupStart Mozilla PerformanceTiming.domainLookupStart documentation> 
-getDomainLookupStart ::
-                     (MonadIO m) => PerformanceTiming -> m Word64
-getDomainLookupStart self
-  = liftIO (round <$> (js_getDomainLookupStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domainLookupEnd\"]; })"
-        js_getDomainLookupEnd :: PerformanceTiming -> IO Double
+        js_getDomainLookupEnd :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domainLookupEnd MDN PerformanceTiming.domainLookupEnd documentation>
+getDomainLookupEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomainLookupEnd self = liftDOM (((js_getDomainLookupEnd (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupEnd Mozilla PerformanceTiming.domainLookupEnd documentation> 
-getDomainLookupEnd :: (MonadIO m) => PerformanceTiming -> m Word64
-getDomainLookupEnd self
-  = liftIO (round <$> (js_getDomainLookupEnd self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"connectStart\"]; })"
-        js_getConnectStart :: PerformanceTiming -> IO Double
+        js_getConnectStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/connectStart MDN PerformanceTiming.connectStart documentation>
+getConnectStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getConnectStart self = liftDOM (((js_getConnectStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectStart Mozilla PerformanceTiming.connectStart documentation> 
-getConnectStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getConnectStart self = liftIO (round <$> (js_getConnectStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"connectEnd\"]; })"
-        js_getConnectEnd :: PerformanceTiming -> IO Double
+        js_getConnectEnd :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/connectEnd MDN PerformanceTiming.connectEnd documentation>
+getConnectEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getConnectEnd self = liftDOM (((js_getConnectEnd (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectEnd Mozilla PerformanceTiming.connectEnd documentation> 
-getConnectEnd :: (MonadIO m) => PerformanceTiming -> m Word64
-getConnectEnd self = liftIO (round <$> (js_getConnectEnd self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"secureConnectionStart\"]; })"
-        js_getSecureConnectionStart :: PerformanceTiming -> IO Double
+        js_getSecureConnectionStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/secureConnectionStart MDN PerformanceTiming.secureConnectionStart documentation>
+getSecureConnectionStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getSecureConnectionStart self = liftDOM (((js_getSecureConnectionStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.secureConnectionStart Mozilla PerformanceTiming.secureConnectionStart documentation> 
-getSecureConnectionStart ::
-                         (MonadIO m) => PerformanceTiming -> m Word64
-getSecureConnectionStart self
-  = liftIO (round <$> (js_getSecureConnectionStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"requestStart\"]; })"
-        js_getRequestStart :: PerformanceTiming -> IO Double
+        js_getRequestStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/requestStart MDN PerformanceTiming.requestStart documentation>
+getRequestStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getRequestStart self = liftDOM (((js_getRequestStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.requestStart Mozilla PerformanceTiming.requestStart documentation> 
-getRequestStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getRequestStart self = liftIO (round <$> (js_getRequestStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"responseStart\"]; })"
-        js_getResponseStart :: PerformanceTiming -> IO Double
+        js_getResponseStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/responseStart MDN PerformanceTiming.responseStart documentation>
+getResponseStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getResponseStart self = liftDOM (((js_getResponseStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseStart Mozilla PerformanceTiming.responseStart documentation> 
-getResponseStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getResponseStart self
-  = liftIO (round <$> (js_getResponseStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"responseEnd\"]; })"
-        js_getResponseEnd :: PerformanceTiming -> IO Double
+        js_getResponseEnd :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/responseEnd MDN PerformanceTiming.responseEnd documentation>
+getResponseEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getResponseEnd self = liftDOM (((js_getResponseEnd (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseEnd Mozilla PerformanceTiming.responseEnd documentation> 
-getResponseEnd :: (MonadIO m) => PerformanceTiming -> m Word64
-getResponseEnd self = liftIO (round <$> (js_getResponseEnd self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domLoading\"]; })"
-        js_getDomLoading :: PerformanceTiming -> IO Double
+        js_getDomLoading :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domLoading MDN PerformanceTiming.domLoading documentation>
+getDomLoading :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomLoading self = liftDOM (((js_getDomLoading (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domLoading Mozilla PerformanceTiming.domLoading documentation> 
-getDomLoading :: (MonadIO m) => PerformanceTiming -> m Word64
-getDomLoading self = liftIO (round <$> (js_getDomLoading self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domInteractive\"]; })"
-        js_getDomInteractive :: PerformanceTiming -> IO Double
+        js_getDomInteractive :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domInteractive MDN PerformanceTiming.domInteractive documentation>
+getDomInteractive :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomInteractive self = liftDOM (((js_getDomInteractive (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domInteractive Mozilla PerformanceTiming.domInteractive documentation> 
-getDomInteractive :: (MonadIO m) => PerformanceTiming -> m Word64
-getDomInteractive self
-  = liftIO (round <$> (js_getDomInteractive self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"domContentLoadedEventStart\"]; })"
-        js_getDomContentLoadedEventStart :: PerformanceTiming -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"domContentLoadedEventStart\"]; })"
+        js_getDomContentLoadedEventStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domContentLoadedEventStart MDN PerformanceTiming.domContentLoadedEventStart documentation>
+getDomContentLoadedEventStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomContentLoadedEventStart self = liftDOM (((js_getDomContentLoadedEventStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventStart Mozilla PerformanceTiming.domContentLoadedEventStart documentation> 
-getDomContentLoadedEventStart ::
-                              (MonadIO m) => PerformanceTiming -> m Word64
-getDomContentLoadedEventStart self
-  = liftIO (round <$> (js_getDomContentLoadedEventStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domContentLoadedEventEnd\"]; })"
-        js_getDomContentLoadedEventEnd :: PerformanceTiming -> IO Double
+        js_getDomContentLoadedEventEnd :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domContentLoadedEventEnd MDN PerformanceTiming.domContentLoadedEventEnd documentation>
+getDomContentLoadedEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomContentLoadedEventEnd self = liftDOM (((js_getDomContentLoadedEventEnd (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventEnd Mozilla PerformanceTiming.domContentLoadedEventEnd documentation> 
-getDomContentLoadedEventEnd ::
-                            (MonadIO m) => PerformanceTiming -> m Word64
-getDomContentLoadedEventEnd self
-  = liftIO (round <$> (js_getDomContentLoadedEventEnd self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"domComplete\"]; })"
-        js_getDomComplete :: PerformanceTiming -> IO Double
+        js_getDomComplete :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domComplete MDN PerformanceTiming.domComplete documentation>
+getDomComplete :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomComplete self = liftDOM (((js_getDomComplete (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domComplete Mozilla PerformanceTiming.domComplete documentation> 
-getDomComplete :: (MonadIO m) => PerformanceTiming -> m Word64
-getDomComplete self = liftIO (round <$> (js_getDomComplete self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"loadEventStart\"]; })"
-        js_getLoadEventStart :: PerformanceTiming -> IO Double
+        js_getLoadEventStart :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/loadEventStart MDN PerformanceTiming.loadEventStart documentation>
+getLoadEventStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getLoadEventStart self = liftDOM (((js_getLoadEventStart (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventStart Mozilla PerformanceTiming.loadEventStart documentation> 
-getLoadEventStart :: (MonadIO m) => PerformanceTiming -> m Word64
-getLoadEventStart self
-  = liftIO (round <$> (js_getLoadEventStart self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"loadEventEnd\"]; })"
-        js_getLoadEventEnd :: PerformanceTiming -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventEnd Mozilla PerformanceTiming.loadEventEnd documentation> 
-getLoadEventEnd :: (MonadIO m) => PerformanceTiming -> m Word64
-getLoadEventEnd self = liftIO (round <$> (js_getLoadEventEnd self))
+        js_getLoadEventEnd :: PerformanceTiming -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/loadEventEnd MDN PerformanceTiming.loadEventEnd documentation>
+getLoadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getLoadEventEnd self = liftDOM (((js_getLoadEventEnd (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PeriodicWave.hs b/src/GHCJS/DOM/JSFFI/Generated/PeriodicWave.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PeriodicWave.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PeriodicWave
+       (js_newPeriodicWave, newPeriodicWave, PeriodicWave(..), gTypePeriodicWave)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PeriodicWave\"]($1, $2); })"
+        js_newPeriodicWave :: BaseAudioContext -> JSVal -> IO PeriodicWave
+-- | <https://developer.mozilla.org/docs/Web/API/PeriodicWave/PeriodicWave MDN PeriodicWave. documentation>
+newPeriodicWave :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe PeriodicWaveOptions -> m PeriodicWave
+newPeriodicWave context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newPeriodicWave (Types.toBaseAudioContext context) a2'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PeriodicWaveConstraints.hs b/src/GHCJS/DOM/JSFFI/Generated/PeriodicWaveConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PeriodicWaveConstraints.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PeriodicWaveConstraints
+       (js_newPeriodicWaveConstraints, js_setDisableNormalization, js_getDisableNormalization, newPeriodicWaveConstraints, setDisableNormalization, getDisableNormalization, getDisableNormalizationUnsafe, getDisableNormalizationUnchecked, PeriodicWaveConstraints(..), gTypePeriodicWaveConstraints, IsPeriodicWaveConstraints, toPeriodicWaveConstraints)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPeriodicWaveConstraints :: IO PeriodicWaveConstraints
+-- | <https://webaudio.github.io/web-audio-api/#PeriodicWaveConstraints PeriodicWaveConstraints specification>
+newPeriodicWaveConstraints :: (MonadDOM m) => m PeriodicWaveConstraints
+newPeriodicWaveConstraints = liftDOM ((js_newPeriodicWaveConstraints))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disableNormalization\"] = $2; })"
+        js_setDisableNormalization :: PeriodicWaveConstraints -> Bool -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveconstraints-disablenormalization PeriodicWaveConstraints.disableNormalization specification>
+setDisableNormalization :: (MonadDOM m, IsPeriodicWaveConstraints self) => self -> Bool -> m ()
+setDisableNormalization self val = liftDOM (void ((js_setDisableNormalization ((Types.toPeriodicWaveConstraints self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disableNormalization\"]; })"
+        js_getDisableNormalization :: PeriodicWaveConstraints -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveconstraints-disablenormalization PeriodicWaveConstraints.disableNormalization specification>
+getDisableNormalization :: (MonadDOM m, IsPeriodicWaveConstraints self) => self -> m (Maybe Bool)
+getDisableNormalization self = liftDOM (((js_getDisableNormalization ((Types.toPeriodicWaveConstraints self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveconstraints-disablenormalization PeriodicWaveConstraints.disableNormalization specification>
+getDisableNormalizationUnsafe :: (MonadDOM m, IsPeriodicWaveConstraints self, HasCallStack) => self -> m Bool
+getDisableNormalizationUnsafe self = liftDOM ((((js_getDisableNormalization ((Types.toPeriodicWaveConstraints self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveconstraints-disablenormalization PeriodicWaveConstraints.disableNormalization specification>
+getDisableNormalizationUnchecked :: (MonadDOM m, IsPeriodicWaveConstraints self) => self -> m Bool
+getDisableNormalizationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisableNormalization ((Types.toPeriodicWaveConstraints self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PeriodicWaveOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PeriodicWaveOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PeriodicWaveOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PeriodicWaveOptions
+       (js_newPeriodicWaveOptions, js_setReal, js_getReal, js_setImag, js_getImag, newPeriodicWaveOptions, setReal, getReal, getRealUnsafe, getRealUnchecked, setImag, getImag, getImagUnsafe, getImagUnchecked, PeriodicWaveOptions(..), gTypePeriodicWaveOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPeriodicWaveOptions :: IO PeriodicWaveOptions
+-- | <https://webaudio.github.io/web-audio-api/#PeriodicWaveOptions PeriodicWaveOptions specification>
+newPeriodicWaveOptions :: (MonadDOM m) => m PeriodicWaveOptions
+newPeriodicWaveOptions = liftDOM ((js_newPeriodicWaveOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"real\"] = $2; })"
+        js_setReal :: PeriodicWaveOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-real PeriodicWaveOptions.real specification>
+setReal :: (MonadDOM m) => PeriodicWaveOptions -> [Float] -> m ()
+setReal self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setReal (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"real\"]; })"
+        js_getReal :: PeriodicWaveOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-real PeriodicWaveOptions.real specification>
+getReal :: (MonadDOM m) => PeriodicWaveOptions -> m (Maybe [Float])
+getReal self = liftDOM (((js_getReal (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-real PeriodicWaveOptions.real specification>
+getRealUnsafe :: (MonadDOM m, HasCallStack) => PeriodicWaveOptions -> m [Float]
+getRealUnsafe self = liftDOM ((((js_getReal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-real PeriodicWaveOptions.real specification>
+getRealUnchecked :: (MonadDOM m) => PeriodicWaveOptions -> m [Float]
+getRealUnchecked self = liftDOM (((js_getReal (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"imag\"] = $2; })"
+        js_setImag :: PeriodicWaveOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-imag PeriodicWaveOptions.imag specification>
+setImag :: (MonadDOM m) => PeriodicWaveOptions -> [Float] -> m ()
+setImag self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setImag (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"imag\"]; })"
+        js_getImag :: PeriodicWaveOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-imag PeriodicWaveOptions.imag specification>
+getImag :: (MonadDOM m) => PeriodicWaveOptions -> m (Maybe [Float])
+getImag self = liftDOM (((js_getImag (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-imag PeriodicWaveOptions.imag specification>
+getImagUnsafe :: (MonadDOM m, HasCallStack) => PeriodicWaveOptions -> m [Float]
+getImagUnsafe self = liftDOM ((((js_getImag (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-imag PeriodicWaveOptions.imag specification>
+getImagUnchecked :: (MonadDOM m) => PeriodicWaveOptions -> m [Float]
+getImagUnchecked self = liftDOM (((js_getImag (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PermissionStatus.hs b/src/GHCJS/DOM/JSFFI/Generated/PermissionStatus.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PermissionStatus.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from permissions (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PermissionStatus
+       (js_getState, js_getName, getState, getName, change, PermissionStatus(..), gTypePermissionStatus)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: PermissionStatus -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PermissionStatus/state MDN PermissionStatus.state documentation>
+getState :: (MonadDOM m) => PermissionStatus -> m PermissionState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PermissionStatus -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PermissionStatus/name MDN PermissionStatus.name documentation>
+getName :: (MonadDOM m, FromJSString result) => PermissionStatus -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+-- | <https://w3c.github.io/permissions/#dom-permissionstatus-onchange change event>
+change :: EventName PermissionStatus Event
+change = unsafeEventName (toJSString "change")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Permissions.hs b/src/GHCJS/DOM/JSFFI/Generated/Permissions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Permissions.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from permissions (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Permissions
+       (js_query, query, query_, Permissions(..), gTypePermissions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"query\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_query :: Permissions -> GObject -> IO (JSVal, PermissionStatus)
+-- | <https://developer.mozilla.org/docs/Web/API/Permissions/query MDN Permissions.query documentation>
+query :: (MonadDOM m) => Permissions -> GObject -> m PermissionStatus
+query self permissionDesc = liftDOM (((js_query (self) (permissionDesc)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Permissions/query MDN Permissions.query documentation>
+query_ :: (MonadDOM m) => Permissions -> GObject -> m ()
+query_ self permissionDesc = liftDOM (void (((js_query (self) (permissionDesc)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PhotoCapabilities.hs b/src/GHCJS/DOM/JSFFI/Generated/PhotoCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PhotoCapabilities.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PhotoCapabilities
+       (js_newPhotoCapabilities, js_setRedEyeReduction, js_getRedEyeReduction, js_setImageHeight, js_getImageHeight, js_setImageWidth, js_getImageWidth, js_setFillLightMode, js_getFillLightMode, newPhotoCapabilities, setRedEyeReduction, getRedEyeReduction, getRedEyeReductionUnsafe, getRedEyeReductionUnchecked, setImageHeight, getImageHeight, getImageHeightUnsafe, getImageHeightUnchecked, setImageWidth, getImageWidth, getImageWidthUnsafe, getImageWidthUnchecked, setFillLightMode, getFillLightMode, getFillLightModeUnsafe, getFillLightModeUnchecked, PhotoCapabilities(..), gTypePhotoCapabilities)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPhotoCapabilities :: IO PhotoCapabilities
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-photocapabilities PhotoCapabilities specification>
+newPhotoCapabilities :: (MonadDOM m) => m PhotoCapabilities
+newPhotoCapabilities = liftDOM ((js_newPhotoCapabilities))
+
+foreign import javascript safe "(($1, $2) => { $1[\"redEyeReduction\"] = $2; })"
+        js_setRedEyeReduction :: PhotoCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-redeyereduction PhotoCapabilities.redEyeReduction specification>
+setRedEyeReduction :: (MonadDOM m) => PhotoCapabilities -> RedEyeReduction -> m ()
+setRedEyeReduction self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRedEyeReduction (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"redEyeReduction\"]; })"
+        js_getRedEyeReduction :: PhotoCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-redeyereduction PhotoCapabilities.redEyeReduction specification>
+getRedEyeReduction :: (MonadDOM m) => PhotoCapabilities -> m (Maybe RedEyeReduction)
+getRedEyeReduction self = liftDOM (((js_getRedEyeReduction (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-redeyereduction PhotoCapabilities.redEyeReduction specification>
+getRedEyeReductionUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m RedEyeReduction
+getRedEyeReductionUnsafe self = liftDOM ((((js_getRedEyeReduction (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-redeyereduction PhotoCapabilities.redEyeReduction specification>
+getRedEyeReductionUnchecked :: (MonadDOM m) => PhotoCapabilities -> m RedEyeReduction
+getRedEyeReductionUnchecked self = liftDOM ((pFromJSVal <$> (js_getRedEyeReduction (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"imageHeight\"] = $2; })"
+        js_setImageHeight :: PhotoCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imageheight PhotoCapabilities.imageHeight specification>
+setImageHeight :: (MonadDOM m) => PhotoCapabilities -> MediaSettingsRange -> m ()
+setImageHeight self val = liftDOM (void ((js_setImageHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"imageHeight\"]; })"
+        js_getImageHeight :: PhotoCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imageheight PhotoCapabilities.imageHeight specification>
+getImageHeight :: (MonadDOM m) => PhotoCapabilities -> m (Maybe MediaSettingsRange)
+getImageHeight self = liftDOM (((js_getImageHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imageheight PhotoCapabilities.imageHeight specification>
+getImageHeightUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m MediaSettingsRange
+getImageHeightUnsafe self = liftDOM ((((js_getImageHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imageheight PhotoCapabilities.imageHeight specification>
+getImageHeightUnchecked :: (MonadDOM m) => PhotoCapabilities -> m MediaSettingsRange
+getImageHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getImageHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"imageWidth\"] = $2; })"
+        js_setImageWidth :: PhotoCapabilities -> MediaSettingsRange -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imagewidth PhotoCapabilities.imageWidth specification>
+setImageWidth :: (MonadDOM m) => PhotoCapabilities -> MediaSettingsRange -> m ()
+setImageWidth self val = liftDOM (void ((js_setImageWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"imageWidth\"]; })"
+        js_getImageWidth :: PhotoCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imagewidth PhotoCapabilities.imageWidth specification>
+getImageWidth :: (MonadDOM m) => PhotoCapabilities -> m (Maybe MediaSettingsRange)
+getImageWidth self = liftDOM (((js_getImageWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imagewidth PhotoCapabilities.imageWidth specification>
+getImageWidthUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m MediaSettingsRange
+getImageWidthUnsafe self = liftDOM ((((js_getImageWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imagewidth PhotoCapabilities.imageWidth specification>
+getImageWidthUnchecked :: (MonadDOM m) => PhotoCapabilities -> m MediaSettingsRange
+getImageWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getImageWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fillLightMode\"] = $2; })"
+        js_setFillLightMode :: PhotoCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-filllightmode PhotoCapabilities.fillLightMode specification>
+setFillLightMode :: (MonadDOM m) => PhotoCapabilities -> [FillLightMode] -> m ()
+setFillLightMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFillLightMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fillLightMode\"]; })"
+        js_getFillLightMode :: PhotoCapabilities -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-filllightmode PhotoCapabilities.fillLightMode specification>
+getFillLightMode :: (MonadDOM m) => PhotoCapabilities -> m (Maybe [FillLightMode])
+getFillLightMode self = liftDOM (((js_getFillLightMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-filllightmode PhotoCapabilities.fillLightMode specification>
+getFillLightModeUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m [FillLightMode]
+getFillLightModeUnsafe self = liftDOM ((((js_getFillLightMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-filllightmode PhotoCapabilities.fillLightMode specification>
+getFillLightModeUnchecked :: (MonadDOM m) => PhotoCapabilities -> m [FillLightMode]
+getFillLightModeUnchecked self = liftDOM (((js_getFillLightMode (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PhotoSettings.hs b/src/GHCJS/DOM/JSFFI/Generated/PhotoSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PhotoSettings.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PhotoSettings
+       (js_newPhotoSettings, js_setFillLightMode, js_getFillLightMode, js_setImageHeight, js_getImageHeight, js_setImageWidth, js_getImageWidth, js_setRedEyeReduction, js_getRedEyeReduction, newPhotoSettings, setFillLightMode, getFillLightMode, getFillLightModeUnsafe, getFillLightModeUnchecked, setImageHeight, getImageHeight, getImageHeightUnsafe, getImageHeightUnchecked, setImageWidth, getImageWidth, getImageWidthUnsafe, getImageWidthUnchecked, setRedEyeReduction, getRedEyeReduction, getRedEyeReductionUnsafe, getRedEyeReductionUnchecked, PhotoSettings(..), gTypePhotoSettings)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPhotoSettings :: IO PhotoSettings
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-photosettings PhotoSettings specification>
+newPhotoSettings :: (MonadDOM m) => m PhotoSettings
+newPhotoSettings = liftDOM ((js_newPhotoSettings))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fillLightMode\"] = $2; })"
+        js_setFillLightMode :: PhotoSettings -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-filllightmode PhotoSettings.fillLightMode specification>
+setFillLightMode :: (MonadDOM m) => PhotoSettings -> FillLightMode -> m ()
+setFillLightMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFillLightMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fillLightMode\"]; })"
+        js_getFillLightMode :: PhotoSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-filllightmode PhotoSettings.fillLightMode specification>
+getFillLightMode :: (MonadDOM m) => PhotoSettings -> m (Maybe FillLightMode)
+getFillLightMode self = liftDOM (((js_getFillLightMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-filllightmode PhotoSettings.fillLightMode specification>
+getFillLightModeUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m FillLightMode
+getFillLightModeUnsafe self = liftDOM ((((js_getFillLightMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-filllightmode PhotoSettings.fillLightMode specification>
+getFillLightModeUnchecked :: (MonadDOM m) => PhotoSettings -> m FillLightMode
+getFillLightModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFillLightMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"imageHeight\"] = $2; })"
+        js_setImageHeight :: PhotoSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imageheight PhotoSettings.imageHeight specification>
+setImageHeight :: (MonadDOM m) => PhotoSettings -> Double -> m ()
+setImageHeight self val = liftDOM (void ((js_setImageHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"imageHeight\"]; })"
+        js_getImageHeight :: PhotoSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imageheight PhotoSettings.imageHeight specification>
+getImageHeight :: (MonadDOM m) => PhotoSettings -> m (Maybe Double)
+getImageHeight self = liftDOM (((js_getImageHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imageheight PhotoSettings.imageHeight specification>
+getImageHeightUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m Double
+getImageHeightUnsafe self = liftDOM ((((js_getImageHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imageheight PhotoSettings.imageHeight specification>
+getImageHeightUnchecked :: (MonadDOM m) => PhotoSettings -> m Double
+getImageHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getImageHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"imageWidth\"] = $2; })"
+        js_setImageWidth :: PhotoSettings -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imagewidth PhotoSettings.imageWidth specification>
+setImageWidth :: (MonadDOM m) => PhotoSettings -> Double -> m ()
+setImageWidth self val = liftDOM (void ((js_setImageWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"imageWidth\"]; })"
+        js_getImageWidth :: PhotoSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imagewidth PhotoSettings.imageWidth specification>
+getImageWidth :: (MonadDOM m) => PhotoSettings -> m (Maybe Double)
+getImageWidth self = liftDOM (((js_getImageWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imagewidth PhotoSettings.imageWidth specification>
+getImageWidthUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m Double
+getImageWidthUnsafe self = liftDOM ((((js_getImageWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imagewidth PhotoSettings.imageWidth specification>
+getImageWidthUnchecked :: (MonadDOM m) => PhotoSettings -> m Double
+getImageWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getImageWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"redEyeReduction\"] = $2; })"
+        js_setRedEyeReduction :: PhotoSettings -> Bool -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-redeyereduction PhotoSettings.redEyeReduction specification>
+setRedEyeReduction :: (MonadDOM m) => PhotoSettings -> Bool -> m ()
+setRedEyeReduction self val = liftDOM (void ((js_setRedEyeReduction (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"redEyeReduction\"]; })"
+        js_getRedEyeReduction :: PhotoSettings -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-redeyereduction PhotoSettings.redEyeReduction specification>
+getRedEyeReduction :: (MonadDOM m) => PhotoSettings -> m (Maybe Bool)
+getRedEyeReduction self = liftDOM (((js_getRedEyeReduction (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-redeyereduction PhotoSettings.redEyeReduction specification>
+getRedEyeReductionUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m Bool
+getRedEyeReductionUnsafe self = liftDOM ((((js_getRedEyeReduction (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-redeyereduction PhotoSettings.redEyeReduction specification>
+getRedEyeReductionUnchecked :: (MonadDOM m) => PhotoSettings -> m Bool
+getRedEyeReductionUnchecked self = liftDOM ((pFromJSVal <$> (js_getRedEyeReduction (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from picture-in-picture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PictureInPictureEvent
+       (js_newPictureInPictureEvent, js_getPictureInPictureWindow, newPictureInPictureEvent, getPictureInPictureWindow, PictureInPictureEvent(..), gTypePictureInPictureEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PictureInPictureEvent\"]($1, $2); })"
+        js_newPictureInPictureEvent :: JSString -> PictureInPictureEventInit -> IO PictureInPictureEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PictureInPictureEvent/PictureInPictureEvent MDN PictureInPictureEvent. documentation>
+newPictureInPictureEvent :: (MonadDOM m, ToJSString type') => type' -> PictureInPictureEventInit -> m PictureInPictureEvent
+newPictureInPictureEvent type' eventInitDict = liftDOM ((js_newPictureInPictureEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pictureInPictureWindow\"]; })"
+        js_getPictureInPictureWindow :: PictureInPictureEvent -> IO PictureInPictureWindow
+-- | <https://developer.mozilla.org/docs/Web/API/PictureInPictureEvent/pictureInPictureWindow MDN PictureInPictureEvent.pictureInPictureWindow documentation>
+getPictureInPictureWindow :: (MonadDOM m) => PictureInPictureEvent -> m PictureInPictureWindow
+getPictureInPictureWindow self = liftDOM ((js_getPictureInPictureWindow (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from picture-in-picture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PictureInPictureEventInit
+       (js_newPictureInPictureEventInit, js_setPictureInPictureWindow, js_getPictureInPictureWindow, newPictureInPictureEventInit, setPictureInPictureWindow, getPictureInPictureWindow, PictureInPictureEventInit(..), gTypePictureInPictureEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"pictureInPictureWindow\": $1}); })"
+        js_newPictureInPictureEventInit :: PictureInPictureWindow -> IO PictureInPictureEventInit
+-- | <https://w3c.github.io/picture-in-picture/#dictdef-pictureinpictureeventinit PictureInPictureEventInit specification>
+newPictureInPictureEventInit :: (MonadDOM m) => PictureInPictureWindow -> m PictureInPictureEventInit
+newPictureInPictureEventInit pictureInPictureWindow = liftDOM ((js_newPictureInPictureEventInit (pictureInPictureWindow)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pictureInPictureWindow\"] = $2; })"
+        js_setPictureInPictureWindow :: PictureInPictureEventInit -> PictureInPictureWindow -> IO ()
+-- | <https://w3c.github.io/picture-in-picture/#dom-pictureinpictureeventinit-pictureinpicturewindow PictureInPictureEventInit.pictureInPictureWindow specification>
+setPictureInPictureWindow :: (MonadDOM m) => PictureInPictureEventInit -> PictureInPictureWindow -> m ()
+setPictureInPictureWindow self val = liftDOM (void ((js_setPictureInPictureWindow (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pictureInPictureWindow\"]; })"
+        js_getPictureInPictureWindow :: PictureInPictureEventInit -> IO PictureInPictureWindow
+-- | <https://w3c.github.io/picture-in-picture/#dom-pictureinpictureeventinit-pictureinpicturewindow PictureInPictureEventInit.pictureInPictureWindow specification>
+getPictureInPictureWindow :: (MonadDOM m) => PictureInPictureEventInit -> m PictureInPictureWindow
+getPictureInPictureWindow self = liftDOM ((js_getPictureInPictureWindow (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureWindow.hs b/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureWindow.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PictureInPictureWindow.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from picture-in-picture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PictureInPictureWindow
+       (js_getWidth, js_getHeight, getWidth, getHeight, resize, PictureInPictureWindow(..), gTypePictureInPictureWindow)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: PictureInPictureWindow -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/PictureInPictureWindow/width MDN PictureInPictureWindow.width documentation>
+getWidth :: (MonadDOM m) => PictureInPictureWindow -> m Int
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: PictureInPictureWindow -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/PictureInPictureWindow/height MDN PictureInPictureWindow.height documentation>
+getHeight :: (MonadDOM m) => PictureInPictureWindow -> m Int
+getHeight self = liftDOM ((js_getHeight (self)))
+
+-- | <https://w3c.github.io/picture-in-picture/#dom-pictureinpicturewindow-onresize resize event>
+resize :: EventName PictureInPictureWindow Event
+resize = unsafeEventName (toJSString "resize")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PlaneLayout.hs b/src/GHCJS/DOM/JSFFI/Generated/PlaneLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PlaneLayout.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PlaneLayout
+       (js_newPlaneLayout, js_setOffset, js_getOffset, js_setStride, js_getStride, newPlaneLayout, setOffset, getOffset, setStride, getStride, PlaneLayout(..), gTypePlaneLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"offset\": $1, \"stride\": $2}); })"
+        js_newPlaneLayout :: Word -> Word -> IO PlaneLayout
+-- | <https://w3c.github.io/webcodecs/#dictdef-planelayout PlaneLayout specification>
+newPlaneLayout :: (MonadDOM m) => Word -> Word -> m PlaneLayout
+newPlaneLayout offset stride = liftDOM ((js_newPlaneLayout (offset) (stride)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offset\"] = $2; })"
+        js_setOffset :: PlaneLayout -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-offset PlaneLayout.offset specification>
+setOffset :: (MonadDOM m) => PlaneLayout -> Word -> m ()
+setOffset self val = liftDOM (void ((js_setOffset (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: PlaneLayout -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-offset PlaneLayout.offset specification>
+getOffset :: (MonadDOM m) => PlaneLayout -> m Word
+getOffset self = liftDOM ((js_getOffset (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stride\"] = $2; })"
+        js_setStride :: PlaneLayout -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-stride PlaneLayout.stride specification>
+setStride :: (MonadDOM m) => PlaneLayout -> Word -> m ()
+setStride self val = liftDOM (void ((js_setStride (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stride\"]; })"
+        js_getStride :: PlaneLayout -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-stride PlaneLayout.stride specification>
+getStride :: (MonadDOM m) => PlaneLayout -> m Word
+getStride self = liftDOM ((js_getStride (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs b/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
@@ -1,119 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Plugin
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        js_getName, getName, js_getFilename, getFilename,
-        js_getDescription, getDescription, js_getLength, getLength,
-        Plugin(..), gTypePlugin)
+       (js_item, js_namedItem, js_getName, js_getDescription, js_getFilename, js_getLength, item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, getName, getDescription, getFilename, getLength, Plugin(..), gTypePlugin)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        Plugin -> Word -> IO (Nullable MimeType)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
-item :: (MonadIO m) => Plugin -> Word -> m (Maybe MimeType)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: Plugin -> Word -> IO JSVal
+item :: (MonadDOM m) => Plugin -> Word -> m (Maybe MimeType)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
-item_ :: (MonadIO m) => Plugin -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+item_ :: (MonadDOM m) => Plugin -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => Plugin -> Word -> m MimeType
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+itemUnsafe :: (MonadDOM m, HasCallStack) => Plugin -> Word -> m MimeType
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
-itemUnchecked :: (MonadIO m) => Plugin -> Word -> m MimeType
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        Plugin -> JSString -> IO (Nullable MimeType)
+itemUnchecked :: (MonadDOM m) => Plugin -> Word -> m MimeType
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            Plugin -> name -> m (Maybe MimeType)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem :: Plugin -> JSString -> IO JSVal
+namedItem :: (MonadDOM m, ToJSString name) => Plugin -> name -> m (Maybe MimeType)
+namedItem self name = liftDOM (((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) => Plugin -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
+namedItem_ :: (MonadDOM m, ToJSString name) => Plugin -> name -> m ()
+namedItem_ self name = liftDOM (void ((js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  Plugin -> name -> m MimeType
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => Plugin -> name -> m MimeType
+namedItemUnsafe self name = liftDOM ((((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) => Plugin -> name -> m MimeType
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        Plugin -> IO JSString
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => Plugin -> name -> m MimeType
+namedItemUnchecked self name = liftDOM ((pFromJSVal <$> (js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.name Mozilla Plugin.name documentation> 
-getName :: (MonadIO m, FromJSString result) => Plugin -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"filename\"]; })" js_getFilename
-        :: Plugin -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: Plugin -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-plugin-name Plugin.name specification>
+getName :: (MonadDOM m, FromJSString result) => Plugin -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.filename Mozilla Plugin.filename documentation> 
-getFilename ::
-            (MonadIO m, FromJSString result) => Plugin -> m result
-getFilename self = liftIO (fromJSString <$> (js_getFilename self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
         js_getDescription :: Plugin -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-plugin-description Plugin.description specification>
+getDescription :: (MonadDOM m, FromJSString result) => Plugin -> m result
+getDescription self = liftDOM ((fromJSString <$> (js_getDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.description Mozilla Plugin.description documentation> 
-getDescription ::
-               (MonadIO m, FromJSString result) => Plugin -> m result
-getDescription self
-  = liftIO (fromJSString <$> (js_getDescription self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        Plugin -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"filename\"]; })"
+        js_getFilename :: Plugin -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-plugin-filename Plugin.filename specification>
+getFilename :: (MonadDOM m, FromJSString result) => Plugin -> m result
+getFilename self = liftDOM ((fromJSString <$> (js_getFilename (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.length Mozilla Plugin.length documentation> 
-getLength :: (MonadIO m) => Plugin -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: Plugin -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-plugin-length Plugin.length specification>
+getLength :: (MonadDOM m) => Plugin -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs b/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
@@ -1,101 +1,57 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PluginArray
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        js_refresh, refresh, js_getLength, getLength, PluginArray(..),
-        gTypePluginArray)
+       (js_item, js_namedItem, js_refresh, js_getLength, item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, refresh, getLength, PluginArray(..), gTypePluginArray)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        PluginArray -> Word -> IO (Nullable Plugin)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
-item :: (MonadIO m) => PluginArray -> Word -> m (Maybe Plugin)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: PluginArray -> Word -> IO JSVal
+item :: (MonadDOM m) => PluginArray -> Word -> m (Maybe Plugin)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
-item_ :: (MonadIO m) => PluginArray -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
+item_ :: (MonadDOM m) => PluginArray -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => PluginArray -> Word -> m Plugin
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+itemUnsafe :: (MonadDOM m, HasCallStack) => PluginArray -> Word -> m Plugin
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
-itemUnchecked :: (MonadIO m) => PluginArray -> Word -> m Plugin
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
-        PluginArray -> JSString -> IO (Nullable Plugin)
+itemUnchecked :: (MonadDOM m) => PluginArray -> Word -> m Plugin
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
-namedItem ::
-          (MonadIO m, ToJSString name) =>
-            PluginArray -> name -> m (Maybe Plugin)
-namedItem self name
-  = liftIO
-      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem :: PluginArray -> JSString -> IO JSVal
+namedItem :: (MonadDOM m, ToJSString name) => PluginArray -> name -> m (Maybe Plugin)
+namedItem self name = liftDOM (((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
-namedItem_ ::
-           (MonadIO m, ToJSString name) => PluginArray -> name -> m ()
-namedItem_ self name
-  = liftIO (void (js_namedItem self (toJSString name)))
+namedItem_ :: (MonadDOM m, ToJSString name) => PluginArray -> name -> m ()
+namedItem_ self name = liftDOM (void ((js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadIO m, ToJSString name, HasCallStack) =>
-                  PluginArray -> name -> m Plugin
-namedItemUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => PluginArray -> name -> m Plugin
+namedItemUnsafe self name = liftDOM ((((js_namedItem (self) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadIO m, ToJSString name) => PluginArray -> name -> m Plugin
-namedItemUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_namedItem self (toJSString name)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"refresh\"]($2); })" js_refresh
-        :: PluginArray -> Bool -> IO ()
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => PluginArray -> name -> m Plugin
+namedItemUnchecked self name = liftDOM ((pFromJSVal <$> (js_namedItem (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.refresh Mozilla PluginArray.refresh documentation> 
-refresh :: (MonadIO m) => PluginArray -> Bool -> m ()
-refresh self reload = liftIO (js_refresh self reload)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        PluginArray -> IO Word
+foreign import javascript safe "(($1) => { return $1[\"refresh\"](); })"
+        js_refresh :: PluginArray -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-pluginarray-refresh PluginArray.refresh specification>
+refresh :: (MonadDOM m) => PluginArray -> m ()
+refresh self = liftDOM (void ((js_refresh (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.length Mozilla PluginArray.length documentation> 
-getLength :: (MonadIO m) => PluginArray -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: PluginArray -> IO Word
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-pluginarray-length PluginArray.length specification>
+getLength :: (MonadDOM m) => PluginArray -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Point2D.hs b/src/GHCJS/DOM/JSFFI/Generated/Point2D.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Point2D.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Point2D
+       (js_newPoint2D, js_setX, js_getX, js_setY, js_getY, newPoint2D, setX, getX, getXUnsafe, getXUnchecked, setY, getY, getYUnsafe, getYUnchecked, Point2D(..), gTypePoint2D)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPoint2D :: IO Point2D
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-point2d Point2D specification>
+newPoint2D :: (MonadDOM m) => m Point2D
+newPoint2D = liftDOM ((js_newPoint2D))
+
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })"
+        js_setX :: Point2D -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-x Point2D.x specification>
+setX :: (MonadDOM m) => Point2D -> Double -> m ()
+setX self val = liftDOM (void ((js_setX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: Point2D -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-x Point2D.x specification>
+getX :: (MonadDOM m) => Point2D -> m (Maybe Double)
+getX self = liftDOM (((js_getX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-x Point2D.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => Point2D -> m Double
+getXUnsafe self = liftDOM ((((js_getX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-x Point2D.x specification>
+getXUnchecked :: (MonadDOM m) => Point2D -> m Double
+getXUnchecked self = liftDOM ((pFromJSVal <$> (js_getX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })"
+        js_setY :: Point2D -> Double -> IO ()
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-y Point2D.y specification>
+setY :: (MonadDOM m) => Point2D -> Double -> m ()
+setY self val = liftDOM (void ((js_setY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: Point2D -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-y Point2D.y specification>
+getY :: (MonadDOM m) => Point2D -> m (Maybe Double)
+getY self = liftDOM (((js_getY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-y Point2D.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => Point2D -> m Double
+getYUnsafe self = liftDOM ((((js_getY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-y Point2D.y specification>
+getYUnchecked :: (MonadDOM m) => Point2D -> m Double
+getYUnchecked self = liftDOM ((pFromJSVal <$> (js_getY (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PointerEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PointerEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PointerEvent.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PointerEvent
+       (js_newPointerEvent, js_getCoalescedEvents, js_getPredictedEvents, js_getPointerId, js_getWidth, js_getHeight, js_getPressure, js_getTangentialPressure, js_getTiltX, js_getTiltY, js_getTwist, js_getAltitudeAngle, js_getAzimuthAngle, js_getPointerType, js_getIsPrimary, js_getPersistentDeviceId, newPointerEvent, getCoalescedEvents, getCoalescedEvents_, getPredictedEvents, getPredictedEvents_, getPointerId, getWidth, getHeight, getPressure, getTangentialPressure, getTiltX, getTiltY, getTwist, getAltitudeAngle, getAzimuthAngle, getPointerType, getIsPrimary, getPersistentDeviceId, PointerEvent(..), gTypePointerEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PointerEvent\"]($1, $2); })"
+        js_newPointerEvent :: JSString -> JSVal -> IO PointerEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/PointerEvent MDN PointerEvent. documentation>
+newPointerEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PointerEventInit -> m PointerEvent
+newPointerEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPointerEvent (toJSString type') a2'))
+
+foreign import javascript safe "(($1) => { return $1[\"getCoalescedEvents\"](); })"
+        js_getCoalescedEvents :: PointerEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getCoalescedEvents MDN PointerEvent.getCoalescedEvents documentation>
+getCoalescedEvents :: (MonadDOM m) => PointerEvent -> m [PointerEvent]
+getCoalescedEvents self = liftDOM (((js_getCoalescedEvents (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getCoalescedEvents MDN PointerEvent.getCoalescedEvents documentation>
+getCoalescedEvents_ :: (MonadDOM m) => PointerEvent -> m ()
+getCoalescedEvents_ self = liftDOM (void ((js_getCoalescedEvents (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"getPredictedEvents\"](); })"
+        js_getPredictedEvents :: PointerEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getPredictedEvents MDN PointerEvent.getPredictedEvents documentation>
+getPredictedEvents :: (MonadDOM m) => PointerEvent -> m [PointerEvent]
+getPredictedEvents self = liftDOM (((js_getPredictedEvents (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getPredictedEvents MDN PointerEvent.getPredictedEvents documentation>
+getPredictedEvents_ :: (MonadDOM m) => PointerEvent -> m ()
+getPredictedEvents_ self = liftDOM (void ((js_getPredictedEvents (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pointerId\"]; })"
+        js_getPointerId :: PointerEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/pointerId MDN PointerEvent.pointerId documentation>
+getPointerId :: (MonadDOM m) => PointerEvent -> m Int
+getPointerId self = liftDOM ((js_getPointerId (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: PointerEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/width MDN PointerEvent.width documentation>
+getWidth :: (MonadDOM m) => PointerEvent -> m Double
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: PointerEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/height MDN PointerEvent.height documentation>
+getHeight :: (MonadDOM m) => PointerEvent -> m Double
+getHeight self = liftDOM ((js_getHeight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pressure\"]; })"
+        js_getPressure :: PointerEvent -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/pressure MDN PointerEvent.pressure documentation>
+getPressure :: (MonadDOM m) => PointerEvent -> m Float
+getPressure self = liftDOM ((js_getPressure (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tangentialPressure\"]; })"
+        js_getTangentialPressure :: PointerEvent -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/tangentialPressure MDN PointerEvent.tangentialPressure documentation>
+getTangentialPressure :: (MonadDOM m) => PointerEvent -> m Float
+getTangentialPressure self = liftDOM ((js_getTangentialPressure (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tiltX\"]; })"
+        js_getTiltX :: PointerEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/tiltX MDN PointerEvent.tiltX documentation>
+getTiltX :: (MonadDOM m) => PointerEvent -> m Int
+getTiltX self = liftDOM ((js_getTiltX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tiltY\"]; })"
+        js_getTiltY :: PointerEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/tiltY MDN PointerEvent.tiltY documentation>
+getTiltY :: (MonadDOM m) => PointerEvent -> m Int
+getTiltY self = liftDOM ((js_getTiltY (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"twist\"]; })"
+        js_getTwist :: PointerEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/twist MDN PointerEvent.twist documentation>
+getTwist :: (MonadDOM m) => PointerEvent -> m Int
+getTwist self = liftDOM ((js_getTwist (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"altitudeAngle\"]; })"
+        js_getAltitudeAngle :: PointerEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/altitudeAngle MDN PointerEvent.altitudeAngle documentation>
+getAltitudeAngle :: (MonadDOM m) => PointerEvent -> m Double
+getAltitudeAngle self = liftDOM ((js_getAltitudeAngle (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"azimuthAngle\"]; })"
+        js_getAzimuthAngle :: PointerEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/azimuthAngle MDN PointerEvent.azimuthAngle documentation>
+getAzimuthAngle :: (MonadDOM m) => PointerEvent -> m Double
+getAzimuthAngle self = liftDOM ((js_getAzimuthAngle (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pointerType\"]; })"
+        js_getPointerType :: PointerEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/pointerType MDN PointerEvent.pointerType documentation>
+getPointerType :: (MonadDOM m, FromJSString result) => PointerEvent -> m result
+getPointerType self = liftDOM ((fromJSString <$> (js_getPointerType (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isPrimary\"]; })"
+        js_getIsPrimary :: PointerEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/isPrimary MDN PointerEvent.isPrimary documentation>
+getIsPrimary :: (MonadDOM m) => PointerEvent -> m Bool
+getIsPrimary self = liftDOM ((js_getIsPrimary (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"persistentDeviceId\"]; })"
+        js_getPersistentDeviceId :: PointerEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/persistentDeviceId MDN PointerEvent.persistentDeviceId documentation>
+getPersistentDeviceId :: (MonadDOM m) => PointerEvent -> m Int
+getPersistentDeviceId self = liftDOM ((js_getPersistentDeviceId (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PointerEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PointerEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PointerEventInit.hs
@@ -0,0 +1,323 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PointerEventInit
+       (js_newPointerEventInit, js_setPointerId, js_getPointerId, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setPressure, js_getPressure, js_setTangentialPressure, js_getTangentialPressure, js_setTiltX, js_getTiltX, js_setTiltY, js_getTiltY, js_setTwist, js_getTwist, js_setAltitudeAngle, js_getAltitudeAngle, js_setAzimuthAngle, js_getAzimuthAngle, js_setPointerType, js_getPointerType, js_setIsPrimary, js_getIsPrimary, js_setPersistentDeviceId, js_getPersistentDeviceId, js_setCoalescedEvents, js_getCoalescedEvents, js_setPredictedEvents, js_getPredictedEvents, newPointerEventInit, setPointerId, getPointerId, getPointerIdUnsafe, getPointerIdUnchecked, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setPressure, getPressure, getPressureUnsafe, getPressureUnchecked, setTangentialPressure, getTangentialPressure, getTangentialPressureUnsafe, getTangentialPressureUnchecked, setTiltX, getTiltX, getTiltXUnsafe, getTiltXUnchecked, setTiltY, getTiltY, getTiltYUnsafe, getTiltYUnchecked, setTwist, getTwist, getTwistUnsafe, getTwistUnchecked, setAltitudeAngle, getAltitudeAngle, getAltitudeAngleUnsafe, getAltitudeAngleUnchecked, setAzimuthAngle, getAzimuthAngle, getAzimuthAngleUnsafe, getAzimuthAngleUnchecked, setPointerType, getPointerType, getPointerTypeUnsafe, getPointerTypeUnchecked, setIsPrimary, getIsPrimary, getIsPrimaryUnsafe, getIsPrimaryUnchecked, setPersistentDeviceId, getPersistentDeviceId, getPersistentDeviceIdUnsafe, getPersistentDeviceIdUnchecked, setCoalescedEvents, getCoalescedEvents, getCoalescedEventsUnsafe, getCoalescedEventsUnchecked, setPredictedEvents, getPredictedEvents, getPredictedEventsUnsafe, getPredictedEventsUnchecked, PointerEventInit(..), gTypePointerEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPointerEventInit :: IO PointerEventInit
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit PointerEventInit specification>
+newPointerEventInit :: (MonadDOM m) => m PointerEventInit
+newPointerEventInit = liftDOM ((js_newPointerEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pointerId\"] = $2; })"
+        js_setPointerId :: PointerEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointerid PointerEventInit.pointerId specification>
+setPointerId :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setPointerId self val = liftDOM (void ((js_setPointerId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pointerId\"]; })"
+        js_getPointerId :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointerid PointerEventInit.pointerId specification>
+getPointerId :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getPointerId self = liftDOM (((js_getPointerId (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointerid PointerEventInit.pointerId specification>
+getPointerIdUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getPointerIdUnsafe self = liftDOM ((((js_getPointerId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointerid PointerEventInit.pointerId specification>
+getPointerIdUnchecked :: (MonadDOM m) => PointerEventInit -> m Int
+getPointerIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getPointerId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: PointerEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-width PointerEventInit.width specification>
+setWidth :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-width PointerEventInit.width specification>
+getWidth :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-width PointerEventInit.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getWidthUnsafe self = liftDOM ((((js_getWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-width PointerEventInit.width specification>
+getWidthUnchecked :: (MonadDOM m) => PointerEventInit -> m Double
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: PointerEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-height PointerEventInit.height specification>
+setHeight :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-height PointerEventInit.height specification>
+getHeight :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-height PointerEventInit.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-height PointerEventInit.height specification>
+getHeightUnchecked :: (MonadDOM m) => PointerEventInit -> m Double
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pressure\"] = $2; })"
+        js_setPressure :: PointerEventInit -> Float -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pressure PointerEventInit.pressure specification>
+setPressure :: (MonadDOM m) => PointerEventInit -> Float -> m ()
+setPressure self val = liftDOM (void ((js_setPressure (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pressure\"]; })"
+        js_getPressure :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pressure PointerEventInit.pressure specification>
+getPressure :: (MonadDOM m) => PointerEventInit -> m (Maybe Float)
+getPressure self = liftDOM (((js_getPressure (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pressure PointerEventInit.pressure specification>
+getPressureUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Float
+getPressureUnsafe self = liftDOM ((((js_getPressure (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pressure PointerEventInit.pressure specification>
+getPressureUnchecked :: (MonadDOM m) => PointerEventInit -> m Float
+getPressureUnchecked self = liftDOM ((pFromJSVal <$> (js_getPressure (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tangentialPressure\"] = $2; })"
+        js_setTangentialPressure :: PointerEventInit -> Float -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tangentialpressure PointerEventInit.tangentialPressure specification>
+setTangentialPressure :: (MonadDOM m) => PointerEventInit -> Float -> m ()
+setTangentialPressure self val = liftDOM (void ((js_setTangentialPressure (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tangentialPressure\"]; })"
+        js_getTangentialPressure :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tangentialpressure PointerEventInit.tangentialPressure specification>
+getTangentialPressure :: (MonadDOM m) => PointerEventInit -> m (Maybe Float)
+getTangentialPressure self = liftDOM (((js_getTangentialPressure (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tangentialpressure PointerEventInit.tangentialPressure specification>
+getTangentialPressureUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Float
+getTangentialPressureUnsafe self = liftDOM ((((js_getTangentialPressure (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tangentialpressure PointerEventInit.tangentialPressure specification>
+getTangentialPressureUnchecked :: (MonadDOM m) => PointerEventInit -> m Float
+getTangentialPressureUnchecked self = liftDOM ((pFromJSVal <$> (js_getTangentialPressure (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tiltX\"] = $2; })"
+        js_setTiltX :: PointerEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tiltx PointerEventInit.tiltX specification>
+setTiltX :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setTiltX self val = liftDOM (void ((js_setTiltX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tiltX\"]; })"
+        js_getTiltX :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tiltx PointerEventInit.tiltX specification>
+getTiltX :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getTiltX self = liftDOM (((js_getTiltX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tiltx PointerEventInit.tiltX specification>
+getTiltXUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getTiltXUnsafe self = liftDOM ((((js_getTiltX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tiltx PointerEventInit.tiltX specification>
+getTiltXUnchecked :: (MonadDOM m) => PointerEventInit -> m Int
+getTiltXUnchecked self = liftDOM ((pFromJSVal <$> (js_getTiltX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tiltY\"] = $2; })"
+        js_setTiltY :: PointerEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tilty PointerEventInit.tiltY specification>
+setTiltY :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setTiltY self val = liftDOM (void ((js_setTiltY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tiltY\"]; })"
+        js_getTiltY :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tilty PointerEventInit.tiltY specification>
+getTiltY :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getTiltY self = liftDOM (((js_getTiltY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tilty PointerEventInit.tiltY specification>
+getTiltYUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getTiltYUnsafe self = liftDOM ((((js_getTiltY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tilty PointerEventInit.tiltY specification>
+getTiltYUnchecked :: (MonadDOM m) => PointerEventInit -> m Int
+getTiltYUnchecked self = liftDOM ((pFromJSVal <$> (js_getTiltY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"twist\"] = $2; })"
+        js_setTwist :: PointerEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-twist PointerEventInit.twist specification>
+setTwist :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setTwist self val = liftDOM (void ((js_setTwist (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"twist\"]; })"
+        js_getTwist :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-twist PointerEventInit.twist specification>
+getTwist :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getTwist self = liftDOM (((js_getTwist (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-twist PointerEventInit.twist specification>
+getTwistUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getTwistUnsafe self = liftDOM ((((js_getTwist (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-twist PointerEventInit.twist specification>
+getTwistUnchecked :: (MonadDOM m) => PointerEventInit -> m Int
+getTwistUnchecked self = liftDOM ((pFromJSVal <$> (js_getTwist (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"altitudeAngle\"] = $2; })"
+        js_setAltitudeAngle :: PointerEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-altitudeangle PointerEventInit.altitudeAngle specification>
+setAltitudeAngle :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setAltitudeAngle self val = liftDOM (void ((js_setAltitudeAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"altitudeAngle\"]; })"
+        js_getAltitudeAngle :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-altitudeangle PointerEventInit.altitudeAngle specification>
+getAltitudeAngle :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getAltitudeAngle self = liftDOM (((js_getAltitudeAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-altitudeangle PointerEventInit.altitudeAngle specification>
+getAltitudeAngleUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getAltitudeAngleUnsafe self = liftDOM ((((js_getAltitudeAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-altitudeangle PointerEventInit.altitudeAngle specification>
+getAltitudeAngleUnchecked :: (MonadDOM m) => PointerEventInit -> m Double
+getAltitudeAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getAltitudeAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"azimuthAngle\"] = $2; })"
+        js_setAzimuthAngle :: PointerEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-azimuthangle PointerEventInit.azimuthAngle specification>
+setAzimuthAngle :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setAzimuthAngle self val = liftDOM (void ((js_setAzimuthAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"azimuthAngle\"]; })"
+        js_getAzimuthAngle :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-azimuthangle PointerEventInit.azimuthAngle specification>
+getAzimuthAngle :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getAzimuthAngle self = liftDOM (((js_getAzimuthAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-azimuthangle PointerEventInit.azimuthAngle specification>
+getAzimuthAngleUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getAzimuthAngleUnsafe self = liftDOM ((((js_getAzimuthAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-azimuthangle PointerEventInit.azimuthAngle specification>
+getAzimuthAngleUnchecked :: (MonadDOM m) => PointerEventInit -> m Double
+getAzimuthAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getAzimuthAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pointerType\"] = $2; })"
+        js_setPointerType :: PointerEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointertype PointerEventInit.pointerType specification>
+setPointerType :: (MonadDOM m, ToJSString val) => PointerEventInit -> val -> m ()
+setPointerType self val = liftDOM (void ((js_setPointerType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pointerType\"]; })"
+        js_getPointerType :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointertype PointerEventInit.pointerType specification>
+getPointerType :: (MonadDOM m, FromJSString result) => PointerEventInit -> m (Maybe result)
+getPointerType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPointerType (self))))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointertype PointerEventInit.pointerType specification>
+getPointerTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PointerEventInit -> m result
+getPointerTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPointerType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointertype PointerEventInit.pointerType specification>
+getPointerTypeUnchecked :: (MonadDOM m, FromJSString result) => PointerEventInit -> m result
+getPointerTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getPointerType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"isPrimary\"] = $2; })"
+        js_setIsPrimary :: PointerEventInit -> Bool -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-isprimary PointerEventInit.isPrimary specification>
+setIsPrimary :: (MonadDOM m) => PointerEventInit -> Bool -> m ()
+setIsPrimary self val = liftDOM (void ((js_setIsPrimary (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isPrimary\"]; })"
+        js_getIsPrimary :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-isprimary PointerEventInit.isPrimary specification>
+getIsPrimary :: (MonadDOM m) => PointerEventInit -> m (Maybe Bool)
+getIsPrimary self = liftDOM (((js_getIsPrimary (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-isprimary PointerEventInit.isPrimary specification>
+getIsPrimaryUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Bool
+getIsPrimaryUnsafe self = liftDOM ((((js_getIsPrimary (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-isprimary PointerEventInit.isPrimary specification>
+getIsPrimaryUnchecked :: (MonadDOM m) => PointerEventInit -> m Bool
+getIsPrimaryUnchecked self = liftDOM ((pFromJSVal <$> (js_getIsPrimary (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"persistentDeviceId\"] = $2; })"
+        js_setPersistentDeviceId :: PointerEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-persistentdeviceid PointerEventInit.persistentDeviceId specification>
+setPersistentDeviceId :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setPersistentDeviceId self val = liftDOM (void ((js_setPersistentDeviceId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"persistentDeviceId\"]; })"
+        js_getPersistentDeviceId :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-persistentdeviceid PointerEventInit.persistentDeviceId specification>
+getPersistentDeviceId :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getPersistentDeviceId self = liftDOM (((js_getPersistentDeviceId (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-persistentdeviceid PointerEventInit.persistentDeviceId specification>
+getPersistentDeviceIdUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getPersistentDeviceIdUnsafe self = liftDOM ((((js_getPersistentDeviceId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-persistentdeviceid PointerEventInit.persistentDeviceId specification>
+getPersistentDeviceIdUnchecked :: (MonadDOM m) => PointerEventInit -> m Int
+getPersistentDeviceIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getPersistentDeviceId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"coalescedEvents\"] = $2; })"
+        js_setCoalescedEvents :: PointerEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-coalescedevents PointerEventInit.coalescedEvents specification>
+setCoalescedEvents :: (MonadDOM m) => PointerEventInit -> [PointerEvent] -> m ()
+setCoalescedEvents self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCoalescedEvents (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"coalescedEvents\"]; })"
+        js_getCoalescedEvents :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-coalescedevents PointerEventInit.coalescedEvents specification>
+getCoalescedEvents :: (MonadDOM m) => PointerEventInit -> m (Maybe [PointerEvent])
+getCoalescedEvents self = liftDOM (((js_getCoalescedEvents (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-coalescedevents PointerEventInit.coalescedEvents specification>
+getCoalescedEventsUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m [PointerEvent]
+getCoalescedEventsUnsafe self = liftDOM ((((js_getCoalescedEvents (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-coalescedevents PointerEventInit.coalescedEvents specification>
+getCoalescedEventsUnchecked :: (MonadDOM m) => PointerEventInit -> m [PointerEvent]
+getCoalescedEventsUnchecked self = liftDOM (((js_getCoalescedEvents (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"predictedEvents\"] = $2; })"
+        js_setPredictedEvents :: PointerEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-predictedevents PointerEventInit.predictedEvents specification>
+setPredictedEvents :: (MonadDOM m) => PointerEventInit -> [PointerEvent] -> m ()
+setPredictedEvents self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPredictedEvents (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"predictedEvents\"]; })"
+        js_getPredictedEvents :: PointerEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-predictedevents PointerEventInit.predictedEvents specification>
+getPredictedEvents :: (MonadDOM m) => PointerEventInit -> m (Maybe [PointerEvent])
+getPredictedEvents self = liftDOM (((js_getPredictedEvents (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-predictedevents PointerEventInit.predictedEvents specification>
+getPredictedEventsUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m [PointerEvent]
+getPredictedEventsUnsafe self = liftDOM ((((js_getPredictedEvents (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-predictedevents PointerEventInit.predictedEvents specification>
+getPredictedEventsUnchecked :: (MonadDOM m) => PointerEventInit -> m [PointerEvent]
+getPredictedEventsUnchecked self = liftDOM (((js_getPredictedEvents (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PointerLockOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PointerLockOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PointerLockOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerlock-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PointerLockOptions
+       (js_newPointerLockOptions, js_setUnadjustedMovement, js_getUnadjustedMovement, newPointerLockOptions, setUnadjustedMovement, getUnadjustedMovement, getUnadjustedMovementUnsafe, getUnadjustedMovementUnchecked, PointerLockOptions(..), gTypePointerLockOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPointerLockOptions :: IO PointerLockOptions
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions PointerLockOptions specification>
+newPointerLockOptions :: (MonadDOM m) => m PointerLockOptions
+newPointerLockOptions = liftDOM ((js_newPointerLockOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unadjustedMovement\"] = $2; })"
+        js_setUnadjustedMovement :: PointerLockOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions-unadjustedmovement PointerLockOptions.unadjustedMovement specification>
+setUnadjustedMovement :: (MonadDOM m) => PointerLockOptions -> Bool -> m ()
+setUnadjustedMovement self val = liftDOM (void ((js_setUnadjustedMovement (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unadjustedMovement\"]; })"
+        js_getUnadjustedMovement :: PointerLockOptions -> IO JSVal
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions-unadjustedmovement PointerLockOptions.unadjustedMovement specification>
+getUnadjustedMovement :: (MonadDOM m) => PointerLockOptions -> m (Maybe Bool)
+getUnadjustedMovement self = liftDOM (((js_getUnadjustedMovement (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions-unadjustedmovement PointerLockOptions.unadjustedMovement specification>
+getUnadjustedMovementUnsafe :: (MonadDOM m, HasCallStack) => PointerLockOptions -> m Bool
+getUnadjustedMovementUnsafe self = liftDOM ((((js_getUnadjustedMovement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions-unadjustedmovement PointerLockOptions.unadjustedMovement specification>
+getUnadjustedMovementUnchecked :: (MonadDOM m) => PointerLockOptions -> m Bool
+getUnadjustedMovementUnchecked self = liftDOM ((pFromJSVal <$> (js_getUnadjustedMovement (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
@@ -1,47 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PopStateEvent
-       (js_newPopStateEvent, newPopStateEvent, js_getState, getState,
-        PopStateEvent(..), gTypePopStateEvent)
+       (js_newPopStateEvent, js_getState, js_getHasUAVisualTransition, newPopStateEvent, getState, getHasUAVisualTransition, PopStateEvent(..), gTypePopStateEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"PopStateEvent\"]($1,\n$2); })" js_newPopStateEvent ::
-        JSString -> Optional PopStateEventInit -> IO PopStateEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation> 
-newPopStateEvent ::
-                 (MonadIO m, ToJSString type') =>
-                   type' -> Maybe PopStateEventInit -> m PopStateEvent
-newPopStateEvent type' eventInitDict
-  = liftIO
-      (js_newPopStateEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
-        PopStateEvent -> IO JSVal
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PopStateEvent\"]($1, $2); })"
+        js_newPopStateEvent :: JSString -> JSVal -> IO PopStateEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PopStateEvent/PopStateEvent MDN PopStateEvent. documentation>
+newPopStateEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PopStateEventInit -> m PopStateEvent
+newPopStateEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPopStateEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent.state Mozilla PopStateEvent.state documentation> 
-getState :: (MonadIO m) => PopStateEvent -> m JSVal
-getState self = liftIO (js_getState self)
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: PopStateEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PopStateEvent/state MDN PopStateEvent.state documentation>
+getState :: (MonadDOM m) => PopStateEvent -> m JSVal
+getState self = liftDOM ((js_getState (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasUAVisualTransition\"]; })"
+        js_getHasUAVisualTransition :: PopStateEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/PopStateEvent/hasUAVisualTransition MDN PopStateEvent.hasUAVisualTransition documentation>
+getHasUAVisualTransition :: (MonadDOM m) => PopStateEvent -> m Bool
+getHasUAVisualTransition self = liftDOM ((js_getHasUAVisualTransition (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PopStateEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PopStateEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PopStateEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PopStateEventInit
+       (js_newPopStateEventInit, js_setState, js_getState, js_setHasUAVisualTransition, js_getHasUAVisualTransition, newPopStateEventInit, setState, getState, setHasUAVisualTransition, getHasUAVisualTransition, getHasUAVisualTransitionUnsafe, getHasUAVisualTransitionUnchecked, PopStateEventInit(..), gTypePopStateEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPopStateEventInit :: IO PopStateEventInit
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#popstateeventinit PopStateEventInit specification>
+newPopStateEventInit :: (MonadDOM m) => m PopStateEventInit
+newPopStateEventInit = liftDOM ((js_newPopStateEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"state\"] = $2; })"
+        js_setState :: PopStateEventInit -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-popstateeventinit-state PopStateEventInit.state specification>
+setState :: (MonadDOM m) => PopStateEventInit -> JSVal -> m ()
+setState self val = liftDOM (void ((js_setState (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: PopStateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-popstateeventinit-state PopStateEventInit.state specification>
+getState :: (MonadDOM m) => PopStateEventInit -> m JSVal
+getState self = liftDOM ((js_getState (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hasUAVisualTransition\"] = $2; })"
+        js_setHasUAVisualTransition :: PopStateEventInit -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-popstateeventinit-hasuavisualtransition PopStateEventInit.hasUAVisualTransition specification>
+setHasUAVisualTransition :: (MonadDOM m) => PopStateEventInit -> Bool -> m ()
+setHasUAVisualTransition self val = liftDOM (void ((js_setHasUAVisualTransition (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasUAVisualTransition\"]; })"
+        js_getHasUAVisualTransition :: PopStateEventInit -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-popstateeventinit-hasuavisualtransition PopStateEventInit.hasUAVisualTransition specification>
+getHasUAVisualTransition :: (MonadDOM m) => PopStateEventInit -> m (Maybe Bool)
+getHasUAVisualTransition self = liftDOM (((js_getHasUAVisualTransition (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-popstateeventinit-hasuavisualtransition PopStateEventInit.hasUAVisualTransition specification>
+getHasUAVisualTransitionUnsafe :: (MonadDOM m, HasCallStack) => PopStateEventInit -> m Bool
+getHasUAVisualTransitionUnsafe self = liftDOM ((((js_getHasUAVisualTransition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-popstateeventinit-hasuavisualtransition PopStateEventInit.hasUAVisualTransition specification>
+getHasUAVisualTransitionUnchecked :: (MonadDOM m) => PopStateEventInit -> m Bool
+getHasUAVisualTransitionUnchecked self = liftDOM ((pFromJSVal <$> (js_getHasUAVisualTransition (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PopoverTargetAttributes.hs b/src/GHCJS/DOM/JSFFI/Generated/PopoverTargetAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PopoverTargetAttributes.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PopoverTargetAttributes
+       (js_setPopoverTargetElement, js_getPopoverTargetElement, js_setPopoverTargetAction, js_getPopoverTargetAction, setPopoverTargetElement, getPopoverTargetElement, getPopoverTargetElementUnsafe, getPopoverTargetElementUnchecked, setPopoverTargetAction, getPopoverTargetAction, PopoverTargetAttributes(..), gTypePopoverTargetAttributes, IsPopoverTargetAttributes, toPopoverTargetAttributes)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"popoverTargetElement\"] = $2; })"
+        js_setPopoverTargetElement :: PopoverTargetAttributes -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/popoverTargetElement MDN PopoverTargetAttributes.popoverTargetElement documentation>
+setPopoverTargetElement :: (MonadDOM m, IsPopoverTargetAttributes self, IsElement val) => self -> Maybe val -> m ()
+setPopoverTargetElement self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPopoverTargetElement ((Types.toPopoverTargetAttributes self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"popoverTargetElement\"]; })"
+        js_getPopoverTargetElement :: PopoverTargetAttributes -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/popoverTargetElement MDN PopoverTargetAttributes.popoverTargetElement documentation>
+getPopoverTargetElement :: (MonadDOM m, IsPopoverTargetAttributes self) => self -> m (Maybe Element)
+getPopoverTargetElement self = liftDOM (((js_getPopoverTargetElement ((Types.toPopoverTargetAttributes self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/popoverTargetElement MDN PopoverTargetAttributes.popoverTargetElement documentation>
+getPopoverTargetElementUnsafe :: (MonadDOM m, IsPopoverTargetAttributes self, HasCallStack) => self -> m Element
+getPopoverTargetElementUnsafe self = liftDOM ((((js_getPopoverTargetElement ((Types.toPopoverTargetAttributes self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/popoverTargetElement MDN PopoverTargetAttributes.popoverTargetElement documentation>
+getPopoverTargetElementUnchecked :: (MonadDOM m, IsPopoverTargetAttributes self) => self -> m Element
+getPopoverTargetElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPopoverTargetElement ((Types.toPopoverTargetAttributes self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"popoverTargetAction\"] = $2; })"
+        js_setPopoverTargetAction :: PopoverTargetAttributes -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/popoverTargetAction MDN PopoverTargetAttributes.popoverTargetAction documentation>
+setPopoverTargetAction :: (MonadDOM m, IsPopoverTargetAttributes self, ToJSString val) => self -> val -> m ()
+setPopoverTargetAction self val = liftDOM (void ((js_setPopoverTargetAction ((Types.toPopoverTargetAttributes self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"popoverTargetAction\"]; })"
+        js_getPopoverTargetAction :: PopoverTargetAttributes -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/popoverTargetAction MDN PopoverTargetAttributes.popoverTargetAction documentation>
+getPopoverTargetAction :: (MonadDOM m, IsPopoverTargetAttributes self, FromJSString result) => self -> m result
+getPopoverTargetAction self = liftDOM ((fromJSString <$> (js_getPopoverTargetAction ((Types.toPopoverTargetAttributes self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
@@ -1,57 +1,29 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PositionCallback
-       (newPositionCallback, newPositionCallbackSync,
-        newPositionCallbackAsync, PositionCallback)
+       (newPositionCallback, newPositionCallbackSync, newPositionCallbackAsync, PositionCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
-newPositionCallback ::
-                    (MonadIO m) => (Geoposition -> IO ()) -> m PositionCallback
-newPositionCallback callback
-  = liftIO
-      (PositionCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ position ->
-              fromJSValUnchecked position >>= \ position' -> callback position'))
+newPositionCallback :: (MonadDOM m) => (GeolocationPosition -> IO ()) -> m PositionCallback
+newPositionCallback callback = liftDOM ((PositionCallback . coerce) <$> syncCallback1 ContinueAsync (\ position -> do
+          position' <- fromJSValUnchecked position
+          callback position'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
-newPositionCallbackSync ::
-                        (MonadIO m) => (Geoposition -> IO ()) -> m PositionCallback
-newPositionCallbackSync callback
-  = liftIO
-      (PositionCallback <$>
-         syncCallback1 ContinueAsync
-           (\ position ->
-              fromJSValUnchecked position >>= \ position' -> callback position'))
+newPositionCallbackSync :: (MonadDOM m) => (GeolocationPosition -> IO ()) -> m PositionCallback
+newPositionCallbackSync callback = liftDOM ((PositionCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ position -> do
+          position' <- fromJSValUnchecked position
+          callback position'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
-newPositionCallbackAsync ::
-                         (MonadIO m) => (Geoposition -> IO ()) -> m PositionCallback
-newPositionCallbackAsync callback
-  = liftIO
-      (PositionCallback <$>
-         asyncCallback1
-           (\ position ->
-              fromJSValUnchecked position >>= \ position' -> callback position'))
+newPositionCallbackAsync :: (MonadDOM m) => (GeolocationPosition -> IO ()) -> m PositionCallback
+newPositionCallbackAsync callback = liftDOM ((PositionCallback . coerce) <$> asyncCallback1 (\ position -> do
+          position' <- fromJSValUnchecked position
+          callback position'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs
+++ /dev/null
@@ -1,46 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.PositionError
-       (pattern PERMISSION_DENIED, pattern POSITION_UNAVAILABLE,
-        pattern TIMEOUT, js_getCode, getCode, js_getMessage, getMessage,
-        PositionError(..), gTypePositionError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern PERMISSION_DENIED = 1
-pattern POSITION_UNAVAILABLE = 2
-pattern TIMEOUT = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        PositionError -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.code Mozilla PositionError.code documentation> 
-getCode :: (MonadIO m) => PositionError -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        PositionError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.message Mozilla PositionError.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => PositionError -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
@@ -1,57 +1,29 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PositionErrorCallback
-       (newPositionErrorCallback, newPositionErrorCallbackSync,
-        newPositionErrorCallbackAsync, PositionErrorCallback)
+       (newPositionErrorCallback, newPositionErrorCallbackSync, newPositionErrorCallbackAsync, PositionErrorCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
-newPositionErrorCallback ::
-                         (MonadIO m) => (PositionError -> IO ()) -> m PositionErrorCallback
-newPositionErrorCallback callback
-  = liftIO
-      (PositionErrorCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
+newPositionErrorCallback :: (MonadDOM m) => (GeolocationPositionError -> IO ()) -> m PositionErrorCallback
+newPositionErrorCallback callback = liftDOM ((PositionErrorCallback . coerce) <$> syncCallback1 ContinueAsync (\ positionError -> do
+          positionError' <- fromJSValUnchecked positionError
+          callback positionError'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
-newPositionErrorCallbackSync ::
-                             (MonadIO m) => (PositionError -> IO ()) -> m PositionErrorCallback
-newPositionErrorCallbackSync callback
-  = liftIO
-      (PositionErrorCallback <$>
-         syncCallback1 ContinueAsync
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
+newPositionErrorCallbackSync :: (MonadDOM m) => (GeolocationPositionError -> IO ()) -> m PositionErrorCallback
+newPositionErrorCallbackSync callback = liftDOM ((PositionErrorCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ positionError -> do
+          positionError' <- fromJSValUnchecked positionError
+          callback positionError'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
-newPositionErrorCallbackAsync ::
-                              (MonadIO m) => (PositionError -> IO ()) -> m PositionErrorCallback
-newPositionErrorCallbackAsync callback
-  = liftIO
-      (PositionErrorCallback <$>
-         asyncCallback1
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
+newPositionErrorCallbackAsync :: (MonadDOM m) => (GeolocationPositionError -> IO ()) -> m PositionErrorCallback
+newPositionErrorCallbackAsync callback = liftDOM ((PositionErrorCallback . coerce) <$> asyncCallback1 (\ positionError -> do
+          positionError' <- fromJSValUnchecked positionError
+          callback positionError'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PositionOptions
+       (js_newPositionOptions, js_setEnableHighAccuracy, js_getEnableHighAccuracy, js_setTimeout, js_getTimeout, js_setMaximumAge, js_getMaximumAge, newPositionOptions, setEnableHighAccuracy, getEnableHighAccuracy, getEnableHighAccuracyUnsafe, getEnableHighAccuracyUnchecked, setTimeout, getTimeout, getTimeoutUnsafe, getTimeoutUnchecked, setMaximumAge, getMaximumAge, getMaximumAgeUnsafe, getMaximumAgeUnchecked, PositionOptions(..), gTypePositionOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPositionOptions :: IO PositionOptions
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions PositionOptions specification>
+newPositionOptions :: (MonadDOM m) => m PositionOptions
+newPositionOptions = liftDOM ((js_newPositionOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"enableHighAccuracy\"] = $2; })"
+        js_setEnableHighAccuracy :: PositionOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-enablehighaccuracy PositionOptions.enableHighAccuracy specification>
+setEnableHighAccuracy :: (MonadDOM m) => PositionOptions -> Bool -> m ()
+setEnableHighAccuracy self val = liftDOM (void ((js_setEnableHighAccuracy (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"enableHighAccuracy\"]; })"
+        js_getEnableHighAccuracy :: PositionOptions -> IO JSVal
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-enablehighaccuracy PositionOptions.enableHighAccuracy specification>
+getEnableHighAccuracy :: (MonadDOM m) => PositionOptions -> m (Maybe Bool)
+getEnableHighAccuracy self = liftDOM (((js_getEnableHighAccuracy (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-enablehighaccuracy PositionOptions.enableHighAccuracy specification>
+getEnableHighAccuracyUnsafe :: (MonadDOM m, HasCallStack) => PositionOptions -> m Bool
+getEnableHighAccuracyUnsafe self = liftDOM ((((js_getEnableHighAccuracy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-enablehighaccuracy PositionOptions.enableHighAccuracy specification>
+getEnableHighAccuracyUnchecked :: (MonadDOM m) => PositionOptions -> m Bool
+getEnableHighAccuracyUnchecked self = liftDOM ((pFromJSVal <$> (js_getEnableHighAccuracy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
+        js_setTimeout :: PositionOptions -> Word -> IO ()
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-timeout PositionOptions.timeout specification>
+setTimeout :: (MonadDOM m) => PositionOptions -> Word -> m ()
+setTimeout self val = liftDOM (void ((js_setTimeout (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })"
+        js_getTimeout :: PositionOptions -> IO JSVal
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-timeout PositionOptions.timeout specification>
+getTimeout :: (MonadDOM m) => PositionOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((js_getTimeout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-timeout PositionOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PositionOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((js_getTimeout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-timeout PositionOptions.timeout specification>
+getTimeoutUnchecked :: (MonadDOM m) => PositionOptions -> m Word
+getTimeoutUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeout (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maximumAge\"] = $2; })"
+        js_setMaximumAge :: PositionOptions -> Word -> IO ()
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-maximumage PositionOptions.maximumAge specification>
+setMaximumAge :: (MonadDOM m) => PositionOptions -> Word -> m ()
+setMaximumAge self val = liftDOM (void ((js_setMaximumAge (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maximumAge\"]; })"
+        js_getMaximumAge :: PositionOptions -> IO JSVal
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-maximumage PositionOptions.maximumAge specification>
+getMaximumAge :: (MonadDOM m) => PositionOptions -> m (Maybe Word)
+getMaximumAge self = liftDOM (((js_getMaximumAge (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-maximumage PositionOptions.maximumAge specification>
+getMaximumAgeUnsafe :: (MonadDOM m, HasCallStack) => PositionOptions -> m Word
+getMaximumAgeUnsafe self = liftDOM ((((js_getMaximumAge (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-maximumage PositionOptions.maximumAge specification>
+getMaximumAgeUnchecked :: (MonadDOM m) => PositionOptions -> m Word
+getMaximumAgeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaximumAge (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PrivateToken.hs b/src/GHCJS/DOM/JSFFI/Generated/PrivateToken.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PrivateToken.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trust-token-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PrivateToken
+       (js_newPrivateToken, js_setVersion, js_getVersion, js_setOperation, js_getOperation, js_setRefreshPolicy, js_getRefreshPolicy, js_setIssuers, js_getIssuers, newPrivateToken, setVersion, getVersion, setOperation, getOperation, setRefreshPolicy, getRefreshPolicy, getRefreshPolicyUnsafe, getRefreshPolicyUnchecked, setIssuers, getIssuers, getIssuersUnsafe, getIssuersUnchecked, PrivateToken(..), gTypePrivateToken)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"version\": $1, \"operation\": $2}); })"
+        js_newPrivateToken :: JSVal -> JSVal -> IO PrivateToken
+-- | <https://wicg.github.io/trust-token-api/#dictdef-privatetoken PrivateToken specification>
+newPrivateToken :: (MonadDOM m) => TokenVersion -> OperationType -> m PrivateToken
+newPrivateToken version operation = liftDOM (((toJSVal version) >>= \a1' -> (toJSVal operation) >>= \a2' -> js_newPrivateToken a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"version\"] = $2; })"
+        js_setVersion :: PrivateToken -> JSVal -> IO ()
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-version PrivateToken.version specification>
+setVersion :: (MonadDOM m) => PrivateToken -> TokenVersion -> m ()
+setVersion self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setVersion (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })"
+        js_getVersion :: PrivateToken -> IO JSVal
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-version PrivateToken.version specification>
+getVersion :: (MonadDOM m) => PrivateToken -> m TokenVersion
+getVersion self = liftDOM (((js_getVersion (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"operation\"] = $2; })"
+        js_setOperation :: PrivateToken -> JSVal -> IO ()
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-operation PrivateToken.operation specification>
+setOperation :: (MonadDOM m) => PrivateToken -> OperationType -> m ()
+setOperation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOperation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"operation\"]; })"
+        js_getOperation :: PrivateToken -> IO JSVal
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-operation PrivateToken.operation specification>
+getOperation :: (MonadDOM m) => PrivateToken -> m OperationType
+getOperation self = liftDOM (((js_getOperation (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"refreshPolicy\"] = $2; })"
+        js_setRefreshPolicy :: PrivateToken -> JSVal -> IO ()
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-refreshpolicy PrivateToken.refreshPolicy specification>
+setRefreshPolicy :: (MonadDOM m) => PrivateToken -> RefreshPolicy -> m ()
+setRefreshPolicy self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRefreshPolicy (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"refreshPolicy\"]; })"
+        js_getRefreshPolicy :: PrivateToken -> IO JSVal
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-refreshpolicy PrivateToken.refreshPolicy specification>
+getRefreshPolicy :: (MonadDOM m) => PrivateToken -> m (Maybe RefreshPolicy)
+getRefreshPolicy self = liftDOM (((js_getRefreshPolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-refreshpolicy PrivateToken.refreshPolicy specification>
+getRefreshPolicyUnsafe :: (MonadDOM m, HasCallStack) => PrivateToken -> m RefreshPolicy
+getRefreshPolicyUnsafe self = liftDOM ((((js_getRefreshPolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-refreshpolicy PrivateToken.refreshPolicy specification>
+getRefreshPolicyUnchecked :: (MonadDOM m) => PrivateToken -> m RefreshPolicy
+getRefreshPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getRefreshPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"issuers\"] = $2; })"
+        js_setIssuers :: PrivateToken -> JSVal -> IO ()
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-issuers PrivateToken.issuers specification>
+setIssuers :: (MonadDOM m, ToJSString val) => PrivateToken -> [val] -> m ()
+setIssuers self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setIssuers (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"issuers\"]; })"
+        js_getIssuers :: PrivateToken -> IO JSVal
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-issuers PrivateToken.issuers specification>
+getIssuers :: (MonadDOM m, FromJSString result) => PrivateToken -> m (Maybe [result])
+getIssuers self = liftDOM (((js_getIssuers (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-issuers PrivateToken.issuers specification>
+getIssuersUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PrivateToken -> m [result]
+getIssuersUnsafe self = liftDOM ((((js_getIssuers (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-issuers PrivateToken.issuers specification>
+getIssuersUnchecked :: (MonadDOM m, FromJSString result) => PrivateToken -> m [result]
+getIssuersUnchecked self = liftDOM (((js_getIssuers (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs b/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
@@ -1,59 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
-       (js_getTarget, getTarget, js_getSheet, getSheet, getSheetUnsafe,
-        getSheetUnchecked, ProcessingInstruction(..),
-        gTypeProcessingInstruction)
+       (js_getTarget, getTarget, ProcessingInstruction(..), gTypeProcessingInstruction)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        ProcessingInstruction -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
-getTarget ::
-          (MonadIO m, FromJSString result) =>
-            ProcessingInstruction -> m result
-getTarget self = liftIO (fromJSString <$> (js_getTarget self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sheet\"]; })" js_getSheet ::
-        ProcessingInstruction -> IO (Nullable StyleSheet)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
-getSheet ::
-         (MonadIO m) => ProcessingInstruction -> m (Maybe StyleSheet)
-getSheet self = liftIO (nullableToMaybe <$> (js_getSheet self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
-getSheetUnsafe ::
-               (MonadIO m, HasCallStack) => ProcessingInstruction -> m StyleSheet
-getSheetUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSheet self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
-getSheetUnchecked ::
-                  (MonadIO m) => ProcessingInstruction -> m StyleSheet
-getSheetUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getSheet self))
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: ProcessingInstruction -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ProcessingInstruction/target MDN ProcessingInstruction.target documentation>
+getTarget :: (MonadDOM m, FromJSString result) => ProcessingInstruction -> m result
+getTarget self = liftDOM ((fromJSString <$> (js_getTarget (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
@@ -1,68 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ProgressEvent
-       (js_newProgressEvent, newProgressEvent, js_getLengthComputable,
-        getLengthComputable, js_getLoaded, getLoaded, js_getTotal,
-        getTotal, ProgressEvent(..), gTypeProgressEvent, IsProgressEvent,
-        toProgressEvent)
+       (js_newProgressEvent, js_getLengthComputable, js_getLoaded, js_getTotal, newProgressEvent, getLengthComputable, getLoaded, getTotal, ProgressEvent(..), gTypeProgressEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"ProgressEvent\"]($1,\n$2); })" js_newProgressEvent ::
-        JSString -> Optional ProgressEventInit -> IO ProgressEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation> 
-newProgressEvent ::
-                 (MonadIO m, ToJSString type') =>
-                   type' -> Maybe ProgressEventInit -> m ProgressEvent
-newProgressEvent type' eventInitDict
-  = liftIO
-      (js_newProgressEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"lengthComputable\"] ? 1 : 0); })" js_getLengthComputable ::
-        ProgressEvent -> IO Bool
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ProgressEvent\"]($1, $2); })"
+        js_newProgressEvent :: JSString -> JSVal -> IO ProgressEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ProgressEvent/ProgressEvent MDN ProgressEvent. documentation>
+newProgressEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe ProgressEventInit -> m ProgressEvent
+newProgressEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newProgressEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.lengthComputable Mozilla ProgressEvent.lengthComputable documentation> 
-getLengthComputable ::
-                    (MonadIO m, IsProgressEvent self) => self -> m Bool
-getLengthComputable self
-  = liftIO (js_getLengthComputable (toProgressEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"loaded\"]; })" js_getLoaded ::
-        ProgressEvent -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"lengthComputable\"]; })"
+        js_getLengthComputable :: ProgressEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ProgressEvent/lengthComputable MDN ProgressEvent.lengthComputable documentation>
+getLengthComputable :: (MonadDOM m) => ProgressEvent -> m Bool
+getLengthComputable self = liftDOM ((js_getLengthComputable (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.loaded Mozilla ProgressEvent.loaded documentation> 
-getLoaded :: (MonadIO m, IsProgressEvent self) => self -> m Word64
-getLoaded self
-  = liftIO (round <$> (js_getLoaded (toProgressEvent self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })" js_getTotal ::
-        ProgressEvent -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"loaded\"]; })"
+        js_getLoaded :: ProgressEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/ProgressEvent/loaded MDN ProgressEvent.loaded documentation>
+getLoaded :: (MonadDOM m) => ProgressEvent -> m Double
+getLoaded self = liftDOM ((js_getLoaded (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.total Mozilla ProgressEvent.total documentation> 
-getTotal :: (MonadIO m, IsProgressEvent self) => self -> m Word64
-getTotal self
-  = liftIO (round <$> (js_getTotal (toProgressEvent self)))
+foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })"
+        js_getTotal :: ProgressEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/ProgressEvent/total MDN ProgressEvent.total documentation>
+getTotal :: (MonadDOM m) => ProgressEvent -> m Double
+getTotal self = liftDOM ((js_getTotal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ProgressEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ProgressEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ProgressEventInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ProgressEventInit
+       (js_newProgressEventInit, js_setLengthComputable, js_getLengthComputable, js_setLoaded, js_getLoaded, js_setTotal, js_getTotal, newProgressEventInit, setLengthComputable, getLengthComputable, getLengthComputableUnsafe, getLengthComputableUnchecked, setLoaded, getLoaded, getLoadedUnsafe, getLoadedUnchecked, setTotal, getTotal, getTotalUnsafe, getTotalUnchecked, ProgressEventInit(..), gTypeProgressEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newProgressEventInit :: IO ProgressEventInit
+-- | <https://xhr.spec.whatwg.org/#progresseventinit ProgressEventInit specification>
+newProgressEventInit :: (MonadDOM m) => m ProgressEventInit
+newProgressEventInit = liftDOM ((js_newProgressEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lengthComputable\"] = $2; })"
+        js_setLengthComputable :: ProgressEventInit -> Bool -> IO ()
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-lengthcomputable ProgressEventInit.lengthComputable specification>
+setLengthComputable :: (MonadDOM m) => ProgressEventInit -> Bool -> m ()
+setLengthComputable self val = liftDOM (void ((js_setLengthComputable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lengthComputable\"]; })"
+        js_getLengthComputable :: ProgressEventInit -> IO JSVal
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-lengthcomputable ProgressEventInit.lengthComputable specification>
+getLengthComputable :: (MonadDOM m) => ProgressEventInit -> m (Maybe Bool)
+getLengthComputable self = liftDOM (((js_getLengthComputable (self)) >>= fromJSValUnchecked))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-lengthcomputable ProgressEventInit.lengthComputable specification>
+getLengthComputableUnsafe :: (MonadDOM m, HasCallStack) => ProgressEventInit -> m Bool
+getLengthComputableUnsafe self = liftDOM ((((js_getLengthComputable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-lengthcomputable ProgressEventInit.lengthComputable specification>
+getLengthComputableUnchecked :: (MonadDOM m) => ProgressEventInit -> m Bool
+getLengthComputableUnchecked self = liftDOM ((pFromJSVal <$> (js_getLengthComputable (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"loaded\"] = $2; })"
+        js_setLoaded :: ProgressEventInit -> Double -> IO ()
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-loaded ProgressEventInit.loaded specification>
+setLoaded :: (MonadDOM m) => ProgressEventInit -> Double -> m ()
+setLoaded self val = liftDOM (void ((js_setLoaded (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"loaded\"]; })"
+        js_getLoaded :: ProgressEventInit -> IO JSVal
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-loaded ProgressEventInit.loaded specification>
+getLoaded :: (MonadDOM m) => ProgressEventInit -> m (Maybe Double)
+getLoaded self = liftDOM (((js_getLoaded (self)) >>= fromJSValUnchecked))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-loaded ProgressEventInit.loaded specification>
+getLoadedUnsafe :: (MonadDOM m, HasCallStack) => ProgressEventInit -> m Double
+getLoadedUnsafe self = liftDOM ((((js_getLoaded (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-loaded ProgressEventInit.loaded specification>
+getLoadedUnchecked :: (MonadDOM m) => ProgressEventInit -> m Double
+getLoadedUnchecked self = liftDOM ((pFromJSVal <$> (js_getLoaded (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"total\"] = $2; })"
+        js_setTotal :: ProgressEventInit -> Double -> IO ()
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-total ProgressEventInit.total specification>
+setTotal :: (MonadDOM m) => ProgressEventInit -> Double -> m ()
+setTotal self val = liftDOM (void ((js_setTotal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })"
+        js_getTotal :: ProgressEventInit -> IO JSVal
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-total ProgressEventInit.total specification>
+getTotal :: (MonadDOM m) => ProgressEventInit -> m (Maybe Double)
+getTotal self = liftDOM (((js_getTotal (self)) >>= fromJSValUnchecked))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-total ProgressEventInit.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => ProgressEventInit -> m Double
+getTotalUnsafe self = liftDOM ((((js_getTotal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-total ProgressEventInit.total specification>
+getTotalUnchecked :: (MonadDOM m) => ProgressEventInit -> m Double
+getTotalUnchecked self = liftDOM ((pFromJSVal <$> (js_getTotal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
@@ -1,57 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent
-       (js_newPromiseRejectionEvent, newPromiseRejectionEvent,
-        js_getPromise, getPromise, js_getReason, getReason,
-        PromiseRejectionEvent(..), gTypePromiseRejectionEvent)
+       (js_newPromiseRejectionEvent, js_getPromise, js_getReason, newPromiseRejectionEvent, getPromise, getReason, PromiseRejectionEvent(..), gTypePromiseRejectionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"PromiseRejectionEvent\"]($1,\n$2); })"
-        js_newPromiseRejectionEvent ::
-        JSString -> PromiseRejectionEventInit -> IO PromiseRejectionEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent Mozilla PromiseRejectionEvent documentation> 
-newPromiseRejectionEvent ::
-                         (MonadIO m, ToJSString type') =>
-                           type' -> PromiseRejectionEventInit -> m PromiseRejectionEvent
-newPromiseRejectionEvent type' eventInitDict
-  = liftIO
-      (js_newPromiseRejectionEvent (toJSString type') eventInitDict)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"promise\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getPromise :: PromiseRejectionEvent -> IO (JSVal, JSVal)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PromiseRejectionEvent\"]($1, $2); })"
+        js_newPromiseRejectionEvent :: JSString -> PromiseRejectionEventInit -> IO PromiseRejectionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/PromiseRejectionEvent MDN PromiseRejectionEvent. documentation>
+newPromiseRejectionEvent :: (MonadDOM m, ToJSString type') => type' -> PromiseRejectionEventInit -> m PromiseRejectionEvent
+newPromiseRejectionEvent type' eventInitDict = liftDOM ((js_newPromiseRejectionEvent (toJSString type') (eventInitDict)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent.promise Mozilla PromiseRejectionEvent.promise documentation> 
-getPromise :: (MonadIO m) => PromiseRejectionEvent -> m JSVal
-getPromise self
-  = liftIO ((js_getPromise self) >>= checkPromiseResult)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })" js_getReason ::
-        PromiseRejectionEvent -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"promise\"]; })"
+        js_getPromise :: PromiseRejectionEvent -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/promise MDN PromiseRejectionEvent.promise documentation>
+getPromise :: (MonadDOM m) => PromiseRejectionEvent -> m GObject
+getPromise self = liftDOM ((js_getPromise (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent.reason Mozilla PromiseRejectionEvent.reason documentation> 
-getReason :: (MonadIO m) => PromiseRejectionEvent -> m JSVal
-getReason self = liftIO (js_getReason self)
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: PromiseRejectionEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/reason MDN PromiseRejectionEvent.reason documentation>
+getReason :: (MonadDOM m) => PromiseRejectionEvent -> m JSVal
+getReason self = liftDOM ((js_getReason (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PromiseRejectionEventInit
+       (js_newPromiseRejectionEventInit, js_setPromise, js_getPromise, js_setReason, js_getReason, newPromiseRejectionEventInit, setPromise, getPromise, setReason, getReason, PromiseRejectionEventInit(..), gTypePromiseRejectionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"promise\": $1}); })"
+        js_newPromiseRejectionEventInit :: GObject -> IO PromiseRejectionEventInit
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#promiserejectioneventinit PromiseRejectionEventInit specification>
+newPromiseRejectionEventInit :: (MonadDOM m) => GObject -> m PromiseRejectionEventInit
+newPromiseRejectionEventInit promise = liftDOM ((js_newPromiseRejectionEventInit (promise)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"promise\"] = $2; })"
+        js_setPromise :: PromiseRejectionEventInit -> GObject -> IO ()
+setPromise :: (MonadDOM m) => PromiseRejectionEventInit -> GObject -> m ()
+setPromise self val = liftDOM (void ((js_setPromise (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"promise\"]; })"
+        js_getPromise :: PromiseRejectionEventInit -> IO GObject
+getPromise :: (MonadDOM m) => PromiseRejectionEventInit -> m GObject
+getPromise self = liftDOM ((js_getPromise (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"reason\"] = $2; })"
+        js_setReason :: PromiseRejectionEventInit -> JSVal -> IO ()
+setReason :: (MonadDOM m) => PromiseRejectionEventInit -> JSVal -> m ()
+setReason self val = liftDOM (void ((js_setReason (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: PromiseRejectionEventInit -> IO JSVal
+getReason :: (MonadDOM m) => PromiseRejectionEventInit -> m JSVal
+getReason self = liftDOM ((js_getReason (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PropertyDefinition.hs b/src/GHCJS/DOM/JSFFI/Generated/PropertyDefinition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PropertyDefinition.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-properties-values-api-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PropertyDefinition
+       (js_newPropertyDefinition, js_setName, js_getName, js_setSyntax, js_getSyntax, js_setInherits, js_getInherits, js_setInitialValue, js_getInitialValue, newPropertyDefinition, setName, getName, setSyntax, getSyntax, getSyntaxUnsafe, getSyntaxUnchecked, setInherits, getInherits, getInheritsUnsafe, getInheritsUnchecked, setInitialValue, getInitialValue, getInitialValueUnsafe, getInitialValueUnchecked, PropertyDefinition(..), gTypePropertyDefinition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"name\": $1}); })"
+        js_newPropertyDefinition :: JSString -> IO PropertyDefinition
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dictdef-propertydefinition PropertyDefinition specification>
+newPropertyDefinition :: (MonadDOM m, ToJSString name) => name -> m PropertyDefinition
+newPropertyDefinition name = liftDOM ((js_newPropertyDefinition (toJSString name)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: PropertyDefinition -> JSString -> IO ()
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-name PropertyDefinition.name specification>
+setName :: (MonadDOM m, ToJSString val) => PropertyDefinition -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PropertyDefinition -> IO JSString
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-name PropertyDefinition.name specification>
+getName :: (MonadDOM m, FromJSString result) => PropertyDefinition -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"syntax\"] = $2; })"
+        js_setSyntax :: PropertyDefinition -> JSString -> IO ()
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-syntax PropertyDefinition.syntax specification>
+setSyntax :: (MonadDOM m, ToJSString val) => PropertyDefinition -> val -> m ()
+setSyntax self val = liftDOM (void ((js_setSyntax (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"syntax\"]; })"
+        js_getSyntax :: PropertyDefinition -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-syntax PropertyDefinition.syntax specification>
+getSyntax :: (MonadDOM m, FromJSString result) => PropertyDefinition -> m (Maybe result)
+getSyntax self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSyntax (self))))
+
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-syntax PropertyDefinition.syntax specification>
+getSyntaxUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PropertyDefinition -> m result
+getSyntaxUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSyntax (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-syntax PropertyDefinition.syntax specification>
+getSyntaxUnchecked :: (MonadDOM m, FromJSString result) => PropertyDefinition -> m result
+getSyntaxUnchecked self = liftDOM ((pFromJSVal <$> (js_getSyntax (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inherits\"] = $2; })"
+        js_setInherits :: PropertyDefinition -> Bool -> IO ()
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-inherits PropertyDefinition.inherits specification>
+setInherits :: (MonadDOM m) => PropertyDefinition -> Bool -> m ()
+setInherits self val = liftDOM (void ((js_setInherits (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inherits\"]; })"
+        js_getInherits :: PropertyDefinition -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-inherits PropertyDefinition.inherits specification>
+getInherits :: (MonadDOM m) => PropertyDefinition -> m (Maybe Bool)
+getInherits self = liftDOM (((js_getInherits (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-inherits PropertyDefinition.inherits specification>
+getInheritsUnsafe :: (MonadDOM m, HasCallStack) => PropertyDefinition -> m Bool
+getInheritsUnsafe self = liftDOM ((((js_getInherits (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-inherits PropertyDefinition.inherits specification>
+getInheritsUnchecked :: (MonadDOM m) => PropertyDefinition -> m Bool
+getInheritsUnchecked self = liftDOM ((pFromJSVal <$> (js_getInherits (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"initialValue\"] = $2; })"
+        js_setInitialValue :: PropertyDefinition -> JSString -> IO ()
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-initialvalue PropertyDefinition.initialValue specification>
+setInitialValue :: (MonadDOM m, ToJSString val) => PropertyDefinition -> val -> m ()
+setInitialValue self val = liftDOM (void ((js_setInitialValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"initialValue\"]; })"
+        js_getInitialValue :: PropertyDefinition -> IO JSVal
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-initialvalue PropertyDefinition.initialValue specification>
+getInitialValue :: (MonadDOM m, FromJSString result) => PropertyDefinition -> m (Maybe result)
+getInitialValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getInitialValue (self))))
+
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-initialvalue PropertyDefinition.initialValue specification>
+getInitialValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PropertyDefinition -> m result
+getInitialValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getInitialValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.css-houdini.org/css-properties-values-api-1/#dom-propertydefinition-initialvalue PropertyDefinition.initialValue specification>
+getInitialValueUnchecked :: (MonadDOM m, FromJSString result) => PropertyDefinition -> m result
+getInitialValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getInitialValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredential.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredential.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredential
+       (js_getClientExtensionResults, js_toJSON, js_getClientCapabilities, js_isConditionalMediationAvailable, js_isUserVerifyingPlatformAuthenticatorAvailable, js_parseCreationOptionsFromJSON, js_parseRequestOptionsFromJSON, js_signalAllAcceptedCredentials, js_signalCurrentUserDetails, js_signalUnknownCredential, js_getRawId, js_getResponse, js_getAuthenticatorAttachment, getClientExtensionResults, getClientExtensionResults_, toJSON, toJSON_, getClientCapabilities, getClientCapabilities_, isConditionalMediationAvailable, isConditionalMediationAvailable_, isUserVerifyingPlatformAuthenticatorAvailable, isUserVerifyingPlatformAuthenticatorAvailable_, parseCreationOptionsFromJSON, parseCreationOptionsFromJSON_, parseRequestOptionsFromJSON, parseRequestOptionsFromJSON_, signalAllAcceptedCredentials, signalCurrentUserDetails, signalUnknownCredential, getRawId, getResponse, getAuthenticatorAttachment, getAuthenticatorAttachmentUnsafe, getAuthenticatorAttachmentUnchecked, PublicKeyCredential(..), gTypePublicKeyCredential)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getClientExtensionResults\"](); })"
+        js_getClientExtensionResults :: PublicKeyCredential -> IO AuthenticationExtensionsClientOutputs
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientExtensionResults MDN PublicKeyCredential.getClientExtensionResults documentation>
+getClientExtensionResults :: (MonadDOM m) => PublicKeyCredential -> m AuthenticationExtensionsClientOutputs
+getClientExtensionResults self = liftDOM ((js_getClientExtensionResults (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientExtensionResults MDN PublicKeyCredential.getClientExtensionResults documentation>
+getClientExtensionResults_ :: (MonadDOM m) => PublicKeyCredential -> m ()
+getClientExtensionResults_ self = liftDOM (void ((js_getClientExtensionResults (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PublicKeyCredential -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/toJSON MDN PublicKeyCredential.toJSON documentation>
+toJSON :: (MonadDOM m) => PublicKeyCredential -> m GObject
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/toJSON MDN PublicKeyCredential.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PublicKeyCredential -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript interruptible "(($c) => { return globalThis[\"PublicKeyCredential\"][\"getClientCapabilities\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClientCapabilities :: IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientCapabilities_static MDN PublicKeyCredential.getClientCapabilities documentation>
+getClientCapabilities :: (MonadDOM m) => m (Record JSString JSVal)
+getClientCapabilities = liftDOM ((((js_getClientCapabilities) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientCapabilities_static MDN PublicKeyCredential.getClientCapabilities documentation>
+getClientCapabilities_ :: (MonadDOM m) => m ()
+getClientCapabilities_ = liftDOM (void (((js_getClientCapabilities) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($c) => { return globalThis[\"PublicKeyCredential\"][\"isConditionalMediationAvailable\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isConditionalMediationAvailable :: IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isConditionalMediationAvailable_static MDN PublicKeyCredential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable :: (MonadDOM m) => m Bool
+isConditionalMediationAvailable = liftDOM (((js_isConditionalMediationAvailable) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isConditionalMediationAvailable_static MDN PublicKeyCredential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable_ :: (MonadDOM m) => m ()
+isConditionalMediationAvailable_ = liftDOM (void (((js_isConditionalMediationAvailable) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($c) => { return globalThis[\"PublicKeyCredential\"][\"isUserVerifyingPlatformAuthenticatorAvailable\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isUserVerifyingPlatformAuthenticatorAvailable :: IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable_static MDN PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable documentation>
+isUserVerifyingPlatformAuthenticatorAvailable :: (MonadDOM m) => m Bool
+isUserVerifyingPlatformAuthenticatorAvailable = liftDOM (((js_isUserVerifyingPlatformAuthenticatorAvailable) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable_static MDN PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable documentation>
+isUserVerifyingPlatformAuthenticatorAvailable_ :: (MonadDOM m) => m ()
+isUserVerifyingPlatformAuthenticatorAvailable_ = liftDOM (void (((js_isUserVerifyingPlatformAuthenticatorAvailable) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return globalThis[\"PublicKeyCredential\"][\"parseCreationOptionsFromJSON\"]($1); })"
+        js_parseCreationOptionsFromJSON :: PublicKeyCredentialCreationOptionsJSON -> IO PublicKeyCredentialCreationOptions
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseCreationOptionsFromJSON_static MDN PublicKeyCredential.parseCreationOptionsFromJSON documentation>
+parseCreationOptionsFromJSON :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m PublicKeyCredentialCreationOptions
+parseCreationOptionsFromJSON options = liftDOM ((js_parseCreationOptionsFromJSON (options)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseCreationOptionsFromJSON_static MDN PublicKeyCredential.parseCreationOptionsFromJSON documentation>
+parseCreationOptionsFromJSON_ :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m ()
+parseCreationOptionsFromJSON_ options = liftDOM (void ((js_parseCreationOptionsFromJSON (options))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"PublicKeyCredential\"][\"parseRequestOptionsFromJSON\"]($1); })"
+        js_parseRequestOptionsFromJSON :: PublicKeyCredentialRequestOptionsJSON -> IO PublicKeyCredentialRequestOptions
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseRequestOptionsFromJSON_static MDN PublicKeyCredential.parseRequestOptionsFromJSON documentation>
+parseRequestOptionsFromJSON :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m PublicKeyCredentialRequestOptions
+parseRequestOptionsFromJSON options = liftDOM ((js_parseRequestOptionsFromJSON (options)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseRequestOptionsFromJSON_static MDN PublicKeyCredential.parseRequestOptionsFromJSON documentation>
+parseRequestOptionsFromJSON_ :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m ()
+parseRequestOptionsFromJSON_ options = liftDOM (void ((js_parseRequestOptionsFromJSON (options))))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"PublicKeyCredential\"][\"signalAllAcceptedCredentials\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_signalAllAcceptedCredentials :: AllAcceptedCredentialsOptions -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/signalAllAcceptedCredentials_static MDN PublicKeyCredential.signalAllAcceptedCredentials documentation>
+signalAllAcceptedCredentials :: (MonadDOM m) => AllAcceptedCredentialsOptions -> m ()
+signalAllAcceptedCredentials options = liftDOM (void (((js_signalAllAcceptedCredentials (options)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"PublicKeyCredential\"][\"signalCurrentUserDetails\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_signalCurrentUserDetails :: CurrentUserDetailsOptions -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/signalCurrentUserDetails_static MDN PublicKeyCredential.signalCurrentUserDetails documentation>
+signalCurrentUserDetails :: (MonadDOM m) => CurrentUserDetailsOptions -> m ()
+signalCurrentUserDetails options = liftDOM (void (((js_signalCurrentUserDetails (options)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"PublicKeyCredential\"][\"signalUnknownCredential\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_signalUnknownCredential :: UnknownCredentialOptions -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/signalUnknownCredential_static MDN PublicKeyCredential.signalUnknownCredential documentation>
+signalUnknownCredential :: (MonadDOM m) => UnknownCredentialOptions -> m ()
+signalUnknownCredential options = liftDOM (void (((js_signalUnknownCredential (options)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rawId\"]; })"
+        js_getRawId :: PublicKeyCredential -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/rawId MDN PublicKeyCredential.rawId documentation>
+getRawId :: (MonadDOM m) => PublicKeyCredential -> m ArrayBuffer
+getRawId self = liftDOM ((js_getRawId (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"response\"]; })"
+        js_getResponse :: PublicKeyCredential -> IO AuthenticatorResponse
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/response MDN PublicKeyCredential.response documentation>
+getResponse :: (MonadDOM m) => PublicKeyCredential -> m AuthenticatorResponse
+getResponse self = liftDOM ((js_getResponse (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"authenticatorAttachment\"]; })"
+        js_getAuthenticatorAttachment :: PublicKeyCredential -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/authenticatorAttachment MDN PublicKeyCredential.authenticatorAttachment documentation>
+getAuthenticatorAttachment :: (MonadDOM m, FromJSString result) => PublicKeyCredential -> m (Maybe result)
+getAuthenticatorAttachment self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAuthenticatorAttachment (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/authenticatorAttachment MDN PublicKeyCredential.authenticatorAttachment documentation>
+getAuthenticatorAttachmentUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredential -> m result
+getAuthenticatorAttachmentUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAuthenticatorAttachment (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/authenticatorAttachment MDN PublicKeyCredential.authenticatorAttachment documentation>
+getAuthenticatorAttachmentUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredential -> m result
+getAuthenticatorAttachmentUnchecked self = liftDOM ((pFromJSVal <$> (js_getAuthenticatorAttachment (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialCreationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialCreationOptions.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialCreationOptions
+       (js_newPublicKeyCredentialCreationOptions, js_setRp, js_getRp, js_setUser, js_getUser, js_setChallenge, js_getChallenge, js_setPubKeyCredParams, js_getPubKeyCredParams, js_setTimeout, js_getTimeout, js_setExcludeCredentials, js_getExcludeCredentials, js_setAuthenticatorSelection, js_getAuthenticatorSelection, js_setHints, js_getHints, js_setAttestation, js_getAttestation, js_setAttestationFormats, js_getAttestationFormats, js_setExtensions, js_getExtensions, newPublicKeyCredentialCreationOptions, setRp, getRp, setUser, getUser, setChallenge, getChallenge, setPubKeyCredParams, getPubKeyCredParams, setTimeout, getTimeout, getTimeoutUnsafe, getTimeoutUnchecked, setExcludeCredentials, getExcludeCredentials, getExcludeCredentialsUnsafe, getExcludeCredentialsUnchecked, setAuthenticatorSelection, getAuthenticatorSelection, getAuthenticatorSelectionUnsafe, getAuthenticatorSelectionUnchecked, setHints, getHints, getHintsUnsafe, getHintsUnchecked, setAttestation, getAttestation, getAttestationUnsafe, getAttestationUnchecked, setAttestationFormats, getAttestationFormats, getAttestationFormatsUnsafe, getAttestationFormatsUnchecked, setExtensions, getExtensions, getExtensionsUnsafe, getExtensionsUnchecked, PublicKeyCredentialCreationOptions(..), gTypePublicKeyCredentialCreationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"rp\": $1, \"user\": $2, \"challenge\": $3, \"pubKeyCredParams\": $4}); })"
+        js_newPublicKeyCredentialCreationOptions :: PublicKeyCredentialRpEntity -> PublicKeyCredentialUserEntity -> BufferSource -> JSVal -> IO PublicKeyCredentialCreationOptions
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptions PublicKeyCredentialCreationOptions specification>
+newPublicKeyCredentialCreationOptions :: (MonadDOM m, IsBufferSource challenge) => PublicKeyCredentialRpEntity -> PublicKeyCredentialUserEntity -> challenge -> [PublicKeyCredentialParameters] -> m PublicKeyCredentialCreationOptions
+newPublicKeyCredentialCreationOptions rp user challenge pubKeyCredParams = liftDOM (((toJSVal pubKeyCredParams) >>= \a4' -> js_newPublicKeyCredentialCreationOptions (rp) (user) (Types.toBufferSource challenge) a4'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rp\"] = $2; })"
+        js_setRp :: PublicKeyCredentialCreationOptions -> PublicKeyCredentialRpEntity -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-rp PublicKeyCredentialCreationOptions.rp specification>
+setRp :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> PublicKeyCredentialRpEntity -> m ()
+setRp self val = liftDOM (void ((js_setRp (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rp\"]; })"
+        js_getRp :: PublicKeyCredentialCreationOptions -> IO PublicKeyCredentialRpEntity
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-rp PublicKeyCredentialCreationOptions.rp specification>
+getRp :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m PublicKeyCredentialRpEntity
+getRp self = liftDOM ((js_getRp (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"user\"] = $2; })"
+        js_setUser :: PublicKeyCredentialCreationOptions -> PublicKeyCredentialUserEntity -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-user PublicKeyCredentialCreationOptions.user specification>
+setUser :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> PublicKeyCredentialUserEntity -> m ()
+setUser self val = liftDOM (void ((js_setUser (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"user\"]; })"
+        js_getUser :: PublicKeyCredentialCreationOptions -> IO PublicKeyCredentialUserEntity
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-user PublicKeyCredentialCreationOptions.user specification>
+getUser :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m PublicKeyCredentialUserEntity
+getUser self = liftDOM ((js_getUser (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"challenge\"] = $2; })"
+        js_setChallenge :: PublicKeyCredentialCreationOptions -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-challenge PublicKeyCredentialCreationOptions.challenge specification>
+setChallenge :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialCreationOptions -> val -> m ()
+setChallenge self val = liftDOM (void ((js_setChallenge (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"challenge\"]; })"
+        js_getChallenge :: PublicKeyCredentialCreationOptions -> IO BufferSource
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-challenge PublicKeyCredentialCreationOptions.challenge specification>
+getChallenge :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m BufferSource
+getChallenge self = liftDOM ((js_getChallenge (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pubKeyCredParams\"] = $2; })"
+        js_setPubKeyCredParams :: PublicKeyCredentialCreationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-pubkeycredparams PublicKeyCredentialCreationOptions.pubKeyCredParams specification>
+setPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> [PublicKeyCredentialParameters] -> m ()
+setPubKeyCredParams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPubKeyCredParams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pubKeyCredParams\"]; })"
+        js_getPubKeyCredParams :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-pubkeycredparams PublicKeyCredentialCreationOptions.pubKeyCredParams specification>
+getPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m [PublicKeyCredentialParameters]
+getPubKeyCredParams self = liftDOM (((js_getPubKeyCredParams (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
+        js_setTimeout :: PublicKeyCredentialCreationOptions -> Word -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-timeout PublicKeyCredentialCreationOptions.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> Word -> m ()
+setTimeout self val = liftDOM (void ((js_setTimeout (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })"
+        js_getTimeout :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-timeout PublicKeyCredentialCreationOptions.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((js_getTimeout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-timeout PublicKeyCredentialCreationOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((js_getTimeout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-timeout PublicKeyCredentialCreationOptions.timeout specification>
+getTimeoutUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m Word
+getTimeoutUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeout (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"excludeCredentials\"] = $2; })"
+        js_setExcludeCredentials :: PublicKeyCredentialCreationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials PublicKeyCredentialCreationOptions.excludeCredentials specification>
+setExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> [PublicKeyCredentialDescriptor] -> m ()
+setExcludeCredentials self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExcludeCredentials (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"excludeCredentials\"]; })"
+        js_getExcludeCredentials :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials PublicKeyCredentialCreationOptions.excludeCredentials specification>
+getExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe [PublicKeyCredentialDescriptor])
+getExcludeCredentials self = liftDOM (((js_getExcludeCredentials (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials PublicKeyCredentialCreationOptions.excludeCredentials specification>
+getExcludeCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m [PublicKeyCredentialDescriptor]
+getExcludeCredentialsUnsafe self = liftDOM ((((js_getExcludeCredentials (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials PublicKeyCredentialCreationOptions.excludeCredentials specification>
+getExcludeCredentialsUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m [PublicKeyCredentialDescriptor]
+getExcludeCredentialsUnchecked self = liftDOM (((js_getExcludeCredentials (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"authenticatorSelection\"] = $2; })"
+        js_setAuthenticatorSelection :: PublicKeyCredentialCreationOptions -> AuthenticatorSelectionCriteria -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-authenticatorselection PublicKeyCredentialCreationOptions.authenticatorSelection specification>
+setAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> AuthenticatorSelectionCriteria -> m ()
+setAuthenticatorSelection self val = liftDOM (void ((js_setAuthenticatorSelection (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"authenticatorSelection\"]; })"
+        js_getAuthenticatorSelection :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-authenticatorselection PublicKeyCredentialCreationOptions.authenticatorSelection specification>
+getAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe AuthenticatorSelectionCriteria)
+getAuthenticatorSelection self = liftDOM (((js_getAuthenticatorSelection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-authenticatorselection PublicKeyCredentialCreationOptions.authenticatorSelection specification>
+getAuthenticatorSelectionUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m AuthenticatorSelectionCriteria
+getAuthenticatorSelectionUnsafe self = liftDOM ((((js_getAuthenticatorSelection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-authenticatorselection PublicKeyCredentialCreationOptions.authenticatorSelection specification>
+getAuthenticatorSelectionUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m AuthenticatorSelectionCriteria
+getAuthenticatorSelectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getAuthenticatorSelection (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hints\"] = $2; })"
+        js_setHints :: PublicKeyCredentialCreationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-hints PublicKeyCredentialCreationOptions.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptions -> [val] -> m ()
+setHints self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHints (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hints\"]; })"
+        js_getHints :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-hints PublicKeyCredentialCreationOptions.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m (Maybe [result])
+getHints self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-hints PublicKeyCredentialCreationOptions.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptions -> m [result]
+getHintsUnsafe self = liftDOM ((((js_getHints (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-hints PublicKeyCredentialCreationOptions.hints specification>
+getHintsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m [result]
+getHintsUnchecked self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attestation\"] = $2; })"
+        js_setAttestation :: PublicKeyCredentialCreationOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestation PublicKeyCredentialCreationOptions.attestation specification>
+setAttestation :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptions -> val -> m ()
+setAttestation self val = liftDOM (void ((js_setAttestation (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attestation\"]; })"
+        js_getAttestation :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestation PublicKeyCredentialCreationOptions.attestation specification>
+getAttestation :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m (Maybe result)
+getAttestation self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAttestation (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestation PublicKeyCredentialCreationOptions.attestation specification>
+getAttestationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptions -> m result
+getAttestationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAttestation (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestation PublicKeyCredentialCreationOptions.attestation specification>
+getAttestationUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m result
+getAttestationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAttestation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attestationFormats\"] = $2; })"
+        js_setAttestationFormats :: PublicKeyCredentialCreationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats PublicKeyCredentialCreationOptions.attestationFormats specification>
+setAttestationFormats :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptions -> [val] -> m ()
+setAttestationFormats self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAttestationFormats (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attestationFormats\"]; })"
+        js_getAttestationFormats :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats PublicKeyCredentialCreationOptions.attestationFormats specification>
+getAttestationFormats :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m (Maybe [result])
+getAttestationFormats self = liftDOM (((js_getAttestationFormats (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats PublicKeyCredentialCreationOptions.attestationFormats specification>
+getAttestationFormatsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptions -> m [result]
+getAttestationFormatsUnsafe self = liftDOM ((((js_getAttestationFormats (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats PublicKeyCredentialCreationOptions.attestationFormats specification>
+getAttestationFormatsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m [result]
+getAttestationFormatsUnchecked self = liftDOM (((js_getAttestationFormats (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"extensions\"] = $2; })"
+        js_setExtensions :: PublicKeyCredentialCreationOptions -> AuthenticationExtensionsClientInputs -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-extensions PublicKeyCredentialCreationOptions.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> AuthenticationExtensionsClientInputs -> m ()
+setExtensions self val = liftDOM (void ((js_setExtensions (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"extensions\"]; })"
+        js_getExtensions :: PublicKeyCredentialCreationOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-extensions PublicKeyCredentialCreationOptions.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe AuthenticationExtensionsClientInputs)
+getExtensions self = liftDOM (((js_getExtensions (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-extensions PublicKeyCredentialCreationOptions.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m AuthenticationExtensionsClientInputs
+getExtensionsUnsafe self = liftDOM ((((js_getExtensions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-extensions PublicKeyCredentialCreationOptions.extensions specification>
+getExtensionsUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m AuthenticationExtensionsClientInputs
+getExtensionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getExtensions (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialCreationOptionsJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialCreationOptionsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialCreationOptionsJSON.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialCreationOptionsJSON
+       (js_newPublicKeyCredentialCreationOptionsJSON, js_setRp, js_getRp, js_setUser, js_getUser, js_setChallenge, js_getChallenge, js_setPubKeyCredParams, js_getPubKeyCredParams, js_setTimeout, js_getTimeout, js_setExcludeCredentials, js_getExcludeCredentials, js_setAuthenticatorSelection, js_getAuthenticatorSelection, js_setHints, js_getHints, js_setAttestation, js_getAttestation, js_setAttestationFormats, js_getAttestationFormats, js_setExtensions, js_getExtensions, newPublicKeyCredentialCreationOptionsJSON, setRp, getRp, setUser, getUser, setChallenge, getChallenge, setPubKeyCredParams, getPubKeyCredParams, setTimeout, getTimeout, getTimeoutUnsafe, getTimeoutUnchecked, setExcludeCredentials, getExcludeCredentials, getExcludeCredentialsUnsafe, getExcludeCredentialsUnchecked, setAuthenticatorSelection, getAuthenticatorSelection, getAuthenticatorSelectionUnsafe, getAuthenticatorSelectionUnchecked, setHints, getHints, getHintsUnsafe, getHintsUnchecked, setAttestation, getAttestation, getAttestationUnsafe, getAttestationUnchecked, setAttestationFormats, getAttestationFormats, getAttestationFormatsUnsafe, getAttestationFormatsUnchecked, setExtensions, getExtensions, getExtensionsUnsafe, getExtensionsUnchecked, PublicKeyCredentialCreationOptionsJSON(..), gTypePublicKeyCredentialCreationOptionsJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"rp\": $1, \"user\": $2, \"challenge\": $3, \"pubKeyCredParams\": $4}); })"
+        js_newPublicKeyCredentialCreationOptionsJSON :: PublicKeyCredentialRpEntity -> PublicKeyCredentialUserEntityJSON -> JSString -> JSVal -> IO PublicKeyCredentialCreationOptionsJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson PublicKeyCredentialCreationOptionsJSON specification>
+newPublicKeyCredentialCreationOptionsJSON :: (MonadDOM m, ToJSString challenge) => PublicKeyCredentialRpEntity -> PublicKeyCredentialUserEntityJSON -> challenge -> [PublicKeyCredentialParameters] -> m PublicKeyCredentialCreationOptionsJSON
+newPublicKeyCredentialCreationOptionsJSON rp user challenge pubKeyCredParams = liftDOM (((toJSVal pubKeyCredParams) >>= \a4' -> js_newPublicKeyCredentialCreationOptionsJSON (rp) (user) (toJSString challenge) a4'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rp\"] = $2; })"
+        js_setRp :: PublicKeyCredentialCreationOptionsJSON -> PublicKeyCredentialRpEntity -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-rp PublicKeyCredentialCreationOptionsJSON.rp specification>
+setRp :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> PublicKeyCredentialRpEntity -> m ()
+setRp self val = liftDOM (void ((js_setRp (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rp\"]; })"
+        js_getRp :: PublicKeyCredentialCreationOptionsJSON -> IO PublicKeyCredentialRpEntity
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-rp PublicKeyCredentialCreationOptionsJSON.rp specification>
+getRp :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m PublicKeyCredentialRpEntity
+getRp self = liftDOM ((js_getRp (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"user\"] = $2; })"
+        js_setUser :: PublicKeyCredentialCreationOptionsJSON -> PublicKeyCredentialUserEntityJSON -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-user PublicKeyCredentialCreationOptionsJSON.user specification>
+setUser :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> PublicKeyCredentialUserEntityJSON -> m ()
+setUser self val = liftDOM (void ((js_setUser (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"user\"]; })"
+        js_getUser :: PublicKeyCredentialCreationOptionsJSON -> IO PublicKeyCredentialUserEntityJSON
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-user PublicKeyCredentialCreationOptionsJSON.user specification>
+getUser :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m PublicKeyCredentialUserEntityJSON
+getUser self = liftDOM ((js_getUser (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"challenge\"] = $2; })"
+        js_setChallenge :: PublicKeyCredentialCreationOptionsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-challenge PublicKeyCredentialCreationOptionsJSON.challenge specification>
+setChallenge :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> val -> m ()
+setChallenge self val = liftDOM (void ((js_setChallenge (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"challenge\"]; })"
+        js_getChallenge :: PublicKeyCredentialCreationOptionsJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-challenge PublicKeyCredentialCreationOptionsJSON.challenge specification>
+getChallenge :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m result
+getChallenge self = liftDOM ((fromJSString <$> (js_getChallenge (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pubKeyCredParams\"] = $2; })"
+        js_setPubKeyCredParams :: PublicKeyCredentialCreationOptionsJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-pubkeycredparams PublicKeyCredentialCreationOptionsJSON.pubKeyCredParams specification>
+setPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> [PublicKeyCredentialParameters] -> m ()
+setPubKeyCredParams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPubKeyCredParams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pubKeyCredParams\"]; })"
+        js_getPubKeyCredParams :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-pubkeycredparams PublicKeyCredentialCreationOptionsJSON.pubKeyCredParams specification>
+getPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m [PublicKeyCredentialParameters]
+getPubKeyCredParams self = liftDOM (((js_getPubKeyCredParams (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
+        js_setTimeout :: PublicKeyCredentialCreationOptionsJSON -> Word -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-timeout PublicKeyCredentialCreationOptionsJSON.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> Word -> m ()
+setTimeout self val = liftDOM (void ((js_setTimeout (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })"
+        js_getTimeout :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-timeout PublicKeyCredentialCreationOptionsJSON.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe Word)
+getTimeout self = liftDOM (((js_getTimeout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-timeout PublicKeyCredentialCreationOptionsJSON.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m Word
+getTimeoutUnsafe self = liftDOM ((((js_getTimeout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-timeout PublicKeyCredentialCreationOptionsJSON.timeout specification>
+getTimeoutUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m Word
+getTimeoutUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeout (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"excludeCredentials\"] = $2; })"
+        js_setExcludeCredentials :: PublicKeyCredentialCreationOptionsJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-excludecredentials PublicKeyCredentialCreationOptionsJSON.excludeCredentials specification>
+setExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> [PublicKeyCredentialDescriptorJSON] -> m ()
+setExcludeCredentials self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExcludeCredentials (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"excludeCredentials\"]; })"
+        js_getExcludeCredentials :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-excludecredentials PublicKeyCredentialCreationOptionsJSON.excludeCredentials specification>
+getExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe [PublicKeyCredentialDescriptorJSON])
+getExcludeCredentials self = liftDOM (((js_getExcludeCredentials (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-excludecredentials PublicKeyCredentialCreationOptionsJSON.excludeCredentials specification>
+getExcludeCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m [PublicKeyCredentialDescriptorJSON]
+getExcludeCredentialsUnsafe self = liftDOM ((((js_getExcludeCredentials (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-excludecredentials PublicKeyCredentialCreationOptionsJSON.excludeCredentials specification>
+getExcludeCredentialsUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m [PublicKeyCredentialDescriptorJSON]
+getExcludeCredentialsUnchecked self = liftDOM (((js_getExcludeCredentials (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"authenticatorSelection\"] = $2; })"
+        js_setAuthenticatorSelection :: PublicKeyCredentialCreationOptionsJSON -> AuthenticatorSelectionCriteria -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-authenticatorselection PublicKeyCredentialCreationOptionsJSON.authenticatorSelection specification>
+setAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> AuthenticatorSelectionCriteria -> m ()
+setAuthenticatorSelection self val = liftDOM (void ((js_setAuthenticatorSelection (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"authenticatorSelection\"]; })"
+        js_getAuthenticatorSelection :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-authenticatorselection PublicKeyCredentialCreationOptionsJSON.authenticatorSelection specification>
+getAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe AuthenticatorSelectionCriteria)
+getAuthenticatorSelection self = liftDOM (((js_getAuthenticatorSelection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-authenticatorselection PublicKeyCredentialCreationOptionsJSON.authenticatorSelection specification>
+getAuthenticatorSelectionUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m AuthenticatorSelectionCriteria
+getAuthenticatorSelectionUnsafe self = liftDOM ((((js_getAuthenticatorSelection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-authenticatorselection PublicKeyCredentialCreationOptionsJSON.authenticatorSelection specification>
+getAuthenticatorSelectionUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m AuthenticatorSelectionCriteria
+getAuthenticatorSelectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getAuthenticatorSelection (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hints\"] = $2; })"
+        js_setHints :: PublicKeyCredentialCreationOptionsJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-hints PublicKeyCredentialCreationOptionsJSON.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> [val] -> m ()
+setHints self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHints (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hints\"]; })"
+        js_getHints :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-hints PublicKeyCredentialCreationOptionsJSON.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe [result])
+getHints self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-hints PublicKeyCredentialCreationOptionsJSON.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m [result]
+getHintsUnsafe self = liftDOM ((((js_getHints (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-hints PublicKeyCredentialCreationOptionsJSON.hints specification>
+getHintsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m [result]
+getHintsUnchecked self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attestation\"] = $2; })"
+        js_setAttestation :: PublicKeyCredentialCreationOptionsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestation PublicKeyCredentialCreationOptionsJSON.attestation specification>
+setAttestation :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> val -> m ()
+setAttestation self val = liftDOM (void ((js_setAttestation (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attestation\"]; })"
+        js_getAttestation :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestation PublicKeyCredentialCreationOptionsJSON.attestation specification>
+getAttestation :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe result)
+getAttestation self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAttestation (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestation PublicKeyCredentialCreationOptionsJSON.attestation specification>
+getAttestationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m result
+getAttestationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAttestation (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestation PublicKeyCredentialCreationOptionsJSON.attestation specification>
+getAttestationUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m result
+getAttestationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAttestation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attestationFormats\"] = $2; })"
+        js_setAttestationFormats :: PublicKeyCredentialCreationOptionsJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestationformats PublicKeyCredentialCreationOptionsJSON.attestationFormats specification>
+setAttestationFormats :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> [val] -> m ()
+setAttestationFormats self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAttestationFormats (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attestationFormats\"]; })"
+        js_getAttestationFormats :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestationformats PublicKeyCredentialCreationOptionsJSON.attestationFormats specification>
+getAttestationFormats :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe [result])
+getAttestationFormats self = liftDOM (((js_getAttestationFormats (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestationformats PublicKeyCredentialCreationOptionsJSON.attestationFormats specification>
+getAttestationFormatsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m [result]
+getAttestationFormatsUnsafe self = liftDOM ((((js_getAttestationFormats (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestationformats PublicKeyCredentialCreationOptionsJSON.attestationFormats specification>
+getAttestationFormatsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m [result]
+getAttestationFormatsUnchecked self = liftDOM (((js_getAttestationFormats (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"extensions\"] = $2; })"
+        js_setExtensions :: PublicKeyCredentialCreationOptionsJSON -> AuthenticationExtensionsClientInputsJSON -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-extensions PublicKeyCredentialCreationOptionsJSON.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> AuthenticationExtensionsClientInputsJSON -> m ()
+setExtensions self val = liftDOM (void ((js_setExtensions (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"extensions\"]; })"
+        js_getExtensions :: PublicKeyCredentialCreationOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-extensions PublicKeyCredentialCreationOptionsJSON.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe AuthenticationExtensionsClientInputsJSON)
+getExtensions self = liftDOM (((js_getExtensions (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-extensions PublicKeyCredentialCreationOptionsJSON.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m AuthenticationExtensionsClientInputsJSON
+getExtensionsUnsafe self = liftDOM ((((js_getExtensions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-extensions PublicKeyCredentialCreationOptionsJSON.extensions specification>
+getExtensionsUnchecked :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m AuthenticationExtensionsClientInputsJSON
+getExtensionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getExtensions (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialDescriptor.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialDescriptor
+       (js_newPublicKeyCredentialDescriptor, js_setType, js_getType, js_setId, js_getId, js_setTransports, js_getTransports, newPublicKeyCredentialDescriptor, setType, getType, setId, getId, setTransports, getTransports, getTransportsUnsafe, getTransportsUnchecked, PublicKeyCredentialDescriptor(..), gTypePublicKeyCredentialDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"type\": $1, \"id\": $2}); })"
+        js_newPublicKeyCredentialDescriptor :: JSString -> BufferSource -> IO PublicKeyCredentialDescriptor
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialdescriptor PublicKeyCredentialDescriptor specification>
+newPublicKeyCredentialDescriptor :: (MonadDOM m, ToJSString type', IsBufferSource id) => type' -> id -> m PublicKeyCredentialDescriptor
+newPublicKeyCredentialDescriptor type' id = liftDOM ((js_newPublicKeyCredentialDescriptor (toJSString type') (Types.toBufferSource id)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: PublicKeyCredentialDescriptor -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-type PublicKeyCredentialDescriptor.type specification>
+setType :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptor -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: PublicKeyCredentialDescriptor -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-type PublicKeyCredentialDescriptor.type specification>
+getType :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptor -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: PublicKeyCredentialDescriptor -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-id PublicKeyCredentialDescriptor.id specification>
+setId :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialDescriptor -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PublicKeyCredentialDescriptor -> IO BufferSource
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-id PublicKeyCredentialDescriptor.id specification>
+getId :: (MonadDOM m) => PublicKeyCredentialDescriptor -> m BufferSource
+getId self = liftDOM ((js_getId (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transports\"] = $2; })"
+        js_setTransports :: PublicKeyCredentialDescriptor -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-transports PublicKeyCredentialDescriptor.transports specification>
+setTransports :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptor -> [val] -> m ()
+setTransports self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransports (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transports\"]; })"
+        js_getTransports :: PublicKeyCredentialDescriptor -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-transports PublicKeyCredentialDescriptor.transports specification>
+getTransports :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptor -> m (Maybe [result])
+getTransports self = liftDOM (((js_getTransports (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-transports PublicKeyCredentialDescriptor.transports specification>
+getTransportsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialDescriptor -> m [result]
+getTransportsUnsafe self = liftDOM ((((js_getTransports (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-transports PublicKeyCredentialDescriptor.transports specification>
+getTransportsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptor -> m [result]
+getTransportsUnchecked self = liftDOM (((js_getTransports (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialDescriptorJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialDescriptorJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialDescriptorJSON.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialDescriptorJSON
+       (js_newPublicKeyCredentialDescriptorJSON, js_setType, js_getType, js_setId, js_getId, js_setTransports, js_getTransports, newPublicKeyCredentialDescriptorJSON, setType, getType, setId, getId, setTransports, getTransports, getTransportsUnsafe, getTransportsUnchecked, PublicKeyCredentialDescriptorJSON(..), gTypePublicKeyCredentialDescriptorJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"type\": $1, \"id\": $2}); })"
+        js_newPublicKeyCredentialDescriptorJSON :: JSString -> JSString -> IO PublicKeyCredentialDescriptorJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialdescriptorjson PublicKeyCredentialDescriptorJSON specification>
+newPublicKeyCredentialDescriptorJSON :: (MonadDOM m, ToJSString type', ToJSString id) => type' -> id -> m PublicKeyCredentialDescriptorJSON
+newPublicKeyCredentialDescriptorJSON type' id = liftDOM ((js_newPublicKeyCredentialDescriptorJSON (toJSString type') (toJSString id)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: PublicKeyCredentialDescriptorJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-type PublicKeyCredentialDescriptorJSON.type specification>
+setType :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptorJSON -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: PublicKeyCredentialDescriptorJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-type PublicKeyCredentialDescriptorJSON.type specification>
+getType :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: PublicKeyCredentialDescriptorJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-id PublicKeyCredentialDescriptorJSON.id specification>
+setId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptorJSON -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PublicKeyCredentialDescriptorJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-id PublicKeyCredentialDescriptorJSON.id specification>
+getId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transports\"] = $2; })"
+        js_setTransports :: PublicKeyCredentialDescriptorJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-transports PublicKeyCredentialDescriptorJSON.transports specification>
+setTransports :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptorJSON -> [val] -> m ()
+setTransports self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransports (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transports\"]; })"
+        js_getTransports :: PublicKeyCredentialDescriptorJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-transports PublicKeyCredentialDescriptorJSON.transports specification>
+getTransports :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m (Maybe [result])
+getTransports self = liftDOM (((js_getTransports (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-transports PublicKeyCredentialDescriptorJSON.transports specification>
+getTransportsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m [result]
+getTransportsUnsafe self = liftDOM ((((js_getTransports (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-transports PublicKeyCredentialDescriptorJSON.transports specification>
+getTransportsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m [result]
+getTransportsUnchecked self = liftDOM (((js_getTransports (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialEntity.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialEntity.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialEntity.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialEntity
+       (js_newPublicKeyCredentialEntity, js_setName, js_getName, newPublicKeyCredentialEntity, setName, getName, PublicKeyCredentialEntity(..), gTypePublicKeyCredentialEntity, IsPublicKeyCredentialEntity, toPublicKeyCredentialEntity)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"name\": $1}); })"
+        js_newPublicKeyCredentialEntity :: JSString -> IO PublicKeyCredentialEntity
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialentity PublicKeyCredentialEntity specification>
+newPublicKeyCredentialEntity :: (MonadDOM m, ToJSString name) => name -> m PublicKeyCredentialEntity
+newPublicKeyCredentialEntity name = liftDOM ((js_newPublicKeyCredentialEntity (toJSString name)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: PublicKeyCredentialEntity -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialentity-name PublicKeyCredentialEntity.name specification>
+setName :: (MonadDOM m, IsPublicKeyCredentialEntity self, ToJSString val) => self -> val -> m ()
+setName self val = liftDOM (void ((js_setName ((Types.toPublicKeyCredentialEntity self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PublicKeyCredentialEntity -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialentity-name PublicKeyCredentialEntity.name specification>
+getName :: (MonadDOM m, IsPublicKeyCredentialEntity self, FromJSString result) => self -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName ((Types.toPublicKeyCredentialEntity self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialParameters.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialParameters
+       (js_newPublicKeyCredentialParameters, js_setType, js_getType, js_setAlg, js_getAlg, newPublicKeyCredentialParameters, setType, getType, setAlg, getAlg, PublicKeyCredentialParameters(..), gTypePublicKeyCredentialParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"type\": $1, \"alg\": $2}); })"
+        js_newPublicKeyCredentialParameters :: JSString -> Int -> IO PublicKeyCredentialParameters
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialparameters PublicKeyCredentialParameters specification>
+newPublicKeyCredentialParameters :: (MonadDOM m, ToJSString type') => type' -> Int -> m PublicKeyCredentialParameters
+newPublicKeyCredentialParameters type' alg = liftDOM ((js_newPublicKeyCredentialParameters (toJSString type') (alg)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: PublicKeyCredentialParameters -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-type PublicKeyCredentialParameters.type specification>
+setType :: (MonadDOM m, ToJSString val) => PublicKeyCredentialParameters -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: PublicKeyCredentialParameters -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-type PublicKeyCredentialParameters.type specification>
+getType :: (MonadDOM m, FromJSString result) => PublicKeyCredentialParameters -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alg\"] = $2; })"
+        js_setAlg :: PublicKeyCredentialParameters -> Int -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-alg PublicKeyCredentialParameters.alg specification>
+setAlg :: (MonadDOM m) => PublicKeyCredentialParameters -> Int -> m ()
+setAlg self val = liftDOM (void ((js_setAlg (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alg\"]; })"
+        js_getAlg :: PublicKeyCredentialParameters -> IO Int
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-alg PublicKeyCredentialParameters.alg specification>
+getAlg :: (MonadDOM m) => PublicKeyCredentialParameters -> m Int
+getAlg self = liftDOM ((js_getAlg (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRequestOptions.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRequestOptions
+       (js_newPublicKeyCredentialRequestOptions, js_setChallenge, js_getChallenge, js_setTimeout, js_getTimeout, js_setRpId, js_getRpId, js_setAllowCredentials, js_getAllowCredentials, js_setUserVerification, js_getUserVerification, js_setHints, js_getHints, js_setExtensions, js_getExtensions, newPublicKeyCredentialRequestOptions, setChallenge, getChallenge, setTimeout, getTimeout, getTimeoutUnsafe, getTimeoutUnchecked, setRpId, getRpId, getRpIdUnsafe, getRpIdUnchecked, setAllowCredentials, getAllowCredentials, getAllowCredentialsUnsafe, getAllowCredentialsUnchecked, setUserVerification, getUserVerification, getUserVerificationUnsafe, getUserVerificationUnchecked, setHints, getHints, getHintsUnsafe, getHintsUnchecked, setExtensions, getExtensions, getExtensionsUnsafe, getExtensionsUnchecked, PublicKeyCredentialRequestOptions(..), gTypePublicKeyCredentialRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"challenge\": $1}); })"
+        js_newPublicKeyCredentialRequestOptions :: BufferSource -> IO PublicKeyCredentialRequestOptions
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptions PublicKeyCredentialRequestOptions specification>
+newPublicKeyCredentialRequestOptions :: (MonadDOM m, IsBufferSource challenge) => challenge -> m PublicKeyCredentialRequestOptions
+newPublicKeyCredentialRequestOptions challenge = liftDOM ((js_newPublicKeyCredentialRequestOptions (Types.toBufferSource challenge)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"challenge\"] = $2; })"
+        js_setChallenge :: PublicKeyCredentialRequestOptions -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-challenge PublicKeyCredentialRequestOptions.challenge specification>
+setChallenge :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialRequestOptions -> val -> m ()
+setChallenge self val = liftDOM (void ((js_setChallenge (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"challenge\"]; })"
+        js_getChallenge :: PublicKeyCredentialRequestOptions -> IO BufferSource
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-challenge PublicKeyCredentialRequestOptions.challenge specification>
+getChallenge :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m BufferSource
+getChallenge self = liftDOM ((js_getChallenge (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
+        js_setTimeout :: PublicKeyCredentialRequestOptions -> Word -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-timeout PublicKeyCredentialRequestOptions.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> Word -> m ()
+setTimeout self val = liftDOM (void ((js_setTimeout (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })"
+        js_getTimeout :: PublicKeyCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-timeout PublicKeyCredentialRequestOptions.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((js_getTimeout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-timeout PublicKeyCredentialRequestOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((js_getTimeout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-timeout PublicKeyCredentialRequestOptions.timeout specification>
+getTimeoutUnchecked :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m Word
+getTimeoutUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeout (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rpId\"] = $2; })"
+        js_setRpId :: PublicKeyCredentialRequestOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-rpid PublicKeyCredentialRequestOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptions -> val -> m ()
+setRpId self val = liftDOM (void ((js_setRpId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rpId\"]; })"
+        js_getRpId :: PublicKeyCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-rpid PublicKeyCredentialRequestOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m (Maybe result)
+getRpId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRpId (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-rpid PublicKeyCredentialRequestOptions.rpId specification>
+getRpIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptions -> m result
+getRpIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRpId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-rpid PublicKeyCredentialRequestOptions.rpId specification>
+getRpIdUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m result
+getRpIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getRpId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"allowCredentials\"] = $2; })"
+        js_setAllowCredentials :: PublicKeyCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-allowcredentials PublicKeyCredentialRequestOptions.allowCredentials specification>
+setAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> [PublicKeyCredentialDescriptor] -> m ()
+setAllowCredentials self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAllowCredentials (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"allowCredentials\"]; })"
+        js_getAllowCredentials :: PublicKeyCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-allowcredentials PublicKeyCredentialRequestOptions.allowCredentials specification>
+getAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m (Maybe [PublicKeyCredentialDescriptor])
+getAllowCredentials self = liftDOM (((js_getAllowCredentials (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-allowcredentials PublicKeyCredentialRequestOptions.allowCredentials specification>
+getAllowCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptions -> m [PublicKeyCredentialDescriptor]
+getAllowCredentialsUnsafe self = liftDOM ((((js_getAllowCredentials (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-allowcredentials PublicKeyCredentialRequestOptions.allowCredentials specification>
+getAllowCredentialsUnchecked :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m [PublicKeyCredentialDescriptor]
+getAllowCredentialsUnchecked self = liftDOM (((js_getAllowCredentials (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"userVerification\"] = $2; })"
+        js_setUserVerification :: PublicKeyCredentialRequestOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification PublicKeyCredentialRequestOptions.userVerification specification>
+setUserVerification :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptions -> val -> m ()
+setUserVerification self val = liftDOM (void ((js_setUserVerification (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userVerification\"]; })"
+        js_getUserVerification :: PublicKeyCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification PublicKeyCredentialRequestOptions.userVerification specification>
+getUserVerification :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m (Maybe result)
+getUserVerification self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUserVerification (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification PublicKeyCredentialRequestOptions.userVerification specification>
+getUserVerificationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptions -> m result
+getUserVerificationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUserVerification (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification PublicKeyCredentialRequestOptions.userVerification specification>
+getUserVerificationUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m result
+getUserVerificationUnchecked self = liftDOM ((pFromJSVal <$> (js_getUserVerification (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hints\"] = $2; })"
+        js_setHints :: PublicKeyCredentialRequestOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-hints PublicKeyCredentialRequestOptions.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptions -> [val] -> m ()
+setHints self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHints (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hints\"]; })"
+        js_getHints :: PublicKeyCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-hints PublicKeyCredentialRequestOptions.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m (Maybe [result])
+getHints self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-hints PublicKeyCredentialRequestOptions.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptions -> m [result]
+getHintsUnsafe self = liftDOM ((((js_getHints (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-hints PublicKeyCredentialRequestOptions.hints specification>
+getHintsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m [result]
+getHintsUnchecked self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"extensions\"] = $2; })"
+        js_setExtensions :: PublicKeyCredentialRequestOptions -> AuthenticationExtensionsClientInputs -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-extensions PublicKeyCredentialRequestOptions.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> AuthenticationExtensionsClientInputs -> m ()
+setExtensions self val = liftDOM (void ((js_setExtensions (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"extensions\"]; })"
+        js_getExtensions :: PublicKeyCredentialRequestOptions -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-extensions PublicKeyCredentialRequestOptions.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m (Maybe AuthenticationExtensionsClientInputs)
+getExtensions self = liftDOM (((js_getExtensions (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-extensions PublicKeyCredentialRequestOptions.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptions -> m AuthenticationExtensionsClientInputs
+getExtensionsUnsafe self = liftDOM ((((js_getExtensions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-extensions PublicKeyCredentialRequestOptions.extensions specification>
+getExtensionsUnchecked :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m AuthenticationExtensionsClientInputs
+getExtensionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getExtensions (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRequestOptionsJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRequestOptionsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRequestOptionsJSON.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRequestOptionsJSON
+       (js_newPublicKeyCredentialRequestOptionsJSON, js_setChallenge, js_getChallenge, js_setTimeout, js_getTimeout, js_setRpId, js_getRpId, js_setAllowCredentials, js_getAllowCredentials, js_setUserVerification, js_getUserVerification, js_setHints, js_getHints, js_setExtensions, js_getExtensions, newPublicKeyCredentialRequestOptionsJSON, setChallenge, getChallenge, setTimeout, getTimeout, getTimeoutUnsafe, getTimeoutUnchecked, setRpId, getRpId, getRpIdUnsafe, getRpIdUnchecked, setAllowCredentials, getAllowCredentials, getAllowCredentialsUnsafe, getAllowCredentialsUnchecked, setUserVerification, getUserVerification, getUserVerificationUnsafe, getUserVerificationUnchecked, setHints, getHints, getHintsUnsafe, getHintsUnchecked, setExtensions, getExtensions, getExtensionsUnsafe, getExtensionsUnchecked, PublicKeyCredentialRequestOptionsJSON(..), gTypePublicKeyCredentialRequestOptionsJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"challenge\": $1}); })"
+        js_newPublicKeyCredentialRequestOptionsJSON :: JSString -> IO PublicKeyCredentialRequestOptionsJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson PublicKeyCredentialRequestOptionsJSON specification>
+newPublicKeyCredentialRequestOptionsJSON :: (MonadDOM m, ToJSString challenge) => challenge -> m PublicKeyCredentialRequestOptionsJSON
+newPublicKeyCredentialRequestOptionsJSON challenge = liftDOM ((js_newPublicKeyCredentialRequestOptionsJSON (toJSString challenge)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"challenge\"] = $2; })"
+        js_setChallenge :: PublicKeyCredentialRequestOptionsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-challenge PublicKeyCredentialRequestOptionsJSON.challenge specification>
+setChallenge :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> val -> m ()
+setChallenge self val = liftDOM (void ((js_setChallenge (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"challenge\"]; })"
+        js_getChallenge :: PublicKeyCredentialRequestOptionsJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-challenge PublicKeyCredentialRequestOptionsJSON.challenge specification>
+getChallenge :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getChallenge self = liftDOM ((fromJSString <$> (js_getChallenge (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
+        js_setTimeout :: PublicKeyCredentialRequestOptionsJSON -> Word -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-timeout PublicKeyCredentialRequestOptionsJSON.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> Word -> m ()
+setTimeout self val = liftDOM (void ((js_setTimeout (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })"
+        js_getTimeout :: PublicKeyCredentialRequestOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-timeout PublicKeyCredentialRequestOptionsJSON.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe Word)
+getTimeout self = liftDOM (((js_getTimeout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-timeout PublicKeyCredentialRequestOptionsJSON.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptionsJSON -> m Word
+getTimeoutUnsafe self = liftDOM ((((js_getTimeout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-timeout PublicKeyCredentialRequestOptionsJSON.timeout specification>
+getTimeoutUnchecked :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m Word
+getTimeoutUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimeout (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rpId\"] = $2; })"
+        js_setRpId :: PublicKeyCredentialRequestOptionsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-rpid PublicKeyCredentialRequestOptionsJSON.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> val -> m ()
+setRpId self val = liftDOM (void ((js_setRpId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rpId\"]; })"
+        js_getRpId :: PublicKeyCredentialRequestOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-rpid PublicKeyCredentialRequestOptionsJSON.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe result)
+getRpId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRpId (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-rpid PublicKeyCredentialRequestOptionsJSON.rpId specification>
+getRpIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getRpIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRpId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-rpid PublicKeyCredentialRequestOptionsJSON.rpId specification>
+getRpIdUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getRpIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getRpId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"allowCredentials\"] = $2; })"
+        js_setAllowCredentials :: PublicKeyCredentialRequestOptionsJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-allowcredentials PublicKeyCredentialRequestOptionsJSON.allowCredentials specification>
+setAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> [PublicKeyCredentialDescriptorJSON] -> m ()
+setAllowCredentials self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAllowCredentials (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"allowCredentials\"]; })"
+        js_getAllowCredentials :: PublicKeyCredentialRequestOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-allowcredentials PublicKeyCredentialRequestOptionsJSON.allowCredentials specification>
+getAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe [PublicKeyCredentialDescriptorJSON])
+getAllowCredentials self = liftDOM (((js_getAllowCredentials (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-allowcredentials PublicKeyCredentialRequestOptionsJSON.allowCredentials specification>
+getAllowCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptionsJSON -> m [PublicKeyCredentialDescriptorJSON]
+getAllowCredentialsUnsafe self = liftDOM ((((js_getAllowCredentials (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-allowcredentials PublicKeyCredentialRequestOptionsJSON.allowCredentials specification>
+getAllowCredentialsUnchecked :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m [PublicKeyCredentialDescriptorJSON]
+getAllowCredentialsUnchecked self = liftDOM (((js_getAllowCredentials (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"userVerification\"] = $2; })"
+        js_setUserVerification :: PublicKeyCredentialRequestOptionsJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-userverification PublicKeyCredentialRequestOptionsJSON.userVerification specification>
+setUserVerification :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> val -> m ()
+setUserVerification self val = liftDOM (void ((js_setUserVerification (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userVerification\"]; })"
+        js_getUserVerification :: PublicKeyCredentialRequestOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-userverification PublicKeyCredentialRequestOptionsJSON.userVerification specification>
+getUserVerification :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe result)
+getUserVerification self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUserVerification (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-userverification PublicKeyCredentialRequestOptionsJSON.userVerification specification>
+getUserVerificationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getUserVerificationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUserVerification (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-userverification PublicKeyCredentialRequestOptionsJSON.userVerification specification>
+getUserVerificationUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getUserVerificationUnchecked self = liftDOM ((pFromJSVal <$> (js_getUserVerification (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hints\"] = $2; })"
+        js_setHints :: PublicKeyCredentialRequestOptionsJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-hints PublicKeyCredentialRequestOptionsJSON.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> [val] -> m ()
+setHints self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHints (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hints\"]; })"
+        js_getHints :: PublicKeyCredentialRequestOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-hints PublicKeyCredentialRequestOptionsJSON.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe [result])
+getHints self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-hints PublicKeyCredentialRequestOptionsJSON.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m [result]
+getHintsUnsafe self = liftDOM ((((js_getHints (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-hints PublicKeyCredentialRequestOptionsJSON.hints specification>
+getHintsUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m [result]
+getHintsUnchecked self = liftDOM (((js_getHints (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"extensions\"] = $2; })"
+        js_setExtensions :: PublicKeyCredentialRequestOptionsJSON -> AuthenticationExtensionsClientInputsJSON -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-extensions PublicKeyCredentialRequestOptionsJSON.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> AuthenticationExtensionsClientInputsJSON -> m ()
+setExtensions self val = liftDOM (void ((js_setExtensions (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"extensions\"]; })"
+        js_getExtensions :: PublicKeyCredentialRequestOptionsJSON -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-extensions PublicKeyCredentialRequestOptionsJSON.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe AuthenticationExtensionsClientInputsJSON)
+getExtensions self = liftDOM (((js_getExtensions (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-extensions PublicKeyCredentialRequestOptionsJSON.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptionsJSON -> m AuthenticationExtensionsClientInputsJSON
+getExtensionsUnsafe self = liftDOM ((((js_getExtensions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-extensions PublicKeyCredentialRequestOptionsJSON.extensions specification>
+getExtensionsUnchecked :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m AuthenticationExtensionsClientInputsJSON
+getExtensionsUnchecked self = liftDOM ((pFromJSVal <$> (js_getExtensions (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRpEntity.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRpEntity.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialRpEntity.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialRpEntity
+       (js_newPublicKeyCredentialRpEntity, js_setId, js_getId, newPublicKeyCredentialRpEntity, setId, getId, getIdUnsafe, getIdUnchecked, PublicKeyCredentialRpEntity(..), gTypePublicKeyCredentialRpEntity)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"name\": $1}); })"
+        js_newPublicKeyCredentialRpEntity :: JSString -> IO PublicKeyCredentialRpEntity
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialrpentity PublicKeyCredentialRpEntity specification>
+newPublicKeyCredentialRpEntity :: (MonadDOM m, ToJSString name) => name -> m PublicKeyCredentialRpEntity
+newPublicKeyCredentialRpEntity name = liftDOM ((js_newPublicKeyCredentialRpEntity (toJSString name)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: PublicKeyCredentialRpEntity -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrpentity-id PublicKeyCredentialRpEntity.id specification>
+setId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRpEntity -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PublicKeyCredentialRpEntity -> IO JSVal
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrpentity-id PublicKeyCredentialRpEntity.id specification>
+getId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRpEntity -> m (Maybe result)
+getId self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getId (self))))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrpentity-id PublicKeyCredentialRpEntity.id specification>
+getIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRpEntity -> m result
+getIdUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getId (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrpentity-id PublicKeyCredentialRpEntity.id specification>
+getIdUnchecked :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRpEntity -> m result
+getIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getId (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialUserEntity.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialUserEntity.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialUserEntity.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialUserEntity
+       (js_newPublicKeyCredentialUserEntity, js_setId, js_getId, js_setDisplayName, js_getDisplayName, newPublicKeyCredentialUserEntity, setId, getId, setDisplayName, getDisplayName, PublicKeyCredentialUserEntity(..), gTypePublicKeyCredentialUserEntity)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"name\": $1, \"id\": $2, \"displayName\": $3}); })"
+        js_newPublicKeyCredentialUserEntity :: JSString -> BufferSource -> JSString -> IO PublicKeyCredentialUserEntity
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialuserentity PublicKeyCredentialUserEntity specification>
+newPublicKeyCredentialUserEntity :: (MonadDOM m, ToJSString name, IsBufferSource id, ToJSString displayName) => name -> id -> displayName -> m PublicKeyCredentialUserEntity
+newPublicKeyCredentialUserEntity name id displayName = liftDOM ((js_newPublicKeyCredentialUserEntity (toJSString name) (Types.toBufferSource id) (toJSString displayName)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: PublicKeyCredentialUserEntity -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-id PublicKeyCredentialUserEntity.id specification>
+setId :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialUserEntity -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PublicKeyCredentialUserEntity -> IO BufferSource
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-id PublicKeyCredentialUserEntity.id specification>
+getId :: (MonadDOM m) => PublicKeyCredentialUserEntity -> m BufferSource
+getId self = liftDOM ((js_getId (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayName\"] = $2; })"
+        js_setDisplayName :: PublicKeyCredentialUserEntity -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-displayname PublicKeyCredentialUserEntity.displayName specification>
+setDisplayName :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntity -> val -> m ()
+setDisplayName self val = liftDOM (void ((js_setDisplayName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayName\"]; })"
+        js_getDisplayName :: PublicKeyCredentialUserEntity -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-displayname PublicKeyCredentialUserEntity.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntity -> m result
+getDisplayName self = liftDOM ((fromJSString <$> (js_getDisplayName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialUserEntityJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialUserEntityJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PublicKeyCredentialUserEntityJSON.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PublicKeyCredentialUserEntityJSON
+       (js_newPublicKeyCredentialUserEntityJSON, js_setId, js_getId, js_setName, js_getName, js_setDisplayName, js_getDisplayName, newPublicKeyCredentialUserEntityJSON, setId, getId, setName, getName, setDisplayName, getDisplayName, PublicKeyCredentialUserEntityJSON(..), gTypePublicKeyCredentialUserEntityJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"id\": $1, \"name\": $2, \"displayName\": $3}); })"
+        js_newPublicKeyCredentialUserEntityJSON :: JSString -> JSString -> JSString -> IO PublicKeyCredentialUserEntityJSON
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialuserentityjson PublicKeyCredentialUserEntityJSON specification>
+newPublicKeyCredentialUserEntityJSON :: (MonadDOM m, ToJSString id, ToJSString name, ToJSString displayName) => id -> name -> displayName -> m PublicKeyCredentialUserEntityJSON
+newPublicKeyCredentialUserEntityJSON id name displayName = liftDOM ((js_newPublicKeyCredentialUserEntityJSON (toJSString id) (toJSString name) (toJSString displayName)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: PublicKeyCredentialUserEntityJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-id PublicKeyCredentialUserEntityJSON.id specification>
+setId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntityJSON -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: PublicKeyCredentialUserEntityJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-id PublicKeyCredentialUserEntityJSON.id specification>
+getId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntityJSON -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: PublicKeyCredentialUserEntityJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-name PublicKeyCredentialUserEntityJSON.name specification>
+setName :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntityJSON -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: PublicKeyCredentialUserEntityJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-name PublicKeyCredentialUserEntityJSON.name specification>
+getName :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntityJSON -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayName\"] = $2; })"
+        js_setDisplayName :: PublicKeyCredentialUserEntityJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-displayname PublicKeyCredentialUserEntityJSON.displayName specification>
+setDisplayName :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntityJSON -> val -> m ()
+setDisplayName self val = liftDOM (void ((js_setDisplayName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayName\"]; })"
+        js_getDisplayName :: PublicKeyCredentialUserEntityJSON -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-displayname PublicKeyCredentialUserEntityJSON.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntityJSON -> m result
+getDisplayName self = liftDOM ((fromJSString <$> (js_getDisplayName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PushEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushEvent.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushEvent
+       (js_newPushEvent, js_getData, newPushEvent, getData, getDataUnsafe, getDataUnchecked, PushEvent(..), gTypePushEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PushEvent\"]($1, $2); })"
+        js_newPushEvent :: JSString -> JSVal -> IO PushEvent
+-- | <https://developer.mozilla.org/docs/Web/API/PushEvent/PushEvent MDN PushEvent. documentation>
+newPushEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PushEventInit -> m PushEvent
+newPushEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPushEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: PushEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PushEvent/data MDN PushEvent.data documentation>
+getData :: (MonadDOM m) => PushEvent -> m (Maybe PushMessageData)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushEvent/data MDN PushEvent.data documentation>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PushEvent -> m PushMessageData
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushEvent/data MDN PushEvent.data documentation>
+getDataUnchecked :: (MonadDOM m) => PushEvent -> m PushMessageData
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PushEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushEventInit
+       (js_newPushEventInit, js_setData, js_getData, js_setNotification, js_getNotification, newPushEventInit, setData, getData, getDataUnsafe, getDataUnchecked, setNotification, getNotification, getNotificationUnsafe, getNotificationUnchecked, PushEventInit(..), gTypePushEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPushEventInit :: IO PushEventInit
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit PushEventInit specification>
+newPushEventInit :: (MonadDOM m) => m PushEventInit
+newPushEventInit = liftDOM ((js_newPushEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: PushEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-data PushEventInit.data specification>
+setData :: (MonadDOM m, IsPushMessageDataInit val) => PushEventInit -> Maybe val -> m ()
+setData self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setData (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: PushEventInit -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-data PushEventInit.data specification>
+getData :: (MonadDOM m) => PushEventInit -> m (Maybe PushMessageDataInit)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-data PushEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PushEventInit -> m PushMessageDataInit
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-data PushEventInit.data specification>
+getDataUnchecked :: (MonadDOM m) => PushEventInit -> m PushMessageDataInit
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"notification\"] = $2; })"
+        js_setNotification :: PushEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-notification PushEventInit.notification specification>
+setNotification :: (MonadDOM m) => PushEventInit -> Maybe Notification -> m ()
+setNotification self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setNotification (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"notification\"]; })"
+        js_getNotification :: PushEventInit -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-notification PushEventInit.notification specification>
+getNotification :: (MonadDOM m) => PushEventInit -> m (Maybe Notification)
+getNotification self = liftDOM (((js_getNotification (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-notification PushEventInit.notification specification>
+getNotificationUnsafe :: (MonadDOM m, HasCallStack) => PushEventInit -> m Notification
+getNotificationUnsafe self = liftDOM ((((js_getNotification (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-notification PushEventInit.notification specification>
+getNotificationUnchecked :: (MonadDOM m) => PushEventInit -> m Notification
+getNotificationUnchecked self = liftDOM ((pFromJSVal <$> (js_getNotification (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushManager.hs b/src/GHCJS/DOM/JSFFI/Generated/PushManager.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushManager.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushManager
+       (js_getSubscription, js_permissionState, js_subscribe, js_getSupportedContentEncodingsStatic, getSubscription, getSubscription_, getSubscriptionUnsafe, getSubscriptionUnchecked, permissionState, permissionState_, subscribe, subscribe_, getSupportedContentEncodingsStatic, PushManager(..), gTypePushManager)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getSubscription\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getSubscription :: PushManager -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/getSubscription MDN PushManager.getSubscription documentation>
+getSubscription :: (MonadDOM m) => PushManager -> m (Maybe PushSubscription)
+getSubscription self = liftDOM ((((js_getSubscription (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/getSubscription MDN PushManager.getSubscription documentation>
+getSubscription_ :: (MonadDOM m) => PushManager -> m ()
+getSubscription_ self = liftDOM (void (((js_getSubscription (self)) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/getSubscription MDN PushManager.getSubscription documentation>
+getSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushManager -> m PushSubscription
+getSubscriptionUnsafe self = liftDOM (((((js_getSubscription (self)) >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/getSubscription MDN PushManager.getSubscription documentation>
+getSubscriptionUnchecked :: (MonadDOM m) => PushManager -> m PushSubscription
+getSubscriptionUnchecked self = liftDOM ((pFromJSVal <$> ((js_getSubscription (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"permissionState\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_permissionState :: PushManager -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/permissionState MDN PushManager.permissionState documentation>
+permissionState :: (MonadDOM m) => PushManager -> Maybe PushSubscriptionOptionsInit -> m PermissionState
+permissionState self options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_permissionState (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/permissionState MDN PushManager.permissionState documentation>
+permissionState_ :: (MonadDOM m) => PushManager -> Maybe PushSubscriptionOptionsInit -> m ()
+permissionState_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_permissionState (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"subscribe\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_subscribe :: PushManager -> JSVal -> IO (JSVal, PushSubscription)
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/subscribe MDN PushManager.subscribe documentation>
+subscribe :: (MonadDOM m) => PushManager -> Maybe PushSubscriptionOptionsInit -> m PushSubscription
+subscribe self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_subscribe (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/subscribe MDN PushManager.subscribe documentation>
+subscribe_ :: (MonadDOM m) => PushManager -> Maybe PushSubscriptionOptionsInit -> m ()
+subscribe_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_subscribe (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(() => { return globalThis[\"PushManager\"][\"supportedContentEncodings\"]; })"
+        js_getSupportedContentEncodingsStatic :: IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/supportedContentEncodings_static MDN PushManager.supportedContentEncodings documentation>
+getSupportedContentEncodingsStatic :: (MonadDOM m, FromJSString result) => m [result]
+getSupportedContentEncodingsStatic = liftDOM (((js_getSupportedContentEncodingsStatic) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushManagerAttribute.hs b/src/GHCJS/DOM/JSFFI/Generated/PushManagerAttribute.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushManagerAttribute.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushManagerAttribute
+       (js_getPushManager, getPushManager, PushManagerAttribute(..), gTypePushManagerAttribute, IsPushManagerAttribute, toPushManagerAttribute)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"pushManager\"]; })"
+        js_getPushManager :: PushManagerAttribute -> IO PushManager
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/pushManager MDN PushManagerAttribute.pushManager documentation>
+getPushManager :: (MonadDOM m, IsPushManagerAttribute self) => self -> m PushManager
+getPushManager self = liftDOM ((js_getPushManager ((Types.toPushManagerAttribute self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushMessageData.hs b/src/GHCJS/DOM/JSFFI/Generated/PushMessageData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushMessageData.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushMessageData
+       (js_arrayBuffer, js_blob, js_bytes, js_json, js_text, arrayBuffer, arrayBuffer_, blob, blob_, bytes, bytes_, json, json_, text, text_, PushMessageData(..), gTypePushMessageData)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"arrayBuffer\"](); })"
+        js_arrayBuffer :: PushMessageData -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/arrayBuffer MDN PushMessageData.arrayBuffer documentation>
+arrayBuffer :: (MonadDOM m) => PushMessageData -> m ArrayBuffer
+arrayBuffer self = liftDOM ((js_arrayBuffer (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/arrayBuffer MDN PushMessageData.arrayBuffer documentation>
+arrayBuffer_ :: (MonadDOM m) => PushMessageData -> m ()
+arrayBuffer_ self = liftDOM (void ((js_arrayBuffer (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"blob\"](); })"
+        js_blob :: PushMessageData -> IO Blob
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/blob MDN PushMessageData.blob documentation>
+blob :: (MonadDOM m) => PushMessageData -> m Blob
+blob self = liftDOM ((js_blob (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/blob MDN PushMessageData.blob documentation>
+blob_ :: (MonadDOM m) => PushMessageData -> m ()
+blob_ self = liftDOM (void ((js_blob (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"bytes\"](); })"
+        js_bytes :: PushMessageData -> IO Uint8Array
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/bytes MDN PushMessageData.bytes documentation>
+bytes :: (MonadDOM m) => PushMessageData -> m Uint8Array
+bytes self = liftDOM ((js_bytes (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/bytes MDN PushMessageData.bytes documentation>
+bytes_ :: (MonadDOM m) => PushMessageData -> m ()
+bytes_ self = liftDOM (void ((js_bytes (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"json\"](); })"
+        js_json :: PushMessageData -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/json MDN PushMessageData.json documentation>
+json :: (MonadDOM m) => PushMessageData -> m JSVal
+json self = liftDOM ((js_json (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/json MDN PushMessageData.json documentation>
+json_ :: (MonadDOM m) => PushMessageData -> m ()
+json_ self = liftDOM (void ((js_json (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"text\"](); })"
+        js_text :: PushMessageData -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/text MDN PushMessageData.text documentation>
+text :: (MonadDOM m, FromJSString result) => PushMessageData -> m result
+text self = liftDOM ((fromJSString <$> (js_text (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/text MDN PushMessageData.text documentation>
+text_ :: (MonadDOM m) => PushMessageData -> m ()
+text_ self = liftDOM (void ((js_text (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushSubscription.hs b/src/GHCJS/DOM/JSFFI/Generated/PushSubscription.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushSubscription.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushSubscription
+       (js_getKey, js_toJSON, js_unsubscribe, js_getEndpoint, js_getExpirationTime, js_getOptions, getKey, getKey_, getKeyUnsafe, getKeyUnchecked, toJSON, toJSON_, unsubscribe, unsubscribe_, getEndpoint, getExpirationTime, getExpirationTimeUnsafe, getExpirationTimeUnchecked, getOptions, PushSubscription(..), gTypePushSubscription)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })"
+        js_getKey :: PushSubscription -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/getKey MDN PushSubscription.getKey documentation>
+getKey :: (MonadDOM m) => PushSubscription -> PushEncryptionKeyName -> m (Maybe ArrayBuffer)
+getKey self name = liftDOM ((((toJSVal name) >>= \a2' -> js_getKey (self) a2') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/getKey MDN PushSubscription.getKey documentation>
+getKey_ :: (MonadDOM m) => PushSubscription -> PushEncryptionKeyName -> m ()
+getKey_ self name = liftDOM (void (((toJSVal name) >>= \a2' -> js_getKey (self) a2')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/getKey MDN PushSubscription.getKey documentation>
+getKeyUnsafe :: (MonadDOM m, HasCallStack) => PushSubscription -> PushEncryptionKeyName -> m ArrayBuffer
+getKeyUnsafe self name = liftDOM (((((toJSVal name) >>= \a2' -> js_getKey (self) a2') >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/getKey MDN PushSubscription.getKey documentation>
+getKeyUnchecked :: (MonadDOM m) => PushSubscription -> PushEncryptionKeyName -> m ArrayBuffer
+getKeyUnchecked self name = liftDOM ((pFromJSVal <$> ((toJSVal name) >>= \a2' -> js_getKey (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: PushSubscription -> IO PushSubscriptionJSON
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/toJSON MDN PushSubscription.toJSON documentation>
+toJSON :: (MonadDOM m) => PushSubscription -> m PushSubscriptionJSON
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/toJSON MDN PushSubscription.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PushSubscription -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"unsubscribe\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_unsubscribe :: PushSubscription -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/unsubscribe MDN PushSubscription.unsubscribe documentation>
+unsubscribe :: (MonadDOM m) => PushSubscription -> m Bool
+unsubscribe self = liftDOM (((js_unsubscribe (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/unsubscribe MDN PushSubscription.unsubscribe documentation>
+unsubscribe_ :: (MonadDOM m) => PushSubscription -> m ()
+unsubscribe_ self = liftDOM (void (((js_unsubscribe (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endpoint\"]; })"
+        js_getEndpoint :: PushSubscription -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/endpoint MDN PushSubscription.endpoint documentation>
+getEndpoint :: (MonadDOM m, FromJSString result) => PushSubscription -> m result
+getEndpoint self = liftDOM ((fromJSString <$> (js_getEndpoint (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"expirationTime\"]; })"
+        js_getExpirationTime :: PushSubscription -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/expirationTime MDN PushSubscription.expirationTime documentation>
+getExpirationTime :: (MonadDOM m) => PushSubscription -> m (Maybe Word53)
+getExpirationTime self = liftDOM (((js_getExpirationTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/expirationTime MDN PushSubscription.expirationTime documentation>
+getExpirationTimeUnsafe :: (MonadDOM m, HasCallStack) => PushSubscription -> m Word53
+getExpirationTimeUnsafe self = liftDOM ((((js_getExpirationTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/expirationTime MDN PushSubscription.expirationTime documentation>
+getExpirationTimeUnchecked :: (MonadDOM m) => PushSubscription -> m Word53
+getExpirationTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExpirationTime (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })"
+        js_getOptions :: PushSubscription -> IO PushSubscriptionOptions
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/options MDN PushSubscription.options documentation>
+getOptions :: (MonadDOM m) => PushSubscription -> m PushSubscriptionOptions
+getOptions self = liftDOM ((js_getOptions (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionChangeEvent.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushSubscriptionChangeEvent
+       (js_newPushSubscriptionChangeEvent, js_getNewSubscription, js_getOldSubscription, newPushSubscriptionChangeEvent, getNewSubscription, getNewSubscriptionUnsafe, getNewSubscriptionUnchecked, getOldSubscription, getOldSubscriptionUnsafe, getOldSubscriptionUnchecked, PushSubscriptionChangeEvent(..), gTypePushSubscriptionChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"PushSubscriptionChangeEvent\"]($1, $2); })"
+        js_newPushSubscriptionChangeEvent :: JSString -> JSVal -> IO PushSubscriptionChangeEvent
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-constructor PushSubscriptionChangeEvent. specification>
+newPushSubscriptionChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe PushSubscriptionChangeEventInit -> m PushSubscriptionChangeEvent
+newPushSubscriptionChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newPushSubscriptionChangeEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"newSubscription\"]; })"
+        js_getNewSubscription :: PushSubscriptionChangeEvent -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-newsubscription PushSubscriptionChangeEvent.newSubscription specification>
+getNewSubscription :: (MonadDOM m) => PushSubscriptionChangeEvent -> m (Maybe PushSubscription)
+getNewSubscription self = liftDOM (((js_getNewSubscription (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-newsubscription PushSubscriptionChangeEvent.newSubscription specification>
+getNewSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEvent -> m PushSubscription
+getNewSubscriptionUnsafe self = liftDOM ((((js_getNewSubscription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-newsubscription PushSubscriptionChangeEvent.newSubscription specification>
+getNewSubscriptionUnchecked :: (MonadDOM m) => PushSubscriptionChangeEvent -> m PushSubscription
+getNewSubscriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewSubscription (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oldSubscription\"]; })"
+        js_getOldSubscription :: PushSubscriptionChangeEvent -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-oldsubscription PushSubscriptionChangeEvent.oldSubscription specification>
+getOldSubscription :: (MonadDOM m) => PushSubscriptionChangeEvent -> m (Maybe PushSubscription)
+getOldSubscription self = liftDOM (((js_getOldSubscription (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-oldsubscription PushSubscriptionChangeEvent.oldSubscription specification>
+getOldSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEvent -> m PushSubscription
+getOldSubscriptionUnsafe self = liftDOM ((((js_getOldSubscription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-oldsubscription PushSubscriptionChangeEvent.oldSubscription specification>
+getOldSubscriptionUnchecked :: (MonadDOM m) => PushSubscriptionChangeEvent -> m PushSubscription
+getOldSubscriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldSubscription (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionChangeEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushSubscriptionChangeEventInit
+       (js_newPushSubscriptionChangeEventInit, js_setNewSubscription, js_getNewSubscription, js_setOldSubscription, js_getOldSubscription, newPushSubscriptionChangeEventInit, setNewSubscription, getNewSubscription, getNewSubscriptionUnsafe, getNewSubscriptionUnchecked, setOldSubscription, getOldSubscription, getOldSubscriptionUnsafe, getOldSubscriptionUnchecked, PushSubscriptionChangeEventInit(..), gTypePushSubscriptionChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPushSubscriptionChangeEventInit :: IO PushSubscriptionChangeEventInit
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit PushSubscriptionChangeEventInit specification>
+newPushSubscriptionChangeEventInit :: (MonadDOM m) => m PushSubscriptionChangeEventInit
+newPushSubscriptionChangeEventInit = liftDOM ((js_newPushSubscriptionChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"newSubscription\"] = $2; })"
+        js_setNewSubscription :: PushSubscriptionChangeEventInit -> PushSubscription -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-newsubscription PushSubscriptionChangeEventInit.newSubscription specification>
+setNewSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> PushSubscription -> m ()
+setNewSubscription self val = liftDOM (void ((js_setNewSubscription (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"newSubscription\"]; })"
+        js_getNewSubscription :: PushSubscriptionChangeEventInit -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-newsubscription PushSubscriptionChangeEventInit.newSubscription specification>
+getNewSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> m (Maybe PushSubscription)
+getNewSubscription self = liftDOM (((js_getNewSubscription (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-newsubscription PushSubscriptionChangeEventInit.newSubscription specification>
+getNewSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEventInit -> m PushSubscription
+getNewSubscriptionUnsafe self = liftDOM ((((js_getNewSubscription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-newsubscription PushSubscriptionChangeEventInit.newSubscription specification>
+getNewSubscriptionUnchecked :: (MonadDOM m) => PushSubscriptionChangeEventInit -> m PushSubscription
+getNewSubscriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewSubscription (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oldSubscription\"] = $2; })"
+        js_setOldSubscription :: PushSubscriptionChangeEventInit -> PushSubscription -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-oldsubscription PushSubscriptionChangeEventInit.oldSubscription specification>
+setOldSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> PushSubscription -> m ()
+setOldSubscription self val = liftDOM (void ((js_setOldSubscription (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oldSubscription\"]; })"
+        js_getOldSubscription :: PushSubscriptionChangeEventInit -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-oldsubscription PushSubscriptionChangeEventInit.oldSubscription specification>
+getOldSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> m (Maybe PushSubscription)
+getOldSubscription self = liftDOM (((js_getOldSubscription (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-oldsubscription PushSubscriptionChangeEventInit.oldSubscription specification>
+getOldSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEventInit -> m PushSubscription
+getOldSubscriptionUnsafe self = liftDOM ((((js_getOldSubscription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-oldsubscription PushSubscriptionChangeEventInit.oldSubscription specification>
+getOldSubscriptionUnchecked :: (MonadDOM m) => PushSubscriptionChangeEventInit -> m PushSubscription
+getOldSubscriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldSubscription (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionJSON.hs b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionJSON.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushSubscriptionJSON
+       (js_newPushSubscriptionJSON, js_setEndpoint, js_getEndpoint, js_setExpirationTime, js_getExpirationTime, js_setKeys, js_getKeys, newPushSubscriptionJSON, setEndpoint, getEndpoint, getEndpointUnsafe, getEndpointUnchecked, setExpirationTime, getExpirationTime, getExpirationTimeUnsafe, getExpirationTimeUnchecked, setKeys, getKeys, getKeysUnsafe, getKeysUnchecked, PushSubscriptionJSON(..), gTypePushSubscriptionJSON)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPushSubscriptionJSON :: IO PushSubscriptionJSON
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson PushSubscriptionJSON specification>
+newPushSubscriptionJSON :: (MonadDOM m) => m PushSubscriptionJSON
+newPushSubscriptionJSON = liftDOM ((js_newPushSubscriptionJSON))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endpoint\"] = $2; })"
+        js_setEndpoint :: PushSubscriptionJSON -> JSString -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-endpoint PushSubscriptionJSON.endpoint specification>
+setEndpoint :: (MonadDOM m, ToJSString val) => PushSubscriptionJSON -> val -> m ()
+setEndpoint self val = liftDOM (void ((js_setEndpoint (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endpoint\"]; })"
+        js_getEndpoint :: PushSubscriptionJSON -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-endpoint PushSubscriptionJSON.endpoint specification>
+getEndpoint :: (MonadDOM m, FromJSString result) => PushSubscriptionJSON -> m (Maybe result)
+getEndpoint self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEndpoint (self))))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-endpoint PushSubscriptionJSON.endpoint specification>
+getEndpointUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PushSubscriptionJSON -> m result
+getEndpointUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEndpoint (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-endpoint PushSubscriptionJSON.endpoint specification>
+getEndpointUnchecked :: (MonadDOM m, FromJSString result) => PushSubscriptionJSON -> m result
+getEndpointUnchecked self = liftDOM ((pFromJSVal <$> (js_getEndpoint (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"expirationTime\"] = $2; })"
+        js_setExpirationTime :: PushSubscriptionJSON -> JSVal -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-expirationtime PushSubscriptionJSON.expirationTime specification>
+setExpirationTime :: (MonadDOM m) => PushSubscriptionJSON -> Maybe Word53 -> m ()
+setExpirationTime self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExpirationTime (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"expirationTime\"]; })"
+        js_getExpirationTime :: PushSubscriptionJSON -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-expirationtime PushSubscriptionJSON.expirationTime specification>
+getExpirationTime :: (MonadDOM m) => PushSubscriptionJSON -> m (Maybe Word53)
+getExpirationTime self = liftDOM (((js_getExpirationTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-expirationtime PushSubscriptionJSON.expirationTime specification>
+getExpirationTimeUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionJSON -> m Word53
+getExpirationTimeUnsafe self = liftDOM ((((js_getExpirationTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-expirationtime PushSubscriptionJSON.expirationTime specification>
+getExpirationTimeUnchecked :: (MonadDOM m) => PushSubscriptionJSON -> m Word53
+getExpirationTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExpirationTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keys\"] = $2; })"
+        js_setKeys :: PushSubscriptionJSON -> PushSubscriptionKeys -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-keys PushSubscriptionJSON.keys specification>
+setKeys :: (MonadDOM m) => PushSubscriptionJSON -> PushSubscriptionKeys -> m ()
+setKeys self val = liftDOM (void ((js_setKeys (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keys\"]; })"
+        js_getKeys :: PushSubscriptionJSON -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-keys PushSubscriptionJSON.keys specification>
+getKeys :: (MonadDOM m) => PushSubscriptionJSON -> m (Maybe PushSubscriptionKeys)
+getKeys self = liftDOM (((js_getKeys (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-keys PushSubscriptionJSON.keys specification>
+getKeysUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionJSON -> m PushSubscriptionKeys
+getKeysUnsafe self = liftDOM ((((js_getKeys (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-keys PushSubscriptionJSON.keys specification>
+getKeysUnchecked :: (MonadDOM m) => PushSubscriptionJSON -> m PushSubscriptionKeys
+getKeysUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeys (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionKeys.hs b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionKeys.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushSubscriptionKeys
+       (js_newPushSubscriptionKeys, js_setP256dh, js_getP256dh, js_setAuth, js_getAuth, newPushSubscriptionKeys, setP256dh, getP256dh, getP256dhUnsafe, getP256dhUnchecked, setAuth, getAuth, getAuthUnsafe, getAuthUnchecked, PushSubscriptionKeys(..), gTypePushSubscriptionKeys)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPushSubscriptionKeys :: IO PushSubscriptionKeys
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys PushSubscriptionKeys specification>
+newPushSubscriptionKeys :: (MonadDOM m) => m PushSubscriptionKeys
+newPushSubscriptionKeys = liftDOM ((js_newPushSubscriptionKeys))
+
+foreign import javascript safe "(($1, $2) => { $1[\"p256dh\"] = $2; })"
+        js_setP256dh :: PushSubscriptionKeys -> JSString -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-p256dh PushSubscriptionKeys.p256dh specification>
+setP256dh :: (MonadDOM m, ToJSString val) => PushSubscriptionKeys -> val -> m ()
+setP256dh self val = liftDOM (void ((js_setP256dh (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"p256dh\"]; })"
+        js_getP256dh :: PushSubscriptionKeys -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-p256dh PushSubscriptionKeys.p256dh specification>
+getP256dh :: (MonadDOM m, FromJSString result) => PushSubscriptionKeys -> m (Maybe result)
+getP256dh self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getP256dh (self))))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-p256dh PushSubscriptionKeys.p256dh specification>
+getP256dhUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PushSubscriptionKeys -> m result
+getP256dhUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getP256dh (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-p256dh PushSubscriptionKeys.p256dh specification>
+getP256dhUnchecked :: (MonadDOM m, FromJSString result) => PushSubscriptionKeys -> m result
+getP256dhUnchecked self = liftDOM ((pFromJSVal <$> (js_getP256dh (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"auth\"] = $2; })"
+        js_setAuth :: PushSubscriptionKeys -> JSString -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-auth PushSubscriptionKeys.auth specification>
+setAuth :: (MonadDOM m, ToJSString val) => PushSubscriptionKeys -> val -> m ()
+setAuth self val = liftDOM (void ((js_setAuth (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"auth\"]; })"
+        js_getAuth :: PushSubscriptionKeys -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-auth PushSubscriptionKeys.auth specification>
+getAuth :: (MonadDOM m, FromJSString result) => PushSubscriptionKeys -> m (Maybe result)
+getAuth self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAuth (self))))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-auth PushSubscriptionKeys.auth specification>
+getAuthUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PushSubscriptionKeys -> m result
+getAuthUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAuth (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-auth PushSubscriptionKeys.auth specification>
+getAuthUnchecked :: (MonadDOM m, FromJSString result) => PushSubscriptionKeys -> m result
+getAuthUnchecked self = liftDOM ((pFromJSVal <$> (js_getAuth (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionOptions.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushSubscriptionOptions
+       (js_getUserVisibleOnly, js_getApplicationServerKey, getUserVisibleOnly, getApplicationServerKey, getApplicationServerKeyUnsafe, getApplicationServerKeyUnchecked, PushSubscriptionOptions(..), gTypePushSubscriptionOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"userVisibleOnly\"]; })"
+        js_getUserVisibleOnly :: PushSubscriptionOptions -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscriptionOptions/userVisibleOnly MDN PushSubscriptionOptions.userVisibleOnly documentation>
+getUserVisibleOnly :: (MonadDOM m) => PushSubscriptionOptions -> m Bool
+getUserVisibleOnly self = liftDOM ((js_getUserVisibleOnly (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"applicationServerKey\"]; })"
+        js_getApplicationServerKey :: PushSubscriptionOptions -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscriptionOptions/applicationServerKey MDN PushSubscriptionOptions.applicationServerKey documentation>
+getApplicationServerKey :: (MonadDOM m) => PushSubscriptionOptions -> m (Maybe ArrayBuffer)
+getApplicationServerKey self = liftDOM (((js_getApplicationServerKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscriptionOptions/applicationServerKey MDN PushSubscriptionOptions.applicationServerKey documentation>
+getApplicationServerKeyUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionOptions -> m ArrayBuffer
+getApplicationServerKeyUnsafe self = liftDOM ((((js_getApplicationServerKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscriptionOptions/applicationServerKey MDN PushSubscriptionOptions.applicationServerKey documentation>
+getApplicationServerKeyUnchecked :: (MonadDOM m) => PushSubscriptionOptions -> m ArrayBuffer
+getApplicationServerKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getApplicationServerKey (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionOptionsInit.hs b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionOptionsInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PushSubscriptionOptionsInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.PushSubscriptionOptionsInit
+       (js_newPushSubscriptionOptionsInit, js_setUserVisibleOnly, js_getUserVisibleOnly, js_setApplicationServerKey, js_getApplicationServerKey, newPushSubscriptionOptionsInit, setUserVisibleOnly, getUserVisibleOnly, getUserVisibleOnlyUnsafe, getUserVisibleOnlyUnchecked, setApplicationServerKey, getApplicationServerKey, getApplicationServerKeyUnsafe, getApplicationServerKeyUnchecked, PushSubscriptionOptionsInit(..), gTypePushSubscriptionOptionsInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newPushSubscriptionOptionsInit :: IO PushSubscriptionOptionsInit
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit PushSubscriptionOptionsInit specification>
+newPushSubscriptionOptionsInit :: (MonadDOM m) => m PushSubscriptionOptionsInit
+newPushSubscriptionOptionsInit = liftDOM ((js_newPushSubscriptionOptionsInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"userVisibleOnly\"] = $2; })"
+        js_setUserVisibleOnly :: PushSubscriptionOptionsInit -> Bool -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-uservisibleonly PushSubscriptionOptionsInit.userVisibleOnly specification>
+setUserVisibleOnly :: (MonadDOM m) => PushSubscriptionOptionsInit -> Bool -> m ()
+setUserVisibleOnly self val = liftDOM (void ((js_setUserVisibleOnly (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"userVisibleOnly\"]; })"
+        js_getUserVisibleOnly :: PushSubscriptionOptionsInit -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-uservisibleonly PushSubscriptionOptionsInit.userVisibleOnly specification>
+getUserVisibleOnly :: (MonadDOM m) => PushSubscriptionOptionsInit -> m (Maybe Bool)
+getUserVisibleOnly self = liftDOM (((js_getUserVisibleOnly (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-uservisibleonly PushSubscriptionOptionsInit.userVisibleOnly specification>
+getUserVisibleOnlyUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionOptionsInit -> m Bool
+getUserVisibleOnlyUnsafe self = liftDOM ((((js_getUserVisibleOnly (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-uservisibleonly PushSubscriptionOptionsInit.userVisibleOnly specification>
+getUserVisibleOnlyUnchecked :: (MonadDOM m) => PushSubscriptionOptionsInit -> m Bool
+getUserVisibleOnlyUnchecked self = liftDOM ((pFromJSVal <$> (js_getUserVisibleOnly (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"applicationServerKey\"] = $2; })"
+        js_setApplicationServerKey :: PushSubscriptionOptionsInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-applicationserverkey PushSubscriptionOptionsInit.applicationServerKey specification>
+setApplicationServerKey :: (MonadDOM m, IsPushMessageDataInit val) => PushSubscriptionOptionsInit -> Maybe val -> m ()
+setApplicationServerKey self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setApplicationServerKey (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"applicationServerKey\"]; })"
+        js_getApplicationServerKey :: PushSubscriptionOptionsInit -> IO JSVal
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-applicationserverkey PushSubscriptionOptionsInit.applicationServerKey specification>
+getApplicationServerKey :: (MonadDOM m) => PushSubscriptionOptionsInit -> m (Maybe PushMessageDataInit)
+getApplicationServerKey self = liftDOM (((js_getApplicationServerKey (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-applicationserverkey PushSubscriptionOptionsInit.applicationServerKey specification>
+getApplicationServerKeyUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionOptionsInit -> m PushMessageDataInit
+getApplicationServerKeyUnsafe self = liftDOM ((((js_getApplicationServerKey (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-applicationserverkey PushSubscriptionOptionsInit.applicationServerKey specification>
+getApplicationServerKeyUnchecked :: (MonadDOM m) => PushSubscriptionOptionsInit -> m PushMessageDataInit
+getApplicationServerKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getApplicationServerKey (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategy.hs b/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategy.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategy.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.QueuingStrategy
+       (js_newQueuingStrategy, js_setHighWaterMark, js_getHighWaterMark, js_setSize, newQueuingStrategy, setHighWaterMark, getHighWaterMark, getHighWaterMarkUnsafe, getHighWaterMarkUnchecked, setSize, QueuingStrategy(..), gTypeQueuingStrategy)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newQueuingStrategy :: IO QueuingStrategy
+-- | <https://streams.spec.whatwg.org/#dictdef-queuingstrategy QueuingStrategy specification>
+newQueuingStrategy :: (MonadDOM m) => m QueuingStrategy
+newQueuingStrategy = liftDOM ((js_newQueuingStrategy))
+
+foreign import javascript safe "(($1, $2) => { $1[\"highWaterMark\"] = $2; })"
+        js_setHighWaterMark :: QueuingStrategy -> Double -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-highwatermark QueuingStrategy.highWaterMark specification>
+setHighWaterMark :: (MonadDOM m) => QueuingStrategy -> Double -> m ()
+setHighWaterMark self val = liftDOM (void ((js_setHighWaterMark (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"highWaterMark\"]; })"
+        js_getHighWaterMark :: QueuingStrategy -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-highwatermark QueuingStrategy.highWaterMark specification>
+getHighWaterMark :: (MonadDOM m) => QueuingStrategy -> m (Maybe Double)
+getHighWaterMark self = liftDOM (((js_getHighWaterMark (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-highwatermark QueuingStrategy.highWaterMark specification>
+getHighWaterMarkUnsafe :: (MonadDOM m, HasCallStack) => QueuingStrategy -> m Double
+getHighWaterMarkUnsafe self = liftDOM ((((js_getHighWaterMark (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-highwatermark QueuingStrategy.highWaterMark specification>
+getHighWaterMarkUnchecked :: (MonadDOM m) => QueuingStrategy -> m Double
+getHighWaterMarkUnchecked self = liftDOM ((pFromJSVal <$> (js_getHighWaterMark (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: QueuingStrategy -> JSVal -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-size QueuingStrategy.size specification>
+setSize :: (MonadDOM m) => QueuingStrategy -> QueuingStrategySize -> m ()
+setSize self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSize (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategyInit.hs b/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategyInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategyInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.QueuingStrategyInit
+       (js_newQueuingStrategyInit, js_setHighWaterMark, js_getHighWaterMark, newQueuingStrategyInit, setHighWaterMark, getHighWaterMark, QueuingStrategyInit(..), gTypeQueuingStrategyInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"highWaterMark\": $1}); })"
+        js_newQueuingStrategyInit :: Double -> IO QueuingStrategyInit
+-- | <https://streams.spec.whatwg.org/#dictdef-queuingstrategyinit QueuingStrategyInit specification>
+newQueuingStrategyInit :: (MonadDOM m) => Double -> m QueuingStrategyInit
+newQueuingStrategyInit highWaterMark = liftDOM ((js_newQueuingStrategyInit (highWaterMark)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"highWaterMark\"] = $2; })"
+        js_setHighWaterMark :: QueuingStrategyInit -> Double -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategyinit-highwatermark QueuingStrategyInit.highWaterMark specification>
+setHighWaterMark :: (MonadDOM m) => QueuingStrategyInit -> Double -> m ()
+setHighWaterMark self val = liftDOM (void ((js_setHighWaterMark (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"highWaterMark\"]; })"
+        js_getHighWaterMark :: QueuingStrategyInit -> IO Double
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategyinit-highwatermark QueuingStrategyInit.highWaterMark specification>
+getHighWaterMark :: (MonadDOM m) => QueuingStrategyInit -> m Double
+getHighWaterMark self = liftDOM ((js_getHighWaterMark (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategySize.hs b/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategySize.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/QueuingStrategySize.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.QueuingStrategySize
+       (newQueuingStrategySize, newQueuingStrategySizeSync, newQueuingStrategySizeAsync, QueuingStrategySize)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newQueuingStrategySize :: (MonadDOM m) => (JSVal -> IO ()) -> m QueuingStrategySize
+newQueuingStrategySize callback = liftDOM ((QueuingStrategySize . coerce) <$> syncCallback1 ContinueAsync (\ chunk -> do
+          chunk' <- P.return chunk
+          callback chunk'))
+
+newQueuingStrategySizeSync :: (MonadDOM m) => (JSVal -> IO ()) -> m QueuingStrategySize
+newQueuingStrategySizeSync callback = liftDOM ((QueuingStrategySize . coerce) <$> syncCallback1 ThrowWouldBlock (\ chunk -> do
+          chunk' <- P.return chunk
+          callback chunk'))
+
+newQueuingStrategySizeAsync :: (MonadDOM m) => (JSVal -> IO ()) -> m QueuingStrategySize
+newQueuingStrategySizeAsync callback = liftDOM ((QueuingStrategySize . coerce) <$> asyncCallback1 (\ chunk -> do
+          chunk' <- P.return chunk
+          callback chunk'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs b/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs
+++ /dev/null
@@ -1,70 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement
-       (js_postEvent, postEvent, js_getMovieSize, getMovieSize,
-        js_getTimedMetaData, getTimedMetaData, js_getAccessLog,
-        getAccessLog, js_getErrorLog, getErrorLog,
-        QuickTimePluginReplacement(..), gTypeQuickTimePluginReplacement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"postEvent\"]($2); })"
-        js_postEvent :: QuickTimePluginReplacement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.postEvent Mozilla QuickTimePluginReplacement.postEvent documentation> 
-postEvent ::
-          (MonadIO m, ToJSString eventName) =>
-            QuickTimePluginReplacement -> eventName -> m ()
-postEvent self eventName
-  = liftIO (js_postEvent self (toJSString eventName))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"movieSize\"]; })"
-        js_getMovieSize :: QuickTimePluginReplacement -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.movieSize Mozilla QuickTimePluginReplacement.movieSize documentation> 
-getMovieSize ::
-             (MonadIO m) => QuickTimePluginReplacement -> m Word64
-getMovieSize self = liftIO (round <$> (js_getMovieSize self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"timedMetaData\"]; })"
-        js_getTimedMetaData :: QuickTimePluginReplacement -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.timedMetaData Mozilla QuickTimePluginReplacement.timedMetaData documentation> 
-getTimedMetaData ::
-                 (MonadIO m) => QuickTimePluginReplacement -> m JSVal
-getTimedMetaData self = liftIO (js_getTimedMetaData self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"accessLog\"]; })"
-        js_getAccessLog :: QuickTimePluginReplacement -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.accessLog Mozilla QuickTimePluginReplacement.accessLog documentation> 
-getAccessLog ::
-             (MonadIO m) => QuickTimePluginReplacement -> m JSVal
-getAccessLog self = liftIO (js_getAccessLog self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"errorLog\"]; })" js_getErrorLog
-        :: QuickTimePluginReplacement -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.errorLog Mozilla QuickTimePluginReplacement.errorLog documentation> 
-getErrorLog :: (MonadIO m) => QuickTimePluginReplacement -> m JSVal
-getErrorLog self = liftIO (js_getErrorLog self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs b/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.RGBColor
-       (js_getRed, getRed, js_getGreen, getGreen, js_getBlue, getBlue,
-        js_getAlpha, getAlpha, RGBColor(..), gTypeRGBColor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"red\"]; })" js_getRed ::
-        RGBColor -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
-getRed :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
-getRed self = liftIO (js_getRed self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"green\"]; })" js_getGreen ::
-        RGBColor -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.green Mozilla RGBColor.green documentation> 
-getGreen :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
-getGreen self = liftIO (js_getGreen self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"blue\"]; })" js_getBlue ::
-        RGBColor -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
-getBlue :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
-getBlue self = liftIO (js_getBlue self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })" js_getAlpha ::
-        RGBColor -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.alpha Mozilla RGBColor.alpha documentation> 
-getAlpha :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
-getAlpha self = liftIO (js_getAlpha self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCAnswerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCAnswerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCAnswerOptions.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCAnswerOptions
+       (js_newRTCAnswerOptions, newRTCAnswerOptions, RTCAnswerOptions(..), gTypeRTCAnswerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCAnswerOptions :: IO RTCAnswerOptions
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcansweroptions RTCAnswerOptions specification>
+newRTCAnswerOptions :: (MonadDOM m) => m RTCAnswerOptions
+newRTCAnswerOptions = liftDOM ((js_newRTCAnswerOptions))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCCertificate.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCCertificate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCCertificate.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCCertificate
+       (js_getFingerprints, js_getExpires, getFingerprints, getFingerprints_, getExpires, RTCCertificate(..), gTypeRTCCertificate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getFingerprints\"](); })"
+        js_getFingerprints :: RTCCertificate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCCertificate/getFingerprints MDN RTCCertificate.getFingerprints documentation>
+getFingerprints :: (MonadDOM m) => RTCCertificate -> m [RTCDtlsFingerprint]
+getFingerprints self = liftDOM (((js_getFingerprints (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCCertificate/getFingerprints MDN RTCCertificate.getFingerprints documentation>
+getFingerprints_ :: (MonadDOM m) => RTCCertificate -> m ()
+getFingerprints_ self = liftDOM (void ((js_getFingerprints (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"expires\"]; })"
+        js_getExpires :: RTCCertificate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCCertificate/expires MDN RTCCertificate.expires documentation>
+getExpires :: (MonadDOM m) => RTCCertificate -> m Word53
+getExpires self = liftDOM (((js_getExpires (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCConfiguration.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCConfiguration
+       (js_newRTCConfiguration, js_setIceServers, js_getIceServers, js_setIceTransportPolicy, js_getIceTransportPolicy, js_setBundlePolicy, js_getBundlePolicy, js_setRtcpMuxPolicy, js_getRtcpMuxPolicy, js_setCertificates, js_getCertificates, js_setIceCandidatePoolSize, js_getIceCandidatePoolSize, js_setPeerIdentity, js_getPeerIdentity, newRTCConfiguration, setIceServers, getIceServers, getIceServersUnsafe, getIceServersUnchecked, setIceTransportPolicy, getIceTransportPolicy, getIceTransportPolicyUnsafe, getIceTransportPolicyUnchecked, setBundlePolicy, getBundlePolicy, getBundlePolicyUnsafe, getBundlePolicyUnchecked, setRtcpMuxPolicy, getRtcpMuxPolicy, getRtcpMuxPolicyUnsafe, getRtcpMuxPolicyUnchecked, setCertificates, getCertificates, getCertificatesUnsafe, getCertificatesUnchecked, setIceCandidatePoolSize, getIceCandidatePoolSize, getIceCandidatePoolSizeUnsafe, getIceCandidatePoolSizeUnchecked, setPeerIdentity, getPeerIdentity, getPeerIdentityUnsafe, getPeerIdentityUnchecked, RTCConfiguration(..), gTypeRTCConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCConfiguration :: IO RTCConfiguration
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration RTCConfiguration specification>
+newRTCConfiguration :: (MonadDOM m) => m RTCConfiguration
+newRTCConfiguration = liftDOM ((js_newRTCConfiguration))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iceServers\"] = $2; })"
+        js_setIceServers :: RTCConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-iceservers RTCConfiguration.iceServers specification>
+setIceServers :: (MonadDOM m) => RTCConfiguration -> [RTCIceServer] -> m ()
+setIceServers self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setIceServers (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iceServers\"]; })"
+        js_getIceServers :: RTCConfiguration -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-iceservers RTCConfiguration.iceServers specification>
+getIceServers :: (MonadDOM m) => RTCConfiguration -> m (Maybe [RTCIceServer])
+getIceServers self = liftDOM (((js_getIceServers (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-iceservers RTCConfiguration.iceServers specification>
+getIceServersUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m [RTCIceServer]
+getIceServersUnsafe self = liftDOM ((((js_getIceServers (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-iceservers RTCConfiguration.iceServers specification>
+getIceServersUnchecked :: (MonadDOM m) => RTCConfiguration -> m [RTCIceServer]
+getIceServersUnchecked self = liftDOM (((js_getIceServers (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iceTransportPolicy\"] = $2; })"
+        js_setIceTransportPolicy :: RTCConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icetransportpolicy RTCConfiguration.iceTransportPolicy specification>
+setIceTransportPolicy :: (MonadDOM m) => RTCConfiguration -> RTCIceTransportPolicy -> m ()
+setIceTransportPolicy self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setIceTransportPolicy (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iceTransportPolicy\"]; })"
+        js_getIceTransportPolicy :: RTCConfiguration -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icetransportpolicy RTCConfiguration.iceTransportPolicy specification>
+getIceTransportPolicy :: (MonadDOM m) => RTCConfiguration -> m (Maybe RTCIceTransportPolicy)
+getIceTransportPolicy self = liftDOM (((js_getIceTransportPolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icetransportpolicy RTCConfiguration.iceTransportPolicy specification>
+getIceTransportPolicyUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m RTCIceTransportPolicy
+getIceTransportPolicyUnsafe self = liftDOM ((((js_getIceTransportPolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icetransportpolicy RTCConfiguration.iceTransportPolicy specification>
+getIceTransportPolicyUnchecked :: (MonadDOM m) => RTCConfiguration -> m RTCIceTransportPolicy
+getIceTransportPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getIceTransportPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bundlePolicy\"] = $2; })"
+        js_setBundlePolicy :: RTCConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-bundlepolicy RTCConfiguration.bundlePolicy specification>
+setBundlePolicy :: (MonadDOM m) => RTCConfiguration -> RTCBundlePolicy -> m ()
+setBundlePolicy self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBundlePolicy (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bundlePolicy\"]; })"
+        js_getBundlePolicy :: RTCConfiguration -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-bundlepolicy RTCConfiguration.bundlePolicy specification>
+getBundlePolicy :: (MonadDOM m) => RTCConfiguration -> m (Maybe RTCBundlePolicy)
+getBundlePolicy self = liftDOM (((js_getBundlePolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-bundlepolicy RTCConfiguration.bundlePolicy specification>
+getBundlePolicyUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m RTCBundlePolicy
+getBundlePolicyUnsafe self = liftDOM ((((js_getBundlePolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-bundlepolicy RTCConfiguration.bundlePolicy specification>
+getBundlePolicyUnchecked :: (MonadDOM m) => RTCConfiguration -> m RTCBundlePolicy
+getBundlePolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getBundlePolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rtcpMuxPolicy\"] = $2; })"
+        js_setRtcpMuxPolicy :: RTCConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-rtcpmuxpolicy RTCConfiguration.rtcpMuxPolicy specification>
+setRtcpMuxPolicy :: (MonadDOM m) => RTCConfiguration -> RTCRtcpMuxPolicy -> m ()
+setRtcpMuxPolicy self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRtcpMuxPolicy (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rtcpMuxPolicy\"]; })"
+        js_getRtcpMuxPolicy :: RTCConfiguration -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-rtcpmuxpolicy RTCConfiguration.rtcpMuxPolicy specification>
+getRtcpMuxPolicy :: (MonadDOM m) => RTCConfiguration -> m (Maybe RTCRtcpMuxPolicy)
+getRtcpMuxPolicy self = liftDOM (((js_getRtcpMuxPolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-rtcpmuxpolicy RTCConfiguration.rtcpMuxPolicy specification>
+getRtcpMuxPolicyUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m RTCRtcpMuxPolicy
+getRtcpMuxPolicyUnsafe self = liftDOM ((((js_getRtcpMuxPolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-rtcpmuxpolicy RTCConfiguration.rtcpMuxPolicy specification>
+getRtcpMuxPolicyUnchecked :: (MonadDOM m) => RTCConfiguration -> m RTCRtcpMuxPolicy
+getRtcpMuxPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getRtcpMuxPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"certificates\"] = $2; })"
+        js_setCertificates :: RTCConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-certificates RTCConfiguration.certificates specification>
+setCertificates :: (MonadDOM m) => RTCConfiguration -> [RTCCertificate] -> m ()
+setCertificates self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCertificates (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"certificates\"]; })"
+        js_getCertificates :: RTCConfiguration -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-certificates RTCConfiguration.certificates specification>
+getCertificates :: (MonadDOM m) => RTCConfiguration -> m (Maybe [RTCCertificate])
+getCertificates self = liftDOM (((js_getCertificates (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-certificates RTCConfiguration.certificates specification>
+getCertificatesUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m [RTCCertificate]
+getCertificatesUnsafe self = liftDOM ((((js_getCertificates (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-certificates RTCConfiguration.certificates specification>
+getCertificatesUnchecked :: (MonadDOM m) => RTCConfiguration -> m [RTCCertificate]
+getCertificatesUnchecked self = liftDOM (((js_getCertificates (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iceCandidatePoolSize\"] = $2; })"
+        js_setIceCandidatePoolSize :: RTCConfiguration -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize RTCConfiguration.iceCandidatePoolSize specification>
+setIceCandidatePoolSize :: (MonadDOM m) => RTCConfiguration -> Word -> m ()
+setIceCandidatePoolSize self val = liftDOM (void ((js_setIceCandidatePoolSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iceCandidatePoolSize\"]; })"
+        js_getIceCandidatePoolSize :: RTCConfiguration -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize RTCConfiguration.iceCandidatePoolSize specification>
+getIceCandidatePoolSize :: (MonadDOM m) => RTCConfiguration -> m (Maybe Word)
+getIceCandidatePoolSize self = liftDOM (((js_getIceCandidatePoolSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize RTCConfiguration.iceCandidatePoolSize specification>
+getIceCandidatePoolSizeUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m Word
+getIceCandidatePoolSizeUnsafe self = liftDOM ((((js_getIceCandidatePoolSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize RTCConfiguration.iceCandidatePoolSize specification>
+getIceCandidatePoolSizeUnchecked :: (MonadDOM m) => RTCConfiguration -> m Word
+getIceCandidatePoolSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getIceCandidatePoolSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"peerIdentity\"] = $2; })"
+        js_setPeerIdentity :: RTCConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcconfiguration-peeridentity RTCConfiguration.peerIdentity specification>
+setPeerIdentity :: (MonadDOM m, ToJSString val) => RTCConfiguration -> val -> m ()
+setPeerIdentity self val = liftDOM (void ((js_setPeerIdentity (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"peerIdentity\"]; })"
+        js_getPeerIdentity :: RTCConfiguration -> IO JSVal
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcconfiguration-peeridentity RTCConfiguration.peerIdentity specification>
+getPeerIdentity :: (MonadDOM m, FromJSString result) => RTCConfiguration -> m (Maybe result)
+getPeerIdentity self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPeerIdentity (self))))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcconfiguration-peeridentity RTCConfiguration.peerIdentity specification>
+getPeerIdentityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCConfiguration -> m result
+getPeerIdentityUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPeerIdentity (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcconfiguration-peeridentity RTCConfiguration.peerIdentity specification>
+getPeerIdentityUnchecked :: (MonadDOM m, FromJSString result) => RTCConfiguration -> m result
+getPeerIdentityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPeerIdentity (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
@@ -1,83 +1,39 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
-       (js_insertDTMF, insertDTMF, toneChange, js_getToneBuffer,
-        getToneBuffer, js_getCanInsertDTMF, getCanInsertDTMF, js_getTrack,
-        getTrack, js_getDuration, getDuration, js_getInterToneGap,
-        getInterToneGap, RTCDTMFSender(..), gTypeRTCDTMFSender)
+       (js_insertDTMF, js_getCanInsertDTMF, js_getToneBuffer, insertDTMF, getCanInsertDTMF, getToneBuffer, toneChange, RTCDTMFSender(..), gTypeRTCDTMFSender)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"insertDTMF\"]($2, $3, $4); })"
-        js_insertDTMF ::
-        RTCDTMFSender -> JSString -> Optional Int -> Optional Int -> IO ()
+        js_insertDTMF :: RTCDTMFSender -> JSString -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFSender/insertDTMF MDN RTCDTMFSender.insertDTMF documentation>
+insertDTMF :: (MonadDOM m, ToJSString tones) => RTCDTMFSender -> tones -> Maybe Word -> Maybe Word -> m ()
+insertDTMF self tones duration interToneGap = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal duration) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal interToneGap) >>= \a4' -> js_insertDTMF (self) (toJSString tones) a3' a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.insertDTMF Mozilla RTCDTMFSender.insertDTMF documentation> 
-insertDTMF ::
-           (MonadIO m, ToJSString tones) =>
-             RTCDTMFSender -> tones -> Maybe Int -> Maybe Int -> m ()
-insertDTMF self tones duration interToneGap
-  = liftIO
-      (js_insertDTMF self (toJSString tones) (maybeToOptional duration)
-         (maybeToOptional interToneGap))
+foreign import javascript unsafe "(($1) => { return $1[\"canInsertDTMF\"]; })"
+        js_getCanInsertDTMF :: RTCDTMFSender -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFSender/canInsertDTMF MDN RTCDTMFSender.canInsertDTMF documentation>
+getCanInsertDTMF :: (MonadDOM m) => RTCDTMFSender -> m Bool
+getCanInsertDTMF self = liftDOM ((js_getCanInsertDTMF (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.ontonechange Mozilla RTCDTMFSender.ontonechange documentation> 
-toneChange :: EventName RTCDTMFSender Event
-toneChange = unsafeEventName (toJSString "tonechange")
- 
 foreign import javascript unsafe "(($1) => { return $1[\"toneBuffer\"]; })"
         js_getToneBuffer :: RTCDTMFSender -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.toneBuffer Mozilla RTCDTMFSender.toneBuffer documentation> 
-getToneBuffer ::
-              (MonadIO m, FromJSString result) => RTCDTMFSender -> m result
-getToneBuffer self
-  = liftIO (fromJSString <$> (js_getToneBuffer self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"canInsertDTMF\"] ? 1 : 0); })"
-        js_getCanInsertDTMF :: RTCDTMFSender -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.canInsertDTMF Mozilla RTCDTMFSender.canInsertDTMF documentation> 
-getCanInsertDTMF :: (MonadIO m) => RTCDTMFSender -> m Bool
-getCanInsertDTMF self = liftIO (js_getCanInsertDTMF self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        RTCDTMFSender -> IO MediaStreamTrack
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.track Mozilla RTCDTMFSender.track documentation> 
-getTrack :: (MonadIO m) => RTCDTMFSender -> m MediaStreamTrack
-getTrack self = liftIO (js_getTrack self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
-        :: RTCDTMFSender -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.duration Mozilla RTCDTMFSender.duration documentation> 
-getDuration :: (MonadIO m) => RTCDTMFSender -> m Int
-getDuration self = liftIO (js_getDuration self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"interToneGap\"]; })"
-        js_getInterToneGap :: RTCDTMFSender -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFSender/toneBuffer MDN RTCDTMFSender.toneBuffer documentation>
+getToneBuffer :: (MonadDOM m, FromJSString result) => RTCDTMFSender -> m result
+getToneBuffer self = liftDOM ((fromJSString <$> (js_getToneBuffer (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.interToneGap Mozilla RTCDTMFSender.interToneGap documentation> 
-getInterToneGap :: (MonadIO m) => RTCDTMFSender -> m Int
-getInterToneGap self = liftIO (js_getInterToneGap self)
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmfsender-ontonechange tonechange event>
+toneChange :: EventName RTCDTMFSender RTCDTMFToneChangeEvent
+toneChange = unsafeEventName (toJSString "tonechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
@@ -1,53 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
-       (js_newRTCDTMFToneChangeEvent, newRTCDTMFToneChangeEvent,
-        js_getTone, getTone, RTCDTMFToneChangeEvent(..),
-        gTypeRTCDTMFToneChangeEvent)
+       (js_newRTCDTMFToneChangeEvent, js_getTone, newRTCDTMFToneChangeEvent, getTone, RTCDTMFToneChangeEvent(..), gTypeRTCDTMFToneChangeEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"RTCDTMFToneChangeEvent\"]($1,\n$2); })"
-        js_newRTCDTMFToneChangeEvent ::
-        JSString ->
-          Optional RTCDTMFToneChangeEventInit -> IO RTCDTMFToneChangeEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation> 
-newRTCDTMFToneChangeEvent ::
-                          (MonadIO m, ToJSString type') =>
-                            type' ->
-                              Maybe RTCDTMFToneChangeEventInit -> m RTCDTMFToneChangeEvent
-newRTCDTMFToneChangeEvent type' eventInitDict
-  = liftIO
-      (js_newRTCDTMFToneChangeEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tone\"]; })" js_getTone ::
-        RTCDTMFToneChangeEvent -> IO JSString
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCDTMFToneChangeEvent\"]($1, $2); })"
+        js_newRTCDTMFToneChangeEvent :: JSString -> JSVal -> IO RTCDTMFToneChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFToneChangeEvent/RTCDTMFToneChangeEvent MDN RTCDTMFToneChangeEvent. documentation>
+newRTCDTMFToneChangeEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe RTCDTMFToneChangeEventInit -> m RTCDTMFToneChangeEvent
+newRTCDTMFToneChangeEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newRTCDTMFToneChangeEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent.tone Mozilla RTCDTMFToneChangeEvent.tone documentation> 
-getTone ::
-        (MonadIO m, FromJSString result) =>
-          RTCDTMFToneChangeEvent -> m result
-getTone self = liftIO (fromJSString <$> (js_getTone self))
+foreign import javascript unsafe "(($1) => { return $1[\"tone\"]; })"
+        js_getTone :: RTCDTMFToneChangeEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFToneChangeEvent/tone MDN RTCDTMFToneChangeEvent.tone documentation>
+getTone :: (MonadDOM m, FromJSString result) => RTCDTMFToneChangeEvent -> m result
+getTone self = liftDOM ((fromJSString <$> (js_getTone (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEventInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEventInit
+       (js_newRTCDTMFToneChangeEventInit, js_setTone, js_getTone, newRTCDTMFToneChangeEventInit, setTone, getTone, getToneUnsafe, getToneUnchecked, RTCDTMFToneChangeEventInit(..), gTypeRTCDTMFToneChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCDTMFToneChangeEventInit :: IO RTCDTMFToneChangeEventInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit RTCDTMFToneChangeEventInit specification>
+newRTCDTMFToneChangeEventInit :: (MonadDOM m) => m RTCDTMFToneChangeEventInit
+newRTCDTMFToneChangeEventInit = liftDOM ((js_newRTCDTMFToneChangeEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tone\"] = $2; })"
+        js_setTone :: RTCDTMFToneChangeEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit-tone RTCDTMFToneChangeEventInit.tone specification>
+setTone :: (MonadDOM m, ToJSString val) => RTCDTMFToneChangeEventInit -> val -> m ()
+setTone self val = liftDOM (void ((js_setTone (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tone\"]; })"
+        js_getTone :: RTCDTMFToneChangeEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit-tone RTCDTMFToneChangeEventInit.tone specification>
+getTone :: (MonadDOM m, FromJSString result) => RTCDTMFToneChangeEventInit -> m (Maybe result)
+getTone self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTone (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit-tone RTCDTMFToneChangeEventInit.tone specification>
+getToneUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDTMFToneChangeEventInit -> m result
+getToneUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTone (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit-tone RTCDTMFToneChangeEventInit.tone specification>
+getToneUnchecked :: (MonadDOM m, FromJSString result) => RTCDTMFToneChangeEventInit -> m result
+getToneUnchecked self = liftDOM ((pFromJSVal <$> (js_getTone (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
@@ -1,255 +1,173 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCDataChannel
-       (js_send, send, js_sendView, sendView, js_sendBlob, sendBlob,
-        js_sendString, sendString, js_close, close, js_getLabel, getLabel,
-        js_getOrdered, getOrdered, js_getMaxPacketLifeTime,
-        getMaxPacketLifeTime, getMaxPacketLifeTimeUnsafe,
-        getMaxPacketLifeTimeUnchecked, js_getMaxRetransmits,
-        getMaxRetransmits, getMaxRetransmitsUnsafe,
-        getMaxRetransmitsUnchecked, js_getProtocol, getProtocol,
-        js_getNegotiated, getNegotiated, js_getId, getId, getIdUnsafe,
-        getIdUnchecked, js_getReadyState, getReadyState,
-        js_getBufferedAmount, getBufferedAmount,
-        js_setBufferedAmountLowThreshold, setBufferedAmountLowThreshold,
-        js_getBufferedAmountLowThreshold, getBufferedAmountLowThreshold,
-        js_setBinaryType, setBinaryType, js_getBinaryType, getBinaryType,
-        open, error, closeEvent, message, bufferedamountlow,
-        RTCDataChannel(..), gTypeRTCDataChannel)
+       (js_close, js_send, js_send', js_send2, js_send3, js_getLabel, js_getOrdered, js_getMaxPacketLifeTime, js_getMaxRetransmits, js_getProtocol, js_getNegotiated, js_getId, js_getReadyState, js_getBufferedAmount, js_setBufferedAmountLowThreshold, js_getBufferedAmountLowThreshold, js_setBinaryType, js_getBinaryType, close, send, send', send2, send3, getLabel, getOrdered, getMaxPacketLifeTime, getMaxPacketLifeTimeUnsafe, getMaxPacketLifeTimeUnchecked, getMaxRetransmits, getMaxRetransmitsUnsafe, getMaxRetransmitsUnchecked, getProtocol, getNegotiated, getId, getIdUnsafe, getIdUnchecked, getReadyState, getBufferedAmount, setBufferedAmountLowThreshold, getBufferedAmountLowThreshold, setBinaryType, getBinaryType, open, bufferedamountlow, error, closing, closeEvent, message, RTCDataChannel(..), gTypeRTCDataChannel)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_send ::
-        RTCDataChannel -> ArrayBuffer -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-send ::
-     (MonadIO m, IsArrayBuffer data') => RTCDataChannel -> data' -> m ()
-send self data' = liftIO (js_send self (toArrayBuffer data'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendView ::
-        RTCDataChannel -> ArrayBufferView -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: RTCDataChannel -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/close MDN RTCDataChannel.close documentation>
+close :: (MonadDOM m) => RTCDataChannel -> m ()
+close self = liftDOM (void ((js_close (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-sendView ::
-         (MonadIO m, IsArrayBufferView data') =>
-           RTCDataChannel -> data' -> m ()
-sendView self data'
-  = liftIO (js_sendView self (toArrayBufferView data'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendBlob ::
-        RTCDataChannel -> Blob -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })"
+        js_send :: RTCDataChannel -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/send MDN RTCDataChannel.send documentation>
+send :: (MonadDOM m, ToJSString data') => RTCDataChannel -> data' -> m ()
+send self data' = liftDOM (void ((js_send (self) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-sendBlob ::
-         (MonadIO m, IsBlob data') => RTCDataChannel -> data' -> m ()
-sendBlob self data' = liftIO (js_sendBlob self (toBlob data'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendString ::
-        RTCDataChannel -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })"
+        js_send' :: RTCDataChannel -> Blob -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/send MDN RTCDataChannel.send documentation>
+send' :: (MonadDOM m, IsBlob data') => RTCDataChannel -> data' -> m ()
+send' self data' = liftDOM (void ((js_send' (self) (Types.toBlob data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-sendString ::
-           (MonadIO m, ToJSString data') => RTCDataChannel -> data' -> m ()
-sendString self data'
-  = liftIO (js_sendString self (toJSString data'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        RTCDataChannel -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })"
+        js_send2 :: RTCDataChannel -> ArrayBuffer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/send MDN RTCDataChannel.send documentation>
+send2 :: (MonadDOM m, IsArrayBuffer data') => RTCDataChannel -> data' -> m ()
+send2 self data' = liftDOM (void ((js_send2 (self) (Types.toArrayBuffer data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.close Mozilla RTCDataChannel.close documentation> 
-close :: (MonadIO m) => RTCDataChannel -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        RTCDataChannel -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })"
+        js_send3 :: RTCDataChannel -> ArrayBufferView -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/send MDN RTCDataChannel.send documentation>
+send3 :: (MonadDOM m, IsArrayBufferView data') => RTCDataChannel -> data' -> m ()
+send3 self data' = liftDOM (void ((js_send3 (self) (Types.toArrayBufferView data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.label Mozilla RTCDataChannel.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => RTCDataChannel -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"ordered\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: RTCDataChannel -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/label MDN RTCDataChannel.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ordered\"]; })"
         js_getOrdered :: RTCDataChannel -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/ordered MDN RTCDataChannel.ordered documentation>
+getOrdered :: (MonadDOM m) => RTCDataChannel -> m Bool
+getOrdered self = liftDOM ((js_getOrdered (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.ordered Mozilla RTCDataChannel.ordered documentation> 
-getOrdered :: (MonadIO m) => RTCDataChannel -> m Bool
-getOrdered self = liftIO (js_getOrdered self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"maxPacketLifeTime\"]; })"
-        js_getMaxPacketLifeTime :: RTCDataChannel -> IO (Nullable Word)
+        js_getMaxPacketLifeTime :: RTCDataChannel -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxPacketLifeTime MDN RTCDataChannel.maxPacketLifeTime documentation>
+getMaxPacketLifeTime :: (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
+getMaxPacketLifeTime self = liftDOM (((js_getMaxPacketLifeTime (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
-getMaxPacketLifeTime ::
-                     (MonadIO m) => RTCDataChannel -> m (Maybe Word)
-getMaxPacketLifeTime self
-  = liftIO (nullableToMaybe <$> (js_getMaxPacketLifeTime self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxPacketLifeTime MDN RTCDataChannel.maxPacketLifeTime documentation>
+getMaxPacketLifeTimeUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
+getMaxPacketLifeTimeUnsafe self = liftDOM ((((js_getMaxPacketLifeTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
-getMaxPacketLifeTimeUnsafe ::
-                           (MonadIO m, HasCallStack) => RTCDataChannel -> m Word
-getMaxPacketLifeTimeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getMaxPacketLifeTime self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxPacketLifeTime MDN RTCDataChannel.maxPacketLifeTime documentation>
+getMaxPacketLifeTimeUnchecked :: (MonadDOM m) => RTCDataChannel -> m Word
+getMaxPacketLifeTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxPacketLifeTime (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
-getMaxPacketLifeTimeUnchecked ::
-                              (MonadIO m) => RTCDataChannel -> m Word
-getMaxPacketLifeTimeUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getMaxPacketLifeTime self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"maxRetransmits\"]; })"
-        js_getMaxRetransmits :: RTCDataChannel -> IO (Nullable Word)
+        js_getMaxRetransmits :: RTCDataChannel -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxRetransmits MDN RTCDataChannel.maxRetransmits documentation>
+getMaxRetransmits :: (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
+getMaxRetransmits self = liftDOM (((js_getMaxRetransmits (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
-getMaxRetransmits ::
-                  (MonadIO m) => RTCDataChannel -> m (Maybe Word)
-getMaxRetransmits self
-  = liftIO (nullableToMaybe <$> (js_getMaxRetransmits self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxRetransmits MDN RTCDataChannel.maxRetransmits documentation>
+getMaxRetransmitsUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
+getMaxRetransmitsUnsafe self = liftDOM ((((js_getMaxRetransmits (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
-getMaxRetransmitsUnsafe ::
-                        (MonadIO m, HasCallStack) => RTCDataChannel -> m Word
-getMaxRetransmitsUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getMaxRetransmits self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxRetransmits MDN RTCDataChannel.maxRetransmits documentation>
+getMaxRetransmitsUnchecked :: (MonadDOM m) => RTCDataChannel -> m Word
+getMaxRetransmitsUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxRetransmits (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
-getMaxRetransmitsUnchecked ::
-                           (MonadIO m) => RTCDataChannel -> m Word
-getMaxRetransmitsUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getMaxRetransmits self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
-        :: RTCDataChannel -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: RTCDataChannel -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/protocol MDN RTCDataChannel.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.protocol Mozilla RTCDataChannel.protocol documentation> 
-getProtocol ::
-            (MonadIO m, FromJSString result) => RTCDataChannel -> m result
-getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"negotiated\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"negotiated\"]; })"
         js_getNegotiated :: RTCDataChannel -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/negotiated MDN RTCDataChannel.negotiated documentation>
+getNegotiated :: (MonadDOM m) => RTCDataChannel -> m Bool
+getNegotiated self = liftDOM ((js_getNegotiated (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.negotiated Mozilla RTCDataChannel.negotiated documentation> 
-getNegotiated :: (MonadIO m) => RTCDataChannel -> m Bool
-getNegotiated self = liftIO (js_getNegotiated self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        RTCDataChannel -> IO (Nullable Word)
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: RTCDataChannel -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/id MDN RTCDataChannel.id documentation>
+getId :: (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
+getId self = liftDOM (((js_getId (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
-getId :: (MonadIO m) => RTCDataChannel -> m (Maybe Word)
-getId self = liftIO (nullableToMaybe <$> (js_getId self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/id MDN RTCDataChannel.id documentation>
+getIdUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
+getIdUnsafe self = liftDOM ((((js_getId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
-getIdUnsafe ::
-            (MonadIO m, HasCallStack) => RTCDataChannel -> m Word
-getIdUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getId self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/id MDN RTCDataChannel.id documentation>
+getIdUnchecked :: (MonadDOM m) => RTCDataChannel -> m Word
+getIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
-getIdUnchecked :: (MonadIO m) => RTCDataChannel -> m Word
-getIdUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getId self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
         js_getReadyState :: RTCDataChannel -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/readyState MDN RTCDataChannel.readyState documentation>
+getReadyState :: (MonadDOM m) => RTCDataChannel -> m RTCDataChannelState
+getReadyState self = liftDOM (((js_getReadyState (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.readyState Mozilla RTCDataChannel.readyState documentation> 
-getReadyState ::
-              (MonadIO m) => RTCDataChannel -> m RTCDataChannelState
-getReadyState self
-  = liftIO ((js_getReadyState self) >>= fromJSValUnchecked)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"bufferedAmount\"]; })"
         js_getBufferedAmount :: RTCDataChannel -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/bufferedAmount MDN RTCDataChannel.bufferedAmount documentation>
+getBufferedAmount :: (MonadDOM m) => RTCDataChannel -> m Word
+getBufferedAmount self = liftDOM ((js_getBufferedAmount (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmount Mozilla RTCDataChannel.bufferedAmount documentation> 
-getBufferedAmount :: (MonadIO m) => RTCDataChannel -> m Word
-getBufferedAmount self = liftIO (js_getBufferedAmount self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"bufferedAmountLowThreshold\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"bufferedAmountLowThreshold\"] = $2; })"
         js_setBufferedAmountLowThreshold :: RTCDataChannel -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/bufferedAmountLowThreshold MDN RTCDataChannel.bufferedAmountLowThreshold documentation>
+setBufferedAmountLowThreshold :: (MonadDOM m) => RTCDataChannel -> Word -> m ()
+setBufferedAmountLowThreshold self val = liftDOM (void ((js_setBufferedAmountLowThreshold (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmountLowThreshold Mozilla RTCDataChannel.bufferedAmountLowThreshold documentation> 
-setBufferedAmountLowThreshold ::
-                              (MonadIO m) => RTCDataChannel -> Word -> m ()
-setBufferedAmountLowThreshold self val
-  = liftIO (js_setBufferedAmountLowThreshold self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"bufferedAmountLowThreshold\"]; })"
+foreign import javascript unsafe "(($1) => { return $1[\"bufferedAmountLowThreshold\"]; })"
         js_getBufferedAmountLowThreshold :: RTCDataChannel -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/bufferedAmountLowThreshold MDN RTCDataChannel.bufferedAmountLowThreshold documentation>
+getBufferedAmountLowThreshold :: (MonadDOM m) => RTCDataChannel -> m Word
+getBufferedAmountLowThreshold self = liftDOM ((js_getBufferedAmountLowThreshold (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmountLowThreshold Mozilla RTCDataChannel.bufferedAmountLowThreshold documentation> 
-getBufferedAmountLowThreshold ::
-                              (MonadIO m) => RTCDataChannel -> m Word
-getBufferedAmountLowThreshold self
-  = liftIO (js_getBufferedAmountLowThreshold self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"binaryType\"] = $2; })"
-        js_setBinaryType :: RTCDataChannel -> JSString -> IO ()
+        js_setBinaryType :: RTCDataChannel -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/binaryType MDN RTCDataChannel.binaryType documentation>
+setBinaryType :: (MonadDOM m) => RTCDataChannel -> BinaryType -> m ()
+setBinaryType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBinaryType (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
-setBinaryType ::
-              (MonadIO m, ToJSString val) => RTCDataChannel -> val -> m ()
-setBinaryType self val
-  = liftIO (js_setBinaryType self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"binaryType\"]; })"
-        js_getBinaryType :: RTCDataChannel -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
-getBinaryType ::
-              (MonadIO m, FromJSString result) => RTCDataChannel -> m result
-getBinaryType self
-  = liftIO (fromJSString <$> (js_getBinaryType self))
+        js_getBinaryType :: RTCDataChannel -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/binaryType MDN RTCDataChannel.binaryType documentation>
+getBinaryType :: (MonadDOM m) => RTCDataChannel -> m BinaryType
+getBinaryType self = liftDOM (((js_getBinaryType (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onopen Mozilla RTCDataChannel.onopen documentation> 
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-onopen open event>
 open :: EventName RTCDataChannel Event
 open = unsafeEventNameAsync (toJSString "open")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onerror Mozilla RTCDataChannel.onerror documentation> 
-error :: EventName RTCDataChannel UIEvent
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-onbufferedamountlow bufferedamountlow event>
+bufferedamountlow :: EventName RTCDataChannel Event
+bufferedamountlow = unsafeEventName (toJSString "bufferedamountlow")
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-onerror error event>
+error :: EventName RTCDataChannel RTCErrorEvent
 error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onclose Mozilla RTCDataChannel.onclose documentation> 
-closeEvent :: EventName RTCDataChannel CloseEvent
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-onclosing closing event>
+closing :: EventName RTCDataChannel Event
+closing = unsafeEventName (toJSString "closing")
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-onclose close event>
+closeEvent :: EventName RTCDataChannel Event
 closeEvent = unsafeEventNameAsync (toJSString "close")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onmessage Mozilla RTCDataChannel.onmessage documentation> 
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-onmessage message event>
 message :: EventName RTCDataChannel MessageEvent
 message = unsafeEventNameAsync (toJSString "message")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onbufferedamountlow Mozilla RTCDataChannel.onbufferedamountlow documentation> 
-bufferedamountlow :: EventName RTCDataChannel onbufferedamountlow
-bufferedamountlow
-  = unsafeEventName (toJSString "bufferedamountlow")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
@@ -1,48 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
-       (js_newRTCDataChannelEvent, newRTCDataChannelEvent, js_getChannel,
-        getChannel, RTCDataChannelEvent(..), gTypeRTCDataChannelEvent)
+       (js_newRTCDataChannelEvent, js_getChannel, newRTCDataChannelEvent, getChannel, RTCDataChannelEvent(..), gTypeRTCDataChannelEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"RTCDataChannelEvent\"]($1,\n$2); })"
-        js_newRTCDataChannelEvent ::
-        JSString -> RTCDataChannelEventInit -> IO RTCDataChannelEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation> 
-newRTCDataChannelEvent ::
-                       (MonadIO m, ToJSString type') =>
-                         type' -> RTCDataChannelEventInit -> m RTCDataChannelEvent
-newRTCDataChannelEvent type' eventInitDict
-  = liftIO
-      (js_newRTCDataChannelEvent (toJSString type') eventInitDict)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"channel\"]; })" js_getChannel ::
-        RTCDataChannelEvent -> IO RTCDataChannel
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCDataChannelEvent\"]($1, $2); })"
+        js_newRTCDataChannelEvent :: JSString -> RTCDataChannelEventInit -> IO RTCDataChannelEvent
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannelEvent/RTCDataChannelEvent MDN RTCDataChannelEvent. documentation>
+newRTCDataChannelEvent :: (MonadDOM m, ToJSString type') => type' -> RTCDataChannelEventInit -> m RTCDataChannelEvent
+newRTCDataChannelEvent type' eventInitDict = liftDOM ((js_newRTCDataChannelEvent (toJSString type') (eventInitDict)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
-getChannel ::
-           (MonadIO m) => RTCDataChannelEvent -> m RTCDataChannel
-getChannel self = liftIO (js_getChannel self)
+foreign import javascript unsafe "(($1) => { return $1[\"channel\"]; })"
+        js_getChannel :: RTCDataChannelEvent -> IO RTCDataChannel
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannelEvent/channel MDN RTCDataChannelEvent.channel documentation>
+getChannel :: (MonadDOM m) => RTCDataChannelEvent -> m RTCDataChannel
+getChannel self = liftDOM ((js_getChannel (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCDataChannelEventInit
+       (js_newRTCDataChannelEventInit, js_setChannel, js_getChannel, newRTCDataChannelEventInit, setChannel, getChannel, RTCDataChannelEventInit(..), gTypeRTCDataChannelEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"channel\": $1}); })"
+        js_newRTCDataChannelEventInit :: RTCDataChannel -> IO RTCDataChannelEventInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachanneleventinit RTCDataChannelEventInit specification>
+newRTCDataChannelEventInit :: (MonadDOM m) => RTCDataChannel -> m RTCDataChannelEventInit
+newRTCDataChannelEventInit channel = liftDOM ((js_newRTCDataChannelEventInit (channel)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channel\"] = $2; })"
+        js_setChannel :: RTCDataChannelEventInit -> RTCDataChannel -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachanneleventinit-channel RTCDataChannelEventInit.channel specification>
+setChannel :: (MonadDOM m) => RTCDataChannelEventInit -> RTCDataChannel -> m ()
+setChannel self val = liftDOM (void ((js_setChannel (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channel\"]; })"
+        js_getChannel :: RTCDataChannelEventInit -> IO RTCDataChannel
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachanneleventinit-channel RTCDataChannelEventInit.channel specification>
+getChannel :: (MonadDOM m) => RTCDataChannelEventInit -> m RTCDataChannel
+getChannel self = liftDOM ((js_getChannel (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelInit.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCDataChannelInit
+       (js_newRTCDataChannelInit, js_setOrdered, js_getOrdered, js_setMaxPacketLifeTime, js_getMaxPacketLifeTime, js_setMaxRetransmits, js_getMaxRetransmits, js_setProtocol, js_getProtocol, js_setNegotiated, js_getNegotiated, js_setId, js_getId, js_setPriority, js_getPriority, newRTCDataChannelInit, setOrdered, getOrdered, getOrderedUnsafe, getOrderedUnchecked, setMaxPacketLifeTime, getMaxPacketLifeTime, getMaxPacketLifeTimeUnsafe, getMaxPacketLifeTimeUnchecked, setMaxRetransmits, getMaxRetransmits, getMaxRetransmitsUnsafe, getMaxRetransmitsUnchecked, setProtocol, getProtocol, getProtocolUnsafe, getProtocolUnchecked, setNegotiated, getNegotiated, getNegotiatedUnsafe, getNegotiatedUnchecked, setId, getId, getIdUnsafe, getIdUnchecked, setPriority, getPriority, getPriorityUnsafe, getPriorityUnchecked, RTCDataChannelInit(..), gTypeRTCDataChannelInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCDataChannelInit :: IO RTCDataChannelInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit RTCDataChannelInit specification>
+newRTCDataChannelInit :: (MonadDOM m) => m RTCDataChannelInit
+newRTCDataChannelInit = liftDOM ((js_newRTCDataChannelInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ordered\"] = $2; })"
+        js_setOrdered :: RTCDataChannelInit -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-ordered RTCDataChannelInit.ordered specification>
+setOrdered :: (MonadDOM m) => RTCDataChannelInit -> Bool -> m ()
+setOrdered self val = liftDOM (void ((js_setOrdered (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ordered\"]; })"
+        js_getOrdered :: RTCDataChannelInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-ordered RTCDataChannelInit.ordered specification>
+getOrdered :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Bool)
+getOrdered self = liftDOM (((js_getOrdered (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-ordered RTCDataChannelInit.ordered specification>
+getOrderedUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Bool
+getOrderedUnsafe self = liftDOM ((((js_getOrdered (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-ordered RTCDataChannelInit.ordered specification>
+getOrderedUnchecked :: (MonadDOM m) => RTCDataChannelInit -> m Bool
+getOrderedUnchecked self = liftDOM ((pFromJSVal <$> (js_getOrdered (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxPacketLifeTime\"] = $2; })"
+        js_setMaxPacketLifeTime :: RTCDataChannelInit -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxpacketlifetime RTCDataChannelInit.maxPacketLifeTime specification>
+setMaxPacketLifeTime :: (MonadDOM m) => RTCDataChannelInit -> Word -> m ()
+setMaxPacketLifeTime self val = liftDOM (void ((js_setMaxPacketLifeTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxPacketLifeTime\"]; })"
+        js_getMaxPacketLifeTime :: RTCDataChannelInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxpacketlifetime RTCDataChannelInit.maxPacketLifeTime specification>
+getMaxPacketLifeTime :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Word)
+getMaxPacketLifeTime self = liftDOM (((js_getMaxPacketLifeTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxpacketlifetime RTCDataChannelInit.maxPacketLifeTime specification>
+getMaxPacketLifeTimeUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Word
+getMaxPacketLifeTimeUnsafe self = liftDOM ((((js_getMaxPacketLifeTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxpacketlifetime RTCDataChannelInit.maxPacketLifeTime specification>
+getMaxPacketLifeTimeUnchecked :: (MonadDOM m) => RTCDataChannelInit -> m Word
+getMaxPacketLifeTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxPacketLifeTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxRetransmits\"] = $2; })"
+        js_setMaxRetransmits :: RTCDataChannelInit -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxretransmits RTCDataChannelInit.maxRetransmits specification>
+setMaxRetransmits :: (MonadDOM m) => RTCDataChannelInit -> Word -> m ()
+setMaxRetransmits self val = liftDOM (void ((js_setMaxRetransmits (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxRetransmits\"]; })"
+        js_getMaxRetransmits :: RTCDataChannelInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxretransmits RTCDataChannelInit.maxRetransmits specification>
+getMaxRetransmits :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Word)
+getMaxRetransmits self = liftDOM (((js_getMaxRetransmits (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxretransmits RTCDataChannelInit.maxRetransmits specification>
+getMaxRetransmitsUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Word
+getMaxRetransmitsUnsafe self = liftDOM ((((js_getMaxRetransmits (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxretransmits RTCDataChannelInit.maxRetransmits specification>
+getMaxRetransmitsUnchecked :: (MonadDOM m) => RTCDataChannelInit -> m Word
+getMaxRetransmitsUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxRetransmits (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: RTCDataChannelInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-protocol RTCDataChannelInit.protocol specification>
+setProtocol :: (MonadDOM m, ToJSString val) => RTCDataChannelInit -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: RTCDataChannelInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-protocol RTCDataChannelInit.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => RTCDataChannelInit -> m (Maybe result)
+getProtocol self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getProtocol (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-protocol RTCDataChannelInit.protocol specification>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDataChannelInit -> m result
+getProtocolUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getProtocol (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-protocol RTCDataChannelInit.protocol specification>
+getProtocolUnchecked :: (MonadDOM m, FromJSString result) => RTCDataChannelInit -> m result
+getProtocolUnchecked self = liftDOM ((pFromJSVal <$> (js_getProtocol (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"negotiated\"] = $2; })"
+        js_setNegotiated :: RTCDataChannelInit -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-negotiated RTCDataChannelInit.negotiated specification>
+setNegotiated :: (MonadDOM m) => RTCDataChannelInit -> Bool -> m ()
+setNegotiated self val = liftDOM (void ((js_setNegotiated (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"negotiated\"]; })"
+        js_getNegotiated :: RTCDataChannelInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-negotiated RTCDataChannelInit.negotiated specification>
+getNegotiated :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Bool)
+getNegotiated self = liftDOM (((js_getNegotiated (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-negotiated RTCDataChannelInit.negotiated specification>
+getNegotiatedUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Bool
+getNegotiatedUnsafe self = liftDOM ((((js_getNegotiated (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-negotiated RTCDataChannelInit.negotiated specification>
+getNegotiatedUnchecked :: (MonadDOM m) => RTCDataChannelInit -> m Bool
+getNegotiatedUnchecked self = liftDOM ((pFromJSVal <$> (js_getNegotiated (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: RTCDataChannelInit -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-id RTCDataChannelInit.id specification>
+setId :: (MonadDOM m) => RTCDataChannelInit -> Word -> m ()
+setId self val = liftDOM (void ((js_setId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: RTCDataChannelInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-id RTCDataChannelInit.id specification>
+getId :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Word)
+getId self = liftDOM (((js_getId (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-id RTCDataChannelInit.id specification>
+getIdUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Word
+getIdUnsafe self = liftDOM ((((js_getId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-id RTCDataChannelInit.id specification>
+getIdUnchecked :: (MonadDOM m) => RTCDataChannelInit -> m Word
+getIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: RTCDataChannelInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcdatachannelinit-priority RTCDataChannelInit.priority specification>
+setPriority :: (MonadDOM m) => RTCDataChannelInit -> RTCPriorityType -> m ()
+setPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: RTCDataChannelInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcdatachannelinit-priority RTCDataChannelInit.priority specification>
+getPriority :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe RTCPriorityType)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcdatachannelinit-priority RTCDataChannelInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m RTCPriorityType
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcdatachannelinit-priority RTCDataChannelInit.priority specification>
+getPriorityUnchecked :: (MonadDOM m) => RTCDataChannelInit -> m RTCPriorityType
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDtlsFingerprint.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDtlsFingerprint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDtlsFingerprint.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCDtlsFingerprint
+       (js_newRTCDtlsFingerprint, js_setAlgorithm, js_getAlgorithm, js_setValue, js_getValue, newRTCDtlsFingerprint, setAlgorithm, getAlgorithm, getAlgorithmUnsafe, getAlgorithmUnchecked, setValue, getValue, getValueUnsafe, getValueUnchecked, RTCDtlsFingerprint(..), gTypeRTCDtlsFingerprint)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCDtlsFingerprint :: IO RTCDtlsFingerprint
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint RTCDtlsFingerprint specification>
+newRTCDtlsFingerprint :: (MonadDOM m) => m RTCDtlsFingerprint
+newRTCDtlsFingerprint = liftDOM ((js_newRTCDtlsFingerprint))
+
+foreign import javascript safe "(($1, $2) => { $1[\"algorithm\"] = $2; })"
+        js_setAlgorithm :: RTCDtlsFingerprint -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-algorithm RTCDtlsFingerprint.algorithm specification>
+setAlgorithm :: (MonadDOM m, ToJSString val) => RTCDtlsFingerprint -> val -> m ()
+setAlgorithm self val = liftDOM (void ((js_setAlgorithm (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"algorithm\"]; })"
+        js_getAlgorithm :: RTCDtlsFingerprint -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-algorithm RTCDtlsFingerprint.algorithm specification>
+getAlgorithm :: (MonadDOM m, FromJSString result) => RTCDtlsFingerprint -> m (Maybe result)
+getAlgorithm self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAlgorithm (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-algorithm RTCDtlsFingerprint.algorithm specification>
+getAlgorithmUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDtlsFingerprint -> m result
+getAlgorithmUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAlgorithm (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-algorithm RTCDtlsFingerprint.algorithm specification>
+getAlgorithmUnchecked :: (MonadDOM m, FromJSString result) => RTCDtlsFingerprint -> m result
+getAlgorithmUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlgorithm (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: RTCDtlsFingerprint -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-value RTCDtlsFingerprint.value specification>
+setValue :: (MonadDOM m, ToJSString val) => RTCDtlsFingerprint -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: RTCDtlsFingerprint -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-value RTCDtlsFingerprint.value specification>
+getValue :: (MonadDOM m, FromJSString result) => RTCDtlsFingerprint -> m (Maybe result)
+getValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getValue (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-value RTCDtlsFingerprint.value specification>
+getValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDtlsFingerprint -> m result
+getValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-value RTCDtlsFingerprint.value specification>
+getValueUnchecked :: (MonadDOM m, FromJSString result) => RTCDtlsFingerprint -> m result
+getValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDtlsTransport.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDtlsTransport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDtlsTransport.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCDtlsTransport
+       (js_getRemoteCertificates, js_getIceTransport, js_getState, getRemoteCertificates, getRemoteCertificates_, getIceTransport, getState, statechange, error, RTCDtlsTransport(..), gTypeRTCDtlsTransport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getRemoteCertificates\"](); })"
+        js_getRemoteCertificates :: RTCDtlsTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/getRemoteCertificates MDN RTCDtlsTransport.getRemoteCertificates documentation>
+getRemoteCertificates :: (MonadDOM m) => RTCDtlsTransport -> m [ArrayBuffer]
+getRemoteCertificates self = liftDOM (((js_getRemoteCertificates (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/getRemoteCertificates MDN RTCDtlsTransport.getRemoteCertificates documentation>
+getRemoteCertificates_ :: (MonadDOM m) => RTCDtlsTransport -> m ()
+getRemoteCertificates_ self = liftDOM (void ((js_getRemoteCertificates (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iceTransport\"]; })"
+        js_getIceTransport :: RTCDtlsTransport -> IO RTCIceTransport
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/iceTransport MDN RTCDtlsTransport.iceTransport documentation>
+getIceTransport :: (MonadDOM m) => RTCDtlsTransport -> m RTCIceTransport
+getIceTransport self = liftDOM ((js_getIceTransport (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: RTCDtlsTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/state MDN RTCDtlsTransport.state documentation>
+getState :: (MonadDOM m) => RTCDtlsTransport -> m RTCDtlsTransportState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlstransport-onstatechange statechange event>
+statechange :: EventName RTCDtlsTransport Event
+statechange = unsafeEventName (toJSString "statechange")
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlstransport-onerror error event>
+error :: EventName RTCDtlsTransport RTCErrorEvent
+error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrame.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrame.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrame.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrame
+       (js_newRTCEncodedAudioFrame, js_getMetadata, js_setData, js_getData, newRTCEncodedAudioFrame, getMetadata, getMetadata_, setData, getData, RTCEncodedAudioFrame(..), gTypeRTCEncodedAudioFrame)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCEncodedAudioFrame\"]($1, $2); })"
+        js_newRTCEncodedAudioFrame :: RTCEncodedAudioFrame -> JSVal -> IO RTCEncodedAudioFrame
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/RTCEncodedAudioFrame MDN RTCEncodedAudioFrame. documentation>
+newRTCEncodedAudioFrame :: (MonadDOM m) => RTCEncodedAudioFrame -> Maybe RTCEncodedAudioFrameOptions -> m RTCEncodedAudioFrame
+newRTCEncodedAudioFrame originalFrame options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newRTCEncodedAudioFrame (originalFrame) a2'))
+
+foreign import javascript safe "(($1) => { return $1[\"getMetadata\"](); })"
+        js_getMetadata :: RTCEncodedAudioFrame -> IO RTCEncodedAudioFrameMetadata
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/getMetadata MDN RTCEncodedAudioFrame.getMetadata documentation>
+getMetadata :: (MonadDOM m) => RTCEncodedAudioFrame -> m RTCEncodedAudioFrameMetadata
+getMetadata self = liftDOM ((js_getMetadata (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/getMetadata MDN RTCEncodedAudioFrame.getMetadata documentation>
+getMetadata_ :: (MonadDOM m) => RTCEncodedAudioFrame -> m ()
+getMetadata_ self = liftDOM (void ((js_getMetadata (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: RTCEncodedAudioFrame -> ArrayBuffer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/data MDN RTCEncodedAudioFrame.data documentation>
+setData :: (MonadDOM m, IsArrayBuffer val) => RTCEncodedAudioFrame -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: RTCEncodedAudioFrame -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/data MDN RTCEncodedAudioFrame.data documentation>
+getData :: (MonadDOM m) => RTCEncodedAudioFrame -> m ArrayBuffer
+getData self = liftDOM ((js_getData (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrameMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrameMetadata.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrameMetadata
+       (js_newRTCEncodedAudioFrameMetadata, js_setSequenceNumber, js_getSequenceNumber, js_setAudioLevel, js_getAudioLevel, newRTCEncodedAudioFrameMetadata, setSequenceNumber, getSequenceNumber, getSequenceNumberUnsafe, getSequenceNumberUnchecked, setAudioLevel, getAudioLevel, getAudioLevelUnsafe, getAudioLevelUnchecked, RTCEncodedAudioFrameMetadata(..), gTypeRTCEncodedAudioFrameMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCEncodedAudioFrameMetadata :: IO RTCEncodedAudioFrameMetadata
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedaudioframemetadata RTCEncodedAudioFrameMetadata specification>
+newRTCEncodedAudioFrameMetadata :: (MonadDOM m) => m RTCEncodedAudioFrameMetadata
+newRTCEncodedAudioFrameMetadata = liftDOM ((js_newRTCEncodedAudioFrameMetadata))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sequenceNumber\"] = $2; })"
+        js_setSequenceNumber :: RTCEncodedAudioFrameMetadata -> Int -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber RTCEncodedAudioFrameMetadata.sequenceNumber specification>
+setSequenceNumber :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> Int -> m ()
+setSequenceNumber self val = liftDOM (void ((js_setSequenceNumber (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sequenceNumber\"]; })"
+        js_getSequenceNumber :: RTCEncodedAudioFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber RTCEncodedAudioFrameMetadata.sequenceNumber specification>
+getSequenceNumber :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> m (Maybe Int)
+getSequenceNumber self = liftDOM (((js_getSequenceNumber (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber RTCEncodedAudioFrameMetadata.sequenceNumber specification>
+getSequenceNumberUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedAudioFrameMetadata -> m Int
+getSequenceNumberUnsafe self = liftDOM ((((js_getSequenceNumber (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber RTCEncodedAudioFrameMetadata.sequenceNumber specification>
+getSequenceNumberUnchecked :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> m Int
+getSequenceNumberUnchecked self = liftDOM ((pFromJSVal <$> (js_getSequenceNumber (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audioLevel\"] = $2; })"
+        js_setAudioLevel :: RTCEncodedAudioFrameMetadata -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-audiolevel RTCEncodedAudioFrameMetadata.audioLevel specification>
+setAudioLevel :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> Double -> m ()
+setAudioLevel self val = liftDOM (void ((js_setAudioLevel (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioLevel\"]; })"
+        js_getAudioLevel :: RTCEncodedAudioFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-audiolevel RTCEncodedAudioFrameMetadata.audioLevel specification>
+getAudioLevel :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> m (Maybe Double)
+getAudioLevel self = liftDOM (((js_getAudioLevel (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-audiolevel RTCEncodedAudioFrameMetadata.audioLevel specification>
+getAudioLevelUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedAudioFrameMetadata -> m Double
+getAudioLevelUnsafe self = liftDOM ((((js_getAudioLevel (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-audiolevel RTCEncodedAudioFrameMetadata.audioLevel specification>
+getAudioLevelUnchecked :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> m Double
+getAudioLevelUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudioLevel (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrameOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrameOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedAudioFrameOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCEncodedAudioFrameOptions
+       (js_newRTCEncodedAudioFrameOptions, js_setMetadata, js_getMetadata, newRTCEncodedAudioFrameOptions, setMetadata, getMetadata, getMetadataUnsafe, getMetadataUnchecked, RTCEncodedAudioFrameOptions(..), gTypeRTCEncodedAudioFrameOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCEncodedAudioFrameOptions :: IO RTCEncodedAudioFrameOptions
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedaudioframeoptions RTCEncodedAudioFrameOptions specification>
+newRTCEncodedAudioFrameOptions :: (MonadDOM m) => m RTCEncodedAudioFrameOptions
+newRTCEncodedAudioFrameOptions = liftDOM ((js_newRTCEncodedAudioFrameOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"metadata\"] = $2; })"
+        js_setMetadata :: RTCEncodedAudioFrameOptions -> RTCEncodedAudioFrameMetadata -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframeoptions-metadata RTCEncodedAudioFrameOptions.metadata specification>
+setMetadata :: (MonadDOM m) => RTCEncodedAudioFrameOptions -> RTCEncodedAudioFrameMetadata -> m ()
+setMetadata self val = liftDOM (void ((js_setMetadata (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"metadata\"]; })"
+        js_getMetadata :: RTCEncodedAudioFrameOptions -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframeoptions-metadata RTCEncodedAudioFrameOptions.metadata specification>
+getMetadata :: (MonadDOM m) => RTCEncodedAudioFrameOptions -> m (Maybe RTCEncodedAudioFrameMetadata)
+getMetadata self = liftDOM (((js_getMetadata (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframeoptions-metadata RTCEncodedAudioFrameOptions.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedAudioFrameOptions -> m RTCEncodedAudioFrameMetadata
+getMetadataUnsafe self = liftDOM ((((js_getMetadata (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframeoptions-metadata RTCEncodedAudioFrameOptions.metadata specification>
+getMetadataUnchecked :: (MonadDOM m) => RTCEncodedAudioFrameOptions -> m RTCEncodedAudioFrameMetadata
+getMetadataUnchecked self = liftDOM ((pFromJSVal <$> (js_getMetadata (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedFrameMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedFrameMetadata.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCEncodedFrameMetadata
+       (js_newRTCEncodedFrameMetadata, js_setSynchronizationSource, js_getSynchronizationSource, js_setPayloadType, js_getPayloadType, js_setContributingSources, js_getContributingSources, js_setRtpTimestamp, js_getRtpTimestamp, js_setReceiveTime, js_getReceiveTime, js_setCaptureTime, js_getCaptureTime, js_setSenderCaptureTimeOffset, js_getSenderCaptureTimeOffset, js_setMimeType, js_getMimeType, newRTCEncodedFrameMetadata, setSynchronizationSource, getSynchronizationSource, getSynchronizationSourceUnsafe, getSynchronizationSourceUnchecked, setPayloadType, getPayloadType, getPayloadTypeUnsafe, getPayloadTypeUnchecked, setContributingSources, getContributingSources, getContributingSourcesUnsafe, getContributingSourcesUnchecked, setRtpTimestamp, getRtpTimestamp, getRtpTimestampUnsafe, getRtpTimestampUnchecked, setReceiveTime, getReceiveTime, getReceiveTimeUnsafe, getReceiveTimeUnchecked, setCaptureTime, getCaptureTime, getCaptureTimeUnsafe, getCaptureTimeUnchecked, setSenderCaptureTimeOffset, getSenderCaptureTimeOffset, getSenderCaptureTimeOffsetUnsafe, getSenderCaptureTimeOffsetUnchecked, setMimeType, getMimeType, getMimeTypeUnsafe, getMimeTypeUnchecked, RTCEncodedFrameMetadata(..), gTypeRTCEncodedFrameMetadata, IsRTCEncodedFrameMetadata, toRTCEncodedFrameMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCEncodedFrameMetadata :: IO RTCEncodedFrameMetadata
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedframemetadata RTCEncodedFrameMetadata specification>
+newRTCEncodedFrameMetadata :: (MonadDOM m) => m RTCEncodedFrameMetadata
+newRTCEncodedFrameMetadata = liftDOM ((js_newRTCEncodedFrameMetadata))
+
+foreign import javascript safe "(($1, $2) => { $1[\"synchronizationSource\"] = $2; })"
+        js_setSynchronizationSource :: RTCEncodedFrameMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-synchronizationsource RTCEncodedFrameMetadata.synchronizationSource specification>
+setSynchronizationSource :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> Word -> m ()
+setSynchronizationSource self val = liftDOM (void ((js_setSynchronizationSource ((Types.toRTCEncodedFrameMetadata self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"synchronizationSource\"]; })"
+        js_getSynchronizationSource :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-synchronizationsource RTCEncodedFrameMetadata.synchronizationSource specification>
+getSynchronizationSource :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m (Maybe Word)
+getSynchronizationSource self = liftDOM (((js_getSynchronizationSource ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-synchronizationsource RTCEncodedFrameMetadata.synchronizationSource specification>
+getSynchronizationSourceUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack) => self -> m Word
+getSynchronizationSourceUnsafe self = liftDOM ((((js_getSynchronizationSource ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-synchronizationsource RTCEncodedFrameMetadata.synchronizationSource specification>
+getSynchronizationSourceUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m Word
+getSynchronizationSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSynchronizationSource ((Types.toRTCEncodedFrameMetadata self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payloadType\"] = $2; })"
+        js_setPayloadType :: RTCEncodedFrameMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-payloadtype RTCEncodedFrameMetadata.payloadType specification>
+setPayloadType :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> Word -> m ()
+setPayloadType self val = liftDOM (void ((js_setPayloadType ((Types.toRTCEncodedFrameMetadata self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payloadType\"]; })"
+        js_getPayloadType :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-payloadtype RTCEncodedFrameMetadata.payloadType specification>
+getPayloadType :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m (Maybe Word)
+getPayloadType self = liftDOM (((js_getPayloadType ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-payloadtype RTCEncodedFrameMetadata.payloadType specification>
+getPayloadTypeUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack) => self -> m Word
+getPayloadTypeUnsafe self = liftDOM ((((js_getPayloadType ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-payloadtype RTCEncodedFrameMetadata.payloadType specification>
+getPayloadTypeUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m Word
+getPayloadTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getPayloadType ((Types.toRTCEncodedFrameMetadata self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contributingSources\"] = $2; })"
+        js_setContributingSources :: RTCEncodedFrameMetadata -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-contributingsources RTCEncodedFrameMetadata.contributingSources specification>
+setContributingSources :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> [Word] -> m ()
+setContributingSources self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setContributingSources ((Types.toRTCEncodedFrameMetadata self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contributingSources\"]; })"
+        js_getContributingSources :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-contributingsources RTCEncodedFrameMetadata.contributingSources specification>
+getContributingSources :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m (Maybe [Word])
+getContributingSources self = liftDOM (((js_getContributingSources ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-contributingsources RTCEncodedFrameMetadata.contributingSources specification>
+getContributingSourcesUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack) => self -> m [Word]
+getContributingSourcesUnsafe self = liftDOM ((((js_getContributingSources ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-contributingsources RTCEncodedFrameMetadata.contributingSources specification>
+getContributingSourcesUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m [Word]
+getContributingSourcesUnchecked self = liftDOM (((js_getContributingSources ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rtpTimestamp\"] = $2; })"
+        js_setRtpTimestamp :: RTCEncodedFrameMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-rtptimestamp RTCEncodedFrameMetadata.rtpTimestamp specification>
+setRtpTimestamp :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> Word -> m ()
+setRtpTimestamp self val = liftDOM (void ((js_setRtpTimestamp ((Types.toRTCEncodedFrameMetadata self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rtpTimestamp\"]; })"
+        js_getRtpTimestamp :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-rtptimestamp RTCEncodedFrameMetadata.rtpTimestamp specification>
+getRtpTimestamp :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m (Maybe Word)
+getRtpTimestamp self = liftDOM (((js_getRtpTimestamp ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-rtptimestamp RTCEncodedFrameMetadata.rtpTimestamp specification>
+getRtpTimestampUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack) => self -> m Word
+getRtpTimestampUnsafe self = liftDOM ((((js_getRtpTimestamp ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-rtptimestamp RTCEncodedFrameMetadata.rtpTimestamp specification>
+getRtpTimestampUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m Word
+getRtpTimestampUnchecked self = liftDOM ((pFromJSVal <$> (js_getRtpTimestamp ((Types.toRTCEncodedFrameMetadata self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"receiveTime\"] = $2; })"
+        js_setReceiveTime :: RTCEncodedFrameMetadata -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-receivetime RTCEncodedFrameMetadata.receiveTime specification>
+setReceiveTime :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> Double -> m ()
+setReceiveTime self val = liftDOM (void ((js_setReceiveTime ((Types.toRTCEncodedFrameMetadata self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"receiveTime\"]; })"
+        js_getReceiveTime :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-receivetime RTCEncodedFrameMetadata.receiveTime specification>
+getReceiveTime :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m (Maybe Double)
+getReceiveTime self = liftDOM (((js_getReceiveTime ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-receivetime RTCEncodedFrameMetadata.receiveTime specification>
+getReceiveTimeUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack) => self -> m Double
+getReceiveTimeUnsafe self = liftDOM ((((js_getReceiveTime ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-receivetime RTCEncodedFrameMetadata.receiveTime specification>
+getReceiveTimeUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m Double
+getReceiveTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getReceiveTime ((Types.toRTCEncodedFrameMetadata self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"captureTime\"] = $2; })"
+        js_setCaptureTime :: RTCEncodedFrameMetadata -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-capturetime RTCEncodedFrameMetadata.captureTime specification>
+setCaptureTime :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> Double -> m ()
+setCaptureTime self val = liftDOM (void ((js_setCaptureTime ((Types.toRTCEncodedFrameMetadata self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"captureTime\"]; })"
+        js_getCaptureTime :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-capturetime RTCEncodedFrameMetadata.captureTime specification>
+getCaptureTime :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m (Maybe Double)
+getCaptureTime self = liftDOM (((js_getCaptureTime ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-capturetime RTCEncodedFrameMetadata.captureTime specification>
+getCaptureTimeUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack) => self -> m Double
+getCaptureTimeUnsafe self = liftDOM ((((js_getCaptureTime ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-capturetime RTCEncodedFrameMetadata.captureTime specification>
+getCaptureTimeUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m Double
+getCaptureTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCaptureTime ((Types.toRTCEncodedFrameMetadata self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"senderCaptureTimeOffset\"] = $2; })"
+        js_setSenderCaptureTimeOffset :: RTCEncodedFrameMetadata -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-sendercapturetimeoffset RTCEncodedFrameMetadata.senderCaptureTimeOffset specification>
+setSenderCaptureTimeOffset :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> Double -> m ()
+setSenderCaptureTimeOffset self val = liftDOM (void ((js_setSenderCaptureTimeOffset ((Types.toRTCEncodedFrameMetadata self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"senderCaptureTimeOffset\"]; })"
+        js_getSenderCaptureTimeOffset :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-sendercapturetimeoffset RTCEncodedFrameMetadata.senderCaptureTimeOffset specification>
+getSenderCaptureTimeOffset :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m (Maybe Double)
+getSenderCaptureTimeOffset self = liftDOM (((js_getSenderCaptureTimeOffset ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-sendercapturetimeoffset RTCEncodedFrameMetadata.senderCaptureTimeOffset specification>
+getSenderCaptureTimeOffsetUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack) => self -> m Double
+getSenderCaptureTimeOffsetUnsafe self = liftDOM ((((js_getSenderCaptureTimeOffset ((Types.toRTCEncodedFrameMetadata self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-sendercapturetimeoffset RTCEncodedFrameMetadata.senderCaptureTimeOffset specification>
+getSenderCaptureTimeOffsetUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self) => self -> m Double
+getSenderCaptureTimeOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getSenderCaptureTimeOffset ((Types.toRTCEncodedFrameMetadata self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mimeType\"] = $2; })"
+        js_setMimeType :: RTCEncodedFrameMetadata -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-mimetype RTCEncodedFrameMetadata.mimeType specification>
+setMimeType :: (MonadDOM m, IsRTCEncodedFrameMetadata self, ToJSString val) => self -> val -> m ()
+setMimeType self val = liftDOM (void ((js_setMimeType ((Types.toRTCEncodedFrameMetadata self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mimeType\"]; })"
+        js_getMimeType :: RTCEncodedFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-mimetype RTCEncodedFrameMetadata.mimeType specification>
+getMimeType :: (MonadDOM m, IsRTCEncodedFrameMetadata self, FromJSString result) => self -> m (Maybe result)
+getMimeType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMimeType ((Types.toRTCEncodedFrameMetadata self)))))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-mimetype RTCEncodedFrameMetadata.mimeType specification>
+getMimeTypeUnsafe :: (MonadDOM m, IsRTCEncodedFrameMetadata self, HasCallStack, FromJSString result) => self -> m result
+getMimeTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMimeType ((Types.toRTCEncodedFrameMetadata self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedframemetadata-mimetype RTCEncodedFrameMetadata.mimeType specification>
+getMimeTypeUnchecked :: (MonadDOM m, IsRTCEncodedFrameMetadata self, FromJSString result) => self -> m result
+getMimeTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMimeType ((Types.toRTCEncodedFrameMetadata self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrame.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrame.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrame.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrame
+       (js_newRTCEncodedVideoFrame, js_getMetadata, js_getType, js_setData, js_getData, newRTCEncodedVideoFrame, getMetadata, getMetadata_, getType, setData, getData, RTCEncodedVideoFrame(..), gTypeRTCEncodedVideoFrame)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCEncodedVideoFrame\"]($1, $2); })"
+        js_newRTCEncodedVideoFrame :: RTCEncodedVideoFrame -> JSVal -> IO RTCEncodedVideoFrame
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/RTCEncodedVideoFrame MDN RTCEncodedVideoFrame. documentation>
+newRTCEncodedVideoFrame :: (MonadDOM m) => RTCEncodedVideoFrame -> Maybe RTCEncodedVideoFrameOptions -> m RTCEncodedVideoFrame
+newRTCEncodedVideoFrame originalFrame options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newRTCEncodedVideoFrame (originalFrame) a2'))
+
+foreign import javascript safe "(($1) => { return $1[\"getMetadata\"](); })"
+        js_getMetadata :: RTCEncodedVideoFrame -> IO RTCEncodedVideoFrameMetadata
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/getMetadata MDN RTCEncodedVideoFrame.getMetadata documentation>
+getMetadata :: (MonadDOM m) => RTCEncodedVideoFrame -> m RTCEncodedVideoFrameMetadata
+getMetadata self = liftDOM ((js_getMetadata (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/getMetadata MDN RTCEncodedVideoFrame.getMetadata documentation>
+getMetadata_ :: (MonadDOM m) => RTCEncodedVideoFrame -> m ()
+getMetadata_ self = liftDOM (void ((js_getMetadata (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: RTCEncodedVideoFrame -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/type MDN RTCEncodedVideoFrame.type documentation>
+getType :: (MonadDOM m) => RTCEncodedVideoFrame -> m EncodedVideoChunkType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: RTCEncodedVideoFrame -> ArrayBuffer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/data MDN RTCEncodedVideoFrame.data documentation>
+setData :: (MonadDOM m, IsArrayBuffer val) => RTCEncodedVideoFrame -> val -> m ()
+setData self val = liftDOM (void ((js_setData (self) (Types.toArrayBuffer val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: RTCEncodedVideoFrame -> IO ArrayBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/data MDN RTCEncodedVideoFrame.data documentation>
+getData :: (MonadDOM m) => RTCEncodedVideoFrame -> m ArrayBuffer
+getData self = liftDOM ((js_getData (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrameMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrameMetadata.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrameMetadata
+       (js_newRTCEncodedVideoFrameMetadata, js_setFrameId, js_getFrameId, js_setDependencies, js_getDependencies, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setSpatialIndex, js_getSpatialIndex, js_setTemporalIndex, js_getTemporalIndex, js_setTimestamp, js_getTimestamp, newRTCEncodedVideoFrameMetadata, setFrameId, getFrameId, getFrameIdUnsafe, getFrameIdUnchecked, setDependencies, getDependencies, getDependenciesUnsafe, getDependenciesUnchecked, setWidth, getWidth, getWidthUnsafe, getWidthUnchecked, setHeight, getHeight, getHeightUnsafe, getHeightUnchecked, setSpatialIndex, getSpatialIndex, getSpatialIndexUnsafe, getSpatialIndexUnchecked, setTemporalIndex, getTemporalIndex, getTemporalIndexUnsafe, getTemporalIndexUnchecked, setTimestamp, getTimestamp, getTimestampUnsafe, getTimestampUnchecked, RTCEncodedVideoFrameMetadata(..), gTypeRTCEncodedVideoFrameMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCEncodedVideoFrameMetadata :: IO RTCEncodedVideoFrameMetadata
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedvideoframemetadata RTCEncodedVideoFrameMetadata specification>
+newRTCEncodedVideoFrameMetadata :: (MonadDOM m) => m RTCEncodedVideoFrameMetadata
+newRTCEncodedVideoFrameMetadata = liftDOM ((js_newRTCEncodedVideoFrameMetadata))
+
+foreign import javascript safe "(($1, $2) => { $1[\"frameId\"] = $2; })"
+        js_setFrameId :: RTCEncodedVideoFrameMetadata -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-frameid RTCEncodedVideoFrameMetadata.frameId specification>
+setFrameId :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word53 -> m ()
+setFrameId self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFrameId (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameId\"]; })"
+        js_getFrameId :: RTCEncodedVideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-frameid RTCEncodedVideoFrameMetadata.frameId specification>
+getFrameId :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word53)
+getFrameId self = liftDOM (((js_getFrameId (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-frameid RTCEncodedVideoFrameMetadata.frameId specification>
+getFrameIdUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word53
+getFrameIdUnsafe self = liftDOM ((((js_getFrameId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-frameid RTCEncodedVideoFrameMetadata.frameId specification>
+getFrameIdUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m Word53
+getFrameIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dependencies\"] = $2; })"
+        js_setDependencies :: RTCEncodedVideoFrameMetadata -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies RTCEncodedVideoFrameMetadata.dependencies specification>
+setDependencies :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> [Word53] -> m ()
+setDependencies self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDependencies (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dependencies\"]; })"
+        js_getDependencies :: RTCEncodedVideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies RTCEncodedVideoFrameMetadata.dependencies specification>
+getDependencies :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe [Word53])
+getDependencies self = liftDOM (((js_getDependencies (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies RTCEncodedVideoFrameMetadata.dependencies specification>
+getDependenciesUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m [Word53]
+getDependenciesUnsafe self = liftDOM ((((js_getDependencies (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies RTCEncodedVideoFrameMetadata.dependencies specification>
+getDependenciesUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m [Word53]
+getDependenciesUnchecked self = liftDOM (((js_getDependencies (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: RTCEncodedVideoFrameMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-width RTCEncodedVideoFrameMetadata.width specification>
+setWidth :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: RTCEncodedVideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-width RTCEncodedVideoFrameMetadata.width specification>
+getWidth :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getWidth self = liftDOM (((js_getWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-width RTCEncodedVideoFrameMetadata.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getWidthUnsafe self = liftDOM ((((js_getWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-width RTCEncodedVideoFrameMetadata.width specification>
+getWidthUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m Word
+getWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: RTCEncodedVideoFrameMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-height RTCEncodedVideoFrameMetadata.height specification>
+setHeight :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: RTCEncodedVideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-height RTCEncodedVideoFrameMetadata.height specification>
+getHeight :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getHeight self = liftDOM (((js_getHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-height RTCEncodedVideoFrameMetadata.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getHeightUnsafe self = liftDOM ((((js_getHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-height RTCEncodedVideoFrameMetadata.height specification>
+getHeightUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m Word
+getHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"spatialIndex\"] = $2; })"
+        js_setSpatialIndex :: RTCEncodedVideoFrameMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex RTCEncodedVideoFrameMetadata.spatialIndex specification>
+setSpatialIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setSpatialIndex self val = liftDOM (void ((js_setSpatialIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"spatialIndex\"]; })"
+        js_getSpatialIndex :: RTCEncodedVideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex RTCEncodedVideoFrameMetadata.spatialIndex specification>
+getSpatialIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getSpatialIndex self = liftDOM (((js_getSpatialIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex RTCEncodedVideoFrameMetadata.spatialIndex specification>
+getSpatialIndexUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getSpatialIndexUnsafe self = liftDOM ((((js_getSpatialIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex RTCEncodedVideoFrameMetadata.spatialIndex specification>
+getSpatialIndexUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m Word
+getSpatialIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getSpatialIndex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"temporalIndex\"] = $2; })"
+        js_setTemporalIndex :: RTCEncodedVideoFrameMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex RTCEncodedVideoFrameMetadata.temporalIndex specification>
+setTemporalIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setTemporalIndex self val = liftDOM (void ((js_setTemporalIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"temporalIndex\"]; })"
+        js_getTemporalIndex :: RTCEncodedVideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex RTCEncodedVideoFrameMetadata.temporalIndex specification>
+getTemporalIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getTemporalIndex self = liftDOM (((js_getTemporalIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex RTCEncodedVideoFrameMetadata.temporalIndex specification>
+getTemporalIndexUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getTemporalIndexUnsafe self = liftDOM ((((js_getTemporalIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex RTCEncodedVideoFrameMetadata.temporalIndex specification>
+getTemporalIndexUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m Word
+getTemporalIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getTemporalIndex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: RTCEncodedVideoFrameMetadata -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-timestamp RTCEncodedVideoFrameMetadata.timestamp specification>
+setTimestamp :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimestamp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: RTCEncodedVideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-timestamp RTCEncodedVideoFrameMetadata.timestamp specification>
+getTimestamp :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Int53)
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-timestamp RTCEncodedVideoFrameMetadata.timestamp specification>
+getTimestampUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Int53
+getTimestampUnsafe self = liftDOM ((((js_getTimestamp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-timestamp RTCEncodedVideoFrameMetadata.timestamp specification>
+getTimestampUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m Int53
+getTimestampUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimestamp (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrameOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrameOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCEncodedVideoFrameOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCEncodedVideoFrameOptions
+       (js_newRTCEncodedVideoFrameOptions, js_setMetadata, js_getMetadata, newRTCEncodedVideoFrameOptions, setMetadata, getMetadata, getMetadataUnsafe, getMetadataUnchecked, RTCEncodedVideoFrameOptions(..), gTypeRTCEncodedVideoFrameOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCEncodedVideoFrameOptions :: IO RTCEncodedVideoFrameOptions
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedvideoframeoptions RTCEncodedVideoFrameOptions specification>
+newRTCEncodedVideoFrameOptions :: (MonadDOM m) => m RTCEncodedVideoFrameOptions
+newRTCEncodedVideoFrameOptions = liftDOM ((js_newRTCEncodedVideoFrameOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"metadata\"] = $2; })"
+        js_setMetadata :: RTCEncodedVideoFrameOptions -> RTCEncodedVideoFrameMetadata -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframeoptions-metadata RTCEncodedVideoFrameOptions.metadata specification>
+setMetadata :: (MonadDOM m) => RTCEncodedVideoFrameOptions -> RTCEncodedVideoFrameMetadata -> m ()
+setMetadata self val = liftDOM (void ((js_setMetadata (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"metadata\"]; })"
+        js_getMetadata :: RTCEncodedVideoFrameOptions -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframeoptions-metadata RTCEncodedVideoFrameOptions.metadata specification>
+getMetadata :: (MonadDOM m) => RTCEncodedVideoFrameOptions -> m (Maybe RTCEncodedVideoFrameMetadata)
+getMetadata self = liftDOM (((js_getMetadata (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframeoptions-metadata RTCEncodedVideoFrameOptions.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameOptions -> m RTCEncodedVideoFrameMetadata
+getMetadataUnsafe self = liftDOM ((((js_getMetadata (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframeoptions-metadata RTCEncodedVideoFrameOptions.metadata specification>
+getMetadataUnchecked :: (MonadDOM m) => RTCEncodedVideoFrameOptions -> m RTCEncodedVideoFrameMetadata
+getMetadataUnchecked self = liftDOM ((pFromJSVal <$> (js_getMetadata (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCError.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCError.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCError
+       (js_newRTCError, js_getErrorDetail, js_getSdpLineNumber, js_getSctpCauseCode, js_getReceivedAlert, js_getSentAlert, newRTCError, getErrorDetail, getSdpLineNumber, getSdpLineNumberUnsafe, getSdpLineNumberUnchecked, getSctpCauseCode, getSctpCauseCodeUnsafe, getSctpCauseCodeUnchecked, getReceivedAlert, getReceivedAlertUnsafe, getReceivedAlertUnchecked, getSentAlert, getSentAlertUnsafe, getSentAlertUnchecked, RTCError(..), gTypeRTCError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCError\"]($1, $2); })"
+        js_newRTCError :: RTCErrorInit -> (Optional JSString) -> IO RTCError
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/RTCError MDN RTCError. documentation>
+newRTCError :: (MonadDOM m, ToJSString message) => RTCErrorInit -> Maybe message -> m RTCError
+newRTCError init message = liftDOM ((js_newRTCError (init) (toOptionalJSString message)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"errorDetail\"]; })"
+        js_getErrorDetail :: RTCError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/errorDetail MDN RTCError.errorDetail documentation>
+getErrorDetail :: (MonadDOM m) => RTCError -> m RTCErrorDetailType
+getErrorDetail self = liftDOM (((js_getErrorDetail (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdpLineNumber\"]; })"
+        js_getSdpLineNumber :: RTCError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sdpLineNumber MDN RTCError.sdpLineNumber documentation>
+getSdpLineNumber :: (MonadDOM m) => RTCError -> m (Maybe Int)
+getSdpLineNumber self = liftDOM (((js_getSdpLineNumber (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sdpLineNumber MDN RTCError.sdpLineNumber documentation>
+getSdpLineNumberUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Int
+getSdpLineNumberUnsafe self = liftDOM ((((js_getSdpLineNumber (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sdpLineNumber MDN RTCError.sdpLineNumber documentation>
+getSdpLineNumberUnchecked :: (MonadDOM m) => RTCError -> m Int
+getSdpLineNumberUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdpLineNumber (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sctpCauseCode\"]; })"
+        js_getSctpCauseCode :: RTCError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sctpCauseCode MDN RTCError.sctpCauseCode documentation>
+getSctpCauseCode :: (MonadDOM m) => RTCError -> m (Maybe Int)
+getSctpCauseCode self = liftDOM (((js_getSctpCauseCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sctpCauseCode MDN RTCError.sctpCauseCode documentation>
+getSctpCauseCodeUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Int
+getSctpCauseCodeUnsafe self = liftDOM ((((js_getSctpCauseCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sctpCauseCode MDN RTCError.sctpCauseCode documentation>
+getSctpCauseCodeUnchecked :: (MonadDOM m) => RTCError -> m Int
+getSctpCauseCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSctpCauseCode (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"receivedAlert\"]; })"
+        js_getReceivedAlert :: RTCError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/receivedAlert MDN RTCError.receivedAlert documentation>
+getReceivedAlert :: (MonadDOM m) => RTCError -> m (Maybe Word)
+getReceivedAlert self = liftDOM (((js_getReceivedAlert (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/receivedAlert MDN RTCError.receivedAlert documentation>
+getReceivedAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Word
+getReceivedAlertUnsafe self = liftDOM ((((js_getReceivedAlert (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/receivedAlert MDN RTCError.receivedAlert documentation>
+getReceivedAlertUnchecked :: (MonadDOM m) => RTCError -> m Word
+getReceivedAlertUnchecked self = liftDOM ((pFromJSVal <$> (js_getReceivedAlert (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sentAlert\"]; })"
+        js_getSentAlert :: RTCError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sentAlert MDN RTCError.sentAlert documentation>
+getSentAlert :: (MonadDOM m) => RTCError -> m (Maybe Word)
+getSentAlert self = liftDOM (((js_getSentAlert (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sentAlert MDN RTCError.sentAlert documentation>
+getSentAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Word
+getSentAlertUnsafe self = liftDOM ((((js_getSentAlert (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sentAlert MDN RTCError.sentAlert documentation>
+getSentAlertUnchecked :: (MonadDOM m) => RTCError -> m Word
+getSentAlertUnchecked self = liftDOM ((pFromJSVal <$> (js_getSentAlert (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCErrorEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCErrorEvent
+       (js_newRTCErrorEvent, js_getError, newRTCErrorEvent, getError, RTCErrorEvent(..), gTypeRTCErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCErrorEvent\"]($1, $2); })"
+        js_newRTCErrorEvent :: JSString -> RTCErrorEventInit -> IO RTCErrorEvent
+-- | <https://developer.mozilla.org/docs/Web/API/RTCErrorEvent/RTCErrorEvent MDN RTCErrorEvent. documentation>
+newRTCErrorEvent :: (MonadDOM m, ToJSString type') => type' -> RTCErrorEventInit -> m RTCErrorEvent
+newRTCErrorEvent type' eventInitDict = liftDOM ((js_newRTCErrorEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: RTCErrorEvent -> IO RTCError
+-- | <https://developer.mozilla.org/docs/Web/API/RTCErrorEvent/error MDN RTCErrorEvent.error documentation>
+getError :: (MonadDOM m) => RTCErrorEvent -> m RTCError
+getError self = liftDOM ((js_getError (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCErrorEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCErrorEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCErrorEventInit
+       (js_newRTCErrorEventInit, js_setError, js_getError, newRTCErrorEventInit, setError, getError, RTCErrorEventInit(..), gTypeRTCErrorEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"error\": $1}); })"
+        js_newRTCErrorEventInit :: RTCError -> IO RTCErrorEventInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerroreventinit RTCErrorEventInit specification>
+newRTCErrorEventInit :: (MonadDOM m) => RTCError -> m RTCErrorEventInit
+newRTCErrorEventInit error = liftDOM ((js_newRTCErrorEventInit (error)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: RTCErrorEventInit -> RTCError -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerroreventinit-error RTCErrorEventInit.error specification>
+setError :: (MonadDOM m) => RTCErrorEventInit -> RTCError -> m ()
+setError self val = liftDOM (void ((js_setError (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: RTCErrorEventInit -> IO RTCError
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerroreventinit-error RTCErrorEventInit.error specification>
+getError :: (MonadDOM m) => RTCErrorEventInit -> m RTCError
+getError self = liftDOM ((js_getError (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCErrorInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCErrorInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCErrorInit.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCErrorInit
+       (js_newRTCErrorInit, js_setErrorDetail, js_getErrorDetail, js_setSdpLineNumber, js_getSdpLineNumber, js_setSctpCauseCode, js_getSctpCauseCode, js_setReceivedAlert, js_getReceivedAlert, js_setSentAlert, js_getSentAlert, js_setHttpRequestStatusCode, js_getHttpRequestStatusCode, newRTCErrorInit, setErrorDetail, getErrorDetail, setSdpLineNumber, getSdpLineNumber, getSdpLineNumberUnsafe, getSdpLineNumberUnchecked, setSctpCauseCode, getSctpCauseCode, getSctpCauseCodeUnsafe, getSctpCauseCodeUnchecked, setReceivedAlert, getReceivedAlert, getReceivedAlertUnsafe, getReceivedAlertUnchecked, setSentAlert, getSentAlert, getSentAlertUnsafe, getSentAlertUnchecked, setHttpRequestStatusCode, getHttpRequestStatusCode, getHttpRequestStatusCodeUnsafe, getHttpRequestStatusCodeUnchecked, RTCErrorInit(..), gTypeRTCErrorInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"errorDetail\": $1}); })"
+        js_newRTCErrorInit :: JSVal -> IO RTCErrorInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit RTCErrorInit specification>
+newRTCErrorInit :: (MonadDOM m) => RTCErrorDetailType -> m RTCErrorInit
+newRTCErrorInit errorDetail = liftDOM (((toJSVal errorDetail) >>= \a1' -> js_newRTCErrorInit a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"errorDetail\"] = $2; })"
+        js_setErrorDetail :: RTCErrorInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-errordetail RTCErrorInit.errorDetail specification>
+setErrorDetail :: (MonadDOM m) => RTCErrorInit -> RTCErrorDetailType -> m ()
+setErrorDetail self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setErrorDetail (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"errorDetail\"]; })"
+        js_getErrorDetail :: RTCErrorInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-errordetail RTCErrorInit.errorDetail specification>
+getErrorDetail :: (MonadDOM m) => RTCErrorInit -> m RTCErrorDetailType
+getErrorDetail self = liftDOM (((js_getErrorDetail (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sdpLineNumber\"] = $2; })"
+        js_setSdpLineNumber :: RTCErrorInit -> Int -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sdplinenumber RTCErrorInit.sdpLineNumber specification>
+setSdpLineNumber :: (MonadDOM m) => RTCErrorInit -> Int -> m ()
+setSdpLineNumber self val = liftDOM (void ((js_setSdpLineNumber (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdpLineNumber\"]; })"
+        js_getSdpLineNumber :: RTCErrorInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sdplinenumber RTCErrorInit.sdpLineNumber specification>
+getSdpLineNumber :: (MonadDOM m) => RTCErrorInit -> m (Maybe Int)
+getSdpLineNumber self = liftDOM (((js_getSdpLineNumber (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sdplinenumber RTCErrorInit.sdpLineNumber specification>
+getSdpLineNumberUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Int
+getSdpLineNumberUnsafe self = liftDOM ((((js_getSdpLineNumber (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sdplinenumber RTCErrorInit.sdpLineNumber specification>
+getSdpLineNumberUnchecked :: (MonadDOM m) => RTCErrorInit -> m Int
+getSdpLineNumberUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdpLineNumber (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sctpCauseCode\"] = $2; })"
+        js_setSctpCauseCode :: RTCErrorInit -> Int -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sctpcausecode RTCErrorInit.sctpCauseCode specification>
+setSctpCauseCode :: (MonadDOM m) => RTCErrorInit -> Int -> m ()
+setSctpCauseCode self val = liftDOM (void ((js_setSctpCauseCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sctpCauseCode\"]; })"
+        js_getSctpCauseCode :: RTCErrorInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sctpcausecode RTCErrorInit.sctpCauseCode specification>
+getSctpCauseCode :: (MonadDOM m) => RTCErrorInit -> m (Maybe Int)
+getSctpCauseCode self = liftDOM (((js_getSctpCauseCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sctpcausecode RTCErrorInit.sctpCauseCode specification>
+getSctpCauseCodeUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Int
+getSctpCauseCodeUnsafe self = liftDOM ((((js_getSctpCauseCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sctpcausecode RTCErrorInit.sctpCauseCode specification>
+getSctpCauseCodeUnchecked :: (MonadDOM m) => RTCErrorInit -> m Int
+getSctpCauseCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSctpCauseCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"receivedAlert\"] = $2; })"
+        js_setReceivedAlert :: RTCErrorInit -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-receivedalert RTCErrorInit.receivedAlert specification>
+setReceivedAlert :: (MonadDOM m) => RTCErrorInit -> Word -> m ()
+setReceivedAlert self val = liftDOM (void ((js_setReceivedAlert (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"receivedAlert\"]; })"
+        js_getReceivedAlert :: RTCErrorInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-receivedalert RTCErrorInit.receivedAlert specification>
+getReceivedAlert :: (MonadDOM m) => RTCErrorInit -> m (Maybe Word)
+getReceivedAlert self = liftDOM (((js_getReceivedAlert (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-receivedalert RTCErrorInit.receivedAlert specification>
+getReceivedAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Word
+getReceivedAlertUnsafe self = liftDOM ((((js_getReceivedAlert (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-receivedalert RTCErrorInit.receivedAlert specification>
+getReceivedAlertUnchecked :: (MonadDOM m) => RTCErrorInit -> m Word
+getReceivedAlertUnchecked self = liftDOM ((pFromJSVal <$> (js_getReceivedAlert (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sentAlert\"] = $2; })"
+        js_setSentAlert :: RTCErrorInit -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sentalert RTCErrorInit.sentAlert specification>
+setSentAlert :: (MonadDOM m) => RTCErrorInit -> Word -> m ()
+setSentAlert self val = liftDOM (void ((js_setSentAlert (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sentAlert\"]; })"
+        js_getSentAlert :: RTCErrorInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sentalert RTCErrorInit.sentAlert specification>
+getSentAlert :: (MonadDOM m) => RTCErrorInit -> m (Maybe Word)
+getSentAlert self = liftDOM (((js_getSentAlert (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sentalert RTCErrorInit.sentAlert specification>
+getSentAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Word
+getSentAlertUnsafe self = liftDOM ((((js_getSentAlert (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sentalert RTCErrorInit.sentAlert specification>
+getSentAlertUnchecked :: (MonadDOM m) => RTCErrorInit -> m Word
+getSentAlertUnchecked self = liftDOM ((pFromJSVal <$> (js_getSentAlert (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"httpRequestStatusCode\"] = $2; })"
+        js_setHttpRequestStatusCode :: RTCErrorInit -> Int -> IO ()
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcerrorinit-httprequeststatuscode RTCErrorInit.httpRequestStatusCode specification>
+setHttpRequestStatusCode :: (MonadDOM m) => RTCErrorInit -> Int -> m ()
+setHttpRequestStatusCode self val = liftDOM (void ((js_setHttpRequestStatusCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"httpRequestStatusCode\"]; })"
+        js_getHttpRequestStatusCode :: RTCErrorInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcerrorinit-httprequeststatuscode RTCErrorInit.httpRequestStatusCode specification>
+getHttpRequestStatusCode :: (MonadDOM m) => RTCErrorInit -> m (Maybe Int)
+getHttpRequestStatusCode self = liftDOM (((js_getHttpRequestStatusCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcerrorinit-httprequeststatuscode RTCErrorInit.httpRequestStatusCode specification>
+getHttpRequestStatusCodeUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Int
+getHttpRequestStatusCodeUnsafe self = liftDOM ((((js_getHttpRequestStatusCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcerrorinit-httprequeststatuscode RTCErrorInit.httpRequestStatusCode specification>
+getHttpRequestStatusCodeUnchecked :: (MonadDOM m) => RTCErrorInit -> m Int
+getHttpRequestStatusCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getHttpRequestStatusCode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
@@ -1,97 +1,221 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
-       (js_newRTCIceCandidate, newRTCIceCandidate, js_getCandidate,
-        getCandidate, js_getSdpMid, getSdpMid, getSdpMidUnsafe,
-        getSdpMidUnchecked, js_getSdpMLineIndex, getSdpMLineIndex,
-        getSdpMLineIndexUnsafe, getSdpMLineIndexUnchecked,
-        RTCIceCandidate(..), gTypeRTCIceCandidate)
+       (js_newRTCIceCandidate, js_toJSON, js_getCandidate, js_getSdpMid, js_getSdpMLineIndex, js_getFoundation, js_getComponent, js_getPriority, js_getAddress, js_getProtocol, js_getPort, js_getType, js_getTcpType, js_getRelatedAddress, js_getRelatedPort, js_getUsernameFragment, newRTCIceCandidate, toJSON, toJSON_, getCandidate, getSdpMid, getSdpMidUnsafe, getSdpMidUnchecked, getSdpMLineIndex, getSdpMLineIndexUnsafe, getSdpMLineIndexUnchecked, getFoundation, getFoundationUnsafe, getFoundationUnchecked, getComponent, getComponentUnsafe, getComponentUnchecked, getPriority, getPriorityUnsafe, getPriorityUnchecked, getAddress, getAddressUnsafe, getAddressUnchecked, getProtocol, getProtocolUnsafe, getProtocolUnchecked, getPort, getPortUnsafe, getPortUnchecked, getType, getTypeUnsafe, getTypeUnchecked, getTcpType, getTcpTypeUnsafe, getTcpTypeUnchecked, getRelatedAddress, getRelatedAddressUnsafe, getRelatedAddressUnchecked, getRelatedPort, getRelatedPortUnsafe, getRelatedPortUnchecked, getUsernameFragment, getUsernameFragmentUnsafe, getUsernameFragmentUnchecked, RTCIceCandidate(..), gTypeRTCIceCandidate)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1) => { return new window[\"RTCIceCandidate\"]($1); })" js_newRTCIceCandidate ::
-        RTCIceCandidateInit -> IO RTCIceCandidate
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
-newRTCIceCandidate ::
-                   (MonadIO m) => RTCIceCandidateInit -> m RTCIceCandidate
-newRTCIceCandidate candidateInitDict
-  = liftIO (js_newRTCIceCandidate candidateInitDict)
- 
+foreign import javascript safe "(($1) => { return new globalThis[\"RTCIceCandidate\"]($1); })"
+        js_newRTCIceCandidate :: JSVal -> IO RTCIceCandidate
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/RTCIceCandidate MDN RTCIceCandidate. documentation>
+newRTCIceCandidate :: (MonadDOM m) => Maybe RTCLocalIceCandidateInit -> m RTCIceCandidate
+newRTCIceCandidate candidateInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal candidateInitDict) >>= \a1' -> js_newRTCIceCandidate a1'))
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: RTCIceCandidate -> IO RTCIceCandidateInit
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/toJSON MDN RTCIceCandidate.toJSON documentation>
+toJSON :: (MonadDOM m) => RTCIceCandidate -> m RTCIceCandidateInit
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/toJSON MDN RTCIceCandidate.toJSON documentation>
+toJSON_ :: (MonadDOM m) => RTCIceCandidate -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
         js_getCandidate :: RTCIceCandidate -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/candidate MDN RTCIceCandidate.candidate documentation>
+getCandidate :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getCandidate self = liftDOM ((fromJSString <$> (js_getCandidate (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.candidate Mozilla RTCIceCandidate.candidate documentation> 
-getCandidate ::
-             (MonadIO m, FromJSString result) => RTCIceCandidate -> m result
-getCandidate self
-  = liftIO (fromJSString <$> (js_getCandidate self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sdpMid\"]; })" js_getSdpMid ::
-        RTCIceCandidate -> IO (Nullable JSString)
+foreign import javascript unsafe "(($1) => { return $1[\"sdpMid\"]; })"
+        js_getSdpMid :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMid MDN RTCIceCandidate.sdpMid documentation>
+getSdpMid :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m (Maybe result)
+getSdpMid self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSdpMid (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
-getSdpMid ::
-          (MonadIO m, FromJSString result) =>
-            RTCIceCandidate -> m (Maybe result)
-getSdpMid self = liftIO (fromMaybeJSString <$> (js_getSdpMid self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMid MDN RTCIceCandidate.sdpMid documentation>
+getSdpMidUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceCandidate -> m result
+getSdpMidUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSdpMid (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
-getSdpMidUnsafe ::
-                (MonadIO m, HasCallStack, FromJSString result) =>
-                  RTCIceCandidate -> m result
-getSdpMidUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getSdpMid self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMid MDN RTCIceCandidate.sdpMid documentation>
+getSdpMidUnchecked :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getSdpMidUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdpMid (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
-getSdpMidUnchecked ::
-                   (MonadIO m, FromJSString result) => RTCIceCandidate -> m result
-getSdpMidUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getSdpMid self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"sdpMLineIndex\"]; })"
-        js_getSdpMLineIndex :: RTCIceCandidate -> IO (Nullable Word)
+        js_getSdpMLineIndex :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMLineIndex MDN RTCIceCandidate.sdpMLineIndex documentation>
+getSdpMLineIndex :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getSdpMLineIndex self = liftDOM (((js_getSdpMLineIndex (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
-getSdpMLineIndex ::
-                 (MonadIO m) => RTCIceCandidate -> m (Maybe Word)
-getSdpMLineIndex self
-  = liftIO (nullableToMaybe <$> (js_getSdpMLineIndex self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMLineIndex MDN RTCIceCandidate.sdpMLineIndex documentation>
+getSdpMLineIndexUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getSdpMLineIndexUnsafe self = liftDOM ((((js_getSdpMLineIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
-getSdpMLineIndexUnsafe ::
-                       (MonadIO m, HasCallStack) => RTCIceCandidate -> m Word
-getSdpMLineIndexUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSdpMLineIndex self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMLineIndex MDN RTCIceCandidate.sdpMLineIndex documentation>
+getSdpMLineIndexUnchecked :: (MonadDOM m) => RTCIceCandidate -> m Word
+getSdpMLineIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdpMLineIndex (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
-getSdpMLineIndexUnchecked ::
-                          (MonadIO m) => RTCIceCandidate -> m Word
-getSdpMLineIndexUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getSdpMLineIndex self))
+foreign import javascript unsafe "(($1) => { return $1[\"foundation\"]; })"
+        js_getFoundation :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/foundation MDN RTCIceCandidate.foundation documentation>
+getFoundation :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m (Maybe result)
+getFoundation self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getFoundation (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/foundation MDN RTCIceCandidate.foundation documentation>
+getFoundationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceCandidate -> m result
+getFoundationUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getFoundation (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/foundation MDN RTCIceCandidate.foundation documentation>
+getFoundationUnchecked :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getFoundationUnchecked self = liftDOM ((pFromJSVal <$> (js_getFoundation (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"component\"]; })"
+        js_getComponent :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/component MDN RTCIceCandidate.component documentation>
+getComponent :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceComponent)
+getComponent self = liftDOM (((js_getComponent (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/component MDN RTCIceCandidate.component documentation>
+getComponentUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceComponent
+getComponentUnsafe self = liftDOM ((((js_getComponent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/component MDN RTCIceCandidate.component documentation>
+getComponentUnchecked :: (MonadDOM m) => RTCIceCandidate -> m RTCIceComponent
+getComponentUnchecked self = liftDOM ((pFromJSVal <$> (js_getComponent (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/priority MDN RTCIceCandidate.priority documentation>
+getPriority :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/priority MDN RTCIceCandidate.priority documentation>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/priority MDN RTCIceCandidate.priority documentation>
+getPriorityUnchecked :: (MonadDOM m) => RTCIceCandidate -> m Word
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"address\"]; })"
+        js_getAddress :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/address MDN RTCIceCandidate.address documentation>
+getAddress :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m (Maybe result)
+getAddress self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAddress (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/address MDN RTCIceCandidate.address documentation>
+getAddressUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceCandidate -> m result
+getAddressUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAddress (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/address MDN RTCIceCandidate.address documentation>
+getAddressUnchecked :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getAddress (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/protocol MDN RTCIceCandidate.protocol documentation>
+getProtocol :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceProtocol)
+getProtocol self = liftDOM (((js_getProtocol (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/protocol MDN RTCIceCandidate.protocol documentation>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceProtocol
+getProtocolUnsafe self = liftDOM ((((js_getProtocol (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/protocol MDN RTCIceCandidate.protocol documentation>
+getProtocolUnchecked :: (MonadDOM m) => RTCIceCandidate -> m RTCIceProtocol
+getProtocolUnchecked self = liftDOM ((pFromJSVal <$> (js_getProtocol (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/port MDN RTCIceCandidate.port documentation>
+getPort :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getPort self = liftDOM (((js_getPort (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/port MDN RTCIceCandidate.port documentation>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getPortUnsafe self = liftDOM ((((js_getPort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/port MDN RTCIceCandidate.port documentation>
+getPortUnchecked :: (MonadDOM m) => RTCIceCandidate -> m Word
+getPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPort (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/type MDN RTCIceCandidate.type documentation>
+getType :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceCandidateType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/type MDN RTCIceCandidate.type documentation>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceCandidateType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/type MDN RTCIceCandidate.type documentation>
+getTypeUnchecked :: (MonadDOM m) => RTCIceCandidate -> m RTCIceCandidateType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tcpType\"]; })"
+        js_getTcpType :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/tcpType MDN RTCIceCandidate.tcpType documentation>
+getTcpType :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceTcpCandidateType)
+getTcpType self = liftDOM (((js_getTcpType (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/tcpType MDN RTCIceCandidate.tcpType documentation>
+getTcpTypeUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceTcpCandidateType
+getTcpTypeUnsafe self = liftDOM ((((js_getTcpType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/tcpType MDN RTCIceCandidate.tcpType documentation>
+getTcpTypeUnchecked :: (MonadDOM m) => RTCIceCandidate -> m RTCIceTcpCandidateType
+getTcpTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getTcpType (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"relatedAddress\"]; })"
+        js_getRelatedAddress :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedAddress MDN RTCIceCandidate.relatedAddress documentation>
+getRelatedAddress :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m (Maybe result)
+getRelatedAddress self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRelatedAddress (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedAddress MDN RTCIceCandidate.relatedAddress documentation>
+getRelatedAddressUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceCandidate -> m result
+getRelatedAddressUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRelatedAddress (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedAddress MDN RTCIceCandidate.relatedAddress documentation>
+getRelatedAddressUnchecked :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getRelatedAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelatedAddress (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"relatedPort\"]; })"
+        js_getRelatedPort :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedPort MDN RTCIceCandidate.relatedPort documentation>
+getRelatedPort :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getRelatedPort self = liftDOM (((js_getRelatedPort (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedPort MDN RTCIceCandidate.relatedPort documentation>
+getRelatedPortUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getRelatedPortUnsafe self = liftDOM ((((js_getRelatedPort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedPort MDN RTCIceCandidate.relatedPort documentation>
+getRelatedPortUnchecked :: (MonadDOM m) => RTCIceCandidate -> m Word
+getRelatedPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelatedPort (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usernameFragment\"]; })"
+        js_getUsernameFragment :: RTCIceCandidate -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/usernameFragment MDN RTCIceCandidate.usernameFragment documentation>
+getUsernameFragment :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m (Maybe result)
+getUsernameFragment self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUsernameFragment (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/usernameFragment MDN RTCIceCandidate.usernameFragment documentation>
+getUsernameFragmentUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceCandidate -> m result
+getUsernameFragmentUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUsernameFragment (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/usernameFragment MDN RTCIceCandidate.usernameFragment documentation>
+getUsernameFragmentUnchecked :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getUsernameFragmentUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsernameFragment (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent
-       (js_getCandidate, getCandidate, RTCIceCandidateEvent(..),
-        gTypeRTCIceCandidateEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
-        js_getCandidate :: RTCIceCandidateEvent -> IO RTCIceCandidate
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
-getCandidate ::
-             (MonadIO m) => RTCIceCandidateEvent -> m RTCIceCandidate
-getCandidate self = liftIO (js_getCandidate self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCIceCandidateInit
+       (js_newRTCIceCandidateInit, js_setCandidate, js_getCandidate, js_setSdpMid, js_getSdpMid, js_setSdpMLineIndex, js_getSdpMLineIndex, js_setUsernameFragment, js_getUsernameFragment, newRTCIceCandidateInit, setCandidate, getCandidate, getCandidateUnsafe, getCandidateUnchecked, setSdpMid, getSdpMid, getSdpMidUnsafe, getSdpMidUnchecked, setSdpMLineIndex, getSdpMLineIndex, getSdpMLineIndexUnsafe, getSdpMLineIndexUnchecked, setUsernameFragment, getUsernameFragment, getUsernameFragmentUnsafe, getUsernameFragmentUnchecked, RTCIceCandidateInit(..), gTypeRTCIceCandidateInit, IsRTCIceCandidateInit, toRTCIceCandidateInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCIceCandidateInit :: IO RTCIceCandidateInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit RTCIceCandidateInit specification>
+newRTCIceCandidateInit :: (MonadDOM m) => m RTCIceCandidateInit
+newRTCIceCandidateInit = liftDOM ((js_newRTCIceCandidateInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"candidate\"] = $2; })"
+        js_setCandidate :: RTCIceCandidateInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-candidate RTCIceCandidateInit.candidate specification>
+setCandidate :: (MonadDOM m, IsRTCIceCandidateInit self, ToJSString val) => self -> val -> m ()
+setCandidate self val = liftDOM (void ((js_setCandidate ((Types.toRTCIceCandidateInit self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
+        js_getCandidate :: RTCIceCandidateInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-candidate RTCIceCandidateInit.candidate specification>
+getCandidate :: (MonadDOM m, IsRTCIceCandidateInit self, FromJSString result) => self -> m (Maybe result)
+getCandidate self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCandidate ((Types.toRTCIceCandidateInit self)))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-candidate RTCIceCandidateInit.candidate specification>
+getCandidateUnsafe :: (MonadDOM m, IsRTCIceCandidateInit self, HasCallStack, FromJSString result) => self -> m result
+getCandidateUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCandidate ((Types.toRTCIceCandidateInit self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-candidate RTCIceCandidateInit.candidate specification>
+getCandidateUnchecked :: (MonadDOM m, IsRTCIceCandidateInit self, FromJSString result) => self -> m result
+getCandidateUnchecked self = liftDOM ((pFromJSVal <$> (js_getCandidate ((Types.toRTCIceCandidateInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sdpMid\"] = $2; })"
+        js_setSdpMid :: RTCIceCandidateInit -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmid RTCIceCandidateInit.sdpMid specification>
+setSdpMid :: (MonadDOM m, IsRTCIceCandidateInit self, ToJSString val) => self -> Maybe val -> m ()
+setSdpMid self val = liftDOM (void ((js_setSdpMid ((Types.toRTCIceCandidateInit self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdpMid\"]; })"
+        js_getSdpMid :: RTCIceCandidateInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmid RTCIceCandidateInit.sdpMid specification>
+getSdpMid :: (MonadDOM m, IsRTCIceCandidateInit self, FromJSString result) => self -> m (Maybe result)
+getSdpMid self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSdpMid ((Types.toRTCIceCandidateInit self)))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmid RTCIceCandidateInit.sdpMid specification>
+getSdpMidUnsafe :: (MonadDOM m, IsRTCIceCandidateInit self, HasCallStack, FromJSString result) => self -> m result
+getSdpMidUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSdpMid ((Types.toRTCIceCandidateInit self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmid RTCIceCandidateInit.sdpMid specification>
+getSdpMidUnchecked :: (MonadDOM m, IsRTCIceCandidateInit self, FromJSString result) => self -> m result
+getSdpMidUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdpMid ((Types.toRTCIceCandidateInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sdpMLineIndex\"] = $2; })"
+        js_setSdpMLineIndex :: RTCIceCandidateInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmlineindex RTCIceCandidateInit.sdpMLineIndex specification>
+setSdpMLineIndex :: (MonadDOM m, IsRTCIceCandidateInit self) => self -> Maybe Word -> m ()
+setSdpMLineIndex self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSdpMLineIndex ((Types.toRTCIceCandidateInit self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdpMLineIndex\"]; })"
+        js_getSdpMLineIndex :: RTCIceCandidateInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmlineindex RTCIceCandidateInit.sdpMLineIndex specification>
+getSdpMLineIndex :: (MonadDOM m, IsRTCIceCandidateInit self) => self -> m (Maybe Word)
+getSdpMLineIndex self = liftDOM (((js_getSdpMLineIndex ((Types.toRTCIceCandidateInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmlineindex RTCIceCandidateInit.sdpMLineIndex specification>
+getSdpMLineIndexUnsafe :: (MonadDOM m, IsRTCIceCandidateInit self, HasCallStack) => self -> m Word
+getSdpMLineIndexUnsafe self = liftDOM ((((js_getSdpMLineIndex ((Types.toRTCIceCandidateInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmlineindex RTCIceCandidateInit.sdpMLineIndex specification>
+getSdpMLineIndexUnchecked :: (MonadDOM m, IsRTCIceCandidateInit self) => self -> m Word
+getSdpMLineIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdpMLineIndex ((Types.toRTCIceCandidateInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usernameFragment\"] = $2; })"
+        js_setUsernameFragment :: RTCIceCandidateInit -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-usernamefragment RTCIceCandidateInit.usernameFragment specification>
+setUsernameFragment :: (MonadDOM m, IsRTCIceCandidateInit self, ToJSString val) => self -> Maybe val -> m ()
+setUsernameFragment self val = liftDOM (void ((js_setUsernameFragment ((Types.toRTCIceCandidateInit self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usernameFragment\"]; })"
+        js_getUsernameFragment :: RTCIceCandidateInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-usernamefragment RTCIceCandidateInit.usernameFragment specification>
+getUsernameFragment :: (MonadDOM m, IsRTCIceCandidateInit self, FromJSString result) => self -> m (Maybe result)
+getUsernameFragment self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUsernameFragment ((Types.toRTCIceCandidateInit self)))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-usernamefragment RTCIceCandidateInit.usernameFragment specification>
+getUsernameFragmentUnsafe :: (MonadDOM m, IsRTCIceCandidateInit self, HasCallStack, FromJSString result) => self -> m result
+getUsernameFragmentUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUsernameFragment ((Types.toRTCIceCandidateInit self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-usernamefragment RTCIceCandidateInit.usernameFragment specification>
+getUsernameFragmentUnchecked :: (MonadDOM m, IsRTCIceCandidateInit self, FromJSString result) => self -> m result
+getUsernameFragmentUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsernameFragment ((Types.toRTCIceCandidateInit self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidatePair.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidatePair.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidatePair.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCIceCandidatePair
+       (RTCIceCandidatePair(..), gTypeRTCIceCandidatePair)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceServer.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceServer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceServer.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCIceServer
+       (js_newRTCIceServer, js_setUrls, js_getUrls, js_setUsername, js_getUsername, js_setCredential, js_getCredential, newRTCIceServer, setUrls, getUrls, setUsername, getUsername, getUsernameUnsafe, getUsernameUnchecked, setCredential, getCredential, getCredentialUnsafe, getCredentialUnchecked, RTCIceServer(..), gTypeRTCIceServer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"urls\": $1}); })"
+        js_newRTCIceServer :: StringOrSequenceString -> IO RTCIceServer
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver RTCIceServer specification>
+newRTCIceServer :: (MonadDOM m, IsStringOrSequenceString urls) => urls -> m RTCIceServer
+newRTCIceServer urls = liftDOM ((js_newRTCIceServer (Types.toStringOrSequenceString urls)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"urls\"] = $2; })"
+        js_setUrls :: RTCIceServer -> StringOrSequenceString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-urls RTCIceServer.urls specification>
+setUrls :: (MonadDOM m, IsStringOrSequenceString val) => RTCIceServer -> val -> m ()
+setUrls self val = liftDOM (void ((js_setUrls (self) (Types.toStringOrSequenceString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"urls\"]; })"
+        js_getUrls :: RTCIceServer -> IO StringOrSequenceString
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-urls RTCIceServer.urls specification>
+getUrls :: (MonadDOM m) => RTCIceServer -> m StringOrSequenceString
+getUrls self = liftDOM ((js_getUrls (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"username\"] = $2; })"
+        js_setUsername :: RTCIceServer -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-username RTCIceServer.username specification>
+setUsername :: (MonadDOM m, ToJSString val) => RTCIceServer -> val -> m ()
+setUsername self val = liftDOM (void ((js_setUsername (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })"
+        js_getUsername :: RTCIceServer -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-username RTCIceServer.username specification>
+getUsername :: (MonadDOM m, FromJSString result) => RTCIceServer -> m (Maybe result)
+getUsername self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUsername (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-username RTCIceServer.username specification>
+getUsernameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceServer -> m result
+getUsernameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUsername (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-username RTCIceServer.username specification>
+getUsernameUnchecked :: (MonadDOM m, FromJSString result) => RTCIceServer -> m result
+getUsernameUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsername (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credential\"] = $2; })"
+        js_setCredential :: RTCIceServer -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-credential RTCIceServer.credential specification>
+setCredential :: (MonadDOM m, ToJSString val) => RTCIceServer -> val -> m ()
+setCredential self val = liftDOM (void ((js_setCredential (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credential\"]; })"
+        js_getCredential :: RTCIceServer -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-credential RTCIceServer.credential specification>
+getCredential :: (MonadDOM m, FromJSString result) => RTCIceServer -> m (Maybe result)
+getCredential self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCredential (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-credential RTCIceServer.credential specification>
+getCredentialUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceServer -> m result
+getCredentialUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCredential (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-credential RTCIceServer.credential specification>
+getCredentialUnchecked :: (MonadDOM m, FromJSString result) => RTCIceServer -> m result
+getCredentialUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredential (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
@@ -1,44 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCIceTransport
-       (js_getState, getState, js_getGatheringState, getGatheringState,
-        RTCIceTransport(..), gTypeRTCIceTransport)
+       (js_getSelectedCandidatePair, js_getRole, js_getState, js_getGatheringState, getSelectedCandidatePair, getSelectedCandidatePair_, getSelectedCandidatePairUnsafe, getSelectedCandidatePairUnchecked, getRole, getState, getGatheringState, statechange, gatheringstatechange, selectedcandidatepairchange, icecandidateerror, RTCIceTransport(..), gTypeRTCIceTransport)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
-        RTCIceTransport -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport.state Mozilla RTCIceTransport.state documentation> 
-getState ::
-         (MonadIO m) => RTCIceTransport -> m RTCIceTransportState
-getState self = liftIO ((js_getState self) >>= fromJSValUnchecked)
- 
+foreign import javascript safe "(($1) => { return $1[\"getSelectedCandidatePair\"](); })"
+        js_getSelectedCandidatePair :: RTCIceTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/getSelectedCandidatePair MDN RTCIceTransport.getSelectedCandidatePair documentation>
+getSelectedCandidatePair :: (MonadDOM m) => RTCIceTransport -> m (Maybe RTCIceCandidatePair)
+getSelectedCandidatePair self = liftDOM (((js_getSelectedCandidatePair (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/getSelectedCandidatePair MDN RTCIceTransport.getSelectedCandidatePair documentation>
+getSelectedCandidatePair_ :: (MonadDOM m) => RTCIceTransport -> m ()
+getSelectedCandidatePair_ self = liftDOM (void ((js_getSelectedCandidatePair (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/getSelectedCandidatePair MDN RTCIceTransport.getSelectedCandidatePair documentation>
+getSelectedCandidatePairUnsafe :: (MonadDOM m, HasCallStack) => RTCIceTransport -> m RTCIceCandidatePair
+getSelectedCandidatePairUnsafe self = liftDOM ((((js_getSelectedCandidatePair (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/getSelectedCandidatePair MDN RTCIceTransport.getSelectedCandidatePair documentation>
+getSelectedCandidatePairUnchecked :: (MonadDOM m) => RTCIceTransport -> m RTCIceCandidatePair
+getSelectedCandidatePairUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelectedCandidatePair (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"role\"]; })"
+        js_getRole :: RTCIceTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/role MDN RTCIceTransport.role documentation>
+getRole :: (MonadDOM m) => RTCIceTransport -> m RTCIceRole
+getRole self = liftDOM (((js_getRole (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: RTCIceTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/state MDN RTCIceTransport.state documentation>
+getState :: (MonadDOM m) => RTCIceTransport -> m RTCIceTransportState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
 foreign import javascript unsafe "(($1) => { return $1[\"gatheringState\"]; })"
         js_getGatheringState :: RTCIceTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/gatheringState MDN RTCIceTransport.gatheringState documentation>
+getGatheringState :: (MonadDOM m) => RTCIceTransport -> m RTCIceGathererState
+getGatheringState self = liftDOM (((js_getGatheringState (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport.gatheringState Mozilla RTCIceTransport.gatheringState documentation> 
-getGatheringState ::
-                  (MonadIO m) => RTCIceTransport -> m RTCIceGatheringState
-getGatheringState self
-  = liftIO ((js_getGatheringState self) >>= fromJSValUnchecked)
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicetransport-onstatechange statechange event>
+statechange :: EventName RTCIceTransport Event
+statechange = unsafeEventName (toJSString "statechange")
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicetransport-ongatheringstatechange gatheringstatechange event>
+gatheringstatechange :: EventName RTCIceTransport Event
+gatheringstatechange = unsafeEventName (toJSString "gatheringstatechange")
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicetransport-onselectedcandidatepairchange selectedcandidatepairchange event>
+selectedcandidatepairchange :: EventName RTCIceTransport Event
+selectedcandidatepairchange = unsafeEventName (toJSString "selectedcandidatepairchange")
+
+-- | <https://w3c.github.io/webrtc-ice/#dfn-icecandidateerror icecandidateerror event>
+icecandidateerror :: EventName RTCIceTransport RTCPeerConnectionIceErrorEvent
+icecandidateerror = unsafeEventName (toJSString "icecandidateerror")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCLocalIceCandidateInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCLocalIceCandidateInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCLocalIceCandidateInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCLocalIceCandidateInit
+       (js_newRTCLocalIceCandidateInit, js_setRelayProtocol, js_getRelayProtocol, js_setUrl, js_getUrl, newRTCLocalIceCandidateInit, setRelayProtocol, getRelayProtocol, getRelayProtocolUnsafe, getRelayProtocolUnchecked, setUrl, getUrl, getUrlUnsafe, getUrlUnchecked, RTCLocalIceCandidateInit(..), gTypeRTCLocalIceCandidateInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCLocalIceCandidateInit :: IO RTCLocalIceCandidateInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit RTCLocalIceCandidateInit specification>
+newRTCLocalIceCandidateInit :: (MonadDOM m) => m RTCLocalIceCandidateInit
+newRTCLocalIceCandidateInit = liftDOM ((js_newRTCLocalIceCandidateInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"relayProtocol\"] = $2; })"
+        js_setRelayProtocol :: RTCLocalIceCandidateInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-relayprotocol RTCLocalIceCandidateInit.relayProtocol specification>
+setRelayProtocol :: (MonadDOM m) => RTCLocalIceCandidateInit -> Maybe RTCIceServerTransportProtocol -> m ()
+setRelayProtocol self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRelayProtocol (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"relayProtocol\"]; })"
+        js_getRelayProtocol :: RTCLocalIceCandidateInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-relayprotocol RTCLocalIceCandidateInit.relayProtocol specification>
+getRelayProtocol :: (MonadDOM m) => RTCLocalIceCandidateInit -> m (Maybe RTCIceServerTransportProtocol)
+getRelayProtocol self = liftDOM (((js_getRelayProtocol (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-relayprotocol RTCLocalIceCandidateInit.relayProtocol specification>
+getRelayProtocolUnsafe :: (MonadDOM m, HasCallStack) => RTCLocalIceCandidateInit -> m RTCIceServerTransportProtocol
+getRelayProtocolUnsafe self = liftDOM ((((js_getRelayProtocol (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-relayprotocol RTCLocalIceCandidateInit.relayProtocol specification>
+getRelayProtocolUnchecked :: (MonadDOM m) => RTCLocalIceCandidateInit -> m RTCIceServerTransportProtocol
+getRelayProtocolUnchecked self = liftDOM ((pFromJSVal <$> (js_getRelayProtocol (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: RTCLocalIceCandidateInit -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-url RTCLocalIceCandidateInit.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => RTCLocalIceCandidateInit -> Maybe val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: RTCLocalIceCandidateInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-url RTCLocalIceCandidateInit.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => RTCLocalIceCandidateInit -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-url RTCLocalIceCandidateInit.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCLocalIceCandidateInit -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-url RTCLocalIceCandidateInit.url specification>
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => RTCLocalIceCandidateInit -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCLocalSessionDescriptionInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCLocalSessionDescriptionInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCLocalSessionDescriptionInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCLocalSessionDescriptionInit
+       (js_newRTCLocalSessionDescriptionInit, js_setType, js_getType, js_setSdp, js_getSdp, newRTCLocalSessionDescriptionInit, setType, getType, getTypeUnsafe, getTypeUnchecked, setSdp, getSdp, getSdpUnsafe, getSdpUnchecked, RTCLocalSessionDescriptionInit(..), gTypeRTCLocalSessionDescriptionInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCLocalSessionDescriptionInit :: IO RTCLocalSessionDescriptionInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit RTCLocalSessionDescriptionInit specification>
+newRTCLocalSessionDescriptionInit :: (MonadDOM m) => m RTCLocalSessionDescriptionInit
+newRTCLocalSessionDescriptionInit = liftDOM ((js_newRTCLocalSessionDescriptionInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: RTCLocalSessionDescriptionInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-type RTCLocalSessionDescriptionInit.type specification>
+setType :: (MonadDOM m) => RTCLocalSessionDescriptionInit -> RTCSdpType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: RTCLocalSessionDescriptionInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-type RTCLocalSessionDescriptionInit.type specification>
+getType :: (MonadDOM m) => RTCLocalSessionDescriptionInit -> m (Maybe RTCSdpType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-type RTCLocalSessionDescriptionInit.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => RTCLocalSessionDescriptionInit -> m RTCSdpType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-type RTCLocalSessionDescriptionInit.type specification>
+getTypeUnchecked :: (MonadDOM m) => RTCLocalSessionDescriptionInit -> m RTCSdpType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sdp\"] = $2; })"
+        js_setSdp :: RTCLocalSessionDescriptionInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-sdp RTCLocalSessionDescriptionInit.sdp specification>
+setSdp :: (MonadDOM m, ToJSString val) => RTCLocalSessionDescriptionInit -> val -> m ()
+setSdp self val = liftDOM (void ((js_setSdp (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdp\"]; })"
+        js_getSdp :: RTCLocalSessionDescriptionInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-sdp RTCLocalSessionDescriptionInit.sdp specification>
+getSdp :: (MonadDOM m, FromJSString result) => RTCLocalSessionDescriptionInit -> m (Maybe result)
+getSdp self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSdp (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-sdp RTCLocalSessionDescriptionInit.sdp specification>
+getSdpUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCLocalSessionDescriptionInit -> m result
+getSdpUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSdp (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-sdp RTCLocalSessionDescriptionInit.sdp specification>
+getSdpUnchecked :: (MonadDOM m, FromJSString result) => RTCLocalSessionDescriptionInit -> m result
+getSdpUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdp (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCOfferAnswerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCOfferAnswerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCOfferAnswerOptions.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCOfferAnswerOptions
+       (js_newRTCOfferAnswerOptions, newRTCOfferAnswerOptions, RTCOfferAnswerOptions(..), gTypeRTCOfferAnswerOptions, IsRTCOfferAnswerOptions, toRTCOfferAnswerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCOfferAnswerOptions :: IO RTCOfferAnswerOptions
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferansweroptions RTCOfferAnswerOptions specification>
+newRTCOfferAnswerOptions :: (MonadDOM m) => m RTCOfferAnswerOptions
+newRTCOfferAnswerOptions = liftDOM ((js_newRTCOfferAnswerOptions))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCOfferOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCOfferOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCOfferOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCOfferOptions
+       (js_newRTCOfferOptions, js_setIceRestart, js_getIceRestart, js_setOfferToReceiveAudio, js_getOfferToReceiveAudio, js_setOfferToReceiveVideo, js_getOfferToReceiveVideo, newRTCOfferOptions, setIceRestart, getIceRestart, getIceRestartUnsafe, getIceRestartUnchecked, setOfferToReceiveAudio, getOfferToReceiveAudio, getOfferToReceiveAudioUnsafe, getOfferToReceiveAudioUnchecked, setOfferToReceiveVideo, getOfferToReceiveVideo, getOfferToReceiveVideoUnsafe, getOfferToReceiveVideoUnchecked, RTCOfferOptions(..), gTypeRTCOfferOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCOfferOptions :: IO RTCOfferOptions
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions RTCOfferOptions specification>
+newRTCOfferOptions :: (MonadDOM m) => m RTCOfferOptions
+newRTCOfferOptions = liftDOM ((js_newRTCOfferOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"iceRestart\"] = $2; })"
+        js_setIceRestart :: RTCOfferOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-icerestart RTCOfferOptions.iceRestart specification>
+setIceRestart :: (MonadDOM m) => RTCOfferOptions -> Bool -> m ()
+setIceRestart self val = liftDOM (void ((js_setIceRestart (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"iceRestart\"]; })"
+        js_getIceRestart :: RTCOfferOptions -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-icerestart RTCOfferOptions.iceRestart specification>
+getIceRestart :: (MonadDOM m) => RTCOfferOptions -> m (Maybe Bool)
+getIceRestart self = liftDOM (((js_getIceRestart (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-icerestart RTCOfferOptions.iceRestart specification>
+getIceRestartUnsafe :: (MonadDOM m, HasCallStack) => RTCOfferOptions -> m Bool
+getIceRestartUnsafe self = liftDOM ((((js_getIceRestart (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-icerestart RTCOfferOptions.iceRestart specification>
+getIceRestartUnchecked :: (MonadDOM m) => RTCOfferOptions -> m Bool
+getIceRestartUnchecked self = liftDOM ((pFromJSVal <$> (js_getIceRestart (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offerToReceiveAudio\"] = $2; })"
+        js_setOfferToReceiveAudio :: RTCOfferOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceiveaudio RTCOfferOptions.offerToReceiveAudio specification>
+setOfferToReceiveAudio :: (MonadDOM m) => RTCOfferOptions -> Bool -> m ()
+setOfferToReceiveAudio self val = liftDOM (void ((js_setOfferToReceiveAudio (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offerToReceiveAudio\"]; })"
+        js_getOfferToReceiveAudio :: RTCOfferOptions -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceiveaudio RTCOfferOptions.offerToReceiveAudio specification>
+getOfferToReceiveAudio :: (MonadDOM m) => RTCOfferOptions -> m (Maybe Bool)
+getOfferToReceiveAudio self = liftDOM (((js_getOfferToReceiveAudio (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceiveaudio RTCOfferOptions.offerToReceiveAudio specification>
+getOfferToReceiveAudioUnsafe :: (MonadDOM m, HasCallStack) => RTCOfferOptions -> m Bool
+getOfferToReceiveAudioUnsafe self = liftDOM ((((js_getOfferToReceiveAudio (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceiveaudio RTCOfferOptions.offerToReceiveAudio specification>
+getOfferToReceiveAudioUnchecked :: (MonadDOM m) => RTCOfferOptions -> m Bool
+getOfferToReceiveAudioUnchecked self = liftDOM ((pFromJSVal <$> (js_getOfferToReceiveAudio (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offerToReceiveVideo\"] = $2; })"
+        js_setOfferToReceiveVideo :: RTCOfferOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceivevideo RTCOfferOptions.offerToReceiveVideo specification>
+setOfferToReceiveVideo :: (MonadDOM m) => RTCOfferOptions -> Bool -> m ()
+setOfferToReceiveVideo self val = liftDOM (void ((js_setOfferToReceiveVideo (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offerToReceiveVideo\"]; })"
+        js_getOfferToReceiveVideo :: RTCOfferOptions -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceivevideo RTCOfferOptions.offerToReceiveVideo specification>
+getOfferToReceiveVideo :: (MonadDOM m) => RTCOfferOptions -> m (Maybe Bool)
+getOfferToReceiveVideo self = liftDOM (((js_getOfferToReceiveVideo (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceivevideo RTCOfferOptions.offerToReceiveVideo specification>
+getOfferToReceiveVideoUnsafe :: (MonadDOM m, HasCallStack) => RTCOfferOptions -> m Bool
+getOfferToReceiveVideoUnsafe self = liftDOM ((((js_getOfferToReceiveVideo (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceivevideo RTCOfferOptions.offerToReceiveVideo specification>
+getOfferToReceiveVideoUnchecked :: (MonadDOM m) => RTCOfferOptions -> m Bool
+getOfferToReceiveVideoUnchecked self = liftDOM ((pFromJSVal <$> (js_getOfferToReceiveVideo (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
@@ -1,630 +1,377 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCPeerConnection
-       (js_createOffer, createOffer, createOffer_, js_createAnswer,
-        createAnswer, createAnswer_, js_setLocalDescription,
-        setLocalDescription, js_setRemoteDescription, setRemoteDescription,
-        js_addIceCandidate, addIceCandidate, js_getConfiguration,
-        getConfiguration, getConfiguration_, js_setConfiguration,
-        setConfiguration, js_close, close, js_getSenders, getSenders,
-        getSenders_, js_getReceivers, getReceivers, getReceivers_,
-        js_getTransceivers, getTransceivers, getTransceivers_, js_addTrack,
-        addTrack, addTrack_, js_removeTrack, removeTrack,
-        js_addTransceiverTrack, addTransceiverTrack, addTransceiverTrack_,
-        js_createDataChannel, createDataChannel, createDataChannel_,
-        js_getStats, getStats, getStats_, js_getLocalStreams,
-        getLocalStreams, getLocalStreams_, js_getRemoteStreams,
-        getRemoteStreams, getRemoteStreams_, js_getStreamById,
-        getStreamById, getStreamById_, js_addStream, addStream,
-        js_removeStream, removeStream, js_getLocalDescription,
-        getLocalDescription, getLocalDescriptionUnsafe,
-        getLocalDescriptionUnchecked, js_getCurrentLocalDescription,
-        getCurrentLocalDescription, getCurrentLocalDescriptionUnsafe,
-        getCurrentLocalDescriptionUnchecked, js_getPendingLocalDescription,
-        getPendingLocalDescription, getPendingLocalDescriptionUnsafe,
-        getPendingLocalDescriptionUnchecked, js_getRemoteDescription,
-        getRemoteDescription, getRemoteDescriptionUnsafe,
-        getRemoteDescriptionUnchecked, js_getCurrentRemoteDescription,
-        getCurrentRemoteDescription, getCurrentRemoteDescriptionUnsafe,
-        getCurrentRemoteDescriptionUnchecked,
-        js_getPendingRemoteDescription, getPendingRemoteDescription,
-        getPendingRemoteDescriptionUnsafe,
-        getPendingRemoteDescriptionUnchecked, js_getSignalingState,
-        getSignalingState, js_getIceGatheringState, getIceGatheringState,
-        js_getIceConnectionState, getIceConnectionState,
-        js_getConnectionState, getConnectionState, negotiationNeeded,
-        iceCandidate, signalingStateChange, iceConnectionStateChange,
-        icegatheringstatechange, connectionstatechange, track, dataChannel,
-        addStreamEvent, RTCPeerConnection(..), gTypeRTCPeerConnection)
+       (js_newRTCPeerConnection, js_addIceCandidate, js_addIceCandidateSuccessCallbackFailureCallback, js_addTrack, js_addTransceiver, js_close, js_createAnswer, js_createAnswerSuccessCallbackFailureCallback, js_createDataChannel, js_createOffer, js_createOfferSuccessCallbackFailureCallback, js_getConfiguration, js_getReceivers, js_getSenders, js_getStats, js_getTransceivers, js_removeTrack, js_restartIce, js_setConfiguration, js_setLocalDescription, js_setLocalDescriptionSuccessCallbackFailureCallback, js_setRemoteDescription, js_setRemoteDescriptionSuccessCallbackFailureCallback, js_generateCertificate, js_getLocalDescription, js_getCurrentLocalDescription, js_getPendingLocalDescription, js_getRemoteDescription, js_getCurrentRemoteDescription, js_getPendingRemoteDescription, js_getSignalingState, js_getIceGatheringState, js_getIceConnectionState, js_getConnectionState, js_getCanTrickleIceCandidates, js_getSctp, newRTCPeerConnection, addIceCandidate, addIceCandidateSuccessCallbackFailureCallback, addTrack, addTrack_, addTransceiver, addTransceiver_, close, createAnswer, createAnswer_, createAnswerSuccessCallbackFailureCallback, createDataChannel, createDataChannel_, createOffer, createOffer_, createOfferSuccessCallbackFailureCallback, getConfiguration, getConfiguration_, getReceivers, getReceivers_, getSenders, getSenders_, getStats, getStats_, getTransceivers, getTransceivers_, removeTrack, restartIce, setConfiguration, setLocalDescription, setLocalDescriptionSuccessCallbackFailureCallback, setRemoteDescription, setRemoteDescriptionSuccessCallbackFailureCallback, generateCertificate, generateCertificate_, getLocalDescription, getLocalDescriptionUnsafe, getLocalDescriptionUnchecked, getCurrentLocalDescription, getCurrentLocalDescriptionUnsafe, getCurrentLocalDescriptionUnchecked, getPendingLocalDescription, getPendingLocalDescriptionUnsafe, getPendingLocalDescriptionUnchecked, getRemoteDescription, getRemoteDescriptionUnsafe, getRemoteDescriptionUnchecked, getCurrentRemoteDescription, getCurrentRemoteDescriptionUnsafe, getCurrentRemoteDescriptionUnchecked, getPendingRemoteDescription, getPendingRemoteDescriptionUnsafe, getPendingRemoteDescriptionUnchecked, getSignalingState, getIceGatheringState, getIceConnectionState, getConnectionState, getCanTrickleIceCandidates, getCanTrickleIceCandidatesUnsafe, getCanTrickleIceCandidatesUnchecked, getSctp, getSctpUnsafe, getSctpUnchecked, negotiationNeeded, iceCandidate, icecandidateerror, signalingStateChange, iceConnectionStateChange, icegatheringstatechange, connectionstatechange, track, dataChannel, RTCPeerConnection(..), gTypeRTCPeerConnection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"createOffer\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_createOffer ::
-        RTCPeerConnection ->
-          Optional RTCOfferOptions -> IO (JSVal, RTCSessionDescriptionInit)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
-createOffer ::
-            (MonadIO m) =>
-              RTCPeerConnection ->
-                Maybe RTCOfferOptions -> m RTCSessionDescriptionInit
-createOffer self offerOptions
-  = liftIO
-      ((js_createOffer self (maybeToOptional offerOptions)) >>=
-         checkPromiseResult)
+foreign import javascript safe "(($1) => { return new globalThis[\"RTCPeerConnection\"]($1); })"
+        js_newRTCPeerConnection :: JSVal -> IO RTCPeerConnection
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/RTCPeerConnection MDN RTCPeerConnection. documentation>
+newRTCPeerConnection :: (MonadDOM m) => Maybe RTCConfiguration -> m RTCPeerConnection
+newRTCPeerConnection configuration = liftDOM (((P.maybe (P.return jsUndefined) toJSVal configuration) >>= \a1' -> js_newRTCPeerConnection a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
-createOffer_ ::
-             (MonadIO m) => RTCPeerConnection -> Maybe RTCOfferOptions -> m ()
-createOffer_ self offerOptions
-  = liftIO
-      (void (js_createOffer self (maybeToOptional offerOptions)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"createAnswer\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_createAnswer ::
-        RTCPeerConnection ->
-          Optional RTCAnswerOptions -> IO (JSVal, RTCSessionDescriptionInit)
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"addIceCandidate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_addIceCandidate :: RTCPeerConnection -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/addIceCandidate MDN RTCPeerConnection.addIceCandidate documentation>
+addIceCandidate :: (MonadDOM m, IsRTCIceCandidateInit candidate) => RTCPeerConnection -> Maybe candidate -> m ()
+addIceCandidate self candidate = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal candidate) >>= \a2' -> js_addIceCandidate (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
-createAnswer ::
-             (MonadIO m) =>
-               RTCPeerConnection ->
-                 Maybe RTCAnswerOptions -> m RTCSessionDescriptionInit
-createAnswer self answerOptions
-  = liftIO
-      ((js_createAnswer self (maybeToOptional answerOptions)) >>=
-         checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"addIceCandidate\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_addIceCandidateSuccessCallbackFailureCallback :: RTCPeerConnection -> RTCIceCandidateInit -> JSVal -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/addIceCandidate MDN RTCPeerConnection.addIceCandidate documentation>
+addIceCandidateSuccessCallbackFailureCallback :: (MonadDOM m, IsRTCIceCandidateInit candidate) => RTCPeerConnection -> candidate -> VoidFunction -> RTCPeerConnectionErrorCallback -> m ()
+addIceCandidateSuccessCallbackFailureCallback self candidate successCallback failureCallback = liftDOM (void ((((toJSVal successCallback) >>= \a3' -> (toJSVal failureCallback) >>= \a4' -> js_addIceCandidateSuccessCallbackFailureCallback (self) (Types.toRTCIceCandidateInit candidate) a3' a4') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
-createAnswer_ ::
-              (MonadIO m) => RTCPeerConnection -> Maybe RTCAnswerOptions -> m ()
-createAnswer_ self answerOptions
-  = liftIO
-      (void (js_createAnswer self (maybeToOptional answerOptions)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"setLocalDescription\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_setLocalDescription ::
-        RTCPeerConnection -> RTCSessionDescriptionInit -> IO JSVal
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addTrack\"]($2, ...$3); })"
+        js_addTrack :: RTCPeerConnection -> MediaStreamTrack -> JSVal -> IO RTCRtpSender
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/addTrack MDN RTCPeerConnection.addTrack documentation>
+addTrack :: (MonadDOM m, IsMediaStreamTrack track) => RTCPeerConnection -> track -> [MediaStream] -> m RTCRtpSender
+addTrack self track streams = liftDOM (((toJSVal streams) >>= \a3' -> js_addTrack (self) (Types.toMediaStreamTrack track) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation> 
-setLocalDescription ::
-                    (MonadIO m) =>
-                      RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
-setLocalDescription self description
-  = liftIO
-      ((js_setLocalDescription self description) >>=
-         maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"setRemoteDescription\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_setRemoteDescription ::
-        RTCPeerConnection -> RTCSessionDescriptionInit -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/addTrack MDN RTCPeerConnection.addTrack documentation>
+addTrack_ :: (MonadDOM m, IsMediaStreamTrack track) => RTCPeerConnection -> track -> [MediaStream] -> m ()
+addTrack_ self track streams = liftDOM (void (((toJSVal streams) >>= \a3' -> js_addTrack (self) (Types.toMediaStreamTrack track) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation> 
-setRemoteDescription ::
-                     (MonadIO m) =>
-                       RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
-setRemoteDescription self description
-  = liftIO
-      ((js_setRemoteDescription self description) >>=
-         maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"addIceCandidate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_addIceCandidate ::
-        RTCPeerConnection -> RTCIceCandidateOrInit -> IO JSVal
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addTransceiver\"]($2, $3); })"
+        js_addTransceiver :: RTCPeerConnection -> MediaStreamTrackOrString -> JSVal -> IO RTCRtpTransceiver
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/addTransceiver MDN RTCPeerConnection.addTransceiver documentation>
+addTransceiver :: (MonadDOM m, IsMediaStreamTrackOrString trackOrKind) => RTCPeerConnection -> trackOrKind -> Maybe RTCRtpTransceiverInit -> m RTCRtpTransceiver
+addTransceiver self trackOrKind init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a3' -> js_addTransceiver (self) (Types.toMediaStreamTrackOrString trackOrKind) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation> 
-addIceCandidate ::
-                (MonadIO m, IsRTCIceCandidateOrInit candidate) =>
-                  RTCPeerConnection -> candidate -> m ()
-addIceCandidate self candidate
-  = liftIO
-      ((toJSVal candidate >>=
-          \ candidate' ->
-            js_addIceCandidate self (RTCIceCandidateOrInit candidate'))
-         >>= maybeThrowPromiseRejected)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getConfiguration\"](); })"
-        js_getConfiguration :: RTCPeerConnection -> IO RTCConfiguration
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/addTransceiver MDN RTCPeerConnection.addTransceiver documentation>
+addTransceiver_ :: (MonadDOM m, IsMediaStreamTrackOrString trackOrKind) => RTCPeerConnection -> trackOrKind -> Maybe RTCRtpTransceiverInit -> m ()
+addTransceiver_ self trackOrKind init = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a3' -> js_addTransceiver (self) (Types.toMediaStreamTrackOrString trackOrKind) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
-getConfiguration ::
-                 (MonadIO m) => RTCPeerConnection -> m RTCConfiguration
-getConfiguration self = liftIO (js_getConfiguration self)
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: RTCPeerConnection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/close MDN RTCPeerConnection.close documentation>
+close :: (MonadDOM m) => RTCPeerConnection -> m ()
+close self = liftDOM (void ((js_close (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
-getConfiguration_ :: (MonadIO m) => RTCPeerConnection -> m ()
-getConfiguration_ self = liftIO (void (js_getConfiguration self))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setConfiguration\"]($2); })"
-        js_setConfiguration ::
-        RTCPeerConnection -> RTCConfiguration -> IO ()
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"createAnswer\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createAnswer :: RTCPeerConnection -> JSVal -> IO (JSVal, RTCSessionDescriptionInit)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createAnswer MDN RTCPeerConnection.createAnswer documentation>
+createAnswer :: (MonadDOM m) => RTCPeerConnection -> Maybe RTCAnswerOptions -> m RTCSessionDescriptionInit
+createAnswer self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createAnswer (self) a2') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setConfiguration Mozilla webkitRTCPeerConnection.setConfiguration documentation> 
-setConfiguration ::
-                 (MonadIO m) => RTCPeerConnection -> RTCConfiguration -> m ()
-setConfiguration self configuration
-  = liftIO (js_setConfiguration self configuration)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        RTCPeerConnection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createAnswer MDN RTCPeerConnection.createAnswer documentation>
+createAnswer_ :: (MonadDOM m) => RTCPeerConnection -> Maybe RTCAnswerOptions -> m ()
+createAnswer_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createAnswer (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.close Mozilla webkitRTCPeerConnection.close documentation> 
-close :: (MonadIO m) => RTCPeerConnection -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getSenders\"](); })"
-        js_getSenders :: RTCPeerConnection -> IO JSVal
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"createAnswer\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createAnswerSuccessCallbackFailureCallback :: RTCPeerConnection -> JSVal -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createAnswer MDN RTCPeerConnection.createAnswer documentation>
+createAnswerSuccessCallbackFailureCallback :: (MonadDOM m) => RTCPeerConnection -> RTCSessionDescriptionCallback -> RTCPeerConnectionErrorCallback -> m ()
+createAnswerSuccessCallbackFailureCallback self successCallback failureCallback = liftDOM (void ((((toJSVal successCallback) >>= \a2' -> (toJSVal failureCallback) >>= \a3' -> js_createAnswerSuccessCallbackFailureCallback (self) a2' a3') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getSenders Mozilla webkitRTCPeerConnection.getSenders documentation> 
-getSenders :: (MonadIO m) => RTCPeerConnection -> m [RTCRtpSender]
-getSenders self
-  = liftIO ((js_getSenders self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createDataChannel\"]($2, $3); })"
+        js_createDataChannel :: RTCPeerConnection -> JSString -> JSVal -> IO RTCDataChannel
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createDataChannel MDN RTCPeerConnection.createDataChannel documentation>
+createDataChannel :: (MonadDOM m, ToJSString label) => RTCPeerConnection -> label -> Maybe RTCDataChannelInit -> m RTCDataChannel
+createDataChannel self label dataChannelDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal dataChannelDict) >>= \a3' -> js_createDataChannel (self) (toJSString label) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getSenders Mozilla webkitRTCPeerConnection.getSenders documentation> 
-getSenders_ :: (MonadIO m) => RTCPeerConnection -> m ()
-getSenders_ self = liftIO (void (js_getSenders self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getReceivers\"](); })"
-        js_getReceivers :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createDataChannel MDN RTCPeerConnection.createDataChannel documentation>
+createDataChannel_ :: (MonadDOM m, ToJSString label) => RTCPeerConnection -> label -> Maybe RTCDataChannelInit -> m ()
+createDataChannel_ self label dataChannelDict = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal dataChannelDict) >>= \a3' -> js_createDataChannel (self) (toJSString label) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getReceivers Mozilla webkitRTCPeerConnection.getReceivers documentation> 
-getReceivers ::
-             (MonadIO m) => RTCPeerConnection -> m [RTCRtpReceiver]
-getReceivers self
-  = liftIO ((js_getReceivers self) >>= fromJSValUnchecked)
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"createOffer\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createOffer :: RTCPeerConnection -> JSVal -> IO (JSVal, RTCSessionDescriptionInit)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createOffer MDN RTCPeerConnection.createOffer documentation>
+createOffer :: (MonadDOM m) => RTCPeerConnection -> Maybe RTCOfferOptions -> m RTCSessionDescriptionInit
+createOffer self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createOffer (self) a2') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getReceivers Mozilla webkitRTCPeerConnection.getReceivers documentation> 
-getReceivers_ :: (MonadIO m) => RTCPeerConnection -> m ()
-getReceivers_ self = liftIO (void (js_getReceivers self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getTransceivers\"](); })"
-        js_getTransceivers :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createOffer MDN RTCPeerConnection.createOffer documentation>
+createOffer_ :: (MonadDOM m) => RTCPeerConnection -> Maybe RTCOfferOptions -> m ()
+createOffer_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createOffer (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getTransceivers Mozilla webkitRTCPeerConnection.getTransceivers documentation> 
-getTransceivers ::
-                (MonadIO m) => RTCPeerConnection -> m [RTCRtpTransceiver]
-getTransceivers self
-  = liftIO ((js_getTransceivers self) >>= fromJSValUnchecked)
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"createOffer\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createOfferSuccessCallbackFailureCallback :: RTCPeerConnection -> JSVal -> JSVal -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/createOffer MDN RTCPeerConnection.createOffer documentation>
+createOfferSuccessCallbackFailureCallback :: (MonadDOM m) => RTCPeerConnection -> RTCSessionDescriptionCallback -> RTCPeerConnectionErrorCallback -> Maybe RTCOfferOptions -> m ()
+createOfferSuccessCallbackFailureCallback self successCallback failureCallback options = liftDOM (void ((((toJSVal successCallback) >>= \a2' -> (toJSVal failureCallback) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a4' -> js_createOfferSuccessCallbackFailureCallback (self) a2' a3' a4') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getTransceivers Mozilla webkitRTCPeerConnection.getTransceivers documentation> 
-getTransceivers_ :: (MonadIO m) => RTCPeerConnection -> m ()
-getTransceivers_ self = liftIO (void (js_getTransceivers self))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"addTrack\"]($2, $3); })"
-        js_addTrack ::
-        RTCPeerConnection -> MediaStreamTrack -> JSVal -> IO RTCRtpSender
+foreign import javascript safe "(($1) => { return $1[\"getConfiguration\"](); })"
+        js_getConfiguration :: RTCPeerConnection -> IO RTCConfiguration
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getConfiguration MDN RTCPeerConnection.getConfiguration documentation>
+getConfiguration :: (MonadDOM m) => RTCPeerConnection -> m RTCConfiguration
+getConfiguration self = liftDOM ((js_getConfiguration (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTrack Mozilla webkitRTCPeerConnection.addTrack documentation> 
-addTrack ::
-         (MonadIO m, IsMediaStreamTrack track) =>
-           RTCPeerConnection -> track -> [MediaStream] -> m RTCRtpSender
-addTrack self track streams
-  = liftIO
-      (toJSVal streams >>=
-         \ streams' -> js_addTrack self (toMediaStreamTrack track) streams')
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getConfiguration MDN RTCPeerConnection.getConfiguration documentation>
+getConfiguration_ :: (MonadDOM m) => RTCPeerConnection -> m ()
+getConfiguration_ self = liftDOM (void ((js_getConfiguration (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTrack Mozilla webkitRTCPeerConnection.addTrack documentation> 
-addTrack_ ::
-          (MonadIO m, IsMediaStreamTrack track) =>
-            RTCPeerConnection -> track -> [MediaStream] -> m ()
-addTrack_ self track streams
-  = liftIO
-      (void
-         (toJSVal streams >>=
-            \ streams' ->
-              js_addTrack self (toMediaStreamTrack track) streams'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"removeTrack\"]($2); })"
-        js_removeTrack :: RTCPeerConnection -> RTCRtpSender -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"getReceivers\"](); })"
+        js_getReceivers :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getReceivers MDN RTCPeerConnection.getReceivers documentation>
+getReceivers :: (MonadDOM m) => RTCPeerConnection -> m [RTCRtpReceiver]
+getReceivers self = liftDOM (((js_getReceivers (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeTrack Mozilla webkitRTCPeerConnection.removeTrack documentation> 
-removeTrack ::
-            (MonadIO m) => RTCPeerConnection -> RTCRtpSender -> m ()
-removeTrack self sender = liftIO (js_removeTrack self sender)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"addTransceiver\"]($2, $3); })"
-        js_addTransceiverTrack ::
-        RTCPeerConnection ->
-          MediaStreamTrackOrKind ->
-            Optional RTCRtpTransceiverInit -> IO RTCRtpTransceiver
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getReceivers MDN RTCPeerConnection.getReceivers documentation>
+getReceivers_ :: (MonadDOM m) => RTCPeerConnection -> m ()
+getReceivers_ self = liftDOM (void ((js_getReceivers (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTransceiver Mozilla webkitRTCPeerConnection.addTransceiver documentation> 
-addTransceiverTrack ::
-                    (MonadIO m, IsMediaStreamTrackOrKind track) =>
-                      RTCPeerConnection ->
-                        track -> Maybe RTCRtpTransceiverInit -> m RTCRtpTransceiver
-addTransceiverTrack self track init
-  = liftIO
-      (toJSVal track >>=
-         \ track' ->
-           js_addTransceiverTrack self (MediaStreamTrackOrKind track')
-         (maybeToOptional init))
+foreign import javascript safe "(($1) => { return $1[\"getSenders\"](); })"
+        js_getSenders :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getSenders MDN RTCPeerConnection.getSenders documentation>
+getSenders :: (MonadDOM m) => RTCPeerConnection -> m [RTCRtpSender]
+getSenders self = liftDOM (((js_getSenders (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTransceiver Mozilla webkitRTCPeerConnection.addTransceiver documentation> 
-addTransceiverTrack_ ::
-                     (MonadIO m, IsMediaStreamTrackOrKind track) =>
-                       RTCPeerConnection -> track -> Maybe RTCRtpTransceiverInit -> m ()
-addTransceiverTrack_ self track init
-  = liftIO
-      (void
-         (toJSVal track >>=
-            \ track' ->
-              js_addTransceiverTrack self (MediaStreamTrackOrKind track')
-            (maybeToOptional init)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createDataChannel\"]($2, $3); })"
-        js_createDataChannel ::
-        RTCPeerConnection ->
-          JSString -> Optional RTCDataChannelInit -> IO RTCDataChannel
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getSenders MDN RTCPeerConnection.getSenders documentation>
+getSenders_ :: (MonadDOM m) => RTCPeerConnection -> m ()
+getSenders_ self = liftDOM (void ((js_getSenders (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
-createDataChannel ::
-                  (MonadIO m, ToJSString label) =>
-                    RTCPeerConnection ->
-                      label -> Maybe RTCDataChannelInit -> m RTCDataChannel
-createDataChannel self label options
-  = liftIO
-      (js_createDataChannel self (toJSString label)
-         (maybeToOptional options))
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getStats\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats :: RTCPeerConnection -> JSVal -> IO (JSVal, RTCStatsReport)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getStats MDN RTCPeerConnection.getStats documentation>
+getStats :: (MonadDOM m, IsMediaStreamTrack selector) => RTCPeerConnection -> Maybe selector -> m RTCStatsReport
+getStats self selector = liftDOM ((((toJSVal selector) >>= \a2' -> js_getStats (self) a2') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
-createDataChannel_ ::
-                   (MonadIO m, ToJSString label) =>
-                     RTCPeerConnection -> label -> Maybe RTCDataChannelInit -> m ()
-createDataChannel_ self label options
-  = liftIO
-      (void
-         (js_createDataChannel self (toJSString label)
-            (maybeToOptional options)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"getStats\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getStats ::
-        RTCPeerConnection ->
-          Optional MediaStreamTrack -> IO (JSVal, RTCStatsReport)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getStats MDN RTCPeerConnection.getStats documentation>
+getStats_ :: (MonadDOM m, IsMediaStreamTrack selector) => RTCPeerConnection -> Maybe selector -> m ()
+getStats_ self selector = liftDOM (void ((((toJSVal selector) >>= \a2' -> js_getStats (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
-getStats ::
-         (MonadIO m, IsMediaStreamTrack selector) =>
-           RTCPeerConnection -> Maybe selector -> m RTCStatsReport
-getStats self selector
-  = liftIO
-      ((js_getStats self
-          (maybeToOptional (fmap toMediaStreamTrack selector)))
-         >>= checkPromiseResult)
+foreign import javascript safe "(($1) => { return $1[\"getTransceivers\"](); })"
+        js_getTransceivers :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getTransceivers MDN RTCPeerConnection.getTransceivers documentation>
+getTransceivers :: (MonadDOM m) => RTCPeerConnection -> m [RTCRtpTransceiver]
+getTransceivers self = liftDOM (((js_getTransceivers (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
-getStats_ ::
-          (MonadIO m, IsMediaStreamTrack selector) =>
-            RTCPeerConnection -> Maybe selector -> m ()
-getStats_ self selector
-  = liftIO
-      (void
-         (js_getStats self
-            (maybeToOptional (fmap toMediaStreamTrack selector))))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getLocalStreams\"](); })"
-        js_getLocalStreams :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getTransceivers MDN RTCPeerConnection.getTransceivers documentation>
+getTransceivers_ :: (MonadDOM m) => RTCPeerConnection -> m ()
+getTransceivers_ self = liftDOM (void ((js_getTransceivers (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getLocalStreams Mozilla webkitRTCPeerConnection.getLocalStreams documentation> 
-getLocalStreams ::
-                (MonadIO m) => RTCPeerConnection -> m [MediaStream]
-getLocalStreams self
-  = liftIO ((js_getLocalStreams self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1, $2) => { return $1[\"removeTrack\"]($2); })"
+        js_removeTrack :: RTCPeerConnection -> RTCRtpSender -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/removeTrack MDN RTCPeerConnection.removeTrack documentation>
+removeTrack :: (MonadDOM m) => RTCPeerConnection -> RTCRtpSender -> m ()
+removeTrack self sender = liftDOM (void ((js_removeTrack (self) (sender))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getLocalStreams Mozilla webkitRTCPeerConnection.getLocalStreams documentation> 
-getLocalStreams_ :: (MonadIO m) => RTCPeerConnection -> m ()
-getLocalStreams_ self = liftIO (void (js_getLocalStreams self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getRemoteStreams\"](); })"
-        js_getRemoteStreams :: RTCPeerConnection -> IO JSVal
+foreign import javascript safe "(($1) => { return $1[\"restartIce\"](); })"
+        js_restartIce :: RTCPeerConnection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/restartIce MDN RTCPeerConnection.restartIce documentation>
+restartIce :: (MonadDOM m) => RTCPeerConnection -> m ()
+restartIce self = liftDOM (void ((js_restartIce (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getRemoteStreams Mozilla webkitRTCPeerConnection.getRemoteStreams documentation> 
-getRemoteStreams ::
-                 (MonadIO m) => RTCPeerConnection -> m [MediaStream]
-getRemoteStreams self
-  = liftIO ((js_getRemoteStreams self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1, $2) => { return $1[\"setConfiguration\"]($2); })"
+        js_setConfiguration :: RTCPeerConnection -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/setConfiguration MDN RTCPeerConnection.setConfiguration documentation>
+setConfiguration :: (MonadDOM m) => RTCPeerConnection -> Maybe RTCConfiguration -> m ()
+setConfiguration self configuration = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal configuration) >>= \a2' -> js_setConfiguration (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getRemoteStreams Mozilla webkitRTCPeerConnection.getRemoteStreams documentation> 
-getRemoteStreams_ :: (MonadIO m) => RTCPeerConnection -> m ()
-getRemoteStreams_ self = liftIO (void (js_getRemoteStreams self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getStreamById\"]($2); })"
-        js_getStreamById :: RTCPeerConnection -> JSString -> IO MediaStream
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setLocalDescription\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setLocalDescription :: RTCPeerConnection -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/setLocalDescription MDN RTCPeerConnection.setLocalDescription documentation>
+setLocalDescription :: (MonadDOM m) => RTCPeerConnection -> Maybe RTCLocalSessionDescriptionInit -> m ()
+setLocalDescription self description = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal description) >>= \a2' -> js_setLocalDescription (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
-getStreamById ::
-              (MonadIO m, ToJSString streamId) =>
-                RTCPeerConnection -> streamId -> m MediaStream
-getStreamById self streamId
-  = liftIO (js_getStreamById self (toJSString streamId))
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"setLocalDescription\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setLocalDescriptionSuccessCallbackFailureCallback :: RTCPeerConnection -> RTCLocalSessionDescriptionInit -> JSVal -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/setLocalDescription MDN RTCPeerConnection.setLocalDescription documentation>
+setLocalDescriptionSuccessCallbackFailureCallback :: (MonadDOM m) => RTCPeerConnection -> RTCLocalSessionDescriptionInit -> VoidFunction -> RTCPeerConnectionErrorCallback -> m ()
+setLocalDescriptionSuccessCallbackFailureCallback self description successCallback failureCallback = liftDOM (void ((((toJSVal successCallback) >>= \a3' -> (toJSVal failureCallback) >>= \a4' -> js_setLocalDescriptionSuccessCallbackFailureCallback (self) (description) a3' a4') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
-getStreamById_ ::
-               (MonadIO m, ToJSString streamId) =>
-                 RTCPeerConnection -> streamId -> m ()
-getStreamById_ self streamId
-  = liftIO (void (js_getStreamById self (toJSString streamId)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"addStream\"]($2); })"
-        js_addStream :: RTCPeerConnection -> MediaStream -> IO ()
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setRemoteDescription\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setRemoteDescription :: RTCPeerConnection -> RTCSessionDescriptionInit -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/setRemoteDescription MDN RTCPeerConnection.setRemoteDescription documentation>
+setRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
+setRemoteDescription self description = liftDOM (void (((js_setRemoteDescription (self) (description)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addStream Mozilla webkitRTCPeerConnection.addStream documentation> 
-addStream ::
-          (MonadIO m) => RTCPeerConnection -> MediaStream -> m ()
-addStream self stream = liftIO (js_addStream self stream)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"removeStream\"]($2); })"
-        js_removeStream :: RTCPeerConnection -> MediaStream -> IO ()
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"setRemoteDescription\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setRemoteDescriptionSuccessCallbackFailureCallback :: RTCPeerConnection -> RTCSessionDescriptionInit -> JSVal -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/setRemoteDescription MDN RTCPeerConnection.setRemoteDescription documentation>
+setRemoteDescriptionSuccessCallbackFailureCallback :: (MonadDOM m) => RTCPeerConnection -> RTCSessionDescriptionInit -> VoidFunction -> RTCPeerConnectionErrorCallback -> m ()
+setRemoteDescriptionSuccessCallbackFailureCallback self description successCallback failureCallback = liftDOM (void ((((toJSVal successCallback) >>= \a3' -> (toJSVal failureCallback) >>= \a4' -> js_setRemoteDescriptionSuccessCallbackFailureCallback (self) (description) a3' a4') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeStream Mozilla webkitRTCPeerConnection.removeStream documentation> 
-removeStream ::
-             (MonadIO m) => RTCPeerConnection -> MediaStream -> m ()
-removeStream self stream = liftIO (js_removeStream self stream)
- 
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"RTCPeerConnection\"][\"generateCertificate\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_generateCertificate :: AlgorithmIdentifier -> IO (JSVal, RTCCertificate)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/generateCertificate_static MDN RTCPeerConnection.generateCertificate documentation>
+generateCertificate :: (MonadDOM m, IsAlgorithmIdentifier keygenAlgorithm) => keygenAlgorithm -> m RTCCertificate
+generateCertificate keygenAlgorithm = liftDOM (((js_generateCertificate (Types.toAlgorithmIdentifier keygenAlgorithm)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/generateCertificate_static MDN RTCPeerConnection.generateCertificate documentation>
+generateCertificate_ :: (MonadDOM m, IsAlgorithmIdentifier keygenAlgorithm) => keygenAlgorithm -> m ()
+generateCertificate_ keygenAlgorithm = liftDOM (void (((js_generateCertificate (Types.toAlgorithmIdentifier keygenAlgorithm)) >>= checkPromiseResult)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"localDescription\"]; })"
-        js_getLocalDescription ::
-        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+        js_getLocalDescription :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/localDescription MDN RTCPeerConnection.localDescription documentation>
+getLocalDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getLocalDescription self = liftDOM (((js_getLocalDescription (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
-getLocalDescription ::
-                    (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getLocalDescription self
-  = liftIO (nullableToMaybe <$> (js_getLocalDescription self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/localDescription MDN RTCPeerConnection.localDescription documentation>
+getLocalDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getLocalDescriptionUnsafe self = liftDOM ((((js_getLocalDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
-getLocalDescriptionUnsafe ::
-                          (MonadIO m, HasCallStack) =>
-                            RTCPeerConnection -> m RTCSessionDescription
-getLocalDescriptionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getLocalDescription self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/localDescription MDN RTCPeerConnection.localDescription documentation>
+getLocalDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getLocalDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getLocalDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
-getLocalDescriptionUnchecked ::
-                             (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
-getLocalDescriptionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getLocalDescription self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"currentLocalDescription\"]; })"
-        js_getCurrentLocalDescription ::
-        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+        js_getCurrentLocalDescription :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentLocalDescription MDN RTCPeerConnection.currentLocalDescription documentation>
+getCurrentLocalDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getCurrentLocalDescription self = liftDOM (((js_getCurrentLocalDescription (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
-getCurrentLocalDescription ::
-                           (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getCurrentLocalDescription self
-  = liftIO (nullableToMaybe <$> (js_getCurrentLocalDescription self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentLocalDescription MDN RTCPeerConnection.currentLocalDescription documentation>
+getCurrentLocalDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentLocalDescriptionUnsafe self = liftDOM ((((js_getCurrentLocalDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
-getCurrentLocalDescriptionUnsafe ::
-                                 (MonadIO m, HasCallStack) =>
-                                   RTCPeerConnection -> m RTCSessionDescription
-getCurrentLocalDescriptionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getCurrentLocalDescription self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentLocalDescription MDN RTCPeerConnection.currentLocalDescription documentation>
+getCurrentLocalDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentLocalDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentLocalDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
-getCurrentLocalDescriptionUnchecked ::
-                                    (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
-getCurrentLocalDescriptionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getCurrentLocalDescription self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"pendingLocalDescription\"]; })"
-        js_getPendingLocalDescription ::
-        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+        js_getPendingLocalDescription :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingLocalDescription MDN RTCPeerConnection.pendingLocalDescription documentation>
+getPendingLocalDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getPendingLocalDescription self = liftDOM (((js_getPendingLocalDescription (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
-getPendingLocalDescription ::
-                           (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getPendingLocalDescription self
-  = liftIO (nullableToMaybe <$> (js_getPendingLocalDescription self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingLocalDescription MDN RTCPeerConnection.pendingLocalDescription documentation>
+getPendingLocalDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getPendingLocalDescriptionUnsafe self = liftDOM ((((js_getPendingLocalDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
-getPendingLocalDescriptionUnsafe ::
-                                 (MonadIO m, HasCallStack) =>
-                                   RTCPeerConnection -> m RTCSessionDescription
-getPendingLocalDescriptionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getPendingLocalDescription self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingLocalDescription MDN RTCPeerConnection.pendingLocalDescription documentation>
+getPendingLocalDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getPendingLocalDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getPendingLocalDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
-getPendingLocalDescriptionUnchecked ::
-                                    (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
-getPendingLocalDescriptionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getPendingLocalDescription self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"remoteDescription\"]; })"
-        js_getRemoteDescription ::
-        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+        js_getRemoteDescription :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/remoteDescription MDN RTCPeerConnection.remoteDescription documentation>
+getRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getRemoteDescription self = liftDOM (((js_getRemoteDescription (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
-getRemoteDescription ::
-                     (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getRemoteDescription self
-  = liftIO (nullableToMaybe <$> (js_getRemoteDescription self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/remoteDescription MDN RTCPeerConnection.remoteDescription documentation>
+getRemoteDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getRemoteDescriptionUnsafe self = liftDOM ((((js_getRemoteDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
-getRemoteDescriptionUnsafe ::
-                           (MonadIO m, HasCallStack) =>
-                             RTCPeerConnection -> m RTCSessionDescription
-getRemoteDescriptionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getRemoteDescription self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/remoteDescription MDN RTCPeerConnection.remoteDescription documentation>
+getRemoteDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getRemoteDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getRemoteDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
-getRemoteDescriptionUnchecked ::
-                              (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
-getRemoteDescriptionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getRemoteDescription self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"currentRemoteDescription\"]; })"
-        js_getCurrentRemoteDescription ::
-        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+        js_getCurrentRemoteDescription :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentRemoteDescription MDN RTCPeerConnection.currentRemoteDescription documentation>
+getCurrentRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getCurrentRemoteDescription self = liftDOM (((js_getCurrentRemoteDescription (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
-getCurrentRemoteDescription ::
-                            (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getCurrentRemoteDescription self
-  = liftIO
-      (nullableToMaybe <$> (js_getCurrentRemoteDescription self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentRemoteDescription MDN RTCPeerConnection.currentRemoteDescription documentation>
+getCurrentRemoteDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentRemoteDescriptionUnsafe self = liftDOM ((((js_getCurrentRemoteDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
-getCurrentRemoteDescriptionUnsafe ::
-                                  (MonadIO m, HasCallStack) =>
-                                    RTCPeerConnection -> m RTCSessionDescription
-getCurrentRemoteDescriptionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getCurrentRemoteDescription self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentRemoteDescription MDN RTCPeerConnection.currentRemoteDescription documentation>
+getCurrentRemoteDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentRemoteDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentRemoteDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
-getCurrentRemoteDescriptionUnchecked ::
-                                     (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
-getCurrentRemoteDescriptionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getCurrentRemoteDescription self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"pendingRemoteDescription\"]; })"
-        js_getPendingRemoteDescription ::
-        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+        js_getPendingRemoteDescription :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingRemoteDescription MDN RTCPeerConnection.pendingRemoteDescription documentation>
+getPendingRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getPendingRemoteDescription self = liftDOM (((js_getPendingRemoteDescription (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
-getPendingRemoteDescription ::
-                            (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getPendingRemoteDescription self
-  = liftIO
-      (nullableToMaybe <$> (js_getPendingRemoteDescription self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingRemoteDescription MDN RTCPeerConnection.pendingRemoteDescription documentation>
+getPendingRemoteDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getPendingRemoteDescriptionUnsafe self = liftDOM ((((js_getPendingRemoteDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
-getPendingRemoteDescriptionUnsafe ::
-                                  (MonadIO m, HasCallStack) =>
-                                    RTCPeerConnection -> m RTCSessionDescription
-getPendingRemoteDescriptionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getPendingRemoteDescription self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingRemoteDescription MDN RTCPeerConnection.pendingRemoteDescription documentation>
+getPendingRemoteDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getPendingRemoteDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getPendingRemoteDescription (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
-getPendingRemoteDescriptionUnchecked ::
-                                     (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
-getPendingRemoteDescriptionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getPendingRemoteDescription self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"signalingState\"]; })"
         js_getSignalingState :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/signalingState MDN RTCPeerConnection.signalingState documentation>
+getSignalingState :: (MonadDOM m) => RTCPeerConnection -> m RTCSignalingState
+getSignalingState self = liftDOM (((js_getSignalingState (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.signalingState Mozilla webkitRTCPeerConnection.signalingState documentation> 
-getSignalingState ::
-                  (MonadIO m) => RTCPeerConnection -> m RTCSignalingState
-getSignalingState self
-  = liftIO ((js_getSignalingState self) >>= fromJSValUnchecked)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"iceGatheringState\"]; })"
         js_getIceGatheringState :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/iceGatheringState MDN RTCPeerConnection.iceGatheringState documentation>
+getIceGatheringState :: (MonadDOM m) => RTCPeerConnection -> m RTCIceGatheringState
+getIceGatheringState self = liftDOM (((js_getIceGatheringState (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceGatheringState Mozilla webkitRTCPeerConnection.iceGatheringState documentation> 
-getIceGatheringState ::
-                     (MonadIO m) => RTCPeerConnection -> m RTCIceGatheringState
-getIceGatheringState self
-  = liftIO ((js_getIceGatheringState self) >>= fromJSValUnchecked)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"iceConnectionState\"]; })"
         js_getIceConnectionState :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/iceConnectionState MDN RTCPeerConnection.iceConnectionState documentation>
+getIceConnectionState :: (MonadDOM m) => RTCPeerConnection -> m RTCIceConnectionState
+getIceConnectionState self = liftDOM (((js_getIceConnectionState (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceConnectionState Mozilla webkitRTCPeerConnection.iceConnectionState documentation> 
-getIceConnectionState ::
-                      (MonadIO m) => RTCPeerConnection -> m RTCIceConnectionState
-getIceConnectionState self
-  = liftIO ((js_getIceConnectionState self) >>= fromJSValUnchecked)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"connectionState\"]; })"
         js_getConnectionState :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/connectionState MDN RTCPeerConnection.connectionState documentation>
+getConnectionState :: (MonadDOM m) => RTCPeerConnection -> m RTCPeerConnectionState
+getConnectionState self = liftDOM (((js_getConnectionState (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.connectionState Mozilla webkitRTCPeerConnection.connectionState documentation> 
-getConnectionState ::
-                   (MonadIO m) => RTCPeerConnection -> m RTCPeerConnectionState
-getConnectionState self
-  = liftIO ((js_getConnectionState self) >>= fromJSValUnchecked)
+foreign import javascript unsafe "(($1) => { return $1[\"canTrickleIceCandidates\"]; })"
+        js_getCanTrickleIceCandidates :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates MDN RTCPeerConnection.canTrickleIceCandidates documentation>
+getCanTrickleIceCandidates :: (MonadDOM m) => RTCPeerConnection -> m (Maybe Bool)
+getCanTrickleIceCandidates self = liftDOM (((js_getCanTrickleIceCandidates (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onnegotiationneeded Mozilla webkitRTCPeerConnection.onnegotiationneeded documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates MDN RTCPeerConnection.canTrickleIceCandidates documentation>
+getCanTrickleIceCandidatesUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m Bool
+getCanTrickleIceCandidatesUnsafe self = liftDOM ((((js_getCanTrickleIceCandidates (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates MDN RTCPeerConnection.canTrickleIceCandidates documentation>
+getCanTrickleIceCandidatesUnchecked :: (MonadDOM m) => RTCPeerConnection -> m Bool
+getCanTrickleIceCandidatesUnchecked self = liftDOM ((pFromJSVal <$> (js_getCanTrickleIceCandidates (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sctp\"]; })"
+        js_getSctp :: RTCPeerConnection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/sctp MDN RTCPeerConnection.sctp documentation>
+getSctp :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSctpTransport)
+getSctp self = liftDOM (((js_getSctp (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/sctp MDN RTCPeerConnection.sctp documentation>
+getSctpUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSctpTransport
+getSctpUnsafe self = liftDOM ((((js_getSctp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/sctp MDN RTCPeerConnection.sctp documentation>
+getSctpUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSctpTransport
+getSctpUnchecked self = liftDOM ((pFromJSVal <$> (js_getSctp (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-onnegotiationneeded negotiationneeded event>
 negotiationNeeded :: EventName RTCPeerConnection Event
-negotiationNeeded
-  = unsafeEventName (toJSString "negotiationneeded")
+negotiationNeeded = unsafeEventName (toJSString "negotiationneeded")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onicecandidate Mozilla webkitRTCPeerConnection.onicecandidate documentation> 
-iceCandidate :: EventName RTCPeerConnection RTCIceCandidateEvent
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-onicecandidate icecandidate event>
+iceCandidate :: EventName RTCPeerConnection RTCPeerConnectionIceEvent
 iceCandidate = unsafeEventName (toJSString "icecandidate")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onsignalingstatechange Mozilla webkitRTCPeerConnection.onsignalingstatechange documentation> 
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-onicecandidateerror icecandidateerror event>
+icecandidateerror :: EventName RTCPeerConnection RTCPeerConnectionIceErrorEvent
+icecandidateerror = unsafeEventName (toJSString "icecandidateerror")
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-onsignalingstatechange signalingstatechange event>
 signalingStateChange :: EventName RTCPeerConnection Event
-signalingStateChange
-  = unsafeEventName (toJSString "signalingstatechange")
+signalingStateChange = unsafeEventName (toJSString "signalingstatechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.oniceconnectionstatechange Mozilla webkitRTCPeerConnection.oniceconnectionstatechange documentation> 
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-oniceconnectionstatechange iceconnectionstatechange event>
 iceConnectionStateChange :: EventName RTCPeerConnection Event
-iceConnectionStateChange
-  = unsafeEventName (toJSString "iceconnectionstatechange")
+iceConnectionStateChange = unsafeEventName (toJSString "iceconnectionstatechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onicegatheringstatechange Mozilla webkitRTCPeerConnection.onicegatheringstatechange documentation> 
-icegatheringstatechange ::
-                          EventName RTCPeerConnection onicegatheringstatechange
-icegatheringstatechange
-  = unsafeEventName (toJSString "icegatheringstatechange")
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-onicegatheringstatechange icegatheringstatechange event>
+icegatheringstatechange :: EventName RTCPeerConnection Event
+icegatheringstatechange = unsafeEventName (toJSString "icegatheringstatechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onconnectionstatechange Mozilla webkitRTCPeerConnection.onconnectionstatechange documentation> 
-connectionstatechange ::
-                        EventName RTCPeerConnection onconnectionstatechange
-connectionstatechange
-  = unsafeEventName (toJSString "connectionstatechange")
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-onconnectionstatechange connectionstatechange event>
+connectionstatechange :: EventName RTCPeerConnection Event
+connectionstatechange = unsafeEventName (toJSString "connectionstatechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.ontrack Mozilla webkitRTCPeerConnection.ontrack documentation> 
-track :: EventName RTCPeerConnection ontrack
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-ontrack track event>
+track :: EventName RTCPeerConnection RTCTrackEvent
 track = unsafeEventName (toJSString "track")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.ondatachannel Mozilla webkitRTCPeerConnection.ondatachannel documentation> 
-dataChannel :: EventName RTCPeerConnection Event
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-ondatachannel datachannel event>
+dataChannel :: EventName RTCPeerConnection RTCDataChannelEvent
 dataChannel = unsafeEventName (toJSString "datachannel")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onaddstream Mozilla webkitRTCPeerConnection.onaddstream documentation> 
-addStreamEvent :: EventName RTCPeerConnection Event
-addStreamEvent = unsafeEventName (toJSString "addstream")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionErrorCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback
+       (newRTCPeerConnectionErrorCallback, newRTCPeerConnectionErrorCallbackSync, newRTCPeerConnectionErrorCallbackAsync, RTCPeerConnectionErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newRTCPeerConnectionErrorCallback :: (MonadDOM m) => (DOMException -> IO ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallback callback = liftDOM ((RTCPeerConnectionErrorCallback . coerce) <$> syncCallback1 ContinueAsync (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newRTCPeerConnectionErrorCallbackSync :: (MonadDOM m) => (DOMException -> IO ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackSync callback = liftDOM ((RTCPeerConnectionErrorCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newRTCPeerConnectionErrorCallbackAsync :: (MonadDOM m) => (DOMException -> IO ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackAsync callback = liftDOM ((RTCPeerConnectionErrorCallback . coerce) <$> asyncCallback1 (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceErrorEvent.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceErrorEvent
+       (js_newRTCPeerConnectionIceErrorEvent, js_getAddress, js_getPort, js_getUrl, js_getErrorCode, js_getErrorText, newRTCPeerConnectionIceErrorEvent, getAddress, getAddressUnsafe, getAddressUnchecked, getPort, getPortUnsafe, getPortUnchecked, getUrl, getErrorCode, getErrorText, RTCPeerConnectionIceErrorEvent(..), gTypeRTCPeerConnectionIceErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCPeerConnectionIceErrorEvent\"]($1, $2); })"
+        js_newRTCPeerConnectionIceErrorEvent :: JSString -> RTCPeerConnectionIceErrorEventInit -> IO RTCPeerConnectionIceErrorEvent
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/RTCPeerConnectionIceErrorEvent MDN RTCPeerConnectionIceErrorEvent. documentation>
+newRTCPeerConnectionIceErrorEvent :: (MonadDOM m, ToJSString type') => type' -> RTCPeerConnectionIceErrorEventInit -> m RTCPeerConnectionIceErrorEvent
+newRTCPeerConnectionIceErrorEvent type' eventInitDict = liftDOM ((js_newRTCPeerConnectionIceErrorEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"address\"]; })"
+        js_getAddress :: RTCPeerConnectionIceErrorEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/address MDN RTCPeerConnectionIceErrorEvent.address documentation>
+getAddress :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEvent -> m (Maybe result)
+getAddress self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAddress (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/address MDN RTCPeerConnectionIceErrorEvent.address documentation>
+getAddressUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceErrorEvent -> m result
+getAddressUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAddress (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/address MDN RTCPeerConnectionIceErrorEvent.address documentation>
+getAddressUnchecked :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEvent -> m result
+getAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getAddress (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: RTCPeerConnectionIceErrorEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/port MDN RTCPeerConnectionIceErrorEvent.port documentation>
+getPort :: (MonadDOM m) => RTCPeerConnectionIceErrorEvent -> m (Maybe Word)
+getPort self = liftDOM (((js_getPort (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/port MDN RTCPeerConnectionIceErrorEvent.port documentation>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceErrorEvent -> m Word
+getPortUnsafe self = liftDOM ((((js_getPort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/port MDN RTCPeerConnectionIceErrorEvent.port documentation>
+getPortUnchecked :: (MonadDOM m) => RTCPeerConnectionIceErrorEvent -> m Word
+getPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPort (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: RTCPeerConnectionIceErrorEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/url MDN RTCPeerConnectionIceErrorEvent.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEvent -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"errorCode\"]; })"
+        js_getErrorCode :: RTCPeerConnectionIceErrorEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/errorCode MDN RTCPeerConnectionIceErrorEvent.errorCode documentation>
+getErrorCode :: (MonadDOM m) => RTCPeerConnectionIceErrorEvent -> m Word
+getErrorCode self = liftDOM ((js_getErrorCode (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"errorText\"]; })"
+        js_getErrorText :: RTCPeerConnectionIceErrorEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/errorText MDN RTCPeerConnectionIceErrorEvent.errorText documentation>
+getErrorText :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEvent -> m result
+getErrorText self = liftDOM ((fromJSString <$> (js_getErrorText (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceErrorEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceErrorEventInit.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceErrorEventInit
+       (js_newRTCPeerConnectionIceErrorEventInit, js_setAddress, js_getAddress, js_setPort, js_getPort, js_setUrl, js_getUrl, js_setErrorCode, js_getErrorCode, js_setErrorText, js_getErrorText, newRTCPeerConnectionIceErrorEventInit, setAddress, getAddress, getAddressUnsafe, getAddressUnchecked, setPort, getPort, getPortUnsafe, getPortUnchecked, setUrl, getUrl, getUrlUnsafe, getUrlUnchecked, setErrorCode, getErrorCode, setErrorText, getErrorText, getErrorTextUnsafe, getErrorTextUnchecked, RTCPeerConnectionIceErrorEventInit(..), gTypeRTCPeerConnectionIceErrorEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"errorCode\": $1}); })"
+        js_newRTCPeerConnectionIceErrorEventInit :: Word -> IO RTCPeerConnectionIceErrorEventInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit RTCPeerConnectionIceErrorEventInit specification>
+newRTCPeerConnectionIceErrorEventInit :: (MonadDOM m) => Word -> m RTCPeerConnectionIceErrorEventInit
+newRTCPeerConnectionIceErrorEventInit errorCode = liftDOM ((js_newRTCPeerConnectionIceErrorEventInit (errorCode)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"address\"] = $2; })"
+        js_setAddress :: RTCPeerConnectionIceErrorEventInit -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-address RTCPeerConnectionIceErrorEventInit.address specification>
+setAddress :: (MonadDOM m, ToJSString val) => RTCPeerConnectionIceErrorEventInit -> Maybe val -> m ()
+setAddress self val = liftDOM (void ((js_setAddress (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"address\"]; })"
+        js_getAddress :: RTCPeerConnectionIceErrorEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-address RTCPeerConnectionIceErrorEventInit.address specification>
+getAddress :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m (Maybe result)
+getAddress self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAddress (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-address RTCPeerConnectionIceErrorEventInit.address specification>
+getAddressUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getAddressUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAddress (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-address RTCPeerConnectionIceErrorEventInit.address specification>
+getAddressUnchecked :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getAddressUnchecked self = liftDOM ((pFromJSVal <$> (js_getAddress (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"port\"] = $2; })"
+        js_setPort :: RTCPeerConnectionIceErrorEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-port RTCPeerConnectionIceErrorEventInit.port specification>
+setPort :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> Maybe Word -> m ()
+setPort self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPort (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: RTCPeerConnectionIceErrorEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-port RTCPeerConnectionIceErrorEventInit.port specification>
+getPort :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> m (Maybe Word)
+getPort self = liftDOM (((js_getPort (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-port RTCPeerConnectionIceErrorEventInit.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceErrorEventInit -> m Word
+getPortUnsafe self = liftDOM ((((js_getPort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-port RTCPeerConnectionIceErrorEventInit.port specification>
+getPortUnchecked :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> m Word
+getPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPort (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: RTCPeerConnectionIceErrorEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-url RTCPeerConnectionIceErrorEventInit.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => RTCPeerConnectionIceErrorEventInit -> val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: RTCPeerConnectionIceErrorEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-url RTCPeerConnectionIceErrorEventInit.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-url RTCPeerConnectionIceErrorEventInit.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-url RTCPeerConnectionIceErrorEventInit.url specification>
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"errorCode\"] = $2; })"
+        js_setErrorCode :: RTCPeerConnectionIceErrorEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errorcode RTCPeerConnectionIceErrorEventInit.errorCode specification>
+setErrorCode :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> Word -> m ()
+setErrorCode self val = liftDOM (void ((js_setErrorCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"errorCode\"]; })"
+        js_getErrorCode :: RTCPeerConnectionIceErrorEventInit -> IO Word
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errorcode RTCPeerConnectionIceErrorEventInit.errorCode specification>
+getErrorCode :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> m Word
+getErrorCode self = liftDOM ((js_getErrorCode (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"errorText\"] = $2; })"
+        js_setErrorText :: RTCPeerConnectionIceErrorEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errortext RTCPeerConnectionIceErrorEventInit.errorText specification>
+setErrorText :: (MonadDOM m, ToJSString val) => RTCPeerConnectionIceErrorEventInit -> val -> m ()
+setErrorText self val = liftDOM (void ((js_setErrorText (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"errorText\"]; })"
+        js_getErrorText :: RTCPeerConnectionIceErrorEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errortext RTCPeerConnectionIceErrorEventInit.errorText specification>
+getErrorText :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m (Maybe result)
+getErrorText self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getErrorText (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errortext RTCPeerConnectionIceErrorEventInit.errorText specification>
+getErrorTextUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getErrorTextUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getErrorText (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errortext RTCPeerConnectionIceErrorEventInit.errorText specification>
+getErrorTextUnchecked :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getErrorTextUnchecked self = liftDOM ((pFromJSVal <$> (js_getErrorText (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
@@ -1,54 +1,37 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent
-       (js_getCandidate, getCandidate, getCandidateUnsafe,
-        getCandidateUnchecked, RTCPeerConnectionIceEvent(..),
-        gTypeRTCPeerConnectionIceEvent)
+       (js_newRTCPeerConnectionIceEvent, js_getCandidate, newRTCPeerConnectionIceEvent, getCandidate, getCandidateUnsafe, getCandidateUnchecked, RTCPeerConnectionIceEvent(..), gTypeRTCPeerConnectionIceEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
-        js_getCandidate ::
-        RTCPeerConnectionIceEvent -> IO (Nullable RTCIceCandidate)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
-getCandidate ::
-             (MonadIO m) =>
-               RTCPeerConnectionIceEvent -> m (Maybe RTCIceCandidate)
-getCandidate self
-  = liftIO (nullableToMaybe <$> (js_getCandidate self))
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCPeerConnectionIceEvent\"]($1, $2); })"
+        js_newRTCPeerConnectionIceEvent :: JSString -> JSVal -> IO RTCPeerConnectionIceEvent
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceEvent/RTCPeerConnectionIceEvent MDN RTCPeerConnectionIceEvent. documentation>
+newRTCPeerConnectionIceEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe RTCPeerConnectionIceEventInit -> m RTCPeerConnectionIceEvent
+newRTCPeerConnectionIceEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newRTCPeerConnectionIceEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
-getCandidateUnsafe ::
-                   (MonadIO m, HasCallStack) =>
-                     RTCPeerConnectionIceEvent -> m RTCIceCandidate
-getCandidateUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getCandidate self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
+        js_getCandidate :: RTCPeerConnectionIceEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceEvent/candidate MDN RTCPeerConnectionIceEvent.candidate documentation>
+getCandidate :: (MonadDOM m) => RTCPeerConnectionIceEvent -> m (Maybe RTCIceCandidate)
+getCandidate self = liftDOM (((js_getCandidate (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
-getCandidateUnchecked ::
-                      (MonadIO m) => RTCPeerConnectionIceEvent -> m RTCIceCandidate
-getCandidateUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getCandidate self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceEvent/candidate MDN RTCPeerConnectionIceEvent.candidate documentation>
+getCandidateUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceEvent -> m RTCIceCandidate
+getCandidateUnsafe self = liftDOM ((((js_getCandidate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceEvent/candidate MDN RTCPeerConnectionIceEvent.candidate documentation>
+getCandidateUnchecked :: (MonadDOM m) => RTCPeerConnectionIceEvent -> m RTCIceCandidate
+getCandidateUnchecked self = liftDOM ((pFromJSVal <$> (js_getCandidate (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEventInit.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEventInit
+       (js_newRTCPeerConnectionIceEventInit, js_setCandidate, js_getCandidate, js_setUrl, js_getUrl, newRTCPeerConnectionIceEventInit, setCandidate, getCandidate, getCandidateUnsafe, getCandidateUnchecked, setUrl, getUrl, getUrlUnsafe, getUrlUnchecked, RTCPeerConnectionIceEventInit(..), gTypeRTCPeerConnectionIceEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCPeerConnectionIceEventInit :: IO RTCPeerConnectionIceEventInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit RTCPeerConnectionIceEventInit specification>
+newRTCPeerConnectionIceEventInit :: (MonadDOM m) => m RTCPeerConnectionIceEventInit
+newRTCPeerConnectionIceEventInit = liftDOM ((js_newRTCPeerConnectionIceEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"candidate\"] = $2; })"
+        js_setCandidate :: RTCPeerConnectionIceEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-candidate RTCPeerConnectionIceEventInit.candidate specification>
+setCandidate :: (MonadDOM m) => RTCPeerConnectionIceEventInit -> Maybe RTCIceCandidate -> m ()
+setCandidate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCandidate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
+        js_getCandidate :: RTCPeerConnectionIceEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-candidate RTCPeerConnectionIceEventInit.candidate specification>
+getCandidate :: (MonadDOM m) => RTCPeerConnectionIceEventInit -> m (Maybe RTCIceCandidate)
+getCandidate self = liftDOM (((js_getCandidate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-candidate RTCPeerConnectionIceEventInit.candidate specification>
+getCandidateUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceEventInit -> m RTCIceCandidate
+getCandidateUnsafe self = liftDOM ((((js_getCandidate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-candidate RTCPeerConnectionIceEventInit.candidate specification>
+getCandidateUnchecked :: (MonadDOM m) => RTCPeerConnectionIceEventInit -> m RTCIceCandidate
+getCandidateUnchecked self = liftDOM ((pFromJSVal <$> (js_getCandidate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: RTCPeerConnectionIceEventInit -> (Nullable JSString) -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-url RTCPeerConnectionIceEventInit.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => RTCPeerConnectionIceEventInit -> Maybe val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: RTCPeerConnectionIceEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-url RTCPeerConnectionIceEventInit.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceEventInit -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-url RTCPeerConnectionIceEventInit.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceEventInit -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-url RTCPeerConnectionIceEventInit.url specification>
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceEventInit -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtcpParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtcpParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtcpParameters.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtcpParameters
+       (js_newRTCRtcpParameters, js_setCname, js_getCname, js_setReducedSize, js_getReducedSize, newRTCRtcpParameters, setCname, getCname, getCnameUnsafe, getCnameUnchecked, setReducedSize, getReducedSize, getReducedSizeUnsafe, getReducedSizeUnchecked, RTCRtcpParameters(..), gTypeRTCRtcpParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCRtcpParameters :: IO RTCRtcpParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters RTCRtcpParameters specification>
+newRTCRtcpParameters :: (MonadDOM m) => m RTCRtcpParameters
+newRTCRtcpParameters = liftDOM ((js_newRTCRtcpParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cname\"] = $2; })"
+        js_setCname :: RTCRtcpParameters -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-cname RTCRtcpParameters.cname specification>
+setCname :: (MonadDOM m, ToJSString val) => RTCRtcpParameters -> val -> m ()
+setCname self val = liftDOM (void ((js_setCname (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cname\"]; })"
+        js_getCname :: RTCRtcpParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-cname RTCRtcpParameters.cname specification>
+getCname :: (MonadDOM m, FromJSString result) => RTCRtcpParameters -> m (Maybe result)
+getCname self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCname (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-cname RTCRtcpParameters.cname specification>
+getCnameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCRtcpParameters -> m result
+getCnameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCname (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-cname RTCRtcpParameters.cname specification>
+getCnameUnchecked :: (MonadDOM m, FromJSString result) => RTCRtcpParameters -> m result
+getCnameUnchecked self = liftDOM ((pFromJSVal <$> (js_getCname (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"reducedSize\"] = $2; })"
+        js_setReducedSize :: RTCRtcpParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-reducedsize RTCRtcpParameters.reducedSize specification>
+setReducedSize :: (MonadDOM m) => RTCRtcpParameters -> Bool -> m ()
+setReducedSize self val = liftDOM (void ((js_setReducedSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reducedSize\"]; })"
+        js_getReducedSize :: RTCRtcpParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-reducedsize RTCRtcpParameters.reducedSize specification>
+getReducedSize :: (MonadDOM m) => RTCRtcpParameters -> m (Maybe Bool)
+getReducedSize self = liftDOM (((js_getReducedSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-reducedsize RTCRtcpParameters.reducedSize specification>
+getReducedSizeUnsafe :: (MonadDOM m, HasCallStack) => RTCRtcpParameters -> m Bool
+getReducedSizeUnsafe self = liftDOM ((((js_getReducedSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-reducedsize RTCRtcpParameters.reducedSize specification>
+getReducedSizeUnchecked :: (MonadDOM m) => RTCRtcpParameters -> m Bool
+getReducedSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getReducedSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCapabilities.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCapabilities.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpCapabilities
+       (js_newRTCRtpCapabilities, js_setCodecs, js_getCodecs, js_setHeaderExtensions, js_getHeaderExtensions, newRTCRtpCapabilities, setCodecs, getCodecs, setHeaderExtensions, getHeaderExtensions, RTCRtpCapabilities(..), gTypeRTCRtpCapabilities)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"codecs\": $1, \"headerExtensions\": $2}); })"
+        js_newRTCRtpCapabilities :: JSVal -> JSVal -> IO RTCRtpCapabilities
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities RTCRtpCapabilities specification>
+newRTCRtpCapabilities :: (MonadDOM m, IsRTCRtpCodec codecs) => [codecs] -> [RTCRtpHeaderExtensionCapability] -> m RTCRtpCapabilities
+newRTCRtpCapabilities codecs headerExtensions = liftDOM (((toJSVal codecs) >>= \a1' -> (toJSVal headerExtensions) >>= \a2' -> js_newRTCRtpCapabilities a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codecs\"] = $2; })"
+        js_setCodecs :: RTCRtpCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities-codecs RTCRtpCapabilities.codecs specification>
+setCodecs :: (MonadDOM m, IsRTCRtpCodec val) => RTCRtpCapabilities -> [val] -> m ()
+setCodecs self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCodecs (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codecs\"]; })"
+        js_getCodecs :: RTCRtpCapabilities -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities-codecs RTCRtpCapabilities.codecs specification>
+getCodecs :: (MonadDOM m) => RTCRtpCapabilities -> m [RTCRtpCodec]
+getCodecs self = liftDOM (((js_getCodecs (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"headerExtensions\"] = $2; })"
+        js_setHeaderExtensions :: RTCRtpCapabilities -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities-headerextensions RTCRtpCapabilities.headerExtensions specification>
+setHeaderExtensions :: (MonadDOM m) => RTCRtpCapabilities -> [RTCRtpHeaderExtensionCapability] -> m ()
+setHeaderExtensions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHeaderExtensions (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"headerExtensions\"]; })"
+        js_getHeaderExtensions :: RTCRtpCapabilities -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities-headerextensions RTCRtpCapabilities.headerExtensions specification>
+getHeaderExtensions :: (MonadDOM m) => RTCRtpCapabilities -> m [RTCRtpHeaderExtensionCapability]
+getHeaderExtensions self = liftDOM (((js_getHeaderExtensions (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodec.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodec.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodec.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpCodec
+       (js_newRTCRtpCodec, js_setMimeType, js_getMimeType, js_setClockRate, js_getClockRate, js_setChannels, js_getChannels, js_setSdpFmtpLine, js_getSdpFmtpLine, newRTCRtpCodec, setMimeType, getMimeType, setClockRate, getClockRate, setChannels, getChannels, getChannelsUnsafe, getChannelsUnchecked, setSdpFmtpLine, getSdpFmtpLine, getSdpFmtpLineUnsafe, getSdpFmtpLineUnchecked, RTCRtpCodec(..), gTypeRTCRtpCodec, IsRTCRtpCodec, toRTCRtpCodec)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"mimeType\": $1, \"clockRate\": $2}); })"
+        js_newRTCRtpCodec :: JSString -> Word -> IO RTCRtpCodec
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec RTCRtpCodec specification>
+newRTCRtpCodec :: (MonadDOM m, ToJSString mimeType) => mimeType -> Word -> m RTCRtpCodec
+newRTCRtpCodec mimeType clockRate = liftDOM ((js_newRTCRtpCodec (toJSString mimeType) (clockRate)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mimeType\"] = $2; })"
+        js_setMimeType :: RTCRtpCodec -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-mimetype RTCRtpCodec.mimeType specification>
+setMimeType :: (MonadDOM m, IsRTCRtpCodec self, ToJSString val) => self -> val -> m ()
+setMimeType self val = liftDOM (void ((js_setMimeType ((Types.toRTCRtpCodec self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mimeType\"]; })"
+        js_getMimeType :: RTCRtpCodec -> IO JSString
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-mimetype RTCRtpCodec.mimeType specification>
+getMimeType :: (MonadDOM m, IsRTCRtpCodec self, FromJSString result) => self -> m result
+getMimeType self = liftDOM ((fromJSString <$> (js_getMimeType ((Types.toRTCRtpCodec self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clockRate\"] = $2; })"
+        js_setClockRate :: RTCRtpCodec -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-clockrate RTCRtpCodec.clockRate specification>
+setClockRate :: (MonadDOM m, IsRTCRtpCodec self) => self -> Word -> m ()
+setClockRate self val = liftDOM (void ((js_setClockRate ((Types.toRTCRtpCodec self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clockRate\"]; })"
+        js_getClockRate :: RTCRtpCodec -> IO Word
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-clockrate RTCRtpCodec.clockRate specification>
+getClockRate :: (MonadDOM m, IsRTCRtpCodec self) => self -> m Word
+getClockRate self = liftDOM ((js_getClockRate ((Types.toRTCRtpCodec self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"channels\"] = $2; })"
+        js_setChannels :: RTCRtpCodec -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-channels RTCRtpCodec.channels specification>
+setChannels :: (MonadDOM m, IsRTCRtpCodec self) => self -> Word -> m ()
+setChannels self val = liftDOM (void ((js_setChannels ((Types.toRTCRtpCodec self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"channels\"]; })"
+        js_getChannels :: RTCRtpCodec -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-channels RTCRtpCodec.channels specification>
+getChannels :: (MonadDOM m, IsRTCRtpCodec self) => self -> m (Maybe Word)
+getChannels self = liftDOM (((js_getChannels ((Types.toRTCRtpCodec self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-channels RTCRtpCodec.channels specification>
+getChannelsUnsafe :: (MonadDOM m, IsRTCRtpCodec self, HasCallStack) => self -> m Word
+getChannelsUnsafe self = liftDOM ((((js_getChannels ((Types.toRTCRtpCodec self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-channels RTCRtpCodec.channels specification>
+getChannelsUnchecked :: (MonadDOM m, IsRTCRtpCodec self) => self -> m Word
+getChannelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getChannels ((Types.toRTCRtpCodec self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sdpFmtpLine\"] = $2; })"
+        js_setSdpFmtpLine :: RTCRtpCodec -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-sdpfmtpline RTCRtpCodec.sdpFmtpLine specification>
+setSdpFmtpLine :: (MonadDOM m, IsRTCRtpCodec self, ToJSString val) => self -> val -> m ()
+setSdpFmtpLine self val = liftDOM (void ((js_setSdpFmtpLine ((Types.toRTCRtpCodec self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdpFmtpLine\"]; })"
+        js_getSdpFmtpLine :: RTCRtpCodec -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-sdpfmtpline RTCRtpCodec.sdpFmtpLine specification>
+getSdpFmtpLine :: (MonadDOM m, IsRTCRtpCodec self, FromJSString result) => self -> m (Maybe result)
+getSdpFmtpLine self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSdpFmtpLine ((Types.toRTCRtpCodec self)))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-sdpfmtpline RTCRtpCodec.sdpFmtpLine specification>
+getSdpFmtpLineUnsafe :: (MonadDOM m, IsRTCRtpCodec self, HasCallStack, FromJSString result) => self -> m result
+getSdpFmtpLineUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSdpFmtpLine ((Types.toRTCRtpCodec self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-sdpfmtpline RTCRtpCodec.sdpFmtpLine specification>
+getSdpFmtpLineUnchecked :: (MonadDOM m, IsRTCRtpCodec self, FromJSString result) => self -> m result
+getSdpFmtpLineUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdpFmtpLine ((Types.toRTCRtpCodec self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodecParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodecParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodecParameters.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpCodecParameters
+       (js_newRTCRtpCodecParameters, js_setPayloadType, js_getPayloadType, newRTCRtpCodecParameters, setPayloadType, getPayloadType, RTCRtpCodecParameters(..), gTypeRTCRtpCodecParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"mimeType\": $1, \"clockRate\": $2, \"payloadType\": $3}); })"
+        js_newRTCRtpCodecParameters :: JSString -> Word -> Word -> IO RTCRtpCodecParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodecparameters RTCRtpCodecParameters specification>
+newRTCRtpCodecParameters :: (MonadDOM m, ToJSString mimeType) => mimeType -> Word -> Word -> m RTCRtpCodecParameters
+newRTCRtpCodecParameters mimeType clockRate payloadType = liftDOM ((js_newRTCRtpCodecParameters (toJSString mimeType) (clockRate) (payloadType)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"payloadType\"] = $2; })"
+        js_setPayloadType :: RTCRtpCodecParameters -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodecparameters-payloadtype RTCRtpCodecParameters.payloadType specification>
+setPayloadType :: (MonadDOM m) => RTCRtpCodecParameters -> Word -> m ()
+setPayloadType self val = liftDOM (void ((js_setPayloadType (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"payloadType\"]; })"
+        js_getPayloadType :: RTCRtpCodecParameters -> IO Word
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodecparameters-payloadtype RTCRtpCodecParameters.payloadType specification>
+getPayloadType :: (MonadDOM m) => RTCRtpCodecParameters -> m Word
+getPayloadType self = liftDOM ((js_getPayloadType (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodingParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodingParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpCodingParameters.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpCodingParameters
+       (js_newRTCRtpCodingParameters, js_setRid, js_getRid, newRTCRtpCodingParameters, setRid, getRid, getRidUnsafe, getRidUnchecked, RTCRtpCodingParameters(..), gTypeRTCRtpCodingParameters, IsRTCRtpCodingParameters, toRTCRtpCodingParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCRtpCodingParameters :: IO RTCRtpCodingParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodingparameters RTCRtpCodingParameters specification>
+newRTCRtpCodingParameters :: (MonadDOM m) => m RTCRtpCodingParameters
+newRTCRtpCodingParameters = liftDOM ((js_newRTCRtpCodingParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rid\"] = $2; })"
+        js_setRid :: RTCRtpCodingParameters -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodingparameters-rid RTCRtpCodingParameters.rid specification>
+setRid :: (MonadDOM m, IsRTCRtpCodingParameters self, ToJSString val) => self -> val -> m ()
+setRid self val = liftDOM (void ((js_setRid ((Types.toRTCRtpCodingParameters self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rid\"]; })"
+        js_getRid :: RTCRtpCodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodingparameters-rid RTCRtpCodingParameters.rid specification>
+getRid :: (MonadDOM m, IsRTCRtpCodingParameters self, FromJSString result) => self -> m (Maybe result)
+getRid self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRid ((Types.toRTCRtpCodingParameters self)))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodingparameters-rid RTCRtpCodingParameters.rid specification>
+getRidUnsafe :: (MonadDOM m, IsRTCRtpCodingParameters self, HasCallStack, FromJSString result) => self -> m result
+getRidUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRid ((Types.toRTCRtpCodingParameters self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodingparameters-rid RTCRtpCodingParameters.rid specification>
+getRidUnchecked :: (MonadDOM m, IsRTCRtpCodingParameters self, FromJSString result) => self -> m result
+getRidUnchecked self = liftDOM ((pFromJSVal <$> (js_getRid ((Types.toRTCRtpCodingParameters self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpContributingSource.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpContributingSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpContributingSource.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpContributingSource
+       (js_newRTCRtpContributingSource, js_setTimestamp, js_getTimestamp, js_setSource, js_getSource, js_setAudioLevel, js_getAudioLevel, js_setRtpTimestamp, js_getRtpTimestamp, newRTCRtpContributingSource, setTimestamp, getTimestamp, setSource, getSource, setAudioLevel, getAudioLevel, getAudioLevelUnsafe, getAudioLevelUnchecked, setRtpTimestamp, getRtpTimestamp, RTCRtpContributingSource(..), gTypeRTCRtpContributingSource, IsRTCRtpContributingSource, toRTCRtpContributingSource)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"timestamp\": $1, \"source\": $2, \"rtpTimestamp\": $3}); })"
+        js_newRTCRtpContributingSource :: Double -> Word -> Word -> IO RTCRtpContributingSource
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource RTCRtpContributingSource specification>
+newRTCRtpContributingSource :: (MonadDOM m) => Double -> Word -> Word -> m RTCRtpContributingSource
+newRTCRtpContributingSource timestamp source rtpTimestamp = liftDOM ((js_newRTCRtpContributingSource (timestamp) (source) (rtpTimestamp)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: RTCRtpContributingSource -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-timestamp RTCRtpContributingSource.timestamp specification>
+setTimestamp :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> Double -> m ()
+setTimestamp self val = liftDOM (void ((js_setTimestamp ((Types.toRTCRtpContributingSource self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: RTCRtpContributingSource -> IO Double
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-timestamp RTCRtpContributingSource.timestamp specification>
+getTimestamp :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m Double
+getTimestamp self = liftDOM ((js_getTimestamp ((Types.toRTCRtpContributingSource self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: RTCRtpContributingSource -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-source RTCRtpContributingSource.source specification>
+setSource :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> Word -> m ()
+setSource self val = liftDOM (void ((js_setSource ((Types.toRTCRtpContributingSource self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: RTCRtpContributingSource -> IO Word
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-source RTCRtpContributingSource.source specification>
+getSource :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m Word
+getSource self = liftDOM ((js_getSource ((Types.toRTCRtpContributingSource self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"audioLevel\"] = $2; })"
+        js_setAudioLevel :: RTCRtpContributingSource -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-audiolevel RTCRtpContributingSource.audioLevel specification>
+setAudioLevel :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> Double -> m ()
+setAudioLevel self val = liftDOM (void ((js_setAudioLevel ((Types.toRTCRtpContributingSource self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"audioLevel\"]; })"
+        js_getAudioLevel :: RTCRtpContributingSource -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-audiolevel RTCRtpContributingSource.audioLevel specification>
+getAudioLevel :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m (Maybe Double)
+getAudioLevel self = liftDOM (((js_getAudioLevel ((Types.toRTCRtpContributingSource self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-audiolevel RTCRtpContributingSource.audioLevel specification>
+getAudioLevelUnsafe :: (MonadDOM m, IsRTCRtpContributingSource self, HasCallStack) => self -> m Double
+getAudioLevelUnsafe self = liftDOM ((((js_getAudioLevel ((Types.toRTCRtpContributingSource self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-audiolevel RTCRtpContributingSource.audioLevel specification>
+getAudioLevelUnchecked :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m Double
+getAudioLevelUnchecked self = liftDOM ((pFromJSVal <$> (js_getAudioLevel ((Types.toRTCRtpContributingSource self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rtpTimestamp\"] = $2; })"
+        js_setRtpTimestamp :: RTCRtpContributingSource -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-rtptimestamp RTCRtpContributingSource.rtpTimestamp specification>
+setRtpTimestamp :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> Word -> m ()
+setRtpTimestamp self val = liftDOM (void ((js_setRtpTimestamp ((Types.toRTCRtpContributingSource self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rtpTimestamp\"]; })"
+        js_getRtpTimestamp :: RTCRtpContributingSource -> IO Word
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-rtptimestamp RTCRtpContributingSource.rtpTimestamp specification>
+getRtpTimestamp :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m Word
+getRtpTimestamp self = liftDOM ((js_getRtpTimestamp ((Types.toRTCRtpContributingSource self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpEncodingParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpEncodingParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpEncodingParameters.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpEncodingParameters
+       (js_newRTCRtpEncodingParameters, js_setActive, js_getActive, js_setCodec, js_getCodec, js_setMaxBitrate, js_getMaxBitrate, js_setMaxFramerate, js_getMaxFramerate, js_setScaleResolutionDownBy, js_getScaleResolutionDownBy, js_setPriority, js_getPriority, js_setNetworkPriority, js_getNetworkPriority, js_setScalabilityMode, js_getScalabilityMode, newRTCRtpEncodingParameters, setActive, getActive, getActiveUnsafe, getActiveUnchecked, setCodec, getCodec, getCodecUnsafe, getCodecUnchecked, setMaxBitrate, getMaxBitrate, getMaxBitrateUnsafe, getMaxBitrateUnchecked, setMaxFramerate, getMaxFramerate, getMaxFramerateUnsafe, getMaxFramerateUnchecked, setScaleResolutionDownBy, getScaleResolutionDownBy, getScaleResolutionDownByUnsafe, getScaleResolutionDownByUnchecked, setPriority, getPriority, getPriorityUnsafe, getPriorityUnchecked, setNetworkPriority, getNetworkPriority, getNetworkPriorityUnsafe, getNetworkPriorityUnchecked, setScalabilityMode, getScalabilityMode, getScalabilityModeUnsafe, getScalabilityModeUnchecked, RTCRtpEncodingParameters(..), gTypeRTCRtpEncodingParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCRtpEncodingParameters :: IO RTCRtpEncodingParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters RTCRtpEncodingParameters specification>
+newRTCRtpEncodingParameters :: (MonadDOM m) => m RTCRtpEncodingParameters
+newRTCRtpEncodingParameters = liftDOM ((js_newRTCRtpEncodingParameters))
+
+foreign import javascript safe "(($1, $2) => { $1[\"active\"] = $2; })"
+        js_setActive :: RTCRtpEncodingParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-active RTCRtpEncodingParameters.active specification>
+setActive :: (MonadDOM m) => RTCRtpEncodingParameters -> Bool -> m ()
+setActive self val = liftDOM (void ((js_setActive (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"active\"]; })"
+        js_getActive :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-active RTCRtpEncodingParameters.active specification>
+getActive :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Bool)
+getActive self = liftDOM (((js_getActive (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-active RTCRtpEncodingParameters.active specification>
+getActiveUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Bool
+getActiveUnsafe self = liftDOM ((((js_getActive (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-active RTCRtpEncodingParameters.active specification>
+getActiveUnchecked :: (MonadDOM m) => RTCRtpEncodingParameters -> m Bool
+getActiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getActive (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codec\"] = $2; })"
+        js_setCodec :: RTCRtpEncodingParameters -> RTCRtpCodec -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-codec RTCRtpEncodingParameters.codec specification>
+setCodec :: (MonadDOM m, IsRTCRtpCodec val) => RTCRtpEncodingParameters -> val -> m ()
+setCodec self val = liftDOM (void ((js_setCodec (self) (Types.toRTCRtpCodec val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codec\"]; })"
+        js_getCodec :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-codec RTCRtpEncodingParameters.codec specification>
+getCodec :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe RTCRtpCodec)
+getCodec self = liftDOM (((js_getCodec (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-codec RTCRtpEncodingParameters.codec specification>
+getCodecUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m RTCRtpCodec
+getCodecUnsafe self = liftDOM ((((js_getCodec (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-codec RTCRtpEncodingParameters.codec specification>
+getCodecUnchecked :: (MonadDOM m) => RTCRtpEncodingParameters -> m RTCRtpCodec
+getCodecUnchecked self = liftDOM ((pFromJSVal <$> (js_getCodec (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxBitrate\"] = $2; })"
+        js_setMaxBitrate :: RTCRtpEncodingParameters -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxbitrate RTCRtpEncodingParameters.maxBitrate specification>
+setMaxBitrate :: (MonadDOM m) => RTCRtpEncodingParameters -> Word -> m ()
+setMaxBitrate self val = liftDOM (void ((js_setMaxBitrate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxBitrate\"]; })"
+        js_getMaxBitrate :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxbitrate RTCRtpEncodingParameters.maxBitrate specification>
+getMaxBitrate :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Word)
+getMaxBitrate self = liftDOM (((js_getMaxBitrate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxbitrate RTCRtpEncodingParameters.maxBitrate specification>
+getMaxBitrateUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Word
+getMaxBitrateUnsafe self = liftDOM ((((js_getMaxBitrate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxbitrate RTCRtpEncodingParameters.maxBitrate specification>
+getMaxBitrateUnchecked :: (MonadDOM m) => RTCRtpEncodingParameters -> m Word
+getMaxBitrateUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxBitrate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxFramerate\"] = $2; })"
+        js_setMaxFramerate :: RTCRtpEncodingParameters -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxframerate RTCRtpEncodingParameters.maxFramerate specification>
+setMaxFramerate :: (MonadDOM m) => RTCRtpEncodingParameters -> Double -> m ()
+setMaxFramerate self val = liftDOM (void ((js_setMaxFramerate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxFramerate\"]; })"
+        js_getMaxFramerate :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxframerate RTCRtpEncodingParameters.maxFramerate specification>
+getMaxFramerate :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Double)
+getMaxFramerate self = liftDOM (((js_getMaxFramerate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxframerate RTCRtpEncodingParameters.maxFramerate specification>
+getMaxFramerateUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Double
+getMaxFramerateUnsafe self = liftDOM ((((js_getMaxFramerate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxframerate RTCRtpEncodingParameters.maxFramerate specification>
+getMaxFramerateUnchecked :: (MonadDOM m) => RTCRtpEncodingParameters -> m Double
+getMaxFramerateUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxFramerate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scaleResolutionDownBy\"] = $2; })"
+        js_setScaleResolutionDownBy :: RTCRtpEncodingParameters -> Double -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-scaleresolutiondownby RTCRtpEncodingParameters.scaleResolutionDownBy specification>
+setScaleResolutionDownBy :: (MonadDOM m) => RTCRtpEncodingParameters -> Double -> m ()
+setScaleResolutionDownBy self val = liftDOM (void ((js_setScaleResolutionDownBy (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scaleResolutionDownBy\"]; })"
+        js_getScaleResolutionDownBy :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-scaleresolutiondownby RTCRtpEncodingParameters.scaleResolutionDownBy specification>
+getScaleResolutionDownBy :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Double)
+getScaleResolutionDownBy self = liftDOM (((js_getScaleResolutionDownBy (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-scaleresolutiondownby RTCRtpEncodingParameters.scaleResolutionDownBy specification>
+getScaleResolutionDownByUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Double
+getScaleResolutionDownByUnsafe self = liftDOM ((((js_getScaleResolutionDownBy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-scaleresolutiondownby RTCRtpEncodingParameters.scaleResolutionDownBy specification>
+getScaleResolutionDownByUnchecked :: (MonadDOM m) => RTCRtpEncodingParameters -> m Double
+getScaleResolutionDownByUnchecked self = liftDOM ((pFromJSVal <$> (js_getScaleResolutionDownBy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: RTCRtpEncodingParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-priority RTCRtpEncodingParameters.priority specification>
+setPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> RTCPriorityType -> m ()
+setPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-priority RTCRtpEncodingParameters.priority specification>
+getPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe RTCPriorityType)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-priority RTCRtpEncodingParameters.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m RTCPriorityType
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-priority RTCRtpEncodingParameters.priority specification>
+getPriorityUnchecked :: (MonadDOM m) => RTCRtpEncodingParameters -> m RTCPriorityType
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"networkPriority\"] = $2; })"
+        js_setNetworkPriority :: RTCRtpEncodingParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-networkpriority RTCRtpEncodingParameters.networkPriority specification>
+setNetworkPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> RTCPriorityType -> m ()
+setNetworkPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setNetworkPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"networkPriority\"]; })"
+        js_getNetworkPriority :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-networkpriority RTCRtpEncodingParameters.networkPriority specification>
+getNetworkPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe RTCPriorityType)
+getNetworkPriority self = liftDOM (((js_getNetworkPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-networkpriority RTCRtpEncodingParameters.networkPriority specification>
+getNetworkPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m RTCPriorityType
+getNetworkPriorityUnsafe self = liftDOM ((((js_getNetworkPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-networkpriority RTCRtpEncodingParameters.networkPriority specification>
+getNetworkPriorityUnchecked :: (MonadDOM m) => RTCRtpEncodingParameters -> m RTCPriorityType
+getNetworkPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getNetworkPriority (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scalabilityMode\"] = $2; })"
+        js_setScalabilityMode :: RTCRtpEncodingParameters -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-svc/#dom-rtcrtpencodingparameters-scalabilitymode RTCRtpEncodingParameters.scalabilityMode specification>
+setScalabilityMode :: (MonadDOM m, ToJSString val) => RTCRtpEncodingParameters -> val -> m ()
+setScalabilityMode self val = liftDOM (void ((js_setScalabilityMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scalabilityMode\"]; })"
+        js_getScalabilityMode :: RTCRtpEncodingParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-svc/#dom-rtcrtpencodingparameters-scalabilitymode RTCRtpEncodingParameters.scalabilityMode specification>
+getScalabilityMode :: (MonadDOM m, FromJSString result) => RTCRtpEncodingParameters -> m (Maybe result)
+getScalabilityMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getScalabilityMode (self))))
+
+-- | <https://w3c.github.io/webrtc-svc/#dom-rtcrtpencodingparameters-scalabilitymode RTCRtpEncodingParameters.scalabilityMode specification>
+getScalabilityModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCRtpEncodingParameters -> m result
+getScalabilityModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getScalabilityMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-svc/#dom-rtcrtpencodingparameters-scalabilitymode RTCRtpEncodingParameters.scalabilityMode specification>
+getScalabilityModeUnchecked :: (MonadDOM m, FromJSString result) => RTCRtpEncodingParameters -> m result
+getScalabilityModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getScalabilityMode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpHeaderExtensionCapability.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpHeaderExtensionCapability.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpHeaderExtensionCapability.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpHeaderExtensionCapability
+       (js_newRTCRtpHeaderExtensionCapability, js_setUri, js_getUri, newRTCRtpHeaderExtensionCapability, setUri, getUri, RTCRtpHeaderExtensionCapability(..), gTypeRTCRtpHeaderExtensionCapability)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"uri\": $1}); })"
+        js_newRTCRtpHeaderExtensionCapability :: JSString -> IO RTCRtpHeaderExtensionCapability
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensioncapability RTCRtpHeaderExtensionCapability specification>
+newRTCRtpHeaderExtensionCapability :: (MonadDOM m, ToJSString uri) => uri -> m RTCRtpHeaderExtensionCapability
+newRTCRtpHeaderExtensionCapability uri = liftDOM ((js_newRTCRtpHeaderExtensionCapability (toJSString uri)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"uri\"] = $2; })"
+        js_setUri :: RTCRtpHeaderExtensionCapability -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensioncapability-uri RTCRtpHeaderExtensionCapability.uri specification>
+setUri :: (MonadDOM m, ToJSString val) => RTCRtpHeaderExtensionCapability -> val -> m ()
+setUri self val = liftDOM (void ((js_setUri (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"uri\"]; })"
+        js_getUri :: RTCRtpHeaderExtensionCapability -> IO JSString
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensioncapability-uri RTCRtpHeaderExtensionCapability.uri specification>
+getUri :: (MonadDOM m, FromJSString result) => RTCRtpHeaderExtensionCapability -> m result
+getUri self = liftDOM ((fromJSString <$> (js_getUri (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpHeaderExtensionParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpHeaderExtensionParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpHeaderExtensionParameters.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpHeaderExtensionParameters
+       (js_newRTCRtpHeaderExtensionParameters, js_setUri, js_getUri, js_setId, js_getId, js_setEncrypted, js_getEncrypted, newRTCRtpHeaderExtensionParameters, setUri, getUri, setId, getId, setEncrypted, getEncrypted, getEncryptedUnsafe, getEncryptedUnchecked, RTCRtpHeaderExtensionParameters(..), gTypeRTCRtpHeaderExtensionParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"uri\": $1, \"id\": $2}); })"
+        js_newRTCRtpHeaderExtensionParameters :: JSString -> Word -> IO RTCRtpHeaderExtensionParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters RTCRtpHeaderExtensionParameters specification>
+newRTCRtpHeaderExtensionParameters :: (MonadDOM m, ToJSString uri) => uri -> Word -> m RTCRtpHeaderExtensionParameters
+newRTCRtpHeaderExtensionParameters uri id = liftDOM ((js_newRTCRtpHeaderExtensionParameters (toJSString uri) (id)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"uri\"] = $2; })"
+        js_setUri :: RTCRtpHeaderExtensionParameters -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-uri RTCRtpHeaderExtensionParameters.uri specification>
+setUri :: (MonadDOM m, ToJSString val) => RTCRtpHeaderExtensionParameters -> val -> m ()
+setUri self val = liftDOM (void ((js_setUri (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"uri\"]; })"
+        js_getUri :: RTCRtpHeaderExtensionParameters -> IO JSString
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-uri RTCRtpHeaderExtensionParameters.uri specification>
+getUri :: (MonadDOM m, FromJSString result) => RTCRtpHeaderExtensionParameters -> m result
+getUri self = liftDOM ((fromJSString <$> (js_getUri (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: RTCRtpHeaderExtensionParameters -> Word -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-id RTCRtpHeaderExtensionParameters.id specification>
+setId :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> Word -> m ()
+setId self val = liftDOM (void ((js_setId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: RTCRtpHeaderExtensionParameters -> IO Word
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-id RTCRtpHeaderExtensionParameters.id specification>
+getId :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> m Word
+getId self = liftDOM ((js_getId (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"encrypted\"] = $2; })"
+        js_setEncrypted :: RTCRtpHeaderExtensionParameters -> Bool -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-encrypted RTCRtpHeaderExtensionParameters.encrypted specification>
+setEncrypted :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> Bool -> m ()
+setEncrypted self val = liftDOM (void ((js_setEncrypted (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"encrypted\"]; })"
+        js_getEncrypted :: RTCRtpHeaderExtensionParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-encrypted RTCRtpHeaderExtensionParameters.encrypted specification>
+getEncrypted :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> m (Maybe Bool)
+getEncrypted self = liftDOM (((js_getEncrypted (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-encrypted RTCRtpHeaderExtensionParameters.encrypted specification>
+getEncryptedUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpHeaderExtensionParameters -> m Bool
+getEncryptedUnsafe self = liftDOM ((((js_getEncrypted (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-encrypted RTCRtpHeaderExtensionParameters.encrypted specification>
+getEncryptedUnchecked :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> m Bool
+getEncryptedUnchecked self = liftDOM ((pFromJSVal <$> (js_getEncrypted (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpParameters.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpParameters
+       (js_newRTCRtpParameters, js_setHeaderExtensions, js_getHeaderExtensions, js_setRtcp, js_getRtcp, js_setCodecs, js_getCodecs, newRTCRtpParameters, setHeaderExtensions, getHeaderExtensions, setRtcp, getRtcp, setCodecs, getCodecs, RTCRtpParameters(..), gTypeRTCRtpParameters, IsRTCRtpParameters, toRTCRtpParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"headerExtensions\": $1, \"rtcp\": $2, \"codecs\": $3}); })"
+        js_newRTCRtpParameters :: JSVal -> RTCRtcpParameters -> JSVal -> IO RTCRtpParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters RTCRtpParameters specification>
+newRTCRtpParameters :: (MonadDOM m) => [RTCRtpHeaderExtensionParameters] -> RTCRtcpParameters -> [RTCRtpCodecParameters] -> m RTCRtpParameters
+newRTCRtpParameters headerExtensions rtcp codecs = liftDOM (((toJSVal headerExtensions) >>= \a1' -> (toJSVal codecs) >>= \a3' -> js_newRTCRtpParameters a1' (rtcp) a3'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"headerExtensions\"] = $2; })"
+        js_setHeaderExtensions :: RTCRtpParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-headerextensions RTCRtpParameters.headerExtensions specification>
+setHeaderExtensions :: (MonadDOM m, IsRTCRtpParameters self) => self -> [RTCRtpHeaderExtensionParameters] -> m ()
+setHeaderExtensions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHeaderExtensions ((Types.toRTCRtpParameters self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"headerExtensions\"]; })"
+        js_getHeaderExtensions :: RTCRtpParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-headerextensions RTCRtpParameters.headerExtensions specification>
+getHeaderExtensions :: (MonadDOM m, IsRTCRtpParameters self) => self -> m [RTCRtpHeaderExtensionParameters]
+getHeaderExtensions self = liftDOM (((js_getHeaderExtensions ((Types.toRTCRtpParameters self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rtcp\"] = $2; })"
+        js_setRtcp :: RTCRtpParameters -> RTCRtcpParameters -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-rtcp RTCRtpParameters.rtcp specification>
+setRtcp :: (MonadDOM m, IsRTCRtpParameters self) => self -> RTCRtcpParameters -> m ()
+setRtcp self val = liftDOM (void ((js_setRtcp ((Types.toRTCRtpParameters self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rtcp\"]; })"
+        js_getRtcp :: RTCRtpParameters -> IO RTCRtcpParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-rtcp RTCRtpParameters.rtcp specification>
+getRtcp :: (MonadDOM m, IsRTCRtpParameters self) => self -> m RTCRtcpParameters
+getRtcp self = liftDOM ((js_getRtcp ((Types.toRTCRtpParameters self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codecs\"] = $2; })"
+        js_setCodecs :: RTCRtpParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-codecs RTCRtpParameters.codecs specification>
+setCodecs :: (MonadDOM m, IsRTCRtpParameters self) => self -> [RTCRtpCodecParameters] -> m ()
+setCodecs self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCodecs ((Types.toRTCRtpParameters self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codecs\"]; })"
+        js_getCodecs :: RTCRtpParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-codecs RTCRtpParameters.codecs specification>
+getCodecs :: (MonadDOM m, IsRTCRtpParameters self) => self -> m [RTCRtpCodecParameters]
+getCodecs self = liftDOM (((js_getCodecs ((Types.toRTCRtpParameters self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiveParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiveParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiveParameters.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpReceiveParameters
+       (js_newRTCRtpReceiveParameters, newRTCRtpReceiveParameters, RTCRtpReceiveParameters(..), gTypeRTCRtpReceiveParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"headerExtensions\": $1, \"rtcp\": $2, \"codecs\": $3}); })"
+        js_newRTCRtpReceiveParameters :: JSVal -> RTCRtcpParameters -> JSVal -> IO RTCRtpReceiveParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpreceiveparameters RTCRtpReceiveParameters specification>
+newRTCRtpReceiveParameters :: (MonadDOM m) => [RTCRtpHeaderExtensionParameters] -> RTCRtcpParameters -> [RTCRtpCodecParameters] -> m RTCRtpReceiveParameters
+newRTCRtpReceiveParameters headerExtensions rtcp codecs = liftDOM (((toJSVal headerExtensions) >>= \a1' -> (toJSVal codecs) >>= \a3' -> js_newRTCRtpReceiveParameters a1' (rtcp) a3'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
@@ -1,46 +1,135 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver
-       (js_getParameters, getParameters, getParameters_, js_getTrack,
-        getTrack, RTCRtpReceiver(..), gTypeRTCRtpReceiver)
+       (js_getContributingSources, js_getParameters, js_getStats, js_getSynchronizationSources, js_getCapabilities, js_getTrack, js_getTransport, js_setJitterBufferTarget, js_getJitterBufferTarget, js_setTransform, js_getTransform, getContributingSources, getContributingSources_, getParameters, getParameters_, getStats, getStats_, getSynchronizationSources, getSynchronizationSources_, getCapabilities, getCapabilities_, getCapabilitiesUnsafe, getCapabilitiesUnchecked, getTrack, getTransport, getTransportUnsafe, getTransportUnchecked, setJitterBufferTarget, getJitterBufferTarget, getJitterBufferTargetUnsafe, getJitterBufferTargetUnchecked, setTransform, getTransform, getTransformUnsafe, getTransformUnchecked, RTCRtpReceiver(..), gTypeRTCRtpReceiver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getParameters\"](); })"
-        js_getParameters :: RTCRtpReceiver -> IO RTCRtpParameters
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.getParameters Mozilla RTCRtpReceiver.getParameters documentation> 
-getParameters ::
-              (MonadIO m) => RTCRtpReceiver -> m RTCRtpParameters
-getParameters self = liftIO (js_getParameters self)
+foreign import javascript safe "(($1) => { return $1[\"getContributingSources\"](); })"
+        js_getContributingSources :: RTCRtpReceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getContributingSources MDN RTCRtpReceiver.getContributingSources documentation>
+getContributingSources :: (MonadDOM m) => RTCRtpReceiver -> m [RTCRtpContributingSource]
+getContributingSources self = liftDOM (((js_getContributingSources (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.getParameters Mozilla RTCRtpReceiver.getParameters documentation> 
-getParameters_ :: (MonadIO m) => RTCRtpReceiver -> m ()
-getParameters_ self = liftIO (void (js_getParameters self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        RTCRtpReceiver -> IO MediaStreamTrack
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getContributingSources MDN RTCRtpReceiver.getContributingSources documentation>
+getContributingSources_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
+getContributingSources_ self = liftDOM (void ((js_getContributingSources (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.track Mozilla RTCRtpReceiver.track documentation> 
-getTrack :: (MonadIO m) => RTCRtpReceiver -> m MediaStreamTrack
-getTrack self = liftIO (js_getTrack self)
+foreign import javascript safe "(($1) => { return $1[\"getParameters\"](); })"
+        js_getParameters :: RTCRtpReceiver -> IO RTCRtpReceiveParameters
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getParameters MDN RTCRtpReceiver.getParameters documentation>
+getParameters :: (MonadDOM m) => RTCRtpReceiver -> m RTCRtpReceiveParameters
+getParameters self = liftDOM ((js_getParameters (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getParameters MDN RTCRtpReceiver.getParameters documentation>
+getParameters_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
+getParameters_ self = liftDOM (void ((js_getParameters (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getStats\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats :: RTCRtpReceiver -> IO (JSVal, RTCStatsReport)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getStats MDN RTCRtpReceiver.getStats documentation>
+getStats :: (MonadDOM m) => RTCRtpReceiver -> m RTCStatsReport
+getStats self = liftDOM (((js_getStats (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getStats MDN RTCRtpReceiver.getStats documentation>
+getStats_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
+getStats_ self = liftDOM (void (((js_getStats (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"getSynchronizationSources\"](); })"
+        js_getSynchronizationSources :: RTCRtpReceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getSynchronizationSources MDN RTCRtpReceiver.getSynchronizationSources documentation>
+getSynchronizationSources :: (MonadDOM m) => RTCRtpReceiver -> m [RTCRtpSynchronizationSource]
+getSynchronizationSources self = liftDOM (((js_getSynchronizationSources (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getSynchronizationSources MDN RTCRtpReceiver.getSynchronizationSources documentation>
+getSynchronizationSources_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
+getSynchronizationSources_ self = liftDOM (void ((js_getSynchronizationSources (self))))
+
+foreign import javascript safe "(($1) => { return globalThis[\"RTCRtpReceiver\"][\"getCapabilities\"]($1); })"
+        js_getCapabilities :: JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getCapabilities_static MDN RTCRtpReceiver.getCapabilities documentation>
+getCapabilities :: (MonadDOM m, ToJSString kind) => kind -> m (Maybe RTCRtpCapabilities)
+getCapabilities kind = liftDOM (((js_getCapabilities (toJSString kind)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getCapabilities_static MDN RTCRtpReceiver.getCapabilities documentation>
+getCapabilities_ :: (MonadDOM m, ToJSString kind) => kind -> m ()
+getCapabilities_ kind = liftDOM (void ((js_getCapabilities (toJSString kind))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getCapabilities_static MDN RTCRtpReceiver.getCapabilities documentation>
+getCapabilitiesUnsafe :: (MonadDOM m, ToJSString kind, HasCallStack) => kind -> m RTCRtpCapabilities
+getCapabilitiesUnsafe kind = liftDOM ((((js_getCapabilities (toJSString kind)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getCapabilities_static MDN RTCRtpReceiver.getCapabilities documentation>
+getCapabilitiesUnchecked :: (MonadDOM m, ToJSString kind) => kind -> m RTCRtpCapabilities
+getCapabilitiesUnchecked kind = liftDOM ((pFromJSVal <$> (js_getCapabilities (toJSString kind))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: RTCRtpReceiver -> IO MediaStreamTrack
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/track MDN RTCRtpReceiver.track documentation>
+getTrack :: (MonadDOM m) => RTCRtpReceiver -> m MediaStreamTrack
+getTrack self = liftDOM ((js_getTrack (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transport\"]; })"
+        js_getTransport :: RTCRtpReceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transport MDN RTCRtpReceiver.transport documentation>
+getTransport :: (MonadDOM m) => RTCRtpReceiver -> m (Maybe RTCDtlsTransport)
+getTransport self = liftDOM (((js_getTransport (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transport MDN RTCRtpReceiver.transport documentation>
+getTransportUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpReceiver -> m RTCDtlsTransport
+getTransportUnsafe self = liftDOM ((((js_getTransport (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transport MDN RTCRtpReceiver.transport documentation>
+getTransportUnchecked :: (MonadDOM m) => RTCRtpReceiver -> m RTCDtlsTransport
+getTransportUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransport (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"jitterBufferTarget\"] = $2; })"
+        js_setJitterBufferTarget :: RTCRtpReceiver -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/jitterBufferTarget MDN RTCRtpReceiver.jitterBufferTarget documentation>
+setJitterBufferTarget :: (MonadDOM m) => RTCRtpReceiver -> Maybe Double -> m ()
+setJitterBufferTarget self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setJitterBufferTarget (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"jitterBufferTarget\"]; })"
+        js_getJitterBufferTarget :: RTCRtpReceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/jitterBufferTarget MDN RTCRtpReceiver.jitterBufferTarget documentation>
+getJitterBufferTarget :: (MonadDOM m) => RTCRtpReceiver -> m (Maybe Double)
+getJitterBufferTarget self = liftDOM (((js_getJitterBufferTarget (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/jitterBufferTarget MDN RTCRtpReceiver.jitterBufferTarget documentation>
+getJitterBufferTargetUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpReceiver -> m Double
+getJitterBufferTargetUnsafe self = liftDOM ((((js_getJitterBufferTarget (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/jitterBufferTarget MDN RTCRtpReceiver.jitterBufferTarget documentation>
+getJitterBufferTargetUnchecked :: (MonadDOM m) => RTCRtpReceiver -> m Double
+getJitterBufferTargetUnchecked self = liftDOM ((pFromJSVal <$> (js_getJitterBufferTarget (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transform\"] = $2; })"
+        js_setTransform :: RTCRtpReceiver -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transform MDN RTCRtpReceiver.transform documentation>
+setTransform :: (MonadDOM m, IsRTCRtpReceiverTransform val) => RTCRtpReceiver -> Maybe val -> m ()
+setTransform self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransform (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
+        js_getTransform :: RTCRtpReceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transform MDN RTCRtpReceiver.transform documentation>
+getTransform :: (MonadDOM m) => RTCRtpReceiver -> m (Maybe RTCRtpReceiverTransform)
+getTransform self = liftDOM (((js_getTransform (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transform MDN RTCRtpReceiver.transform documentation>
+getTransformUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpReceiver -> m RTCRtpReceiverTransform
+getTransformUnsafe self = liftDOM ((((js_getTransform (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transform MDN RTCRtpReceiver.transform documentation>
+getTransformUnchecked :: (MonadDOM m) => RTCRtpReceiver -> m RTCRtpReceiverTransform
+getTransformUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransform (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSFrameDecryptor.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSFrameDecryptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSFrameDecryptor.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpSFrameDecryptor
+       (RTCRtpSFrameDecryptor(..), gTypeRTCRtpSFrameDecryptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSFrameEncryptor.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSFrameEncryptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSFrameEncryptor.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpSFrameEncryptor
+       (RTCRtpSFrameEncryptor(..), gTypeRTCRtpSFrameEncryptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpScriptTransform.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpScriptTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpScriptTransform.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpScriptTransform
+       (js_newRTCRtpScriptTransform, newRTCRtpScriptTransform, RTCRtpScriptTransform(..), gTypeRTCRtpScriptTransform)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"RTCRtpScriptTransform\"]($1, $2, $3); })"
+        js_newRTCRtpScriptTransform :: WorkerOrWorkerAndParameters -> JSVal -> JSVal -> IO RTCRtpScriptTransform
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransform/RTCRtpScriptTransform MDN RTCRtpScriptTransform. documentation>
+newRTCRtpScriptTransform :: (MonadDOM m, IsWorkerOrWorkerAndParameters workerOrWorkerAndParameters) => workerOrWorkerAndParameters -> JSVal -> Maybe [GObject] -> m RTCRtpScriptTransform
+newRTCRtpScriptTransform workerOrWorkerAndParameters options transfer = liftDOM (((P.maybe (P.return jsUndefined) toJSVal transfer) >>= \a3' -> js_newRTCRtpScriptTransform (Types.toWorkerOrWorkerAndParameters workerOrWorkerAndParameters) (options) a3'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpScriptTransformer.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpScriptTransformer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpScriptTransformer.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpScriptTransformer
+       (js_generateKeyFrame, js_sendKeyFrameRequest, js_getReadable, js_getWritable, js_getOptions, generateKeyFrame, sendKeyFrameRequest, getReadable, getWritable, getOptions, RTCRtpScriptTransformer(..), gTypeRTCRtpScriptTransformer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"generateKeyFrame\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_generateKeyFrame :: RTCRtpScriptTransformer -> (Optional JSString) -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/generateKeyFrame MDN RTCRtpScriptTransformer.generateKeyFrame documentation>
+generateKeyFrame :: (MonadDOM m, ToJSString rid) => RTCRtpScriptTransformer -> Maybe rid -> m ()
+generateKeyFrame self rid = liftDOM (void (((js_generateKeyFrame (self) (toOptionalJSString rid)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"sendKeyFrameRequest\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_sendKeyFrameRequest :: RTCRtpScriptTransformer -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/sendKeyFrameRequest MDN RTCRtpScriptTransformer.sendKeyFrameRequest documentation>
+sendKeyFrameRequest :: (MonadDOM m) => RTCRtpScriptTransformer -> m ()
+sendKeyFrameRequest self = liftDOM (void (((js_sendKeyFrameRequest (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: RTCRtpScriptTransformer -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/readable MDN RTCRtpScriptTransformer.readable documentation>
+getReadable :: (MonadDOM m) => RTCRtpScriptTransformer -> m ReadableStream
+getReadable self = liftDOM ((js_getReadable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writable\"]; })"
+        js_getWritable :: RTCRtpScriptTransformer -> IO WritableStream
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/writable MDN RTCRtpScriptTransformer.writable documentation>
+getWritable :: (MonadDOM m) => RTCRtpScriptTransformer -> m WritableStream
+getWritable self = liftDOM ((js_getWritable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })"
+        js_getOptions :: RTCRtpScriptTransformer -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/options MDN RTCRtpScriptTransformer.options documentation>
+getOptions :: (MonadDOM m) => RTCRtpScriptTransformer -> m JSVal
+getOptions self = liftDOM ((js_getOptions (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSendParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSendParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSendParameters.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpSendParameters
+       (js_newRTCRtpSendParameters, js_setTransactionId, js_getTransactionId, js_setEncodings, js_getEncodings, js_setDegradationPreference, js_getDegradationPreference, newRTCRtpSendParameters, setTransactionId, getTransactionId, setEncodings, getEncodings, setDegradationPreference, getDegradationPreference, getDegradationPreferenceUnsafe, getDegradationPreferenceUnchecked, RTCRtpSendParameters(..), gTypeRTCRtpSendParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return ({\"headerExtensions\": $1, \"rtcp\": $2, \"codecs\": $3, \"transactionId\": $4, \"encodings\": $5}); })"
+        js_newRTCRtpSendParameters :: JSVal -> RTCRtcpParameters -> JSVal -> JSString -> JSVal -> IO RTCRtpSendParameters
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters RTCRtpSendParameters specification>
+newRTCRtpSendParameters :: (MonadDOM m, ToJSString transactionId) => [RTCRtpHeaderExtensionParameters] -> RTCRtcpParameters -> [RTCRtpCodecParameters] -> transactionId -> [RTCRtpEncodingParameters] -> m RTCRtpSendParameters
+newRTCRtpSendParameters headerExtensions rtcp codecs transactionId encodings = liftDOM (((toJSVal headerExtensions) >>= \a1' -> (toJSVal codecs) >>= \a3' -> (toJSVal encodings) >>= \a5' -> js_newRTCRtpSendParameters a1' (rtcp) a3' (toJSString transactionId) a5'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transactionId\"] = $2; })"
+        js_setTransactionId :: RTCRtpSendParameters -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters-transactionid RTCRtpSendParameters.transactionId specification>
+setTransactionId :: (MonadDOM m, ToJSString val) => RTCRtpSendParameters -> val -> m ()
+setTransactionId self val = liftDOM (void ((js_setTransactionId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transactionId\"]; })"
+        js_getTransactionId :: RTCRtpSendParameters -> IO JSString
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters-transactionid RTCRtpSendParameters.transactionId specification>
+getTransactionId :: (MonadDOM m, FromJSString result) => RTCRtpSendParameters -> m result
+getTransactionId self = liftDOM ((fromJSString <$> (js_getTransactionId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"encodings\"] = $2; })"
+        js_setEncodings :: RTCRtpSendParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters-encodings RTCRtpSendParameters.encodings specification>
+setEncodings :: (MonadDOM m) => RTCRtpSendParameters -> [RTCRtpEncodingParameters] -> m ()
+setEncodings self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEncodings (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"encodings\"]; })"
+        js_getEncodings :: RTCRtpSendParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters-encodings RTCRtpSendParameters.encodings specification>
+getEncodings :: (MonadDOM m) => RTCRtpSendParameters -> m [RTCRtpEncodingParameters]
+getEncodings self = liftDOM (((js_getEncodings (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"degradationPreference\"] = $2; })"
+        js_setDegradationPreference :: RTCRtpSendParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/mst-content-hint/#dom-rtcrtpsendparameters-degradationpreference RTCRtpSendParameters.degradationPreference specification>
+setDegradationPreference :: (MonadDOM m) => RTCRtpSendParameters -> RTCDegradationPreference -> m ()
+setDegradationPreference self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDegradationPreference (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"degradationPreference\"]; })"
+        js_getDegradationPreference :: RTCRtpSendParameters -> IO JSVal
+-- | <https://w3c.github.io/mst-content-hint/#dom-rtcrtpsendparameters-degradationpreference RTCRtpSendParameters.degradationPreference specification>
+getDegradationPreference :: (MonadDOM m) => RTCRtpSendParameters -> m (Maybe RTCDegradationPreference)
+getDegradationPreference self = liftDOM (((js_getDegradationPreference (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mst-content-hint/#dom-rtcrtpsendparameters-degradationpreference RTCRtpSendParameters.degradationPreference specification>
+getDegradationPreferenceUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSendParameters -> m RTCDegradationPreference
+getDegradationPreferenceUnsafe self = liftDOM ((((js_getDegradationPreference (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mst-content-hint/#dom-rtcrtpsendparameters-degradationpreference RTCRtpSendParameters.degradationPreference specification>
+getDegradationPreferenceUnchecked :: (MonadDOM m) => RTCRtpSendParameters -> m RTCDegradationPreference
+getDegradationPreferenceUnchecked self = liftDOM ((pFromJSVal <$> (js_getDegradationPreference (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
@@ -1,76 +1,135 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCRtpSender
-       (js_getParameters, getParameters, getParameters_, js_replaceTrack,
-        replaceTrack, js_getTrack, getTrack, getTrackUnsafe,
-        getTrackUnchecked, RTCRtpSender(..), gTypeRTCRtpSender)
+       (js_getParameters, js_getStats, js_replaceTrack, js_setParameters, js_setStreams, js_getCapabilities, js_getTrack, js_getTransport, js_getDtmf, js_setTransform, js_getTransform, getParameters, getParameters_, getStats, getStats_, replaceTrack, setParameters, setStreams, getCapabilities, getCapabilities_, getCapabilitiesUnsafe, getCapabilitiesUnchecked, getTrack, getTrackUnsafe, getTrackUnchecked, getTransport, getTransportUnsafe, getTransportUnchecked, getDtmf, getDtmfUnsafe, getDtmfUnchecked, setTransform, getTransform, getTransformUnsafe, getTransformUnchecked, RTCRtpSender(..), gTypeRTCRtpSender)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getParameters\"](); })"
-        js_getParameters :: RTCRtpSender -> IO RTCRtpParameters
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
-getParameters :: (MonadIO m) => RTCRtpSender -> m RTCRtpParameters
-getParameters self = liftIO (js_getParameters self)
+foreign import javascript safe "(($1) => { return $1[\"getParameters\"](); })"
+        js_getParameters :: RTCRtpSender -> IO RTCRtpSendParameters
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getParameters MDN RTCRtpSender.getParameters documentation>
+getParameters :: (MonadDOM m) => RTCRtpSender -> m RTCRtpSendParameters
+getParameters self = liftDOM ((js_getParameters (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
-getParameters_ :: (MonadIO m) => RTCRtpSender -> m ()
-getParameters_ self = liftIO (void (js_getParameters self))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"replaceTrack\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_replaceTrack ::
-        RTCRtpSender -> Optional MediaStreamTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getParameters MDN RTCRtpSender.getParameters documentation>
+getParameters_ :: (MonadDOM m) => RTCRtpSender -> m ()
+getParameters_ self = liftDOM (void ((js_getParameters (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.replaceTrack Mozilla RTCRtpSender.replaceTrack documentation> 
-replaceTrack ::
-             (MonadIO m, IsMediaStreamTrack withTrack) =>
-               RTCRtpSender -> Maybe withTrack -> m ()
-replaceTrack self withTrack
-  = liftIO
-      ((js_replaceTrack self
-          (maybeToOptional (fmap toMediaStreamTrack withTrack)))
-         >>= maybeThrowPromiseRejected)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        RTCRtpSender -> IO (Nullable MediaStreamTrack)
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getStats\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats :: RTCRtpSender -> IO (JSVal, RTCStatsReport)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getStats MDN RTCRtpSender.getStats documentation>
+getStats :: (MonadDOM m) => RTCRtpSender -> m RTCStatsReport
+getStats self = liftDOM (((js_getStats (self)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
-getTrack ::
-         (MonadIO m) => RTCRtpSender -> m (Maybe MediaStreamTrack)
-getTrack self = liftIO (nullableToMaybe <$> (js_getTrack self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getStats MDN RTCRtpSender.getStats documentation>
+getStats_ :: (MonadDOM m) => RTCRtpSender -> m ()
+getStats_ self = liftDOM (void (((js_getStats (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
-getTrackUnsafe ::
-               (MonadIO m, HasCallStack) => RTCRtpSender -> m MediaStreamTrack
-getTrackUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getTrack self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"replaceTrack\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_replaceTrack :: RTCRtpSender -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/replaceTrack MDN RTCRtpSender.replaceTrack documentation>
+replaceTrack :: (MonadDOM m, IsMediaStreamTrack withTrack) => RTCRtpSender -> Maybe withTrack -> m ()
+replaceTrack self withTrack = liftDOM (void ((((toJSVal withTrack) >>= \a2' -> js_replaceTrack (self) a2') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
-getTrackUnchecked ::
-                  (MonadIO m) => RTCRtpSender -> m MediaStreamTrack
-getTrackUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getTrack self))
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"setParameters\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setParameters :: RTCRtpSender -> RTCRtpSendParameters -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/setParameters MDN RTCRtpSender.setParameters documentation>
+setParameters :: (MonadDOM m) => RTCRtpSender -> RTCRtpSendParameters -> Maybe RTCSetParameterOptions -> m ()
+setParameters self parameters setParameterOptions = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal setParameterOptions) >>= \a3' -> js_setParameters (self) (parameters) a3') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setStreams\"](...$2); })"
+        js_setStreams :: RTCRtpSender -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/setStreams MDN RTCRtpSender.setStreams documentation>
+setStreams :: (MonadDOM m) => RTCRtpSender -> [MediaStream] -> m ()
+setStreams self streams = liftDOM (void (((toJSVal streams) >>= \a2' -> js_setStreams (self) a2')))
+
+foreign import javascript safe "(($1) => { return globalThis[\"RTCRtpSender\"][\"getCapabilities\"]($1); })"
+        js_getCapabilities :: JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getCapabilities_static MDN RTCRtpSender.getCapabilities documentation>
+getCapabilities :: (MonadDOM m, ToJSString kind) => kind -> m (Maybe RTCRtpCapabilities)
+getCapabilities kind = liftDOM (((js_getCapabilities (toJSString kind)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getCapabilities_static MDN RTCRtpSender.getCapabilities documentation>
+getCapabilities_ :: (MonadDOM m, ToJSString kind) => kind -> m ()
+getCapabilities_ kind = liftDOM (void ((js_getCapabilities (toJSString kind))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getCapabilities_static MDN RTCRtpSender.getCapabilities documentation>
+getCapabilitiesUnsafe :: (MonadDOM m, ToJSString kind, HasCallStack) => kind -> m RTCRtpCapabilities
+getCapabilitiesUnsafe kind = liftDOM ((((js_getCapabilities (toJSString kind)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getCapabilities_static MDN RTCRtpSender.getCapabilities documentation>
+getCapabilitiesUnchecked :: (MonadDOM m, ToJSString kind) => kind -> m RTCRtpCapabilities
+getCapabilitiesUnchecked kind = liftDOM ((pFromJSVal <$> (js_getCapabilities (toJSString kind))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: RTCRtpSender -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/track MDN RTCRtpSender.track documentation>
+getTrack :: (MonadDOM m) => RTCRtpSender -> m (Maybe MediaStreamTrack)
+getTrack self = liftDOM (((js_getTrack (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/track MDN RTCRtpSender.track documentation>
+getTrackUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m MediaStreamTrack
+getTrackUnsafe self = liftDOM ((((js_getTrack (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/track MDN RTCRtpSender.track documentation>
+getTrackUnchecked :: (MonadDOM m) => RTCRtpSender -> m MediaStreamTrack
+getTrackUnchecked self = liftDOM ((pFromJSVal <$> (js_getTrack (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transport\"]; })"
+        js_getTransport :: RTCRtpSender -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transport MDN RTCRtpSender.transport documentation>
+getTransport :: (MonadDOM m) => RTCRtpSender -> m (Maybe RTCDtlsTransport)
+getTransport self = liftDOM (((js_getTransport (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transport MDN RTCRtpSender.transport documentation>
+getTransportUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m RTCDtlsTransport
+getTransportUnsafe self = liftDOM ((((js_getTransport (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transport MDN RTCRtpSender.transport documentation>
+getTransportUnchecked :: (MonadDOM m) => RTCRtpSender -> m RTCDtlsTransport
+getTransportUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransport (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dtmf\"]; })"
+        js_getDtmf :: RTCRtpSender -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/dtmf MDN RTCRtpSender.dtmf documentation>
+getDtmf :: (MonadDOM m) => RTCRtpSender -> m (Maybe RTCDTMFSender)
+getDtmf self = liftDOM (((js_getDtmf (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/dtmf MDN RTCRtpSender.dtmf documentation>
+getDtmfUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m RTCDTMFSender
+getDtmfUnsafe self = liftDOM ((((js_getDtmf (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/dtmf MDN RTCRtpSender.dtmf documentation>
+getDtmfUnchecked :: (MonadDOM m) => RTCRtpSender -> m RTCDTMFSender
+getDtmfUnchecked self = liftDOM ((pFromJSVal <$> (js_getDtmf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transform\"] = $2; })"
+        js_setTransform :: RTCRtpSender -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transform MDN RTCRtpSender.transform documentation>
+setTransform :: (MonadDOM m, IsRTCRtpSenderTransform val) => RTCRtpSender -> Maybe val -> m ()
+setTransform self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransform (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
+        js_getTransform :: RTCRtpSender -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transform MDN RTCRtpSender.transform documentation>
+getTransform :: (MonadDOM m) => RTCRtpSender -> m (Maybe RTCRtpSenderTransform)
+getTransform self = liftDOM (((js_getTransform (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transform MDN RTCRtpSender.transform documentation>
+getTransformUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m RTCRtpSenderTransform
+getTransformUnsafe self = liftDOM ((((js_getTransform (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transform MDN RTCRtpSender.transform documentation>
+getTransformUnchecked :: (MonadDOM m) => RTCRtpSender -> m RTCRtpSenderTransform
+getTransformUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransform (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSynchronizationSource.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSynchronizationSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSynchronizationSource.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpSynchronizationSource
+       (js_newRTCRtpSynchronizationSource, newRTCRtpSynchronizationSource, RTCRtpSynchronizationSource(..), gTypeRTCRtpSynchronizationSource)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"timestamp\": $1, \"source\": $2, \"rtpTimestamp\": $3}); })"
+        js_newRTCRtpSynchronizationSource :: Double -> Word -> Word -> IO RTCRtpSynchronizationSource
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsynchronizationsource RTCRtpSynchronizationSource specification>
+newRTCRtpSynchronizationSource :: (MonadDOM m) => Double -> Word -> Word -> m RTCRtpSynchronizationSource
+newRTCRtpSynchronizationSource timestamp source rtpTimestamp = liftDOM ((js_newRTCRtpSynchronizationSource (timestamp) (source) (rtpTimestamp)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
@@ -1,101 +1,81 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver
-       (js_setDirection, setDirection, js_stop, stop, js_getMid, getMid,
-        getMidUnsafe, getMidUnchecked, js_getSender, getSender,
-        js_getReceiver, getReceiver, js_getStopped, getStopped,
-        js_getDirection, getDirection, RTCRtpTransceiver(..),
-        gTypeRTCRtpTransceiver)
+       (js_setCodecPreferences, js_stop, js_getMid, js_getSender, js_getReceiver, js_setDirection, js_getDirection, js_getCurrentDirection, setCodecPreferences, stop, getMid, getMidUnsafe, getMidUnchecked, getSender, getReceiver, setDirection, getDirection, getCurrentDirection, getCurrentDirectionUnsafe, getCurrentDirectionUnchecked, RTCRtpTransceiver(..), gTypeRTCRtpTransceiver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setDirection\"]($2); })"
-        js_setDirection :: RTCRtpTransceiver -> JSVal -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.setDirection Mozilla RTCRtpTransceiver.setDirection documentation> 
-setDirection ::
-             (MonadIO m) =>
-               RTCRtpTransceiver -> RTCRtpTransceiverDirection -> m ()
-setDirection self direction
-  = liftIO (js_setDirection self (pToJSVal direction))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
-        RTCRtpTransceiver -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"setCodecPreferences\"]($2); })"
+        js_setCodecPreferences :: RTCRtpTransceiver -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/setCodecPreferences MDN RTCRtpTransceiver.setCodecPreferences documentation>
+setCodecPreferences :: (MonadDOM m, IsRTCRtpCodec codecs) => RTCRtpTransceiver -> [codecs] -> m ()
+setCodecPreferences self codecs = liftDOM (void (((toJSVal codecs) >>= \a2' -> js_setCodecPreferences (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.stop Mozilla RTCRtpTransceiver.stop documentation> 
-stop :: (MonadIO m) => RTCRtpTransceiver -> m ()
-stop self = liftIO (js_stop self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mid\"]; })" js_getMid ::
-        RTCRtpTransceiver -> IO (Nullable JSString)
+foreign import javascript safe "(($1) => { return $1[\"stop\"](); })"
+        js_stop :: RTCRtpTransceiver -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/stop MDN RTCRtpTransceiver.stop documentation>
+stop :: (MonadDOM m) => RTCRtpTransceiver -> m ()
+stop self = liftDOM (void ((js_stop (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
-getMid ::
-       (MonadIO m, FromJSString result) =>
-         RTCRtpTransceiver -> m (Maybe result)
-getMid self = liftIO (fromMaybeJSString <$> (js_getMid self))
+foreign import javascript unsafe "(($1) => { return $1[\"mid\"]; })"
+        js_getMid :: RTCRtpTransceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/mid MDN RTCRtpTransceiver.mid documentation>
+getMid :: (MonadDOM m, FromJSString result) => RTCRtpTransceiver -> m (Maybe result)
+getMid self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMid (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
-getMidUnsafe ::
-             (MonadIO m, HasCallStack, FromJSString result) =>
-               RTCRtpTransceiver -> m result
-getMidUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getMid self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/mid MDN RTCRtpTransceiver.mid documentation>
+getMidUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCRtpTransceiver -> m result
+getMidUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMid (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
-getMidUnchecked ::
-                (MonadIO m, FromJSString result) => RTCRtpTransceiver -> m result
-getMidUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getMid self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sender\"]; })" js_getSender ::
-        RTCRtpTransceiver -> IO RTCRtpSender
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/mid MDN RTCRtpTransceiver.mid documentation>
+getMidUnchecked :: (MonadDOM m, FromJSString result) => RTCRtpTransceiver -> m result
+getMidUnchecked self = liftDOM ((pFromJSVal <$> (js_getMid (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.sender Mozilla RTCRtpTransceiver.sender documentation> 
-getSender :: (MonadIO m) => RTCRtpTransceiver -> m RTCRtpSender
-getSender self = liftIO (js_getSender self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"receiver\"]; })" js_getReceiver
-        :: RTCRtpTransceiver -> IO RTCRtpReceiver
+foreign import javascript unsafe "(($1) => { return $1[\"sender\"]; })"
+        js_getSender :: RTCRtpTransceiver -> IO RTCRtpSender
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/sender MDN RTCRtpTransceiver.sender documentation>
+getSender :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpSender
+getSender self = liftDOM ((js_getSender (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.receiver Mozilla RTCRtpTransceiver.receiver documentation> 
-getReceiver :: (MonadIO m) => RTCRtpTransceiver -> m RTCRtpReceiver
-getReceiver self = liftIO (js_getReceiver self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"stopped\"] ? 1 : 0); })"
-        js_getStopped :: RTCRtpTransceiver -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"receiver\"]; })"
+        js_getReceiver :: RTCRtpTransceiver -> IO RTCRtpReceiver
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/receiver MDN RTCRtpTransceiver.receiver documentation>
+getReceiver :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpReceiver
+getReceiver self = liftDOM ((js_getReceiver (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.stopped Mozilla RTCRtpTransceiver.stopped documentation> 
-getStopped :: (MonadIO m) => RTCRtpTransceiver -> m Bool
-getStopped self = liftIO (js_getStopped self)
- 
+foreign import javascript safe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: RTCRtpTransceiver -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/direction MDN RTCRtpTransceiver.direction documentation>
+setDirection :: (MonadDOM m) => RTCRtpTransceiver -> RTCRtpTransceiverDirection -> m ()
+setDirection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDirection (self) a2')))
+
 foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
         js_getDirection :: RTCRtpTransceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/direction MDN RTCRtpTransceiver.direction documentation>
+getDirection :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
+getDirection self = liftDOM (((js_getDirection (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.direction Mozilla RTCRtpTransceiver.direction documentation> 
-getDirection ::
-             (MonadIO m) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
-getDirection self
-  = liftIO ((js_getDirection self) >>= fromJSValUnchecked)
+foreign import javascript unsafe "(($1) => { return $1[\"currentDirection\"]; })"
+        js_getCurrentDirection :: RTCRtpTransceiver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/currentDirection MDN RTCRtpTransceiver.currentDirection documentation>
+getCurrentDirection :: (MonadDOM m) => RTCRtpTransceiver -> m (Maybe RTCRtpTransceiverDirection)
+getCurrentDirection self = liftDOM (((js_getCurrentDirection (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/currentDirection MDN RTCRtpTransceiver.currentDirection documentation>
+getCurrentDirectionUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
+getCurrentDirectionUnsafe self = liftDOM ((((js_getCurrentDirection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/currentDirection MDN RTCRtpTransceiver.currentDirection documentation>
+getCurrentDirectionUnchecked :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
+getCurrentDirectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurrentDirection (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiverInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiverInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiverInit
+       (js_newRTCRtpTransceiverInit, js_setDirection, js_getDirection, js_setStreams, js_getStreams, js_setSendEncodings, js_getSendEncodings, newRTCRtpTransceiverInit, setDirection, getDirection, getDirectionUnsafe, getDirectionUnchecked, setStreams, getStreams, getStreamsUnsafe, getStreamsUnchecked, setSendEncodings, getSendEncodings, getSendEncodingsUnsafe, getSendEncodingsUnchecked, RTCRtpTransceiverInit(..), gTypeRTCRtpTransceiverInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCRtpTransceiverInit :: IO RTCRtpTransceiverInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit RTCRtpTransceiverInit specification>
+newRTCRtpTransceiverInit :: (MonadDOM m) => m RTCRtpTransceiverInit
+newRTCRtpTransceiverInit = liftDOM ((js_newRTCRtpTransceiverInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: RTCRtpTransceiverInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-direction RTCRtpTransceiverInit.direction specification>
+setDirection :: (MonadDOM m) => RTCRtpTransceiverInit -> RTCRtpTransceiverDirection -> m ()
+setDirection self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDirection (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: RTCRtpTransceiverInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-direction RTCRtpTransceiverInit.direction specification>
+getDirection :: (MonadDOM m) => RTCRtpTransceiverInit -> m (Maybe RTCRtpTransceiverDirection)
+getDirection self = liftDOM (((js_getDirection (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-direction RTCRtpTransceiverInit.direction specification>
+getDirectionUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiverInit -> m RTCRtpTransceiverDirection
+getDirectionUnsafe self = liftDOM ((((js_getDirection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-direction RTCRtpTransceiverInit.direction specification>
+getDirectionUnchecked :: (MonadDOM m) => RTCRtpTransceiverInit -> m RTCRtpTransceiverDirection
+getDirectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDirection (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"streams\"] = $2; })"
+        js_setStreams :: RTCRtpTransceiverInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-streams RTCRtpTransceiverInit.streams specification>
+setStreams :: (MonadDOM m) => RTCRtpTransceiverInit -> [MediaStream] -> m ()
+setStreams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStreams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"streams\"]; })"
+        js_getStreams :: RTCRtpTransceiverInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-streams RTCRtpTransceiverInit.streams specification>
+getStreams :: (MonadDOM m) => RTCRtpTransceiverInit -> m (Maybe [MediaStream])
+getStreams self = liftDOM (((js_getStreams (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-streams RTCRtpTransceiverInit.streams specification>
+getStreamsUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiverInit -> m [MediaStream]
+getStreamsUnsafe self = liftDOM ((((js_getStreams (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-streams RTCRtpTransceiverInit.streams specification>
+getStreamsUnchecked :: (MonadDOM m) => RTCRtpTransceiverInit -> m [MediaStream]
+getStreamsUnchecked self = liftDOM (((js_getStreams (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sendEncodings\"] = $2; })"
+        js_setSendEncodings :: RTCRtpTransceiverInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-sendencodings RTCRtpTransceiverInit.sendEncodings specification>
+setSendEncodings :: (MonadDOM m) => RTCRtpTransceiverInit -> [RTCRtpEncodingParameters] -> m ()
+setSendEncodings self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSendEncodings (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sendEncodings\"]; })"
+        js_getSendEncodings :: RTCRtpTransceiverInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-sendencodings RTCRtpTransceiverInit.sendEncodings specification>
+getSendEncodings :: (MonadDOM m) => RTCRtpTransceiverInit -> m (Maybe [RTCRtpEncodingParameters])
+getSendEncodings self = liftDOM (((js_getSendEncodings (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-sendencodings RTCRtpTransceiverInit.sendEncodings specification>
+getSendEncodingsUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiverInit -> m [RTCRtpEncodingParameters]
+getSendEncodingsUnsafe self = liftDOM ((((js_getSendEncodings (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-sendencodings RTCRtpTransceiverInit.sendEncodings specification>
+getSendEncodingsUnchecked :: (MonadDOM m) => RTCRtpTransceiverInit -> m [RTCRtpEncodingParameters]
+getSendEncodingsUnchecked self = liftDOM (((js_getSendEncodings (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCSctpTransport.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSctpTransport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSctpTransport.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCSctpTransport
+       (js_getTransport, js_getState, js_getMaxMessageSize, js_getMaxChannels, getTransport, getState, getMaxMessageSize, getMaxMessageSizeUnsafe, getMaxMessageSizeUnchecked, getMaxChannels, getMaxChannelsUnsafe, getMaxChannelsUnchecked, statechange, RTCSctpTransport(..), gTypeRTCSctpTransport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"transport\"]; })"
+        js_getTransport :: RTCSctpTransport -> IO RTCDtlsTransport
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/transport MDN RTCSctpTransport.transport documentation>
+getTransport :: (MonadDOM m) => RTCSctpTransport -> m RTCDtlsTransport
+getTransport self = liftDOM ((js_getTransport (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: RTCSctpTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/state MDN RTCSctpTransport.state documentation>
+getState :: (MonadDOM m) => RTCSctpTransport -> m RTCSctpTransportState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxMessageSize\"]; })"
+        js_getMaxMessageSize :: RTCSctpTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxMessageSize MDN RTCSctpTransport.maxMessageSize documentation>
+getMaxMessageSize :: (MonadDOM m) => RTCSctpTransport -> m (Maybe Double)
+getMaxMessageSize self = liftDOM (((js_getMaxMessageSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxMessageSize MDN RTCSctpTransport.maxMessageSize documentation>
+getMaxMessageSizeUnsafe :: (MonadDOM m, HasCallStack) => RTCSctpTransport -> m Double
+getMaxMessageSizeUnsafe self = liftDOM ((((js_getMaxMessageSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxMessageSize MDN RTCSctpTransport.maxMessageSize documentation>
+getMaxMessageSizeUnchecked :: (MonadDOM m) => RTCSctpTransport -> m Double
+getMaxMessageSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxMessageSize (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxChannels\"]; })"
+        js_getMaxChannels :: RTCSctpTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxChannels MDN RTCSctpTransport.maxChannels documentation>
+getMaxChannels :: (MonadDOM m) => RTCSctpTransport -> m (Maybe Word)
+getMaxChannels self = liftDOM (((js_getMaxChannels (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxChannels MDN RTCSctpTransport.maxChannels documentation>
+getMaxChannelsUnsafe :: (MonadDOM m, HasCallStack) => RTCSctpTransport -> m Word
+getMaxChannelsUnsafe self = liftDOM ((((js_getMaxChannels (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxChannels MDN RTCSctpTransport.maxChannels documentation>
+getMaxChannelsUnchecked :: (MonadDOM m) => RTCSctpTransport -> m Word
+getMaxChannelsUnchecked self = liftDOM ((pFromJSVal <$> (js_getMaxChannels (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsctptransport-onstatechange statechange event>
+statechange :: EventName RTCSctpTransport Event
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
@@ -1,55 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
-       (js_newRTCSessionDescription, newRTCSessionDescription, js_getType,
-        getType, js_getSdp, getSdp, RTCSessionDescription(..),
-        gTypeRTCSessionDescription)
+       (js_newRTCSessionDescription, js_toJSON, js_getType, js_getSdp, newRTCSessionDescription, toJSON, toJSON_, getType, getSdp, RTCSessionDescription(..), gTypeRTCSessionDescription)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"RTCSessionDescription\"]($1); })"
-        js_newRTCSessionDescription ::
-        RTCSessionDescriptionInit -> IO RTCSessionDescription
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
-newRTCSessionDescription ::
-                         (MonadIO m) => RTCSessionDescriptionInit -> m RTCSessionDescription
-newRTCSessionDescription descriptionInitDict
-  = liftIO (js_newRTCSessionDescription descriptionInitDict)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        RTCSessionDescription -> IO JSVal
+foreign import javascript safe "(($1) => { return new globalThis[\"RTCSessionDescription\"]($1); })"
+        js_newRTCSessionDescription :: RTCSessionDescriptionInit -> IO RTCSessionDescription
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/RTCSessionDescription MDN RTCSessionDescription. documentation>
+newRTCSessionDescription :: (MonadDOM m) => RTCSessionDescriptionInit -> m RTCSessionDescription
+newRTCSessionDescription descriptionInitDict = liftDOM ((js_newRTCSessionDescription (descriptionInitDict)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.type Mozilla RTCSessionDescription.type documentation> 
-getType :: (MonadIO m) => RTCSessionDescription -> m RTCSdpType
-getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sdp\"]; })" js_getSdp ::
-        RTCSessionDescription -> IO JSString
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: RTCSessionDescription -> IO RTCSessionDescriptionInit
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/toJSON MDN RTCSessionDescription.toJSON documentation>
+toJSON :: (MonadDOM m) => RTCSessionDescription -> m RTCSessionDescriptionInit
+toJSON self = liftDOM ((js_toJSON (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.sdp Mozilla RTCSessionDescription.sdp documentation> 
-getSdp ::
-       (MonadIO m, FromJSString result) =>
-         RTCSessionDescription -> m result
-getSdp self = liftIO (fromJSString <$> (js_getSdp self))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/toJSON MDN RTCSessionDescription.toJSON documentation>
+toJSON_ :: (MonadDOM m) => RTCSessionDescription -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: RTCSessionDescription -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/type MDN RTCSessionDescription.type documentation>
+getType :: (MonadDOM m) => RTCSessionDescription -> m RTCSdpType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdp\"]; })"
+        js_getSdp :: RTCSessionDescription -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/sdp MDN RTCSessionDescription.sdp documentation>
+getSdp :: (MonadDOM m, FromJSString result) => RTCSessionDescription -> m result
+getSdp self = liftDOM ((fromJSString <$> (js_getSdp (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback
+       (newRTCSessionDescriptionCallback, newRTCSessionDescriptionCallbackSync, newRTCSessionDescriptionCallbackAsync, RTCSessionDescriptionCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newRTCSessionDescriptionCallback :: (MonadDOM m) => (RTCSessionDescriptionInit -> IO ()) -> m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallback callback = liftDOM ((RTCSessionDescriptionCallback . coerce) <$> syncCallback1 ContinueAsync (\ description -> do
+          description' <- fromJSValUnchecked description
+          callback description'))
+
+newRTCSessionDescriptionCallbackSync :: (MonadDOM m) => (RTCSessionDescriptionInit -> IO ()) -> m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackSync callback = liftDOM ((RTCSessionDescriptionCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ description -> do
+          description' <- fromJSValUnchecked description
+          callback description'))
+
+newRTCSessionDescriptionCallbackAsync :: (MonadDOM m) => (RTCSessionDescriptionInit -> IO ()) -> m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackAsync callback = liftDOM ((RTCSessionDescriptionCallback . coerce) <$> asyncCallback1 (\ description -> do
+          description' <- fromJSValUnchecked description
+          callback description'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionInit
+       (js_newRTCSessionDescriptionInit, js_setType, js_getType, js_setSdp, js_getSdp, newRTCSessionDescriptionInit, setType, getType, setSdp, getSdp, getSdpUnsafe, getSdpUnchecked, RTCSessionDescriptionInit(..), gTypeRTCSessionDescriptionInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"type\": $1}); })"
+        js_newRTCSessionDescriptionInit :: JSVal -> IO RTCSessionDescriptionInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit RTCSessionDescriptionInit specification>
+newRTCSessionDescriptionInit :: (MonadDOM m) => RTCSdpType -> m RTCSessionDescriptionInit
+newRTCSessionDescriptionInit type' = liftDOM (((toJSVal type') >>= \a1' -> js_newRTCSessionDescriptionInit a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: RTCSessionDescriptionInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-type RTCSessionDescriptionInit.type specification>
+setType :: (MonadDOM m) => RTCSessionDescriptionInit -> RTCSdpType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: RTCSessionDescriptionInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-type RTCSessionDescriptionInit.type specification>
+getType :: (MonadDOM m) => RTCSessionDescriptionInit -> m RTCSdpType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sdp\"] = $2; })"
+        js_setSdp :: RTCSessionDescriptionInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-sdp RTCSessionDescriptionInit.sdp specification>
+setSdp :: (MonadDOM m, ToJSString val) => RTCSessionDescriptionInit -> val -> m ()
+setSdp self val = liftDOM (void ((js_setSdp (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sdp\"]; })"
+        js_getSdp :: RTCSessionDescriptionInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-sdp RTCSessionDescriptionInit.sdp specification>
+getSdp :: (MonadDOM m, FromJSString result) => RTCSessionDescriptionInit -> m (Maybe result)
+getSdp self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSdp (self))))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-sdp RTCSessionDescriptionInit.sdp specification>
+getSdpUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCSessionDescriptionInit -> m result
+getSdpUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSdp (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-sdp RTCSessionDescriptionInit.sdp specification>
+getSdpUnchecked :: (MonadDOM m, FromJSString result) => RTCSessionDescriptionInit -> m result
+getSdpUnchecked self = liftDOM ((pFromJSVal <$> (js_getSdp (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCSetParameterOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSetParameterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSetParameterOptions.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCSetParameterOptions
+       (js_newRTCSetParameterOptions, newRTCSetParameterOptions, RTCSetParameterOptions(..), gTypeRTCSetParameterOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRTCSetParameterOptions :: IO RTCSetParameterOptions
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsetparameteroptions RTCSetParameterOptions specification>
+newRTCSetParameterOptions :: (MonadDOM m) => m RTCSetParameterOptions
+newRTCSetParameterOptions = liftDOM ((js_newRTCSetParameterOptions))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCStatsReport.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsReport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsReport.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCStatsReport
+       (RTCStatsReport(..), gTypeRTCStatsReport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
@@ -1,70 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RTCTrackEvent
-       (js_newRTCTrackEvent, newRTCTrackEvent, js_getReceiver,
-        getReceiver, js_getTrack, getTrack, js_getStreams, getStreams,
-        js_getTransceiver, getTransceiver, RTCTrackEvent(..),
-        gTypeRTCTrackEvent)
+       (js_newRTCTrackEvent, js_getReceiver, js_getTrack, js_getStreams, js_getTransceiver, newRTCTrackEvent, getReceiver, getTrack, getStreams, getTransceiver, RTCTrackEvent(..), gTypeRTCTrackEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"RTCTrackEvent\"]($1,\n$2); })" js_newRTCTrackEvent ::
-        JSString -> RTCTrackEventInit -> IO RTCTrackEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent Mozilla RTCTrackEvent documentation> 
-newRTCTrackEvent ::
-                 (MonadIO m, ToJSString type') =>
-                   type' -> RTCTrackEventInit -> m RTCTrackEvent
-newRTCTrackEvent type' eventInitDict
-  = liftIO (js_newRTCTrackEvent (toJSString type') eventInitDict)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"receiver\"]; })" js_getReceiver
-        :: RTCTrackEvent -> IO RTCRtpReceiver
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"RTCTrackEvent\"]($1, $2); })"
+        js_newRTCTrackEvent :: JSString -> RTCTrackEventInit -> IO RTCTrackEvent
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/RTCTrackEvent MDN RTCTrackEvent. documentation>
+newRTCTrackEvent :: (MonadDOM m, ToJSString type') => type' -> RTCTrackEventInit -> m RTCTrackEvent
+newRTCTrackEvent type' eventInitDict = liftDOM ((js_newRTCTrackEvent (toJSString type') (eventInitDict)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.receiver Mozilla RTCTrackEvent.receiver documentation> 
-getReceiver :: (MonadIO m) => RTCTrackEvent -> m RTCRtpReceiver
-getReceiver self = liftIO (js_getReceiver self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        RTCTrackEvent -> IO MediaStreamTrack
+foreign import javascript unsafe "(($1) => { return $1[\"receiver\"]; })"
+        js_getReceiver :: RTCTrackEvent -> IO RTCRtpReceiver
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/receiver MDN RTCTrackEvent.receiver documentation>
+getReceiver :: (MonadDOM m) => RTCTrackEvent -> m RTCRtpReceiver
+getReceiver self = liftDOM ((js_getReceiver (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.track Mozilla RTCTrackEvent.track documentation> 
-getTrack :: (MonadIO m) => RTCTrackEvent -> m MediaStreamTrack
-getTrack self = liftIO (js_getTrack self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"streams\"]; })" js_getStreams ::
-        RTCTrackEvent -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: RTCTrackEvent -> IO MediaStreamTrack
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/track MDN RTCTrackEvent.track documentation>
+getTrack :: (MonadDOM m) => RTCTrackEvent -> m MediaStreamTrack
+getTrack self = liftDOM ((js_getTrack (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.streams Mozilla RTCTrackEvent.streams documentation> 
-getStreams :: (MonadIO m) => RTCTrackEvent -> m [MediaStream]
-getStreams self
-  = liftIO ((js_getStreams self) >>= fromJSValUnchecked)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"streams\"]; })"
+        js_getStreams :: RTCTrackEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/streams MDN RTCTrackEvent.streams documentation>
+getStreams :: (MonadDOM m) => RTCTrackEvent -> m [MediaStream]
+getStreams self = liftDOM (((js_getStreams (self)) >>= fromJSValUnchecked))
+
 foreign import javascript unsafe "(($1) => { return $1[\"transceiver\"]; })"
         js_getTransceiver :: RTCTrackEvent -> IO RTCRtpTransceiver
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.transceiver Mozilla RTCTrackEvent.transceiver documentation> 
-getTransceiver ::
-               (MonadIO m) => RTCTrackEvent -> m RTCRtpTransceiver
-getTransceiver self = liftIO (js_getTransceiver self)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/transceiver MDN RTCTrackEvent.transceiver documentation>
+getTransceiver :: (MonadDOM m) => RTCTrackEvent -> m RTCRtpTransceiver
+getTransceiver self = liftDOM ((js_getTransceiver (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEventInit.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCTrackEventInit
+       (js_newRTCTrackEventInit, js_setReceiver, js_getReceiver, js_setTrack, js_getTrack, js_setStreams, js_getStreams, js_setTransceiver, js_getTransceiver, newRTCTrackEventInit, setReceiver, getReceiver, setTrack, getTrack, setStreams, getStreams, getStreamsUnsafe, getStreamsUnchecked, setTransceiver, getTransceiver, RTCTrackEventInit(..), gTypeRTCTrackEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"receiver\": $1, \"track\": $2, \"transceiver\": $3}); })"
+        js_newRTCTrackEventInit :: RTCRtpReceiver -> MediaStreamTrack -> RTCRtpTransceiver -> IO RTCTrackEventInit
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit RTCTrackEventInit specification>
+newRTCTrackEventInit :: (MonadDOM m, IsMediaStreamTrack track) => RTCRtpReceiver -> track -> RTCRtpTransceiver -> m RTCTrackEventInit
+newRTCTrackEventInit receiver track transceiver = liftDOM ((js_newRTCTrackEventInit (receiver) (Types.toMediaStreamTrack track) (transceiver)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"receiver\"] = $2; })"
+        js_setReceiver :: RTCTrackEventInit -> RTCRtpReceiver -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-receiver RTCTrackEventInit.receiver specification>
+setReceiver :: (MonadDOM m) => RTCTrackEventInit -> RTCRtpReceiver -> m ()
+setReceiver self val = liftDOM (void ((js_setReceiver (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"receiver\"]; })"
+        js_getReceiver :: RTCTrackEventInit -> IO RTCRtpReceiver
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-receiver RTCTrackEventInit.receiver specification>
+getReceiver :: (MonadDOM m) => RTCTrackEventInit -> m RTCRtpReceiver
+getReceiver self = liftDOM ((js_getReceiver (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"track\"] = $2; })"
+        js_setTrack :: RTCTrackEventInit -> MediaStreamTrack -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-track RTCTrackEventInit.track specification>
+setTrack :: (MonadDOM m, IsMediaStreamTrack val) => RTCTrackEventInit -> val -> m ()
+setTrack self val = liftDOM (void ((js_setTrack (self) (Types.toMediaStreamTrack val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: RTCTrackEventInit -> IO MediaStreamTrack
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-track RTCTrackEventInit.track specification>
+getTrack :: (MonadDOM m) => RTCTrackEventInit -> m MediaStreamTrack
+getTrack self = liftDOM ((js_getTrack (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"streams\"] = $2; })"
+        js_setStreams :: RTCTrackEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-streams RTCTrackEventInit.streams specification>
+setStreams :: (MonadDOM m) => RTCTrackEventInit -> [MediaStream] -> m ()
+setStreams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStreams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"streams\"]; })"
+        js_getStreams :: RTCTrackEventInit -> IO JSVal
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-streams RTCTrackEventInit.streams specification>
+getStreams :: (MonadDOM m) => RTCTrackEventInit -> m (Maybe [MediaStream])
+getStreams self = liftDOM (((js_getStreams (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-streams RTCTrackEventInit.streams specification>
+getStreamsUnsafe :: (MonadDOM m, HasCallStack) => RTCTrackEventInit -> m [MediaStream]
+getStreamsUnsafe self = liftDOM ((((js_getStreams (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-streams RTCTrackEventInit.streams specification>
+getStreamsUnchecked :: (MonadDOM m) => RTCTrackEventInit -> m [MediaStream]
+getStreamsUnchecked self = liftDOM (((js_getStreams (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transceiver\"] = $2; })"
+        js_setTransceiver :: RTCTrackEventInit -> RTCRtpTransceiver -> IO ()
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-transceiver RTCTrackEventInit.transceiver specification>
+setTransceiver :: (MonadDOM m) => RTCTrackEventInit -> RTCRtpTransceiver -> m ()
+setTransceiver self val = liftDOM (void ((js_setTransceiver (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transceiver\"]; })"
+        js_getTransceiver :: RTCTrackEventInit -> IO RTCRtpTransceiver
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-transceiver RTCTrackEventInit.transceiver specification>
+getTransceiver :: (MonadDOM m) => RTCTrackEventInit -> m RTCRtpTransceiver
+getTransceiver self = liftDOM ((js_getTransceiver (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCTransformEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCTransformEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCTransformEvent.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RTCTransformEvent
+       (js_getTransformer, getTransformer, RTCTransformEvent(..), gTypeRTCTransformEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"transformer\"]; })"
+        js_getTransformer :: RTCTransformEvent -> IO RTCRtpScriptTransformer
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTransformEvent/transformer MDN RTCTransformEvent.transformer documentation>
+getTransformer :: (MonadDOM m) => RTCTransformEvent -> m RTCRtpScriptTransformer
+getTransformer self = liftDOM ((js_getTransformer (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs b/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
@@ -1,54 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.RadioNodeList
-       (js_get, get, get_, js_setValue, setValue, js_getValue, getValue,
-        RadioNodeList(..), gTypeRadioNodeList)
+       (js_setValue, js_getValue, setValue, getValue, RadioNodeList(..), gTypeRadioNodeList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
-        RadioNodeList -> Word -> IO HTMLElement
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.get Mozilla RadioNodeList.get documentation> 
-get :: (MonadIO m) => RadioNodeList -> Word -> m HTMLElement
-get self index = liftIO (js_get self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.get Mozilla RadioNodeList.get documentation> 
-get_ :: (MonadIO m) => RadioNodeList -> Word -> m ()
-get_ self index = liftIO (void (js_get self index))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
-        :: RadioNodeList -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
-setValue ::
-         (MonadIO m, ToJSString val) => RadioNodeList -> val -> m ()
-setValue self val = liftIO (js_setValue self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        RadioNodeList -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: RadioNodeList -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/RadioNodeList/value MDN RadioNodeList.value documentation>
+setValue :: (MonadDOM m, ToJSString val) => RadioNodeList -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
-getValue ::
-         (MonadIO m, FromJSString result) => RadioNodeList -> m result
-getValue self = liftIO (fromJSString <$> (js_getValue self))
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: RadioNodeList -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/RadioNodeList/value MDN RadioNodeList.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => RadioNodeList -> m result
+getValue self = liftDOM ((fromJSString <$> (js_getValue (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Range.hs b/src/GHCJS/DOM/JSFFI/Generated/Range.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Range.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Range.hs
@@ -1,381 +1,215 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Range
-       (js_newRange, newRange, js_setStart, setStart, js_setEnd, setEnd,
-        js_setStartBefore, setStartBefore, js_setStartAfter, setStartAfter,
-        js_setEndBefore, setEndBefore, js_setEndAfter, setEndAfter,
-        js_collapse, collapse, js_selectNode, selectNode,
-        js_selectNodeContents, selectNodeContents,
-        js_compareBoundaryPoints, compareBoundaryPoints,
-        compareBoundaryPoints_, js_deleteContents, deleteContents,
-        js_extractContents, extractContents, extractContents_,
-        js_cloneContents, cloneContents, cloneContents_, js_insertNode,
-        insertNode, js_surroundContents, surroundContents, js_cloneRange,
-        cloneRange, cloneRange_, js_detach, detach, js_isPointInRange,
-        isPointInRange, isPointInRange_, js_comparePoint, comparePoint,
-        comparePoint_, js_intersectsNode, intersectsNode, intersectsNode_,
-        js_toString, toString, toString_, js_getClientRects,
-        getClientRects, getClientRects_, js_getBoundingClientRect,
-        getBoundingClientRect, getBoundingClientRect_,
-        js_createContextualFragment, createContextualFragment,
-        createContextualFragment_, js_expand, expand, js_compareNode,
-        compareNode, compareNode_, pattern START_TO_START,
-        pattern START_TO_END, pattern END_TO_END, pattern END_TO_START,
-        pattern NODE_BEFORE, pattern NODE_AFTER,
-        pattern NODE_BEFORE_AND_AFTER, pattern NODE_INSIDE,
-        js_getStartContainer, getStartContainer, js_getStartOffset,
-        getStartOffset, js_getEndContainer, getEndContainer,
-        js_getEndOffset, getEndOffset, js_getCollapsed, getCollapsed,
-        js_getCommonAncestorContainer, getCommonAncestorContainer,
-        Range(..), gTypeRange)
+       (js_newRange, js_cloneContents, js_cloneRange, js_collapse, js_compareBoundaryPoints, js_comparePoint, js_createContextualFragment, js_deleteContents, js_detach, js_extractContents, js_getBoundingClientRect, js_getClientRects, js_insertNode, js_intersectsNode, js_isPointInRange, js_selectNode, js_selectNodeContents, js_setEnd, js_setEndAfter, js_setEndBefore, js_setStart, js_setStartAfter, js_setStartBefore, js_surroundContents, js_getCommonAncestorContainer, newRange, cloneContents, cloneContents_, cloneRange, cloneRange_, collapse, compareBoundaryPoints, compareBoundaryPoints_, comparePoint, comparePoint_, createContextualFragment, createContextualFragment_, deleteContents, detach, extractContents, extractContents_, getBoundingClientRect, getBoundingClientRect_, getClientRects, getClientRects_, insertNode, intersectsNode, intersectsNode_, isPointInRange, isPointInRange_, selectNode, selectNodeContents, setEnd, setEndAfter, setEndBefore, setStart, setStartAfter, setStartBefore, surroundContents, getCommonAncestorContainer, pattern START_TO_START, pattern START_TO_END, pattern END_TO_END, pattern END_TO_START, Range(..), gTypeRange)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"Range\"](); })"
+
+foreign import javascript safe "(() => { return new globalThis[\"Range\"](); })"
         js_newRange :: IO Range
+-- | <https://developer.mozilla.org/docs/Web/API/Range/Range MDN Range. documentation>
+newRange :: (MonadDOM m) => m Range
+newRange = liftDOM ((js_newRange))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation> 
-newRange :: (MonadIO m) => m Range
-newRange = liftIO (js_newRange)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setStart\"]($2, $3); })"
-        js_setStart :: Range -> Node -> Word -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"cloneContents\"](); })"
+        js_cloneContents :: Range -> IO DocumentFragment
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneContents MDN Range.cloneContents documentation>
+cloneContents :: (MonadDOM m) => Range -> m DocumentFragment
+cloneContents self = liftDOM ((js_cloneContents (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStart Mozilla Range.setStart documentation> 
-setStart ::
-         (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
-setStart self node offset
-  = liftIO (js_setStart self (toNode node) offset)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setEnd\"]($2, $3); })" js_setEnd
-        :: Range -> Node -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneContents MDN Range.cloneContents documentation>
+cloneContents_ :: (MonadDOM m) => Range -> m ()
+cloneContents_ self = liftDOM (void ((js_cloneContents (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEnd Mozilla Range.setEnd documentation> 
-setEnd :: (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
-setEnd self node offset
-  = liftIO (js_setEnd self (toNode node) offset)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setStartBefore\"]($2); })"
-        js_setStartBefore :: Range -> Node -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"cloneRange\"](); })"
+        js_cloneRange :: Range -> IO Range
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneRange MDN Range.cloneRange documentation>
+cloneRange :: (MonadDOM m) => Range -> m Range
+cloneRange self = liftDOM ((js_cloneRange (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartBefore Mozilla Range.setStartBefore documentation> 
-setStartBefore :: (MonadIO m, IsNode node) => Range -> node -> m ()
-setStartBefore self node
-  = liftIO (js_setStartBefore self (toNode node))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setStartAfter\"]($2); })"
-        js_setStartAfter :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneRange MDN Range.cloneRange documentation>
+cloneRange_ :: (MonadDOM m) => Range -> m ()
+cloneRange_ self = liftDOM (void ((js_cloneRange (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartAfter Mozilla Range.setStartAfter documentation> 
-setStartAfter :: (MonadIO m, IsNode node) => Range -> node -> m ()
-setStartAfter self node
-  = liftIO (js_setStartAfter self (toNode node))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setEndBefore\"]($2); })"
-        js_setEndBefore :: Range -> Node -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"collapse\"]($2); })"
+        js_collapse :: Range -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/collapse MDN Range.collapse documentation>
+collapse :: (MonadDOM m) => Range -> Maybe Bool -> m ()
+collapse self toStart = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal toStart) >>= \a2' -> js_collapse (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndBefore Mozilla Range.setEndBefore documentation> 
-setEndBefore :: (MonadIO m, IsNode node) => Range -> node -> m ()
-setEndBefore self node
-  = liftIO (js_setEndBefore self (toNode node))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setEndAfter\"]($2); })"
-        js_setEndAfter :: Range -> Node -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"compareBoundaryPoints\"]($2, $3); })"
+        js_compareBoundaryPoints :: Range -> Word -> Range -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Range/compareBoundaryPoints MDN Range.compareBoundaryPoints documentation>
+compareBoundaryPoints :: (MonadDOM m) => Range -> Word -> Range -> m Int
+compareBoundaryPoints self how sourceRange = liftDOM ((js_compareBoundaryPoints (self) (how) (sourceRange)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndAfter Mozilla Range.setEndAfter documentation> 
-setEndAfter :: (MonadIO m, IsNode node) => Range -> node -> m ()
-setEndAfter self node = liftIO (js_setEndAfter self (toNode node))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"collapse\"]($2); })" js_collapse
-        :: Range -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/compareBoundaryPoints MDN Range.compareBoundaryPoints documentation>
+compareBoundaryPoints_ :: (MonadDOM m) => Range -> Word -> Range -> m ()
+compareBoundaryPoints_ self how sourceRange = liftDOM (void ((js_compareBoundaryPoints (self) (how) (sourceRange))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapse Mozilla Range.collapse documentation> 
-collapse :: (MonadIO m) => Range -> Bool -> m ()
-collapse self toStart = liftIO (js_collapse self toStart)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"selectNode\"]($2); })"
-        js_selectNode :: Range -> Node -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"comparePoint\"]($2, $3); })"
+        js_comparePoint :: Range -> Node -> Word -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Range/comparePoint MDN Range.comparePoint documentation>
+comparePoint :: (MonadDOM m, IsNode node) => Range -> node -> Word -> m Int
+comparePoint self node offset = liftDOM ((js_comparePoint (self) (Types.toNode node) (offset)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNode Mozilla Range.selectNode documentation> 
-selectNode :: (MonadIO m, IsNode node) => Range -> node -> m ()
-selectNode self node = liftIO (js_selectNode self (toNode node))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"selectNodeContents\"]($2); })"
-        js_selectNodeContents :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/comparePoint MDN Range.comparePoint documentation>
+comparePoint_ :: (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
+comparePoint_ self node offset = liftDOM (void ((js_comparePoint (self) (Types.toNode node) (offset))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNodeContents Mozilla Range.selectNodeContents documentation> 
-selectNodeContents ::
-                   (MonadIO m, IsNode node) => Range -> node -> m ()
-selectNodeContents self node
-  = liftIO (js_selectNodeContents self (toNode node))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"compareBoundaryPoints\"]($2,\n$3); })" js_compareBoundaryPoints
-        :: Range -> Word -> Range -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"createContextualFragment\"]($2); })"
+        js_createContextualFragment :: Range -> TrustedHTMLOrString -> IO DocumentFragment
+-- | <https://developer.mozilla.org/docs/Web/API/Range/createContextualFragment MDN Range.createContextualFragment documentation>
+createContextualFragment :: (MonadDOM m, IsTrustedHTMLOrString string) => Range -> string -> m DocumentFragment
+createContextualFragment self string = liftDOM ((js_createContextualFragment (self) (Types.toTrustedHTMLOrString string)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
-compareBoundaryPoints ::
-                      (MonadIO m) => Range -> Word -> Range -> m Int
-compareBoundaryPoints self how sourceRange
-  = liftIO (js_compareBoundaryPoints self how sourceRange)
+-- | <https://developer.mozilla.org/docs/Web/API/Range/createContextualFragment MDN Range.createContextualFragment documentation>
+createContextualFragment_ :: (MonadDOM m, IsTrustedHTMLOrString string) => Range -> string -> m ()
+createContextualFragment_ self string = liftDOM (void ((js_createContextualFragment (self) (Types.toTrustedHTMLOrString string))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
-compareBoundaryPoints_ ::
-                       (MonadIO m) => Range -> Word -> Range -> m ()
-compareBoundaryPoints_ self how sourceRange
-  = liftIO (void (js_compareBoundaryPoints self how sourceRange))
- 
 foreign import javascript safe "(($1) => { return $1[\"deleteContents\"](); })"
         js_deleteContents :: Range -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/deleteContents MDN Range.deleteContents documentation>
+deleteContents :: (MonadDOM m) => Range -> m ()
+deleteContents self = liftDOM (void ((js_deleteContents (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.deleteContents Mozilla Range.deleteContents documentation> 
-deleteContents :: (MonadIO m) => Range -> m ()
-deleteContents self = liftIO (js_deleteContents self)
- 
+foreign import javascript safe "(($1) => { return $1[\"detach\"](); })"
+        js_detach :: Range -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/detach MDN Range.detach documentation>
+detach :: (MonadDOM m) => Range -> m ()
+detach self = liftDOM (void ((js_detach (self))))
+
 foreign import javascript safe "(($1) => { return $1[\"extractContents\"](); })"
         js_extractContents :: Range -> IO DocumentFragment
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
-extractContents :: (MonadIO m) => Range -> m DocumentFragment
-extractContents self = liftIO (js_extractContents self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
-extractContents_ :: (MonadIO m) => Range -> m ()
-extractContents_ self = liftIO (void (js_extractContents self))
- 
-foreign import javascript safe "(($1) => { return $1[\"cloneContents\"](); })"
-        js_cloneContents :: Range -> IO DocumentFragment
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
-cloneContents :: (MonadIO m) => Range -> m DocumentFragment
-cloneContents self = liftIO (js_cloneContents self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
-cloneContents_ :: (MonadIO m) => Range -> m ()
-cloneContents_ self = liftIO (void (js_cloneContents self))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"insertNode\"]($2); })"
-        js_insertNode :: Range -> Node -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.insertNode Mozilla Range.insertNode documentation> 
-insertNode :: (MonadIO m, IsNode node) => Range -> node -> m ()
-insertNode self node = liftIO (js_insertNode self (toNode node))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"surroundContents\"]($2); })"
-        js_surroundContents :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/extractContents MDN Range.extractContents documentation>
+extractContents :: (MonadDOM m) => Range -> m DocumentFragment
+extractContents self = liftDOM ((js_extractContents (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.surroundContents Mozilla Range.surroundContents documentation> 
-surroundContents ::
-                 (MonadIO m, IsNode newParent) => Range -> newParent -> m ()
-surroundContents self newParent
-  = liftIO (js_surroundContents self (toNode newParent))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cloneRange\"](); })"
-        js_cloneRange :: Range -> IO Range
+-- | <https://developer.mozilla.org/docs/Web/API/Range/extractContents MDN Range.extractContents documentation>
+extractContents_ :: (MonadDOM m) => Range -> m ()
+extractContents_ self = liftDOM (void ((js_extractContents (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
-cloneRange :: (MonadIO m) => Range -> m Range
-cloneRange self = liftIO (js_cloneRange self)
+foreign import javascript safe "(($1) => { return $1[\"getBoundingClientRect\"](); })"
+        js_getBoundingClientRect :: Range -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getBoundingClientRect MDN Range.getBoundingClientRect documentation>
+getBoundingClientRect :: (MonadDOM m) => Range -> m DOMRect
+getBoundingClientRect self = liftDOM ((js_getBoundingClientRect (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
-cloneRange_ :: (MonadIO m) => Range -> m ()
-cloneRange_ self = liftIO (void (js_cloneRange self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"detach\"](); })" js_detach ::
-        Range -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getBoundingClientRect MDN Range.getBoundingClientRect documentation>
+getBoundingClientRect_ :: (MonadDOM m) => Range -> m ()
+getBoundingClientRect_ self = liftDOM (void ((js_getBoundingClientRect (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.detach Mozilla Range.detach documentation> 
-detach :: (MonadIO m) => Range -> m ()
-detach self = liftIO (js_detach self)
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return ($1[\"isPointInRange\"]($2,\n$3) ? 1 : 0); })" js_isPointInRange ::
-        Range -> Node -> Word -> IO Bool
+foreign import javascript safe "(($1) => { return $1[\"getClientRects\"](); })"
+        js_getClientRects :: Range -> IO DOMRectList
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getClientRects MDN Range.getClientRects documentation>
+getClientRects :: (MonadDOM m) => Range -> m DOMRectList
+getClientRects self = liftDOM ((js_getClientRects (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
-isPointInRange ::
-               (MonadIO m, IsNode node) => Range -> node -> Word -> m Bool
-isPointInRange self node offset
-  = liftIO (js_isPointInRange self (toNode node) offset)
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getClientRects MDN Range.getClientRects documentation>
+getClientRects_ :: (MonadDOM m) => Range -> m ()
+getClientRects_ self = liftDOM (void ((js_getClientRects (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
-isPointInRange_ ::
-                (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
-isPointInRange_ self node offset
-  = liftIO (void (js_isPointInRange self (toNode node) offset))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"comparePoint\"]($2, $3); })"
-        js_comparePoint :: Range -> Node -> Word -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"insertNode\"]($2); })"
+        js_insertNode :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/insertNode MDN Range.insertNode documentation>
+insertNode :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+insertNode self node = liftDOM (void ((js_insertNode (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
-comparePoint ::
-             (MonadIO m, IsNode node) => Range -> node -> Word -> m Int
-comparePoint self node offset
-  = liftIO (js_comparePoint self (toNode node) offset)
+foreign import javascript safe "(($1, $2) => { return $1[\"intersectsNode\"]($2); })"
+        js_intersectsNode :: Range -> Node -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Range/intersectsNode MDN Range.intersectsNode documentation>
+intersectsNode :: (MonadDOM m, IsNode node) => Range -> node -> m Bool
+intersectsNode self node = liftDOM ((js_intersectsNode (self) (Types.toNode node)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
-comparePoint_ ::
-              (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
-comparePoint_ self node offset
-  = liftIO (void (js_comparePoint self (toNode node) offset))
- 
-foreign import javascript safe
-        "(($1, $2) => { return ($1[\"intersectsNode\"]($2) ? 1 : 0); })" js_intersectsNode ::
-        Range -> Node -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Range/intersectsNode MDN Range.intersectsNode documentation>
+intersectsNode_ :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+intersectsNode_ self node = liftDOM (void ((js_intersectsNode (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
-intersectsNode ::
-               (MonadIO m, IsNode node) => Range -> node -> m Bool
-intersectsNode self node
-  = liftIO (js_intersectsNode self (toNode node))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"isPointInRange\"]($2, $3); })"
+        js_isPointInRange :: Range -> Node -> Word -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Range/isPointInRange MDN Range.isPointInRange documentation>
+isPointInRange :: (MonadDOM m, IsNode node) => Range -> node -> Word -> m Bool
+isPointInRange self node offset = liftDOM ((js_isPointInRange (self) (Types.toNode node) (offset)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
-intersectsNode_ ::
-                (MonadIO m, IsNode node) => Range -> node -> m ()
-intersectsNode_ self node
-  = liftIO (void (js_intersectsNode self (toNode node)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: Range -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Range/isPointInRange MDN Range.isPointInRange documentation>
+isPointInRange_ :: (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
+isPointInRange_ self node offset = liftDOM (void ((js_isPointInRange (self) (Types.toNode node) (offset))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.toString Mozilla Range.toString documentation> 
-toString :: (MonadIO m, FromJSString result) => Range -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
+foreign import javascript safe "(($1, $2) => { return $1[\"selectNode\"]($2); })"
+        js_selectNode :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/selectNode MDN Range.selectNode documentation>
+selectNode :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+selectNode self node = liftDOM (void ((js_selectNode (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.toString Mozilla Range.toString documentation> 
-toString_ :: (MonadIO m) => Range -> m ()
-toString_ self = liftIO (void (js_toString self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getClientRects\"](); })"
-        js_getClientRects :: Range -> IO JSVal
+foreign import javascript safe "(($1, $2) => { return $1[\"selectNodeContents\"]($2); })"
+        js_selectNodeContents :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/selectNodeContents MDN Range.selectNodeContents documentation>
+selectNodeContents :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+selectNodeContents self node = liftDOM (void ((js_selectNodeContents (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
-getClientRects :: (MonadIO m) => Range -> m [DOMRect]
-getClientRects self
-  = liftIO ((js_getClientRects self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setEnd\"]($2, $3); })"
+        js_setEnd :: Range -> Node -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/setEnd MDN Range.setEnd documentation>
+setEnd :: (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
+setEnd self node offset = liftDOM (void ((js_setEnd (self) (Types.toNode node) (offset))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
-getClientRects_ :: (MonadIO m) => Range -> m ()
-getClientRects_ self = liftIO (void (js_getClientRects self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getBoundingClientRect\"](); })"
-        js_getBoundingClientRect :: Range -> IO DOMRect
+foreign import javascript safe "(($1, $2) => { return $1[\"setEndAfter\"]($2); })"
+        js_setEndAfter :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/setEndAfter MDN Range.setEndAfter documentation>
+setEndAfter :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+setEndAfter self node = liftDOM (void ((js_setEndAfter (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
-getBoundingClientRect :: (MonadIO m) => Range -> m DOMRect
-getBoundingClientRect self = liftIO (js_getBoundingClientRect self)
+foreign import javascript safe "(($1, $2) => { return $1[\"setEndBefore\"]($2); })"
+        js_setEndBefore :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/setEndBefore MDN Range.setEndBefore documentation>
+setEndBefore :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+setEndBefore self node = liftDOM (void ((js_setEndBefore (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
-getBoundingClientRect_ :: (MonadIO m) => Range -> m ()
-getBoundingClientRect_ self
-  = liftIO (void (js_getBoundingClientRect self))
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"createContextualFragment\"]($2); })" js_createContextualFragment
-        :: Range -> JSString -> IO DocumentFragment
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setStart\"]($2, $3); })"
+        js_setStart :: Range -> Node -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/setStart MDN Range.setStart documentation>
+setStart :: (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
+setStart self node offset = liftDOM (void ((js_setStart (self) (Types.toNode node) (offset))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
-createContextualFragment ::
-                         (MonadIO m, ToJSString fragment) =>
-                           Range -> fragment -> m DocumentFragment
-createContextualFragment self fragment
-  = liftIO (js_createContextualFragment self (toJSString fragment))
+foreign import javascript safe "(($1, $2) => { return $1[\"setStartAfter\"]($2); })"
+        js_setStartAfter :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/setStartAfter MDN Range.setStartAfter documentation>
+setStartAfter :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+setStartAfter self node = liftDOM (void ((js_setStartAfter (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
-createContextualFragment_ ::
-                          (MonadIO m, ToJSString fragment) => Range -> fragment -> m ()
-createContextualFragment_ self fragment
-  = liftIO
-      (void (js_createContextualFragment self (toJSString fragment)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"expand\"]($2); })" js_expand ::
-        Range -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"setStartBefore\"]($2); })"
+        js_setStartBefore :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/setStartBefore MDN Range.setStartBefore documentation>
+setStartBefore :: (MonadDOM m, IsNode node) => Range -> node -> m ()
+setStartBefore self node = liftDOM (void ((js_setStartBefore (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.expand Mozilla Range.expand documentation> 
-expand ::
-       (MonadIO m, ToJSString unit) => Range -> Maybe unit -> m ()
-expand self unit
-  = liftIO (js_expand self (toOptionalJSString unit))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"compareNode\"]($2); })"
-        js_compareNode :: Range -> Node -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"surroundContents\"]($2); })"
+        js_surroundContents :: Range -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Range/surroundContents MDN Range.surroundContents documentation>
+surroundContents :: (MonadDOM m, IsNode newParent) => Range -> newParent -> m ()
+surroundContents self newParent = liftDOM (void ((js_surroundContents (self) (Types.toNode newParent))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
-compareNode :: (MonadIO m, IsNode node) => Range -> node -> m Int
-compareNode self node = liftIO (js_compareNode self (toNode node))
+foreign import javascript unsafe "(($1) => { return $1[\"commonAncestorContainer\"]; })"
+        js_getCommonAncestorContainer :: Range -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Range/commonAncestorContainer MDN Range.commonAncestorContainer documentation>
+getCommonAncestorContainer :: (MonadDOM m) => Range -> m Node
+getCommonAncestorContainer self = liftDOM ((js_getCommonAncestorContainer (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
-compareNode_ :: (MonadIO m, IsNode node) => Range -> node -> m ()
-compareNode_ self node
-  = liftIO (void (js_compareNode self (toNode node)))
 pattern START_TO_START = 0
-pattern START_TO_END = 1
-pattern END_TO_END = 2
-pattern END_TO_START = 3
-pattern NODE_BEFORE = 0
-pattern NODE_AFTER = 1
-pattern NODE_BEFORE_AND_AFTER = 2
-pattern NODE_INSIDE = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"startContainer\"]; })"
-        js_getStartContainer :: Range -> IO Node
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startContainer Mozilla Range.startContainer documentation> 
-getStartContainer :: (MonadIO m) => Range -> m Node
-getStartContainer self = liftIO (js_getStartContainer self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
-        js_getStartOffset :: Range -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startOffset Mozilla Range.startOffset documentation> 
-getStartOffset :: (MonadIO m) => Range -> m Int
-getStartOffset self = liftIO (js_getStartOffset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endContainer\"]; })"
-        js_getEndContainer :: Range -> IO Node
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endContainer Mozilla Range.endContainer documentation> 
-getEndContainer :: (MonadIO m) => Range -> m Node
-getEndContainer self = liftIO (js_getEndContainer self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endOffset\"]; })"
-        js_getEndOffset :: Range -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endOffset Mozilla Range.endOffset documentation> 
-getEndOffset :: (MonadIO m) => Range -> m Int
-getEndOffset self = liftIO (js_getEndOffset self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"collapsed\"] ? 1 : 0); })"
-        js_getCollapsed :: Range -> IO Bool
+pattern START_TO_END = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapsed Mozilla Range.collapsed documentation> 
-getCollapsed :: (MonadIO m) => Range -> m Bool
-getCollapsed self = liftIO (js_getCollapsed self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"commonAncestorContainer\"]; })"
-        js_getCommonAncestorContainer :: Range -> IO Node
+pattern END_TO_END = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.commonAncestorContainer Mozilla Range.commonAncestorContainer documentation> 
-getCommonAncestorContainer :: (MonadIO m) => Range -> m Node
-getCommonAncestorContainer self
-  = liftIO (js_getCommonAncestorContainer self)
+pattern END_TO_START = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
@@ -1,98 +1,63 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController
-       (js_newReadableByteStreamController,
-        newReadableByteStreamController, js_enqueue, enqueue, js_close,
-        close, js_error, error, js_getByobRequest, getByobRequest,
-        js_getDesiredSize, getDesiredSize,
-        ReadableByteStreamController(..),
-        gTypeReadableByteStreamController)
+       (js_close, js_enqueue, js_error, js_getByobRequest, js_getDesiredSize, close, enqueue, error, getByobRequest, getByobRequestUnsafe, getByobRequestUnchecked, getDesiredSize, getDesiredSizeUnsafe, getDesiredSizeUnchecked, ReadableByteStreamController(..), gTypeReadableByteStreamController)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return new window[\"ReadableByteStreamController\"]($1,\n$2, $3); })"
-        js_newReadableByteStreamController ::
-        ReadableStream -> JSVal -> Word -> IO ReadableByteStreamController
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController Mozilla ReadableByteStreamController documentation> 
-newReadableByteStreamController ::
-                                (MonadIO m, ToJSVal underlyingByteSource) =>
-                                  ReadableStream ->
-                                    underlyingByteSource -> Word -> m ReadableByteStreamController
-newReadableByteStreamController stream underlyingByteSource
-  highWaterMark
-  = liftIO
-      (toJSVal underlyingByteSource >>=
-         \ underlyingByteSource' ->
-           js_newReadableByteStreamController stream underlyingByteSource'
-         highWaterMark)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"enqueue\"]($2); })" js_enqueue
-        :: ReadableByteStreamController -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: ReadableByteStreamController -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/close MDN ReadableByteStreamController.close documentation>
+close :: (MonadDOM m) => ReadableByteStreamController -> m ()
+close self = liftDOM (void ((js_close (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.enqueue Mozilla ReadableByteStreamController.enqueue documentation> 
-enqueue ::
-        (MonadIO m, ToJSVal chunk) =>
-          ReadableByteStreamController -> Maybe chunk -> m ()
-enqueue self chunk
-  = liftIO
-      (mapM toJSVal chunk >>=
-         \ chunk' -> js_enqueue self (maybeToOptional chunk'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        ReadableByteStreamController -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"enqueue\"]($2); })"
+        js_enqueue :: ReadableByteStreamController -> ArrayBufferView -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/enqueue MDN ReadableByteStreamController.enqueue documentation>
+enqueue :: (MonadDOM m, IsArrayBufferView chunk) => ReadableByteStreamController -> chunk -> m ()
+enqueue self chunk = liftDOM (void ((js_enqueue (self) (Types.toArrayBufferView chunk))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.close Mozilla ReadableByteStreamController.close documentation> 
-close :: (MonadIO m) => ReadableByteStreamController -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"error\"]($2); })" js_error ::
-        ReadableByteStreamController -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"error\"]($2); })"
+        js_error :: ReadableByteStreamController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/error MDN ReadableByteStreamController.error documentation>
+error :: (MonadDOM m) => ReadableByteStreamController -> JSVal -> m ()
+error self e = liftDOM (void ((js_error (self) (e))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.error Mozilla ReadableByteStreamController.error documentation> 
-error ::
-      (MonadIO m, ToJSVal error) =>
-        ReadableByteStreamController -> Maybe error -> m ()
-error self error
-  = liftIO
-      (mapM toJSVal error >>=
-         \ error' -> js_error self (maybeToOptional error'))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"byobRequest\"]; })"
-        js_getByobRequest ::
-        ReadableByteStreamController -> IO ReadableStreamBYOBRequest
+        js_getByobRequest :: ReadableByteStreamController -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest MDN ReadableByteStreamController.byobRequest documentation>
+getByobRequest :: (MonadDOM m) => ReadableByteStreamController -> m (Maybe ReadableStreamBYOBRequest)
+getByobRequest self = liftDOM (((js_getByobRequest (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.byobRequest Mozilla ReadableByteStreamController.byobRequest documentation> 
-getByobRequest ::
-               (MonadIO m) =>
-                 ReadableByteStreamController -> m ReadableStreamBYOBRequest
-getByobRequest self = liftIO (js_getByobRequest self)
- 
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest MDN ReadableByteStreamController.byobRequest documentation>
+getByobRequestUnsafe :: (MonadDOM m, HasCallStack) => ReadableByteStreamController -> m ReadableStreamBYOBRequest
+getByobRequestUnsafe self = liftDOM ((((js_getByobRequest (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest MDN ReadableByteStreamController.byobRequest documentation>
+getByobRequestUnchecked :: (MonadDOM m) => ReadableByteStreamController -> m ReadableStreamBYOBRequest
+getByobRequestUnchecked self = liftDOM ((pFromJSVal <$> (js_getByobRequest (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"desiredSize\"]; })"
-        js_getDesiredSize :: ReadableByteStreamController -> IO Double
+        js_getDesiredSize :: ReadableByteStreamController -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize MDN ReadableByteStreamController.desiredSize documentation>
+getDesiredSize :: (MonadDOM m) => ReadableByteStreamController -> m (Maybe Double)
+getDesiredSize self = liftDOM (((js_getDesiredSize (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.desiredSize Mozilla ReadableByteStreamController.desiredSize documentation> 
-getDesiredSize ::
-               (MonadIO m) => ReadableByteStreamController -> m Double
-getDesiredSize self = liftIO (js_getDesiredSize self)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize MDN ReadableByteStreamController.desiredSize documentation>
+getDesiredSizeUnsafe :: (MonadDOM m, HasCallStack) => ReadableByteStreamController -> m Double
+getDesiredSizeUnsafe self = liftDOM ((((js_getDesiredSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize MDN ReadableByteStreamController.desiredSize documentation>
+getDesiredSizeUnchecked :: (MonadDOM m) => ReadableByteStreamController -> m Double
+getDesiredSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesiredSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
@@ -1,164 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ReadableStream
-       (js_newReadableStream, newReadableStream, js_cancel, cancel,
-        cancel_, js_getReader, getReader, getReader_, js_pipeTo, pipeTo,
-        pipeTo_, js_pipeThrough, pipeThrough, pipeThrough_, js_tee, tee,
-        tee_, js_getLocked, getLocked, ReadableStream(..),
-        gTypeReadableStream)
+       (js_newReadableStream, js_cancel, js_getReader, js_pipeThrough, js_pipeTo, js_tee, js_getLocked, newReadableStream, cancel, getReader, getReader_, pipeThrough, pipeThrough_, pipeTo, tee, tee_, getLocked, ReadableStream(..), gTypeReadableStream, IsReadableStream, toReadableStream)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"ReadableStream\"]($1,\n$2); })" js_newReadableStream ::
-        Optional JSVal -> Optional JSVal -> IO ReadableStream
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
-newReadableStream ::
-                  (MonadIO m, ToJSVal underlyingSource, ToJSVal options) =>
-                    Maybe underlyingSource -> Maybe options -> m ReadableStream
-newReadableStream underlyingSource options
-  = liftIO
-      (mapM toJSVal options >>=
-         \ options' ->
-           mapM toJSVal underlyingSource >>=
-             \ underlyingSource' ->
-               js_newReadableStream (maybeToOptional underlyingSource')
-             (maybeToOptional options'))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_cancel :: ReadableStream -> Optional JSVal -> IO (JSVal, JSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
-cancel ::
-       (MonadIO m, ToJSVal reason) =>
-         ReadableStream -> Maybe reason -> m JSVal
-cancel self reason
-  = liftIO
-      ((mapM toJSVal reason >>=
-          \ reason' -> js_cancel self (maybeToOptional reason'))
-         >>= checkPromiseResult)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ReadableStream\"]($1, $2); })"
+        js_newReadableStream :: JSVal -> JSVal -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/ReadableStream MDN ReadableStream. documentation>
+newReadableStream :: (MonadDOM m) => Maybe GObject -> Maybe QueuingStrategy -> m ReadableStream
+newReadableStream underlyingSource strategy = liftDOM (((P.maybe (P.return jsUndefined) toJSVal underlyingSource) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal strategy) >>= \a2' -> js_newReadableStream a1' a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
-cancel_ ::
-        (MonadIO m, ToJSVal reason) =>
-          ReadableStream -> Maybe reason -> m ()
-cancel_ self reason
-  = liftIO
-      (void
-         (mapM toJSVal reason >>=
-            \ reason' -> js_cancel self (maybeToOptional reason')))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getReader\"]($2); })"
-        js_getReader :: ReadableStream -> Optional JSVal -> IO GObject
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_cancel :: ReadableStream -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/cancel MDN ReadableStream.cancel documentation>
+cancel :: (MonadDOM m, IsReadableStream self) => self -> JSVal -> m ()
+cancel self reason = liftDOM (void (((js_cancel ((Types.toReadableStream self)) (reason)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.getReader Mozilla ReadableStream.getReader documentation> 
-getReader ::
-          (MonadIO m, ToJSVal options) =>
-            ReadableStream -> Maybe options -> m GObject
-getReader self options
-  = liftIO
-      (mapM toJSVal options >>=
-         \ options' -> js_getReader self (maybeToOptional options'))
+foreign import javascript safe "(($1, $2) => { return $1[\"getReader\"]($2); })"
+        js_getReader :: ReadableStream -> JSVal -> IO ReadableStreamReader
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader MDN ReadableStream.getReader documentation>
+getReader :: (MonadDOM m, IsReadableStream self) => self -> Maybe ReadableStreamGetReaderOptions -> m ReadableStreamReader
+getReader self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getReader ((Types.toReadableStream self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.getReader Mozilla ReadableStream.getReader documentation> 
-getReader_ ::
-           (MonadIO m, ToJSVal options) =>
-             ReadableStream -> Maybe options -> m ()
-getReader_ self options
-  = liftIO
-      (void
-         (mapM toJSVal options >>=
-            \ options' -> js_getReader self (maybeToOptional options')))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"pipeTo\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_pipeTo ::
-        ReadableStream -> JSVal -> Optional JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader MDN ReadableStream.getReader documentation>
+getReader_ :: (MonadDOM m, IsReadableStream self) => self -> Maybe ReadableStreamGetReaderOptions -> m ()
+getReader_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getReader ((Types.toReadableStream self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
-pipeTo ::
-       (MonadIO m, ToJSVal streams, ToJSVal options) =>
-         ReadableStream -> streams -> Maybe options -> m JSVal
-pipeTo self streams options
-  = liftIO
-      ((mapM toJSVal options >>=
-          \ options' ->
-            toJSVal streams >>= \ streams' -> js_pipeTo self streams'
-              (maybeToOptional options'))
-         >>= checkPromiseResult)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"pipeThrough\"]($2, $3); })"
+        js_pipeThrough :: ReadableStream -> ReadableWritablePair -> JSVal -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeThrough MDN ReadableStream.pipeThrough documentation>
+pipeThrough :: (MonadDOM m, IsReadableStream self) => self -> ReadableWritablePair -> Maybe StreamPipeOptions -> m ReadableStream
+pipeThrough self transform options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_pipeThrough ((Types.toReadableStream self)) (transform) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
-pipeTo_ ::
-        (MonadIO m, ToJSVal streams, ToJSVal options) =>
-          ReadableStream -> streams -> Maybe options -> m ()
-pipeTo_ self streams options
-  = liftIO
-      (void
-         (mapM toJSVal options >>=
-            \ options' ->
-              toJSVal streams >>= \ streams' -> js_pipeTo self streams'
-                (maybeToOptional options')))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"pipeThrough\"]($2, $3); })"
-        js_pipeThrough :: ReadableStream -> JSVal -> JSVal -> IO GObject
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeThrough MDN ReadableStream.pipeThrough documentation>
+pipeThrough_ :: (MonadDOM m, IsReadableStream self) => self -> ReadableWritablePair -> Maybe StreamPipeOptions -> m ()
+pipeThrough_ self transform options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_pipeThrough ((Types.toReadableStream self)) (transform) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
-pipeThrough ::
-            (MonadIO m, ToJSVal dest, ToJSVal options) =>
-              ReadableStream -> dest -> options -> m GObject
-pipeThrough self dest options
-  = liftIO
-      (toJSVal options >>=
-         \ options' ->
-           toJSVal dest >>= \ dest' -> js_pipeThrough self dest' options')
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"pipeTo\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_pipeTo :: ReadableStream -> WritableStream -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeTo MDN ReadableStream.pipeTo documentation>
+pipeTo :: (MonadDOM m, IsReadableStream self, IsWritableStream destination) => self -> destination -> Maybe StreamPipeOptions -> m ()
+pipeTo self destination options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_pipeTo ((Types.toReadableStream self)) (Types.toWritableStream destination) a3') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
-pipeThrough_ ::
-             (MonadIO m, ToJSVal dest, ToJSVal options) =>
-               ReadableStream -> dest -> options -> m ()
-pipeThrough_ self dest options
-  = liftIO
-      (void
-         (toJSVal options >>=
-            \ options' ->
-              toJSVal dest >>= \ dest' -> js_pipeThrough self dest' options'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tee\"](); })" js_tee ::
-        ReadableStream -> IO GObject
+foreign import javascript safe "(($1) => { return $1[\"tee\"](); })"
+        js_tee :: ReadableStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/tee MDN ReadableStream.tee documentation>
+tee :: (MonadDOM m, IsReadableStream self) => self -> m [ReadableStream]
+tee self = liftDOM (((js_tee ((Types.toReadableStream self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
-tee :: (MonadIO m) => ReadableStream -> m GObject
-tee self = liftIO (js_tee self)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/tee MDN ReadableStream.tee documentation>
+tee_ :: (MonadDOM m, IsReadableStream self) => self -> m ()
+tee_ self = liftDOM (void ((js_tee ((Types.toReadableStream self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
-tee_ :: (MonadIO m) => ReadableStream -> m ()
-tee_ self = liftIO (void (js_tee self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"locked\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"locked\"]; })"
         js_getLocked :: ReadableStream -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.locked Mozilla ReadableStream.locked documentation> 
-getLocked :: (MonadIO m) => ReadableStream -> m Bool
-getLocked self = liftIO (js_getLocked self)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/locked MDN ReadableStream.locked documentation>
+getLocked :: (MonadDOM m, IsReadableStream self) => self -> m Bool
+getLocked self = liftDOM ((js_getLocked ((Types.toReadableStream self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
@@ -1,106 +1,49 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader
-       (js_newReadableStreamBYOBReader, newReadableStreamBYOBReader,
-        js_read, read, read_, js_cancel, cancel, cancel_, js_releaseLock,
-        releaseLock, js_getClosed, getClosed, ReadableStreamBYOBReader(..),
-        gTypeReadableStreamBYOBReader)
+       (js_newReadableStreamBYOBReader, js_read, js_read', js_releaseLock, newReadableStreamBYOBReader, read, read_, read', read'_, releaseLock, ReadableStreamBYOBReader(..), gTypeReadableStreamBYOBReader)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"ReadableStreamBYOBReader\"]($1); })"
-        js_newReadableStreamBYOBReader ::
-        ReadableStream -> IO ReadableStreamBYOBReader
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader Mozilla ReadableStreamBYOBReader documentation> 
-newReadableStreamBYOBReader ::
-                            (MonadIO m) => ReadableStream -> m ReadableStreamBYOBReader
-newReadableStreamBYOBReader stream
-  = liftIO (js_newReadableStreamBYOBReader stream)
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"read\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_read ::
-        ReadableStreamBYOBReader -> Optional JSVal -> IO (JSVal, JSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.read Mozilla ReadableStreamBYOBReader.read documentation> 
-read ::
-     (MonadIO m, ToJSVal view) =>
-       ReadableStreamBYOBReader -> Maybe view -> m JSVal
-read self view
-  = liftIO
-      ((mapM toJSVal view >>=
-          \ view' -> js_read self (maybeToOptional view'))
-         >>= checkPromiseResult)
+foreign import javascript safe "(($1) => { return new globalThis[\"ReadableStreamBYOBReader\"]($1); })"
+        js_newReadableStreamBYOBReader :: ReadableStream -> IO ReadableStreamBYOBReader
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/ReadableStreamBYOBReader MDN ReadableStreamBYOBReader. documentation>
+newReadableStreamBYOBReader :: (MonadDOM m, IsReadableStream stream) => stream -> m ReadableStreamBYOBReader
+newReadableStreamBYOBReader stream = liftDOM ((js_newReadableStreamBYOBReader (Types.toReadableStream stream)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.read Mozilla ReadableStreamBYOBReader.read documentation> 
-read_ ::
-      (MonadIO m, ToJSVal view) =>
-        ReadableStreamBYOBReader -> Maybe view -> m ()
-read_ self view
-  = liftIO
-      (void
-         (mapM toJSVal view >>=
-            \ view' -> js_read self (maybeToOptional view')))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_cancel ::
-        ReadableStreamBYOBReader -> Optional JSVal -> IO (JSVal, JSVal)
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"read\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_read :: ReadableStreamBYOBReader -> ArrayBufferView -> IO (JSVal, ReadableStreamReadResult)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read MDN ReadableStreamBYOBReader.read documentation>
+read :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBReader -> view -> m ReadableStreamReadResult
+read self view = liftDOM (((js_read (self) (Types.toArrayBufferView view)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.cancel Mozilla ReadableStreamBYOBReader.cancel documentation> 
-cancel ::
-       (MonadIO m, ToJSVal reason) =>
-         ReadableStreamBYOBReader -> Maybe reason -> m JSVal
-cancel self reason
-  = liftIO
-      ((mapM toJSVal reason >>=
-          \ reason' -> js_cancel self (maybeToOptional reason'))
-         >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read MDN ReadableStreamBYOBReader.read documentation>
+read_ :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBReader -> view -> m ()
+read_ self view = liftDOM (void (((js_read (self) (Types.toArrayBufferView view)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.cancel Mozilla ReadableStreamBYOBReader.cancel documentation> 
-cancel_ ::
-        (MonadIO m, ToJSVal reason) =>
-          ReadableStreamBYOBReader -> Maybe reason -> m ()
-cancel_ self reason
-  = liftIO
-      (void
-         (mapM toJSVal reason >>=
-            \ reason' -> js_cancel self (maybeToOptional reason')))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"releaseLock\"](); })"
-        js_releaseLock :: ReadableStreamBYOBReader -> IO ()
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"read\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_read' :: ReadableStreamBYOBReader -> ArrayBufferView -> JSVal -> IO (JSVal, ReadableStreamReadResult)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read MDN ReadableStreamBYOBReader.read documentation>
+read' :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBReader -> view -> Maybe ReadableStreamBYOBReaderReadOptions -> m ReadableStreamReadResult
+read' self view options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_read' (self) (Types.toArrayBufferView view) a3') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.releaseLock Mozilla ReadableStreamBYOBReader.releaseLock documentation> 
-releaseLock :: (MonadIO m) => ReadableStreamBYOBReader -> m ()
-releaseLock self = liftIO (js_releaseLock self)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getClosed :: ReadableStreamBYOBReader -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read MDN ReadableStreamBYOBReader.read documentation>
+read'_ :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBReader -> view -> Maybe ReadableStreamBYOBReaderReadOptions -> m ()
+read'_ self view options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_read' (self) (Types.toArrayBufferView view) a3') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.closed Mozilla ReadableStreamBYOBReader.closed documentation> 
-getClosed :: (MonadIO m) => ReadableStreamBYOBReader -> m Bool
-getClosed self
-  = liftIO ((js_getClosed self) >>= checkPromiseResult)
+foreign import javascript safe "(($1) => { return $1[\"releaseLock\"](); })"
+        js_releaseLock :: ReadableStreamBYOBReader -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock MDN ReadableStreamBYOBReader.releaseLock documentation>
+releaseLock :: (MonadDOM m) => ReadableStreamBYOBReader -> m ()
+releaseLock self = liftDOM (void ((js_releaseLock (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReaderReadOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReaderReadOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReaderReadOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReaderReadOptions
+       (js_newReadableStreamBYOBReaderReadOptions, js_setMin, js_getMin, newReadableStreamBYOBReaderReadOptions, setMin, getMin, getMinUnsafe, getMinUnchecked, ReadableStreamBYOBReaderReadOptions(..), gTypeReadableStreamBYOBReaderReadOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newReadableStreamBYOBReaderReadOptions :: IO ReadableStreamBYOBReaderReadOptions
+-- | <https://streams.spec.whatwg.org/#dictdef-readablestreambyobreaderreadoptions ReadableStreamBYOBReaderReadOptions specification>
+newReadableStreamBYOBReaderReadOptions :: (MonadDOM m) => m ReadableStreamBYOBReaderReadOptions
+newReadableStreamBYOBReaderReadOptions = liftDOM ((js_newReadableStreamBYOBReaderReadOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"min\"] = $2; })"
+        js_setMin :: ReadableStreamBYOBReaderReadOptions -> JSVal -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-readablestreambyobreaderreadoptions-min ReadableStreamBYOBReaderReadOptions.min specification>
+setMin :: (MonadDOM m) => ReadableStreamBYOBReaderReadOptions -> Word53 -> m ()
+setMin self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMin (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })"
+        js_getMin :: ReadableStreamBYOBReaderReadOptions -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-readablestreambyobreaderreadoptions-min ReadableStreamBYOBReaderReadOptions.min specification>
+getMin :: (MonadDOM m) => ReadableStreamBYOBReaderReadOptions -> m (Maybe Word53)
+getMin self = liftDOM (((js_getMin (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreambyobreaderreadoptions-min ReadableStreamBYOBReaderReadOptions.min specification>
+getMinUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamBYOBReaderReadOptions -> m Word53
+getMinUnsafe self = liftDOM ((((js_getMin (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreambyobreaderreadoptions-min ReadableStreamBYOBReaderReadOptions.min specification>
+getMinUnchecked :: (MonadDOM m) => ReadableStreamBYOBReaderReadOptions -> m Word53
+getMinUnchecked self = liftDOM ((pFromJSVal <$> (js_getMin (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
@@ -1,76 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest
-       (js_newReadableStreamBYOBRequest, newReadableStreamBYOBRequest,
-        js_respond, respond, js_respondWithNewView, respondWithNewView,
-        js_getView, getView, ReadableStreamBYOBRequest(..),
-        gTypeReadableStreamBYOBRequest)
+       (js_respond, js_respondWithNewView, js_getView, respond, respondWithNewView, getView, getViewUnsafe, getViewUnchecked, ReadableStreamBYOBRequest(..), gTypeReadableStreamBYOBRequest)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"ReadableStreamBYOBRequest\"]($1,\n$2); })"
-        js_newReadableStreamBYOBRequest ::
-        ReadableByteStreamController ->
-          RawTypedArray -> IO ReadableStreamBYOBRequest
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest Mozilla ReadableStreamBYOBRequest documentation> 
-newReadableStreamBYOBRequest ::
-                             (MonadIO m, IsRawTypedArray view) =>
-                               ReadableByteStreamController -> view -> m ReadableStreamBYOBRequest
-newReadableStreamBYOBRequest controller view
-  = liftIO
-      (js_newReadableStreamBYOBRequest controller (toRawTypedArray view))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"respond\"]($2); })" js_respond
-        :: ReadableStreamBYOBRequest -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"respond\"]($2); })"
+        js_respond :: ReadableStreamBYOBRequest -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respond MDN ReadableStreamBYOBRequest.respond documentation>
+respond :: (MonadDOM m) => ReadableStreamBYOBRequest -> Word53 -> m ()
+respond self bytesWritten = liftDOM (void (((toJSVal bytesWritten) >>= \a2' -> js_respond (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respond Mozilla ReadableStreamBYOBRequest.respond documentation> 
-respond ::
-        (MonadIO m, ToJSVal bytesWritten) =>
-          ReadableStreamBYOBRequest -> Maybe bytesWritten -> m ()
-respond self bytesWritten
-  = liftIO
-      (mapM toJSVal bytesWritten >>=
-         \ bytesWritten' -> js_respond self (maybeToOptional bytesWritten'))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"respondWithNewView\"]($2); })"
-        js_respondWithNewView ::
-        ReadableStreamBYOBRequest -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"respondWithNewView\"]($2); })"
+        js_respondWithNewView :: ReadableStreamBYOBRequest -> ArrayBufferView -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respondWithNewView MDN ReadableStreamBYOBRequest.respondWithNewView documentation>
+respondWithNewView :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBRequest -> view -> m ()
+respondWithNewView self view = liftDOM (void ((js_respondWithNewView (self) (Types.toArrayBufferView view))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respondWithNewView Mozilla ReadableStreamBYOBRequest.respondWithNewView documentation> 
-respondWithNewView ::
-                   (MonadIO m, ToJSVal view) =>
-                     ReadableStreamBYOBRequest -> Maybe view -> m ()
-respondWithNewView self view
-  = liftIO
-      (mapM toJSVal view >>=
-         \ view' -> js_respondWithNewView self (maybeToOptional view'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })" js_getView ::
-        ReadableStreamBYOBRequest -> IO RawTypedArray
+foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })"
+        js_getView :: ReadableStreamBYOBRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view MDN ReadableStreamBYOBRequest.view documentation>
+getView :: (MonadDOM m) => ReadableStreamBYOBRequest -> m (Maybe Uint8Array)
+getView self = liftDOM (((js_getView (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.view Mozilla ReadableStreamBYOBRequest.view documentation> 
-getView ::
-        (MonadIO m) => ReadableStreamBYOBRequest -> m RawTypedArray
-getView self = liftIO (js_getView self)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view MDN ReadableStreamBYOBRequest.view documentation>
+getViewUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamBYOBRequest -> m Uint8Array
+getViewUnsafe self = liftDOM ((((js_getView (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view MDN ReadableStreamBYOBRequest.view documentation>
+getViewUnchecked :: (MonadDOM m) => ReadableStreamBYOBRequest -> m Uint8Array
+getViewUnchecked self = liftDOM ((pFromJSVal <$> (js_getView (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
@@ -1,90 +1,49 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController
-       (js_newReadableStreamDefaultController,
-        newReadableStreamDefaultController, js_enqueue, enqueue, js_close,
-        close, js_error, error, js_getDesiredSize, getDesiredSize,
-        ReadableStreamDefaultController(..),
-        gTypeReadableStreamDefaultController)
+       (js_close, js_enqueue, js_error, js_getDesiredSize, close, enqueue, error, getDesiredSize, getDesiredSizeUnsafe, getDesiredSizeUnchecked, ReadableStreamDefaultController(..), gTypeReadableStreamDefaultController)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"ReadableStreamDefaultController\"]($1,\n$2, $3, $4); })"
-        js_newReadableStreamDefaultController ::
-        ReadableStream ->
-          JSVal -> Word -> Word -> IO ReadableStreamDefaultController
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController Mozilla ReadableStreamDefaultController documentation> 
-newReadableStreamDefaultController ::
-                                   (MonadIO m, ToJSVal underlyingSource) =>
-                                     ReadableStream ->
-                                       underlyingSource ->
-                                         Word -> Word -> m ReadableStreamDefaultController
-newReadableStreamDefaultController stream underlyingSource size
-  highWaterMark
-  = liftIO
-      (toJSVal underlyingSource >>=
-         \ underlyingSource' ->
-           js_newReadableStreamDefaultController stream underlyingSource'
-         size
-         highWaterMark)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"enqueue\"]($2); })" js_enqueue
-        :: ReadableStreamDefaultController -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: ReadableStreamDefaultController -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/close MDN ReadableStreamDefaultController.close documentation>
+close :: (MonadDOM m) => ReadableStreamDefaultController -> m ()
+close self = liftDOM (void ((js_close (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.enqueue Mozilla ReadableStreamDefaultController.enqueue documentation> 
-enqueue ::
-        (MonadIO m, ToJSVal chunk) =>
-          ReadableStreamDefaultController -> Maybe chunk -> m ()
-enqueue self chunk
-  = liftIO
-      (mapM toJSVal chunk >>=
-         \ chunk' -> js_enqueue self (maybeToOptional chunk'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        ReadableStreamDefaultController -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"enqueue\"]($2); })"
+        js_enqueue :: ReadableStreamDefaultController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/enqueue MDN ReadableStreamDefaultController.enqueue documentation>
+enqueue :: (MonadDOM m) => ReadableStreamDefaultController -> JSVal -> m ()
+enqueue self chunk = liftDOM (void ((js_enqueue (self) (chunk))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.close Mozilla ReadableStreamDefaultController.close documentation> 
-close :: (MonadIO m) => ReadableStreamDefaultController -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"error\"]($2); })" js_error ::
-        ReadableStreamDefaultController -> Optional JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"error\"]($2); })"
+        js_error :: ReadableStreamDefaultController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/error MDN ReadableStreamDefaultController.error documentation>
+error :: (MonadDOM m) => ReadableStreamDefaultController -> JSVal -> m ()
+error self e = liftDOM (void ((js_error (self) (e))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.error Mozilla ReadableStreamDefaultController.error documentation> 
-error ::
-      (MonadIO m, ToJSVal error) =>
-        ReadableStreamDefaultController -> Maybe error -> m ()
-error self error
-  = liftIO
-      (mapM toJSVal error >>=
-         \ error' -> js_error self (maybeToOptional error'))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"desiredSize\"]; })"
-        js_getDesiredSize :: ReadableStreamDefaultController -> IO Double
+        js_getDesiredSize :: ReadableStreamDefaultController -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize MDN ReadableStreamDefaultController.desiredSize documentation>
+getDesiredSize :: (MonadDOM m) => ReadableStreamDefaultController -> m (Maybe Double)
+getDesiredSize self = liftDOM (((js_getDesiredSize (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.desiredSize Mozilla ReadableStreamDefaultController.desiredSize documentation> 
-getDesiredSize ::
-               (MonadIO m) => ReadableStreamDefaultController -> m Double
-getDesiredSize self = liftIO (js_getDesiredSize self)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize MDN ReadableStreamDefaultController.desiredSize documentation>
+getDesiredSizeUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamDefaultController -> m Double
+getDesiredSizeUnsafe self = liftDOM ((((js_getDesiredSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize MDN ReadableStreamDefaultController.desiredSize documentation>
+getDesiredSizeUnchecked :: (MonadDOM m) => ReadableStreamDefaultController -> m Double
+getDesiredSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesiredSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
@@ -1,93 +1,39 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader
-       (js_newReadableStreamDefaultReader, newReadableStreamDefaultReader,
-        js_read, read, read_, js_cancel, cancel, cancel_, js_releaseLock,
-        releaseLock, js_getClosed, getClosed,
-        ReadableStreamDefaultReader(..), gTypeReadableStreamDefaultReader)
+       (js_newReadableStreamDefaultReader, js_read, js_releaseLock, newReadableStreamDefaultReader, read, read_, releaseLock, ReadableStreamDefaultReader(..), gTypeReadableStreamDefaultReader)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"ReadableStreamDefaultReader\"]($1); })"
-        js_newReadableStreamDefaultReader ::
-        ReadableStream -> IO ReadableStreamDefaultReader
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader Mozilla ReadableStreamDefaultReader documentation> 
-newReadableStreamDefaultReader ::
-                               (MonadIO m) => ReadableStream -> m ReadableStreamDefaultReader
-newReadableStreamDefaultReader stream
-  = liftIO (js_newReadableStreamDefaultReader stream)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"read\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_read :: ReadableStreamDefaultReader -> IO (JSVal, JSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.read Mozilla ReadableStreamDefaultReader.read documentation> 
-read :: (MonadIO m) => ReadableStreamDefaultReader -> m JSVal
-read self = liftIO ((js_read self) >>= checkPromiseResult)
+foreign import javascript safe "(($1) => { return new globalThis[\"ReadableStreamDefaultReader\"]($1); })"
+        js_newReadableStreamDefaultReader :: ReadableStream -> IO ReadableStreamDefaultReader
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/ReadableStreamDefaultReader MDN ReadableStreamDefaultReader. documentation>
+newReadableStreamDefaultReader :: (MonadDOM m, IsReadableStream stream) => stream -> m ReadableStreamDefaultReader
+newReadableStreamDefaultReader stream = liftDOM ((js_newReadableStreamDefaultReader (Types.toReadableStream stream)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.read Mozilla ReadableStreamDefaultReader.read documentation> 
-read_ :: (MonadIO m) => ReadableStreamDefaultReader -> m ()
-read_ self = liftIO (void (js_read self))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_cancel ::
-        ReadableStreamDefaultReader -> Optional JSVal -> IO (JSVal, JSVal)
+foreign import javascript interruptible "(($1, $c) => { return $1[\"read\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_read :: ReadableStreamDefaultReader -> IO (JSVal, ReadableStreamReadResult)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read MDN ReadableStreamDefaultReader.read documentation>
+read :: (MonadDOM m) => ReadableStreamDefaultReader -> m ReadableStreamReadResult
+read self = liftDOM (((js_read (self)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.cancel Mozilla ReadableStreamDefaultReader.cancel documentation> 
-cancel ::
-       (MonadIO m, ToJSVal reason) =>
-         ReadableStreamDefaultReader -> Maybe reason -> m JSVal
-cancel self reason
-  = liftIO
-      ((mapM toJSVal reason >>=
-          \ reason' -> js_cancel self (maybeToOptional reason'))
-         >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read MDN ReadableStreamDefaultReader.read documentation>
+read_ :: (MonadDOM m) => ReadableStreamDefaultReader -> m ()
+read_ self = liftDOM (void (((js_read (self)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.cancel Mozilla ReadableStreamDefaultReader.cancel documentation> 
-cancel_ ::
-        (MonadIO m, ToJSVal reason) =>
-          ReadableStreamDefaultReader -> Maybe reason -> m ()
-cancel_ self reason
-  = liftIO
-      (void
-         (mapM toJSVal reason >>=
-            \ reason' -> js_cancel self (maybeToOptional reason')))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"releaseLock\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"releaseLock\"](); })"
         js_releaseLock :: ReadableStreamDefaultReader -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.releaseLock Mozilla ReadableStreamDefaultReader.releaseLock documentation> 
-releaseLock :: (MonadIO m) => ReadableStreamDefaultReader -> m ()
-releaseLock self = liftIO (js_releaseLock self)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getClosed :: ReadableStreamDefaultReader -> IO (JSVal, Bool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.closed Mozilla ReadableStreamDefaultReader.closed documentation> 
-getClosed :: (MonadIO m) => ReadableStreamDefaultReader -> m Bool
-getClosed self
-  = liftIO ((js_getClosed self) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/releaseLock MDN ReadableStreamDefaultReader.releaseLock documentation>
+releaseLock :: (MonadDOM m) => ReadableStreamDefaultReader -> m ()
+releaseLock self = liftDOM (void ((js_releaseLock (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamGenericReader.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamGenericReader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamGenericReader.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamGenericReader
+       (js_cancel, js_getClosed, cancel, getClosed, ReadableStreamGenericReader(..), gTypeReadableStreamGenericReader, IsReadableStreamGenericReader, toReadableStreamGenericReader)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_cancel :: ReadableStreamGenericReader -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/cancel MDN ReadableStreamGenericReader.cancel documentation>
+cancel :: (MonadDOM m, IsReadableStreamGenericReader self) => self -> JSVal -> m ()
+cancel self reason = liftDOM (void (((js_cancel ((Types.toReadableStreamGenericReader self)) (reason)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: ReadableStreamGenericReader -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/closed MDN ReadableStreamGenericReader.closed documentation>
+getClosed :: (MonadDOM m, IsReadableStreamGenericReader self) => self -> m ()
+getClosed self = liftDOM (void (((js_getClosed ((Types.toReadableStreamGenericReader self))) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamGetReaderOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamGetReaderOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamGetReaderOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamGetReaderOptions
+       (js_newReadableStreamGetReaderOptions, js_setMode, js_getMode, newReadableStreamGetReaderOptions, setMode, getMode, getModeUnsafe, getModeUnchecked, ReadableStreamGetReaderOptions(..), gTypeReadableStreamGetReaderOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newReadableStreamGetReaderOptions :: IO ReadableStreamGetReaderOptions
+-- | <https://streams.spec.whatwg.org/#dictdef-readablestreamgetreaderoptions ReadableStreamGetReaderOptions specification>
+newReadableStreamGetReaderOptions :: (MonadDOM m) => m ReadableStreamGetReaderOptions
+newReadableStreamGetReaderOptions = liftDOM ((js_newReadableStreamGetReaderOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: ReadableStreamGetReaderOptions -> JSVal -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamgetreaderoptions-mode ReadableStreamGetReaderOptions.mode specification>
+setMode :: (MonadDOM m) => ReadableStreamGetReaderOptions -> ReadableStreamReaderMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: ReadableStreamGetReaderOptions -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamgetreaderoptions-mode ReadableStreamGetReaderOptions.mode specification>
+getMode :: (MonadDOM m) => ReadableStreamGetReaderOptions -> m (Maybe ReadableStreamReaderMode)
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamgetreaderoptions-mode ReadableStreamGetReaderOptions.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamGetReaderOptions -> m ReadableStreamReaderMode
+getModeUnsafe self = liftDOM ((((js_getMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamgetreaderoptions-mode ReadableStreamGetReaderOptions.mode specification>
+getModeUnchecked :: (MonadDOM m) => ReadableStreamGetReaderOptions -> m ReadableStreamReaderMode
+getModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamReadResult.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamReadResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamReadResult.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamReadResult
+       (js_newReadableStreamReadResult, js_setValue, js_getValue, js_setDone, js_getDone, newReadableStreamReadResult, setValue, getValue, setDone, getDone, getDoneUnsafe, getDoneUnchecked, ReadableStreamReadResult(..), gTypeReadableStreamReadResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newReadableStreamReadResult :: IO ReadableStreamReadResult
+-- | <https://streams.spec.whatwg.org/#dictdef-readablestreamreadresult ReadableStreamReadResult specification>
+newReadableStreamReadResult :: (MonadDOM m) => m ReadableStreamReadResult
+newReadableStreamReadResult = liftDOM ((js_newReadableStreamReadResult))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: ReadableStreamReadResult -> JSVal -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-value ReadableStreamReadResult.value specification>
+setValue :: (MonadDOM m) => ReadableStreamReadResult -> JSVal -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: ReadableStreamReadResult -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-value ReadableStreamReadResult.value specification>
+getValue :: (MonadDOM m) => ReadableStreamReadResult -> m JSVal
+getValue self = liftDOM ((js_getValue (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"done\"] = $2; })"
+        js_setDone :: ReadableStreamReadResult -> Bool -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-done ReadableStreamReadResult.done specification>
+setDone :: (MonadDOM m) => ReadableStreamReadResult -> Bool -> m ()
+setDone self val = liftDOM (void ((js_setDone (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"done\"]; })"
+        js_getDone :: ReadableStreamReadResult -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-done ReadableStreamReadResult.done specification>
+getDone :: (MonadDOM m) => ReadableStreamReadResult -> m (Maybe Bool)
+getDone self = liftDOM (((js_getDone (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-done ReadableStreamReadResult.done specification>
+getDoneUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamReadResult -> m Bool
+getDoneUnsafe self = liftDOM ((((js_getDone (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-done ReadableStreamReadResult.done specification>
+getDoneUnchecked :: (MonadDOM m) => ReadableStreamReadResult -> m Bool
+getDoneUnchecked self = liftDOM ((pFromJSVal <$> (js_getDone (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.ReadableStreamSource
-       (js_start, start, js_pull, pull, js_cancel, cancel,
-        js_getController, getController, ReadableStreamSource(..),
-        gTypeReadableStreamSource)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"start\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_start ::
-        ReadableStreamSource -> ReadableStreamDefaultController -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.start Mozilla ReadableStreamSource.start documentation> 
-start ::
-      (MonadIO m) =>
-        ReadableStreamSource -> ReadableStreamDefaultController -> m ()
-start self controller
-  = liftIO ((js_start self controller) >>= maybeThrowPromiseRejected)
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"pull\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_pull ::
-        ReadableStreamSource -> ReadableStreamDefaultController -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.pull Mozilla ReadableStreamSource.pull documentation> 
-pull ::
-     (MonadIO m) =>
-       ReadableStreamSource -> ReadableStreamDefaultController -> m ()
-pull self controller
-  = liftIO ((js_pull self controller) >>= maybeThrowPromiseRejected)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"cancel\"]($2); })" js_cancel ::
-        ReadableStreamSource -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.cancel Mozilla ReadableStreamSource.cancel documentation> 
-cancel ::
-       (MonadIO m, ToJSVal reason) =>
-         ReadableStreamSource -> reason -> m ()
-cancel self reason
-  = liftIO (toJSVal reason >>= \ reason' -> js_cancel self reason')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"controller\"]; })"
-        js_getController :: ReadableStreamSource -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.controller Mozilla ReadableStreamSource.controller documentation> 
-getController :: (MonadIO m) => ReadableStreamSource -> m JSVal
-getController self = liftIO (js_getController self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableWritablePair.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableWritablePair.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableWritablePair.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReadableWritablePair
+       (js_newReadableWritablePair, js_setReadable, js_getReadable, js_setWritable, js_getWritable, newReadableWritablePair, setReadable, getReadable, setWritable, getWritable, ReadableWritablePair(..), gTypeReadableWritablePair)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"readable\": $1, \"writable\": $2}); })"
+        js_newReadableWritablePair :: ReadableStream -> WritableStream -> IO ReadableWritablePair
+-- | <https://streams.spec.whatwg.org/#dictdef-readablewritablepair ReadableWritablePair specification>
+newReadableWritablePair :: (MonadDOM m, IsReadableStream readable, IsWritableStream writable) => readable -> writable -> m ReadableWritablePair
+newReadableWritablePair readable writable = liftDOM ((js_newReadableWritablePair (Types.toReadableStream readable) (Types.toWritableStream writable)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"readable\"] = $2; })"
+        js_setReadable :: ReadableWritablePair -> ReadableStream -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-readable ReadableWritablePair.readable specification>
+setReadable :: (MonadDOM m, IsReadableStream val) => ReadableWritablePair -> val -> m ()
+setReadable self val = liftDOM (void ((js_setReadable (self) (Types.toReadableStream val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: ReadableWritablePair -> IO ReadableStream
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-readable ReadableWritablePair.readable specification>
+getReadable :: (MonadDOM m) => ReadableWritablePair -> m ReadableStream
+getReadable self = liftDOM ((js_getReadable (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"writable\"] = $2; })"
+        js_setWritable :: ReadableWritablePair -> WritableStream -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-writable ReadableWritablePair.writable specification>
+setWritable :: (MonadDOM m, IsWritableStream val) => ReadableWritablePair -> val -> m ()
+setWritable self val = liftDOM (void ((js_setWritable (self) (Types.toWritableStream val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writable\"]; })"
+        js_getWritable :: ReadableWritablePair -> IO WritableStream
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-writable ReadableWritablePair.writable specification>
+getWritable :: (MonadDOM m) => ReadableWritablePair -> m WritableStream
+getWritable self = liftDOM ((js_getWritable (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Rect.hs b/src/GHCJS/DOM/JSFFI/Generated/Rect.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/Rect.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Rect
-       (js_getTop, getTop, js_getRight, getRight, js_getBottom, getBottom,
-        js_getLeft, getLeft, Rect(..), gTypeRect)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })" js_getTop ::
-        Rect -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
-getTop :: (MonadIO m) => Rect -> m CSSPrimitiveValue
-getTop self = liftIO (js_getTop self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"right\"]; })" js_getRight ::
-        Rect -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.right Mozilla Rect.right documentation> 
-getRight :: (MonadIO m) => Rect -> m CSSPrimitiveValue
-getRight self = liftIO (js_getRight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bottom\"]; })" js_getBottom ::
-        Rect -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.bottom Mozilla Rect.bottom documentation> 
-getBottom :: (MonadIO m) => Rect -> m CSSPrimitiveValue
-getBottom self = liftIO (js_getBottom self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"left\"]; })" js_getLeft ::
-        Rect -> IO CSSPrimitiveValue
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
-getLeft :: (MonadIO m) => Rect -> m CSSPrimitiveValue
-getLeft self = liftIO (js_getLeft self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RegistrationOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/RegistrationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RegistrationOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RegistrationOptions
+       (js_newRegistrationOptions, js_setScope, js_getScope, js_setType, js_getType, js_setUpdateViaCache, js_getUpdateViaCache, newRegistrationOptions, setScope, getScope, getScopeUnsafe, getScopeUnchecked, setType, getType, getTypeUnsafe, getTypeUnchecked, setUpdateViaCache, getUpdateViaCache, getUpdateViaCacheUnsafe, getUpdateViaCacheUnchecked, RegistrationOptions(..), gTypeRegistrationOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRegistrationOptions :: IO RegistrationOptions
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-registrationoptions RegistrationOptions specification>
+newRegistrationOptions :: (MonadDOM m) => m RegistrationOptions
+newRegistrationOptions = liftDOM ((js_newRegistrationOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scope\"] = $2; })"
+        js_setScope :: RegistrationOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-scope RegistrationOptions.scope specification>
+setScope :: (MonadDOM m, ToJSString val) => RegistrationOptions -> val -> m ()
+setScope self val = liftDOM (void ((js_setScope (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scope\"]; })"
+        js_getScope :: RegistrationOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-scope RegistrationOptions.scope specification>
+getScope :: (MonadDOM m, FromJSString result) => RegistrationOptions -> m (Maybe result)
+getScope self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getScope (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-scope RegistrationOptions.scope specification>
+getScopeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RegistrationOptions -> m result
+getScopeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getScope (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-scope RegistrationOptions.scope specification>
+getScopeUnchecked :: (MonadDOM m, FromJSString result) => RegistrationOptions -> m result
+getScopeUnchecked self = liftDOM ((pFromJSVal <$> (js_getScope (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: RegistrationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type RegistrationOptions.type specification>
+setType :: (MonadDOM m) => RegistrationOptions -> WorkerType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: RegistrationOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type RegistrationOptions.type specification>
+getType :: (MonadDOM m) => RegistrationOptions -> m (Maybe WorkerType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type RegistrationOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => RegistrationOptions -> m WorkerType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type RegistrationOptions.type specification>
+getTypeUnchecked :: (MonadDOM m) => RegistrationOptions -> m WorkerType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"updateViaCache\"] = $2; })"
+        js_setUpdateViaCache :: RegistrationOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-updateviacache RegistrationOptions.updateViaCache specification>
+setUpdateViaCache :: (MonadDOM m) => RegistrationOptions -> ServiceWorkerUpdateViaCache -> m ()
+setUpdateViaCache self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setUpdateViaCache (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"updateViaCache\"]; })"
+        js_getUpdateViaCache :: RegistrationOptions -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-updateviacache RegistrationOptions.updateViaCache specification>
+getUpdateViaCache :: (MonadDOM m) => RegistrationOptions -> m (Maybe ServiceWorkerUpdateViaCache)
+getUpdateViaCache self = liftDOM (((js_getUpdateViaCache (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-updateviacache RegistrationOptions.updateViaCache specification>
+getUpdateViaCacheUnsafe :: (MonadDOM m, HasCallStack) => RegistrationOptions -> m ServiceWorkerUpdateViaCache
+getUpdateViaCacheUnsafe self = liftDOM ((((js_getUpdateViaCache (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-updateviacache RegistrationOptions.updateViaCache specification>
+getUpdateViaCacheUnchecked :: (MonadDOM m) => RegistrationOptions -> m ServiceWorkerUpdateViaCache
+getUpdateViaCacheUnchecked self = liftDOM ((pFromJSVal <$> (js_getUpdateViaCache (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RemotePlayback.hs b/src/GHCJS/DOM/JSFFI/Generated/RemotePlayback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RemotePlayback.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from remote-playback (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RemotePlayback
+       (js_cancelWatchAvailability, js_prompt, js_watchAvailability, js_getState, cancelWatchAvailability, prompt, watchAvailability, watchAvailability_, getState, connecting, connect, disconnect, RemotePlayback(..), gTypeRemotePlayback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"cancelWatchAvailability\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_cancelWatchAvailability :: RemotePlayback -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/cancelWatchAvailability MDN RemotePlayback.cancelWatchAvailability documentation>
+cancelWatchAvailability :: (MonadDOM m) => RemotePlayback -> Maybe Int -> m ()
+cancelWatchAvailability self id = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal id) >>= \a2' -> js_cancelWatchAvailability (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"prompt\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_prompt :: RemotePlayback -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/prompt MDN RemotePlayback.prompt documentation>
+prompt :: (MonadDOM m) => RemotePlayback -> m ()
+prompt self = liftDOM (void (((js_prompt (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"watchAvailability\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_watchAvailability :: RemotePlayback -> JSVal -> IO (JSVal, Int)
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/watchAvailability MDN RemotePlayback.watchAvailability documentation>
+watchAvailability :: (MonadDOM m) => RemotePlayback -> RemotePlaybackAvailabilityCallback -> m Int
+watchAvailability self callback' = liftDOM ((((toJSVal callback') >>= \a2' -> js_watchAvailability (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/watchAvailability MDN RemotePlayback.watchAvailability documentation>
+watchAvailability_ :: (MonadDOM m) => RemotePlayback -> RemotePlaybackAvailabilityCallback -> m ()
+watchAvailability_ self callback' = liftDOM (void ((((toJSVal callback') >>= \a2' -> js_watchAvailability (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: RemotePlayback -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/state MDN RemotePlayback.state documentation>
+getState :: (MonadDOM m) => RemotePlayback -> m RemotePlaybackState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/remote-playback/#dom-remoteplayback-onconnecting connecting event>
+connecting :: EventName RemotePlayback Event
+connecting = unsafeEventName (toJSString "connecting")
+
+-- | <https://w3c.github.io/remote-playback/#dom-remoteplayback-onconnect connect event>
+connect :: EventName RemotePlayback Event
+connect = unsafeEventName (toJSString "connect")
+
+-- | <https://w3c.github.io/remote-playback/#dom-remoteplayback-ondisconnect disconnect event>
+disconnect :: EventName RemotePlayback Event
+disconnect = unsafeEventName (toJSString "disconnect")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RemotePlaybackAvailabilityCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RemotePlaybackAvailabilityCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RemotePlaybackAvailabilityCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from remote-playback (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RemotePlaybackAvailabilityCallback
+       (newRemotePlaybackAvailabilityCallback, newRemotePlaybackAvailabilityCallbackSync, newRemotePlaybackAvailabilityCallbackAsync, RemotePlaybackAvailabilityCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newRemotePlaybackAvailabilityCallback :: (MonadDOM m) => (Bool -> IO ()) -> m RemotePlaybackAvailabilityCallback
+newRemotePlaybackAvailabilityCallback callback = liftDOM ((RemotePlaybackAvailabilityCallback . coerce) <$> syncCallback1 ContinueAsync (\ available -> do
+          available' <- fromJSValUnchecked available
+          callback available'))
+
+newRemotePlaybackAvailabilityCallbackSync :: (MonadDOM m) => (Bool -> IO ()) -> m RemotePlaybackAvailabilityCallback
+newRemotePlaybackAvailabilityCallbackSync callback = liftDOM ((RemotePlaybackAvailabilityCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ available -> do
+          available' <- fromJSValUnchecked available
+          callback available'))
+
+newRemotePlaybackAvailabilityCallbackAsync :: (MonadDOM m) => (Bool -> IO ()) -> m RemotePlaybackAvailabilityCallback
+newRemotePlaybackAvailabilityCallbackAsync callback = liftDOM ((RemotePlaybackAvailabilityCallback . coerce) <$> asyncCallback1 (\ available -> do
+          available' <- fromJSValUnchecked available
+          callback available'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Report.hs b/src/GHCJS/DOM/JSFFI/Generated/Report.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Report.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Report
+       (js_newReport, js_setType, js_getType, js_setUrl, js_getUrl, js_setBody, js_getBody, newReport, setType, getType, getTypeUnsafe, getTypeUnchecked, setUrl, getUrl, getUrlUnsafe, getUrlUnchecked, setBody, getBody, getBodyUnsafe, getBodyUnchecked, Report(..), gTypeReport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newReport :: IO Report
+-- | <https://w3c.github.io/reporting/#dom-report Report specification>
+newReport :: (MonadDOM m) => m Report
+newReport = liftDOM ((js_newReport))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: Report -> JSString -> IO ()
+-- | <https://w3c.github.io/reporting/#dom-report-type Report.type specification>
+setType :: (MonadDOM m, ToJSString val) => Report -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Report -> IO JSVal
+-- | <https://w3c.github.io/reporting/#dom-report-type Report.type specification>
+getType :: (MonadDOM m, FromJSString result) => Report -> m (Maybe result)
+getType self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getType (self))))
+
+-- | <https://w3c.github.io/reporting/#dom-report-type Report.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => Report -> m result
+getTypeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getType (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/reporting/#dom-report-type Report.type specification>
+getTypeUnchecked :: (MonadDOM m, FromJSString result) => Report -> m result
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: Report -> JSString -> IO ()
+-- | <https://w3c.github.io/reporting/#dom-report-url Report.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => Report -> val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: Report -> IO JSVal
+-- | <https://w3c.github.io/reporting/#dom-report-url Report.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => Report -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+-- | <https://w3c.github.io/reporting/#dom-report-url Report.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => Report -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/reporting/#dom-report-url Report.url specification>
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => Report -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"body\"] = $2; })"
+        js_setBody :: Report -> JSVal -> IO ()
+-- | <https://w3c.github.io/reporting/#dom-report-body Report.body specification>
+setBody :: (MonadDOM m) => Report -> Maybe ReportBody -> m ()
+setBody self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBody (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })"
+        js_getBody :: Report -> IO JSVal
+-- | <https://w3c.github.io/reporting/#dom-report-body Report.body specification>
+getBody :: (MonadDOM m) => Report -> m (Maybe ReportBody)
+getBody self = liftDOM (((js_getBody (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-report-body Report.body specification>
+getBodyUnsafe :: (MonadDOM m, HasCallStack) => Report -> m ReportBody
+getBodyUnsafe self = liftDOM ((((js_getBody (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/reporting/#dom-report-body Report.body specification>
+getBodyUnchecked :: (MonadDOM m) => Report -> m ReportBody
+getBodyUnchecked self = liftDOM ((pFromJSVal <$> (js_getBody (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReportBody.hs b/src/GHCJS/DOM/JSFFI/Generated/ReportBody.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReportBody.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReportBody
+       (js_newReportBody, newReportBody, ReportBody(..), gTypeReportBody)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newReportBody :: IO ReportBody
+-- | <https://w3c.github.io/reporting/#reportbody ReportBody specification>
+newReportBody :: (MonadDOM m) => m ReportBody
+newReportBody = liftDOM ((js_newReportBody))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReportingObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/ReportingObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReportingObserver.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReportingObserver
+       (js_newReportingObserver, js_disconnect, js_observe, js_takeRecords, newReportingObserver, disconnect, observe, takeRecords, takeRecords_, ReportingObserver(..), gTypeReportingObserver)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ReportingObserver\"]($1, $2); })"
+        js_newReportingObserver :: JSVal -> JSVal -> IO ReportingObserver
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/ReportingObserver MDN ReportingObserver. documentation>
+newReportingObserver :: (MonadDOM m) => ReportingObserverCallback -> Maybe ReportingObserverOptions -> m ReportingObserver
+newReportingObserver callback' options = liftDOM (((toJSVal callback') >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newReportingObserver a1' a2'))
+
+foreign import javascript safe "(($1) => { return $1[\"disconnect\"](); })"
+        js_disconnect :: ReportingObserver -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/disconnect MDN ReportingObserver.disconnect documentation>
+disconnect :: (MonadDOM m) => ReportingObserver -> m ()
+disconnect self = liftDOM (void ((js_disconnect (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"observe\"](); })"
+        js_observe :: ReportingObserver -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/observe MDN ReportingObserver.observe documentation>
+observe :: (MonadDOM m) => ReportingObserver -> m ()
+observe self = liftDOM (void ((js_observe (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"takeRecords\"](); })"
+        js_takeRecords :: ReportingObserver -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/takeRecords MDN ReportingObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => ReportingObserver -> m [Report]
+takeRecords self = liftDOM (((js_takeRecords (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/takeRecords MDN ReportingObserver.takeRecords documentation>
+takeRecords_ :: (MonadDOM m) => ReportingObserver -> m ()
+takeRecords_ self = liftDOM (void ((js_takeRecords (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReportingObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/ReportingObserverCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReportingObserverCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReportingObserverCallback
+       (newReportingObserverCallback, newReportingObserverCallbackSync, newReportingObserverCallbackAsync, ReportingObserverCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newReportingObserverCallback :: (MonadDOM m) => ([Report] -> ReportingObserver -> IO ()) -> m ReportingObserverCallback
+newReportingObserverCallback callback = liftDOM ((ReportingObserverCallback . coerce) <$> syncCallback2 ContinueAsync (\ reports observer -> do
+          reports' <- fromJSValUnchecked reports
+          observer' <- fromJSValUnchecked observer
+          callback reports' observer'))
+
+newReportingObserverCallbackSync :: (MonadDOM m) => ([Report] -> ReportingObserver -> IO ()) -> m ReportingObserverCallback
+newReportingObserverCallbackSync callback = liftDOM ((ReportingObserverCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ reports observer -> do
+          reports' <- fromJSValUnchecked reports
+          observer' <- fromJSValUnchecked observer
+          callback reports' observer'))
+
+newReportingObserverCallbackAsync :: (MonadDOM m) => ([Report] -> ReportingObserver -> IO ()) -> m ReportingObserverCallback
+newReportingObserverCallbackAsync callback = liftDOM ((ReportingObserverCallback . coerce) <$> asyncCallback2 (\ reports observer -> do
+          reports' <- fromJSValUnchecked reports
+          observer' <- fromJSValUnchecked observer
+          callback reports' observer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReportingObserverOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ReportingObserverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReportingObserverOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ReportingObserverOptions
+       (js_newReportingObserverOptions, js_setTypes, js_getTypes, js_setBuffered, js_getBuffered, newReportingObserverOptions, setTypes, getTypes, getTypesUnsafe, getTypesUnchecked, setBuffered, getBuffered, getBufferedUnsafe, getBufferedUnchecked, ReportingObserverOptions(..), gTypeReportingObserverOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newReportingObserverOptions :: IO ReportingObserverOptions
+-- | <https://w3c.github.io/reporting/#dictdef-reportingobserveroptions ReportingObserverOptions specification>
+newReportingObserverOptions :: (MonadDOM m) => m ReportingObserverOptions
+newReportingObserverOptions = liftDOM ((js_newReportingObserverOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"types\"] = $2; })"
+        js_setTypes :: ReportingObserverOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-types ReportingObserverOptions.types specification>
+setTypes :: (MonadDOM m, ToJSString val) => ReportingObserverOptions -> [val] -> m ()
+setTypes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTypes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })"
+        js_getTypes :: ReportingObserverOptions -> IO JSVal
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-types ReportingObserverOptions.types specification>
+getTypes :: (MonadDOM m, FromJSString result) => ReportingObserverOptions -> m (Maybe [result])
+getTypes self = liftDOM (((js_getTypes (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-types ReportingObserverOptions.types specification>
+getTypesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ReportingObserverOptions -> m [result]
+getTypesUnsafe self = liftDOM ((((js_getTypes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-types ReportingObserverOptions.types specification>
+getTypesUnchecked :: (MonadDOM m, FromJSString result) => ReportingObserverOptions -> m [result]
+getTypesUnchecked self = liftDOM (((js_getTypes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"buffered\"] = $2; })"
+        js_setBuffered :: ReportingObserverOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-buffered ReportingObserverOptions.buffered specification>
+setBuffered :: (MonadDOM m) => ReportingObserverOptions -> Bool -> m ()
+setBuffered self val = liftDOM (void ((js_setBuffered (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })"
+        js_getBuffered :: ReportingObserverOptions -> IO JSVal
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-buffered ReportingObserverOptions.buffered specification>
+getBuffered :: (MonadDOM m) => ReportingObserverOptions -> m (Maybe Bool)
+getBuffered self = liftDOM (((js_getBuffered (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-buffered ReportingObserverOptions.buffered specification>
+getBufferedUnsafe :: (MonadDOM m, HasCallStack) => ReportingObserverOptions -> m Bool
+getBufferedUnsafe self = liftDOM ((((js_getBuffered (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-buffered ReportingObserverOptions.buffered specification>
+getBufferedUnchecked :: (MonadDOM m) => ReportingObserverOptions -> m Bool
+getBufferedUnchecked self = liftDOM ((pFromJSVal <$> (js_getBuffered (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Request.hs b/src/GHCJS/DOM/JSFFI/Generated/Request.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Request.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Request.hs
@@ -1,147 +1,111 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Request
-       (js_newRequest, newRequest, js_clone, clone, clone_, js_getMethod,
-        getMethod, js_getUrl, getUrl, js_getHeaders, getHeaders,
-        js_getType, getType, js_getDestination, getDestination,
-        js_getReferrer, getReferrer, js_getReferrerPolicy,
-        getReferrerPolicy, js_getMode, getMode, js_getCredentials,
-        getCredentials, js_getCache, getCache, js_getRedirect, getRedirect,
-        js_getIntegrity, getIntegrity, Request(..), gTypeRequest)
+       (js_newRequest, js_clone, js_getMethod, js_getUrl, js_getHeaders, js_getDestination, js_getReferrer, js_getReferrerPolicy, js_getMode, js_getCredentials, js_getCache, js_getRedirect, js_getIntegrity, js_getKeepalive, js_getSignal, newRequest, clone, clone_, getMethod, getUrl, getHeaders, getDestination, getReferrer, getReferrerPolicy, getMode, getCredentials, getCache, getRedirect, getIntegrity, getKeepalive, getSignal, Request(..), gTypeRequest)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return new window[\"Request\"]($1, $2); })"
-        js_newRequest :: JSVal -> Optional RequestInit -> IO Request
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request Mozilla Request documentation> 
-newRequest ::
-           (MonadIO m, ToJSVal input) =>
-             input -> Maybe RequestInit -> m Request
-newRequest input init
-  = liftIO
-      (toJSVal input >>= \ input' -> js_newRequest input'
-         (maybeToOptional init))
- 
-foreign import javascript safe "(($1) => { return $1[\"clone\"](); })" js_clone ::
-        Request -> IO Request
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"Request\"]($1, $2); })"
+        js_newRequest :: RequestInfo -> JSVal -> IO Request
+-- | <https://developer.mozilla.org/docs/Web/API/Request/Request MDN Request. documentation>
+newRequest :: (MonadDOM m, IsRequestInfo input) => input -> Maybe RequestInit -> m Request
+newRequest input init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a2' -> js_newRequest (Types.toRequestInfo input) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
-clone :: (MonadIO m) => Request -> m Request
-clone self = liftIO (js_clone self)
+foreign import javascript safe "(($1) => { return $1[\"clone\"](); })"
+        js_clone :: Request -> IO Request
+-- | <https://developer.mozilla.org/docs/Web/API/Request/clone MDN Request.clone documentation>
+clone :: (MonadDOM m) => Request -> m Request
+clone self = liftDOM ((js_clone (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
-clone_ :: (MonadIO m) => Request -> m ()
-clone_ self = liftIO (void (js_clone self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })" js_getMethod ::
-        Request -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Request/clone MDN Request.clone documentation>
+clone_ :: (MonadDOM m) => Request -> m ()
+clone_ self = liftDOM (void ((js_clone (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.method Mozilla Request.method documentation> 
-getMethod ::
-          (MonadIO m, FromJSString result) => Request -> m result
-getMethod self = liftIO (fromJSString <$> (js_getMethod self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
-        Request -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })"
+        js_getMethod :: Request -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Request/method MDN Request.method documentation>
+getMethod :: (MonadDOM m, FromJSString result) => Request -> m result
+getMethod self = liftDOM ((fromJSString <$> (js_getMethod (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.url Mozilla Request.url documentation> 
-getUrl :: (MonadIO m, FromJSString result) => Request -> m result
-getUrl self = liftIO (fromJSString <$> (js_getUrl self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })" js_getHeaders ::
-        Request -> IO Headers
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: Request -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Request/url MDN Request.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => Request -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.headers Mozilla Request.headers documentation> 
-getHeaders :: (MonadIO m) => Request -> m Headers
-getHeaders self = liftIO (js_getHeaders self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        Request -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })"
+        js_getHeaders :: Request -> IO Headers
+-- | <https://developer.mozilla.org/docs/Web/API/Request/headers MDN Request.headers documentation>
+getHeaders :: (MonadDOM m) => Request -> m Headers
+getHeaders self = liftDOM ((js_getHeaders (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.type Mozilla Request.type documentation> 
-getType :: (MonadIO m) => Request -> m RequestType
-getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"destination\"]; })"
         js_getDestination :: Request -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/destination MDN Request.destination documentation>
+getDestination :: (MonadDOM m) => Request -> m RequestDestination
+getDestination self = liftDOM (((js_getDestination (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.destination Mozilla Request.destination documentation> 
-getDestination :: (MonadIO m) => Request -> m RequestDestination
-getDestination self
-  = liftIO ((js_getDestination self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })" js_getReferrer
-        :: Request -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })"
+        js_getReferrer :: Request -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Request/referrer MDN Request.referrer documentation>
+getReferrer :: (MonadDOM m, FromJSString result) => Request -> m result
+getReferrer self = liftDOM ((fromJSString <$> (js_getReferrer (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrer Mozilla Request.referrer documentation> 
-getReferrer ::
-            (MonadIO m, FromJSString result) => Request -> m result
-getReferrer self = liftIO (fromJSString <$> (js_getReferrer self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
         js_getReferrerPolicy :: Request -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/referrerPolicy MDN Request.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m) => Request -> m ReferrerPolicy
+getReferrerPolicy self = liftDOM (((js_getReferrerPolicy (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrerPolicy Mozilla Request.referrerPolicy documentation> 
-getReferrerPolicy :: (MonadIO m) => Request -> m ReferrerPolicy
-getReferrerPolicy self
-  = liftIO ((js_getReferrerPolicy self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
-        Request -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: Request -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/mode MDN Request.mode documentation>
+getMode :: (MonadDOM m) => Request -> m RequestMode
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.mode Mozilla Request.mode documentation> 
-getMode :: (MonadIO m) => Request -> m RequestMode
-getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"credentials\"]; })"
         js_getCredentials :: Request -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/credentials MDN Request.credentials documentation>
+getCredentials :: (MonadDOM m) => Request -> m RequestCredentials
+getCredentials self = liftDOM (((js_getCredentials (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.credentials Mozilla Request.credentials documentation> 
-getCredentials :: (MonadIO m) => Request -> m RequestCredentials
-getCredentials self
-  = liftIO ((js_getCredentials self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cache\"]; })" js_getCache ::
-        Request -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"cache\"]; })"
+        js_getCache :: Request -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/cache MDN Request.cache documentation>
+getCache :: (MonadDOM m) => Request -> m RequestCache
+getCache self = liftDOM (((js_getCache (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.cache Mozilla Request.cache documentation> 
-getCache :: (MonadIO m) => Request -> m RequestCache
-getCache self = liftIO ((js_getCache self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"redirect\"]; })" js_getRedirect
-        :: Request -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"redirect\"]; })"
+        js_getRedirect :: Request -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/redirect MDN Request.redirect documentation>
+getRedirect :: (MonadDOM m) => Request -> m RequestRedirect
+getRedirect self = liftDOM (((js_getRedirect (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.redirect Mozilla Request.redirect documentation> 
-getRedirect :: (MonadIO m) => Request -> m RequestRedirect
-getRedirect self
-  = liftIO ((js_getRedirect self) >>= fromJSValUnchecked)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
         js_getIntegrity :: Request -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Request/integrity MDN Request.integrity documentation>
+getIntegrity :: (MonadDOM m, FromJSString result) => Request -> m result
+getIntegrity self = liftDOM ((fromJSString <$> (js_getIntegrity (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.integrity Mozilla Request.integrity documentation> 
-getIntegrity ::
-             (MonadIO m, FromJSString result) => Request -> m result
-getIntegrity self
-  = liftIO (fromJSString <$> (js_getIntegrity self))
+foreign import javascript unsafe "(($1) => { return $1[\"keepalive\"]; })"
+        js_getKeepalive :: Request -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Request/keepalive MDN Request.keepalive documentation>
+getKeepalive :: (MonadDOM m) => Request -> m Bool
+getKeepalive self = liftDOM ((js_getKeepalive (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: Request -> IO AbortSignal
+-- | <https://developer.mozilla.org/docs/Web/API/Request/signal MDN Request.signal documentation>
+getSignal :: (MonadDOM m) => Request -> m AbortSignal
+getSignal self = liftDOM ((js_getSignal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback
-       (newRequestAnimationFrameCallback,
-        newRequestAnimationFrameCallbackSync,
-        newRequestAnimationFrameCallbackAsync,
-        RequestAnimationFrameCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
-newRequestAnimationFrameCallback ::
-                                 (MonadIO m) => (Double -> IO ()) -> m RequestAnimationFrameCallback
-newRequestAnimationFrameCallback callback
-  = liftIO
-      (RequestAnimationFrameCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ highResTime ->
-              fromJSValUnchecked highResTime >>=
-                \ highResTime' -> callback highResTime'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
-newRequestAnimationFrameCallbackSync ::
-                                     (MonadIO m) =>
-                                       (Double -> IO ()) -> m RequestAnimationFrameCallback
-newRequestAnimationFrameCallbackSync callback
-  = liftIO
-      (RequestAnimationFrameCallback <$>
-         syncCallback1 ContinueAsync
-           (\ highResTime ->
-              fromJSValUnchecked highResTime >>=
-                \ highResTime' -> callback highResTime'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
-newRequestAnimationFrameCallbackAsync ::
-                                      (MonadIO m) =>
-                                        (Double -> IO ()) -> m RequestAnimationFrameCallback
-newRequestAnimationFrameCallbackAsync callback
-  = liftIO
-      (RequestAnimationFrameCallback <$>
-         asyncCallback1
-           (\ highResTime ->
-              fromJSValUnchecked highResTime >>=
-                \ highResTime' -> callback highResTime'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RequestInit.hs b/src/GHCJS/DOM/JSFFI/Generated/RequestInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RequestInit.hs
@@ -0,0 +1,355 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RequestInit
+       (js_newRequestInit, js_setMethod, js_getMethod, js_setHeaders, js_getHeaders, js_setBody, js_getBody, js_setReferrer, js_getReferrer, js_setReferrerPolicy, js_getReferrerPolicy, js_setMode, js_getMode, js_setCredentials, js_getCredentials, js_setCache, js_getCache, js_setRedirect, js_getRedirect, js_setIntegrity, js_getIntegrity, js_setKeepalive, js_getKeepalive, js_setSignal, js_getSignal, js_setDuplex, js_getDuplex, js_setPriority, js_getPriority, js_setWindow, js_getWindow, js_setTargetAddressSpace, js_getTargetAddressSpace, js_setPrivateToken, js_getPrivateToken, newRequestInit, setMethod, getMethod, getMethodUnsafe, getMethodUnchecked, setHeaders, getHeaders, getHeadersUnsafe, getHeadersUnchecked, setBody, getBody, getBodyUnsafe, getBodyUnchecked, setReferrer, getReferrer, getReferrerUnsafe, getReferrerUnchecked, setReferrerPolicy, getReferrerPolicy, getReferrerPolicyUnsafe, getReferrerPolicyUnchecked, setMode, getMode, getModeUnsafe, getModeUnchecked, setCredentials, getCredentials, getCredentialsUnsafe, getCredentialsUnchecked, setCache, getCache, getCacheUnsafe, getCacheUnchecked, setRedirect, getRedirect, getRedirectUnsafe, getRedirectUnchecked, setIntegrity, getIntegrity, getIntegrityUnsafe, getIntegrityUnchecked, setKeepalive, getKeepalive, getKeepaliveUnsafe, getKeepaliveUnchecked, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, setDuplex, getDuplex, getDuplexUnsafe, getDuplexUnchecked, setPriority, getPriority, getPriorityUnsafe, getPriorityUnchecked, setWindow, getWindow, setTargetAddressSpace, getTargetAddressSpace, getTargetAddressSpaceUnsafe, getTargetAddressSpaceUnchecked, setPrivateToken, getPrivateToken, getPrivateTokenUnsafe, getPrivateTokenUnchecked, RequestInit(..), gTypeRequestInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRequestInit :: IO RequestInit
+-- | <https://fetch.spec.whatwg.org/#requestinit RequestInit specification>
+newRequestInit :: (MonadDOM m) => m RequestInit
+newRequestInit = liftDOM ((js_newRequestInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"method\"] = $2; })"
+        js_setMethod :: RequestInit -> JSString -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-method RequestInit.method specification>
+setMethod :: (MonadDOM m, ToJSString val) => RequestInit -> val -> m ()
+setMethod self val = liftDOM (void ((js_setMethod (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })"
+        js_getMethod :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-method RequestInit.method specification>
+getMethod :: (MonadDOM m, FromJSString result) => RequestInit -> m (Maybe result)
+getMethod self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMethod (self))))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-method RequestInit.method specification>
+getMethodUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RequestInit -> m result
+getMethodUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMethod (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-method RequestInit.method specification>
+getMethodUnchecked :: (MonadDOM m, FromJSString result) => RequestInit -> m result
+getMethodUnchecked self = liftDOM ((pFromJSVal <$> (js_getMethod (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"headers\"] = $2; })"
+        js_setHeaders :: RequestInit -> HeadersInit -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-headers RequestInit.headers specification>
+setHeaders :: (MonadDOM m, IsHeadersInit val) => RequestInit -> val -> m ()
+setHeaders self val = liftDOM (void ((js_setHeaders (self) (Types.toHeadersInit val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })"
+        js_getHeaders :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-headers RequestInit.headers specification>
+getHeaders :: (MonadDOM m) => RequestInit -> m (Maybe HeadersInit)
+getHeaders self = liftDOM (((js_getHeaders (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-headers RequestInit.headers specification>
+getHeadersUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m HeadersInit
+getHeadersUnsafe self = liftDOM ((((js_getHeaders (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-headers RequestInit.headers specification>
+getHeadersUnchecked :: (MonadDOM m) => RequestInit -> m HeadersInit
+getHeadersUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeaders (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"body\"] = $2; })"
+        js_setBody :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-body RequestInit.body specification>
+setBody :: (MonadDOM m, IsBodyInit val) => RequestInit -> Maybe val -> m ()
+setBody self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBody (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })"
+        js_getBody :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-body RequestInit.body specification>
+getBody :: (MonadDOM m) => RequestInit -> m (Maybe BodyInit)
+getBody self = liftDOM (((js_getBody (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-body RequestInit.body specification>
+getBodyUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m BodyInit
+getBodyUnsafe self = liftDOM ((((js_getBody (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-body RequestInit.body specification>
+getBodyUnchecked :: (MonadDOM m) => RequestInit -> m BodyInit
+getBodyUnchecked self = liftDOM ((pFromJSVal <$> (js_getBody (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"referrer\"] = $2; })"
+        js_setReferrer :: RequestInit -> JSString -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrer RequestInit.referrer specification>
+setReferrer :: (MonadDOM m, ToJSString val) => RequestInit -> val -> m ()
+setReferrer self val = liftDOM (void ((js_setReferrer (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })"
+        js_getReferrer :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrer RequestInit.referrer specification>
+getReferrer :: (MonadDOM m, FromJSString result) => RequestInit -> m (Maybe result)
+getReferrer self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getReferrer (self))))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrer RequestInit.referrer specification>
+getReferrerUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RequestInit -> m result
+getReferrerUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getReferrer (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrer RequestInit.referrer specification>
+getReferrerUnchecked :: (MonadDOM m, FromJSString result) => RequestInit -> m result
+getReferrerUnchecked self = liftDOM ((pFromJSVal <$> (js_getReferrer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrerpolicy RequestInit.referrerPolicy specification>
+setReferrerPolicy :: (MonadDOM m) => RequestInit -> ReferrerPolicy -> m ()
+setReferrerPolicy self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setReferrerPolicy (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrerpolicy RequestInit.referrerPolicy specification>
+getReferrerPolicy :: (MonadDOM m) => RequestInit -> m (Maybe ReferrerPolicy)
+getReferrerPolicy self = liftDOM (((js_getReferrerPolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrerpolicy RequestInit.referrerPolicy specification>
+getReferrerPolicyUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m ReferrerPolicy
+getReferrerPolicyUnsafe self = liftDOM ((((js_getReferrerPolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrerpolicy RequestInit.referrerPolicy specification>
+getReferrerPolicyUnchecked :: (MonadDOM m) => RequestInit -> m ReferrerPolicy
+getReferrerPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getReferrerPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-mode RequestInit.mode specification>
+setMode :: (MonadDOM m) => RequestInit -> RequestMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-mode RequestInit.mode specification>
+getMode :: (MonadDOM m) => RequestInit -> m (Maybe RequestMode)
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-mode RequestInit.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestMode
+getModeUnsafe self = liftDOM ((((js_getMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-mode RequestInit.mode specification>
+getModeUnchecked :: (MonadDOM m) => RequestInit -> m RequestMode
+getModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credentials\"] = $2; })"
+        js_setCredentials :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-credentials RequestInit.credentials specification>
+setCredentials :: (MonadDOM m) => RequestInit -> RequestCredentials -> m ()
+setCredentials self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCredentials (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credentials\"]; })"
+        js_getCredentials :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-credentials RequestInit.credentials specification>
+getCredentials :: (MonadDOM m) => RequestInit -> m (Maybe RequestCredentials)
+getCredentials self = liftDOM (((js_getCredentials (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-credentials RequestInit.credentials specification>
+getCredentialsUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestCredentials
+getCredentialsUnsafe self = liftDOM ((((js_getCredentials (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-credentials RequestInit.credentials specification>
+getCredentialsUnchecked :: (MonadDOM m) => RequestInit -> m RequestCredentials
+getCredentialsUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredentials (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cache\"] = $2; })"
+        js_setCache :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-cache RequestInit.cache specification>
+setCache :: (MonadDOM m) => RequestInit -> RequestCache -> m ()
+setCache self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCache (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cache\"]; })"
+        js_getCache :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-cache RequestInit.cache specification>
+getCache :: (MonadDOM m) => RequestInit -> m (Maybe RequestCache)
+getCache self = liftDOM (((js_getCache (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-cache RequestInit.cache specification>
+getCacheUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestCache
+getCacheUnsafe self = liftDOM ((((js_getCache (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-cache RequestInit.cache specification>
+getCacheUnchecked :: (MonadDOM m) => RequestInit -> m RequestCache
+getCacheUnchecked self = liftDOM ((pFromJSVal <$> (js_getCache (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"redirect\"] = $2; })"
+        js_setRedirect :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-redirect RequestInit.redirect specification>
+setRedirect :: (MonadDOM m) => RequestInit -> RequestRedirect -> m ()
+setRedirect self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRedirect (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"redirect\"]; })"
+        js_getRedirect :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-redirect RequestInit.redirect specification>
+getRedirect :: (MonadDOM m) => RequestInit -> m (Maybe RequestRedirect)
+getRedirect self = liftDOM (((js_getRedirect (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-redirect RequestInit.redirect specification>
+getRedirectUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestRedirect
+getRedirectUnsafe self = liftDOM ((((js_getRedirect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-redirect RequestInit.redirect specification>
+getRedirectUnchecked :: (MonadDOM m) => RequestInit -> m RequestRedirect
+getRedirectUnchecked self = liftDOM ((pFromJSVal <$> (js_getRedirect (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"integrity\"] = $2; })"
+        js_setIntegrity :: RequestInit -> JSString -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-integrity RequestInit.integrity specification>
+setIntegrity :: (MonadDOM m, ToJSString val) => RequestInit -> val -> m ()
+setIntegrity self val = liftDOM (void ((js_setIntegrity (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
+        js_getIntegrity :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-integrity RequestInit.integrity specification>
+getIntegrity :: (MonadDOM m, FromJSString result) => RequestInit -> m (Maybe result)
+getIntegrity self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getIntegrity (self))))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-integrity RequestInit.integrity specification>
+getIntegrityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RequestInit -> m result
+getIntegrityUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getIntegrity (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-integrity RequestInit.integrity specification>
+getIntegrityUnchecked :: (MonadDOM m, FromJSString result) => RequestInit -> m result
+getIntegrityUnchecked self = liftDOM ((pFromJSVal <$> (js_getIntegrity (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keepalive\"] = $2; })"
+        js_setKeepalive :: RequestInit -> Bool -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-keepalive RequestInit.keepalive specification>
+setKeepalive :: (MonadDOM m) => RequestInit -> Bool -> m ()
+setKeepalive self val = liftDOM (void ((js_setKeepalive (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keepalive\"]; })"
+        js_getKeepalive :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-keepalive RequestInit.keepalive specification>
+getKeepalive :: (MonadDOM m) => RequestInit -> m (Maybe Bool)
+getKeepalive self = liftDOM (((js_getKeepalive (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-keepalive RequestInit.keepalive specification>
+getKeepaliveUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m Bool
+getKeepaliveUnsafe self = liftDOM ((((js_getKeepalive (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-keepalive RequestInit.keepalive specification>
+getKeepaliveUnchecked :: (MonadDOM m) => RequestInit -> m Bool
+getKeepaliveUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeepalive (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-signal RequestInit.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => RequestInit -> Maybe val -> m ()
+setSignal self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSignal (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-signal RequestInit.signal specification>
+getSignal :: (MonadDOM m) => RequestInit -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-signal RequestInit.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-signal RequestInit.signal specification>
+getSignalUnchecked :: (MonadDOM m) => RequestInit -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duplex\"] = $2; })"
+        js_setDuplex :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestInit.duplex specification>
+setDuplex :: (MonadDOM m) => RequestInit -> RequestDuplex -> m ()
+setDuplex self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDuplex (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duplex\"]; })"
+        js_getDuplex :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestInit.duplex specification>
+getDuplex :: (MonadDOM m) => RequestInit -> m (Maybe RequestDuplex)
+getDuplex self = liftDOM (((js_getDuplex (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestInit.duplex specification>
+getDuplexUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestDuplex
+getDuplexUnsafe self = liftDOM ((((js_getDuplex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestInit.duplex specification>
+getDuplexUnchecked :: (MonadDOM m) => RequestInit -> m RequestDuplex
+getDuplexUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuplex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-priority RequestInit.priority specification>
+setPriority :: (MonadDOM m) => RequestInit -> RequestPriority -> m ()
+setPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-priority RequestInit.priority specification>
+getPriority :: (MonadDOM m) => RequestInit -> m (Maybe RequestPriority)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-priority RequestInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestPriority
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-priority RequestInit.priority specification>
+getPriorityUnchecked :: (MonadDOM m) => RequestInit -> m RequestPriority
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"window\"] = $2; })"
+        js_setWindow :: RequestInit -> JSVal -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-window RequestInit.window specification>
+setWindow :: (MonadDOM m) => RequestInit -> JSVal -> m ()
+setWindow self val = liftDOM (void ((js_setWindow (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"window\"]; })"
+        js_getWindow :: RequestInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-window RequestInit.window specification>
+getWindow :: (MonadDOM m) => RequestInit -> m JSVal
+getWindow self = liftDOM ((js_getWindow (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"targetAddressSpace\"] = $2; })"
+        js_setTargetAddressSpace :: RequestInit -> JSVal -> IO ()
+-- | <https://wicg.github.io/local-network-access/#dom-requestinit-targetaddressspace RequestInit.targetAddressSpace specification>
+setTargetAddressSpace :: (MonadDOM m) => RequestInit -> IPAddressSpace -> m ()
+setTargetAddressSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTargetAddressSpace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"targetAddressSpace\"]; })"
+        js_getTargetAddressSpace :: RequestInit -> IO JSVal
+-- | <https://wicg.github.io/local-network-access/#dom-requestinit-targetaddressspace RequestInit.targetAddressSpace specification>
+getTargetAddressSpace :: (MonadDOM m) => RequestInit -> m (Maybe IPAddressSpace)
+getTargetAddressSpace self = liftDOM (((js_getTargetAddressSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/local-network-access/#dom-requestinit-targetaddressspace RequestInit.targetAddressSpace specification>
+getTargetAddressSpaceUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m IPAddressSpace
+getTargetAddressSpaceUnsafe self = liftDOM ((((js_getTargetAddressSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/local-network-access/#dom-requestinit-targetaddressspace RequestInit.targetAddressSpace specification>
+getTargetAddressSpaceUnchecked :: (MonadDOM m) => RequestInit -> m IPAddressSpace
+getTargetAddressSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getTargetAddressSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"privateToken\"] = $2; })"
+        js_setPrivateToken :: RequestInit -> PrivateToken -> IO ()
+-- | <https://wicg.github.io/trust-token-api/#dom-requestinit-privatetoken RequestInit.privateToken specification>
+setPrivateToken :: (MonadDOM m) => RequestInit -> PrivateToken -> m ()
+setPrivateToken self val = liftDOM (void ((js_setPrivateToken (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"privateToken\"]; })"
+        js_getPrivateToken :: RequestInit -> IO JSVal
+-- | <https://wicg.github.io/trust-token-api/#dom-requestinit-privatetoken RequestInit.privateToken specification>
+getPrivateToken :: (MonadDOM m) => RequestInit -> m (Maybe PrivateToken)
+getPrivateToken self = liftDOM (((js_getPrivateToken (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-requestinit-privatetoken RequestInit.privateToken specification>
+getPrivateTokenUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m PrivateToken
+getPrivateTokenUnsafe self = liftDOM ((((js_getPrivateToken (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-requestinit-privatetoken RequestInit.privateToken specification>
+getPrivateTokenUnchecked :: (MonadDOM m) => RequestInit -> m PrivateToken
+getPrivateTokenUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrivateToken (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ResizeObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserver.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ResizeObserver
+       (js_newResizeObserver, js_disconnect, js_observe, js_unobserve, newResizeObserver, disconnect, observe, unobserve, ResizeObserver(..), gTypeResizeObserver)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"ResizeObserver\"]($1); })"
+        js_newResizeObserver :: JSVal -> IO ResizeObserver
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserver/ResizeObserver MDN ResizeObserver. documentation>
+newResizeObserver :: (MonadDOM m) => ResizeObserverCallback -> m ResizeObserver
+newResizeObserver callback' = liftDOM (((toJSVal callback') >>= \a1' -> js_newResizeObserver a1'))
+
+foreign import javascript safe "(($1) => { return $1[\"disconnect\"](); })"
+        js_disconnect :: ResizeObserver -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserver/disconnect MDN ResizeObserver.disconnect documentation>
+disconnect :: (MonadDOM m) => ResizeObserver -> m ()
+disconnect self = liftDOM (void ((js_disconnect (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"observe\"]($2, $3); })"
+        js_observe :: ResizeObserver -> Element -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserver/observe MDN ResizeObserver.observe documentation>
+observe :: (MonadDOM m, IsElement target) => ResizeObserver -> target -> Maybe ResizeObserverOptions -> m ()
+observe self target options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_observe (self) (Types.toElement target) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"unobserve\"]($2); })"
+        js_unobserve :: ResizeObserver -> Element -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserver/unobserve MDN ResizeObserver.unobserve documentation>
+unobserve :: (MonadDOM m, IsElement target) => ResizeObserver -> target -> m ()
+unobserve self target = liftDOM (void ((js_unobserve (self) (Types.toElement target))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ResizeObserverCallback
+       (newResizeObserverCallback, newResizeObserverCallbackSync, newResizeObserverCallbackAsync, ResizeObserverCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newResizeObserverCallback :: (MonadDOM m) => ([ResizeObserverEntry] -> ResizeObserver -> IO ()) -> m ResizeObserverCallback
+newResizeObserverCallback callback = liftDOM ((ResizeObserverCallback . coerce) <$> syncCallback2 ContinueAsync (\ entries observer -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
+
+newResizeObserverCallbackSync :: (MonadDOM m) => ([ResizeObserverEntry] -> ResizeObserver -> IO ()) -> m ResizeObserverCallback
+newResizeObserverCallbackSync callback = liftDOM ((ResizeObserverCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ entries observer -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
+
+newResizeObserverCallbackAsync :: (MonadDOM m) => ([ResizeObserverEntry] -> ResizeObserver -> IO ()) -> m ResizeObserverCallback
+newResizeObserverCallbackAsync callback = liftDOM ((ResizeObserverCallback . coerce) <$> asyncCallback2 (\ entries observer -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverEntry.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ResizeObserverEntry
+       (js_getTarget, js_getContentRect, js_getBorderBoxSize, js_getContentBoxSize, js_getDevicePixelContentBoxSize, getTarget, getContentRect, getBorderBoxSize, getContentBoxSize, getDevicePixelContentBoxSize, ResizeObserverEntry(..), gTypeResizeObserverEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: ResizeObserverEntry -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/target MDN ResizeObserverEntry.target documentation>
+getTarget :: (MonadDOM m) => ResizeObserverEntry -> m Element
+getTarget self = liftDOM ((js_getTarget (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentRect\"]; })"
+        js_getContentRect :: ResizeObserverEntry -> IO DOMRectReadOnly
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/contentRect MDN ResizeObserverEntry.contentRect documentation>
+getContentRect :: (MonadDOM m) => ResizeObserverEntry -> m DOMRectReadOnly
+getContentRect self = liftDOM ((js_getContentRect (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"borderBoxSize\"]; })"
+        js_getBorderBoxSize :: ResizeObserverEntry -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/borderBoxSize MDN ResizeObserverEntry.borderBoxSize documentation>
+getBorderBoxSize :: (MonadDOM m) => ResizeObserverEntry -> m [ResizeObserverSize]
+getBorderBoxSize self = liftDOM (((js_getBorderBoxSize (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentBoxSize\"]; })"
+        js_getContentBoxSize :: ResizeObserverEntry -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/contentBoxSize MDN ResizeObserverEntry.contentBoxSize documentation>
+getContentBoxSize :: (MonadDOM m) => ResizeObserverEntry -> m [ResizeObserverSize]
+getContentBoxSize self = liftDOM (((js_getContentBoxSize (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"devicePixelContentBoxSize\"]; })"
+        js_getDevicePixelContentBoxSize :: ResizeObserverEntry -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/devicePixelContentBoxSize MDN ResizeObserverEntry.devicePixelContentBoxSize documentation>
+getDevicePixelContentBoxSize :: (MonadDOM m) => ResizeObserverEntry -> m [ResizeObserverSize]
+getDevicePixelContentBoxSize self = liftDOM (((js_getDevicePixelContentBoxSize (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ResizeObserverOptions
+       (js_newResizeObserverOptions, js_setBox, js_getBox, newResizeObserverOptions, setBox, getBox, getBoxUnsafe, getBoxUnchecked, ResizeObserverOptions(..), gTypeResizeObserverOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newResizeObserverOptions :: IO ResizeObserverOptions
+-- | <https://drafts.csswg.org/resize-observer-1/#dictdef-resizeobserveroptions ResizeObserverOptions specification>
+newResizeObserverOptions :: (MonadDOM m) => m ResizeObserverOptions
+newResizeObserverOptions = liftDOM ((js_newResizeObserverOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"box\"] = $2; })"
+        js_setBox :: ResizeObserverOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/resize-observer-1/#dom-resizeobserveroptions-box ResizeObserverOptions.box specification>
+setBox :: (MonadDOM m) => ResizeObserverOptions -> ResizeObserverBoxOptions -> m ()
+setBox self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBox (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"box\"]; })"
+        js_getBox :: ResizeObserverOptions -> IO JSVal
+-- | <https://drafts.csswg.org/resize-observer-1/#dom-resizeobserveroptions-box ResizeObserverOptions.box specification>
+getBox :: (MonadDOM m) => ResizeObserverOptions -> m (Maybe ResizeObserverBoxOptions)
+getBox self = liftDOM (((js_getBox (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/resize-observer-1/#dom-resizeobserveroptions-box ResizeObserverOptions.box specification>
+getBoxUnsafe :: (MonadDOM m, HasCallStack) => ResizeObserverOptions -> m ResizeObserverBoxOptions
+getBoxUnsafe self = liftDOM ((((js_getBox (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/resize-observer-1/#dom-resizeobserveroptions-box ResizeObserverOptions.box specification>
+getBoxUnchecked :: (MonadDOM m) => ResizeObserverOptions -> m ResizeObserverBoxOptions
+getBoxUnchecked self = liftDOM ((pFromJSVal <$> (js_getBox (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverSize.hs b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverSize.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ResizeObserverSize.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ResizeObserverSize
+       (js_getInlineSize, js_getBlockSize, getInlineSize, getBlockSize, ResizeObserverSize(..), gTypeResizeObserverSize)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"inlineSize\"]; })"
+        js_getInlineSize :: ResizeObserverSize -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverSize/inlineSize MDN ResizeObserverSize.inlineSize documentation>
+getInlineSize :: (MonadDOM m) => ResizeObserverSize -> m Double
+getInlineSize self = liftDOM ((js_getInlineSize (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"blockSize\"]; })"
+        js_getBlockSize :: ResizeObserverSize -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverSize/blockSize MDN ResizeObserverSize.blockSize documentation>
+getBlockSize :: (MonadDOM m) => ResizeObserverSize -> m Double
+getBlockSize self = liftDOM ((js_getBlockSize (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Response.hs b/src/GHCJS/DOM/JSFFI/Generated/Response.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Response.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Response.hs
@@ -1,213 +1,105 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Response
-       (js_error, error, error_, js_redirect, redirect, redirect_,
-        js_arrayBuffer, arrayBuffer, arrayBuffer_, js_blob, blob, blob_,
-        js_formData, formData, formData_, js_json, json, json_, js_text,
-        text, text_, js_clone, clone, clone_, js_getType, getType,
-        js_getUrl, getUrl, js_getRedirected, getRedirected, js_getStatus,
-        getStatus, js_getOk, getOk, js_getStatusText, getStatusText,
-        js_getHeaders, getHeaders, js_getBody, getBody, getBodyUnsafe,
-        getBodyUnchecked, js_getBodyUsed, getBodyUsed, Response(..),
-        gTypeResponse)
+       (js_newResponse, js_clone, js_error, js_json, js_redirect, js_getType, js_getUrl, js_getRedirected, js_getStatus, js_getOk, js_getStatusText, js_getHeaders, newResponse, clone, clone_, error, error_, json, json_, redirect, redirect_, getType, getUrl, getRedirected, getStatus, getOk, getStatusText, getHeaders, Response(..), gTypeResponse)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return window[\"Response\"][\"error\"](); })" js_error :: IO Response
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error :: (MonadIO m) => m Response
-error = liftIO (js_error)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error_ :: (MonadIO m) => m ()
-error_ = liftIO (void (js_error))
- 
-foreign import javascript safe
-        "(($1, $2) => { return window[\"Response\"][\"redirect\"]($1,\n$2); })" js_redirect ::
-        JSString -> Optional Word -> IO Response
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
-redirect ::
-         (MonadIO m, ToJSString url) => url -> Maybe Word -> m Response
-redirect url status
-  = liftIO (js_redirect (toJSString url) (maybeToOptional status))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
-redirect_ ::
-          (MonadIO m, ToJSString url) => url -> Maybe Word -> m ()
-redirect_ url status
-  = liftIO
-      (void (js_redirect (toJSString url) (maybeToOptional status)))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"arrayBuffer\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_arrayBuffer :: Response -> IO (JSVal, ArrayBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.arrayBuffer Mozilla Response.arrayBuffer documentation> 
-arrayBuffer :: (MonadIO m) => Response -> m ArrayBuffer
-arrayBuffer self
-  = liftIO ((js_arrayBuffer self) >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.arrayBuffer Mozilla Response.arrayBuffer documentation> 
-arrayBuffer_ :: (MonadIO m) => Response -> m ()
-arrayBuffer_ self = liftIO (void (js_arrayBuffer self))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"blob\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_blob :: Response -> IO (JSVal, Blob)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.blob Mozilla Response.blob documentation> 
-blob :: (MonadIO m) => Response -> m Blob
-blob self = liftIO ((js_blob self) >>= checkPromiseResult)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"Response\"]($1, $2); })"
+        js_newResponse :: JSVal -> JSVal -> IO Response
+-- | <https://developer.mozilla.org/docs/Web/API/Response/Response MDN Response. documentation>
+newResponse :: (MonadDOM m, IsBodyInit body) => Maybe body -> Maybe ResponseInit -> m Response
+newResponse body init = liftDOM (((toJSVal body) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal init) >>= \a2' -> js_newResponse a1' a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.blob Mozilla Response.blob documentation> 
-blob_ :: (MonadIO m) => Response -> m ()
-blob_ self = liftIO (void (js_blob self))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"formData\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_formData :: Response -> IO (JSVal, Blob)
+foreign import javascript safe "(($1) => { return $1[\"clone\"](); })"
+        js_clone :: Response -> IO Response
+-- | <https://developer.mozilla.org/docs/Web/API/Response/clone MDN Response.clone documentation>
+clone :: (MonadDOM m) => Response -> m Response
+clone self = liftDOM ((js_clone (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.formData Mozilla Response.formData documentation> 
-formData :: (MonadIO m) => Response -> m Blob
-formData self = liftIO ((js_formData self) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Response/clone MDN Response.clone documentation>
+clone_ :: (MonadDOM m) => Response -> m ()
+clone_ self = liftDOM (void ((js_clone (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.formData Mozilla Response.formData documentation> 
-formData_ :: (MonadIO m) => Response -> m ()
-formData_ self = liftIO (void (js_formData self))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"json\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_json :: Response -> IO (JSVal, JSVal)
+foreign import javascript safe "(() => { return globalThis[\"Response\"][\"error\"](); })"
+        js_error :: IO Response
+-- | <https://developer.mozilla.org/docs/Web/API/Response/error_static MDN Response.error documentation>
+error :: (MonadDOM m) => m Response
+error = liftDOM ((js_error))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.json Mozilla Response.json documentation> 
-json :: (MonadIO m) => Response -> m JSVal
-json self = liftIO ((js_json self) >>= checkPromiseResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Response/error_static MDN Response.error documentation>
+error_ :: (MonadDOM m) => m ()
+error_ = liftDOM (void ((js_error)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.json Mozilla Response.json documentation> 
-json_ :: (MonadIO m) => Response -> m ()
-json_ self = liftIO (void (js_json self))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"text\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_text :: Response -> IO (JSVal, JSString)
+foreign import javascript safe "(($1, $2) => { return globalThis[\"Response\"][\"json\"]($1, $2); })"
+        js_json :: JSVal -> JSVal -> IO Response
+-- | <https://developer.mozilla.org/docs/Web/API/Response/json_static MDN Response.json documentation>
+json :: (MonadDOM m) => JSVal -> Maybe ResponseInit -> m Response
+json data' init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a2' -> js_json (data') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.text Mozilla Response.text documentation> 
-text :: (MonadIO m, FromJSString result) => Response -> m result
-text self
-  = liftIO (fromJSString <$> ((js_text self) >>= checkPromiseResult))
+-- | <https://developer.mozilla.org/docs/Web/API/Response/json_static MDN Response.json documentation>
+json_ :: (MonadDOM m) => JSVal -> Maybe ResponseInit -> m ()
+json_ data' init = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a2' -> js_json (data') a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.text Mozilla Response.text documentation> 
-text_ :: (MonadIO m) => Response -> m ()
-text_ self = liftIO (void (js_text self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clone\"](); })" js_clone ::
-        Response -> IO Response
+foreign import javascript safe "(($1, $2) => { return globalThis[\"Response\"][\"redirect\"]($1, $2); })"
+        js_redirect :: JSString -> JSVal -> IO Response
+-- | <https://developer.mozilla.org/docs/Web/API/Response/redirect_static MDN Response.redirect documentation>
+redirect :: (MonadDOM m, ToJSString url) => url -> Maybe Word -> m Response
+redirect url status = liftDOM (((P.maybe (P.return jsUndefined) toJSVal status) >>= \a2' -> js_redirect (toJSString url) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.clone Mozilla Response.clone documentation> 
-clone :: (MonadIO m) => Response -> m Response
-clone self = liftIO (js_clone self)
+-- | <https://developer.mozilla.org/docs/Web/API/Response/redirect_static MDN Response.redirect documentation>
+redirect_ :: (MonadDOM m, ToJSString url) => url -> Maybe Word -> m ()
+redirect_ url status = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal status) >>= \a2' -> js_redirect (toJSString url) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.clone Mozilla Response.clone documentation> 
-clone_ :: (MonadIO m) => Response -> m ()
-clone_ self = liftIO (void (js_clone self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        Response -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Response -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Response/type MDN Response.type documentation>
+getType :: (MonadDOM m) => Response -> m ResponseType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.type Mozilla Response.type documentation> 
-getType :: (MonadIO m) => Response -> m ResponseType
-getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
-        Response -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: Response -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Response/url MDN Response.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => Response -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.url Mozilla Response.url documentation> 
-getUrl :: (MonadIO m, FromJSString result) => Response -> m result
-getUrl self = liftIO (fromJSString <$> (js_getUrl self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"redirected\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"redirected\"]; })"
         js_getRedirected :: Response -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Response/redirected MDN Response.redirected documentation>
+getRedirected :: (MonadDOM m) => Response -> m Bool
+getRedirected self = liftDOM ((js_getRedirected (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirected Mozilla Response.redirected documentation> 
-getRedirected :: (MonadIO m) => Response -> m Bool
-getRedirected self = liftIO (js_getRedirected self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
-        Response -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })"
+        js_getStatus :: Response -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Response/status MDN Response.status documentation>
+getStatus :: (MonadDOM m) => Response -> m Word
+getStatus self = liftDOM ((js_getStatus (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.status Mozilla Response.status documentation> 
-getStatus :: (MonadIO m) => Response -> m Word
-getStatus self = liftIO (js_getStatus self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"ok\"] ? 1 : 0); })" js_getOk ::
-        Response -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"ok\"]; })"
+        js_getOk :: Response -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Response/ok MDN Response.ok documentation>
+getOk :: (MonadDOM m) => Response -> m Bool
+getOk self = liftDOM ((js_getOk (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.ok Mozilla Response.ok documentation> 
-getOk :: (MonadIO m) => Response -> m Bool
-getOk self = liftIO (js_getOk self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"statusText\"]; })"
         js_getStatusText :: Response -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.statusText Mozilla Response.statusText documentation> 
-getStatusText ::
-              (MonadIO m, FromJSString result) => Response -> m result
-getStatusText self
-  = liftIO (fromJSString <$> (js_getStatusText self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })" js_getHeaders ::
-        Response -> IO Headers
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.headers Mozilla Response.headers documentation> 
-getHeaders :: (MonadIO m) => Response -> m Headers
-getHeaders self = liftIO (js_getHeaders self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })" js_getBody ::
-        Response -> IO (Nullable ReadableStream)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
-getBody :: (MonadIO m) => Response -> m (Maybe ReadableStream)
-getBody self = liftIO (nullableToMaybe <$> (js_getBody self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
-getBodyUnsafe ::
-              (MonadIO m, HasCallStack) => Response -> m ReadableStream
-getBodyUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getBody self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
-getBodyUnchecked :: (MonadIO m) => Response -> m ReadableStream
-getBodyUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getBody self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"bodyUsed\"] ? 1 : 0); })"
-        js_getBodyUsed :: Response -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Response/statusText MDN Response.statusText documentation>
+getStatusText :: (MonadDOM m, FromJSString result) => Response -> m result
+getStatusText self = liftDOM ((fromJSString <$> (js_getStatusText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.bodyUsed Mozilla Response.bodyUsed documentation> 
-getBodyUsed :: (MonadIO m) => Response -> m Bool
-getBodyUsed self = liftIO (js_getBodyUsed self)
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })"
+        js_getHeaders :: Response -> IO Headers
+-- | <https://developer.mozilla.org/docs/Web/API/Response/headers MDN Response.headers documentation>
+getHeaders :: (MonadDOM m) => Response -> m Headers
+getHeaders self = liftDOM ((js_getHeaders (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ResponseInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ResponseInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ResponseInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ResponseInit
+       (js_newResponseInit, js_setStatus, js_getStatus, js_setStatusText, js_getStatusText, js_setHeaders, js_getHeaders, newResponseInit, setStatus, getStatus, getStatusUnsafe, getStatusUnchecked, setStatusText, getStatusText, getStatusTextUnsafe, getStatusTextUnchecked, setHeaders, getHeaders, getHeadersUnsafe, getHeadersUnchecked, ResponseInit(..), gTypeResponseInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newResponseInit :: IO ResponseInit
+-- | <https://fetch.spec.whatwg.org/#responseinit ResponseInit specification>
+newResponseInit :: (MonadDOM m) => m ResponseInit
+newResponseInit = liftDOM ((js_newResponseInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"status\"] = $2; })"
+        js_setStatus :: ResponseInit -> Word -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-status ResponseInit.status specification>
+setStatus :: (MonadDOM m) => ResponseInit -> Word -> m ()
+setStatus self val = liftDOM (void ((js_setStatus (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })"
+        js_getStatus :: ResponseInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-status ResponseInit.status specification>
+getStatus :: (MonadDOM m) => ResponseInit -> m (Maybe Word)
+getStatus self = liftDOM (((js_getStatus (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-status ResponseInit.status specification>
+getStatusUnsafe :: (MonadDOM m, HasCallStack) => ResponseInit -> m Word
+getStatusUnsafe self = liftDOM ((((js_getStatus (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-status ResponseInit.status specification>
+getStatusUnchecked :: (MonadDOM m) => ResponseInit -> m Word
+getStatusUnchecked self = liftDOM ((pFromJSVal <$> (js_getStatus (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"statusText\"] = $2; })"
+        js_setStatusText :: ResponseInit -> JSString -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-statustext ResponseInit.statusText specification>
+setStatusText :: (MonadDOM m, ToJSString val) => ResponseInit -> val -> m ()
+setStatusText self val = liftDOM (void ((js_setStatusText (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"statusText\"]; })"
+        js_getStatusText :: ResponseInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-statustext ResponseInit.statusText specification>
+getStatusText :: (MonadDOM m, FromJSString result) => ResponseInit -> m (Maybe result)
+getStatusText self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getStatusText (self))))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-statustext ResponseInit.statusText specification>
+getStatusTextUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ResponseInit -> m result
+getStatusTextUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getStatusText (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-statustext ResponseInit.statusText specification>
+getStatusTextUnchecked :: (MonadDOM m, FromJSString result) => ResponseInit -> m result
+getStatusTextUnchecked self = liftDOM ((pFromJSVal <$> (js_getStatusText (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"headers\"] = $2; })"
+        js_setHeaders :: ResponseInit -> HeadersInit -> IO ()
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-headers ResponseInit.headers specification>
+setHeaders :: (MonadDOM m, IsHeadersInit val) => ResponseInit -> val -> m ()
+setHeaders self val = liftDOM (void ((js_setHeaders (self) (Types.toHeadersInit val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })"
+        js_getHeaders :: ResponseInit -> IO JSVal
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-headers ResponseInit.headers specification>
+getHeaders :: (MonadDOM m) => ResponseInit -> m (Maybe HeadersInit)
+getHeaders self = liftDOM (((js_getHeaders (self)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-headers ResponseInit.headers specification>
+getHeadersUnsafe :: (MonadDOM m, HasCallStack) => ResponseInit -> m HeadersInit
+getHeadersUnsafe self = liftDOM ((((js_getHeaders (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-headers ResponseInit.headers specification>
+getHeadersUnchecked :: (MonadDOM m) => ResponseInit -> m HeadersInit
+getHeadersUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeaders (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RouterCondition.hs b/src/GHCJS/DOM/JSFFI/Generated/RouterCondition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RouterCondition.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RouterCondition
+       (js_newRouterCondition, js_setUrlPattern, js_getUrlPattern, js_setRequestMethod, js_getRequestMethod, js_setRequestMode, js_getRequestMode, js_setRequestDestination, js_getRequestDestination, js_setRunningStatus, js_getRunningStatus, js_setOr, js_getOr, js_setNot, js_getNot, newRouterCondition, setUrlPattern, getUrlPattern, getUrlPatternUnsafe, getUrlPatternUnchecked, setRequestMethod, getRequestMethod, getRequestMethodUnsafe, getRequestMethodUnchecked, setRequestMode, getRequestMode, getRequestModeUnsafe, getRequestModeUnchecked, setRequestDestination, getRequestDestination, getRequestDestinationUnsafe, getRequestDestinationUnchecked, setRunningStatus, getRunningStatus, getRunningStatusUnsafe, getRunningStatusUnchecked, setOr, getOr, getOrUnsafe, getOrUnchecked, setNot, getNot, getNotUnsafe, getNotUnchecked, RouterCondition(..), gTypeRouterCondition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRouterCondition :: IO RouterCondition
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-routercondition RouterCondition specification>
+newRouterCondition :: (MonadDOM m) => m RouterCondition
+newRouterCondition = liftDOM ((js_newRouterCondition))
+
+foreign import javascript safe "(($1, $2) => { $1[\"urlPattern\"] = $2; })"
+        js_setUrlPattern :: RouterCondition -> URLPatternCompatible -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-urlpattern RouterCondition.urlPattern specification>
+setUrlPattern :: (MonadDOM m, IsURLPatternCompatible val) => RouterCondition -> val -> m ()
+setUrlPattern self val = liftDOM (void ((js_setUrlPattern (self) (Types.toURLPatternCompatible val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"urlPattern\"]; })"
+        js_getUrlPattern :: RouterCondition -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-urlpattern RouterCondition.urlPattern specification>
+getUrlPattern :: (MonadDOM m) => RouterCondition -> m (Maybe URLPatternCompatible)
+getUrlPattern self = liftDOM (((js_getUrlPattern (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-urlpattern RouterCondition.urlPattern specification>
+getUrlPatternUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m URLPatternCompatible
+getUrlPatternUnsafe self = liftDOM ((((js_getUrlPattern (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-urlpattern RouterCondition.urlPattern specification>
+getUrlPatternUnchecked :: (MonadDOM m) => RouterCondition -> m URLPatternCompatible
+getUrlPatternUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrlPattern (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestMethod\"] = $2; })"
+        js_setRequestMethod :: RouterCondition -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmethod RouterCondition.requestMethod specification>
+setRequestMethod :: (MonadDOM m, ToJSString val) => RouterCondition -> val -> m ()
+setRequestMethod self val = liftDOM (void ((js_setRequestMethod (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestMethod\"]; })"
+        js_getRequestMethod :: RouterCondition -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmethod RouterCondition.requestMethod specification>
+getRequestMethod :: (MonadDOM m, FromJSString result) => RouterCondition -> m (Maybe result)
+getRequestMethod self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRequestMethod (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmethod RouterCondition.requestMethod specification>
+getRequestMethodUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RouterCondition -> m result
+getRequestMethodUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRequestMethod (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmethod RouterCondition.requestMethod specification>
+getRequestMethodUnchecked :: (MonadDOM m, FromJSString result) => RouterCondition -> m result
+getRequestMethodUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestMethod (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestMode\"] = $2; })"
+        js_setRequestMode :: RouterCondition -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmode RouterCondition.requestMode specification>
+setRequestMode :: (MonadDOM m) => RouterCondition -> RequestMode -> m ()
+setRequestMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRequestMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestMode\"]; })"
+        js_getRequestMode :: RouterCondition -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmode RouterCondition.requestMode specification>
+getRequestMode :: (MonadDOM m) => RouterCondition -> m (Maybe RequestMode)
+getRequestMode self = liftDOM (((js_getRequestMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmode RouterCondition.requestMode specification>
+getRequestModeUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RequestMode
+getRequestModeUnsafe self = liftDOM ((((js_getRequestMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmode RouterCondition.requestMode specification>
+getRequestModeUnchecked :: (MonadDOM m) => RouterCondition -> m RequestMode
+getRequestModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestDestination\"] = $2; })"
+        js_setRequestDestination :: RouterCondition -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestdestination RouterCondition.requestDestination specification>
+setRequestDestination :: (MonadDOM m) => RouterCondition -> RequestDestination -> m ()
+setRequestDestination self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRequestDestination (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestDestination\"]; })"
+        js_getRequestDestination :: RouterCondition -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestdestination RouterCondition.requestDestination specification>
+getRequestDestination :: (MonadDOM m) => RouterCondition -> m (Maybe RequestDestination)
+getRequestDestination self = liftDOM (((js_getRequestDestination (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestdestination RouterCondition.requestDestination specification>
+getRequestDestinationUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RequestDestination
+getRequestDestinationUnsafe self = liftDOM ((((js_getRequestDestination (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestdestination RouterCondition.requestDestination specification>
+getRequestDestinationUnchecked :: (MonadDOM m) => RouterCondition -> m RequestDestination
+getRequestDestinationUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestDestination (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"runningStatus\"] = $2; })"
+        js_setRunningStatus :: RouterCondition -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-runningstatus RouterCondition.runningStatus specification>
+setRunningStatus :: (MonadDOM m) => RouterCondition -> RunningStatus -> m ()
+setRunningStatus self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRunningStatus (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"runningStatus\"]; })"
+        js_getRunningStatus :: RouterCondition -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-runningstatus RouterCondition.runningStatus specification>
+getRunningStatus :: (MonadDOM m) => RouterCondition -> m (Maybe RunningStatus)
+getRunningStatus self = liftDOM (((js_getRunningStatus (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-runningstatus RouterCondition.runningStatus specification>
+getRunningStatusUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RunningStatus
+getRunningStatusUnsafe self = liftDOM ((((js_getRunningStatus (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-runningstatus RouterCondition.runningStatus specification>
+getRunningStatusUnchecked :: (MonadDOM m) => RouterCondition -> m RunningStatus
+getRunningStatusUnchecked self = liftDOM ((pFromJSVal <$> (js_getRunningStatus (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"or\"] = $2; })"
+        js_setOr :: RouterCondition -> JSVal -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-or RouterCondition.or specification>
+setOr :: (MonadDOM m) => RouterCondition -> [RouterCondition] -> m ()
+setOr self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOr (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"or\"]; })"
+        js_getOr :: RouterCondition -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-or RouterCondition.or specification>
+getOr :: (MonadDOM m) => RouterCondition -> m (Maybe [RouterCondition])
+getOr self = liftDOM (((js_getOr (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-or RouterCondition.or specification>
+getOrUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m [RouterCondition]
+getOrUnsafe self = liftDOM ((((js_getOr (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-or RouterCondition.or specification>
+getOrUnchecked :: (MonadDOM m) => RouterCondition -> m [RouterCondition]
+getOrUnchecked self = liftDOM (((js_getOr (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"not\"] = $2; })"
+        js_setNot :: RouterCondition -> RouterCondition -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-not RouterCondition.not specification>
+setNot :: (MonadDOM m) => RouterCondition -> RouterCondition -> m ()
+setNot self val = liftDOM (void ((js_setNot (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"not\"]; })"
+        js_getNot :: RouterCondition -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-not RouterCondition.not specification>
+getNot :: (MonadDOM m) => RouterCondition -> m (Maybe RouterCondition)
+getNot self = liftDOM (((js_getNot (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-not RouterCondition.not specification>
+getNotUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RouterCondition
+getNotUnsafe self = liftDOM ((((js_getNot (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-not RouterCondition.not specification>
+getNotUnchecked :: (MonadDOM m) => RouterCondition -> m RouterCondition
+getNotUnchecked self = liftDOM ((pFromJSVal <$> (js_getNot (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RouterRule.hs b/src/GHCJS/DOM/JSFFI/Generated/RouterRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RouterRule.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RouterRule
+       (js_newRouterRule, js_setCondition, js_getCondition, js_setSource, js_getSource, newRouterRule, setCondition, getCondition, setSource, getSource, RouterRule(..), gTypeRouterRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"condition\": $1, \"source\": $2}); })"
+        js_newRouterRule :: RouterCondition -> RouterSource -> IO RouterRule
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-routerrule RouterRule specification>
+newRouterRule :: (MonadDOM m, IsRouterSource source) => RouterCondition -> source -> m RouterRule
+newRouterRule condition source = liftDOM ((js_newRouterRule (condition) (Types.toRouterSource source)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"condition\"] = $2; })"
+        js_setCondition :: RouterRule -> RouterCondition -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-condition RouterRule.condition specification>
+setCondition :: (MonadDOM m) => RouterRule -> RouterCondition -> m ()
+setCondition self val = liftDOM (void ((js_setCondition (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"condition\"]; })"
+        js_getCondition :: RouterRule -> IO RouterCondition
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-condition RouterRule.condition specification>
+getCondition :: (MonadDOM m) => RouterRule -> m RouterCondition
+getCondition self = liftDOM ((js_getCondition (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: RouterRule -> RouterSource -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-source RouterRule.source specification>
+setSource :: (MonadDOM m, IsRouterSource val) => RouterRule -> val -> m ()
+setSource self val = liftDOM (void ((js_setSource (self) (Types.toRouterSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: RouterRule -> IO RouterSource
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-source RouterRule.source specification>
+getSource :: (MonadDOM m) => RouterRule -> m RouterSource
+getSource self = liftDOM ((js_getSource (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RouterSourceDict.hs b/src/GHCJS/DOM/JSFFI/Generated/RouterSourceDict.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RouterSourceDict.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RouterSourceDict
+       (js_newRouterSourceDict, js_setCacheName, js_getCacheName, newRouterSourceDict, setCacheName, getCacheName, getCacheNameUnsafe, getCacheNameUnchecked, RouterSourceDict(..), gTypeRouterSourceDict)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRouterSourceDict :: IO RouterSourceDict
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-routersourcedict RouterSourceDict specification>
+newRouterSourceDict :: (MonadDOM m) => m RouterSourceDict
+newRouterSourceDict = liftDOM ((js_newRouterSourceDict))
+
+foreign import javascript safe "(($1, $2) => { $1[\"cacheName\"] = $2; })"
+        js_setCacheName :: RouterSourceDict -> JSString -> IO ()
+-- | <https://w3c.github.io/ServiceWorker/#dom-routersourcedict-cachename RouterSourceDict.cacheName specification>
+setCacheName :: (MonadDOM m, ToJSString val) => RouterSourceDict -> val -> m ()
+setCacheName self val = liftDOM (void ((js_setCacheName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cacheName\"]; })"
+        js_getCacheName :: RouterSourceDict -> IO JSVal
+-- | <https://w3c.github.io/ServiceWorker/#dom-routersourcedict-cachename RouterSourceDict.cacheName specification>
+getCacheName :: (MonadDOM m, FromJSString result) => RouterSourceDict -> m (Maybe result)
+getCacheName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCacheName (self))))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routersourcedict-cachename RouterSourceDict.cacheName specification>
+getCacheNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RouterSourceDict -> m result
+getCacheNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCacheName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routersourcedict-cachename RouterSourceDict.cacheName specification>
+getCacheNameUnchecked :: (MonadDOM m, FromJSString result) => RouterSourceDict -> m result
+getCacheNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getCacheName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RsaOtherPrimesInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/RsaOtherPrimesInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RsaOtherPrimesInfo.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.RsaOtherPrimesInfo
+       (js_newRsaOtherPrimesInfo, js_setR, js_getR, js_setD, js_getD, js_setT, js_getT, newRsaOtherPrimesInfo, setR, getR, getRUnsafe, getRUnchecked, setD, getD, getDUnsafe, getDUnchecked, setT, getT, getTUnsafe, getTUnchecked, RsaOtherPrimesInfo(..), gTypeRsaOtherPrimesInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newRsaOtherPrimesInfo :: IO RsaOtherPrimesInfo
+-- | <https://w3c.github.io/webcrypto/#dfn-RsaOtherPrimesInfo RsaOtherPrimesInfo specification>
+newRsaOtherPrimesInfo :: (MonadDOM m) => m RsaOtherPrimesInfo
+newRsaOtherPrimesInfo = liftDOM ((js_newRsaOtherPrimesInfo))
+
+foreign import javascript safe "(($1, $2) => { $1[\"r\"] = $2; })"
+        js_setR :: RsaOtherPrimesInfo -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-r RsaOtherPrimesInfo.r specification>
+setR :: (MonadDOM m, ToJSString val) => RsaOtherPrimesInfo -> val -> m ()
+setR self val = liftDOM (void ((js_setR (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })"
+        js_getR :: RsaOtherPrimesInfo -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-r RsaOtherPrimesInfo.r specification>
+getR :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m (Maybe result)
+getR self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getR (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-r RsaOtherPrimesInfo.r specification>
+getRUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RsaOtherPrimesInfo -> m result
+getRUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getR (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-r RsaOtherPrimesInfo.r specification>
+getRUnchecked :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m result
+getRUnchecked self = liftDOM ((pFromJSVal <$> (js_getR (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"d\"] = $2; })"
+        js_setD :: RsaOtherPrimesInfo -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-d RsaOtherPrimesInfo.d specification>
+setD :: (MonadDOM m, ToJSString val) => RsaOtherPrimesInfo -> val -> m ()
+setD self val = liftDOM (void ((js_setD (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })"
+        js_getD :: RsaOtherPrimesInfo -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-d RsaOtherPrimesInfo.d specification>
+getD :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m (Maybe result)
+getD self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getD (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-d RsaOtherPrimesInfo.d specification>
+getDUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RsaOtherPrimesInfo -> m result
+getDUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getD (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-d RsaOtherPrimesInfo.d specification>
+getDUnchecked :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m result
+getDUnchecked self = liftDOM ((pFromJSVal <$> (js_getD (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"t\"] = $2; })"
+        js_setT :: RsaOtherPrimesInfo -> JSString -> IO ()
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-t RsaOtherPrimesInfo.t specification>
+setT :: (MonadDOM m, ToJSString val) => RsaOtherPrimesInfo -> val -> m ()
+setT self val = liftDOM (void ((js_setT (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"t\"]; })"
+        js_getT :: RsaOtherPrimesInfo -> IO JSVal
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-t RsaOtherPrimesInfo.t specification>
+getT :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m (Maybe result)
+getT self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getT (self))))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-t RsaOtherPrimesInfo.t specification>
+getTUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RsaOtherPrimesInfo -> m result
+getTUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getT (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-t RsaOtherPrimesInfo.t specification>
+getTUnchecked :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m result
+getTUnchecked self = liftDOM ((pFromJSVal <$> (js_getT (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs
+++ /dev/null
@@ -1,52 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLError
-       (pattern UNKNOWN_ERR, pattern DATABASE_ERR, pattern VERSION_ERR,
-        pattern TOO_LARGE_ERR, pattern QUOTA_ERR, pattern SYNTAX_ERR,
-        pattern CONSTRAINT_ERR, pattern TIMEOUT_ERR, js_getCode, getCode,
-        js_getMessage, getMessage, SQLError(..), gTypeSQLError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern UNKNOWN_ERR = 0
-pattern DATABASE_ERR = 1
-pattern VERSION_ERR = 2
-pattern TOO_LARGE_ERR = 3
-pattern QUOTA_ERR = 4
-pattern SYNTAX_ERR = 5
-pattern CONSTRAINT_ERR = 6
-pattern TIMEOUT_ERR = 7
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        SQLError -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.code Mozilla SQLError.code documentation> 
-getCode :: (MonadIO m) => SQLError -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        SQLError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.message Mozilla SQLError.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => SQLError -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs
+++ /dev/null
@@ -1,52 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLException
-       (pattern UNKNOWN_ERR, pattern DATABASE_ERR, pattern VERSION_ERR,
-        pattern TOO_LARGE_ERR, pattern QUOTA_ERR, pattern SYNTAX_ERR,
-        pattern CONSTRAINT_ERR, pattern TIMEOUT_ERR, js_getCode, getCode,
-        js_getMessage, getMessage, SQLException(..), gTypeSQLException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern UNKNOWN_ERR = 0
-pattern DATABASE_ERR = 1
-pattern VERSION_ERR = 2
-pattern TOO_LARGE_ERR = 3
-pattern QUOTA_ERR = 4
-pattern SYNTAX_ERR = 5
-pattern CONSTRAINT_ERR = 6
-pattern TIMEOUT_ERR = 7
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        SQLException -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLException.code Mozilla SQLException.code documentation> 
-getCode :: (MonadIO m) => SQLException -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        SQLException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLException.message Mozilla SQLException.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => SQLException -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs
+++ /dev/null
@@ -1,49 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLResultSet
-       (js_getRows, getRows, js_getInsertId, getInsertId,
-        js_getRowsAffected, getRowsAffected, SQLResultSet(..),
-        gTypeSQLResultSet)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
-        SQLResultSet -> IO SQLResultSetRowList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
-getRows :: (MonadIO m) => SQLResultSet -> m SQLResultSetRowList
-getRows self = liftIO (js_getRows self)
- 
-foreign import javascript safe "(($1) => { return $1[\"insertId\"]; })" js_getInsertId ::
-        SQLResultSet -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.insertId Mozilla SQLResultSet.insertId documentation> 
-getInsertId :: (MonadIO m) => SQLResultSet -> m Int64
-getInsertId self = liftIO (round <$> (js_getInsertId self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rowsAffected\"]; })"
-        js_getRowsAffected :: SQLResultSet -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rowsAffected Mozilla SQLResultSet.rowsAffected documentation> 
-getRowsAffected :: (MonadIO m) => SQLResultSet -> m Int
-getRowsAffected self = liftIO (js_getRowsAffected self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs
+++ /dev/null
@@ -1,47 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList
-       (js_item, item, item_, js_getLength, getLength,
-        SQLResultSetRowList(..), gTypeSQLResultSetRowList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })" js_item ::
-        SQLResultSetRowList -> Word -> IO (Record DOMString SQLValue)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
-item ::
-     (MonadIO m) =>
-       SQLResultSetRowList -> Word -> m (Record DOMString SQLValue)
-item self index = liftIO (js_item self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
-item_ :: (MonadIO m) => SQLResultSetRowList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        SQLResultSetRowList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.length Mozilla SQLResultSetRowList.length documentation> 
-getLength :: (MonadIO m) => SQLResultSetRowList -> m Word
-getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs
+++ /dev/null
@@ -1,72 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLStatementCallback
-       (newSQLStatementCallback, newSQLStatementCallbackSync,
-        newSQLStatementCallbackAsync, SQLStatementCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
-newSQLStatementCallback ::
-                        (MonadIO m) =>
-                          (SQLTransaction -> SQLResultSet -> IO ()) -> m SQLStatementCallback
-newSQLStatementCallback callback
-  = liftIO
-      (SQLStatementCallback <$>
-         syncCallback2 ThrowWouldBlock
-           (\ transaction resultSet ->
-              fromJSValUnchecked resultSet >>=
-                \ resultSet' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    resultSet'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
-newSQLStatementCallbackSync ::
-                            (MonadIO m) =>
-                              (SQLTransaction -> SQLResultSet -> IO ()) -> m SQLStatementCallback
-newSQLStatementCallbackSync callback
-  = liftIO
-      (SQLStatementCallback <$>
-         syncCallback2 ContinueAsync
-           (\ transaction resultSet ->
-              fromJSValUnchecked resultSet >>=
-                \ resultSet' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    resultSet'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
-newSQLStatementCallbackAsync ::
-                             (MonadIO m) =>
-                               (SQLTransaction -> SQLResultSet -> IO ()) -> m SQLStatementCallback
-newSQLStatementCallbackAsync callback
-  = liftIO
-      (SQLStatementCallback <$>
-         asyncCallback2
-           (\ transaction resultSet ->
-              fromJSValUnchecked resultSet >>=
-                \ resultSet' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    resultSet'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs
+++ /dev/null
@@ -1,75 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback
-       (newSQLStatementErrorCallback, newSQLStatementErrorCallbackSync,
-        newSQLStatementErrorCallbackAsync, SQLStatementErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
-newSQLStatementErrorCallback ::
-                             (MonadIO m) =>
-                               (SQLTransaction -> SQLError -> IO ()) ->
-                                 m SQLStatementErrorCallback
-newSQLStatementErrorCallback callback
-  = liftIO
-      (SQLStatementErrorCallback <$>
-         syncCallback2 ThrowWouldBlock
-           (\ transaction error ->
-              fromJSValUnchecked error >>=
-                \ error' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
-newSQLStatementErrorCallbackSync ::
-                                 (MonadIO m) =>
-                                   (SQLTransaction -> SQLError -> IO ()) ->
-                                     m SQLStatementErrorCallback
-newSQLStatementErrorCallbackSync callback
-  = liftIO
-      (SQLStatementErrorCallback <$>
-         syncCallback2 ContinueAsync
-           (\ transaction error ->
-              fromJSValUnchecked error >>=
-                \ error' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
-newSQLStatementErrorCallbackAsync ::
-                                  (MonadIO m) =>
-                                    (SQLTransaction -> SQLError -> IO ()) ->
-                                      m SQLStatementErrorCallback
-newSQLStatementErrorCallbackAsync callback
-  = liftIO
-      (SQLStatementErrorCallback <$>
-         asyncCallback2
-           (\ transaction error ->
-              fromJSValUnchecked error >>=
-                \ error' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLTransaction
-       (js_executeSql, executeSql, SQLTransaction(..),
-        gTypeSQLTransaction)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"executeSql\"]($2, $3, $4, $5); })"
-        js_executeSql ::
-        SQLTransaction ->
-          JSString ->
-            JSVal ->
-              Optional SQLStatementCallback ->
-                Optional SQLStatementErrorCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction.executeSql Mozilla SQLTransaction.executeSql documentation> 
-executeSql ::
-           (MonadIO m, ToJSString sqlStatement, IsSQLValue arguments) =>
-             SQLTransaction ->
-               sqlStatement ->
-                 [arguments] ->
-                   Maybe SQLStatementCallback ->
-                     Maybe SQLStatementErrorCallback -> m ()
-executeSql self sqlStatement arguments callback errorCallback
-  = liftIO
-      (toJSVal arguments >>=
-         \ arguments' ->
-           js_executeSql self (toJSString sqlStatement) arguments'
-         (maybeToOptional callback)
-         (maybeToOptional errorCallback))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs
+++ /dev/null
@@ -1,63 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback
-       (newSQLTransactionCallback, newSQLTransactionCallbackSync,
-        newSQLTransactionCallbackAsync, SQLTransactionCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
-newSQLTransactionCallback ::
-                          (MonadIO m) =>
-                            (SQLTransaction -> IO ()) -> m SQLTransactionCallback
-newSQLTransactionCallback callback
-  = liftIO
-      (SQLTransactionCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ transaction ->
-              fromJSValUnchecked transaction >>=
-                \ transaction' -> callback transaction'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
-newSQLTransactionCallbackSync ::
-                              (MonadIO m) =>
-                                (SQLTransaction -> IO ()) -> m SQLTransactionCallback
-newSQLTransactionCallbackSync callback
-  = liftIO
-      (SQLTransactionCallback <$>
-         syncCallback1 ContinueAsync
-           (\ transaction ->
-              fromJSValUnchecked transaction >>=
-                \ transaction' -> callback transaction'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
-newSQLTransactionCallbackAsync ::
-                               (MonadIO m) =>
-                                 (SQLTransaction -> IO ()) -> m SQLTransactionCallback
-newSQLTransactionCallbackAsync callback
-  = liftIO
-      (SQLTransactionCallback <$>
-         asyncCallback1
-           (\ transaction ->
-              fromJSValUnchecked transaction >>=
-                \ transaction' -> callback transaction'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback
-       (newSQLTransactionErrorCallback,
-        newSQLTransactionErrorCallbackSync,
-        newSQLTransactionErrorCallbackAsync, SQLTransactionErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
-newSQLTransactionErrorCallback ::
-                               (MonadIO m) => (SQLError -> IO ()) -> m SQLTransactionErrorCallback
-newSQLTransactionErrorCallback callback
-  = liftIO
-      (SQLTransactionErrorCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
-newSQLTransactionErrorCallbackSync ::
-                                   (MonadIO m) =>
-                                     (SQLError -> IO ()) -> m SQLTransactionErrorCallback
-newSQLTransactionErrorCallbackSync callback
-  = liftIO
-      (SQLTransactionErrorCallback <$>
-         syncCallback1 ContinueAsync
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
-newSQLTransactionErrorCallbackAsync ::
-                                    (MonadIO m) =>
-                                      (SQLError -> IO ()) -> m SQLTransactionErrorCallback
-newSQLTransactionErrorCallbackAsync callback
-  = liftIO
-      (SQLTransactionErrorCallback <$>
-         asyncCallback1
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
@@ -1,32 +1,77 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAElement
-       (js_getTarget, getTarget, SVGAElement(..), gTypeSVGAElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+       (js_getTarget, js_setDownload, js_getDownload, js_setPing, js_getPing, js_setRel, js_getRel, js_getRelList, js_setReferrerPolicy, js_getReferrerPolicy, getTarget, setDownload, getDownload, setPing, getPing, setRel, getRel, getRelList, setReferrerPolicy, getReferrerPolicy, SVGAElement(..), gTypeSVGAElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        SVGAElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
-getTarget :: (MonadIO m) => SVGAElement -> m SVGAnimatedString
-getTarget self = liftIO (js_getTarget self)
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: SVGAElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/target MDN SVGAElement.target documentation>
+getTarget :: (MonadDOM m) => SVGAElement -> m SVGAnimatedString
+getTarget self = liftDOM ((js_getTarget (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"download\"] = $2; })"
+        js_setDownload :: SVGAElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/download MDN SVGAElement.download documentation>
+setDownload :: (MonadDOM m, ToJSString val) => SVGAElement -> val -> m ()
+setDownload self val = liftDOM (void ((js_setDownload (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"download\"]; })"
+        js_getDownload :: SVGAElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/download MDN SVGAElement.download documentation>
+getDownload :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getDownload self = liftDOM ((fromJSString <$> (js_getDownload (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ping\"] = $2; })"
+        js_setPing :: SVGAElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/ping MDN SVGAElement.ping documentation>
+setPing :: (MonadDOM m, ToJSString val) => SVGAElement -> val -> m ()
+setPing self val = liftDOM (void ((js_setPing (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ping\"]; })"
+        js_getPing :: SVGAElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/ping MDN SVGAElement.ping documentation>
+getPing :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getPing self = liftDOM ((fromJSString <$> (js_getPing (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rel\"] = $2; })"
+        js_setRel :: SVGAElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/rel MDN SVGAElement.rel documentation>
+setRel :: (MonadDOM m, ToJSString val) => SVGAElement -> val -> m ()
+setRel self val = liftDOM (void ((js_setRel (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })"
+        js_getRel :: SVGAElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/rel MDN SVGAElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getRel self = liftDOM ((fromJSString <$> (js_getRel (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })"
+        js_getRelList :: SVGAElement -> IO DOMTokenList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/relList MDN SVGAElement.relList documentation>
+getRelList :: (MonadDOM m) => SVGAElement -> m DOMTokenList
+getRelList self = liftDOM ((js_getRelList (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"referrerPolicy\"] = $2; })"
+        js_setReferrerPolicy :: SVGAElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/referrerPolicy MDN SVGAElement.referrerPolicy documentation>
+setReferrerPolicy :: (MonadDOM m, ToJSString val) => SVGAElement -> val -> m ()
+setReferrerPolicy self val = liftDOM (void ((js_setReferrerPolicy (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: SVGAElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/referrerPolicy MDN SVGAElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getReferrerPolicy self = liftDOM ((fromJSString <$> (js_getReferrerPolicy (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement
-       (js_setGlyphRef, setGlyphRef, js_getGlyphRef, getGlyphRef,
-        js_setFormat, setFormat, js_getFormat, getFormat,
-        SVGAltGlyphElement(..), gTypeSVGAltGlyphElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { $1[\"glyphRef\"] = $2; })"
-        js_setGlyphRef :: SVGAltGlyphElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
-setGlyphRef ::
-            (MonadIO m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
-setGlyphRef self val
-  = liftIO (js_setGlyphRef self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"glyphRef\"]; })" js_getGlyphRef
-        :: SVGAltGlyphElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
-getGlyphRef ::
-            (MonadIO m, FromJSString result) => SVGAltGlyphElement -> m result
-getGlyphRef self = liftIO (fromJSString <$> (js_getGlyphRef self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })" js_setFormat
-        :: SVGAltGlyphElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
-setFormat ::
-          (MonadIO m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
-setFormat self val = liftIO (js_setFormat self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })" js_getFormat ::
-        SVGAltGlyphElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
-getFormat ::
-          (MonadIO m, FromJSString result) => SVGAltGlyphElement -> m result
-getFormat self = liftIO (fromJSString <$> (js_getFormat self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
@@ -1,117 +1,81 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAngle
-       (js_newValueSpecifiedUnits, newValueSpecifiedUnits,
-        js_convertToSpecifiedUnits, convertToSpecifiedUnits,
-        pattern SVG_ANGLETYPE_UNKNOWN, pattern SVG_ANGLETYPE_UNSPECIFIED,
-        pattern SVG_ANGLETYPE_DEG, pattern SVG_ANGLETYPE_RAD,
-        pattern SVG_ANGLETYPE_GRAD, js_getUnitType, getUnitType,
-        js_setValue, setValue, js_getValue, getValue,
-        js_setValueInSpecifiedUnits, setValueInSpecifiedUnits,
-        js_getValueInSpecifiedUnits, getValueInSpecifiedUnits,
-        js_setValueAsString, setValueAsString, js_getValueAsString,
-        getValueAsString, SVGAngle(..), gTypeSVGAngle)
+       (js_convertToSpecifiedUnits, js_newValueSpecifiedUnits, js_getUnitType, js_setValue, js_getValue, js_setValueInSpecifiedUnits, js_getValueInSpecifiedUnits, js_setValueAsString, js_getValueAsString, convertToSpecifiedUnits, newValueSpecifiedUnits, getUnitType, setValue, getValue, setValueInSpecifiedUnits, getValueInSpecifiedUnits, setValueAsString, getValueAsString, pattern SVG_ANGLETYPE_UNKNOWN, pattern SVG_ANGLETYPE_UNSPECIFIED, pattern SVG_ANGLETYPE_DEG, pattern SVG_ANGLETYPE_RAD, pattern SVG_ANGLETYPE_GRAD, SVGAngle(..), gTypeSVGAngle)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"newValueSpecifiedUnits\"]($2,\n$3); })" js_newValueSpecifiedUnits
-        :: SVGAngle -> Word -> Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.newValueSpecifiedUnits Mozilla SVGAngle.newValueSpecifiedUnits documentation> 
-newValueSpecifiedUnits ::
-                       (MonadIO m) => SVGAngle -> Word -> Float -> m ()
-newValueSpecifiedUnits self unitType valueInSpecifiedUnits
-  = liftIO
-      (js_newValueSpecifiedUnits self unitType valueInSpecifiedUnits)
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"convertToSpecifiedUnits\"]($2); })" js_convertToSpecifiedUnits ::
-        SVGAngle -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"convertToSpecifiedUnits\"]($2); })"
+        js_convertToSpecifiedUnits :: SVGAngle -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/convertToSpecifiedUnits MDN SVGAngle.convertToSpecifiedUnits documentation>
+convertToSpecifiedUnits :: (MonadDOM m) => SVGAngle -> Word -> m ()
+convertToSpecifiedUnits self unitType = liftDOM (void ((js_convertToSpecifiedUnits (self) (unitType))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.convertToSpecifiedUnits Mozilla SVGAngle.convertToSpecifiedUnits documentation> 
-convertToSpecifiedUnits :: (MonadIO m) => SVGAngle -> Word -> m ()
-convertToSpecifiedUnits self unitType
-  = liftIO (js_convertToSpecifiedUnits self unitType)
-pattern SVG_ANGLETYPE_UNKNOWN = 0
-pattern SVG_ANGLETYPE_UNSPECIFIED = 1
-pattern SVG_ANGLETYPE_DEG = 2
-pattern SVG_ANGLETYPE_RAD = 3
-pattern SVG_ANGLETYPE_GRAD = 4
- 
-foreign import javascript unsafe "(($1) => { return $1[\"unitType\"]; })" js_getUnitType
-        :: SVGAngle -> IO Word
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"newValueSpecifiedUnits\"]($2, $3); })"
+        js_newValueSpecifiedUnits :: SVGAngle -> Word -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/newValueSpecifiedUnits MDN SVGAngle.newValueSpecifiedUnits documentation>
+newValueSpecifiedUnits :: (MonadDOM m) => SVGAngle -> Word -> Float -> m ()
+newValueSpecifiedUnits self unitType valueInSpecifiedUnits = liftDOM (void ((js_newValueSpecifiedUnits (self) (unitType) (valueInSpecifiedUnits))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.unitType Mozilla SVGAngle.unitType documentation> 
-getUnitType :: (MonadIO m) => SVGAngle -> m Word
-getUnitType self = liftIO (js_getUnitType self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
-        SVGAngle -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"unitType\"]; })"
+        js_getUnitType :: SVGAngle -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/unitType MDN SVGAngle.unitType documentation>
+getUnitType :: (MonadDOM m) => SVGAngle -> m Word
+getUnitType self = liftDOM ((js_getUnitType (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
-setValue :: (MonadIO m) => SVGAngle -> Float -> m ()
-setValue self val = liftIO (js_setValue self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        SVGAngle -> IO Float
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: SVGAngle -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/value MDN SVGAngle.value documentation>
+setValue :: (MonadDOM m) => SVGAngle -> Float -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
-getValue :: (MonadIO m) => SVGAngle -> m Float
-getValue self = liftIO (js_getValue self)
- 
-foreign import javascript safe
-        "(($1, $2) => { $1[\"valueInSpecifiedUnits\"] = $2; })" js_setValueInSpecifiedUnits
-        :: SVGAngle -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: SVGAngle -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/value MDN SVGAngle.value documentation>
+getValue :: (MonadDOM m) => SVGAngle -> m Float
+getValue self = liftDOM ((js_getValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
-setValueInSpecifiedUnits ::
-                         (MonadIO m) => SVGAngle -> Float -> m ()
-setValueInSpecifiedUnits self val
-  = liftIO (js_setValueInSpecifiedUnits self val)
- 
+foreign import javascript safe "(($1, $2) => { $1[\"valueInSpecifiedUnits\"] = $2; })"
+        js_setValueInSpecifiedUnits :: SVGAngle -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/valueInSpecifiedUnits MDN SVGAngle.valueInSpecifiedUnits documentation>
+setValueInSpecifiedUnits :: (MonadDOM m) => SVGAngle -> Float -> m ()
+setValueInSpecifiedUnits self val = liftDOM (void ((js_setValueInSpecifiedUnits (self) (val))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"valueInSpecifiedUnits\"]; })"
         js_getValueInSpecifiedUnits :: SVGAngle -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/valueInSpecifiedUnits MDN SVGAngle.valueInSpecifiedUnits documentation>
+getValueInSpecifiedUnits :: (MonadDOM m) => SVGAngle -> m Float
+getValueInSpecifiedUnits self = liftDOM ((js_getValueInSpecifiedUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
-getValueInSpecifiedUnits :: (MonadIO m) => SVGAngle -> m Float
-getValueInSpecifiedUnits self
-  = liftIO (js_getValueInSpecifiedUnits self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"valueAsString\"] = $2; })"
         js_setValueAsString :: SVGAngle -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/valueAsString MDN SVGAngle.valueAsString documentation>
+setValueAsString :: (MonadDOM m, ToJSString val) => SVGAngle -> val -> m ()
+setValueAsString self val = liftDOM (void ((js_setValueAsString (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
-setValueAsString ::
-                 (MonadIO m, ToJSString val) => SVGAngle -> val -> m ()
-setValueAsString self val
-  = liftIO (js_setValueAsString self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"valueAsString\"]; })"
         js_getValueAsString :: SVGAngle -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/valueAsString MDN SVGAngle.valueAsString documentation>
+getValueAsString :: (MonadDOM m, FromJSString result) => SVGAngle -> m result
+getValueAsString self = liftDOM ((fromJSString <$> (js_getValueAsString (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
-getValueAsString ::
-                 (MonadIO m, FromJSString result) => SVGAngle -> m result
-getValueAsString self
-  = liftIO (fromJSString <$> (js_getValueAsString self))
+pattern SVG_ANGLETYPE_UNKNOWN = 0
+
+pattern SVG_ANGLETYPE_UNSPECIFIED = 1
+
+pattern SVG_ANGLETYPE_DEG = 2
+
+pattern SVG_ANGLETYPE_RAD = 3
+
+pattern SVG_ANGLETYPE_GRAD = 4
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGAnimateElement
+       (SVGAnimateElement(..), gTypeSVGAnimateElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateMotionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateMotionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateMotionElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGAnimateMotionElement
+       (SVGAnimateMotionElement(..), gTypeSVGAnimateMotionElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateTransformElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateTransformElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimateTransformElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGAnimateTransformElement
+       (SVGAnimateTransformElement(..), gTypeSVGAnimateTransformElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
@@ -1,41 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
-       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
-        SVGAnimatedAngle(..), gTypeSVGAnimatedAngle)
+       (js_getBaseVal, js_getAnimVal, getBaseVal, getAnimVal, SVGAnimatedAngle(..), gTypeSVGAnimatedAngle)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedAngle -> IO SVGAngle
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
-getBaseVal :: (MonadIO m) => SVGAnimatedAngle -> m SVGAngle
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedAngle -> IO SVGAngle
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedAngle -> IO SVGAngle
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedAngle/baseVal MDN SVGAnimatedAngle.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedAngle -> m SVGAngle
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.animVal Mozilla SVGAnimatedAngle.animVal documentation> 
-getAnimVal :: (MonadIO m) => SVGAnimatedAngle -> m SVGAngle
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedAngle -> IO SVGAngle
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedAngle/animVal MDN SVGAnimatedAngle.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedAngle -> m SVGAngle
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
@@ -1,49 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
-       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
-        js_getAnimVal, getAnimVal, SVGAnimatedBoolean(..),
-        gTypeSVGAnimatedBoolean)
+       (js_setBaseVal, js_getBaseVal, js_getAnimVal, setBaseVal, getBaseVal, getAnimVal, SVGAnimatedBoolean(..), gTypeSVGAnimatedBoolean)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
         js_setBaseVal :: SVGAnimatedBoolean -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedBoolean/baseVal MDN SVGAnimatedBoolean.baseVal documentation>
+setBaseVal :: (MonadDOM m) => SVGAnimatedBoolean -> Bool -> m ()
+setBaseVal self val = liftDOM (void ((js_setBaseVal (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
-setBaseVal :: (MonadIO m) => SVGAnimatedBoolean -> Bool -> m ()
-setBaseVal self val = liftIO (js_setBaseVal self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"baseVal\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
         js_getBaseVal :: SVGAnimatedBoolean -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedBoolean/baseVal MDN SVGAnimatedBoolean.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedBoolean -> m Bool
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
-getBaseVal :: (MonadIO m) => SVGAnimatedBoolean -> m Bool
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"animVal\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
         js_getAnimVal :: SVGAnimatedBoolean -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.animVal Mozilla SVGAnimatedBoolean.animVal documentation> 
-getAnimVal :: (MonadIO m) => SVGAnimatedBoolean -> m Bool
-getAnimVal self = liftIO (js_getAnimVal self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedBoolean/animVal MDN SVGAnimatedBoolean.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedBoolean -> m Bool
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
@@ -1,49 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
-       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
-        js_getAnimVal, getAnimVal, SVGAnimatedEnumeration(..),
-        gTypeSVGAnimatedEnumeration)
+       (js_setBaseVal, js_getBaseVal, js_getAnimVal, setBaseVal, getBaseVal, getAnimVal, SVGAnimatedEnumeration(..), gTypeSVGAnimatedEnumeration)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
         js_setBaseVal :: SVGAnimatedEnumeration -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
-setBaseVal :: (MonadIO m) => SVGAnimatedEnumeration -> Word -> m ()
-setBaseVal self val = liftIO (js_setBaseVal self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedEnumeration -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedEnumeration/baseVal MDN SVGAnimatedEnumeration.baseVal documentation>
+setBaseVal :: (MonadDOM m) => SVGAnimatedEnumeration -> Word -> m ()
+setBaseVal self val = liftDOM (void ((js_setBaseVal (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
-getBaseVal :: (MonadIO m) => SVGAnimatedEnumeration -> m Word
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedEnumeration -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedEnumeration -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedEnumeration/baseVal MDN SVGAnimatedEnumeration.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedEnumeration -> m Word
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.animVal Mozilla SVGAnimatedEnumeration.animVal documentation> 
-getAnimVal :: (MonadIO m) => SVGAnimatedEnumeration -> m Word
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedEnumeration -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedEnumeration/animVal MDN SVGAnimatedEnumeration.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedEnumeration -> m Word
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
@@ -1,49 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
-       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
-        js_getAnimVal, getAnimVal, SVGAnimatedInteger(..),
-        gTypeSVGAnimatedInteger)
+       (js_setBaseVal, js_getBaseVal, js_getAnimVal, setBaseVal, getBaseVal, getAnimVal, SVGAnimatedInteger(..), gTypeSVGAnimatedInteger)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
         js_setBaseVal :: SVGAnimatedInteger -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
-setBaseVal :: (MonadIO m) => SVGAnimatedInteger -> Int -> m ()
-setBaseVal self val = liftIO (js_setBaseVal self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedInteger -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedInteger/baseVal MDN SVGAnimatedInteger.baseVal documentation>
+setBaseVal :: (MonadDOM m) => SVGAnimatedInteger -> Int -> m ()
+setBaseVal self val = liftDOM (void ((js_setBaseVal (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
-getBaseVal :: (MonadIO m) => SVGAnimatedInteger -> m Int
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedInteger -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedInteger -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedInteger/baseVal MDN SVGAnimatedInteger.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedInteger -> m Int
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.animVal Mozilla SVGAnimatedInteger.animVal documentation> 
-getAnimVal :: (MonadIO m) => SVGAnimatedInteger -> m Int
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedInteger -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedInteger/animVal MDN SVGAnimatedInteger.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedInteger -> m Int
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
@@ -1,41 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
-       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
-        SVGAnimatedLength(..), gTypeSVGAnimatedLength)
+       (js_getBaseVal, js_getAnimVal, getBaseVal, getAnimVal, SVGAnimatedLength(..), gTypeSVGAnimatedLength)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedLength -> IO SVGLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
-getBaseVal :: (MonadIO m) => SVGAnimatedLength -> m SVGLength
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedLength -> IO SVGLength
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedLength -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLength/baseVal MDN SVGAnimatedLength.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedLength -> m SVGLength
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
-getAnimVal :: (MonadIO m) => SVGAnimatedLength -> m SVGLength
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedLength -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLength/animVal MDN SVGAnimatedLength.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedLength -> m SVGLength
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
-       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
-        SVGAnimatedLengthList(..), gTypeSVGAnimatedLengthList)
+       (js_getBaseVal, js_getAnimVal, getBaseVal, getAnimVal, SVGAnimatedLengthList(..), gTypeSVGAnimatedLengthList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedLengthList -> IO SVGLengthList
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
-getBaseVal ::
-           (MonadIO m) => SVGAnimatedLengthList -> m SVGLengthList
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedLengthList -> IO SVGLengthList
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedLengthList -> IO SVGLengthList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLengthList/baseVal MDN SVGAnimatedLengthList.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedLengthList -> m SVGLengthList
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.animVal Mozilla SVGAnimatedLengthList.animVal documentation> 
-getAnimVal ::
-           (MonadIO m) => SVGAnimatedLengthList -> m SVGLengthList
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedLengthList -> IO SVGLengthList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLengthList/animVal MDN SVGAnimatedLengthList.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedLengthList -> m SVGLengthList
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
@@ -1,49 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
-       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
-        js_getAnimVal, getAnimVal, SVGAnimatedNumber(..),
-        gTypeSVGAnimatedNumber)
+       (js_setBaseVal, js_getBaseVal, js_getAnimVal, setBaseVal, getBaseVal, getAnimVal, SVGAnimatedNumber(..), gTypeSVGAnimatedNumber)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
         js_setBaseVal :: SVGAnimatedNumber -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
-setBaseVal :: (MonadIO m) => SVGAnimatedNumber -> Float -> m ()
-setBaseVal self val = liftIO (js_setBaseVal self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedNumber -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumber/baseVal MDN SVGAnimatedNumber.baseVal documentation>
+setBaseVal :: (MonadDOM m) => SVGAnimatedNumber -> Float -> m ()
+setBaseVal self val = liftDOM (void ((js_setBaseVal (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
-getBaseVal :: (MonadIO m) => SVGAnimatedNumber -> m Float
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedNumber -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedNumber -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumber/baseVal MDN SVGAnimatedNumber.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedNumber -> m Float
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.animVal Mozilla SVGAnimatedNumber.animVal documentation> 
-getAnimVal :: (MonadIO m) => SVGAnimatedNumber -> m Float
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedNumber -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumber/animVal MDN SVGAnimatedNumber.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedNumber -> m Float
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
-       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
-        SVGAnimatedNumberList(..), gTypeSVGAnimatedNumberList)
+       (js_getBaseVal, js_getAnimVal, getBaseVal, getAnimVal, SVGAnimatedNumberList(..), gTypeSVGAnimatedNumberList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedNumberList -> IO SVGNumberList
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
-getBaseVal ::
-           (MonadIO m) => SVGAnimatedNumberList -> m SVGNumberList
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedNumberList -> IO SVGNumberList
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedNumberList -> IO SVGNumberList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumberList/baseVal MDN SVGAnimatedNumberList.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedNumberList -> m SVGNumberList
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.animVal Mozilla SVGAnimatedNumberList.animVal documentation> 
-getAnimVal ::
-           (MonadIO m) => SVGAnimatedNumberList -> m SVGNumberList
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedNumberList -> IO SVGNumberList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumberList/animVal MDN SVGAnimatedNumberList.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedNumberList -> m SVGNumberList
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPoints.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPoints.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPoints.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedPoints
+       (js_getPoints, js_getAnimatedPoints, getPoints, getAnimatedPoints, SVGAnimatedPoints(..), gTypeSVGAnimatedPoints, IsSVGAnimatedPoints, toSVGAnimatedPoints)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"points\"]; })"
+        js_getPoints :: SVGAnimatedPoints -> IO SVGPointList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPolygonElement/points MDN SVGAnimatedPoints.points documentation>
+getPoints :: (MonadDOM m, IsSVGAnimatedPoints self) => self -> m SVGPointList
+getPoints self = liftDOM ((js_getPoints ((Types.toSVGAnimatedPoints self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"animatedPoints\"]; })"
+        js_getAnimatedPoints :: SVGAnimatedPoints -> IO SVGPointList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPolygonElement/animatedPoints MDN SVGAnimatedPoints.animatedPoints documentation>
+getAnimatedPoints :: (MonadDOM m, IsSVGAnimatedPoints self) => self -> m SVGPointList
+getAnimatedPoints self = liftDOM ((js_getAnimatedPoints ((Types.toSVGAnimatedPoints self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
@@ -1,46 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
-       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
-        SVGAnimatedPreserveAspectRatio(..),
-        gTypeSVGAnimatedPreserveAspectRatio)
+       (js_getBaseVal, js_getAnimVal, getBaseVal, getAnimVal, SVGAnimatedPreserveAspectRatio(..), gTypeSVGAnimatedPreserveAspectRatio)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedPreserveAspectRatio -> IO SVGPreserveAspectRatio
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
-getBaseVal ::
-           (MonadIO m) =>
-             SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedPreserveAspectRatio -> IO SVGPreserveAspectRatio
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedPreserveAspectRatio -> IO SVGPreserveAspectRatio
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedPreserveAspectRatio/baseVal MDN SVGAnimatedPreserveAspectRatio.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.animVal Mozilla SVGAnimatedPreserveAspectRatio.animVal documentation> 
-getAnimVal ::
-           (MonadIO m) =>
-             SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedPreserveAspectRatio -> IO SVGPreserveAspectRatio
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedPreserveAspectRatio/animVal MDN SVGAnimatedPreserveAspectRatio.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
@@ -1,41 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
-       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
-        SVGAnimatedRect(..), gTypeSVGAnimatedRect)
+       (js_getBaseVal, js_getAnimVal, getBaseVal, getAnimVal, SVGAnimatedRect(..), gTypeSVGAnimatedRect)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedRect -> IO SVGRect
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
-getBaseVal :: (MonadIO m) => SVGAnimatedRect -> m SVGRect
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedRect -> IO SVGRect
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedRect -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedRect/baseVal MDN SVGAnimatedRect.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedRect -> m DOMRect
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
-getAnimVal :: (MonadIO m) => SVGAnimatedRect -> m SVGRect
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedRect -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedRect/animVal MDN SVGAnimatedRect.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedRect -> m DOMRect
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
@@ -1,52 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
-       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
-        js_getAnimVal, getAnimVal, SVGAnimatedString(..),
-        gTypeSVGAnimatedString)
+       (js_setBaseVal, js_getBaseVal, js_getAnimVal, setBaseVal, getBaseVal, getAnimVal, SVGAnimatedString(..), gTypeSVGAnimatedString)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
-        js_setBaseVal :: SVGAnimatedString -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
-setBaseVal ::
-           (MonadIO m, ToJSString val) => SVGAnimatedString -> val -> m ()
-setBaseVal self val = liftIO (js_setBaseVal self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedString -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
+        js_setBaseVal :: SVGAnimatedString -> TrustedScriptURLOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedString/baseVal MDN SVGAnimatedString.baseVal documentation>
+setBaseVal :: (MonadDOM m, IsTrustedScriptURLOrString val) => SVGAnimatedString -> val -> m ()
+setBaseVal self val = liftDOM (void ((js_setBaseVal (self) (Types.toTrustedScriptURLOrString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
-getBaseVal ::
-           (MonadIO m, FromJSString result) => SVGAnimatedString -> m result
-getBaseVal self = liftIO (fromJSString <$> (js_getBaseVal self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedString -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedString -> IO TrustedScriptURLOrString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedString/baseVal MDN SVGAnimatedString.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedString -> m TrustedScriptURLOrString
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.animVal Mozilla SVGAnimatedString.animVal documentation> 
-getAnimVal ::
-           (MonadIO m, FromJSString result) => SVGAnimatedString -> m result
-getAnimVal self = liftIO (fromJSString <$> (js_getAnimVal self))
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedString/animVal MDN SVGAnimatedString.animVal documentation>
+getAnimVal :: (MonadDOM m, FromJSString result) => SVGAnimatedString -> m result
+getAnimVal self = liftDOM ((fromJSString <$> (js_getAnimVal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
-       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
-        SVGAnimatedTransformList(..), gTypeSVGAnimatedTransformList)
+       (js_getBaseVal, js_getAnimVal, getBaseVal, getAnimVal, SVGAnimatedTransformList(..), gTypeSVGAnimatedTransformList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
-        SVGAnimatedTransformList -> IO SVGTransformList
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
-getBaseVal ::
-           (MonadIO m) => SVGAnimatedTransformList -> m SVGTransformList
-getBaseVal self = liftIO (js_getBaseVal self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
-        SVGAnimatedTransformList -> IO SVGTransformList
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })"
+        js_getBaseVal :: SVGAnimatedTransformList -> IO SVGTransformList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedTransformList/baseVal MDN SVGAnimatedTransformList.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedTransformList -> m SVGTransformList
+getBaseVal self = liftDOM ((js_getBaseVal (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.animVal Mozilla SVGAnimatedTransformList.animVal documentation> 
-getAnimVal ::
-           (MonadIO m) => SVGAnimatedTransformList -> m SVGTransformList
-getAnimVal self = liftIO (js_getAnimVal self)
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })"
+        js_getAnimVal :: SVGAnimatedTransformList -> IO SVGTransformList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedTransformList/animVal MDN SVGAnimatedTransformList.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedTransformList -> m SVGTransformList
+getAnimVal self = liftDOM ((js_getAnimVal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
@@ -1,129 +1,85 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
-       (js_getStartTime, getStartTime, getStartTime_, js_getCurrentTime,
-        getCurrentTime, getCurrentTime_, js_getSimpleDuration,
-        getSimpleDuration, getSimpleDuration_, js_beginElement,
-        beginElement, js_beginElementAt, beginElementAt, js_endElement,
-        endElement, js_endElementAt, endElementAt, js_getTargetElement,
-        getTargetElement, SVGAnimationElement(..),
-        gTypeSVGAnimationElement, IsSVGAnimationElement,
-        toSVGAnimationElement)
+       (js_beginElement, js_beginElementAt, js_endElement, js_endElementAt, js_getCurrentTime, js_getSimpleDuration, js_getStartTime, js_getTargetElement, beginElement, beginElementAt, endElement, endElementAt, getCurrentTime, getCurrentTime_, getSimpleDuration, getSimpleDuration_, getStartTime, getStartTime_, getTargetElement, getTargetElementUnsafe, getTargetElementUnchecked, SVGAnimationElement(..), gTypeSVGAnimationElement, IsSVGAnimationElement, toSVGAnimationElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getStartTime\"](); })"
-        js_getStartTime :: SVGAnimationElement -> IO Float
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
-getStartTime ::
-             (MonadIO m, IsSVGAnimationElement self) => self -> m Float
-getStartTime self
-  = liftIO (js_getStartTime (toSVGAnimationElement self))
+foreign import javascript safe "(($1) => { return $1[\"beginElement\"](); })"
+        js_beginElement :: SVGAnimationElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/beginElement MDN SVGAnimationElement.beginElement documentation>
+beginElement :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+beginElement self = liftDOM (void ((js_beginElement ((Types.toSVGAnimationElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
-getStartTime_ ::
-              (MonadIO m, IsSVGAnimationElement self) => self -> m ()
-getStartTime_ self
-  = liftIO (void (js_getStartTime (toSVGAnimationElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getCurrentTime\"](); })"
-        js_getCurrentTime :: SVGAnimationElement -> IO Float
+foreign import javascript safe "(($1, $2) => { return $1[\"beginElementAt\"]($2); })"
+        js_beginElementAt :: SVGAnimationElement -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/beginElementAt MDN SVGAnimationElement.beginElementAt documentation>
+beginElementAt :: (MonadDOM m, IsSVGAnimationElement self) => self -> Float -> m ()
+beginElementAt self offset = liftDOM (void ((js_beginElementAt ((Types.toSVGAnimationElement self)) (offset))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getCurrentTime Mozilla SVGAnimationElement.getCurrentTime documentation> 
-getCurrentTime ::
-               (MonadIO m, IsSVGAnimationElement self) => self -> m Float
-getCurrentTime self
-  = liftIO (js_getCurrentTime (toSVGAnimationElement self))
+foreign import javascript safe "(($1) => { return $1[\"endElement\"](); })"
+        js_endElement :: SVGAnimationElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/endElement MDN SVGAnimationElement.endElement documentation>
+endElement :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+endElement self = liftDOM (void ((js_endElement ((Types.toSVGAnimationElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getCurrentTime Mozilla SVGAnimationElement.getCurrentTime documentation> 
-getCurrentTime_ ::
-                (MonadIO m, IsSVGAnimationElement self) => self -> m ()
-getCurrentTime_ self
-  = liftIO (void (js_getCurrentTime (toSVGAnimationElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getSimpleDuration\"](); })"
-        js_getSimpleDuration :: SVGAnimationElement -> IO Float
+foreign import javascript safe "(($1, $2) => { return $1[\"endElementAt\"]($2); })"
+        js_endElementAt :: SVGAnimationElement -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/endElementAt MDN SVGAnimationElement.endElementAt documentation>
+endElementAt :: (MonadDOM m, IsSVGAnimationElement self) => self -> Float -> m ()
+endElementAt self offset = liftDOM (void ((js_endElementAt ((Types.toSVGAnimationElement self)) (offset))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getSimpleDuration Mozilla SVGAnimationElement.getSimpleDuration documentation> 
-getSimpleDuration ::
-                  (MonadIO m, IsSVGAnimationElement self) => self -> m Float
-getSimpleDuration self
-  = liftIO (js_getSimpleDuration (toSVGAnimationElement self))
+foreign import javascript safe "(($1) => { return $1[\"getCurrentTime\"](); })"
+        js_getCurrentTime :: SVGAnimationElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getCurrentTime MDN SVGAnimationElement.getCurrentTime documentation>
+getCurrentTime :: (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getCurrentTime self = liftDOM ((js_getCurrentTime ((Types.toSVGAnimationElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getSimpleDuration Mozilla SVGAnimationElement.getSimpleDuration documentation> 
-getSimpleDuration_ ::
-                   (MonadIO m, IsSVGAnimationElement self) => self -> m ()
-getSimpleDuration_ self
-  = liftIO (void (js_getSimpleDuration (toSVGAnimationElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"beginElement\"](); })"
-        js_beginElement :: SVGAnimationElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getCurrentTime MDN SVGAnimationElement.getCurrentTime documentation>
+getCurrentTime_ :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+getCurrentTime_ self = liftDOM (void ((js_getCurrentTime ((Types.toSVGAnimationElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElement Mozilla SVGAnimationElement.beginElement documentation> 
-beginElement ::
-             (MonadIO m, IsSVGAnimationElement self) => self -> m ()
-beginElement self
-  = liftIO (js_beginElement (toSVGAnimationElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"beginElementAt\"]($2); })"
-        js_beginElementAt :: SVGAnimationElement -> Optional Float -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"getSimpleDuration\"](); })"
+        js_getSimpleDuration :: SVGAnimationElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getSimpleDuration MDN SVGAnimationElement.getSimpleDuration documentation>
+getSimpleDuration :: (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getSimpleDuration self = liftDOM ((js_getSimpleDuration ((Types.toSVGAnimationElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElementAt Mozilla SVGAnimationElement.beginElementAt documentation> 
-beginElementAt ::
-               (MonadIO m, IsSVGAnimationElement self) =>
-                 self -> Maybe Float -> m ()
-beginElementAt self offset
-  = liftIO
-      (js_beginElementAt (toSVGAnimationElement self)
-         (maybeToOptional offset))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endElement\"](); })"
-        js_endElement :: SVGAnimationElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getSimpleDuration MDN SVGAnimationElement.getSimpleDuration documentation>
+getSimpleDuration_ :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+getSimpleDuration_ self = liftDOM (void ((js_getSimpleDuration ((Types.toSVGAnimationElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElement Mozilla SVGAnimationElement.endElement documentation> 
-endElement ::
-           (MonadIO m, IsSVGAnimationElement self) => self -> m ()
-endElement self
-  = liftIO (js_endElement (toSVGAnimationElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"endElementAt\"]($2); })"
-        js_endElementAt :: SVGAnimationElement -> Optional Float -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"getStartTime\"](); })"
+        js_getStartTime :: SVGAnimationElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getStartTime MDN SVGAnimationElement.getStartTime documentation>
+getStartTime :: (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getStartTime self = liftDOM ((js_getStartTime ((Types.toSVGAnimationElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElementAt Mozilla SVGAnimationElement.endElementAt documentation> 
-endElementAt ::
-             (MonadIO m, IsSVGAnimationElement self) =>
-               self -> Maybe Float -> m ()
-endElementAt self offset
-  = liftIO
-      (js_endElementAt (toSVGAnimationElement self)
-         (maybeToOptional offset))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getStartTime MDN SVGAnimationElement.getStartTime documentation>
+getStartTime_ :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+getStartTime_ self = liftDOM (void ((js_getStartTime ((Types.toSVGAnimationElement self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"targetElement\"]; })"
-        js_getTargetElement :: SVGAnimationElement -> IO SVGElement
+        js_getTargetElement :: SVGAnimationElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/targetElement MDN SVGAnimationElement.targetElement documentation>
+getTargetElement :: (MonadDOM m, IsSVGAnimationElement self) => self -> m (Maybe SVGElement)
+getTargetElement self = liftDOM (((js_getTargetElement ((Types.toSVGAnimationElement self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.targetElement Mozilla SVGAnimationElement.targetElement documentation> 
-getTargetElement ::
-                 (MonadIO m, IsSVGAnimationElement self) => self -> m SVGElement
-getTargetElement self
-  = liftIO (js_getTargetElement (toSVGAnimationElement self))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/targetElement MDN SVGAnimationElement.targetElement documentation>
+getTargetElementUnsafe :: (MonadDOM m, IsSVGAnimationElement self, HasCallStack) => self -> m SVGElement
+getTargetElementUnsafe self = liftDOM ((((js_getTargetElement ((Types.toSVGAnimationElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/targetElement MDN SVGAnimationElement.targetElement documentation>
+getTargetElementUnchecked :: (MonadDOM m, IsSVGAnimationElement self) => self -> m SVGElement
+getTargetElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getTargetElement ((Types.toSVGAnimationElement self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGBoundingBoxOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGBoundingBoxOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGBoundingBoxOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGBoundingBoxOptions
+       (js_newSVGBoundingBoxOptions, js_setFill, js_getFill, js_setStroke, js_getStroke, js_setMarkers, js_getMarkers, js_setClipped, js_getClipped, newSVGBoundingBoxOptions, setFill, getFill, getFillUnsafe, getFillUnchecked, setStroke, getStroke, getStrokeUnsafe, getStrokeUnchecked, setMarkers, getMarkers, getMarkersUnsafe, getMarkersUnchecked, setClipped, getClipped, getClippedUnsafe, getClippedUnchecked, SVGBoundingBoxOptions(..), gTypeSVGBoundingBoxOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSVGBoundingBoxOptions :: IO SVGBoundingBoxOptions
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dictdef-svgboundingboxoptions SVGBoundingBoxOptions specification>
+newSVGBoundingBoxOptions :: (MonadDOM m) => m SVGBoundingBoxOptions
+newSVGBoundingBoxOptions = liftDOM ((js_newSVGBoundingBoxOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fill\"] = $2; })"
+        js_setFill :: SVGBoundingBoxOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-fill SVGBoundingBoxOptions.fill specification>
+setFill :: (MonadDOM m) => SVGBoundingBoxOptions -> Bool -> m ()
+setFill self val = liftDOM (void ((js_setFill (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fill\"]; })"
+        js_getFill :: SVGBoundingBoxOptions -> IO JSVal
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-fill SVGBoundingBoxOptions.fill specification>
+getFill :: (MonadDOM m) => SVGBoundingBoxOptions -> m (Maybe Bool)
+getFill self = liftDOM (((js_getFill (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-fill SVGBoundingBoxOptions.fill specification>
+getFillUnsafe :: (MonadDOM m, HasCallStack) => SVGBoundingBoxOptions -> m Bool
+getFillUnsafe self = liftDOM ((((js_getFill (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-fill SVGBoundingBoxOptions.fill specification>
+getFillUnchecked :: (MonadDOM m) => SVGBoundingBoxOptions -> m Bool
+getFillUnchecked self = liftDOM ((pFromJSVal <$> (js_getFill (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stroke\"] = $2; })"
+        js_setStroke :: SVGBoundingBoxOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-stroke SVGBoundingBoxOptions.stroke specification>
+setStroke :: (MonadDOM m) => SVGBoundingBoxOptions -> Bool -> m ()
+setStroke self val = liftDOM (void ((js_setStroke (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stroke\"]; })"
+        js_getStroke :: SVGBoundingBoxOptions -> IO JSVal
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-stroke SVGBoundingBoxOptions.stroke specification>
+getStroke :: (MonadDOM m) => SVGBoundingBoxOptions -> m (Maybe Bool)
+getStroke self = liftDOM (((js_getStroke (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-stroke SVGBoundingBoxOptions.stroke specification>
+getStrokeUnsafe :: (MonadDOM m, HasCallStack) => SVGBoundingBoxOptions -> m Bool
+getStrokeUnsafe self = liftDOM ((((js_getStroke (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-stroke SVGBoundingBoxOptions.stroke specification>
+getStrokeUnchecked :: (MonadDOM m) => SVGBoundingBoxOptions -> m Bool
+getStrokeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStroke (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"markers\"] = $2; })"
+        js_setMarkers :: SVGBoundingBoxOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-markers SVGBoundingBoxOptions.markers specification>
+setMarkers :: (MonadDOM m) => SVGBoundingBoxOptions -> Bool -> m ()
+setMarkers self val = liftDOM (void ((js_setMarkers (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"markers\"]; })"
+        js_getMarkers :: SVGBoundingBoxOptions -> IO JSVal
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-markers SVGBoundingBoxOptions.markers specification>
+getMarkers :: (MonadDOM m) => SVGBoundingBoxOptions -> m (Maybe Bool)
+getMarkers self = liftDOM (((js_getMarkers (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-markers SVGBoundingBoxOptions.markers specification>
+getMarkersUnsafe :: (MonadDOM m, HasCallStack) => SVGBoundingBoxOptions -> m Bool
+getMarkersUnsafe self = liftDOM ((((js_getMarkers (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-markers SVGBoundingBoxOptions.markers specification>
+getMarkersUnchecked :: (MonadDOM m) => SVGBoundingBoxOptions -> m Bool
+getMarkersUnchecked self = liftDOM ((pFromJSVal <$> (js_getMarkers (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clipped\"] = $2; })"
+        js_setClipped :: SVGBoundingBoxOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-clipped SVGBoundingBoxOptions.clipped specification>
+setClipped :: (MonadDOM m) => SVGBoundingBoxOptions -> Bool -> m ()
+setClipped self val = liftDOM (void ((js_setClipped (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clipped\"]; })"
+        js_getClipped :: SVGBoundingBoxOptions -> IO JSVal
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-clipped SVGBoundingBoxOptions.clipped specification>
+getClipped :: (MonadDOM m) => SVGBoundingBoxOptions -> m (Maybe Bool)
+getClipped self = liftDOM (((js_getClipped (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-clipped SVGBoundingBoxOptions.clipped specification>
+getClippedUnsafe :: (MonadDOM m, HasCallStack) => SVGBoundingBoxOptions -> m Bool
+getClippedUnsafe self = liftDOM ((((js_getClipped (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dom-svgboundingboxoptions-clipped SVGBoundingBoxOptions.clipped specification>
+getClippedUnchecked :: (MonadDOM m) => SVGBoundingBoxOptions -> m Bool
+getClippedUnchecked self = liftDOM ((pFromJSVal <$> (js_getClipped (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
@@ -1,48 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGCircleElement
-       (js_getCx, getCx, js_getCy, getCy, js_getR, getR,
-        SVGCircleElement(..), gTypeSVGCircleElement)
+       (js_getCx, js_getCy, js_getR, getCx, getCy, getR, SVGCircleElement(..), gTypeSVGCircleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })" js_getCx ::
-        SVGCircleElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
-getCx :: (MonadIO m) => SVGCircleElement -> m SVGAnimatedLength
-getCx self = liftIO (js_getCx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })" js_getCy ::
-        SVGCircleElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })"
+        js_getCx :: SVGCircleElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGCircleElement/cx MDN SVGCircleElement.cx documentation>
+getCx :: (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
+getCx self = liftDOM ((js_getCx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cy Mozilla SVGCircleElement.cy documentation> 
-getCy :: (MonadIO m) => SVGCircleElement -> m SVGAnimatedLength
-getCy self = liftIO (js_getCy self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })" js_getR ::
-        SVGCircleElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })"
+        js_getCy :: SVGCircleElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGCircleElement/cy MDN SVGCircleElement.cy documentation>
+getCy :: (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
+getCy self = liftDOM ((js_getCy (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.r Mozilla SVGCircleElement.r documentation> 
-getR :: (MonadIO m) => SVGCircleElement -> m SVGAnimatedLength
-getR self = liftIO (js_getR self)
+foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })"
+        js_getR :: SVGCircleElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGCircleElement/r MDN SVGCircleElement.r documentation>
+getR :: (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
+getR self = liftDOM ((js_getR (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
@@ -1,36 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-masking-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
-       (js_getClipPathUnits, getClipPathUnits, SVGClipPathElement(..),
-        gTypeSVGClipPathElement)
+       (js_getClipPathUnits, js_getTransform, getClipPathUnits, getTransform, SVGClipPathElement(..), gTypeSVGClipPathElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"clipPathUnits\"]; })"
-        js_getClipPathUnits ::
-        SVGClipPathElement -> IO SVGAnimatedEnumeration
+        js_getClipPathUnits :: SVGClipPathElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGClipPathElement/clipPathUnits MDN SVGClipPathElement.clipPathUnits documentation>
+getClipPathUnits :: (MonadDOM m) => SVGClipPathElement -> m SVGAnimatedEnumeration
+getClipPathUnits self = liftDOM ((js_getClipPathUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
-getClipPathUnits ::
-                 (MonadIO m) => SVGClipPathElement -> m SVGAnimatedEnumeration
-getClipPathUnits self = liftIO (js_getClipPathUnits self)
+foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
+        js_getTransform :: SVGClipPathElement -> IO SVGAnimatedTransformList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGClipPathElement/transform MDN SVGClipPathElement.transform documentation>
+getTransform :: (MonadDOM m) => SVGClipPathElement -> m SVGAnimatedTransformList
+getTransform self = liftDOM ((js_getTransform (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
@@ -1,122 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
-       (pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN,
-        pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY,
-        pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE,
-        pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE,
-        pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR,
-        pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA, js_getType, getType,
-        js_getTableValues, getTableValues, js_getSlope, getSlope,
-        js_getIntercept, getIntercept, js_getAmplitude, getAmplitude,
-        js_getExponent, getExponent, js_getOffset, getOffset,
-        SVGComponentTransferFunctionElement(..),
-        gTypeSVGComponentTransferFunctionElement,
-        IsSVGComponentTransferFunctionElement,
-        toSVGComponentTransferFunctionElement)
+       (js_getType, js_getTableValues, js_getSlope, js_getIntercept, js_getAmplitude, js_getExponent, js_getOffset, getType, getTableValues, getSlope, getIntercept, getAmplitude, getExponent, getOffset, pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN, pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY, pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE, pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE, pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR, pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA, SVGComponentTransferFunctionElement(..), gTypeSVGComponentTransferFunctionElement, IsSVGComponentTransferFunctionElement, toSVGComponentTransferFunctionElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
-pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
-pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2
-pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3
-pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4
-pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        SVGComponentTransferFunctionElement -> IO SVGAnimatedEnumeration
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.type Mozilla SVGComponentTransferFunctionElement.type documentation> 
-getType ::
-        (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
-          self -> m SVGAnimatedEnumeration
-getType self
-  = liftIO (js_getType (toSVGComponentTransferFunctionElement self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: SVGComponentTransferFunctionElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/type MDN SVGComponentTransferFunctionElement.type documentation>
+getType :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedEnumeration
+getType self = liftDOM ((js_getType ((Types.toSVGComponentTransferFunctionElement self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"tableValues\"]; })"
-        js_getTableValues ::
-        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumberList
+        js_getTableValues :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumberList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/tableValues MDN SVGComponentTransferFunctionElement.tableValues documentation>
+getTableValues :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumberList
+getTableValues self = liftDOM ((js_getTableValues ((Types.toSVGComponentTransferFunctionElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.tableValues Mozilla SVGComponentTransferFunctionElement.tableValues documentation> 
-getTableValues ::
-               (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
-                 self -> m SVGAnimatedNumberList
-getTableValues self
-  = liftIO
-      (js_getTableValues (toSVGComponentTransferFunctionElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"slope\"]; })" js_getSlope ::
-        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"slope\"]; })"
+        js_getSlope :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/slope MDN SVGComponentTransferFunctionElement.slope documentation>
+getSlope :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getSlope self = liftDOM ((js_getSlope ((Types.toSVGComponentTransferFunctionElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.slope Mozilla SVGComponentTransferFunctionElement.slope documentation> 
-getSlope ::
-         (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
-           self -> m SVGAnimatedNumber
-getSlope self
-  = liftIO (js_getSlope (toSVGComponentTransferFunctionElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"intercept\"]; })"
-        js_getIntercept ::
-        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+        js_getIntercept :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/intercept MDN SVGComponentTransferFunctionElement.intercept documentation>
+getIntercept :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getIntercept self = liftDOM ((js_getIntercept ((Types.toSVGComponentTransferFunctionElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.intercept Mozilla SVGComponentTransferFunctionElement.intercept documentation> 
-getIntercept ::
-             (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
-               self -> m SVGAnimatedNumber
-getIntercept self
-  = liftIO
-      (js_getIntercept (toSVGComponentTransferFunctionElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"amplitude\"]; })"
-        js_getAmplitude ::
-        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+        js_getAmplitude :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/amplitude MDN SVGComponentTransferFunctionElement.amplitude documentation>
+getAmplitude :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getAmplitude self = liftDOM ((js_getAmplitude ((Types.toSVGComponentTransferFunctionElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.amplitude Mozilla SVGComponentTransferFunctionElement.amplitude documentation> 
-getAmplitude ::
-             (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
-               self -> m SVGAnimatedNumber
-getAmplitude self
-  = liftIO
-      (js_getAmplitude (toSVGComponentTransferFunctionElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"exponent\"]; })" js_getExponent
-        :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"exponent\"]; })"
+        js_getExponent :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/exponent MDN SVGComponentTransferFunctionElement.exponent documentation>
+getExponent :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getExponent self = liftDOM ((js_getExponent ((Types.toSVGComponentTransferFunctionElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.exponent Mozilla SVGComponentTransferFunctionElement.exponent documentation> 
-getExponent ::
-            (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
-              self -> m SVGAnimatedNumber
-getExponent self
-  = liftIO
-      (js_getExponent (toSVGComponentTransferFunctionElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })" js_getOffset ::
-        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/offset MDN SVGComponentTransferFunctionElement.offset documentation>
+getOffset :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getOffset self = liftDOM ((js_getOffset ((Types.toSVGComponentTransferFunctionElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.offset Mozilla SVGComponentTransferFunctionElement.offset documentation> 
-getOffset ::
-          (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
-            self -> m SVGAnimatedNumber
-getOffset self
-  = liftIO
-      (js_getOffset (toSVGComponentTransferFunctionElement self))
+pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
+
+pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
+
+pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2
+
+pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3
+
+pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4
+
+pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGCursorElement
-       (js_getX, getX, js_getY, getY, SVGCursorElement(..),
-        gTypeSVGCursorElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGCursorElement -> IO SVGAnimatedLength
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
-getX :: (MonadIO m) => SVGCursorElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGCursorElement -> IO SVGAnimatedLength
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.y Mozilla SVGCursorElement.y documentation> 
-getY :: (MonadIO m) => SVGCursorElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGDefsElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGDefsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGDefsElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGDefsElement
+       (SVGDefsElement(..), gTypeSVGDefsElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGDescElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGDescElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGDescElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGDescElement
+       (SVGDescElement(..), gTypeSVGDescElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
@@ -1,161 +1,51 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGElement
-       (js_getPresentationAttribute, getPresentationAttribute,
-        getPresentationAttribute_, js_focus, focus, js_blur, blur,
-        js_getOwnerSVGElement, getOwnerSVGElement, js_getViewportElement,
-        getViewportElement, js_setXmllang, setXmllang, js_getXmllang,
-        getXmllang, js_setXmlspace, setXmlspace, js_getXmlspace,
-        getXmlspace, js_getClassName, getClassName, js_setTabIndex,
-        setTabIndex, js_getTabIndex, getTabIndex, js_getDataset,
-        getDataset, SVGElement(..), gTypeSVGElement, IsSVGElement,
-        toSVGElement)
+       (js_getClassName, js_getOwnerSVGElement, js_getViewportElement, getClassName, getOwnerSVGElement, getOwnerSVGElementUnsafe, getOwnerSVGElementUnchecked, getViewportElement, getViewportElementUnsafe, getViewportElementUnchecked, SVGElement(..), gTypeSVGElement, IsSVGElement, toSVGElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"getPresentationAttribute\"]($2); })" js_getPresentationAttribute
-        :: SVGElement -> Optional JSString -> IO CSSValue
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
-getPresentationAttribute ::
-                         (MonadIO m, IsSVGElement self, ToJSString name) =>
-                           self -> Maybe name -> m CSSValue
-getPresentationAttribute self name
-  = liftIO
-      (js_getPresentationAttribute (toSVGElement self)
-         (toOptionalJSString name))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
-getPresentationAttribute_ ::
-                          (MonadIO m, IsSVGElement self, ToJSString name) =>
-                            self -> Maybe name -> m ()
-getPresentationAttribute_ self name
-  = liftIO
-      (void
-         (js_getPresentationAttribute (toSVGElement self)
-            (toOptionalJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"focus\"](); })" js_focus ::
-        SVGElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.focus Mozilla SVGElement.focus documentation> 
-focus :: (MonadIO m, IsSVGElement self) => self -> m ()
-focus self = liftIO (js_focus (toSVGElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"blur\"](); })" js_blur ::
-        SVGElement -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"className\"]; })"
+        js_getClassName :: SVGElement -> IO SVGAnimatedString
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#__svg__SVGElement__className SVGElement.className specification>
+getClassName :: (MonadDOM m, IsSVGElement self) => self -> m SVGAnimatedString
+getClassName self = liftDOM ((js_getClassName ((Types.toSVGElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.blur Mozilla SVGElement.blur documentation> 
-blur :: (MonadIO m, IsSVGElement self) => self -> m ()
-blur self = liftIO (js_blur (toSVGElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"ownerSVGElement\"]; })"
-        js_getOwnerSVGElement :: SVGElement -> IO SVGSVGElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.ownerSVGElement Mozilla SVGElement.ownerSVGElement documentation> 
-getOwnerSVGElement ::
-                   (MonadIO m, IsSVGElement self) => self -> m SVGSVGElement
-getOwnerSVGElement self
-  = liftIO (js_getOwnerSVGElement (toSVGElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"viewportElement\"]; })"
-        js_getViewportElement :: SVGElement -> IO SVGElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.viewportElement Mozilla SVGElement.viewportElement documentation> 
-getViewportElement ::
-                   (MonadIO m, IsSVGElement self) => self -> m SVGElement
-getViewportElement self
-  = liftIO (js_getViewportElement (toSVGElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"xmllang\"] = $2; })"
-        js_setXmllang :: SVGElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
-setXmllang ::
-           (MonadIO m, IsSVGElement self, ToJSString val) =>
-             self -> val -> m ()
-setXmllang self val
-  = liftIO (js_setXmllang (toSVGElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"xmllang\"]; })" js_getXmllang ::
-        SVGElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
-getXmllang ::
-           (MonadIO m, IsSVGElement self, FromJSString result) =>
-             self -> m result
-getXmllang self
-  = liftIO (fromJSString <$> (js_getXmllang (toSVGElement self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"xmlspace\"] = $2; })"
-        js_setXmlspace :: SVGElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
-setXmlspace ::
-            (MonadIO m, IsSVGElement self, ToJSString val) =>
-              self -> val -> m ()
-setXmlspace self val
-  = liftIO (js_setXmlspace (toSVGElement self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"xmlspace\"]; })" js_getXmlspace
-        :: SVGElement -> IO JSString
+        js_getOwnerSVGElement :: SVGElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/ownerSVGElement MDN SVGElement.ownerSVGElement documentation>
+getOwnerSVGElement :: (MonadDOM m, IsSVGElement self) => self -> m (Maybe SVGSVGElement)
+getOwnerSVGElement self = liftDOM (((js_getOwnerSVGElement ((Types.toSVGElement self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
-getXmlspace ::
-            (MonadIO m, IsSVGElement self, FromJSString result) =>
-              self -> m result
-getXmlspace self
-  = liftIO (fromJSString <$> (js_getXmlspace (toSVGElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"className\"]; })"
-        js_getClassName :: SVGElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/ownerSVGElement MDN SVGElement.ownerSVGElement documentation>
+getOwnerSVGElementUnsafe :: (MonadDOM m, IsSVGElement self, HasCallStack) => self -> m SVGSVGElement
+getOwnerSVGElementUnsafe self = liftDOM ((((js_getOwnerSVGElement ((Types.toSVGElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.className Mozilla SVGElement.className documentation> 
-getClassName ::
-             (MonadIO m, IsSVGElement self) => self -> m SVGAnimatedString
-getClassName self = liftIO (js_getClassName (toSVGElement self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"tabIndex\"] = $2; })"
-        js_setTabIndex :: SVGElement -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/ownerSVGElement MDN SVGElement.ownerSVGElement documentation>
+getOwnerSVGElementUnchecked :: (MonadDOM m, IsSVGElement self) => self -> m SVGSVGElement
+getOwnerSVGElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getOwnerSVGElement ((Types.toSVGElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
-setTabIndex ::
-            (MonadIO m, IsSVGElement self) => self -> Int -> m ()
-setTabIndex self val
-  = liftIO (js_setTabIndex (toSVGElement self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"tabIndex\"]; })" js_getTabIndex
-        :: SVGElement -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"viewportElement\"]; })"
+        js_getViewportElement :: SVGElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement MDN SVGElement.viewportElement documentation>
+getViewportElement :: (MonadDOM m, IsSVGElement self) => self -> m (Maybe SVGElement)
+getViewportElement self = liftDOM (((js_getViewportElement ((Types.toSVGElement self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
-getTabIndex :: (MonadIO m, IsSVGElement self) => self -> m Int
-getTabIndex self = liftIO (js_getTabIndex (toSVGElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dataset\"]; })" js_getDataset ::
-        SVGElement -> IO DOMStringMap
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement MDN SVGElement.viewportElement documentation>
+getViewportElementUnsafe :: (MonadDOM m, IsSVGElement self, HasCallStack) => self -> m SVGElement
+getViewportElementUnsafe self = liftDOM ((((js_getViewportElement ((Types.toSVGElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.dataset Mozilla SVGElement.dataset documentation> 
-getDataset ::
-           (MonadIO m, IsSVGElement self) => self -> m DOMStringMap
-getDataset self = liftIO (js_getDataset (toSVGElement self))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement MDN SVGElement.viewportElement documentation>
+getViewportElementUnchecked :: (MonadDOM m, IsSVGElement self) => self -> m SVGElement
+getViewportElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getViewportElement ((Types.toSVGElement self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
@@ -1,55 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
-       (js_getCx, getCx, js_getCy, getCy, js_getRx, getRx, js_getRy,
-        getRy, SVGEllipseElement(..), gTypeSVGEllipseElement)
+       (js_getCx, js_getCy, js_getRx, js_getRy, getCx, getCy, getRx, getRy, SVGEllipseElement(..), gTypeSVGEllipseElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })" js_getCx ::
-        SVGEllipseElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
-getCx :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
-getCx self = liftIO (js_getCx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })" js_getCy ::
-        SVGEllipseElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })"
+        js_getCx :: SVGEllipseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/cx MDN SVGEllipseElement.cx documentation>
+getCx :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
+getCx self = liftDOM ((js_getCx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cy Mozilla SVGEllipseElement.cy documentation> 
-getCy :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
-getCy self = liftIO (js_getCy self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rx\"]; })" js_getRx ::
-        SVGEllipseElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })"
+        js_getCy :: SVGEllipseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/cy MDN SVGEllipseElement.cy documentation>
+getCy :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
+getCy self = liftDOM ((js_getCy (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.rx Mozilla SVGEllipseElement.rx documentation> 
-getRx :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
-getRx self = liftIO (js_getRx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ry\"]; })" js_getRy ::
-        SVGEllipseElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"rx\"]; })"
+        js_getRx :: SVGEllipseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/rx MDN SVGEllipseElement.rx documentation>
+getRx :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
+getRx self = liftDOM ((js_getRx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.ry Mozilla SVGEllipseElement.ry documentation> 
-getRy :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
-getRy self = liftIO (js_getRy self)
+foreign import javascript unsafe "(($1) => { return $1[\"ry\"]; })"
+        js_getRy :: SVGEllipseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/ry MDN SVGEllipseElement.ry documentation>
+getRy :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
+getRy self = liftDOM ((js_getRy (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs
+++ /dev/null
@@ -1,67 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGException
-       (js_toString, toString, toString_, pattern SVG_WRONG_TYPE_ERR,
-        pattern SVG_INVALID_VALUE_ERR, pattern SVG_MATRIX_NOT_INVERTABLE,
-        js_getCode, getCode, js_getName, getName, js_getMessage,
-        getMessage, SVGException(..), gTypeSVGException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: SVGException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.toString Mozilla SVGException.toString documentation> 
-toString ::
-         (MonadIO m, FromJSString result) => SVGException -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.toString Mozilla SVGException.toString documentation> 
-toString_ :: (MonadIO m) => SVGException -> m ()
-toString_ self = liftIO (void (js_toString self))
-pattern SVG_WRONG_TYPE_ERR = 0
-pattern SVG_INVALID_VALUE_ERR = 1
-pattern SVG_MATRIX_NOT_INVERTABLE = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        SVGException -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.code Mozilla SVGException.code documentation> 
-getCode :: (MonadIO m) => SVGException -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        SVGException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.name Mozilla SVGException.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => SVGException -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        SVGException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.message Mozilla SVGException.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => SVGException -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired
-       (js_getExternalResourcesRequired, getExternalResourcesRequired,
-        SVGExternalResourcesRequired(..),
-        gTypeSVGExternalResourcesRequired, IsSVGExternalResourcesRequired,
-        toSVGExternalResourcesRequired)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"externalResourcesRequired\"]; })" js_getExternalResourcesRequired
-        :: SVGExternalResourcesRequired -> IO SVGAnimatedBoolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
-getExternalResourcesRequired ::
-                             (MonadIO m, IsSVGExternalResourcesRequired self) =>
-                               self -> m SVGAnimatedBoolean
-getExternalResourcesRequired self
-  = liftIO
-      (js_getExternalResourcesRequired
-         (toSVGExternalResourcesRequired self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
@@ -1,58 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement
-       (pattern SVG_FEBLEND_MODE_UNKNOWN, pattern SVG_FEBLEND_MODE_NORMAL,
-        pattern SVG_FEBLEND_MODE_MULTIPLY, pattern SVG_FEBLEND_MODE_SCREEN,
-        pattern SVG_FEBLEND_MODE_DARKEN, pattern SVG_FEBLEND_MODE_LIGHTEN,
-        js_getIn1, getIn1, js_getIn2, getIn2, js_getMode, getMode,
-        SVGFEBlendElement(..), gTypeSVGFEBlendElement)
+       (js_getIn1, js_getIn2, js_getMode, getIn1, getIn2, getMode, pattern SVG_FEBLEND_MODE_UNKNOWN, pattern SVG_FEBLEND_MODE_NORMAL, pattern SVG_FEBLEND_MODE_MULTIPLY, pattern SVG_FEBLEND_MODE_SCREEN, pattern SVG_FEBLEND_MODE_DARKEN, pattern SVG_FEBLEND_MODE_LIGHTEN, pattern SVG_FEBLEND_MODE_OVERLAY, pattern SVG_FEBLEND_MODE_COLOR_DODGE, pattern SVG_FEBLEND_MODE_COLOR_BURN, pattern SVG_FEBLEND_MODE_HARD_LIGHT, pattern SVG_FEBLEND_MODE_SOFT_LIGHT, pattern SVG_FEBLEND_MODE_DIFFERENCE, pattern SVG_FEBLEND_MODE_EXCLUSION, pattern SVG_FEBLEND_MODE_HUE, pattern SVG_FEBLEND_MODE_SATURATION, pattern SVG_FEBLEND_MODE_COLOR, pattern SVG_FEBLEND_MODE_LUMINOSITY, SVGFEBlendElement(..), gTypeSVGFEBlendElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEBlendElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/in1 MDN SVGFEBlendElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })"
+        js_getIn2 :: SVGFEBlendElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/in2 MDN SVGFEBlendElement.in2 documentation>
+getIn2 :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
+getIn2 self = liftDOM ((js_getIn2 (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: SVGFEBlendElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/mode MDN SVGFEBlendElement.mode documentation>
+getMode :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedEnumeration
+getMode self = liftDOM ((js_getMode (self)))
+
 pattern SVG_FEBLEND_MODE_UNKNOWN = 0
+
 pattern SVG_FEBLEND_MODE_NORMAL = 1
+
 pattern SVG_FEBLEND_MODE_MULTIPLY = 2
+
 pattern SVG_FEBLEND_MODE_SCREEN = 3
+
 pattern SVG_FEBLEND_MODE_DARKEN = 4
+
 pattern SVG_FEBLEND_MODE_LIGHTEN = 5
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEBlendElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in1 Mozilla SVGFEBlendElement.in1 documentation> 
-getIn1 :: (MonadIO m) => SVGFEBlendElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })" js_getIn2 ::
-        SVGFEBlendElement -> IO SVGAnimatedString
+pattern SVG_FEBLEND_MODE_OVERLAY = 6
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in2 Mozilla SVGFEBlendElement.in2 documentation> 
-getIn2 :: (MonadIO m) => SVGFEBlendElement -> m SVGAnimatedString
-getIn2 self = liftIO (js_getIn2 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
-        SVGFEBlendElement -> IO SVGAnimatedEnumeration
+pattern SVG_FEBLEND_MODE_COLOR_DODGE = 7
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.mode Mozilla SVGFEBlendElement.mode documentation> 
-getMode ::
-        (MonadIO m) => SVGFEBlendElement -> m SVGAnimatedEnumeration
-getMode self = liftIO (js_getMode self)
+pattern SVG_FEBLEND_MODE_COLOR_BURN = 8
+
+pattern SVG_FEBLEND_MODE_HARD_LIGHT = 9
+
+pattern SVG_FEBLEND_MODE_SOFT_LIGHT = 10
+
+pattern SVG_FEBLEND_MODE_DIFFERENCE = 11
+
+pattern SVG_FEBLEND_MODE_EXCLUSION = 12
+
+pattern SVG_FEBLEND_MODE_HUE = 13
+
+pattern SVG_FEBLEND_MODE_SATURATION = 14
+
+pattern SVG_FEBLEND_MODE_COLOR = 15
+
+pattern SVG_FEBLEND_MODE_LUMINOSITY = 16
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
@@ -1,61 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement
-       (pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN,
-        pattern SVG_FECOLORMATRIX_TYPE_MATRIX,
-        pattern SVG_FECOLORMATRIX_TYPE_SATURATE,
-        pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE,
-        pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA, js_getIn1, getIn1,
-        js_getType, getType, js_getValues, getValues,
-        SVGFEColorMatrixElement(..), gTypeSVGFEColorMatrixElement)
+       (js_getIn1, js_getType, js_getValues, getIn1, getType, getValues, pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN, pattern SVG_FECOLORMATRIX_TYPE_MATRIX, pattern SVG_FECOLORMATRIX_TYPE_SATURATE, pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE, pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA, SVGFEColorMatrixElement(..), gTypeSVGFEColorMatrixElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEColorMatrixElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEColorMatrixElement/in1 MDN SVGFEColorMatrixElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: SVGFEColorMatrixElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEColorMatrixElement/type MDN SVGFEColorMatrixElement.type documentation>
+getType :: (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedEnumeration
+getType self = liftDOM ((js_getType (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"values\"]; })"
+        js_getValues :: SVGFEColorMatrixElement -> IO SVGAnimatedNumberList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEColorMatrixElement/values MDN SVGFEColorMatrixElement.values documentation>
+getValues :: (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedNumberList
+getValues self = liftDOM ((js_getValues (self)))
+
 pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0
+
 pattern SVG_FECOLORMATRIX_TYPE_MATRIX = 1
-pattern SVG_FECOLORMATRIX_TYPE_SATURATE = 2
-pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3
-pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEColorMatrixElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.in1 Mozilla SVGFEColorMatrixElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEColorMatrixElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        SVGFEColorMatrixElement -> IO SVGAnimatedEnumeration
+pattern SVG_FECOLORMATRIX_TYPE_SATURATE = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.type Mozilla SVGFEColorMatrixElement.type documentation> 
-getType ::
-        (MonadIO m) => SVGFEColorMatrixElement -> m SVGAnimatedEnumeration
-getType self = liftIO (js_getType self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"values\"]; })" js_getValues ::
-        SVGFEColorMatrixElement -> IO SVGAnimatedNumberList
+pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.values Mozilla SVGFEColorMatrixElement.values documentation> 
-getValues ::
-          (MonadIO m) => SVGFEColorMatrixElement -> m SVGAnimatedNumberList
-getValues self = liftIO (js_getValues self)
+pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
@@ -1,35 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
-       (js_getIn1, getIn1, SVGFEComponentTransferElement(..),
-        gTypeSVGFEComponentTransferElement)
+       (js_getIn1, getIn1, SVGFEComponentTransferElement(..), gTypeSVGFEComponentTransferElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEComponentTransferElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEComponentTransferElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEComponentTransferElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEComponentTransferElement/in1 MDN SVGFEComponentTransferElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEComponentTransferElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
@@ -1,98 +1,73 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement
-       (pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN,
-        pattern SVG_FECOMPOSITE_OPERATOR_OVER,
-        pattern SVG_FECOMPOSITE_OPERATOR_IN,
-        pattern SVG_FECOMPOSITE_OPERATOR_OUT,
-        pattern SVG_FECOMPOSITE_OPERATOR_ATOP,
-        pattern SVG_FECOMPOSITE_OPERATOR_XOR,
-        pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC, js_getIn1, getIn1,
-        js_getIn2, getIn2, js_getOperator, getOperator, js_getK1, getK1,
-        js_getK2, getK2, js_getK3, getK3, js_getK4, getK4,
-        SVGFECompositeElement(..), gTypeSVGFECompositeElement)
+       (js_getIn1, js_getIn2, js_getOperator, js_getK1, js_getK2, js_getK3, js_getK4, getIn1, getIn2, getOperator, getK1, getK2, getK3, getK4, pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN, pattern SVG_FECOMPOSITE_OPERATOR_OVER, pattern SVG_FECOMPOSITE_OPERATOR_IN, pattern SVG_FECOMPOSITE_OPERATOR_OUT, pattern SVG_FECOMPOSITE_OPERATOR_ATOP, pattern SVG_FECOMPOSITE_OPERATOR_XOR, pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC, SVGFECompositeElement(..), gTypeSVGFECompositeElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0
-pattern SVG_FECOMPOSITE_OPERATOR_OVER = 1
-pattern SVG_FECOMPOSITE_OPERATOR_IN = 2
-pattern SVG_FECOMPOSITE_OPERATOR_OUT = 3
-pattern SVG_FECOMPOSITE_OPERATOR_ATOP = 4
-pattern SVG_FECOMPOSITE_OPERATOR_XOR = 5
-pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFECompositeElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in1 Mozilla SVGFECompositeElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })" js_getIn2 ::
-        SVGFECompositeElement -> IO SVGAnimatedString
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFECompositeElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/in1 MDN SVGFECompositeElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in2 Mozilla SVGFECompositeElement.in2 documentation> 
-getIn2 ::
-       (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedString
-getIn2 self = liftIO (js_getIn2 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"operator\"]; })" js_getOperator
-        :: SVGFECompositeElement -> IO SVGAnimatedEnumeration
+foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })"
+        js_getIn2 :: SVGFECompositeElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/in2 MDN SVGFECompositeElement.in2 documentation>
+getIn2 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
+getIn2 self = liftDOM ((js_getIn2 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.operator Mozilla SVGFECompositeElement.operator documentation> 
-getOperator ::
-            (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedEnumeration
-getOperator self = liftIO (js_getOperator self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"k1\"]; })" js_getK1 ::
-        SVGFECompositeElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"operator\"]; })"
+        js_getOperator :: SVGFECompositeElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/operator MDN SVGFECompositeElement.operator documentation>
+getOperator :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedEnumeration
+getOperator self = liftDOM ((js_getOperator (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k1 Mozilla SVGFECompositeElement.k1 documentation> 
-getK1 ::
-      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK1 self = liftIO (js_getK1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"k2\"]; })" js_getK2 ::
-        SVGFECompositeElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"k1\"]; })"
+        js_getK1 :: SVGFECompositeElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k1 MDN SVGFECompositeElement.k1 documentation>
+getK1 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK1 self = liftDOM ((js_getK1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k2 Mozilla SVGFECompositeElement.k2 documentation> 
-getK2 ::
-      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK2 self = liftIO (js_getK2 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"k3\"]; })" js_getK3 ::
-        SVGFECompositeElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"k2\"]; })"
+        js_getK2 :: SVGFECompositeElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k2 MDN SVGFECompositeElement.k2 documentation>
+getK2 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK2 self = liftDOM ((js_getK2 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k3 Mozilla SVGFECompositeElement.k3 documentation> 
-getK3 ::
-      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK3 self = liftIO (js_getK3 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"k4\"]; })" js_getK4 ::
-        SVGFECompositeElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"k3\"]; })"
+        js_getK3 :: SVGFECompositeElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k3 MDN SVGFECompositeElement.k3 documentation>
+getK3 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK3 self = liftDOM ((js_getK3 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k4 Mozilla SVGFECompositeElement.k4 documentation> 
-getK4 ::
-      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK4 self = liftIO (js_getK4 self)
+foreign import javascript unsafe "(($1) => { return $1[\"k4\"]; })"
+        js_getK4 :: SVGFECompositeElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k4 MDN SVGFECompositeElement.k4 documentation>
+getK4 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK4 self = liftDOM ((js_getK4 (self)))
+
+pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0
+
+pattern SVG_FECOMPOSITE_OPERATOR_OVER = 1
+
+pattern SVG_FECOMPOSITE_OPERATOR_IN = 2
+
+pattern SVG_FECOMPOSITE_OPERATOR_OUT = 3
+
+pattern SVG_FECOMPOSITE_OPERATOR_ATOP = 4
+
+pattern SVG_FECOMPOSITE_OPERATOR_XOR = 5
+
+pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
@@ -1,140 +1,97 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement
-       (pattern SVG_EDGEMODE_UNKNOWN, pattern SVG_EDGEMODE_DUPLICATE,
-        pattern SVG_EDGEMODE_WRAP, pattern SVG_EDGEMODE_NONE, js_getIn1,
-        getIn1, js_getOrderX, getOrderX, js_getOrderY, getOrderY,
-        js_getKernelMatrix, getKernelMatrix, js_getDivisor, getDivisor,
-        js_getBias, getBias, js_getTargetX, getTargetX, js_getTargetY,
-        getTargetY, js_getEdgeMode, getEdgeMode, js_getKernelUnitLengthX,
-        getKernelUnitLengthX, js_getKernelUnitLengthY,
-        getKernelUnitLengthY, js_getPreserveAlpha, getPreserveAlpha,
-        SVGFEConvolveMatrixElement(..), gTypeSVGFEConvolveMatrixElement)
+       (js_getIn1, js_getOrderX, js_getOrderY, js_getKernelMatrix, js_getDivisor, js_getBias, js_getTargetX, js_getTargetY, js_getEdgeMode, js_getKernelUnitLengthX, js_getKernelUnitLengthY, js_getPreserveAlpha, getIn1, getOrderX, getOrderY, getKernelMatrix, getDivisor, getBias, getTargetX, getTargetY, getEdgeMode, getKernelUnitLengthX, getKernelUnitLengthY, getPreserveAlpha, pattern SVG_EDGEMODE_UNKNOWN, pattern SVG_EDGEMODE_DUPLICATE, pattern SVG_EDGEMODE_WRAP, pattern SVG_EDGEMODE_NONE, SVGFEConvolveMatrixElement(..), gTypeSVGFEConvolveMatrixElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SVG_EDGEMODE_UNKNOWN = 0
-pattern SVG_EDGEMODE_DUPLICATE = 1
-pattern SVG_EDGEMODE_WRAP = 2
-pattern SVG_EDGEMODE_NONE = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.in1 Mozilla SVGFEConvolveMatrixElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"orderX\"]; })" js_getOrderX ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEConvolveMatrixElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/in1 MDN SVGFEConvolveMatrixElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderX Mozilla SVGFEConvolveMatrixElement.orderX documentation> 
-getOrderX ::
-          (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getOrderX self = liftIO (js_getOrderX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"orderY\"]; })" js_getOrderY ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+foreign import javascript unsafe "(($1) => { return $1[\"orderX\"]; })"
+        js_getOrderX :: SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/orderX MDN SVGFEConvolveMatrixElement.orderX documentation>
+getOrderX :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderX self = liftDOM ((js_getOrderX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderY Mozilla SVGFEConvolveMatrixElement.orderY documentation> 
-getOrderY ::
-          (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getOrderY self = liftIO (js_getOrderY self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"orderY\"]; })"
+        js_getOrderY :: SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/orderY MDN SVGFEConvolveMatrixElement.orderY documentation>
+getOrderY :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderY self = liftDOM ((js_getOrderY (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"kernelMatrix\"]; })"
-        js_getKernelMatrix ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumberList
+        js_getKernelMatrix :: SVGFEConvolveMatrixElement -> IO SVGAnimatedNumberList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/kernelMatrix MDN SVGFEConvolveMatrixElement.kernelMatrix documentation>
+getKernelMatrix :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumberList
+getKernelMatrix self = liftDOM ((js_getKernelMatrix (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelMatrix Mozilla SVGFEConvolveMatrixElement.kernelMatrix documentation> 
-getKernelMatrix ::
-                (MonadIO m) =>
-                  SVGFEConvolveMatrixElement -> m SVGAnimatedNumberList
-getKernelMatrix self = liftIO (js_getKernelMatrix self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"divisor\"]; })" js_getDivisor ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"divisor\"]; })"
+        js_getDivisor :: SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/divisor MDN SVGFEConvolveMatrixElement.divisor documentation>
+getDivisor :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getDivisor self = liftDOM ((js_getDivisor (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.divisor Mozilla SVGFEConvolveMatrixElement.divisor documentation> 
-getDivisor ::
-           (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getDivisor self = liftIO (js_getDivisor self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"bias\"]; })" js_getBias ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"bias\"]; })"
+        js_getBias :: SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/bias MDN SVGFEConvolveMatrixElement.bias documentation>
+getBias :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getBias self = liftDOM ((js_getBias (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.bias Mozilla SVGFEConvolveMatrixElement.bias documentation> 
-getBias ::
-        (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getBias self = liftIO (js_getBias self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"targetX\"]; })" js_getTargetX ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+foreign import javascript unsafe "(($1) => { return $1[\"targetX\"]; })"
+        js_getTargetX :: SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/targetX MDN SVGFEConvolveMatrixElement.targetX documentation>
+getTargetX :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetX self = liftDOM ((js_getTargetX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetX Mozilla SVGFEConvolveMatrixElement.targetX documentation> 
-getTargetX ::
-           (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getTargetX self = liftIO (js_getTargetX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"targetY\"]; })" js_getTargetY ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+foreign import javascript unsafe "(($1) => { return $1[\"targetY\"]; })"
+        js_getTargetY :: SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/targetY MDN SVGFEConvolveMatrixElement.targetY documentation>
+getTargetY :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetY self = liftDOM ((js_getTargetY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetY Mozilla SVGFEConvolveMatrixElement.targetY documentation> 
-getTargetY ::
-           (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getTargetY self = liftIO (js_getTargetY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"edgeMode\"]; })" js_getEdgeMode
-        :: SVGFEConvolveMatrixElement -> IO SVGAnimatedEnumeration
+foreign import javascript unsafe "(($1) => { return $1[\"edgeMode\"]; })"
+        js_getEdgeMode :: SVGFEConvolveMatrixElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/edgeMode MDN SVGFEConvolveMatrixElement.edgeMode documentation>
+getEdgeMode :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedEnumeration
+getEdgeMode self = liftDOM ((js_getEdgeMode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.edgeMode Mozilla SVGFEConvolveMatrixElement.edgeMode documentation> 
-getEdgeMode ::
-            (MonadIO m) =>
-              SVGFEConvolveMatrixElement -> m SVGAnimatedEnumeration
-getEdgeMode self = liftIO (js_getEdgeMode self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthX\"]; })"
-        js_getKernelUnitLengthX ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+        js_getKernelUnitLengthX :: SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/kernelUnitLengthX MDN SVGFEConvolveMatrixElement.kernelUnitLengthX documentation>
+getKernelUnitLengthX :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftDOM ((js_getKernelUnitLengthX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthX Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthX documentation> 
-getKernelUnitLengthX ::
-                     (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getKernelUnitLengthX self = liftIO (js_getKernelUnitLengthX self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthY\"]; })"
-        js_getKernelUnitLengthY ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+        js_getKernelUnitLengthY :: SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/kernelUnitLengthY MDN SVGFEConvolveMatrixElement.kernelUnitLengthY documentation>
+getKernelUnitLengthY :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftDOM ((js_getKernelUnitLengthY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthY Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthY documentation> 
-getKernelUnitLengthY ::
-                     (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getKernelUnitLengthY self = liftIO (js_getKernelUnitLengthY self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"preserveAlpha\"]; })"
-        js_getPreserveAlpha ::
-        SVGFEConvolveMatrixElement -> IO SVGAnimatedBoolean
+        js_getPreserveAlpha :: SVGFEConvolveMatrixElement -> IO SVGAnimatedBoolean
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/preserveAlpha MDN SVGFEConvolveMatrixElement.preserveAlpha documentation>
+getPreserveAlpha :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedBoolean
+getPreserveAlpha self = liftDOM ((js_getPreserveAlpha (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.preserveAlpha Mozilla SVGFEConvolveMatrixElement.preserveAlpha documentation> 
-getPreserveAlpha ::
-                 (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedBoolean
-getPreserveAlpha self = liftIO (js_getPreserveAlpha self)
+pattern SVG_EDGEMODE_UNKNOWN = 0
+
+pattern SVG_EDGEMODE_DUPLICATE = 1
+
+pattern SVG_EDGEMODE_WRAP = 2
+
+pattern SVG_EDGEMODE_NONE = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
@@ -1,74 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
-       (js_getIn1, getIn1, js_getSurfaceScale, getSurfaceScale,
-        js_getDiffuseConstant, getDiffuseConstant, js_getKernelUnitLengthX,
-        getKernelUnitLengthX, js_getKernelUnitLengthY,
-        getKernelUnitLengthY, SVGFEDiffuseLightingElement(..),
-        gTypeSVGFEDiffuseLightingElement)
+       (js_getIn1, js_getSurfaceScale, js_getDiffuseConstant, js_getKernelUnitLengthX, js_getKernelUnitLengthY, getIn1, getSurfaceScale, getDiffuseConstant, getKernelUnitLengthX, getKernelUnitLengthY, SVGFEDiffuseLightingElement(..), gTypeSVGFEDiffuseLightingElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEDiffuseLightingElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEDiffuseLightingElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/in1 MDN SVGFEDiffuseLightingElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"surfaceScale\"]; })"
-        js_getSurfaceScale ::
-        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+        js_getSurfaceScale :: SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/surfaceScale MDN SVGFEDiffuseLightingElement.surfaceScale documentation>
+getSurfaceScale :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getSurfaceScale self = liftDOM ((js_getSurfaceScale (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.surfaceScale Mozilla SVGFEDiffuseLightingElement.surfaceScale documentation> 
-getSurfaceScale ::
-                (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getSurfaceScale self = liftIO (js_getSurfaceScale self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"diffuseConstant\"]; })"
-        js_getDiffuseConstant ::
-        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+        js_getDiffuseConstant :: SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/diffuseConstant MDN SVGFEDiffuseLightingElement.diffuseConstant documentation>
+getDiffuseConstant :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getDiffuseConstant self = liftDOM ((js_getDiffuseConstant (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.diffuseConstant Mozilla SVGFEDiffuseLightingElement.diffuseConstant documentation> 
-getDiffuseConstant ::
-                   (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getDiffuseConstant self = liftIO (js_getDiffuseConstant self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthX\"]; })"
-        js_getKernelUnitLengthX ::
-        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+        js_getKernelUnitLengthX :: SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/kernelUnitLengthX MDN SVGFEDiffuseLightingElement.kernelUnitLengthX documentation>
+getKernelUnitLengthX :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftDOM ((js_getKernelUnitLengthX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthX Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthX documentation> 
-getKernelUnitLengthX ::
-                     (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getKernelUnitLengthX self = liftIO (js_getKernelUnitLengthX self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthY\"]; })"
-        js_getKernelUnitLengthY ::
-        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthY Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthY documentation> 
-getKernelUnitLengthY ::
-                     (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getKernelUnitLengthY self = liftIO (js_getKernelUnitLengthY self)
+        js_getKernelUnitLengthY :: SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/kernelUnitLengthY MDN SVGFEDiffuseLightingElement.kernelUnitLengthY documentation>
+getKernelUnitLengthY :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftDOM ((js_getKernelUnitLengthY (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
@@ -1,80 +1,57 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement
-       (pattern SVG_CHANNEL_UNKNOWN, pattern SVG_CHANNEL_R,
-        pattern SVG_CHANNEL_G, pattern SVG_CHANNEL_B,
-        pattern SVG_CHANNEL_A, js_getIn1, getIn1, js_getIn2, getIn2,
-        js_getScale, getScale, js_getXChannelSelector, getXChannelSelector,
-        js_getYChannelSelector, getYChannelSelector,
-        SVGFEDisplacementMapElement(..), gTypeSVGFEDisplacementMapElement)
+       (js_getIn1, js_getIn2, js_getScale, js_getXChannelSelector, js_getYChannelSelector, getIn1, getIn2, getScale, getXChannelSelector, getYChannelSelector, pattern SVG_CHANNEL_UNKNOWN, pattern SVG_CHANNEL_R, pattern SVG_CHANNEL_G, pattern SVG_CHANNEL_B, pattern SVG_CHANNEL_A, SVGFEDisplacementMapElement(..), gTypeSVGFEDisplacementMapElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SVG_CHANNEL_UNKNOWN = 0
-pattern SVG_CHANNEL_R = 1
-pattern SVG_CHANNEL_G = 2
-pattern SVG_CHANNEL_B = 3
-pattern SVG_CHANNEL_A = 4
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEDisplacementMapElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in1 Mozilla SVGFEDisplacementMapElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })" js_getIn2 ::
-        SVGFEDisplacementMapElement -> IO SVGAnimatedString
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEDisplacementMapElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/in1 MDN SVGFEDisplacementMapElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in2 Mozilla SVGFEDisplacementMapElement.in2 documentation> 
-getIn2 ::
-       (MonadIO m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
-getIn2 self = liftIO (js_getIn2 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scale\"]; })" js_getScale ::
-        SVGFEDisplacementMapElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })"
+        js_getIn2 :: SVGFEDisplacementMapElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/in2 MDN SVGFEDisplacementMapElement.in2 documentation>
+getIn2 :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn2 self = liftDOM ((js_getIn2 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.scale Mozilla SVGFEDisplacementMapElement.scale documentation> 
-getScale ::
-         (MonadIO m) => SVGFEDisplacementMapElement -> m SVGAnimatedNumber
-getScale self = liftIO (js_getScale self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"scale\"]; })"
+        js_getScale :: SVGFEDisplacementMapElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/scale MDN SVGFEDisplacementMapElement.scale documentation>
+getScale :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedNumber
+getScale self = liftDOM ((js_getScale (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"xChannelSelector\"]; })"
-        js_getXChannelSelector ::
-        SVGFEDisplacementMapElement -> IO SVGAnimatedEnumeration
+        js_getXChannelSelector :: SVGFEDisplacementMapElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/xChannelSelector MDN SVGFEDisplacementMapElement.xChannelSelector documentation>
+getXChannelSelector :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getXChannelSelector self = liftDOM ((js_getXChannelSelector (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.xChannelSelector Mozilla SVGFEDisplacementMapElement.xChannelSelector documentation> 
-getXChannelSelector ::
-                    (MonadIO m) =>
-                      SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
-getXChannelSelector self = liftIO (js_getXChannelSelector self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"yChannelSelector\"]; })"
-        js_getYChannelSelector ::
-        SVGFEDisplacementMapElement -> IO SVGAnimatedEnumeration
+        js_getYChannelSelector :: SVGFEDisplacementMapElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/yChannelSelector MDN SVGFEDisplacementMapElement.yChannelSelector documentation>
+getYChannelSelector :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getYChannelSelector self = liftDOM ((js_getYChannelSelector (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.yChannelSelector Mozilla SVGFEDisplacementMapElement.yChannelSelector documentation> 
-getYChannelSelector ::
-                    (MonadIO m) =>
-                      SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
-getYChannelSelector self = liftIO (js_getYChannelSelector self)
+pattern SVG_CHANNEL_UNKNOWN = 0
+
+pattern SVG_CHANNEL_R = 1
+
+pattern SVG_CHANNEL_G = 2
+
+pattern SVG_CHANNEL_B = 3
+
+pattern SVG_CHANNEL_A = 4
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
-       (js_getAzimuth, getAzimuth, js_getElevation, getElevation,
-        SVGFEDistantLightElement(..), gTypeSVGFEDistantLightElement)
+       (js_getAzimuth, js_getElevation, getAzimuth, getElevation, SVGFEDistantLightElement(..), gTypeSVGFEDistantLightElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"azimuth\"]; })" js_getAzimuth ::
-        SVGFEDistantLightElement -> IO SVGAnimatedNumber
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
-getAzimuth ::
-           (MonadIO m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
-getAzimuth self = liftIO (js_getAzimuth self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"azimuth\"]; })"
+        js_getAzimuth :: SVGFEDistantLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDistantLightElement/azimuth MDN SVGFEDistantLightElement.azimuth documentation>
+getAzimuth :: (MonadDOM m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
+getAzimuth self = liftDOM ((js_getAzimuth (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"elevation\"]; })"
         js_getElevation :: SVGFEDistantLightElement -> IO SVGAnimatedNumber
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.elevation Mozilla SVGFEDistantLightElement.elevation documentation> 
-getElevation ::
-             (MonadIO m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
-getElevation self = liftIO (js_getElevation self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDistantLightElement/elevation MDN SVGFEDistantLightElement.elevation documentation>
+getElevation :: (MonadDOM m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
+getElevation self = liftDOM ((js_getElevation (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
@@ -1,84 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement
-       (js_setStdDeviation, setStdDeviation, js_getIn1, getIn1, js_getDx,
-        getDx, js_getDy, getDy, js_getStdDeviationX, getStdDeviationX,
-        js_getStdDeviationY, getStdDeviationY, SVGFEDropShadowElement(..),
-        gTypeSVGFEDropShadowElement)
+       (js_setStdDeviation, js_getIn1, js_getDx, js_getDy, js_getStdDeviationX, js_getStdDeviationY, setStdDeviation, getIn1, getDx, getDy, getStdDeviationX, getStdDeviationY, SVGFEDropShadowElement(..), gTypeSVGFEDropShadowElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStdDeviation\"]($2, $3); })"
-        js_setStdDeviation ::
-        SVGFEDropShadowElement -> Optional Float -> Optional Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.setStdDeviation Mozilla SVGFEDropShadowElement.setStdDeviation documentation> 
-setStdDeviation ::
-                (MonadIO m) =>
-                  SVGFEDropShadowElement -> Maybe Float -> Maybe Float -> m ()
-setStdDeviation self stdDeviationX stdDeviationY
-  = liftIO
-      (js_setStdDeviation self (maybeToOptional stdDeviationX)
-         (maybeToOptional stdDeviationY))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEDropShadowElement -> IO SVGAnimatedString
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setStdDeviation\"]($2, $3); })"
+        js_setStdDeviation :: SVGFEDropShadowElement -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/setStdDeviation MDN SVGFEDropShadowElement.setStdDeviation documentation>
+setStdDeviation :: (MonadDOM m) => SVGFEDropShadowElement -> Float -> Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY = liftDOM (void ((js_setStdDeviation (self) (stdDeviationX) (stdDeviationY))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.in1 Mozilla SVGFEDropShadowElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
-        SVGFEDropShadowElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEDropShadowElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/in1 MDN SVGFEDropShadowElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dx Mozilla SVGFEDropShadowElement.dx documentation> 
-getDx ::
-      (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getDx self = liftIO (js_getDx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
-        SVGFEDropShadowElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })"
+        js_getDx :: SVGFEDropShadowElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/dx MDN SVGFEDropShadowElement.dx documentation>
+getDx :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDx self = liftDOM ((js_getDx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dy Mozilla SVGFEDropShadowElement.dy documentation> 
-getDy ::
-      (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getDy self = liftIO (js_getDy self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })"
+        js_getDy :: SVGFEDropShadowElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/dy MDN SVGFEDropShadowElement.dy documentation>
+getDy :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDy self = liftDOM ((js_getDy (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationX\"]; })"
-        js_getStdDeviationX ::
-        SVGFEDropShadowElement -> IO SVGAnimatedNumber
+        js_getStdDeviationX :: SVGFEDropShadowElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/stdDeviationX MDN SVGFEDropShadowElement.stdDeviationX documentation>
+getStdDeviationX :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationX self = liftDOM ((js_getStdDeviationX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationX Mozilla SVGFEDropShadowElement.stdDeviationX documentation> 
-getStdDeviationX ::
-                 (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getStdDeviationX self = liftIO (js_getStdDeviationX self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationY\"]; })"
-        js_getStdDeviationY ::
-        SVGFEDropShadowElement -> IO SVGAnimatedNumber
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationY Mozilla SVGFEDropShadowElement.stdDeviationY documentation> 
-getStdDeviationY ::
-                 (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getStdDeviationY self = liftIO (js_getStdDeviationY self)
+        js_getStdDeviationY :: SVGFEDropShadowElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/stdDeviationY MDN SVGFEDropShadowElement.stdDeviationY documentation>
+getStdDeviationY :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationY self = liftDOM ((js_getStdDeviationY (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEFloodElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFloodElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFloodElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGFEFloodElement
+       (SVGFEFloodElement(..), gTypeSVGFEFloodElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncAElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncAElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncAElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGFEFuncAElement
+       (SVGFEFuncAElement(..), gTypeSVGFEFuncAElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncBElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncBElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncBElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGFEFuncBElement
+       (SVGFEFuncBElement(..), gTypeSVGFEFuncBElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncGElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGFEFuncGElement
+       (SVGFEFuncGElement(..), gTypeSVGFEFuncGElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncRElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEFuncRElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGFEFuncRElement
+       (SVGFEFuncRElement(..), gTypeSVGFEFuncRElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
@@ -1,83 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement
-       (js_setStdDeviation, setStdDeviation, pattern SVG_EDGEMODE_UNKNOWN,
-        pattern SVG_EDGEMODE_DUPLICATE, pattern SVG_EDGEMODE_WRAP,
-        pattern SVG_EDGEMODE_NONE, js_getIn1, getIn1, js_getStdDeviationX,
-        getStdDeviationX, js_getStdDeviationY, getStdDeviationY,
-        js_getEdgeMode, getEdgeMode, SVGFEGaussianBlurElement(..),
-        gTypeSVGFEGaussianBlurElement)
+       (js_setStdDeviation, js_getIn1, js_getStdDeviationX, js_getStdDeviationY, js_getEdgeMode, setStdDeviation, getIn1, getStdDeviationX, getStdDeviationY, getEdgeMode, pattern SVG_EDGEMODE_UNKNOWN, pattern SVG_EDGEMODE_DUPLICATE, pattern SVG_EDGEMODE_WRAP, pattern SVG_EDGEMODE_NONE, SVGFEGaussianBlurElement(..), gTypeSVGFEGaussianBlurElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStdDeviation\"]($2, $3); })"
-        js_setStdDeviation ::
-        SVGFEGaussianBlurElement ->
-          Optional Float -> Optional Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.setStdDeviation Mozilla SVGFEGaussianBlurElement.setStdDeviation documentation> 
-setStdDeviation ::
-                (MonadIO m) =>
-                  SVGFEGaussianBlurElement -> Maybe Float -> Maybe Float -> m ()
-setStdDeviation self stdDeviationX stdDeviationY
-  = liftIO
-      (js_setStdDeviation self (maybeToOptional stdDeviationX)
-         (maybeToOptional stdDeviationY))
-pattern SVG_EDGEMODE_UNKNOWN = 0
-pattern SVG_EDGEMODE_DUPLICATE = 1
-pattern SVG_EDGEMODE_WRAP = 2
-pattern SVG_EDGEMODE_NONE = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEGaussianBlurElement -> IO SVGAnimatedString
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setStdDeviation\"]($2, $3); })"
+        js_setStdDeviation :: SVGFEGaussianBlurElement -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/setStdDeviation MDN SVGFEGaussianBlurElement.setStdDeviation documentation>
+setStdDeviation :: (MonadDOM m) => SVGFEGaussianBlurElement -> Float -> Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY = liftDOM (void ((js_setStdDeviation (self) (stdDeviationX) (stdDeviationY))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.in1 Mozilla SVGFEGaussianBlurElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEGaussianBlurElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/in1 MDN SVGFEGaussianBlurElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationX\"]; })"
-        js_getStdDeviationX ::
-        SVGFEGaussianBlurElement -> IO SVGAnimatedNumber
+        js_getStdDeviationX :: SVGFEGaussianBlurElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/stdDeviationX MDN SVGFEGaussianBlurElement.stdDeviationX documentation>
+getStdDeviationX :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationX self = liftDOM ((js_getStdDeviationX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationX Mozilla SVGFEGaussianBlurElement.stdDeviationX documentation> 
-getStdDeviationX ::
-                 (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
-getStdDeviationX self = liftIO (js_getStdDeviationX self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationY\"]; })"
-        js_getStdDeviationY ::
-        SVGFEGaussianBlurElement -> IO SVGAnimatedNumber
+        js_getStdDeviationY :: SVGFEGaussianBlurElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/stdDeviationY MDN SVGFEGaussianBlurElement.stdDeviationY documentation>
+getStdDeviationY :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationY self = liftDOM ((js_getStdDeviationY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationY Mozilla SVGFEGaussianBlurElement.stdDeviationY documentation> 
-getStdDeviationY ::
-                 (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
-getStdDeviationY self = liftIO (js_getStdDeviationY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"edgeMode\"]; })" js_getEdgeMode
-        :: SVGFEGaussianBlurElement -> IO SVGAnimatedEnumeration
+foreign import javascript unsafe "(($1) => { return $1[\"edgeMode\"]; })"
+        js_getEdgeMode :: SVGFEGaussianBlurElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/edgeMode MDN SVGFEGaussianBlurElement.edgeMode documentation>
+getEdgeMode :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedEnumeration
+getEdgeMode self = liftDOM ((js_getEdgeMode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.edgeMode Mozilla SVGFEGaussianBlurElement.edgeMode documentation> 
-getEdgeMode ::
-            (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedEnumeration
-getEdgeMode self = liftIO (js_getEdgeMode self)
+pattern SVG_EDGEMODE_UNKNOWN = 0
+
+pattern SVG_EDGEMODE_DUPLICATE = 1
+
+pattern SVG_EDGEMODE_WRAP = 2
+
+pattern SVG_EDGEMODE_NONE = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
@@ -1,38 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
-       (js_getPreserveAspectRatio, getPreserveAspectRatio,
-        SVGFEImageElement(..), gTypeSVGFEImageElement)
+       (js_getPreserveAspectRatio, getPreserveAspectRatio, SVGFEImageElement(..), gTypeSVGFEImageElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
-        js_getPreserveAspectRatio ::
-        SVGFEImageElement -> IO SVGAnimatedPreserveAspectRatio
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
-getPreserveAspectRatio ::
-                       (MonadIO m) =>
-                         SVGFEImageElement -> m SVGAnimatedPreserveAspectRatio
-getPreserveAspectRatio self
-  = liftIO (js_getPreserveAspectRatio self)
+foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
+        js_getPreserveAspectRatio :: SVGFEImageElement -> IO SVGAnimatedPreserveAspectRatio
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEImageElement/preserveAspectRatio MDN SVGFEImageElement.preserveAspectRatio documentation>
+getPreserveAspectRatio :: (MonadDOM m) => SVGFEImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self = liftDOM ((js_getPreserveAspectRatio (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGFEMergeElement
+       (SVGFEMergeElement(..), gTypeSVGFEMergeElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
@@ -1,35 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
-       (js_getIn1, getIn1, SVGFEMergeNodeElement(..),
-        gTypeSVGFEMergeNodeElement)
+       (js_getIn1, getIn1, SVGFEMergeNodeElement(..), gTypeSVGFEMergeNodeElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEMergeNodeElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEMergeNodeElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEMergeNodeElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMergeNodeElement/in1 MDN SVGFEMergeNodeElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEMergeNodeElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
@@ -1,79 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement
-       (js_setRadius, setRadius, pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN,
-        pattern SVG_MORPHOLOGY_OPERATOR_ERODE,
-        pattern SVG_MORPHOLOGY_OPERATOR_DILATE, js_getIn1, getIn1,
-        js_getOperator, getOperator, js_getRadiusX, getRadiusX,
-        js_getRadiusY, getRadiusY, SVGFEMorphologyElement(..),
-        gTypeSVGFEMorphologyElement)
+       (js_getIn1, js_getOperator, js_getRadiusX, js_getRadiusY, getIn1, getOperator, getRadiusX, getRadiusY, pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN, pattern SVG_MORPHOLOGY_OPERATOR_ERODE, pattern SVG_MORPHOLOGY_OPERATOR_DILATE, SVGFEMorphologyElement(..), gTypeSVGFEMorphologyElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setRadius\"]($2, $3); })"
-        js_setRadius ::
-        SVGFEMorphologyElement -> Optional Float -> Optional Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.setRadius Mozilla SVGFEMorphologyElement.setRadius documentation> 
-setRadius ::
-          (MonadIO m) =>
-            SVGFEMorphologyElement -> Maybe Float -> Maybe Float -> m ()
-setRadius self radiusX radiusY
-  = liftIO
-      (js_setRadius self (maybeToOptional radiusX)
-         (maybeToOptional radiusY))
-pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0
-pattern SVG_MORPHOLOGY_OPERATOR_ERODE = 1
-pattern SVG_MORPHOLOGY_OPERATOR_DILATE = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEMorphologyElement -> IO SVGAnimatedString
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEMorphologyElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/in1 MDN SVGFEMorphologyElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.in1 Mozilla SVGFEMorphologyElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"operator\"]; })" js_getOperator
-        :: SVGFEMorphologyElement -> IO SVGAnimatedEnumeration
+foreign import javascript unsafe "(($1) => { return $1[\"operator\"]; })"
+        js_getOperator :: SVGFEMorphologyElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/operator MDN SVGFEMorphologyElement.operator documentation>
+getOperator :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedEnumeration
+getOperator self = liftDOM ((js_getOperator (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.operator Mozilla SVGFEMorphologyElement.operator documentation> 
-getOperator ::
-            (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedEnumeration
-getOperator self = liftIO (js_getOperator self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"radiusX\"]; })" js_getRadiusX ::
-        SVGFEMorphologyElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"radiusX\"]; })"
+        js_getRadiusX :: SVGFEMorphologyElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/radiusX MDN SVGFEMorphologyElement.radiusX documentation>
+getRadiusX :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusX self = liftDOM ((js_getRadiusX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusX Mozilla SVGFEMorphologyElement.radiusX documentation> 
-getRadiusX ::
-           (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
-getRadiusX self = liftIO (js_getRadiusX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"radiusY\"]; })" js_getRadiusY ::
-        SVGFEMorphologyElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"radiusY\"]; })"
+        js_getRadiusY :: SVGFEMorphologyElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/radiusY MDN SVGFEMorphologyElement.radiusY documentation>
+getRadiusY :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusY self = liftDOM ((js_getRadiusY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusY Mozilla SVGFEMorphologyElement.radiusY documentation> 
-getRadiusY ::
-           (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
-getRadiusY self = liftIO (js_getRadiusY self)
+pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0
+
+pattern SVG_MORPHOLOGY_OPERATOR_ERODE = 1
+
+pattern SVG_MORPHOLOGY_OPERATOR_DILATE = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
@@ -1,48 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
-       (js_getIn1, getIn1, js_getDx, getDx, js_getDy, getDy,
-        SVGFEOffsetElement(..), gTypeSVGFEOffsetElement)
+       (js_getIn1, js_getDx, js_getDy, getIn1, getDx, getDy, SVGFEOffsetElement(..), gTypeSVGFEOffsetElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFEOffsetElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
-getIn1 :: (MonadIO m) => SVGFEOffsetElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
-        SVGFEOffsetElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFEOffsetElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEOffsetElement/in1 MDN SVGFEOffsetElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dx Mozilla SVGFEOffsetElement.dx documentation> 
-getDx :: (MonadIO m) => SVGFEOffsetElement -> m SVGAnimatedNumber
-getDx self = liftIO (js_getDx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
-        SVGFEOffsetElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })"
+        js_getDx :: SVGFEOffsetElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEOffsetElement/dx MDN SVGFEOffsetElement.dx documentation>
+getDx :: (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedNumber
+getDx self = liftDOM ((js_getDx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dy Mozilla SVGFEOffsetElement.dy documentation> 
-getDy :: (MonadIO m) => SVGFEOffsetElement -> m SVGAnimatedNumber
-getDy self = liftIO (js_getDy self)
+foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })"
+        js_getDy :: SVGFEOffsetElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEOffsetElement/dy MDN SVGFEOffsetElement.dy documentation>
+getDy :: (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedNumber
+getDy self = liftDOM ((js_getDy (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
@@ -1,51 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
-       (js_getX, getX, js_getY, getY, js_getZ, getZ,
-        SVGFEPointLightElement(..), gTypeSVGFEPointLightElement)
+       (js_getX, js_getY, js_getZ, getX, getY, getZ, SVGFEPointLightElement(..), gTypeSVGFEPointLightElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGFEPointLightElement -> IO SVGAnimatedNumber
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
-getX ::
-     (MonadIO m) => SVGFEPointLightElement -> m SVGAnimatedNumber
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGFEPointLightElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGFEPointLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEPointLightElement/x MDN SVGFEPointLightElement.x documentation>
+getX :: (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.y Mozilla SVGFEPointLightElement.y documentation> 
-getY ::
-     (MonadIO m) => SVGFEPointLightElement -> m SVGAnimatedNumber
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
-        SVGFEPointLightElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGFEPointLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEPointLightElement/y MDN SVGFEPointLightElement.y documentation>
+getY :: (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.z Mozilla SVGFEPointLightElement.z documentation> 
-getZ ::
-     (MonadIO m) => SVGFEPointLightElement -> m SVGAnimatedNumber
-getZ self = liftIO (js_getZ self)
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: SVGFEPointLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEPointLightElement/z MDN SVGFEPointLightElement.z documentation>
+getZ :: (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getZ self = liftDOM ((js_getZ (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
@@ -1,65 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
-       (js_getIn1, getIn1, js_getSurfaceScale, getSurfaceScale,
-        js_getSpecularConstant, getSpecularConstant,
-        js_getSpecularExponent, getSpecularExponent,
-        SVGFESpecularLightingElement(..),
-        gTypeSVGFESpecularLightingElement)
+       (js_getIn1, js_getSurfaceScale, js_getSpecularConstant, js_getSpecularExponent, js_getKernelUnitLengthX, js_getKernelUnitLengthY, getIn1, getSurfaceScale, getSpecularConstant, getSpecularExponent, getKernelUnitLengthX, getKernelUnitLengthY, SVGFESpecularLightingElement(..), gTypeSVGFESpecularLightingElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFESpecularLightingElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
-getIn1 ::
-       (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFESpecularLightingElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/in1 MDN SVGFESpecularLightingElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"surfaceScale\"]; })"
-        js_getSurfaceScale ::
-        SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+        js_getSurfaceScale :: SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/surfaceScale MDN SVGFESpecularLightingElement.surfaceScale documentation>
+getSurfaceScale :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSurfaceScale self = liftDOM ((js_getSurfaceScale (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.surfaceScale Mozilla SVGFESpecularLightingElement.surfaceScale documentation> 
-getSurfaceScale ::
-                (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
-getSurfaceScale self = liftIO (js_getSurfaceScale self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"specularConstant\"]; })"
-        js_getSpecularConstant ::
-        SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+        js_getSpecularConstant :: SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/specularConstant MDN SVGFESpecularLightingElement.specularConstant documentation>
+getSpecularConstant :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularConstant self = liftDOM ((js_getSpecularConstant (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularConstant Mozilla SVGFESpecularLightingElement.specularConstant documentation> 
-getSpecularConstant ::
-                    (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
-getSpecularConstant self = liftIO (js_getSpecularConstant self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"specularExponent\"]; })"
-        js_getSpecularExponent ::
-        SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+        js_getSpecularExponent :: SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/specularExponent MDN SVGFESpecularLightingElement.specularExponent documentation>
+getSpecularExponent :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularExponent self = liftDOM ((js_getSpecularExponent (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularExponent Mozilla SVGFESpecularLightingElement.specularExponent documentation> 
-getSpecularExponent ::
-                    (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
-getSpecularExponent self = liftIO (js_getSpecularExponent self)
+foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthX\"]; })"
+        js_getKernelUnitLengthX :: SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/kernelUnitLengthX MDN SVGFESpecularLightingElement.kernelUnitLengthX documentation>
+getKernelUnitLengthX :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftDOM ((js_getKernelUnitLengthX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthY\"]; })"
+        js_getKernelUnitLengthY :: SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/kernelUnitLengthY MDN SVGFESpecularLightingElement.kernelUnitLengthY documentation>
+getKernelUnitLengthY :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftDOM ((js_getKernelUnitLengthY (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
@@ -1,93 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement
-       (js_getX, getX, js_getY, getY, js_getZ, getZ, js_getPointsAtX,
-        getPointsAtX, js_getPointsAtY, getPointsAtY, js_getPointsAtZ,
-        getPointsAtZ, js_getSpecularExponent, getSpecularExponent,
-        js_getLimitingConeAngle, getLimitingConeAngle,
-        SVGFESpotLightElement(..), gTypeSVGFESpotLightElement)
+       (js_getX, js_getY, js_getZ, js_getPointsAtX, js_getPointsAtY, js_getPointsAtZ, js_getSpecularExponent, js_getLimitingConeAngle, getX, getY, getZ, getPointsAtX, getPointsAtY, getPointsAtZ, getSpecularExponent, getLimitingConeAngle, SVGFESpotLightElement(..), gTypeSVGFESpotLightElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGFESpotLightElement -> IO SVGAnimatedNumber
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
-getX :: (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGFESpotLightElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/x MDN SVGFESpotLightElement.x documentation>
+getX :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.y Mozilla SVGFESpotLightElement.y documentation> 
-getY :: (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
-        SVGFESpotLightElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/y MDN SVGFESpotLightElement.y documentation>
+getY :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.z Mozilla SVGFESpotLightElement.z documentation> 
-getZ :: (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getZ self = liftIO (js_getZ self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })"
+        js_getZ :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/z MDN SVGFESpotLightElement.z documentation>
+getZ :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getZ self = liftDOM ((js_getZ (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"pointsAtX\"]; })"
         js_getPointsAtX :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/pointsAtX MDN SVGFESpotLightElement.pointsAtX documentation>
+getPointsAtX :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtX self = liftDOM ((js_getPointsAtX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtX Mozilla SVGFESpotLightElement.pointsAtX documentation> 
-getPointsAtX ::
-             (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getPointsAtX self = liftIO (js_getPointsAtX self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"pointsAtY\"]; })"
         js_getPointsAtY :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/pointsAtY MDN SVGFESpotLightElement.pointsAtY documentation>
+getPointsAtY :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtY self = liftDOM ((js_getPointsAtY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtY Mozilla SVGFESpotLightElement.pointsAtY documentation> 
-getPointsAtY ::
-             (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getPointsAtY self = liftIO (js_getPointsAtY self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"pointsAtZ\"]; })"
         js_getPointsAtZ :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/pointsAtZ MDN SVGFESpotLightElement.pointsAtZ documentation>
+getPointsAtZ :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtZ self = liftDOM ((js_getPointsAtZ (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtZ Mozilla SVGFESpotLightElement.pointsAtZ documentation> 
-getPointsAtZ ::
-             (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getPointsAtZ self = liftIO (js_getPointsAtZ self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"specularExponent\"]; })"
-        js_getSpecularExponent ::
-        SVGFESpotLightElement -> IO SVGAnimatedNumber
+        js_getSpecularExponent :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/specularExponent MDN SVGFESpotLightElement.specularExponent documentation>
+getSpecularExponent :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getSpecularExponent self = liftDOM ((js_getSpecularExponent (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.specularExponent Mozilla SVGFESpotLightElement.specularExponent documentation> 
-getSpecularExponent ::
-                    (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getSpecularExponent self = liftIO (js_getSpecularExponent self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"limitingConeAngle\"]; })"
-        js_getLimitingConeAngle ::
-        SVGFESpotLightElement -> IO SVGAnimatedNumber
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.limitingConeAngle Mozilla SVGFESpotLightElement.limitingConeAngle documentation> 
-getLimitingConeAngle ::
-                     (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getLimitingConeAngle self = liftIO (js_getLimitingConeAngle self)
+        js_getLimitingConeAngle :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/limitingConeAngle MDN SVGFESpotLightElement.limitingConeAngle documentation>
+getLimitingConeAngle :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getLimitingConeAngle self = liftDOM ((js_getLimitingConeAngle (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
@@ -1,33 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFETileElement
        (js_getIn1, getIn1, SVGFETileElement(..), gTypeSVGFETileElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
-        SVGFETileElement -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
-getIn1 :: (MonadIO m) => SVGFETileElement -> m SVGAnimatedString
-getIn1 self = liftIO (js_getIn1 self)
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })"
+        js_getIn1 :: SVGFETileElement -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETileElement/in1 MDN SVGFETileElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFETileElement -> m SVGAnimatedString
+getIn1 self = liftDOM ((js_getIn1 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
@@ -1,91 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement
-       (pattern SVG_TURBULENCE_TYPE_UNKNOWN,
-        pattern SVG_TURBULENCE_TYPE_FRACTALNOISE,
-        pattern SVG_TURBULENCE_TYPE_TURBULENCE,
-        pattern SVG_STITCHTYPE_UNKNOWN, pattern SVG_STITCHTYPE_STITCH,
-        pattern SVG_STITCHTYPE_NOSTITCH, js_getBaseFrequencyX,
-        getBaseFrequencyX, js_getBaseFrequencyY, getBaseFrequencyY,
-        js_getNumOctaves, getNumOctaves, js_getSeed, getSeed,
-        js_getStitchTiles, getStitchTiles, js_getType, getType,
-        SVGFETurbulenceElement(..), gTypeSVGFETurbulenceElement)
+       (js_getBaseFrequencyX, js_getBaseFrequencyY, js_getNumOctaves, js_getSeed, js_getStitchTiles, js_getType, getBaseFrequencyX, getBaseFrequencyY, getNumOctaves, getSeed, getStitchTiles, getType, pattern SVG_TURBULENCE_TYPE_UNKNOWN, pattern SVG_TURBULENCE_TYPE_FRACTALNOISE, pattern SVG_TURBULENCE_TYPE_TURBULENCE, pattern SVG_STITCHTYPE_UNKNOWN, pattern SVG_STITCHTYPE_STITCH, pattern SVG_STITCHTYPE_NOSTITCH, SVGFETurbulenceElement(..), gTypeSVGFETurbulenceElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SVG_TURBULENCE_TYPE_UNKNOWN = 0
-pattern SVG_TURBULENCE_TYPE_FRACTALNOISE = 1
-pattern SVG_TURBULENCE_TYPE_TURBULENCE = 2
-pattern SVG_STITCHTYPE_UNKNOWN = 0
-pattern SVG_STITCHTYPE_STITCH = 1
-pattern SVG_STITCHTYPE_NOSTITCH = 2
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"baseFrequencyX\"]; })"
-        js_getBaseFrequencyX ::
-        SVGFETurbulenceElement -> IO SVGAnimatedNumber
+        js_getBaseFrequencyX :: SVGFETurbulenceElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/baseFrequencyX MDN SVGFETurbulenceElement.baseFrequencyX documentation>
+getBaseFrequencyX :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyX self = liftDOM ((js_getBaseFrequencyX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyX Mozilla SVGFETurbulenceElement.baseFrequencyX documentation> 
-getBaseFrequencyX ::
-                  (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
-getBaseFrequencyX self = liftIO (js_getBaseFrequencyX self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"baseFrequencyY\"]; })"
-        js_getBaseFrequencyY ::
-        SVGFETurbulenceElement -> IO SVGAnimatedNumber
+        js_getBaseFrequencyY :: SVGFETurbulenceElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/baseFrequencyY MDN SVGFETurbulenceElement.baseFrequencyY documentation>
+getBaseFrequencyY :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyY self = liftDOM ((js_getBaseFrequencyY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyY Mozilla SVGFETurbulenceElement.baseFrequencyY documentation> 
-getBaseFrequencyY ::
-                  (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
-getBaseFrequencyY self = liftIO (js_getBaseFrequencyY self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"numOctaves\"]; })"
         js_getNumOctaves :: SVGFETurbulenceElement -> IO SVGAnimatedInteger
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/numOctaves MDN SVGFETurbulenceElement.numOctaves documentation>
+getNumOctaves :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedInteger
+getNumOctaves self = liftDOM ((js_getNumOctaves (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.numOctaves Mozilla SVGFETurbulenceElement.numOctaves documentation> 
-getNumOctaves ::
-              (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedInteger
-getNumOctaves self = liftIO (js_getNumOctaves self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"seed\"]; })" js_getSeed ::
-        SVGFETurbulenceElement -> IO SVGAnimatedNumber
+foreign import javascript unsafe "(($1) => { return $1[\"seed\"]; })"
+        js_getSeed :: SVGFETurbulenceElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/seed MDN SVGFETurbulenceElement.seed documentation>
+getSeed :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getSeed self = liftDOM ((js_getSeed (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.seed Mozilla SVGFETurbulenceElement.seed documentation> 
-getSeed ::
-        (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
-getSeed self = liftIO (js_getSeed self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"stitchTiles\"]; })"
-        js_getStitchTiles ::
-        SVGFETurbulenceElement -> IO SVGAnimatedEnumeration
+        js_getStitchTiles :: SVGFETurbulenceElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/stitchTiles MDN SVGFETurbulenceElement.stitchTiles documentation>
+getStitchTiles :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getStitchTiles self = liftDOM ((js_getStitchTiles (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.stitchTiles Mozilla SVGFETurbulenceElement.stitchTiles documentation> 
-getStitchTiles ::
-               (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
-getStitchTiles self = liftIO (js_getStitchTiles self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        SVGFETurbulenceElement -> IO SVGAnimatedEnumeration
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: SVGFETurbulenceElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/type MDN SVGFETurbulenceElement.type documentation>
+getType :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getType self = liftDOM ((js_getType (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.type Mozilla SVGFETurbulenceElement.type documentation> 
-getType ::
-        (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
-getType self = liftIO (js_getType self)
+pattern SVG_TURBULENCE_TYPE_UNKNOWN = 0
+
+pattern SVG_TURBULENCE_TYPE_FRACTALNOISE = 1
+
+pattern SVG_TURBULENCE_TYPE_TURBULENCE = 2
+
+pattern SVG_STITCHTYPE_UNKNOWN = 0
+
+pattern SVG_STITCHTYPE_STITCH = 1
+
+pattern SVG_STITCHTYPE_NOSTITCH = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
@@ -1,103 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFilterElement
-       (js_setFilterRes, setFilterRes, js_getFilterUnits, getFilterUnits,
-        js_getPrimitiveUnits, getPrimitiveUnits, js_getX, getX, js_getY,
-        getY, js_getWidth, getWidth, js_getHeight, getHeight,
-        js_getFilterResX, getFilterResX, js_getFilterResY, getFilterResY,
-        SVGFilterElement(..), gTypeSVGFilterElement)
+       (js_getFilterUnits, js_getPrimitiveUnits, js_getX, js_getY, js_getWidth, js_getHeight, getFilterUnits, getPrimitiveUnits, getX, getY, getWidth, getHeight, SVGFilterElement(..), gTypeSVGFilterElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setFilterRes\"]($2, $3); })"
-        js_setFilterRes ::
-        SVGFilterElement -> Optional Word -> Optional Word -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.setFilterRes Mozilla SVGFilterElement.setFilterRes documentation> 
-setFilterRes ::
-             (MonadIO m) => SVGFilterElement -> Maybe Word -> Maybe Word -> m ()
-setFilterRes self filterResX filterResY
-  = liftIO
-      (js_setFilterRes self (maybeToOptional filterResX)
-         (maybeToOptional filterResY))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"filterUnits\"]; })"
         js_getFilterUnits :: SVGFilterElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/filterUnits MDN SVGFilterElement.filterUnits documentation>
+getFilterUnits :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
+getFilterUnits self = liftDOM ((js_getFilterUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterUnits Mozilla SVGFilterElement.filterUnits documentation> 
-getFilterUnits ::
-               (MonadIO m) => SVGFilterElement -> m SVGAnimatedEnumeration
-getFilterUnits self = liftIO (js_getFilterUnits self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"primitiveUnits\"]; })"
-        js_getPrimitiveUnits ::
-        SVGFilterElement -> IO SVGAnimatedEnumeration
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.primitiveUnits Mozilla SVGFilterElement.primitiveUnits documentation> 
-getPrimitiveUnits ::
-                  (MonadIO m) => SVGFilterElement -> m SVGAnimatedEnumeration
-getPrimitiveUnits self = liftIO (js_getPrimitiveUnits self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGFilterElement -> IO SVGAnimatedLength
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.x Mozilla SVGFilterElement.x documentation> 
-getX :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGFilterElement -> IO SVGAnimatedLength
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.y Mozilla SVGFilterElement.y documentation> 
-getY :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGFilterElement -> IO SVGAnimatedLength
+        js_getPrimitiveUnits :: SVGFilterElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/primitiveUnits MDN SVGFilterElement.primitiveUnits documentation>
+getPrimitiveUnits :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
+getPrimitiveUnits self = liftDOM ((js_getPrimitiveUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.width Mozilla SVGFilterElement.width documentation> 
-getWidth :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGFilterElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGFilterElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/x MDN SVGFilterElement.x documentation>
+getX :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.height Mozilla SVGFilterElement.height documentation> 
-getHeight :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"filterResX\"]; })"
-        js_getFilterResX :: SVGFilterElement -> IO SVGAnimatedInteger
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGFilterElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/y MDN SVGFilterElement.y documentation>
+getY :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResX Mozilla SVGFilterElement.filterResX documentation> 
-getFilterResX ::
-              (MonadIO m) => SVGFilterElement -> m SVGAnimatedInteger
-getFilterResX self = liftIO (js_getFilterResX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"filterResY\"]; })"
-        js_getFilterResY :: SVGFilterElement -> IO SVGAnimatedInteger
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGFilterElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/width MDN SVGFilterElement.width documentation>
+getWidth :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResY Mozilla SVGFilterElement.filterResY documentation> 
-getFilterResY ::
-              (MonadIO m) => SVGFilterElement -> m SVGAnimatedInteger
-getFilterResY self = liftIO (js_getFilterResY self)
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGFilterElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/height MDN SVGFilterElement.height documentation>
+getHeight :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
@@ -1,84 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
-       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
-        getHeight, js_getResult, getResult,
-        SVGFilterPrimitiveStandardAttributes(..),
-        gTypeSVGFilterPrimitiveStandardAttributes,
-        IsSVGFilterPrimitiveStandardAttributes,
-        toSVGFilterPrimitiveStandardAttributes)
+       (js_getX, js_getY, js_getWidth, js_getHeight, js_getResult, getX, getY, getWidth, getHeight, getResult, SVGFilterPrimitiveStandardAttributes(..), gTypeSVGFilterPrimitiveStandardAttributes, IsSVGFilterPrimitiveStandardAttributes, toSVGFilterPrimitiveStandardAttributes)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
-getX ::
-     (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
-       self -> m SVGAnimatedLength
-getX self
-  = liftIO (js_getX (toSVGFilterPrimitiveStandardAttributes self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/x MDN SVGFilterPrimitiveStandardAttributes.x documentation>
+getX :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX ((Types.toSVGFilterPrimitiveStandardAttributes self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.y Mozilla SVGFilterPrimitiveStandardAttributes.y documentation> 
-getY ::
-     (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
-       self -> m SVGAnimatedLength
-getY self
-  = liftIO (js_getY (toSVGFilterPrimitiveStandardAttributes self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/y MDN SVGFilterPrimitiveStandardAttributes.y documentation>
+getY :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY ((Types.toSVGFilterPrimitiveStandardAttributes self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.width Mozilla SVGFilterPrimitiveStandardAttributes.width documentation> 
-getWidth ::
-         (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
-           self -> m SVGAnimatedLength
-getWidth self
-  = liftIO
-      (js_getWidth (toSVGFilterPrimitiveStandardAttributes self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/width MDN SVGFilterPrimitiveStandardAttributes.width documentation>
+getWidth :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth ((Types.toSVGFilterPrimitiveStandardAttributes self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.height Mozilla SVGFilterPrimitiveStandardAttributes.height documentation> 
-getHeight ::
-          (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
-            self -> m SVGAnimatedLength
-getHeight self
-  = liftIO
-      (js_getHeight (toSVGFilterPrimitiveStandardAttributes self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"result\"]; })" js_getResult ::
-        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedString
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/height MDN SVGFilterPrimitiveStandardAttributes.height documentation>
+getHeight :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight ((Types.toSVGFilterPrimitiveStandardAttributes self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.result Mozilla SVGFilterPrimitiveStandardAttributes.result documentation> 
-getResult ::
-          (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
-            self -> m SVGAnimatedString
-getResult self
-  = liftIO
-      (js_getResult (toSVGFilterPrimitiveStandardAttributes self))
+foreign import javascript unsafe "(($1) => { return $1[\"result\"]; })"
+        js_getResult :: SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/result MDN SVGFilterPrimitiveStandardAttributes.result documentation>
+getResult :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedString
+getResult self = liftDOM ((js_getResult ((Types.toSVGFilterPrimitiveStandardAttributes self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
@@ -1,47 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
-       (js_getViewBox, getViewBox, js_getPreserveAspectRatio,
-        getPreserveAspectRatio, SVGFitToViewBox(..), gTypeSVGFitToViewBox,
-        IsSVGFitToViewBox, toSVGFitToViewBox)
+       (js_getViewBox, js_getPreserveAspectRatio, getViewBox, getPreserveAspectRatio, SVGFitToViewBox(..), gTypeSVGFitToViewBox, IsSVGFitToViewBox, toSVGFitToViewBox)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"viewBox\"]; })" js_getViewBox ::
-        SVGFitToViewBox -> IO SVGAnimatedRect
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
-getViewBox ::
-           (MonadIO m, IsSVGFitToViewBox self) => self -> m SVGAnimatedRect
-getViewBox self = liftIO (js_getViewBox (toSVGFitToViewBox self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
-        js_getPreserveAspectRatio ::
-        SVGFitToViewBox -> IO SVGAnimatedPreserveAspectRatio
+foreign import javascript unsafe "(($1) => { return $1[\"viewBox\"]; })"
+        js_getViewBox :: SVGFitToViewBox -> IO SVGAnimatedRect
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/viewBox MDN SVGFitToViewBox.viewBox documentation>
+getViewBox :: (MonadDOM m, IsSVGFitToViewBox self) => self -> m SVGAnimatedRect
+getViewBox self = liftDOM ((js_getViewBox ((Types.toSVGFitToViewBox self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.preserveAspectRatio Mozilla SVGFitToViewBox.preserveAspectRatio documentation> 
-getPreserveAspectRatio ::
-                       (MonadIO m, IsSVGFitToViewBox self) =>
-                         self -> m SVGAnimatedPreserveAspectRatio
-getPreserveAspectRatio self
-  = liftIO (js_getPreserveAspectRatio (toSVGFitToViewBox self))
+foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
+        js_getPreserveAspectRatio :: SVGFitToViewBox -> IO SVGAnimatedPreserveAspectRatio
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/preserveAspectRatio MDN SVGFitToViewBox.preserveAspectRatio documentation>
+getPreserveAspectRatio :: (MonadDOM m, IsSVGFitToViewBox self) => self -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self = liftDOM ((js_getPreserveAspectRatio ((Types.toSVGFitToViewBox self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
@@ -1,60 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
-       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
-        getHeight, SVGForeignObjectElement(..),
-        gTypeSVGForeignObjectElement)
+       (js_getX, js_getY, js_getWidth, js_getHeight, getX, getY, getWidth, getHeight, SVGForeignObjectElement(..), gTypeSVGForeignObjectElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGForeignObjectElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
-getX ::
-     (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGForeignObjectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGForeignObjectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/x MDN SVGForeignObjectElement.x documentation>
+getX :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.y Mozilla SVGForeignObjectElement.y documentation> 
-getY ::
-     (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGForeignObjectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGForeignObjectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/y MDN SVGForeignObjectElement.y documentation>
+getY :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.width Mozilla SVGForeignObjectElement.width documentation> 
-getWidth ::
-         (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGForeignObjectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGForeignObjectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/width MDN SVGForeignObjectElement.width documentation>
+getWidth :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.height Mozilla SVGForeignObjectElement.height documentation> 
-getHeight ::
-          (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGForeignObjectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/height MDN SVGForeignObjectElement.height documentation>
+getHeight :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGGElement
+       (SVGGElement(..), gTypeSVGGElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGeometryElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGeometryElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGeometryElement.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGGeometryElement
+       (js_getPointAtLength, js_getTotalLength, js_isPointInFill, js_isPointInStroke, js_getPathLength, getPointAtLength, getPointAtLength_, getTotalLength, getTotalLength_, isPointInFill, isPointInFill_, isPointInStroke, isPointInStroke_, getPathLength, SVGGeometryElement(..), gTypeSVGGeometryElement, IsSVGGeometryElement, toSVGGeometryElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getPointAtLength\"]($2); })"
+        js_getPointAtLength :: SVGGeometryElement -> Float -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getPointAtLength MDN SVGGeometryElement.getPointAtLength documentation>
+getPointAtLength :: (MonadDOM m, IsSVGGeometryElement self) => self -> Float -> m DOMPoint
+getPointAtLength self distance = liftDOM ((js_getPointAtLength ((Types.toSVGGeometryElement self)) (distance)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getPointAtLength MDN SVGGeometryElement.getPointAtLength documentation>
+getPointAtLength_ :: (MonadDOM m, IsSVGGeometryElement self) => self -> Float -> m ()
+getPointAtLength_ self distance = liftDOM (void ((js_getPointAtLength ((Types.toSVGGeometryElement self)) (distance))))
+
+foreign import javascript safe "(($1) => { return $1[\"getTotalLength\"](); })"
+        js_getTotalLength :: SVGGeometryElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getTotalLength MDN SVGGeometryElement.getTotalLength documentation>
+getTotalLength :: (MonadDOM m, IsSVGGeometryElement self) => self -> m Float
+getTotalLength self = liftDOM ((js_getTotalLength ((Types.toSVGGeometryElement self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getTotalLength MDN SVGGeometryElement.getTotalLength documentation>
+getTotalLength_ :: (MonadDOM m, IsSVGGeometryElement self) => self -> m ()
+getTotalLength_ self = liftDOM (void ((js_getTotalLength ((Types.toSVGGeometryElement self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isPointInFill\"]($2); })"
+        js_isPointInFill :: SVGGeometryElement -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/isPointInFill MDN SVGGeometryElement.isPointInFill documentation>
+isPointInFill :: (MonadDOM m, IsSVGGeometryElement self) => self -> Maybe DOMPointInit -> m Bool
+isPointInFill self point = liftDOM (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_isPointInFill ((Types.toSVGGeometryElement self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/isPointInFill MDN SVGGeometryElement.isPointInFill documentation>
+isPointInFill_ :: (MonadDOM m, IsSVGGeometryElement self) => self -> Maybe DOMPointInit -> m ()
+isPointInFill_ self point = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_isPointInFill ((Types.toSVGGeometryElement self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isPointInStroke\"]($2); })"
+        js_isPointInStroke :: SVGGeometryElement -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/isPointInStroke MDN SVGGeometryElement.isPointInStroke documentation>
+isPointInStroke :: (MonadDOM m, IsSVGGeometryElement self) => self -> Maybe DOMPointInit -> m Bool
+isPointInStroke self point = liftDOM (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_isPointInStroke ((Types.toSVGGeometryElement self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/isPointInStroke MDN SVGGeometryElement.isPointInStroke documentation>
+isPointInStroke_ :: (MonadDOM m, IsSVGGeometryElement self) => self -> Maybe DOMPointInit -> m ()
+isPointInStroke_ self point = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_isPointInStroke ((Types.toSVGGeometryElement self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pathLength\"]; })"
+        js_getPathLength :: SVGGeometryElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/pathLength MDN SVGGeometryElement.pathLength documentation>
+getPathLength :: (MonadDOM m, IsSVGGeometryElement self) => self -> m SVGAnimatedNumber
+getPathLength self = liftDOM ((js_getPathLength ((Types.toSVGGeometryElement self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
+++ /dev/null
@@ -1,119 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement
-       (js_setGlyphRef, setGlyphRef, js_getGlyphRef, getGlyphRef,
-        js_setFormat, setFormat, js_getFormat, getFormat, js_setX, setX,
-        js_getX, getX, js_setY, setY, js_getY, getY, js_setDx, setDx,
-        js_getDx, getDx, js_setDy, setDy, js_getDy, getDy,
-        SVGGlyphRefElement(..), gTypeSVGGlyphRefElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"glyphRef\"] = $2; })"
-        js_setGlyphRef :: SVGGlyphRefElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
-setGlyphRef ::
-            (MonadIO m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
-setGlyphRef self val
-  = liftIO (js_setGlyphRef self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"glyphRef\"]; })" js_getGlyphRef
-        :: SVGGlyphRefElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
-getGlyphRef ::
-            (MonadIO m, FromJSString result) => SVGGlyphRefElement -> m result
-getGlyphRef self = liftIO (fromJSString <$> (js_getGlyphRef self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"format\"] = $2; })"
-        js_setFormat :: SVGGlyphRefElement -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
-setFormat ::
-          (MonadIO m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
-setFormat self val = liftIO (js_setFormat self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })" js_getFormat ::
-        SVGGlyphRefElement -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
-getFormat ::
-          (MonadIO m, FromJSString result) => SVGGlyphRefElement -> m result
-getFormat self = liftIO (fromJSString <$> (js_getFormat self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGGlyphRefElement -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
-setX :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGGlyphRefElement -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
-getX :: (MonadIO m) => SVGGlyphRefElement -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGGlyphRefElement -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
-setY :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGGlyphRefElement -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
-getY :: (MonadIO m) => SVGGlyphRefElement -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dx\"] = $2; })" js_setDx ::
-        SVGGlyphRefElement -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
-setDx :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
-setDx self val = liftIO (js_setDx self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
-        SVGGlyphRefElement -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
-getDx :: (MonadIO m) => SVGGlyphRefElement -> m Float
-getDx self = liftIO (js_getDx self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"dy\"] = $2; })" js_setDy ::
-        SVGGlyphRefElement -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
-setDy :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
-setDy self val = liftIO (js_setDy self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
-        SVGGlyphRefElement -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
-getDy :: (MonadIO m) => SVGGlyphRefElement -> m Float
-getDy self = liftIO (js_getDy self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
@@ -1,68 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGGradientElement
-       (pattern SVG_SPREADMETHOD_UNKNOWN, pattern SVG_SPREADMETHOD_PAD,
-        pattern SVG_SPREADMETHOD_REFLECT, pattern SVG_SPREADMETHOD_REPEAT,
-        js_getGradientUnits, getGradientUnits, js_getGradientTransform,
-        getGradientTransform, js_getSpreadMethod, getSpreadMethod,
-        SVGGradientElement(..), gTypeSVGGradientElement,
-        IsSVGGradientElement, toSVGGradientElement)
+       (js_getGradientUnits, js_getGradientTransform, js_getSpreadMethod, getGradientUnits, getGradientTransform, getSpreadMethod, pattern SVG_SPREADMETHOD_UNKNOWN, pattern SVG_SPREADMETHOD_PAD, pattern SVG_SPREADMETHOD_REFLECT, pattern SVG_SPREADMETHOD_REPEAT, SVGGradientElement(..), gTypeSVGGradientElement, IsSVGGradientElement, toSVGGradientElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SVG_SPREADMETHOD_UNKNOWN = 0
-pattern SVG_SPREADMETHOD_PAD = 1
-pattern SVG_SPREADMETHOD_REFLECT = 2
-pattern SVG_SPREADMETHOD_REPEAT = 3
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"gradientUnits\"]; })"
-        js_getGradientUnits ::
-        SVGGradientElement -> IO SVGAnimatedEnumeration
+        js_getGradientUnits :: SVGGradientElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGradientElement/gradientUnits MDN SVGGradientElement.gradientUnits documentation>
+getGradientUnits :: (MonadDOM m, IsSVGGradientElement self) => self -> m SVGAnimatedEnumeration
+getGradientUnits self = liftDOM ((js_getGradientUnits ((Types.toSVGGradientElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientUnits Mozilla SVGGradientElement.gradientUnits documentation> 
-getGradientUnits ::
-                 (MonadIO m, IsSVGGradientElement self) =>
-                   self -> m SVGAnimatedEnumeration
-getGradientUnits self
-  = liftIO (js_getGradientUnits (toSVGGradientElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"gradientTransform\"]; })"
-        js_getGradientTransform ::
-        SVGGradientElement -> IO SVGAnimatedTransformList
+        js_getGradientTransform :: SVGGradientElement -> IO SVGAnimatedTransformList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGradientElement/gradientTransform MDN SVGGradientElement.gradientTransform documentation>
+getGradientTransform :: (MonadDOM m, IsSVGGradientElement self) => self -> m SVGAnimatedTransformList
+getGradientTransform self = liftDOM ((js_getGradientTransform ((Types.toSVGGradientElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientTransform Mozilla SVGGradientElement.gradientTransform documentation> 
-getGradientTransform ::
-                     (MonadIO m, IsSVGGradientElement self) =>
-                       self -> m SVGAnimatedTransformList
-getGradientTransform self
-  = liftIO (js_getGradientTransform (toSVGGradientElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"spreadMethod\"]; })"
-        js_getSpreadMethod ::
-        SVGGradientElement -> IO SVGAnimatedEnumeration
+        js_getSpreadMethod :: SVGGradientElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGradientElement/spreadMethod MDN SVGGradientElement.spreadMethod documentation>
+getSpreadMethod :: (MonadDOM m, IsSVGGradientElement self) => self -> m SVGAnimatedEnumeration
+getSpreadMethod self = liftDOM ((js_getSpreadMethod ((Types.toSVGGradientElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.spreadMethod Mozilla SVGGradientElement.spreadMethod documentation> 
-getSpreadMethod ::
-                (MonadIO m, IsSVGGradientElement self) =>
-                  self -> m SVGAnimatedEnumeration
-getSpreadMethod self
-  = liftIO (js_getSpreadMethod (toSVGGradientElement self))
+pattern SVG_SPREADMETHOD_UNKNOWN = 0
+
+pattern SVG_SPREADMETHOD_PAD = 1
+
+pattern SVG_SPREADMETHOD_REFLECT = 2
+
+pattern SVG_SPREADMETHOD_REPEAT = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
@@ -1,128 +1,79 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
-       (js_getBBox, getBBox, getBBox_, js_getCTM, getCTM, getCTM_,
-        js_getScreenCTM, getScreenCTM, getScreenCTM_,
-        js_getTransformToElement, getTransformToElement,
-        getTransformToElement_, js_getTransform, getTransform,
-        js_getNearestViewportElement, getNearestViewportElement,
-        js_getFarthestViewportElement, getFarthestViewportElement,
-        SVGGraphicsElement(..), gTypeSVGGraphicsElement,
-        IsSVGGraphicsElement, toSVGGraphicsElement)
+       (js_getBBox, js_getBBox', js_getCTM, js_getScreenCTM, js_getTransform, getBBox, getBBox_, getBBox', getBBox'_, getCTM, getCTM_, getCTMUnsafe, getCTMUnchecked, getScreenCTM, getScreenCTM_, getScreenCTMUnsafe, getScreenCTMUnchecked, getTransform, SVGGraphicsElement(..), gTypeSVGGraphicsElement, IsSVGGraphicsElement, toSVGGraphicsElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getBBox\"](); })" js_getBBox ::
-        SVGGraphicsElement -> IO SVGRect
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
-getBBox ::
-        (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGRect
-getBBox self = liftIO (js_getBBox (toSVGGraphicsElement self))
+foreign import javascript safe "(($1) => { return $1[\"getBBox\"](); })"
+        js_getBBox :: SVGGraphicsElement -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getBBox MDN SVGGraphicsElement.getBBox documentation>
+getBBox :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m DOMRect
+getBBox self = liftDOM ((js_getBBox ((Types.toSVGGraphicsElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
-getBBox_ :: (MonadIO m, IsSVGGraphicsElement self) => self -> m ()
-getBBox_ self
-  = liftIO (void (js_getBBox (toSVGGraphicsElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getCTM\"](); })" js_getCTM ::
-        SVGGraphicsElement -> IO SVGMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getBBox MDN SVGGraphicsElement.getBBox documentation>
+getBBox_ :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m ()
+getBBox_ self = liftDOM (void ((js_getBBox ((Types.toSVGGraphicsElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
-getCTM ::
-       (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGMatrix
-getCTM self = liftIO (js_getCTM (toSVGGraphicsElement self))
+foreign import javascript safe "(($1, $2) => { return $1[\"getBBox\"]($2); })"
+        js_getBBox' :: SVGGraphicsElement -> JSVal -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getBBox MDN SVGGraphicsElement.getBBox documentation>
+getBBox' :: (MonadDOM m, IsSVGGraphicsElement self) => self -> Maybe SVGBoundingBoxOptions -> m DOMRect
+getBBox' self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getBBox' ((Types.toSVGGraphicsElement self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
-getCTM_ :: (MonadIO m, IsSVGGraphicsElement self) => self -> m ()
-getCTM_ self
-  = liftIO (void (js_getCTM (toSVGGraphicsElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getScreenCTM\"](); })"
-        js_getScreenCTM :: SVGGraphicsElement -> IO SVGMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getBBox MDN SVGGraphicsElement.getBBox documentation>
+getBBox'_ :: (MonadDOM m, IsSVGGraphicsElement self) => self -> Maybe SVGBoundingBoxOptions -> m ()
+getBBox'_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getBBox' ((Types.toSVGGraphicsElement self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
-getScreenCTM ::
-             (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGMatrix
-getScreenCTM self
-  = liftIO (js_getScreenCTM (toSVGGraphicsElement self))
+foreign import javascript safe "(($1) => { return $1[\"getCTM\"](); })"
+        js_getCTM :: SVGGraphicsElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getCTM MDN SVGGraphicsElement.getCTM documentation>
+getCTM :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m (Maybe DOMMatrix)
+getCTM self = liftDOM (((js_getCTM ((Types.toSVGGraphicsElement self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
-getScreenCTM_ ::
-              (MonadIO m, IsSVGGraphicsElement self) => self -> m ()
-getScreenCTM_ self
-  = liftIO (void (js_getScreenCTM (toSVGGraphicsElement self)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getTransformToElement\"]($2); })"
-        js_getTransformToElement ::
-        SVGGraphicsElement -> Optional SVGElement -> IO SVGMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getCTM MDN SVGGraphicsElement.getCTM documentation>
+getCTM_ :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m ()
+getCTM_ self = liftDOM (void ((js_getCTM ((Types.toSVGGraphicsElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
-getTransformToElement ::
-                      (MonadIO m, IsSVGGraphicsElement self, IsSVGElement element) =>
-                        self -> Maybe element -> m SVGMatrix
-getTransformToElement self element
-  = liftIO
-      (js_getTransformToElement (toSVGGraphicsElement self)
-         (maybeToOptional (fmap toSVGElement element)))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getCTM MDN SVGGraphicsElement.getCTM documentation>
+getCTMUnsafe :: (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) => self -> m DOMMatrix
+getCTMUnsafe self = liftDOM ((((js_getCTM ((Types.toSVGGraphicsElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
-getTransformToElement_ ::
-                       (MonadIO m, IsSVGGraphicsElement self, IsSVGElement element) =>
-                         self -> Maybe element -> m ()
-getTransformToElement_ self element
-  = liftIO
-      (void
-         (js_getTransformToElement (toSVGGraphicsElement self)
-            (maybeToOptional (fmap toSVGElement element))))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
-        js_getTransform ::
-        SVGGraphicsElement -> IO SVGAnimatedTransformList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getCTM MDN SVGGraphicsElement.getCTM documentation>
+getCTMUnchecked :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m DOMMatrix
+getCTMUnchecked self = liftDOM ((pFromJSVal <$> (js_getCTM ((Types.toSVGGraphicsElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.transform Mozilla SVGGraphicsElement.transform documentation> 
-getTransform ::
-             (MonadIO m, IsSVGGraphicsElement self) =>
-               self -> m SVGAnimatedTransformList
-getTransform self
-  = liftIO (js_getTransform (toSVGGraphicsElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nearestViewportElement\"]; })"
-        js_getNearestViewportElement :: SVGGraphicsElement -> IO SVGElement
+foreign import javascript safe "(($1) => { return $1[\"getScreenCTM\"](); })"
+        js_getScreenCTM :: SVGGraphicsElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getScreenCTM MDN SVGGraphicsElement.getScreenCTM documentation>
+getScreenCTM :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m (Maybe DOMMatrix)
+getScreenCTM self = liftDOM (((js_getScreenCTM ((Types.toSVGGraphicsElement self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.nearestViewportElement Mozilla SVGGraphicsElement.nearestViewportElement documentation> 
-getNearestViewportElement ::
-                          (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGElement
-getNearestViewportElement self
-  = liftIO (js_getNearestViewportElement (toSVGGraphicsElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"farthestViewportElement\"]; })"
-        js_getFarthestViewportElement ::
-        SVGGraphicsElement -> IO SVGElement
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getScreenCTM MDN SVGGraphicsElement.getScreenCTM documentation>
+getScreenCTM_ :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m ()
+getScreenCTM_ self = liftDOM (void ((js_getScreenCTM ((Types.toSVGGraphicsElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.farthestViewportElement Mozilla SVGGraphicsElement.farthestViewportElement documentation> 
-getFarthestViewportElement ::
-                           (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGElement
-getFarthestViewportElement self
-  = liftIO
-      (js_getFarthestViewportElement (toSVGGraphicsElement self))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getScreenCTM MDN SVGGraphicsElement.getScreenCTM documentation>
+getScreenCTMUnsafe :: (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) => self -> m DOMMatrix
+getScreenCTMUnsafe self = liftDOM ((((js_getScreenCTM ((Types.toSVGGraphicsElement self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getScreenCTM MDN SVGGraphicsElement.getScreenCTM documentation>
+getScreenCTMUnchecked :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m DOMMatrix
+getScreenCTMUnchecked self = liftDOM ((pFromJSVal <$> (js_getScreenCTM ((Types.toSVGGraphicsElement self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
+        js_getTransform :: SVGGraphicsElement -> IO SVGAnimatedTransformList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/transform MDN SVGGraphicsElement.transform documentation>
+getTransform :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGAnimatedTransformList
+getTransform self = liftDOM ((js_getTransform ((Types.toSVGGraphicsElement self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
@@ -1,66 +1,67 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGImageElement
-       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
-        getHeight, js_getPreserveAspectRatio, getPreserveAspectRatio,
-        SVGImageElement(..), gTypeSVGImageElement)
+       (js_getX, js_getY, js_getWidth, js_getHeight, js_getPreserveAspectRatio, js_setCrossOrigin, js_getCrossOrigin, getX, getY, getWidth, getHeight, getPreserveAspectRatio, setCrossOrigin, getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked, SVGImageElement(..), gTypeSVGImageElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGImageElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
-getX :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGImageElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGImageElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/x MDN SVGImageElement.x documentation>
+getX :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.y Mozilla SVGImageElement.y documentation> 
-getY :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGImageElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGImageElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/y MDN SVGImageElement.y documentation>
+getY :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.width Mozilla SVGImageElement.width documentation> 
-getWidth :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGImageElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGImageElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/width MDN SVGImageElement.width documentation>
+getWidth :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.height Mozilla SVGImageElement.height documentation> 
-getHeight :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGImageElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/height MDN SVGImageElement.height documentation>
+getHeight :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
-        js_getPreserveAspectRatio ::
-        SVGImageElement -> IO SVGAnimatedPreserveAspectRatio
+        js_getPreserveAspectRatio :: SVGImageElement -> IO SVGAnimatedPreserveAspectRatio
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/preserveAspectRatio MDN SVGImageElement.preserveAspectRatio documentation>
+getPreserveAspectRatio :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self = liftDOM ((js_getPreserveAspectRatio (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.preserveAspectRatio Mozilla SVGImageElement.preserveAspectRatio documentation> 
-getPreserveAspectRatio ::
-                       (MonadIO m) => SVGImageElement -> m SVGAnimatedPreserveAspectRatio
-getPreserveAspectRatio self
-  = liftIO (js_getPreserveAspectRatio self)
+foreign import javascript safe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: SVGImageElement -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/crossOrigin MDN SVGImageElement.crossOrigin documentation>
+setCrossOrigin :: (MonadDOM m, ToJSString val) => SVGImageElement -> Maybe val -> m ()
+setCrossOrigin self val = liftDOM (void ((js_setCrossOrigin (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: SVGImageElement -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/crossOrigin MDN SVGImageElement.crossOrigin documentation>
+getCrossOrigin :: (MonadDOM m, FromJSString result) => SVGImageElement -> m (Maybe result)
+getCrossOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/crossOrigin MDN SVGImageElement.crossOrigin documentation>
+getCrossOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SVGImageElement -> m result
+getCrossOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getCrossOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/crossOrigin MDN SVGImageElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, FromJSString result) => SVGImageElement -> m result
+getCrossOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getCrossOrigin (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
@@ -1,126 +1,93 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGLength
-       (js_newValueSpecifiedUnits, newValueSpecifiedUnits,
-        js_convertToSpecifiedUnits, convertToSpecifiedUnits,
-        pattern SVG_LENGTHTYPE_UNKNOWN, pattern SVG_LENGTHTYPE_NUMBER,
-        pattern SVG_LENGTHTYPE_PERCENTAGE, pattern SVG_LENGTHTYPE_EMS,
-        pattern SVG_LENGTHTYPE_EXS, pattern SVG_LENGTHTYPE_PX,
-        pattern SVG_LENGTHTYPE_CM, pattern SVG_LENGTHTYPE_MM,
-        pattern SVG_LENGTHTYPE_IN, pattern SVG_LENGTHTYPE_PT,
-        pattern SVG_LENGTHTYPE_PC, js_getUnitType, getUnitType,
-        js_setValue, setValue, js_getValue, getValue,
-        js_setValueInSpecifiedUnits, setValueInSpecifiedUnits,
-        js_getValueInSpecifiedUnits, getValueInSpecifiedUnits,
-        js_setValueAsString, setValueAsString, js_getValueAsString,
-        getValueAsString, SVGLength(..), gTypeSVGLength)
+       (js_convertToSpecifiedUnits, js_newValueSpecifiedUnits, js_getUnitType, js_setValue, js_getValue, js_setValueInSpecifiedUnits, js_getValueInSpecifiedUnits, js_setValueAsString, js_getValueAsString, convertToSpecifiedUnits, newValueSpecifiedUnits, getUnitType, setValue, getValue, setValueInSpecifiedUnits, getValueInSpecifiedUnits, setValueAsString, getValueAsString, pattern SVG_LENGTHTYPE_UNKNOWN, pattern SVG_LENGTHTYPE_NUMBER, pattern SVG_LENGTHTYPE_PERCENTAGE, pattern SVG_LENGTHTYPE_EMS, pattern SVG_LENGTHTYPE_EXS, pattern SVG_LENGTHTYPE_PX, pattern SVG_LENGTHTYPE_CM, pattern SVG_LENGTHTYPE_MM, pattern SVG_LENGTHTYPE_IN, pattern SVG_LENGTHTYPE_PT, pattern SVG_LENGTHTYPE_PC, SVGLength(..), gTypeSVGLength)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"newValueSpecifiedUnits\"]($2,\n$3); })" js_newValueSpecifiedUnits
-        :: SVGLength -> Word -> Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.newValueSpecifiedUnits Mozilla SVGLength.newValueSpecifiedUnits documentation> 
-newValueSpecifiedUnits ::
-                       (MonadIO m) => SVGLength -> Word -> Float -> m ()
-newValueSpecifiedUnits self unitType valueInSpecifiedUnits
-  = liftIO
-      (js_newValueSpecifiedUnits self unitType valueInSpecifiedUnits)
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"convertToSpecifiedUnits\"]($2); })" js_convertToSpecifiedUnits ::
-        SVGLength -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"convertToSpecifiedUnits\"]($2); })"
+        js_convertToSpecifiedUnits :: SVGLength -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/convertToSpecifiedUnits MDN SVGLength.convertToSpecifiedUnits documentation>
+convertToSpecifiedUnits :: (MonadDOM m) => SVGLength -> Word -> m ()
+convertToSpecifiedUnits self unitType = liftDOM (void ((js_convertToSpecifiedUnits (self) (unitType))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.convertToSpecifiedUnits Mozilla SVGLength.convertToSpecifiedUnits documentation> 
-convertToSpecifiedUnits :: (MonadIO m) => SVGLength -> Word -> m ()
-convertToSpecifiedUnits self unitType
-  = liftIO (js_convertToSpecifiedUnits self unitType)
-pattern SVG_LENGTHTYPE_UNKNOWN = 0
-pattern SVG_LENGTHTYPE_NUMBER = 1
-pattern SVG_LENGTHTYPE_PERCENTAGE = 2
-pattern SVG_LENGTHTYPE_EMS = 3
-pattern SVG_LENGTHTYPE_EXS = 4
-pattern SVG_LENGTHTYPE_PX = 5
-pattern SVG_LENGTHTYPE_CM = 6
-pattern SVG_LENGTHTYPE_MM = 7
-pattern SVG_LENGTHTYPE_IN = 8
-pattern SVG_LENGTHTYPE_PT = 9
-pattern SVG_LENGTHTYPE_PC = 10
- 
-foreign import javascript unsafe "(($1) => { return $1[\"unitType\"]; })" js_getUnitType
-        :: SVGLength -> IO Word
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"newValueSpecifiedUnits\"]($2, $3); })"
+        js_newValueSpecifiedUnits :: SVGLength -> Word -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/newValueSpecifiedUnits MDN SVGLength.newValueSpecifiedUnits documentation>
+newValueSpecifiedUnits :: (MonadDOM m) => SVGLength -> Word -> Float -> m ()
+newValueSpecifiedUnits self unitType valueInSpecifiedUnits = liftDOM (void ((js_newValueSpecifiedUnits (self) (unitType) (valueInSpecifiedUnits))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.unitType Mozilla SVGLength.unitType documentation> 
-getUnitType :: (MonadIO m) => SVGLength -> m Word
-getUnitType self = liftIO (js_getUnitType self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
-        SVGLength -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"unitType\"]; })"
+        js_getUnitType :: SVGLength -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/unitType MDN SVGLength.unitType documentation>
+getUnitType :: (MonadDOM m) => SVGLength -> m Word
+getUnitType self = liftDOM ((js_getUnitType (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
-setValue :: (MonadIO m) => SVGLength -> Float -> m ()
-setValue self val = liftIO (js_setValue self val)
- 
-foreign import javascript safe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        SVGLength -> IO Float
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: SVGLength -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/value MDN SVGLength.value documentation>
+setValue :: (MonadDOM m) => SVGLength -> Float -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
-getValue :: (MonadIO m) => SVGLength -> m Float
-getValue self = liftIO (js_getValue self)
- 
-foreign import javascript safe
-        "(($1, $2) => { $1[\"valueInSpecifiedUnits\"] = $2; })" js_setValueInSpecifiedUnits
-        :: SVGLength -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: SVGLength -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/value MDN SVGLength.value documentation>
+getValue :: (MonadDOM m) => SVGLength -> m Float
+getValue self = liftDOM ((js_getValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
-setValueInSpecifiedUnits ::
-                         (MonadIO m) => SVGLength -> Float -> m ()
-setValueInSpecifiedUnits self val
-  = liftIO (js_setValueInSpecifiedUnits self val)
- 
+foreign import javascript safe "(($1, $2) => { $1[\"valueInSpecifiedUnits\"] = $2; })"
+        js_setValueInSpecifiedUnits :: SVGLength -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/valueInSpecifiedUnits MDN SVGLength.valueInSpecifiedUnits documentation>
+setValueInSpecifiedUnits :: (MonadDOM m) => SVGLength -> Float -> m ()
+setValueInSpecifiedUnits self val = liftDOM (void ((js_setValueInSpecifiedUnits (self) (val))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"valueInSpecifiedUnits\"]; })"
         js_getValueInSpecifiedUnits :: SVGLength -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/valueInSpecifiedUnits MDN SVGLength.valueInSpecifiedUnits documentation>
+getValueInSpecifiedUnits :: (MonadDOM m) => SVGLength -> m Float
+getValueInSpecifiedUnits self = liftDOM ((js_getValueInSpecifiedUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
-getValueInSpecifiedUnits :: (MonadIO m) => SVGLength -> m Float
-getValueInSpecifiedUnits self
-  = liftIO (js_getValueInSpecifiedUnits self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"valueAsString\"] = $2; })"
         js_setValueAsString :: SVGLength -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/valueAsString MDN SVGLength.valueAsString documentation>
+setValueAsString :: (MonadDOM m, ToJSString val) => SVGLength -> val -> m ()
+setValueAsString self val = liftDOM (void ((js_setValueAsString (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
-setValueAsString ::
-                 (MonadIO m, ToJSString val) => SVGLength -> val -> m ()
-setValueAsString self val
-  = liftIO (js_setValueAsString self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"valueAsString\"]; })"
         js_getValueAsString :: SVGLength -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/valueAsString MDN SVGLength.valueAsString documentation>
+getValueAsString :: (MonadDOM m, FromJSString result) => SVGLength -> m result
+getValueAsString self = liftDOM ((fromJSString <$> (js_getValueAsString (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
-getValueAsString ::
-                 (MonadIO m, FromJSString result) => SVGLength -> m result
-getValueAsString self
-  = liftIO (fromJSString <$> (js_getValueAsString self))
+pattern SVG_LENGTHTYPE_UNKNOWN = 0
+
+pattern SVG_LENGTHTYPE_NUMBER = 1
+
+pattern SVG_LENGTHTYPE_PERCENTAGE = 2
+
+pattern SVG_LENGTHTYPE_EMS = 3
+
+pattern SVG_LENGTHTYPE_EXS = 4
+
+pattern SVG_LENGTHTYPE_PX = 5
+
+pattern SVG_LENGTHTYPE_CM = 6
+
+pattern SVG_LENGTHTYPE_MM = 7
+
+pattern SVG_LENGTHTYPE_IN = 8
+
+pattern SVG_LENGTHTYPE_PT = 9
+
+pattern SVG_LENGTHTYPE_PC = 10
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
@@ -1,123 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGLengthList
-       (js_clear, clear, js_initialize, initialize, initialize_,
-        js_getItem, getItem, getItem_, js_insertItemBefore,
-        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
-        replaceItem_, js_removeItem, removeItem, removeItem_,
-        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
-        getNumberOfItems, SVGLengthList(..), gTypeSVGLengthList)
+       (js_appendItem, js_clear, js_getItem, js_initialize, js_insertItemBefore, js_removeItem, js_replaceItem, js_getLength, js_getNumberOfItems, appendItem, appendItem_, clear, getItem, getItem_, initialize, initialize_, insertItemBefore, insertItemBefore_, removeItem, removeItem_, replaceItem, replaceItem_, getLength, getNumberOfItems, SVGLengthList(..), gTypeSVGLengthList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        SVGLengthList -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.clear Mozilla SVGLengthList.clear documentation> 
-clear :: (MonadIO m) => SVGLengthList -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
-        js_initialize :: SVGLengthList -> SVGLength -> IO SVGLength
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGLengthList -> SVGLength -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/appendItem MDN SVGLengthList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGLengthList -> SVGLength -> m SVGLength
+appendItem self newItem = liftDOM ((js_appendItem (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
-initialize ::
-           (MonadIO m) => SVGLengthList -> SVGLength -> m SVGLength
-initialize self item = liftIO (js_initialize self item)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/appendItem MDN SVGLengthList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> m ()
+appendItem_ self newItem = liftDOM (void ((js_appendItem (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
-initialize_ :: (MonadIO m) => SVGLengthList -> SVGLength -> m ()
-initialize_ self item = liftIO (void (js_initialize self item))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
-        SVGLengthList -> Word -> IO SVGLength
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: SVGLengthList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/clear MDN SVGLengthList.clear documentation>
+clear :: (MonadDOM m) => SVGLengthList -> m ()
+clear self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
-getItem :: (MonadIO m) => SVGLengthList -> Word -> m SVGLength
-getItem self index = liftIO (js_getItem self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })"
+        js_getItem :: SVGLengthList -> Word -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/getItem MDN SVGLengthList.getItem documentation>
+getItem :: (MonadDOM m) => SVGLengthList -> Word -> m SVGLength
+getItem self index = liftDOM ((js_getItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
-getItem_ :: (MonadIO m) => SVGLengthList -> Word -> m ()
-getItem_ self index = liftIO (void (js_getItem self index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
-        js_insertItemBefore ::
-        SVGLengthList -> SVGLength -> Word -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/getItem MDN SVGLengthList.getItem documentation>
+getItem_ :: (MonadDOM m) => SVGLengthList -> Word -> m ()
+getItem_ self index = liftDOM (void ((js_getItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
-insertItemBefore self item index
-  = liftIO (js_insertItemBefore self item index)
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGLengthList -> SVGLength -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/initialize MDN SVGLengthList.initialize documentation>
+initialize :: (MonadDOM m) => SVGLengthList -> SVGLength -> m SVGLength
+initialize self newItem = liftDOM ((js_initialize (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m ()
-insertItemBefore_ self item index
-  = liftIO (void (js_insertItemBefore self item index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
-        js_replaceItem ::
-        SVGLengthList -> SVGLength -> Word -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/initialize MDN SVGLengthList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> m ()
+initialize_ self newItem = liftDOM (void ((js_initialize (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
-replaceItem ::
-            (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
-replaceItem self item index
-  = liftIO (js_replaceItem self item index)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore :: SVGLengthList -> SVGLength -> Word -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/insertItemBefore MDN SVGLengthList.insertItemBefore documentation>
+insertItemBefore :: (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
+insertItemBefore self newItem index = liftDOM ((js_insertItemBefore (self) (newItem) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m ()
-replaceItem_ self item index
-  = liftIO (void (js_replaceItem self item index))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/insertItemBefore MDN SVGLengthList.insertItemBefore documentation>
+insertItemBefore_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m ()
+insertItemBefore_ self newItem index = liftDOM (void ((js_insertItemBefore (self) (newItem) (index))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
         js_removeItem :: SVGLengthList -> Word -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/removeItem MDN SVGLengthList.removeItem documentation>
+removeItem :: (MonadDOM m) => SVGLengthList -> Word -> m SVGLength
+removeItem self index = liftDOM ((js_removeItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
-removeItem :: (MonadIO m) => SVGLengthList -> Word -> m SVGLength
-removeItem self index = liftIO (js_removeItem self index)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/removeItem MDN SVGLengthList.removeItem documentation>
+removeItem_ :: (MonadDOM m) => SVGLengthList -> Word -> m ()
+removeItem_ self index = liftDOM (void ((js_removeItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
-removeItem_ :: (MonadIO m) => SVGLengthList -> Word -> m ()
-removeItem_ self index = liftIO (void (js_removeItem self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
-        js_appendItem :: SVGLengthList -> SVGLength -> IO SVGLength
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem :: SVGLengthList -> SVGLength -> Word -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/replaceItem MDN SVGLengthList.replaceItem documentation>
+replaceItem :: (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
+replaceItem self newItem index = liftDOM ((js_replaceItem (self) (newItem) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
-appendItem ::
-           (MonadIO m) => SVGLengthList -> SVGLength -> m SVGLength
-appendItem self item = liftIO (js_appendItem self item)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/replaceItem MDN SVGLengthList.replaceItem documentation>
+replaceItem_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m ()
+replaceItem_ self newItem index = liftDOM (void ((js_replaceItem (self) (newItem) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
-appendItem_ :: (MonadIO m) => SVGLengthList -> SVGLength -> m ()
-appendItem_ self item = liftIO (void (js_appendItem self item))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SVGLengthList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/length MDN SVGLengthList.length documentation>
+getLength :: (MonadDOM m) => SVGLengthList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
         js_getNumberOfItems :: SVGLengthList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.numberOfItems Mozilla SVGLengthList.numberOfItems documentation> 
-getNumberOfItems :: (MonadIO m) => SVGLengthList -> m Word
-getNumberOfItems self = liftIO (js_getNumberOfItems self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/numberOfItems MDN SVGLengthList.numberOfItems documentation>
+getNumberOfItems :: (MonadDOM m) => SVGLengthList -> m Word
+getNumberOfItems self = liftDOM ((js_getNumberOfItems (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
@@ -1,55 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGLineElement
-       (js_getX1, getX1, js_getY1, getY1, js_getX2, getX2, js_getY2,
-        getY2, SVGLineElement(..), gTypeSVGLineElement)
+       (js_getX1, js_getY1, js_getX2, js_getY2, getX1, getY1, getX2, getY2, SVGLineElement(..), gTypeSVGLineElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
-        SVGLineElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
-getX1 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
-getX1 self = liftIO (js_getX1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
-        SVGLineElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })"
+        js_getX1 :: SVGLineElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/x1 MDN SVGLineElement.x1 documentation>
+getX1 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
+getX1 self = liftDOM ((js_getX1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y1 Mozilla SVGLineElement.y1 documentation> 
-getY1 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
-getY1 self = liftIO (js_getY1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
-        SVGLineElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })"
+        js_getY1 :: SVGLineElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/y1 MDN SVGLineElement.y1 documentation>
+getY1 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
+getY1 self = liftDOM ((js_getY1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x2 Mozilla SVGLineElement.x2 documentation> 
-getX2 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
-getX2 self = liftIO (js_getX2 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
-        SVGLineElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })"
+        js_getX2 :: SVGLineElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/x2 MDN SVGLineElement.x2 documentation>
+getX2 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
+getX2 self = liftDOM ((js_getX2 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y2 Mozilla SVGLineElement.y2 documentation> 
-getY2 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
-getY2 self = liftIO (js_getY2 self)
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })"
+        js_getY2 :: SVGLineElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/y2 MDN SVGLineElement.y2 documentation>
+getY2 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
+getY2 self = liftDOM ((js_getY2 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
@@ -1,59 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
-       (js_getX1, getX1, js_getY1, getY1, js_getX2, getX2, js_getY2,
-        getY2, SVGLinearGradientElement(..), gTypeSVGLinearGradientElement)
+       (js_getX1, js_getY1, js_getX2, js_getY2, getX1, getY1, getX2, getY2, SVGLinearGradientElement(..), gTypeSVGLinearGradientElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
-        SVGLinearGradientElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
-getX1 ::
-      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getX1 self = liftIO (js_getX1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
-        SVGLinearGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })"
+        js_getX1 :: SVGLinearGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/x1 MDN SVGLinearGradientElement.x1 documentation>
+getX1 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getX1 self = liftDOM ((js_getX1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y1 Mozilla SVGLinearGradientElement.y1 documentation> 
-getY1 ::
-      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getY1 self = liftIO (js_getY1 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
-        SVGLinearGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })"
+        js_getY1 :: SVGLinearGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/y1 MDN SVGLinearGradientElement.y1 documentation>
+getY1 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getY1 self = liftDOM ((js_getY1 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x2 Mozilla SVGLinearGradientElement.x2 documentation> 
-getX2 ::
-      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getX2 self = liftIO (js_getX2 self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
-        SVGLinearGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })"
+        js_getX2 :: SVGLinearGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/x2 MDN SVGLinearGradientElement.x2 documentation>
+getX2 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getX2 self = liftDOM ((js_getX2 (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y2 Mozilla SVGLinearGradientElement.y2 documentation> 
-getY2 ::
-      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getY2 self = liftIO (js_getY2 self)
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })"
+        js_getY2 :: SVGLinearGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/y2 MDN SVGLinearGradientElement.y2 documentation>
+getY2 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getY2 self = liftDOM ((js_getY2 (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMPathElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGMPathElement
+       (SVGMPathElement(..), gTypeSVGMPathElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
@@ -1,111 +1,85 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGMarkerElement
-       (js_setOrientToAuto, setOrientToAuto, js_setOrientToAngle,
-        setOrientToAngle, pattern SVG_MARKERUNITS_UNKNOWN,
-        pattern SVG_MARKERUNITS_USERSPACEONUSE,
-        pattern SVG_MARKERUNITS_STROKEWIDTH,
-        pattern SVG_MARKER_ORIENT_UNKNOWN, pattern SVG_MARKER_ORIENT_AUTO,
-        pattern SVG_MARKER_ORIENT_ANGLE, js_getRefX, getRefX, js_getRefY,
-        getRefY, js_getMarkerUnits, getMarkerUnits, js_getMarkerWidth,
-        getMarkerWidth, js_getMarkerHeight, getMarkerHeight,
-        js_getOrientType, getOrientType, js_getOrientAngle, getOrientAngle,
-        SVGMarkerElement(..), gTypeSVGMarkerElement)
+       (js_setOrientToAngle, js_setOrientToAuto, js_getRefX, js_getRefY, js_getMarkerUnits, js_getMarkerWidth, js_getMarkerHeight, js_getOrientType, js_getOrientAngle, setOrientToAngle, setOrientToAuto, getRefX, getRefY, getMarkerUnits, getMarkerWidth, getMarkerHeight, getOrientType, getOrientAngle, pattern SVG_MARKERUNITS_UNKNOWN, pattern SVG_MARKERUNITS_USERSPACEONUSE, pattern SVG_MARKERUNITS_STROKEWIDTH, pattern SVG_MARKER_ORIENT_UNKNOWN, pattern SVG_MARKER_ORIENT_AUTO, pattern SVG_MARKER_ORIENT_ANGLE, pattern SVG_MARKER_ORIENT_AUTO_START_REVERSE, SVGMarkerElement(..), gTypeSVGMarkerElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"setOrientToAuto\"](); })"
-        js_setOrientToAuto :: SVGMarkerElement -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAuto Mozilla SVGMarkerElement.setOrientToAuto documentation> 
-setOrientToAuto :: (MonadIO m) => SVGMarkerElement -> m ()
-setOrientToAuto self = liftIO (js_setOrientToAuto self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setOrientToAngle\"]($2); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"setOrientToAngle\"]($2); })"
         js_setOrientToAngle :: SVGMarkerElement -> SVGAngle -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/setOrientToAngle MDN SVGMarkerElement.setOrientToAngle documentation>
+setOrientToAngle :: (MonadDOM m) => SVGMarkerElement -> SVGAngle -> m ()
+setOrientToAngle self angle = liftDOM (void ((js_setOrientToAngle (self) (angle))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAngle Mozilla SVGMarkerElement.setOrientToAngle documentation> 
-setOrientToAngle ::
-                 (MonadIO m) => SVGMarkerElement -> SVGAngle -> m ()
-setOrientToAngle self angle
-  = liftIO (js_setOrientToAngle self angle)
-pattern SVG_MARKERUNITS_UNKNOWN = 0
-pattern SVG_MARKERUNITS_USERSPACEONUSE = 1
-pattern SVG_MARKERUNITS_STROKEWIDTH = 2
-pattern SVG_MARKER_ORIENT_UNKNOWN = 0
-pattern SVG_MARKER_ORIENT_AUTO = 1
-pattern SVG_MARKER_ORIENT_ANGLE = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"refX\"]; })" js_getRefX ::
-        SVGMarkerElement -> IO SVGAnimatedLength
+foreign import javascript safe "(($1) => { return $1[\"setOrientToAuto\"](); })"
+        js_setOrientToAuto :: SVGMarkerElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/setOrientToAuto MDN SVGMarkerElement.setOrientToAuto documentation>
+setOrientToAuto :: (MonadDOM m) => SVGMarkerElement -> m ()
+setOrientToAuto self = liftDOM (void ((js_setOrientToAuto (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refX Mozilla SVGMarkerElement.refX documentation> 
-getRefX :: (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
-getRefX self = liftIO (js_getRefX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"refY\"]; })" js_getRefY ::
-        SVGMarkerElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"refX\"]; })"
+        js_getRefX :: SVGMarkerElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/refX MDN SVGMarkerElement.refX documentation>
+getRefX :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
+getRefX self = liftDOM ((js_getRefX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refY Mozilla SVGMarkerElement.refY documentation> 
-getRefY :: (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
-getRefY self = liftIO (js_getRefY self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"refY\"]; })"
+        js_getRefY :: SVGMarkerElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/refY MDN SVGMarkerElement.refY documentation>
+getRefY :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
+getRefY self = liftDOM ((js_getRefY (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"markerUnits\"]; })"
         js_getMarkerUnits :: SVGMarkerElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/markerUnits MDN SVGMarkerElement.markerUnits documentation>
+getMarkerUnits :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
+getMarkerUnits self = liftDOM ((js_getMarkerUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerUnits Mozilla SVGMarkerElement.markerUnits documentation> 
-getMarkerUnits ::
-               (MonadIO m) => SVGMarkerElement -> m SVGAnimatedEnumeration
-getMarkerUnits self = liftIO (js_getMarkerUnits self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"markerWidth\"]; })"
         js_getMarkerWidth :: SVGMarkerElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/markerWidth MDN SVGMarkerElement.markerWidth documentation>
+getMarkerWidth :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
+getMarkerWidth self = liftDOM ((js_getMarkerWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerWidth Mozilla SVGMarkerElement.markerWidth documentation> 
-getMarkerWidth ::
-               (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
-getMarkerWidth self = liftIO (js_getMarkerWidth self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"markerHeight\"]; })"
         js_getMarkerHeight :: SVGMarkerElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/markerHeight MDN SVGMarkerElement.markerHeight documentation>
+getMarkerHeight :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
+getMarkerHeight self = liftDOM ((js_getMarkerHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerHeight Mozilla SVGMarkerElement.markerHeight documentation> 
-getMarkerHeight ::
-                (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
-getMarkerHeight self = liftIO (js_getMarkerHeight self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"orientType\"]; })"
         js_getOrientType :: SVGMarkerElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/orientType MDN SVGMarkerElement.orientType documentation>
+getOrientType :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
+getOrientType self = liftDOM ((js_getOrientType (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientType Mozilla SVGMarkerElement.orientType documentation> 
-getOrientType ::
-              (MonadIO m) => SVGMarkerElement -> m SVGAnimatedEnumeration
-getOrientType self = liftIO (js_getOrientType self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"orientAngle\"]; })"
         js_getOrientAngle :: SVGMarkerElement -> IO SVGAnimatedAngle
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/orientAngle MDN SVGMarkerElement.orientAngle documentation>
+getOrientAngle :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedAngle
+getOrientAngle self = liftDOM ((js_getOrientAngle (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientAngle Mozilla SVGMarkerElement.orientAngle documentation> 
-getOrientAngle ::
-               (MonadIO m) => SVGMarkerElement -> m SVGAnimatedAngle
-getOrientAngle self = liftIO (js_getOrientAngle self)
+pattern SVG_MARKERUNITS_UNKNOWN = 0
+
+pattern SVG_MARKERUNITS_USERSPACEONUSE = 1
+
+pattern SVG_MARKERUNITS_STROKEWIDTH = 2
+
+pattern SVG_MARKER_ORIENT_UNKNOWN = 0
+
+pattern SVG_MARKER_ORIENT_AUTO = 1
+
+pattern SVG_MARKER_ORIENT_ANGLE = 2
+
+pattern SVG_MARKER_ORIENT_AUTO_START_REVERSE = 3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
@@ -1,74 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-masking-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGMaskElement
-       (js_getMaskUnits, getMaskUnits, js_getMaskContentUnits,
-        getMaskContentUnits, js_getX, getX, js_getY, getY, js_getWidth,
-        getWidth, js_getHeight, getHeight, SVGMaskElement(..),
-        gTypeSVGMaskElement)
+       (js_getMaskUnits, js_getMaskContentUnits, js_getX, js_getY, js_getWidth, js_getHeight, getMaskUnits, getMaskContentUnits, getX, getY, getWidth, getHeight, SVGMaskElement(..), gTypeSVGMaskElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"maskUnits\"]; })"
         js_getMaskUnits :: SVGMaskElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/maskUnits MDN SVGMaskElement.maskUnits documentation>
+getMaskUnits :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskUnits self = liftDOM ((js_getMaskUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
-getMaskUnits ::
-             (MonadIO m) => SVGMaskElement -> m SVGAnimatedEnumeration
-getMaskUnits self = liftIO (js_getMaskUnits self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"maskContentUnits\"]; })"
-        js_getMaskContentUnits ::
-        SVGMaskElement -> IO SVGAnimatedEnumeration
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskContentUnits Mozilla SVGMaskElement.maskContentUnits documentation> 
-getMaskContentUnits ::
-                    (MonadIO m) => SVGMaskElement -> m SVGAnimatedEnumeration
-getMaskContentUnits self = liftIO (js_getMaskContentUnits self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGMaskElement -> IO SVGAnimatedLength
+        js_getMaskContentUnits :: SVGMaskElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/maskContentUnits MDN SVGMaskElement.maskContentUnits documentation>
+getMaskContentUnits :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskContentUnits self = liftDOM ((js_getMaskContentUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.x Mozilla SVGMaskElement.x documentation> 
-getX :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGMaskElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGMaskElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/x MDN SVGMaskElement.x documentation>
+getX :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.y Mozilla SVGMaskElement.y documentation> 
-getY :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGMaskElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGMaskElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/y MDN SVGMaskElement.y documentation>
+getY :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.width Mozilla SVGMaskElement.width documentation> 
-getWidth :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGMaskElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGMaskElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/width MDN SVGMaskElement.width documentation>
+getWidth :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.height Mozilla SVGMaskElement.height documentation> 
-getHeight :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGMaskElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/height MDN SVGMaskElement.height documentation>
+getHeight :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs
+++ /dev/null
@@ -1,249 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGMatrix
-       (js_multiply, multiply, multiply_, js_inverse, inverse, inverse_,
-        js_translate, translate, translate_, js_scale, scale, scale_,
-        js_scaleNonUniform, scaleNonUniform, scaleNonUniform_, js_rotate,
-        rotate, rotate_, js_rotateFromVector, rotateFromVector,
-        rotateFromVector_, js_flipX, flipX, flipX_, js_flipY, flipY,
-        flipY_, js_skewX, skewX, skewX_, js_skewY, skewY, skewY_, js_setA,
-        setA, js_getA, getA, js_setB, setB, js_getB, getB, js_setC, setC,
-        js_getC, getC, js_setD, setD, js_getD, getD, js_setE, setE,
-        js_getE, getE, js_setF, setF, js_getF, getF, SVGMatrix(..),
-        gTypeSVGMatrix)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"multiply\"]($2); })" js_multiply
-        :: SVGMatrix -> SVGMatrix -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
-multiply :: (MonadIO m) => SVGMatrix -> SVGMatrix -> m SVGMatrix
-multiply self secondMatrix = liftIO (js_multiply self secondMatrix)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
-multiply_ :: (MonadIO m) => SVGMatrix -> SVGMatrix -> m ()
-multiply_ self secondMatrix
-  = liftIO (void (js_multiply self secondMatrix))
- 
-foreign import javascript safe "(($1) => { return $1[\"inverse\"](); })" js_inverse ::
-        SVGMatrix -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
-inverse :: (MonadIO m) => SVGMatrix -> m SVGMatrix
-inverse self = liftIO (js_inverse self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
-inverse_ :: (MonadIO m) => SVGMatrix -> m ()
-inverse_ self = liftIO (void (js_inverse self))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"translate\"]($2, $3); })"
-        js_translate :: SVGMatrix -> Float -> Float -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
-translate ::
-          (MonadIO m) => SVGMatrix -> Float -> Float -> m SVGMatrix
-translate self x y = liftIO (js_translate self x y)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
-translate_ :: (MonadIO m) => SVGMatrix -> Float -> Float -> m ()
-translate_ self x y = liftIO (void (js_translate self x y))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"scale\"]($2); })" js_scale ::
-        SVGMatrix -> Float -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
-scale :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
-scale self scaleFactor = liftIO (js_scale self scaleFactor)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
-scale_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
-scale_ self scaleFactor = liftIO (void (js_scale self scaleFactor))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"scaleNonUniform\"]($2, $3); })"
-        js_scaleNonUniform :: SVGMatrix -> Float -> Float -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
-scaleNonUniform ::
-                (MonadIO m) => SVGMatrix -> Float -> Float -> m SVGMatrix
-scaleNonUniform self scaleFactorX scaleFactorY
-  = liftIO (js_scaleNonUniform self scaleFactorX scaleFactorY)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
-scaleNonUniform_ ::
-                 (MonadIO m) => SVGMatrix -> Float -> Float -> m ()
-scaleNonUniform_ self scaleFactorX scaleFactorY
-  = liftIO (void (js_scaleNonUniform self scaleFactorX scaleFactorY))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"rotate\"]($2); })" js_rotate ::
-        SVGMatrix -> Float -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
-rotate :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
-rotate self angle = liftIO (js_rotate self angle)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
-rotate_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
-rotate_ self angle = liftIO (void (js_rotate self angle))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"rotateFromVector\"]($2, $3); })"
-        js_rotateFromVector :: SVGMatrix -> Float -> Float -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
-rotateFromVector ::
-                 (MonadIO m) => SVGMatrix -> Float -> Float -> m SVGMatrix
-rotateFromVector self x y = liftIO (js_rotateFromVector self x y)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
-rotateFromVector_ ::
-                  (MonadIO m) => SVGMatrix -> Float -> Float -> m ()
-rotateFromVector_ self x y
-  = liftIO (void (js_rotateFromVector self x y))
- 
-foreign import javascript safe "(($1) => { return $1[\"flipX\"](); })" js_flipX ::
-        SVGMatrix -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
-flipX :: (MonadIO m) => SVGMatrix -> m SVGMatrix
-flipX self = liftIO (js_flipX self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
-flipX_ :: (MonadIO m) => SVGMatrix -> m ()
-flipX_ self = liftIO (void (js_flipX self))
- 
-foreign import javascript safe "(($1) => { return $1[\"flipY\"](); })" js_flipY ::
-        SVGMatrix -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
-flipY :: (MonadIO m) => SVGMatrix -> m SVGMatrix
-flipY self = liftIO (js_flipY self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
-flipY_ :: (MonadIO m) => SVGMatrix -> m ()
-flipY_ self = liftIO (void (js_flipY self))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"skewX\"]($2); })" js_skewX ::
-        SVGMatrix -> Float -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
-skewX :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
-skewX self angle = liftIO (js_skewX self angle)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
-skewX_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
-skewX_ self angle = liftIO (void (js_skewX self angle))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"skewY\"]($2); })" js_skewY ::
-        SVGMatrix -> Float -> IO SVGMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
-skewY :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
-skewY self angle = liftIO (js_skewY self angle)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
-skewY_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
-skewY_ self angle = liftIO (void (js_skewY self angle))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"a\"] = $2; })" js_setA ::
-        SVGMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
-setA :: (MonadIO m) => SVGMatrix -> Double -> m ()
-setA self val = liftIO (js_setA self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })" js_getA ::
-        SVGMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
-getA :: (MonadIO m) => SVGMatrix -> m Double
-getA self = liftIO (js_getA self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"b\"] = $2; })" js_setB ::
-        SVGMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
-setB :: (MonadIO m) => SVGMatrix -> Double -> m ()
-setB self val = liftIO (js_setB self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })" js_getB ::
-        SVGMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
-getB :: (MonadIO m) => SVGMatrix -> m Double
-getB self = liftIO (js_getB self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"c\"] = $2; })" js_setC ::
-        SVGMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
-setC :: (MonadIO m) => SVGMatrix -> Double -> m ()
-setC self val = liftIO (js_setC self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"c\"]; })" js_getC ::
-        SVGMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
-getC :: (MonadIO m) => SVGMatrix -> m Double
-getC self = liftIO (js_getC self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"d\"] = $2; })" js_setD ::
-        SVGMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
-setD :: (MonadIO m) => SVGMatrix -> Double -> m ()
-setD self val = liftIO (js_setD self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })" js_getD ::
-        SVGMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
-getD :: (MonadIO m) => SVGMatrix -> m Double
-getD self = liftIO (js_getD self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"e\"] = $2; })" js_setE ::
-        SVGMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
-setE :: (MonadIO m) => SVGMatrix -> Double -> m ()
-setE self val = liftIO (js_setE self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })" js_getE ::
-        SVGMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
-getE :: (MonadIO m) => SVGMatrix -> m Double
-getE self = liftIO (js_getE self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"f\"] = $2; })" js_setF ::
-        SVGMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
-setF :: (MonadIO m) => SVGMatrix -> Double -> m ()
-setF self val = liftIO (js_setF self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"f\"]; })" js_getF ::
-        SVGMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
-getF :: (MonadIO m) => SVGMatrix -> m Double
-getF self = liftIO (js_getF self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMetadataElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMetadataElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMetadataElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGMetadataElement
+       (SVGMetadataElement(..), gTypeSVGMetadataElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
@@ -1,41 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGNumber
-       (js_setValue, setValue, js_getValue, getValue, SVGNumber(..),
-        gTypeSVGNumber)
+       (js_setValue, js_getValue, setValue, getValue, SVGNumber(..), gTypeSVGNumber)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
-        SVGNumber -> Float -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
-setValue :: (MonadIO m) => SVGNumber -> Float -> m ()
-setValue self val = liftIO (js_setValue self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
-        SVGNumber -> IO Float
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: SVGNumber -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumber/value MDN SVGNumber.value documentation>
+setValue :: (MonadDOM m) => SVGNumber -> Float -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
-getValue :: (MonadIO m) => SVGNumber -> m Float
-getValue self = liftIO (js_getValue self)
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: SVGNumber -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumber/value MDN SVGNumber.value documentation>
+getValue :: (MonadDOM m) => SVGNumber -> m Float
+getValue self = liftDOM ((js_getValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
@@ -1,123 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGNumberList
-       (js_clear, clear, js_initialize, initialize, initialize_,
-        js_getItem, getItem, getItem_, js_insertItemBefore,
-        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
-        replaceItem_, js_removeItem, removeItem, removeItem_,
-        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
-        getNumberOfItems, SVGNumberList(..), gTypeSVGNumberList)
+       (js_appendItem, js_clear, js_getItem, js_initialize, js_insertItemBefore, js_removeItem, js_replaceItem, js_getLength, js_getNumberOfItems, appendItem, appendItem_, clear, getItem, getItem_, initialize, initialize_, insertItemBefore, insertItemBefore_, removeItem, removeItem_, replaceItem, replaceItem_, getLength, getNumberOfItems, SVGNumberList(..), gTypeSVGNumberList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        SVGNumberList -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.clear Mozilla SVGNumberList.clear documentation> 
-clear :: (MonadIO m) => SVGNumberList -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
-        js_initialize :: SVGNumberList -> SVGNumber -> IO SVGNumber
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGNumberList -> SVGNumber -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/appendItem MDN SVGNumberList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m SVGNumber
+appendItem self newItem = liftDOM ((js_appendItem (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
-initialize ::
-           (MonadIO m) => SVGNumberList -> SVGNumber -> m SVGNumber
-initialize self item = liftIO (js_initialize self item)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/appendItem MDN SVGNumberList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m ()
+appendItem_ self newItem = liftDOM (void ((js_appendItem (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
-initialize_ :: (MonadIO m) => SVGNumberList -> SVGNumber -> m ()
-initialize_ self item = liftIO (void (js_initialize self item))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
-        SVGNumberList -> Word -> IO SVGNumber
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: SVGNumberList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/clear MDN SVGNumberList.clear documentation>
+clear :: (MonadDOM m) => SVGNumberList -> m ()
+clear self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
-getItem :: (MonadIO m) => SVGNumberList -> Word -> m SVGNumber
-getItem self index = liftIO (js_getItem self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })"
+        js_getItem :: SVGNumberList -> Word -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/getItem MDN SVGNumberList.getItem documentation>
+getItem :: (MonadDOM m) => SVGNumberList -> Word -> m SVGNumber
+getItem self index = liftDOM ((js_getItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
-getItem_ :: (MonadIO m) => SVGNumberList -> Word -> m ()
-getItem_ self index = liftIO (void (js_getItem self index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
-        js_insertItemBefore ::
-        SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/getItem MDN SVGNumberList.getItem documentation>
+getItem_ :: (MonadDOM m) => SVGNumberList -> Word -> m ()
+getItem_ self index = liftDOM (void ((js_getItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
-insertItemBefore self item index
-  = liftIO (js_insertItemBefore self item index)
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGNumberList -> SVGNumber -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/initialize MDN SVGNumberList.initialize documentation>
+initialize :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m SVGNumber
+initialize self newItem = liftDOM ((js_initialize (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m ()
-insertItemBefore_ self item index
-  = liftIO (void (js_insertItemBefore self item index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
-        js_replaceItem ::
-        SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/initialize MDN SVGNumberList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m ()
+initialize_ self newItem = liftDOM (void ((js_initialize (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
-replaceItem ::
-            (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
-replaceItem self item index
-  = liftIO (js_replaceItem self item index)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore :: SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/insertItemBefore MDN SVGNumberList.insertItemBefore documentation>
+insertItemBefore :: (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
+insertItemBefore self newItem index = liftDOM ((js_insertItemBefore (self) (newItem) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m ()
-replaceItem_ self item index
-  = liftIO (void (js_replaceItem self item index))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/insertItemBefore MDN SVGNumberList.insertItemBefore documentation>
+insertItemBefore_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m ()
+insertItemBefore_ self newItem index = liftDOM (void ((js_insertItemBefore (self) (newItem) (index))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
         js_removeItem :: SVGNumberList -> Word -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/removeItem MDN SVGNumberList.removeItem documentation>
+removeItem :: (MonadDOM m) => SVGNumberList -> Word -> m SVGNumber
+removeItem self index = liftDOM ((js_removeItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
-removeItem :: (MonadIO m) => SVGNumberList -> Word -> m SVGNumber
-removeItem self index = liftIO (js_removeItem self index)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/removeItem MDN SVGNumberList.removeItem documentation>
+removeItem_ :: (MonadDOM m) => SVGNumberList -> Word -> m ()
+removeItem_ self index = liftDOM (void ((js_removeItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
-removeItem_ :: (MonadIO m) => SVGNumberList -> Word -> m ()
-removeItem_ self index = liftIO (void (js_removeItem self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
-        js_appendItem :: SVGNumberList -> SVGNumber -> IO SVGNumber
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem :: SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/replaceItem MDN SVGNumberList.replaceItem documentation>
+replaceItem :: (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
+replaceItem self newItem index = liftDOM ((js_replaceItem (self) (newItem) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
-appendItem ::
-           (MonadIO m) => SVGNumberList -> SVGNumber -> m SVGNumber
-appendItem self item = liftIO (js_appendItem self item)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/replaceItem MDN SVGNumberList.replaceItem documentation>
+replaceItem_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m ()
+replaceItem_ self newItem index = liftDOM (void ((js_replaceItem (self) (newItem) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
-appendItem_ :: (MonadIO m) => SVGNumberList -> SVGNumber -> m ()
-appendItem_ self item = liftIO (void (js_appendItem self item))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SVGNumberList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/length MDN SVGNumberList.length documentation>
+getLength :: (MonadDOM m) => SVGNumberList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
         js_getNumberOfItems :: SVGNumberList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.numberOfItems Mozilla SVGNumberList.numberOfItems documentation> 
-getNumberOfItems :: (MonadIO m) => SVGNumberList -> m Word
-getNumberOfItems self = liftIO (js_getNumberOfItems self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/numberOfItems MDN SVGNumberList.numberOfItems documentation>
+getNumberOfItems :: (MonadDOM m) => SVGNumberList -> m Word
+getNumberOfItems self = liftDOM ((js_getNumberOfItems (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
@@ -1,767 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-paths (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGPathElement
-       (js_getTotalLength, getTotalLength, getTotalLength_,
-        js_getPointAtLength, getPointAtLength, getPointAtLength_,
-        js_getPathSegAtLength, getPathSegAtLength, getPathSegAtLength_,
-        js_createSVGPathSegClosePath, createSVGPathSegClosePath,
-        createSVGPathSegClosePath_, js_createSVGPathSegMovetoAbs,
-        createSVGPathSegMovetoAbs, createSVGPathSegMovetoAbs_,
-        js_createSVGPathSegMovetoRel, createSVGPathSegMovetoRel,
-        createSVGPathSegMovetoRel_, js_createSVGPathSegLinetoAbs,
-        createSVGPathSegLinetoAbs, createSVGPathSegLinetoAbs_,
-        js_createSVGPathSegLinetoRel, createSVGPathSegLinetoRel,
-        createSVGPathSegLinetoRel_, js_createSVGPathSegCurvetoCubicAbs,
-        createSVGPathSegCurvetoCubicAbs, createSVGPathSegCurvetoCubicAbs_,
-        js_createSVGPathSegCurvetoCubicRel,
-        createSVGPathSegCurvetoCubicRel, createSVGPathSegCurvetoCubicRel_,
-        js_createSVGPathSegCurvetoQuadraticAbs,
-        createSVGPathSegCurvetoQuadraticAbs,
-        createSVGPathSegCurvetoQuadraticAbs_,
-        js_createSVGPathSegCurvetoQuadraticRel,
-        createSVGPathSegCurvetoQuadraticRel,
-        createSVGPathSegCurvetoQuadraticRel_, js_createSVGPathSegArcAbs,
-        createSVGPathSegArcAbs, createSVGPathSegArcAbs_,
-        js_createSVGPathSegArcRel, createSVGPathSegArcRel,
-        createSVGPathSegArcRel_, js_createSVGPathSegLinetoHorizontalAbs,
-        createSVGPathSegLinetoHorizontalAbs,
-        createSVGPathSegLinetoHorizontalAbs_,
-        js_createSVGPathSegLinetoHorizontalRel,
-        createSVGPathSegLinetoHorizontalRel,
-        createSVGPathSegLinetoHorizontalRel_,
-        js_createSVGPathSegLinetoVerticalAbs,
-        createSVGPathSegLinetoVerticalAbs,
-        createSVGPathSegLinetoVerticalAbs_,
-        js_createSVGPathSegLinetoVerticalRel,
-        createSVGPathSegLinetoVerticalRel,
-        createSVGPathSegLinetoVerticalRel_,
-        js_createSVGPathSegCurvetoCubicSmoothAbs,
-        createSVGPathSegCurvetoCubicSmoothAbs,
-        createSVGPathSegCurvetoCubicSmoothAbs_,
-        js_createSVGPathSegCurvetoCubicSmoothRel,
-        createSVGPathSegCurvetoCubicSmoothRel,
-        createSVGPathSegCurvetoCubicSmoothRel_,
-        js_createSVGPathSegCurvetoQuadraticSmoothAbs,
-        createSVGPathSegCurvetoQuadraticSmoothAbs,
-        createSVGPathSegCurvetoQuadraticSmoothAbs_,
-        js_createSVGPathSegCurvetoQuadraticSmoothRel,
-        createSVGPathSegCurvetoQuadraticSmoothRel,
-        createSVGPathSegCurvetoQuadraticSmoothRel_, js_getPathLength,
-        getPathLength, js_getPathSegList, getPathSegList,
-        js_getNormalizedPathSegList, getNormalizedPathSegList,
-        js_getAnimatedPathSegList, getAnimatedPathSegList,
-        js_getAnimatedNormalizedPathSegList,
-        getAnimatedNormalizedPathSegList, SVGPathElement(..),
-        gTypeSVGPathElement)
+       (js_getPointAtLength, js_getTotalLength, js_getPathLength, getPointAtLength, getPointAtLength_, getTotalLength, getTotalLength_, getPathLength, SVGPathElement(..), gTypeSVGPathElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getTotalLength\"](); })"
-        js_getTotalLength :: SVGPathElement -> IO Float
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
-getTotalLength :: (MonadIO m) => SVGPathElement -> m Float
-getTotalLength self = liftIO (js_getTotalLength self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
-getTotalLength_ :: (MonadIO m) => SVGPathElement -> m ()
-getTotalLength_ self = liftIO (void (js_getTotalLength self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getPointAtLength\"]($2); })"
-        js_getPointAtLength ::
-        SVGPathElement -> Optional Float -> IO SVGPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
-getPointAtLength ::
-                 (MonadIO m) => SVGPathElement -> Maybe Float -> m SVGPoint
-getPointAtLength self distance
-  = liftIO (js_getPointAtLength self (maybeToOptional distance))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
-getPointAtLength_ ::
-                  (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
-getPointAtLength_ self distance
-  = liftIO
-      (void (js_getPointAtLength self (maybeToOptional distance)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getPathSegAtLength\"]($2); })"
-        js_getPathSegAtLength ::
-        SVGPathElement -> Optional Float -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
-getPathSegAtLength ::
-                   (MonadIO m) => SVGPathElement -> Maybe Float -> m Word
-getPathSegAtLength self distance
-  = liftIO (js_getPathSegAtLength self (maybeToOptional distance))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
-getPathSegAtLength_ ::
-                    (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
-getPathSegAtLength_ self distance
-  = liftIO
-      (void (js_getPathSegAtLength self (maybeToOptional distance)))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"createSVGPathSegClosePath\"](); })" js_createSVGPathSegClosePath
-        :: SVGPathElement -> IO SVGPathSegClosePath
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
-createSVGPathSegClosePath ::
-                          (MonadIO m) => SVGPathElement -> m SVGPathSegClosePath
-createSVGPathSegClosePath self
-  = liftIO (js_createSVGPathSegClosePath self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
-createSVGPathSegClosePath_ :: (MonadIO m) => SVGPathElement -> m ()
-createSVGPathSegClosePath_ self
-  = liftIO (void (js_createSVGPathSegClosePath self))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"createSVGPathSegMovetoAbs\"]($2,\n$3); })"
-        js_createSVGPathSegMovetoAbs ::
-        SVGPathElement ->
-          Optional Float -> Optional Float -> IO SVGPathSegMovetoAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
-createSVGPathSegMovetoAbs ::
-                          (MonadIO m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegMovetoAbs
-createSVGPathSegMovetoAbs self x y
-  = liftIO
-      (js_createSVGPathSegMovetoAbs self (maybeToOptional x)
-         (maybeToOptional y))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
-createSVGPathSegMovetoAbs_ ::
-                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegMovetoAbs_ self x y
-  = liftIO
-      (void
-         (js_createSVGPathSegMovetoAbs self (maybeToOptional x)
-            (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"createSVGPathSegMovetoRel\"]($2,\n$3); })"
-        js_createSVGPathSegMovetoRel ::
-        SVGPathElement ->
-          Optional Float -> Optional Float -> IO SVGPathSegMovetoRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
-createSVGPathSegMovetoRel ::
-                          (MonadIO m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegMovetoRel
-createSVGPathSegMovetoRel self x y
-  = liftIO
-      (js_createSVGPathSegMovetoRel self (maybeToOptional x)
-         (maybeToOptional y))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
-createSVGPathSegMovetoRel_ ::
-                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegMovetoRel_ self x y
-  = liftIO
-      (void
-         (js_createSVGPathSegMovetoRel self (maybeToOptional x)
-            (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"createSVGPathSegLinetoAbs\"]($2,\n$3); })"
-        js_createSVGPathSegLinetoAbs ::
-        SVGPathElement ->
-          Optional Float -> Optional Float -> IO SVGPathSegLinetoAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
-createSVGPathSegLinetoAbs ::
-                          (MonadIO m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegLinetoAbs
-createSVGPathSegLinetoAbs self x y
-  = liftIO
-      (js_createSVGPathSegLinetoAbs self (maybeToOptional x)
-         (maybeToOptional y))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
-createSVGPathSegLinetoAbs_ ::
-                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegLinetoAbs_ self x y
-  = liftIO
-      (void
-         (js_createSVGPathSegLinetoAbs self (maybeToOptional x)
-            (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"createSVGPathSegLinetoRel\"]($2,\n$3); })"
-        js_createSVGPathSegLinetoRel ::
-        SVGPathElement ->
-          Optional Float -> Optional Float -> IO SVGPathSegLinetoRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
-createSVGPathSegLinetoRel ::
-                          (MonadIO m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegLinetoRel
-createSVGPathSegLinetoRel self x y
-  = liftIO
-      (js_createSVGPathSegLinetoRel self (maybeToOptional x)
-         (maybeToOptional y))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
-createSVGPathSegLinetoRel_ ::
-                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegLinetoRel_ self x y
-  = liftIO
-      (void
-         (js_createSVGPathSegLinetoRel self (maybeToOptional x)
-            (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"createSVGPathSegCurvetoCubicAbs\"]($2,\n$3, $4, $5, $6, $7); })"
-        js_createSVGPathSegCurvetoCubicAbs ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float ->
-                  Optional Float -> Optional Float -> IO SVGPathSegCurvetoCubicAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
-createSVGPathSegCurvetoCubicAbs ::
-                                (MonadIO m) =>
-                                  SVGPathElement ->
-                                    Maybe Float ->
-                                      Maybe Float ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoCubicAbs
-createSVGPathSegCurvetoCubicAbs self x y x1 y1 x2 y2
-  = liftIO
-      (js_createSVGPathSegCurvetoCubicAbs self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional x1)
-         (maybeToOptional y1)
-         (maybeToOptional x2)
-         (maybeToOptional y2))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
-createSVGPathSegCurvetoCubicAbs_ ::
-                                 (MonadIO m) =>
-                                   SVGPathElement ->
-                                     Maybe Float ->
-                                       Maybe Float ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicAbs_ self x y x1 y1 x2 y2
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoCubicAbs self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional x1)
-            (maybeToOptional y1)
-            (maybeToOptional x2)
-            (maybeToOptional y2)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"createSVGPathSegCurvetoCubicRel\"]($2,\n$3, $4, $5, $6, $7); })"
-        js_createSVGPathSegCurvetoCubicRel ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float ->
-                  Optional Float -> Optional Float -> IO SVGPathSegCurvetoCubicRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
-createSVGPathSegCurvetoCubicRel ::
-                                (MonadIO m) =>
-                                  SVGPathElement ->
-                                    Maybe Float ->
-                                      Maybe Float ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoCubicRel
-createSVGPathSegCurvetoCubicRel self x y x1 y1 x2 y2
-  = liftIO
-      (js_createSVGPathSegCurvetoCubicRel self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional x1)
-         (maybeToOptional y1)
-         (maybeToOptional x2)
-         (maybeToOptional y2))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
-createSVGPathSegCurvetoCubicRel_ ::
-                                 (MonadIO m) =>
-                                   SVGPathElement ->
-                                     Maybe Float ->
-                                       Maybe Float ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicRel_ self x y x1 y1 x2 y2
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoCubicRel self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional x1)
-            (maybeToOptional y1)
-            (maybeToOptional x2)
-            (maybeToOptional y2)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoQuadraticAbs\"]($2,\n$3, $4, $5); })"
-        js_createSVGPathSegCurvetoQuadraticAbs ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float -> IO SVGPathSegCurvetoQuadraticAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
-createSVGPathSegCurvetoQuadraticAbs ::
-                                    (MonadIO m) =>
-                                      SVGPathElement ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoQuadraticAbs
-createSVGPathSegCurvetoQuadraticAbs self x y x1 y1
-  = liftIO
-      (js_createSVGPathSegCurvetoQuadraticAbs self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional x1)
-         (maybeToOptional y1))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
-createSVGPathSegCurvetoQuadraticAbs_ ::
-                                     (MonadIO m) =>
-                                       SVGPathElement ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticAbs_ self x y x1 y1
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoQuadraticAbs self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional x1)
-            (maybeToOptional y1)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoQuadraticRel\"]($2,\n$3, $4, $5); })"
-        js_createSVGPathSegCurvetoQuadraticRel ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float -> IO SVGPathSegCurvetoQuadraticRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
-createSVGPathSegCurvetoQuadraticRel ::
-                                    (MonadIO m) =>
-                                      SVGPathElement ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoQuadraticRel
-createSVGPathSegCurvetoQuadraticRel self x y x1 y1
-  = liftIO
-      (js_createSVGPathSegCurvetoQuadraticRel self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional x1)
-         (maybeToOptional y1))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
-createSVGPathSegCurvetoQuadraticRel_ ::
-                                     (MonadIO m) =>
-                                       SVGPathElement ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticRel_ self x y x1 y1
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoQuadraticRel self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional x1)
-            (maybeToOptional y1)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"createSVGPathSegArcAbs\"]($2,\n$3, $4, $5, $6, $7, $8); })"
-        js_createSVGPathSegArcAbs ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float ->
-                  Optional Float -> Bool -> Bool -> IO SVGPathSegArcAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
-createSVGPathSegArcAbs ::
-                       (MonadIO m) =>
-                         SVGPathElement ->
-                           Maybe Float ->
-                             Maybe Float ->
-                               Maybe Float ->
-                                 Maybe Float -> Maybe Float -> Bool -> Bool -> m SVGPathSegArcAbs
-createSVGPathSegArcAbs self x y r1 r2 angle largeArcFlag sweepFlag
-  = liftIO
-      (js_createSVGPathSegArcAbs self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional r1)
-         (maybeToOptional r2)
-         (maybeToOptional angle)
-         largeArcFlag
-         sweepFlag)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
-createSVGPathSegArcAbs_ ::
-                        (MonadIO m) =>
-                          SVGPathElement ->
-                            Maybe Float ->
-                              Maybe Float ->
-                                Maybe Float -> Maybe Float -> Maybe Float -> Bool -> Bool -> m ()
-createSVGPathSegArcAbs_ self x y r1 r2 angle largeArcFlag sweepFlag
-  = liftIO
-      (void
-         (js_createSVGPathSegArcAbs self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional r1)
-            (maybeToOptional r2)
-            (maybeToOptional angle)
-            largeArcFlag
-            sweepFlag))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"createSVGPathSegArcRel\"]($2,\n$3, $4, $5, $6, $7, $8); })"
-        js_createSVGPathSegArcRel ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float ->
-                  Optional Float -> Bool -> Bool -> IO SVGPathSegArcRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
-createSVGPathSegArcRel ::
-                       (MonadIO m) =>
-                         SVGPathElement ->
-                           Maybe Float ->
-                             Maybe Float ->
-                               Maybe Float ->
-                                 Maybe Float -> Maybe Float -> Bool -> Bool -> m SVGPathSegArcRel
-createSVGPathSegArcRel self x y r1 r2 angle largeArcFlag sweepFlag
-  = liftIO
-      (js_createSVGPathSegArcRel self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional r1)
-         (maybeToOptional r2)
-         (maybeToOptional angle)
-         largeArcFlag
-         sweepFlag)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
-createSVGPathSegArcRel_ ::
-                        (MonadIO m) =>
-                          SVGPathElement ->
-                            Maybe Float ->
-                              Maybe Float ->
-                                Maybe Float -> Maybe Float -> Maybe Float -> Bool -> Bool -> m ()
-createSVGPathSegArcRel_ self x y r1 r2 angle largeArcFlag sweepFlag
-  = liftIO
-      (void
-         (js_createSVGPathSegArcRel self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional r1)
-            (maybeToOptional r2)
-            (maybeToOptional angle)
-            largeArcFlag
-            sweepFlag))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createSVGPathSegLinetoHorizontalAbs\"]($2); })"
-        js_createSVGPathSegLinetoHorizontalAbs ::
-        SVGPathElement ->
-          Optional Float -> IO SVGPathSegLinetoHorizontalAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
-createSVGPathSegLinetoHorizontalAbs ::
-                                    (MonadIO m) =>
-                                      SVGPathElement ->
-                                        Maybe Float -> m SVGPathSegLinetoHorizontalAbs
-createSVGPathSegLinetoHorizontalAbs self x
-  = liftIO
-      (js_createSVGPathSegLinetoHorizontalAbs self (maybeToOptional x))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
-createSVGPathSegLinetoHorizontalAbs_ ::
-                                     (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoHorizontalAbs_ self x
-  = liftIO
-      (void
-         (js_createSVGPathSegLinetoHorizontalAbs self (maybeToOptional x)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createSVGPathSegLinetoHorizontalRel\"]($2); })"
-        js_createSVGPathSegLinetoHorizontalRel ::
-        SVGPathElement ->
-          Optional Float -> IO SVGPathSegLinetoHorizontalRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
-createSVGPathSegLinetoHorizontalRel ::
-                                    (MonadIO m) =>
-                                      SVGPathElement ->
-                                        Maybe Float -> m SVGPathSegLinetoHorizontalRel
-createSVGPathSegLinetoHorizontalRel self x
-  = liftIO
-      (js_createSVGPathSegLinetoHorizontalRel self (maybeToOptional x))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
-createSVGPathSegLinetoHorizontalRel_ ::
-                                     (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoHorizontalRel_ self x
-  = liftIO
-      (void
-         (js_createSVGPathSegLinetoHorizontalRel self (maybeToOptional x)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createSVGPathSegLinetoVerticalAbs\"]($2); })"
-        js_createSVGPathSegLinetoVerticalAbs ::
-        SVGPathElement -> Optional Float -> IO SVGPathSegLinetoVerticalAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
-createSVGPathSegLinetoVerticalAbs ::
-                                  (MonadIO m) =>
-                                    SVGPathElement -> Maybe Float -> m SVGPathSegLinetoVerticalAbs
-createSVGPathSegLinetoVerticalAbs self y
-  = liftIO
-      (js_createSVGPathSegLinetoVerticalAbs self (maybeToOptional y))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
-createSVGPathSegLinetoVerticalAbs_ ::
-                                   (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoVerticalAbs_ self y
-  = liftIO
-      (void
-         (js_createSVGPathSegLinetoVerticalAbs self (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createSVGPathSegLinetoVerticalRel\"]($2); })"
-        js_createSVGPathSegLinetoVerticalRel ::
-        SVGPathElement -> Optional Float -> IO SVGPathSegLinetoVerticalRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
-createSVGPathSegLinetoVerticalRel ::
-                                  (MonadIO m) =>
-                                    SVGPathElement -> Maybe Float -> m SVGPathSegLinetoVerticalRel
-createSVGPathSegLinetoVerticalRel self y
-  = liftIO
-      (js_createSVGPathSegLinetoVerticalRel self (maybeToOptional y))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
-createSVGPathSegLinetoVerticalRel_ ::
-                                   (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoVerticalRel_ self y
-  = liftIO
-      (void
-         (js_createSVGPathSegLinetoVerticalRel self (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoCubicSmoothAbs\"]($2,\n$3, $4, $5); })"
-        js_createSVGPathSegCurvetoCubicSmoothAbs ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float -> IO SVGPathSegCurvetoCubicSmoothAbs
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
-createSVGPathSegCurvetoCubicSmoothAbs ::
-                                      (MonadIO m) =>
-                                        SVGPathElement ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoCubicSmoothAbs
-createSVGPathSegCurvetoCubicSmoothAbs self x y x2 y2
-  = liftIO
-      (js_createSVGPathSegCurvetoCubicSmoothAbs self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional x2)
-         (maybeToOptional y2))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
-createSVGPathSegCurvetoCubicSmoothAbs_ ::
-                                       (MonadIO m) =>
-                                         SVGPathElement ->
-                                           Maybe Float ->
-                                             Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicSmoothAbs_ self x y x2 y2
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoCubicSmoothAbs self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional x2)
-            (maybeToOptional y2)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoCubicSmoothRel\"]($2,\n$3, $4, $5); })"
-        js_createSVGPathSegCurvetoCubicSmoothRel ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float ->
-              Optional Float ->
-                Optional Float -> IO SVGPathSegCurvetoCubicSmoothRel
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
-createSVGPathSegCurvetoCubicSmoothRel ::
-                                      (MonadIO m) =>
-                                        SVGPathElement ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoCubicSmoothRel
-createSVGPathSegCurvetoCubicSmoothRel self x y x2 y2
-  = liftIO
-      (js_createSVGPathSegCurvetoCubicSmoothRel self (maybeToOptional x)
-         (maybeToOptional y)
-         (maybeToOptional x2)
-         (maybeToOptional y2))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
-createSVGPathSegCurvetoCubicSmoothRel_ ::
-                                       (MonadIO m) =>
-                                         SVGPathElement ->
-                                           Maybe Float ->
-                                             Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicSmoothRel_ self x y x2 y2
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoCubicSmoothRel self (maybeToOptional x)
-            (maybeToOptional y)
-            (maybeToOptional x2)
-            (maybeToOptional y2)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"createSVGPathSegCurvetoQuadraticSmoothAbs\"]($2,\n$3); })"
-        js_createSVGPathSegCurvetoQuadraticSmoothAbs ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float -> IO SVGPathSegCurvetoQuadraticSmoothAbs
+foreign import javascript safe "(($1, $2) => { return $1[\"getPointAtLength\"]($2); })"
+        js_getPointAtLength :: SVGPathElement -> Float -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getPointAtLength MDN SVGPathElement.getPointAtLength documentation>
+getPointAtLength :: (MonadDOM m) => SVGPathElement -> Float -> m DOMPoint
+getPointAtLength self distance = liftDOM ((js_getPointAtLength (self) (distance)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
-createSVGPathSegCurvetoQuadraticSmoothAbs ::
-                                          (MonadIO m) =>
-                                            SVGPathElement ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoQuadraticSmoothAbs
-createSVGPathSegCurvetoQuadraticSmoothAbs self x y
-  = liftIO
-      (js_createSVGPathSegCurvetoQuadraticSmoothAbs self
-         (maybeToOptional x)
-         (maybeToOptional y))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getPointAtLength MDN SVGPathElement.getPointAtLength documentation>
+getPointAtLength_ :: (MonadDOM m) => SVGPathElement -> Float -> m ()
+getPointAtLength_ self distance = liftDOM (void ((js_getPointAtLength (self) (distance))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
-createSVGPathSegCurvetoQuadraticSmoothAbs_ ::
-                                           (MonadIO m) =>
-                                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticSmoothAbs_ self x y
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoQuadraticSmoothAbs self
-            (maybeToOptional x)
-            (maybeToOptional y)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"createSVGPathSegCurvetoQuadraticSmoothRel\"]($2,\n$3); })"
-        js_createSVGPathSegCurvetoQuadraticSmoothRel ::
-        SVGPathElement ->
-          Optional Float ->
-            Optional Float -> IO SVGPathSegCurvetoQuadraticSmoothRel
+foreign import javascript safe "(($1) => { return $1[\"getTotalLength\"](); })"
+        js_getTotalLength :: SVGPathElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getTotalLength MDN SVGPathElement.getTotalLength documentation>
+getTotalLength :: (MonadDOM m) => SVGPathElement -> m Float
+getTotalLength self = liftDOM ((js_getTotalLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
-createSVGPathSegCurvetoQuadraticSmoothRel ::
-                                          (MonadIO m) =>
-                                            SVGPathElement ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoQuadraticSmoothRel
-createSVGPathSegCurvetoQuadraticSmoothRel self x y
-  = liftIO
-      (js_createSVGPathSegCurvetoQuadraticSmoothRel self
-         (maybeToOptional x)
-         (maybeToOptional y))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getTotalLength MDN SVGPathElement.getTotalLength documentation>
+getTotalLength_ :: (MonadDOM m) => SVGPathElement -> m ()
+getTotalLength_ self = liftDOM (void ((js_getTotalLength (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
-createSVGPathSegCurvetoQuadraticSmoothRel_ ::
-                                           (MonadIO m) =>
-                                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticSmoothRel_ self x y
-  = liftIO
-      (void
-         (js_createSVGPathSegCurvetoQuadraticSmoothRel self
-            (maybeToOptional x)
-            (maybeToOptional y)))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"pathLength\"]; })"
         js_getPathLength :: SVGPathElement -> IO SVGAnimatedNumber
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathLength Mozilla SVGPathElement.pathLength documentation> 
-getPathLength ::
-              (MonadIO m) => SVGPathElement -> m SVGAnimatedNumber
-getPathLength self = liftIO (js_getPathLength self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pathSegList\"]; })"
-        js_getPathSegList :: SVGPathElement -> IO SVGPathSegList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathSegList Mozilla SVGPathElement.pathSegList documentation> 
-getPathSegList :: (MonadIO m) => SVGPathElement -> m SVGPathSegList
-getPathSegList self = liftIO (js_getPathSegList self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"normalizedPathSegList\"]; })"
-        js_getNormalizedPathSegList :: SVGPathElement -> IO SVGPathSegList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.normalizedPathSegList Mozilla SVGPathElement.normalizedPathSegList documentation> 
-getNormalizedPathSegList ::
-                         (MonadIO m) => SVGPathElement -> m SVGPathSegList
-getNormalizedPathSegList self
-  = liftIO (js_getNormalizedPathSegList self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animatedPathSegList\"]; })"
-        js_getAnimatedPathSegList :: SVGPathElement -> IO SVGPathSegList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedPathSegList Mozilla SVGPathElement.animatedPathSegList documentation> 
-getAnimatedPathSegList ::
-                       (MonadIO m) => SVGPathElement -> m SVGPathSegList
-getAnimatedPathSegList self
-  = liftIO (js_getAnimatedPathSegList self)
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"animatedNormalizedPathSegList\"]; })"
-        js_getAnimatedNormalizedPathSegList ::
-        SVGPathElement -> IO SVGPathSegList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedNormalizedPathSegList Mozilla SVGPathElement.animatedNormalizedPathSegList documentation> 
-getAnimatedNormalizedPathSegList ::
-                                 (MonadIO m) => SVGPathElement -> m SVGPathSegList
-getAnimatedNormalizedPathSegList self
-  = liftIO (js_getAnimatedNormalizedPathSegList self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/pathLength MDN SVGPathElement.pathLength documentation>
+getPathLength :: (MonadDOM m) => SVGPathElement -> m SVGAnimatedNumber
+getPathLength self = liftDOM ((js_getPathLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs
+++ /dev/null
@@ -1,81 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSeg
-       (pattern PATHSEG_UNKNOWN, pattern PATHSEG_CLOSEPATH,
-        pattern PATHSEG_MOVETO_ABS, pattern PATHSEG_MOVETO_REL,
-        pattern PATHSEG_LINETO_ABS, pattern PATHSEG_LINETO_REL,
-        pattern PATHSEG_CURVETO_CUBIC_ABS,
-        pattern PATHSEG_CURVETO_CUBIC_REL,
-        pattern PATHSEG_CURVETO_QUADRATIC_ABS,
-        pattern PATHSEG_CURVETO_QUADRATIC_REL, pattern PATHSEG_ARC_ABS,
-        pattern PATHSEG_ARC_REL, pattern PATHSEG_LINETO_HORIZONTAL_ABS,
-        pattern PATHSEG_LINETO_HORIZONTAL_REL,
-        pattern PATHSEG_LINETO_VERTICAL_ABS,
-        pattern PATHSEG_LINETO_VERTICAL_REL,
-        pattern PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,
-        pattern PATHSEG_CURVETO_CUBIC_SMOOTH_REL,
-        pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,
-        pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, js_getPathSegType,
-        getPathSegType, js_getPathSegTypeAsLetter, getPathSegTypeAsLetter,
-        SVGPathSeg(..), gTypeSVGPathSeg, IsSVGPathSeg, toSVGPathSeg)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern PATHSEG_UNKNOWN = 0
-pattern PATHSEG_CLOSEPATH = 1
-pattern PATHSEG_MOVETO_ABS = 2
-pattern PATHSEG_MOVETO_REL = 3
-pattern PATHSEG_LINETO_ABS = 4
-pattern PATHSEG_LINETO_REL = 5
-pattern PATHSEG_CURVETO_CUBIC_ABS = 6
-pattern PATHSEG_CURVETO_CUBIC_REL = 7
-pattern PATHSEG_CURVETO_QUADRATIC_ABS = 8
-pattern PATHSEG_CURVETO_QUADRATIC_REL = 9
-pattern PATHSEG_ARC_ABS = 10
-pattern PATHSEG_ARC_REL = 11
-pattern PATHSEG_LINETO_HORIZONTAL_ABS = 12
-pattern PATHSEG_LINETO_HORIZONTAL_REL = 13
-pattern PATHSEG_LINETO_VERTICAL_ABS = 14
-pattern PATHSEG_LINETO_VERTICAL_REL = 15
-pattern PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16
-pattern PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17
-pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18
-pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pathSegType\"]; })"
-        js_getPathSegType :: SVGPathSeg -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegType Mozilla SVGPathSeg.pathSegType documentation> 
-getPathSegType :: (MonadIO m, IsSVGPathSeg self) => self -> m Word
-getPathSegType self
-  = liftIO (js_getPathSegType (toSVGPathSeg self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pathSegTypeAsLetter\"]; })"
-        js_getPathSegTypeAsLetter :: SVGPathSeg -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegTypeAsLetter Mozilla SVGPathSeg.pathSegTypeAsLetter documentation> 
-getPathSegTypeAsLetter ::
-                       (MonadIO m, IsSVGPathSeg self, FromJSString result) =>
-                         self -> m result
-getPathSegTypeAsLetter self
-  = liftIO
-      (fromJSString <$> (js_getPathSegTypeAsLetter (toSVGPathSeg self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs
+++ /dev/null
@@ -1,129 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setR1, setR1, js_getR1, getR1, js_setR2, setR2, js_getR2, getR2,
-        js_setAngle, setAngle, js_getAngle, getAngle, js_setLargeArcFlag,
-        setLargeArcFlag, js_getLargeArcFlag, getLargeArcFlag,
-        js_setSweepFlag, setSweepFlag, js_getSweepFlag, getSweepFlag,
-        SVGPathSegArcAbs(..), gTypeSVGPathSegArcAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegArcAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
-setX :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegArcAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
-getX :: (MonadIO m) => SVGPathSegArcAbs -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegArcAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
-setY :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegArcAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
-getY :: (MonadIO m) => SVGPathSegArcAbs -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"r1\"] = $2; })" js_setR1 ::
-        SVGPathSegArcAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
-setR1 :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
-setR1 self val = liftIO (js_setR1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"r1\"]; })" js_getR1 ::
-        SVGPathSegArcAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
-getR1 :: (MonadIO m) => SVGPathSegArcAbs -> m Float
-getR1 self = liftIO (js_getR1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"r2\"] = $2; })" js_setR2 ::
-        SVGPathSegArcAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
-setR2 :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
-setR2 self val = liftIO (js_setR2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"r2\"]; })" js_getR2 ::
-        SVGPathSegArcAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
-getR2 :: (MonadIO m) => SVGPathSegArcAbs -> m Float
-getR2 self = liftIO (js_getR2 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"angle\"] = $2; })" js_setAngle
-        :: SVGPathSegArcAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
-setAngle :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
-setAngle self val = liftIO (js_setAngle self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })" js_getAngle ::
-        SVGPathSegArcAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
-getAngle :: (MonadIO m) => SVGPathSegArcAbs -> m Float
-getAngle self = liftIO (js_getAngle self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"largeArcFlag\"] = $2; })"
-        js_setLargeArcFlag :: SVGPathSegArcAbs -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
-setLargeArcFlag :: (MonadIO m) => SVGPathSegArcAbs -> Bool -> m ()
-setLargeArcFlag self val = liftIO (js_setLargeArcFlag self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"largeArcFlag\"] ? 1 : 0); })"
-        js_getLargeArcFlag :: SVGPathSegArcAbs -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
-getLargeArcFlag :: (MonadIO m) => SVGPathSegArcAbs -> m Bool
-getLargeArcFlag self = liftIO (js_getLargeArcFlag self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"sweepFlag\"] = $2; })"
-        js_setSweepFlag :: SVGPathSegArcAbs -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
-setSweepFlag :: (MonadIO m) => SVGPathSegArcAbs -> Bool -> m ()
-setSweepFlag self val = liftIO (js_setSweepFlag self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"sweepFlag\"] ? 1 : 0); })"
-        js_getSweepFlag :: SVGPathSegArcAbs -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
-getSweepFlag :: (MonadIO m) => SVGPathSegArcAbs -> m Bool
-getSweepFlag self = liftIO (js_getSweepFlag self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs
+++ /dev/null
@@ -1,129 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setR1, setR1, js_getR1, getR1, js_setR2, setR2, js_getR2, getR2,
-        js_setAngle, setAngle, js_getAngle, getAngle, js_setLargeArcFlag,
-        setLargeArcFlag, js_getLargeArcFlag, getLargeArcFlag,
-        js_setSweepFlag, setSweepFlag, js_getSweepFlag, getSweepFlag,
-        SVGPathSegArcRel(..), gTypeSVGPathSegArcRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegArcRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
-setX :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegArcRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
-getX :: (MonadIO m) => SVGPathSegArcRel -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegArcRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
-setY :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegArcRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
-getY :: (MonadIO m) => SVGPathSegArcRel -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"r1\"] = $2; })" js_setR1 ::
-        SVGPathSegArcRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
-setR1 :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
-setR1 self val = liftIO (js_setR1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"r1\"]; })" js_getR1 ::
-        SVGPathSegArcRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
-getR1 :: (MonadIO m) => SVGPathSegArcRel -> m Float
-getR1 self = liftIO (js_getR1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"r2\"] = $2; })" js_setR2 ::
-        SVGPathSegArcRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
-setR2 :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
-setR2 self val = liftIO (js_setR2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"r2\"]; })" js_getR2 ::
-        SVGPathSegArcRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
-getR2 :: (MonadIO m) => SVGPathSegArcRel -> m Float
-getR2 self = liftIO (js_getR2 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"angle\"] = $2; })" js_setAngle
-        :: SVGPathSegArcRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
-setAngle :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
-setAngle self val = liftIO (js_setAngle self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })" js_getAngle ::
-        SVGPathSegArcRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
-getAngle :: (MonadIO m) => SVGPathSegArcRel -> m Float
-getAngle self = liftIO (js_getAngle self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"largeArcFlag\"] = $2; })"
-        js_setLargeArcFlag :: SVGPathSegArcRel -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
-setLargeArcFlag :: (MonadIO m) => SVGPathSegArcRel -> Bool -> m ()
-setLargeArcFlag self val = liftIO (js_setLargeArcFlag self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"largeArcFlag\"] ? 1 : 0); })"
-        js_getLargeArcFlag :: SVGPathSegArcRel -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
-getLargeArcFlag :: (MonadIO m) => SVGPathSegArcRel -> m Bool
-getLargeArcFlag self = liftIO (js_getLargeArcFlag self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"sweepFlag\"] = $2; })"
-        js_setSweepFlag :: SVGPathSegArcRel -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
-setSweepFlag :: (MonadIO m) => SVGPathSegArcRel -> Bool -> m ()
-setSweepFlag self val = liftIO (js_setSweepFlag self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"sweepFlag\"] ? 1 : 0); })"
-        js_getSweepFlag :: SVGPathSegArcRel -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
-getSweepFlag :: (MonadIO m) => SVGPathSegArcRel -> m Bool
-getSweepFlag self = liftIO (js_getSweepFlag self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
-        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
-        SVGPathSegCurvetoCubicAbs(..), gTypeSVGPathSegCurvetoCubicAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
-setX :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoCubicAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
-getX :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
-setY :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoCubicAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
-getY :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
-        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
-setX1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setX1 self val = liftIO (js_setX1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
-        SVGPathSegCurvetoCubicAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
-getX1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
-getX1 self = liftIO (js_getX1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
-        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
-setY1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setY1 self val = liftIO (js_setY1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
-        SVGPathSegCurvetoCubicAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
-getY1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
-getY1 self = liftIO (js_getY1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
-        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
-setX2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setX2 self val = liftIO (js_setX2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
-        SVGPathSegCurvetoCubicAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
-getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
-getX2 self = liftIO (js_getX2 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
-        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
-setY2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setY2 self val = liftIO (js_setY2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
-        SVGPathSegCurvetoCubicAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
-getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
-getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
-        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
-        SVGPathSegCurvetoCubicRel(..), gTypeSVGPathSegCurvetoCubicRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoCubicRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
-setX :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoCubicRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
-getX :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoCubicRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
-setY :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoCubicRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
-getY :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
-        SVGPathSegCurvetoCubicRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
-setX1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setX1 self val = liftIO (js_setX1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
-        SVGPathSegCurvetoCubicRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
-getX1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
-getX1 self = liftIO (js_getX1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
-        SVGPathSegCurvetoCubicRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
-setY1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setY1 self val = liftIO (js_setY1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
-        SVGPathSegCurvetoCubicRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
-getY1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
-getY1 self = liftIO (js_getY1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
-        SVGPathSegCurvetoCubicRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
-setX2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setX2 self val = liftIO (js_setX2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
-        SVGPathSegCurvetoCubicRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
-getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
-getX2 self = liftIO (js_getX2 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
-        SVGPathSegCurvetoCubicRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
-setY2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setY2 self val = liftIO (js_setY2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
-        SVGPathSegCurvetoCubicRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
-getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
-getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
+++ /dev/null
@@ -1,89 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
-        SVGPathSegCurvetoCubicSmoothAbs(..),
-        gTypeSVGPathSegCurvetoCubicSmoothAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
-getX :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
-setY ::
-     (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
-getY :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
-        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
-setX2 ::
-      (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setX2 self val = liftIO (js_setX2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
-        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
-getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getX2 self = liftIO (js_getX2 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
-        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
-setY2 ::
-      (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setY2 self val = liftIO (js_setY2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
-        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
-getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
+++ /dev/null
@@ -1,89 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
-        SVGPathSegCurvetoCubicSmoothRel(..),
-        gTypeSVGPathSegCurvetoCubicSmoothRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoCubicSmoothRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
-getX :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
-setY ::
-     (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoCubicSmoothRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
-getY :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
-        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
-setX2 ::
-      (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setX2 self val = liftIO (js_setX2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
-        SVGPathSegCurvetoCubicSmoothRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
-getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getX2 self = liftIO (js_getX2 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
-        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
-setY2 ::
-      (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setY2 self val = liftIO (js_setY2 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
-        SVGPathSegCurvetoCubicSmoothRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
-getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs
+++ /dev/null
@@ -1,89 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
-        SVGPathSegCurvetoQuadraticAbs(..),
-        gTypeSVGPathSegCurvetoQuadraticAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoQuadraticAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
-getX :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
-setY ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoQuadraticAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
-getY :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
-        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
-setX1 ::
-      (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setX1 self val = liftIO (js_setX1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
-        SVGPathSegCurvetoQuadraticAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
-getX1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getX1 self = liftIO (js_getX1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
-        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
-setY1 ::
-      (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setY1 self val = liftIO (js_setY1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
-        SVGPathSegCurvetoQuadraticAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
-getY1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getY1 self = liftIO (js_getY1 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs
+++ /dev/null
@@ -1,89 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
-        SVGPathSegCurvetoQuadraticRel(..),
-        gTypeSVGPathSegCurvetoQuadraticRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoQuadraticRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
-getX :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
-setY ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoQuadraticRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
-getY :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
-        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
-setX1 ::
-      (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setX1 self val = liftIO (js_setX1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
-        SVGPathSegCurvetoQuadraticRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
-getX1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getX1 self = liftIO (js_getX1 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
-        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
-setY1 ::
-      (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setY1 self val = liftIO (js_setY1 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
-        SVGPathSegCurvetoQuadraticRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
-getY1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getY1 self = liftIO (js_getY1 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        SVGPathSegCurvetoQuadraticSmoothAbs(..),
-        gTypeSVGPathSegCurvetoQuadraticSmoothAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoQuadraticSmoothAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
-getX ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
-setY ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoQuadraticSmoothAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
-getY ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        SVGPathSegCurvetoQuadraticSmoothRel(..),
-        gTypeSVGPathSegCurvetoQuadraticSmoothRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegCurvetoQuadraticSmoothRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegCurvetoQuadraticSmoothRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
-getX ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegCurvetoQuadraticSmoothRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
-setY ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegCurvetoQuadraticSmoothRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
-getY ::
-     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        SVGPathSegLinetoAbs(..), gTypeSVGPathSegLinetoAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegLinetoAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
-setX :: (MonadIO m) => SVGPathSegLinetoAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegLinetoAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
-getX :: (MonadIO m) => SVGPathSegLinetoAbs -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegLinetoAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
-setY :: (MonadIO m) => SVGPathSegLinetoAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegLinetoAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
-getY :: (MonadIO m) => SVGPathSegLinetoAbs -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs
-       (js_setX, setX, js_getX, getX, SVGPathSegLinetoHorizontalAbs(..),
-        gTypeSVGPathSegLinetoHorizontalAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegLinetoHorizontalAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegLinetoHorizontalAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegLinetoHorizontalAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
-getX :: (MonadIO m) => SVGPathSegLinetoHorizontalAbs -> m Float
-getX self = liftIO (js_getX self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel
-       (js_setX, setX, js_getX, getX, SVGPathSegLinetoHorizontalRel(..),
-        gTypeSVGPathSegLinetoHorizontalRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegLinetoHorizontalRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
-setX ::
-     (MonadIO m) => SVGPathSegLinetoHorizontalRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegLinetoHorizontalRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
-getX :: (MonadIO m) => SVGPathSegLinetoHorizontalRel -> m Float
-getX self = liftIO (js_getX self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        SVGPathSegLinetoRel(..), gTypeSVGPathSegLinetoRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegLinetoRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
-setX :: (MonadIO m) => SVGPathSegLinetoRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegLinetoRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
-getX :: (MonadIO m) => SVGPathSegLinetoRel -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegLinetoRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
-setY :: (MonadIO m) => SVGPathSegLinetoRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegLinetoRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
-getY :: (MonadIO m) => SVGPathSegLinetoRel -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs
-       (js_setY, setY, js_getY, getY, SVGPathSegLinetoVerticalAbs(..),
-        gTypeSVGPathSegLinetoVerticalAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegLinetoVerticalAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
-setY :: (MonadIO m) => SVGPathSegLinetoVerticalAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegLinetoVerticalAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
-getY :: (MonadIO m) => SVGPathSegLinetoVerticalAbs -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel
-       (js_setY, setY, js_getY, getY, SVGPathSegLinetoVerticalRel(..),
-        gTypeSVGPathSegLinetoVerticalRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegLinetoVerticalRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
-setY :: (MonadIO m) => SVGPathSegLinetoVerticalRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegLinetoVerticalRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
-getY :: (MonadIO m) => SVGPathSegLinetoVerticalRel -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs
+++ /dev/null
@@ -1,157 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegList
-       (js_clear, clear, js_initialize, initialize, initialize_,
-        js_getItem, getItem, getItem_, js_insertItemBefore,
-        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
-        replaceItem_, js_removeItem, removeItem, removeItem_,
-        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
-        getNumberOfItems, SVGPathSegList(..), gTypeSVGPathSegList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        SVGPathSegList -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
-clear :: (MonadIO m) => SVGPathSegList -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
-        js_initialize ::
-        SVGPathSegList -> Optional SVGPathSeg -> IO SVGPathSeg
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
-initialize ::
-           (MonadIO m, IsSVGPathSeg newItem) =>
-             SVGPathSegList -> Maybe newItem -> m SVGPathSeg
-initialize self newItem
-  = liftIO
-      (js_initialize self (maybeToOptional (fmap toSVGPathSeg newItem)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
-initialize_ ::
-            (MonadIO m, IsSVGPathSeg newItem) =>
-              SVGPathSegList -> Maybe newItem -> m ()
-initialize_ self newItem
-  = liftIO
-      (void
-         (js_initialize self (maybeToOptional (fmap toSVGPathSeg newItem))))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
-        SVGPathSegList -> Word -> IO SVGPathSeg
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
-getItem :: (MonadIO m) => SVGPathSegList -> Word -> m SVGPathSeg
-getItem self index = liftIO (js_getItem self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
-getItem_ :: (MonadIO m) => SVGPathSegList -> Word -> m ()
-getItem_ self index = liftIO (void (js_getItem self index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
-        js_insertItemBefore ::
-        SVGPathSegList -> Optional SVGPathSeg -> Word -> IO SVGPathSeg
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadIO m, IsSVGPathSeg newItem) =>
-                   SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
-insertItemBefore self newItem index
-  = liftIO
-      (js_insertItemBefore self
-         (maybeToOptional (fmap toSVGPathSeg newItem))
-         index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadIO m, IsSVGPathSeg newItem) =>
-                    SVGPathSegList -> Maybe newItem -> Word -> m ()
-insertItemBefore_ self newItem index
-  = liftIO
-      (void
-         (js_insertItemBefore self
-            (maybeToOptional (fmap toSVGPathSeg newItem))
-            index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
-        js_replaceItem ::
-        SVGPathSegList -> Optional SVGPathSeg -> Word -> IO SVGPathSeg
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
-replaceItem ::
-            (MonadIO m, IsSVGPathSeg newItem) =>
-              SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
-replaceItem self newItem index
-  = liftIO
-      (js_replaceItem self (maybeToOptional (fmap toSVGPathSeg newItem))
-         index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadIO m, IsSVGPathSeg newItem) =>
-               SVGPathSegList -> Maybe newItem -> Word -> m ()
-replaceItem_ self newItem index
-  = liftIO
-      (void
-         (js_replaceItem self (maybeToOptional (fmap toSVGPathSeg newItem))
-            index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
-        js_removeItem :: SVGPathSegList -> Word -> IO SVGPathSeg
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
-removeItem :: (MonadIO m) => SVGPathSegList -> Word -> m SVGPathSeg
-removeItem self index = liftIO (js_removeItem self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
-removeItem_ :: (MonadIO m) => SVGPathSegList -> Word -> m ()
-removeItem_ self index = liftIO (void (js_removeItem self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
-        js_appendItem ::
-        SVGPathSegList -> Optional SVGPathSeg -> IO SVGPathSeg
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
-appendItem ::
-           (MonadIO m, IsSVGPathSeg newItem) =>
-             SVGPathSegList -> Maybe newItem -> m SVGPathSeg
-appendItem self newItem
-  = liftIO
-      (js_appendItem self (maybeToOptional (fmap toSVGPathSeg newItem)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
-appendItem_ ::
-            (MonadIO m, IsSVGPathSeg newItem) =>
-              SVGPathSegList -> Maybe newItem -> m ()
-appendItem_ self newItem
-  = liftIO
-      (void
-         (js_appendItem self (maybeToOptional (fmap toSVGPathSeg newItem))))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
-        js_getNumberOfItems :: SVGPathSegList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.numberOfItems Mozilla SVGPathSegList.numberOfItems documentation> 
-getNumberOfItems :: (MonadIO m) => SVGPathSegList -> m Word
-getNumberOfItems self = liftIO (js_getNumberOfItems self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        SVGPathSegMovetoAbs(..), gTypeSVGPathSegMovetoAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegMovetoAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
-setX :: (MonadIO m) => SVGPathSegMovetoAbs -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegMovetoAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
-getX :: (MonadIO m) => SVGPathSegMovetoAbs -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegMovetoAbs -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
-setY :: (MonadIO m) => SVGPathSegMovetoAbs -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegMovetoAbs -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
-getY :: (MonadIO m) => SVGPathSegMovetoAbs -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        SVGPathSegMovetoRel(..), gTypeSVGPathSegMovetoRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPathSegMovetoRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
-setX :: (MonadIO m) => SVGPathSegMovetoRel -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPathSegMovetoRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
-getX :: (MonadIO m) => SVGPathSegMovetoRel -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPathSegMovetoRel -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
-setY :: (MonadIO m) => SVGPathSegMovetoRel -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPathSegMovetoRel -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
-getY :: (MonadIO m) => SVGPathSegMovetoRel -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
@@ -1,87 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGPatternElement
-       (js_getPatternUnits, getPatternUnits, js_getPatternContentUnits,
-        getPatternContentUnits, js_getPatternTransform,
-        getPatternTransform, js_getX, getX, js_getY, getY, js_getWidth,
-        getWidth, js_getHeight, getHeight, SVGPatternElement(..),
-        gTypeSVGPatternElement)
+       (js_getPatternUnits, js_getPatternContentUnits, js_getPatternTransform, js_getX, js_getY, js_getWidth, js_getHeight, getPatternUnits, getPatternContentUnits, getPatternTransform, getX, getY, getWidth, getHeight, SVGPatternElement(..), gTypeSVGPatternElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"patternUnits\"]; })"
-        js_getPatternUnits ::
-        SVGPatternElement -> IO SVGAnimatedEnumeration
+        js_getPatternUnits :: SVGPatternElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/patternUnits MDN SVGPatternElement.patternUnits documentation>
+getPatternUnits :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternUnits self = liftDOM ((js_getPatternUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
-getPatternUnits ::
-                (MonadIO m) => SVGPatternElement -> m SVGAnimatedEnumeration
-getPatternUnits self = liftIO (js_getPatternUnits self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"patternContentUnits\"]; })"
-        js_getPatternContentUnits ::
-        SVGPatternElement -> IO SVGAnimatedEnumeration
+        js_getPatternContentUnits :: SVGPatternElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/patternContentUnits MDN SVGPatternElement.patternContentUnits documentation>
+getPatternContentUnits :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternContentUnits self = liftDOM ((js_getPatternContentUnits (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternContentUnits Mozilla SVGPatternElement.patternContentUnits documentation> 
-getPatternContentUnits ::
-                       (MonadIO m) => SVGPatternElement -> m SVGAnimatedEnumeration
-getPatternContentUnits self
-  = liftIO (js_getPatternContentUnits self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"patternTransform\"]; })"
-        js_getPatternTransform ::
-        SVGPatternElement -> IO SVGAnimatedTransformList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternTransform Mozilla SVGPatternElement.patternTransform documentation> 
-getPatternTransform ::
-                    (MonadIO m) => SVGPatternElement -> m SVGAnimatedTransformList
-getPatternTransform self = liftIO (js_getPatternTransform self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPatternElement -> IO SVGAnimatedLength
+        js_getPatternTransform :: SVGPatternElement -> IO SVGAnimatedTransformList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/patternTransform MDN SVGPatternElement.patternTransform documentation>
+getPatternTransform :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedTransformList
+getPatternTransform self = liftDOM ((js_getPatternTransform (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.x Mozilla SVGPatternElement.x documentation> 
-getX :: (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPatternElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGPatternElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/x MDN SVGPatternElement.x documentation>
+getX :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.y Mozilla SVGPatternElement.y documentation> 
-getY :: (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGPatternElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGPatternElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/y MDN SVGPatternElement.y documentation>
+getY :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.width Mozilla SVGPatternElement.width documentation> 
-getWidth :: (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGPatternElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGPatternElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/width MDN SVGPatternElement.width documentation>
+getWidth :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.height Mozilla SVGPatternElement.height documentation> 
-getHeight ::
-          (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGPatternElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/height MDN SVGPatternElement.height documentation>
+getHeight :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs
+++ /dev/null
@@ -1,70 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGPoint
-       (js_matrixTransform, matrixTransform, matrixTransform_, js_setX,
-        setX, js_getX, getX, js_setY, setY, js_getY, getY, SVGPoint(..),
-        gTypeSVGPoint)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"matrixTransform\"]($2); })"
-        js_matrixTransform :: SVGPoint -> SVGMatrix -> IO SVGPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
-matrixTransform ::
-                (MonadIO m) => SVGPoint -> SVGMatrix -> m SVGPoint
-matrixTransform self matrix
-  = liftIO (js_matrixTransform self matrix)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
-matrixTransform_ :: (MonadIO m) => SVGPoint -> SVGMatrix -> m ()
-matrixTransform_ self matrix
-  = liftIO (void (js_matrixTransform self matrix))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGPoint -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
-setX :: (MonadIO m) => SVGPoint -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGPoint -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
-getX :: (MonadIO m) => SVGPoint -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGPoint -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
-setY :: (MonadIO m) => SVGPoint -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGPoint -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
-getY :: (MonadIO m) => SVGPoint -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
@@ -1,120 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGPointList
-       (js_clear, clear, js_initialize, initialize, initialize_,
-        js_getItem, getItem, getItem_, js_insertItemBefore,
-        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
-        replaceItem_, js_removeItem, removeItem, removeItem_,
-        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
-        getNumberOfItems, SVGPointList(..), gTypeSVGPointList)
+       (js_appendItem, js_clear, js_getItem, js_initialize, js_insertItemBefore, js_removeItem, js_replaceItem, js_getLength, js_getNumberOfItems, appendItem, appendItem_, clear, getItem, getItem_, initialize, initialize_, insertItemBefore, insertItemBefore_, removeItem, removeItem_, replaceItem, replaceItem_, getLength, getNumberOfItems, SVGPointList(..), gTypeSVGPointList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        SVGPointList -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.clear Mozilla SVGPointList.clear documentation> 
-clear :: (MonadIO m) => SVGPointList -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
-        js_initialize :: SVGPointList -> SVGPoint -> IO SVGPoint
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGPointList -> DOMPoint -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/appendItem MDN SVGPointList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGPointList -> DOMPoint -> m DOMPoint
+appendItem self newItem = liftDOM ((js_appendItem (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
-initialize :: (MonadIO m) => SVGPointList -> SVGPoint -> m SVGPoint
-initialize self item = liftIO (js_initialize self item)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/appendItem MDN SVGPointList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGPointList -> DOMPoint -> m ()
+appendItem_ self newItem = liftDOM (void ((js_appendItem (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
-initialize_ :: (MonadIO m) => SVGPointList -> SVGPoint -> m ()
-initialize_ self item = liftIO (void (js_initialize self item))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
-        SVGPointList -> Word -> IO SVGPoint
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: SVGPointList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/clear MDN SVGPointList.clear documentation>
+clear :: (MonadDOM m) => SVGPointList -> m ()
+clear self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
-getItem :: (MonadIO m) => SVGPointList -> Word -> m SVGPoint
-getItem self index = liftIO (js_getItem self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })"
+        js_getItem :: SVGPointList -> Word -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/getItem MDN SVGPointList.getItem documentation>
+getItem :: (MonadDOM m) => SVGPointList -> Word -> m DOMPoint
+getItem self index = liftDOM ((js_getItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
-getItem_ :: (MonadIO m) => SVGPointList -> Word -> m ()
-getItem_ self index = liftIO (void (js_getItem self index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
-        js_insertItemBefore ::
-        SVGPointList -> SVGPoint -> Word -> IO SVGPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/getItem MDN SVGPointList.getItem documentation>
+getItem_ :: (MonadDOM m) => SVGPointList -> Word -> m ()
+getItem_ self index = liftDOM (void ((js_getItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m SVGPoint
-insertItemBefore self item index
-  = liftIO (js_insertItemBefore self item index)
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGPointList -> DOMPoint -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/initialize MDN SVGPointList.initialize documentation>
+initialize :: (MonadDOM m) => SVGPointList -> DOMPoint -> m DOMPoint
+initialize self newItem = liftDOM ((js_initialize (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m ()
-insertItemBefore_ self item index
-  = liftIO (void (js_insertItemBefore self item index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
-        js_replaceItem :: SVGPointList -> SVGPoint -> Word -> IO SVGPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/initialize MDN SVGPointList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGPointList -> DOMPoint -> m ()
+initialize_ self newItem = liftDOM (void ((js_initialize (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
-replaceItem ::
-            (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m SVGPoint
-replaceItem self item index
-  = liftIO (js_replaceItem self item index)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore :: SVGPointList -> DOMPoint -> Word -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/insertItemBefore MDN SVGPointList.insertItemBefore documentation>
+insertItemBefore :: (MonadDOM m) => SVGPointList -> DOMPoint -> Word -> m DOMPoint
+insertItemBefore self newItem index = liftDOM ((js_insertItemBefore (self) (newItem) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m ()
-replaceItem_ self item index
-  = liftIO (void (js_replaceItem self item index))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/insertItemBefore MDN SVGPointList.insertItemBefore documentation>
+insertItemBefore_ :: (MonadDOM m) => SVGPointList -> DOMPoint -> Word -> m ()
+insertItemBefore_ self newItem index = liftDOM (void ((js_insertItemBefore (self) (newItem) (index))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
-        js_removeItem :: SVGPointList -> Word -> IO SVGPoint
+        js_removeItem :: SVGPointList -> Word -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/removeItem MDN SVGPointList.removeItem documentation>
+removeItem :: (MonadDOM m) => SVGPointList -> Word -> m DOMPoint
+removeItem self index = liftDOM ((js_removeItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
-removeItem :: (MonadIO m) => SVGPointList -> Word -> m SVGPoint
-removeItem self index = liftIO (js_removeItem self index)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/removeItem MDN SVGPointList.removeItem documentation>
+removeItem_ :: (MonadDOM m) => SVGPointList -> Word -> m ()
+removeItem_ self index = liftDOM (void ((js_removeItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
-removeItem_ :: (MonadIO m) => SVGPointList -> Word -> m ()
-removeItem_ self index = liftIO (void (js_removeItem self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
-        js_appendItem :: SVGPointList -> SVGPoint -> IO SVGPoint
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem :: SVGPointList -> DOMPoint -> Word -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/replaceItem MDN SVGPointList.replaceItem documentation>
+replaceItem :: (MonadDOM m) => SVGPointList -> DOMPoint -> Word -> m DOMPoint
+replaceItem self newItem index = liftDOM ((js_replaceItem (self) (newItem) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
-appendItem :: (MonadIO m) => SVGPointList -> SVGPoint -> m SVGPoint
-appendItem self item = liftIO (js_appendItem self item)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/replaceItem MDN SVGPointList.replaceItem documentation>
+replaceItem_ :: (MonadDOM m) => SVGPointList -> DOMPoint -> Word -> m ()
+replaceItem_ self newItem index = liftDOM (void ((js_replaceItem (self) (newItem) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
-appendItem_ :: (MonadIO m) => SVGPointList -> SVGPoint -> m ()
-appendItem_ self item = liftIO (void (js_appendItem self item))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SVGPointList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/length MDN SVGPointList.length documentation>
+getLength :: (MonadDOM m) => SVGPointList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
         js_getNumberOfItems :: SVGPointList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.numberOfItems Mozilla SVGPointList.numberOfItems documentation> 
-getNumberOfItems :: (MonadIO m) => SVGPointList -> m Word
-getNumberOfItems self = liftIO (js_getNumberOfItems self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/numberOfItems MDN SVGPointList.numberOfItems documentation>
+getNumberOfItems :: (MonadDOM m) => SVGPointList -> m Word
+getNumberOfItems self = liftDOM ((js_getNumberOfItems (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
@@ -1,42 +1,18 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
-       (js_getPoints, getPoints, js_getAnimatedPoints, getAnimatedPoints,
-        SVGPolygonElement(..), gTypeSVGPolygonElement)
+       (SVGPolygonElement(..), gTypeSVGPolygonElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"points\"]; })" js_getPoints ::
-        SVGPolygonElement -> IO SVGPointList
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
-getPoints :: (MonadIO m) => SVGPolygonElement -> m SVGPointList
-getPoints self = liftIO (js_getPoints self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animatedPoints\"]; })"
-        js_getAnimatedPoints :: SVGPolygonElement -> IO SVGPointList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.animatedPoints Mozilla SVGPolygonElement.animatedPoints documentation> 
-getAnimatedPoints ::
-                  (MonadIO m) => SVGPolygonElement -> m SVGPointList
-getAnimatedPoints self = liftIO (js_getAnimatedPoints self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
@@ -1,42 +1,18 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
-       (js_getPoints, getPoints, js_getAnimatedPoints, getAnimatedPoints,
-        SVGPolylineElement(..), gTypeSVGPolylineElement)
+       (SVGPolylineElement(..), gTypeSVGPolylineElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"points\"]; })" js_getPoints ::
-        SVGPolylineElement -> IO SVGPointList
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
-getPoints :: (MonadIO m) => SVGPolylineElement -> m SVGPointList
-getPoints self = liftIO (js_getPoints self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animatedPoints\"]; })"
-        js_getAnimatedPoints :: SVGPolylineElement -> IO SVGPointList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.animatedPoints Mozilla SVGPolylineElement.animatedPoints documentation> 
-getAnimatedPoints ::
-                  (MonadIO m) => SVGPolylineElement -> m SVGPointList
-getAnimatedPoints self = liftIO (js_getAnimatedPoints self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
@@ -1,84 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio
-       (pattern SVG_PRESERVEASPECTRATIO_UNKNOWN,
-        pattern SVG_PRESERVEASPECTRATIO_NONE,
-        pattern SVG_PRESERVEASPECTRATIO_XMINYMIN,
-        pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN,
-        pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN,
-        pattern SVG_PRESERVEASPECTRATIO_XMINYMID,
-        pattern SVG_PRESERVEASPECTRATIO_XMIDYMID,
-        pattern SVG_PRESERVEASPECTRATIO_XMAXYMID,
-        pattern SVG_PRESERVEASPECTRATIO_XMINYMAX,
-        pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX,
-        pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX,
-        pattern SVG_MEETORSLICE_UNKNOWN, pattern SVG_MEETORSLICE_MEET,
-        pattern SVG_MEETORSLICE_SLICE, js_setAlign, setAlign, js_getAlign,
-        getAlign, js_setMeetOrSlice, setMeetOrSlice, js_getMeetOrSlice,
-        getMeetOrSlice, SVGPreserveAspectRatio(..),
-        gTypeSVGPreserveAspectRatio)
+       (js_setAlign, js_getAlign, js_setMeetOrSlice, js_getMeetOrSlice, setAlign, getAlign, setMeetOrSlice, getMeetOrSlice, pattern SVG_PRESERVEASPECTRATIO_UNKNOWN, pattern SVG_PRESERVEASPECTRATIO_NONE, pattern SVG_PRESERVEASPECTRATIO_XMINYMIN, pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN, pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN, pattern SVG_PRESERVEASPECTRATIO_XMINYMID, pattern SVG_PRESERVEASPECTRATIO_XMIDYMID, pattern SVG_PRESERVEASPECTRATIO_XMAXYMID, pattern SVG_PRESERVEASPECTRATIO_XMINYMAX, pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX, pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX, pattern SVG_MEETORSLICE_UNKNOWN, pattern SVG_MEETORSLICE_MEET, pattern SVG_MEETORSLICE_SLICE, SVGPreserveAspectRatio(..), gTypeSVGPreserveAspectRatio)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: SVGPreserveAspectRatio -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/align MDN SVGPreserveAspectRatio.align documentation>
+setAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
+setAlign self val = liftDOM (void ((js_setAlign (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: SVGPreserveAspectRatio -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/align MDN SVGPreserveAspectRatio.align documentation>
+getAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
+getAlign self = liftDOM ((js_getAlign (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"meetOrSlice\"] = $2; })"
+        js_setMeetOrSlice :: SVGPreserveAspectRatio -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/meetOrSlice MDN SVGPreserveAspectRatio.meetOrSlice documentation>
+setMeetOrSlice :: (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
+setMeetOrSlice self val = liftDOM (void ((js_setMeetOrSlice (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"meetOrSlice\"]; })"
+        js_getMeetOrSlice :: SVGPreserveAspectRatio -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/meetOrSlice MDN SVGPreserveAspectRatio.meetOrSlice documentation>
+getMeetOrSlice :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
+getMeetOrSlice self = liftDOM ((js_getMeetOrSlice (self)))
+
 pattern SVG_PRESERVEASPECTRATIO_UNKNOWN = 0
+
 pattern SVG_PRESERVEASPECTRATIO_NONE = 1
+
 pattern SVG_PRESERVEASPECTRATIO_XMINYMIN = 2
+
 pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3
+
 pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4
+
 pattern SVG_PRESERVEASPECTRATIO_XMINYMID = 5
+
 pattern SVG_PRESERVEASPECTRATIO_XMIDYMID = 6
+
 pattern SVG_PRESERVEASPECTRATIO_XMAXYMID = 7
+
 pattern SVG_PRESERVEASPECTRATIO_XMINYMAX = 8
+
 pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9
-pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
-pattern SVG_MEETORSLICE_UNKNOWN = 0
-pattern SVG_MEETORSLICE_MEET = 1
-pattern SVG_MEETORSLICE_SLICE = 2
- 
-foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign ::
-        SVGPreserveAspectRatio -> Word -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
-setAlign :: (MonadIO m) => SVGPreserveAspectRatio -> Word -> m ()
-setAlign self val = liftIO (js_setAlign self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        SVGPreserveAspectRatio -> IO Word
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
-getAlign :: (MonadIO m) => SVGPreserveAspectRatio -> m Word
-getAlign self = liftIO (js_getAlign self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"meetOrSlice\"] = $2; })"
-        js_setMeetOrSlice :: SVGPreserveAspectRatio -> Word -> IO ()
+pattern SVG_MEETORSLICE_UNKNOWN = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
-setMeetOrSlice ::
-               (MonadIO m) => SVGPreserveAspectRatio -> Word -> m ()
-setMeetOrSlice self val = liftIO (js_setMeetOrSlice self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"meetOrSlice\"]; })"
-        js_getMeetOrSlice :: SVGPreserveAspectRatio -> IO Word
+pattern SVG_MEETORSLICE_MEET = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
-getMeetOrSlice :: (MonadIO m) => SVGPreserveAspectRatio -> m Word
-getMeetOrSlice self = liftIO (js_getMeetOrSlice self)
+pattern SVG_MEETORSLICE_SLICE = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
@@ -1,76 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement
-       (js_getCx, getCx, js_getCy, getCy, js_getR, getR, js_getFx, getFx,
-        js_getFy, getFy, js_getFr, getFr, SVGRadialGradientElement(..),
-        gTypeSVGRadialGradientElement)
+       (js_getCx, js_getCy, js_getR, js_getFx, js_getFy, js_getFr, getCx, getCy, getR, getFx, getFy, getFr, SVGRadialGradientElement(..), gTypeSVGRadialGradientElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })" js_getCx ::
-        SVGRadialGradientElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
-getCx ::
-      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getCx self = liftIO (js_getCx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })" js_getCy ::
-        SVGRadialGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })"
+        js_getCx :: SVGRadialGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/cx MDN SVGRadialGradientElement.cx documentation>
+getCx :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getCx self = liftDOM ((js_getCx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cy Mozilla SVGRadialGradientElement.cy documentation> 
-getCy ::
-      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getCy self = liftIO (js_getCy self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })" js_getR ::
-        SVGRadialGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })"
+        js_getCy :: SVGRadialGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/cy MDN SVGRadialGradientElement.cy documentation>
+getCy :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getCy self = liftDOM ((js_getCy (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.r Mozilla SVGRadialGradientElement.r documentation> 
-getR ::
-     (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getR self = liftIO (js_getR self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fx\"]; })" js_getFx ::
-        SVGRadialGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })"
+        js_getR :: SVGRadialGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/r MDN SVGRadialGradientElement.r documentation>
+getR :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getR self = liftDOM ((js_getR (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fx Mozilla SVGRadialGradientElement.fx documentation> 
-getFx ::
-      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getFx self = liftIO (js_getFx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fy\"]; })" js_getFy ::
-        SVGRadialGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"fx\"]; })"
+        js_getFx :: SVGRadialGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/fx MDN SVGRadialGradientElement.fx documentation>
+getFx :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFx self = liftDOM ((js_getFx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fy Mozilla SVGRadialGradientElement.fy documentation> 
-getFy ::
-      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getFy self = liftIO (js_getFy self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fr\"]; })" js_getFr ::
-        SVGRadialGradientElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"fy\"]; })"
+        js_getFy :: SVGRadialGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/fy MDN SVGRadialGradientElement.fy documentation>
+getFy :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFy self = liftDOM ((js_getFy (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fr Mozilla SVGRadialGradientElement.fr documentation> 
-getFr ::
-      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getFr self = liftIO (js_getFr self)
+foreign import javascript unsafe "(($1) => { return $1[\"fr\"]; })"
+        js_getFr :: SVGRadialGradientElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/fr MDN SVGRadialGradientElement.fr documentation>
+getFr :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFr self = liftDOM ((js_getFr (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGRect
-       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
-        js_setWidth, setWidth, js_getWidth, getWidth, js_setHeight,
-        setHeight, js_getHeight, getHeight, SVGRect(..), gTypeSVGRect)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        SVGRect -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
-setX :: (MonadIO m) => SVGRect -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGRect -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
-getX :: (MonadIO m) => SVGRect -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        SVGRect -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
-setY :: (MonadIO m) => SVGRect -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGRect -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
-getY :: (MonadIO m) => SVGRect -> m Float
-getY self = liftIO (js_getY self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth ::
-        SVGRect -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
-setWidth :: (MonadIO m) => SVGRect -> Float -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGRect -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
-getWidth :: (MonadIO m) => SVGRect -> m Float
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })" js_setHeight
-        :: SVGRect -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
-setHeight :: (MonadIO m) => SVGRect -> Float -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGRect -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
-getHeight :: (MonadIO m) => SVGRect -> m Float
-getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
@@ -1,70 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGRectElement
-       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
-        getHeight, js_getRx, getRx, js_getRy, getRy, SVGRectElement(..),
-        gTypeSVGRectElement)
+       (js_getX, js_getY, js_getWidth, js_getHeight, js_getRx, js_getRy, getX, getY, getWidth, getHeight, getRx, getRy, SVGRectElement(..), gTypeSVGRectElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGRectElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
-getX :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGRectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGRectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/x MDN SVGRectElement.x documentation>
+getX :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.y Mozilla SVGRectElement.y documentation> 
-getY :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGRectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGRectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/y MDN SVGRectElement.y documentation>
+getY :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.width Mozilla SVGRectElement.width documentation> 
-getWidth :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGRectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGRectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/width MDN SVGRectElement.width documentation>
+getWidth :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.height Mozilla SVGRectElement.height documentation> 
-getHeight :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rx\"]; })" js_getRx ::
-        SVGRectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGRectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/height MDN SVGRectElement.height documentation>
+getHeight :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.rx Mozilla SVGRectElement.rx documentation> 
-getRx :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
-getRx self = liftIO (js_getRx self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"ry\"]; })" js_getRy ::
-        SVGRectElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"rx\"]; })"
+        js_getRx :: SVGRectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/rx MDN SVGRectElement.rx documentation>
+getRx :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
+getRx self = liftDOM ((js_getRx (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.ry Mozilla SVGRectElement.ry documentation> 
-getRy :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
-getRy self = liftIO (js_getRy self)
+foreign import javascript unsafe "(($1) => { return $1[\"ry\"]; })"
+        js_getRy :: SVGRectElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/ry MDN SVGRectElement.ry documentation>
+getRy :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
+getRy self = liftDOM ((js_getRy (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent
-       (pattern RENDERING_INTENT_UNKNOWN, pattern RENDERING_INTENT_AUTO,
-        pattern RENDERING_INTENT_PERCEPTUAL,
-        pattern RENDERING_INTENT_RELATIVE_COLORIMETRIC,
-        pattern RENDERING_INTENT_SATURATION,
-        pattern RENDERING_INTENT_ABSOLUTE_COLORIMETRIC,
-        SVGRenderingIntent(..), gTypeSVGRenderingIntent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern RENDERING_INTENT_UNKNOWN = 0
-pattern RENDERING_INTENT_AUTO = 1
-pattern RENDERING_INTENT_PERCEPTUAL = 2
-pattern RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3
-pattern RENDERING_INTENT_SATURATION = 4
-pattern RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
@@ -1,505 +1,269 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGSVGElement
-       (js_suspendRedraw, suspendRedraw, suspendRedraw_,
-        js_unsuspendRedraw, unsuspendRedraw, js_unsuspendRedrawAll,
-        unsuspendRedrawAll, js_forceRedraw, forceRedraw,
-        js_pauseAnimations, pauseAnimations, js_unpauseAnimations,
-        unpauseAnimations, js_animationsPaused, animationsPaused,
-        animationsPaused_, js_getCurrentTime, getCurrentTime,
-        getCurrentTime_, js_setCurrentTime, setCurrentTime,
-        js_getIntersectionList, getIntersectionList, getIntersectionList_,
-        js_getEnclosureList, getEnclosureList, getEnclosureList_,
-        js_checkIntersection, checkIntersection, checkIntersection_,
-        js_checkEnclosure, checkEnclosure, checkEnclosure_, js_deselectAll,
-        deselectAll, js_createSVGNumber, createSVGNumber, createSVGNumber_,
-        js_createSVGLength, createSVGLength, createSVGLength_,
-        js_createSVGAngle, createSVGAngle, createSVGAngle_,
-        js_createSVGPoint, createSVGPoint, createSVGPoint_,
-        js_createSVGMatrix, createSVGMatrix, createSVGMatrix_,
-        js_createSVGRect, createSVGRect, createSVGRect_,
-        js_createSVGTransform, createSVGTransform, createSVGTransform_,
-        js_createSVGTransformFromMatrix, createSVGTransformFromMatrix,
-        createSVGTransformFromMatrix_, js_getElementById, getElementById,
-        getElementById_, js_getX, getX, js_getY, getY, js_getWidth,
-        getWidth, js_getHeight, getHeight, js_setContentScriptType,
-        setContentScriptType, js_getContentScriptType,
-        getContentScriptType, js_setContentStyleType, setContentStyleType,
-        js_getContentStyleType, getContentStyleType, js_getViewport,
-        getViewport, js_getPixelUnitToMillimeterX,
-        getPixelUnitToMillimeterX, js_getPixelUnitToMillimeterY,
-        getPixelUnitToMillimeterY, js_getScreenPixelToMillimeterX,
-        getScreenPixelToMillimeterX, js_getScreenPixelToMillimeterY,
-        getScreenPixelToMillimeterY, js_getUseCurrentView,
-        getUseCurrentView, js_getCurrentView, getCurrentView,
-        js_setCurrentScale, setCurrentScale, js_getCurrentScale,
-        getCurrentScale, js_getCurrentTranslate, getCurrentTranslate,
-        SVGSVGElement(..), gTypeSVGSVGElement)
+       (js_animationsPaused, js_checkEnclosure, js_checkIntersection, js_createSVGAngle, js_createSVGLength, js_createSVGMatrix, js_createSVGNumber, js_createSVGPoint, js_createSVGRect, js_createSVGTransform, js_createSVGTransformFromMatrix, js_deselectAll, js_forceRedraw, js_getCurrentTime, js_getElementById, js_getEnclosureList, js_getIntersectionList, js_pauseAnimations, js_setCurrentTime, js_suspendRedraw, js_unpauseAnimations, js_unsuspendRedraw, js_unsuspendRedrawAll, js_getX, js_getY, js_getWidth, js_getHeight, js_setCurrentScale, js_getCurrentScale, js_getCurrentTranslate, animationsPaused, animationsPaused_, checkEnclosure, checkEnclosure_, checkIntersection, checkIntersection_, createSVGAngle, createSVGAngle_, createSVGLength, createSVGLength_, createSVGMatrix, createSVGMatrix_, createSVGNumber, createSVGNumber_, createSVGPoint, createSVGPoint_, createSVGRect, createSVGRect_, createSVGTransform, createSVGTransform_, createSVGTransformFromMatrix, createSVGTransformFromMatrix_, deselectAll, forceRedraw, getCurrentTime, getCurrentTime_, getElementById, getElementById_, getElementByIdUnsafe, getElementByIdUnchecked, getEnclosureList, getEnclosureList_, getIntersectionList, getIntersectionList_, pauseAnimations, setCurrentTime, suspendRedraw, suspendRedraw_, unpauseAnimations, unsuspendRedraw, unsuspendRedrawAll, getX, getY, getWidth, getHeight, setCurrentScale, getCurrentScale, getCurrentTranslate, SVGSVGElement(..), gTypeSVGSVGElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"suspendRedraw\"]($2); })"
-        js_suspendRedraw :: SVGSVGElement -> Optional Word -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
-suspendRedraw ::
-              (MonadIO m) => SVGSVGElement -> Maybe Word -> m Word
-suspendRedraw self maxWaitMilliseconds
-  = liftIO
-      (js_suspendRedraw self (maybeToOptional maxWaitMilliseconds))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
-suspendRedraw_ ::
-               (MonadIO m) => SVGSVGElement -> Maybe Word -> m ()
-suspendRedraw_ self maxWaitMilliseconds
-  = liftIO
-      (void
-         (js_suspendRedraw self (maybeToOptional maxWaitMilliseconds)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"unsuspendRedraw\"]($2); })"
-        js_unsuspendRedraw :: SVGSVGElement -> Optional Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedraw Mozilla SVGSVGElement.unsuspendRedraw documentation> 
-unsuspendRedraw ::
-                (MonadIO m) => SVGSVGElement -> Maybe Word -> m ()
-unsuspendRedraw self suspendHandleId
-  = liftIO
-      (js_unsuspendRedraw self (maybeToOptional suspendHandleId))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"unsuspendRedrawAll\"](); })"
-        js_unsuspendRedrawAll :: SVGSVGElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedrawAll Mozilla SVGSVGElement.unsuspendRedrawAll documentation> 
-unsuspendRedrawAll :: (MonadIO m) => SVGSVGElement -> m ()
-unsuspendRedrawAll self = liftIO (js_unsuspendRedrawAll self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"forceRedraw\"](); })"
-        js_forceRedraw :: SVGSVGElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.forceRedraw Mozilla SVGSVGElement.forceRedraw documentation> 
-forceRedraw :: (MonadIO m) => SVGSVGElement -> m ()
-forceRedraw self = liftIO (js_forceRedraw self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pauseAnimations\"](); })"
-        js_pauseAnimations :: SVGSVGElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pauseAnimations Mozilla SVGSVGElement.pauseAnimations documentation> 
-pauseAnimations :: (MonadIO m) => SVGSVGElement -> m ()
-pauseAnimations self = liftIO (js_pauseAnimations self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"unpauseAnimations\"](); })"
-        js_unpauseAnimations :: SVGSVGElement -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unpauseAnimations Mozilla SVGSVGElement.unpauseAnimations documentation> 
-unpauseAnimations :: (MonadIO m) => SVGSVGElement -> m ()
-unpauseAnimations self = liftIO (js_unpauseAnimations self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"animationsPaused\"]() ? 1 : 0); })" js_animationsPaused ::
-        SVGSVGElement -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.animationsPaused Mozilla SVGSVGElement.animationsPaused documentation> 
-animationsPaused :: (MonadIO m) => SVGSVGElement -> m Bool
-animationsPaused self = liftIO (js_animationsPaused self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.animationsPaused Mozilla SVGSVGElement.animationsPaused documentation> 
-animationsPaused_ :: (MonadIO m) => SVGSVGElement -> m ()
-animationsPaused_ self = liftIO (void (js_animationsPaused self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getCurrentTime\"](); })"
-        js_getCurrentTime :: SVGSVGElement -> IO Float
+foreign import javascript safe "(($1) => { return $1[\"animationsPaused\"](); })"
+        js_animationsPaused :: SVGSVGElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/animationsPaused MDN SVGSVGElement.animationsPaused documentation>
+animationsPaused :: (MonadDOM m) => SVGSVGElement -> m Bool
+animationsPaused self = liftDOM ((js_animationsPaused (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getCurrentTime Mozilla SVGSVGElement.getCurrentTime documentation> 
-getCurrentTime :: (MonadIO m) => SVGSVGElement -> m Float
-getCurrentTime self = liftIO (js_getCurrentTime self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/animationsPaused MDN SVGSVGElement.animationsPaused documentation>
+animationsPaused_ :: (MonadDOM m) => SVGSVGElement -> m ()
+animationsPaused_ self = liftDOM (void ((js_animationsPaused (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getCurrentTime Mozilla SVGSVGElement.getCurrentTime documentation> 
-getCurrentTime_ :: (MonadIO m) => SVGSVGElement -> m ()
-getCurrentTime_ self = liftIO (void (js_getCurrentTime self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setCurrentTime\"]($2); })"
-        js_setCurrentTime :: SVGSVGElement -> Optional Float -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"checkEnclosure\"]($2, $3); })"
+        js_checkEnclosure :: SVGSVGElement -> SVGElement -> DOMRect -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/checkEnclosure MDN SVGSVGElement.checkEnclosure documentation>
+checkEnclosure :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m Bool
+checkEnclosure self element rect = liftDOM ((js_checkEnclosure (self) (Types.toSVGElement element) (rect)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.setCurrentTime Mozilla SVGSVGElement.setCurrentTime documentation> 
-setCurrentTime ::
-               (MonadIO m) => SVGSVGElement -> Maybe Float -> m ()
-setCurrentTime self seconds
-  = liftIO (js_setCurrentTime self (maybeToOptional seconds))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getIntersectionList\"]($2,\n$3); })" js_getIntersectionList ::
-        SVGSVGElement -> SVGRect -> Optional SVGElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/checkEnclosure MDN SVGSVGElement.checkEnclosure documentation>
+checkEnclosure_ :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m ()
+checkEnclosure_ self element rect = liftDOM (void ((js_checkEnclosure (self) (Types.toSVGElement element) (rect))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
-getIntersectionList ::
-                    (MonadIO m, IsSVGElement referenceElement) =>
-                      SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList
-getIntersectionList self rect referenceElement
-  = liftIO
-      (js_getIntersectionList self rect
-         (maybeToOptional (fmap toSVGElement referenceElement)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"checkIntersection\"]($2, $3); })"
+        js_checkIntersection :: SVGSVGElement -> SVGElement -> DOMRect -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/checkIntersection MDN SVGSVGElement.checkIntersection documentation>
+checkIntersection :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m Bool
+checkIntersection self element rect = liftDOM ((js_checkIntersection (self) (Types.toSVGElement element) (rect)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
-getIntersectionList_ ::
-                     (MonadIO m, IsSVGElement referenceElement) =>
-                       SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()
-getIntersectionList_ self rect referenceElement
-  = liftIO
-      (void
-         (js_getIntersectionList self rect
-            (maybeToOptional (fmap toSVGElement referenceElement))))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getEnclosureList\"]($2, $3); })"
-        js_getEnclosureList ::
-        SVGSVGElement -> SVGRect -> Optional SVGElement -> IO NodeList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/checkIntersection MDN SVGSVGElement.checkIntersection documentation>
+checkIntersection_ :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m ()
+checkIntersection_ self element rect = liftDOM (void ((js_checkIntersection (self) (Types.toSVGElement element) (rect))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
-getEnclosureList ::
-                 (MonadIO m, IsSVGElement referenceElement) =>
-                   SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList
-getEnclosureList self rect referenceElement
-  = liftIO
-      (js_getEnclosureList self rect
-         (maybeToOptional (fmap toSVGElement referenceElement)))
+foreign import javascript safe "(($1) => { return $1[\"createSVGAngle\"](); })"
+        js_createSVGAngle :: SVGSVGElement -> IO SVGAngle
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGAngle MDN SVGSVGElement.createSVGAngle documentation>
+createSVGAngle :: (MonadDOM m) => SVGSVGElement -> m SVGAngle
+createSVGAngle self = liftDOM ((js_createSVGAngle (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
-getEnclosureList_ ::
-                  (MonadIO m, IsSVGElement referenceElement) =>
-                    SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()
-getEnclosureList_ self rect referenceElement
-  = liftIO
-      (void
-         (js_getEnclosureList self rect
-            (maybeToOptional (fmap toSVGElement referenceElement))))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return ($1[\"checkIntersection\"]($2,\n$3) ? 1 : 0); })" js_checkIntersection
-        :: SVGSVGElement -> Optional SVGElement -> SVGRect -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGAngle MDN SVGSVGElement.createSVGAngle documentation>
+createSVGAngle_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGAngle_ self = liftDOM (void ((js_createSVGAngle (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkIntersection Mozilla SVGSVGElement.checkIntersection documentation> 
-checkIntersection ::
-                  (MonadIO m, IsSVGElement element) =>
-                    SVGSVGElement -> Maybe element -> SVGRect -> m Bool
-checkIntersection self element rect
-  = liftIO
-      (js_checkIntersection self
-         (maybeToOptional (fmap toSVGElement element))
-         rect)
+foreign import javascript safe "(($1) => { return $1[\"createSVGLength\"](); })"
+        js_createSVGLength :: SVGSVGElement -> IO SVGLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGLength MDN SVGSVGElement.createSVGLength documentation>
+createSVGLength :: (MonadDOM m) => SVGSVGElement -> m SVGLength
+createSVGLength self = liftDOM ((js_createSVGLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkIntersection Mozilla SVGSVGElement.checkIntersection documentation> 
-checkIntersection_ ::
-                   (MonadIO m, IsSVGElement element) =>
-                     SVGSVGElement -> Maybe element -> SVGRect -> m ()
-checkIntersection_ self element rect
-  = liftIO
-      (void
-         (js_checkIntersection self
-            (maybeToOptional (fmap toSVGElement element))
-            rect))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return ($1[\"checkEnclosure\"]($2,\n$3) ? 1 : 0); })" js_checkEnclosure ::
-        SVGSVGElement -> Optional SVGElement -> SVGRect -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGLength MDN SVGSVGElement.createSVGLength documentation>
+createSVGLength_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGLength_ self = liftDOM (void ((js_createSVGLength (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkEnclosure Mozilla SVGSVGElement.checkEnclosure documentation> 
-checkEnclosure ::
-               (MonadIO m, IsSVGElement element) =>
-                 SVGSVGElement -> Maybe element -> SVGRect -> m Bool
-checkEnclosure self element rect
-  = liftIO
-      (js_checkEnclosure self
-         (maybeToOptional (fmap toSVGElement element))
-         rect)
+foreign import javascript safe "(($1) => { return $1[\"createSVGMatrix\"](); })"
+        js_createSVGMatrix :: SVGSVGElement -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGMatrix MDN SVGSVGElement.createSVGMatrix documentation>
+createSVGMatrix :: (MonadDOM m) => SVGSVGElement -> m DOMMatrix
+createSVGMatrix self = liftDOM ((js_createSVGMatrix (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkEnclosure Mozilla SVGSVGElement.checkEnclosure documentation> 
-checkEnclosure_ ::
-                (MonadIO m, IsSVGElement element) =>
-                  SVGSVGElement -> Maybe element -> SVGRect -> m ()
-checkEnclosure_ self element rect
-  = liftIO
-      (void
-         (js_checkEnclosure self
-            (maybeToOptional (fmap toSVGElement element))
-            rect))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deselectAll\"](); })"
-        js_deselectAll :: SVGSVGElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGMatrix MDN SVGSVGElement.createSVGMatrix documentation>
+createSVGMatrix_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGMatrix_ self = liftDOM (void ((js_createSVGMatrix (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.deselectAll Mozilla SVGSVGElement.deselectAll documentation> 
-deselectAll :: (MonadIO m) => SVGSVGElement -> m ()
-deselectAll self = liftIO (js_deselectAll self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSVGNumber\"](); })"
+foreign import javascript safe "(($1) => { return $1[\"createSVGNumber\"](); })"
         js_createSVGNumber :: SVGSVGElement -> IO SVGNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGNumber MDN SVGSVGElement.createSVGNumber documentation>
+createSVGNumber :: (MonadDOM m) => SVGSVGElement -> m SVGNumber
+createSVGNumber self = liftDOM ((js_createSVGNumber (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
-createSVGNumber :: (MonadIO m) => SVGSVGElement -> m SVGNumber
-createSVGNumber self = liftIO (js_createSVGNumber self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGNumber MDN SVGSVGElement.createSVGNumber documentation>
+createSVGNumber_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGNumber_ self = liftDOM (void ((js_createSVGNumber (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
-createSVGNumber_ :: (MonadIO m) => SVGSVGElement -> m ()
-createSVGNumber_ self = liftIO (void (js_createSVGNumber self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSVGLength\"](); })"
-        js_createSVGLength :: SVGSVGElement -> IO SVGLength
+foreign import javascript safe "(($1) => { return $1[\"createSVGPoint\"](); })"
+        js_createSVGPoint :: SVGSVGElement -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGPoint MDN SVGSVGElement.createSVGPoint documentation>
+createSVGPoint :: (MonadDOM m) => SVGSVGElement -> m DOMPoint
+createSVGPoint self = liftDOM ((js_createSVGPoint (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
-createSVGLength :: (MonadIO m) => SVGSVGElement -> m SVGLength
-createSVGLength self = liftIO (js_createSVGLength self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGPoint MDN SVGSVGElement.createSVGPoint documentation>
+createSVGPoint_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGPoint_ self = liftDOM (void ((js_createSVGPoint (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
-createSVGLength_ :: (MonadIO m) => SVGSVGElement -> m ()
-createSVGLength_ self = liftIO (void (js_createSVGLength self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSVGAngle\"](); })"
-        js_createSVGAngle :: SVGSVGElement -> IO SVGAngle
+foreign import javascript safe "(($1) => { return $1[\"createSVGRect\"](); })"
+        js_createSVGRect :: SVGSVGElement -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGRect MDN SVGSVGElement.createSVGRect documentation>
+createSVGRect :: (MonadDOM m) => SVGSVGElement -> m DOMRect
+createSVGRect self = liftDOM ((js_createSVGRect (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
-createSVGAngle :: (MonadIO m) => SVGSVGElement -> m SVGAngle
-createSVGAngle self = liftIO (js_createSVGAngle self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGRect MDN SVGSVGElement.createSVGRect documentation>
+createSVGRect_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGRect_ self = liftDOM (void ((js_createSVGRect (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
-createSVGAngle_ :: (MonadIO m) => SVGSVGElement -> m ()
-createSVGAngle_ self = liftIO (void (js_createSVGAngle self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSVGPoint\"](); })"
-        js_createSVGPoint :: SVGSVGElement -> IO SVGPoint
+foreign import javascript safe "(($1) => { return $1[\"createSVGTransform\"](); })"
+        js_createSVGTransform :: SVGSVGElement -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGTransform MDN SVGSVGElement.createSVGTransform documentation>
+createSVGTransform :: (MonadDOM m) => SVGSVGElement -> m SVGTransform
+createSVGTransform self = liftDOM ((js_createSVGTransform (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
-createSVGPoint :: (MonadIO m) => SVGSVGElement -> m SVGPoint
-createSVGPoint self = liftIO (js_createSVGPoint self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGTransform MDN SVGSVGElement.createSVGTransform documentation>
+createSVGTransform_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGTransform_ self = liftDOM (void ((js_createSVGTransform (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
-createSVGPoint_ :: (MonadIO m) => SVGSVGElement -> m ()
-createSVGPoint_ self = liftIO (void (js_createSVGPoint self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSVGMatrix\"](); })"
-        js_createSVGMatrix :: SVGSVGElement -> IO SVGMatrix
+foreign import javascript safe "(($1, $2) => { return $1[\"createSVGTransformFromMatrix\"]($2); })"
+        js_createSVGTransformFromMatrix :: SVGSVGElement -> JSVal -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGTransformFromMatrix MDN SVGSVGElement.createSVGTransformFromMatrix documentation>
+createSVGTransformFromMatrix :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGSVGElement -> Maybe matrix -> m SVGTransform
+createSVGTransformFromMatrix self matrix = liftDOM (((P.maybe (P.return jsUndefined) toJSVal matrix) >>= \a2' -> js_createSVGTransformFromMatrix (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
-createSVGMatrix :: (MonadIO m) => SVGSVGElement -> m SVGMatrix
-createSVGMatrix self = liftIO (js_createSVGMatrix self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGTransformFromMatrix MDN SVGSVGElement.createSVGTransformFromMatrix documentation>
+createSVGTransformFromMatrix_ :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGSVGElement -> Maybe matrix -> m ()
+createSVGTransformFromMatrix_ self matrix = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal matrix) >>= \a2' -> js_createSVGTransformFromMatrix (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
-createSVGMatrix_ :: (MonadIO m) => SVGSVGElement -> m ()
-createSVGMatrix_ self = liftIO (void (js_createSVGMatrix self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSVGRect\"](); })"
-        js_createSVGRect :: SVGSVGElement -> IO SVGRect
+foreign import javascript safe "(($1) => { return $1[\"deselectAll\"](); })"
+        js_deselectAll :: SVGSVGElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/deselectAll MDN SVGSVGElement.deselectAll documentation>
+deselectAll :: (MonadDOM m) => SVGSVGElement -> m ()
+deselectAll self = liftDOM (void ((js_deselectAll (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
-createSVGRect :: (MonadIO m) => SVGSVGElement -> m SVGRect
-createSVGRect self = liftIO (js_createSVGRect self)
+foreign import javascript safe "(($1) => { return $1[\"forceRedraw\"](); })"
+        js_forceRedraw :: SVGSVGElement -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__forceRedraw SVGSVGElement.forceRedraw specification>
+forceRedraw :: (MonadDOM m) => SVGSVGElement -> m ()
+forceRedraw self = liftDOM (void ((js_forceRedraw (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
-createSVGRect_ :: (MonadIO m) => SVGSVGElement -> m ()
-createSVGRect_ self = liftIO (void (js_createSVGRect self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSVGTransform\"](); })"
-        js_createSVGTransform :: SVGSVGElement -> IO SVGTransform
+foreign import javascript safe "(($1) => { return $1[\"getCurrentTime\"](); })"
+        js_getCurrentTime :: SVGSVGElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getCurrentTime MDN SVGSVGElement.getCurrentTime documentation>
+getCurrentTime :: (MonadDOM m) => SVGSVGElement -> m Float
+getCurrentTime self = liftDOM ((js_getCurrentTime (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
-createSVGTransform ::
-                   (MonadIO m) => SVGSVGElement -> m SVGTransform
-createSVGTransform self = liftIO (js_createSVGTransform self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getCurrentTime MDN SVGSVGElement.getCurrentTime documentation>
+getCurrentTime_ :: (MonadDOM m) => SVGSVGElement -> m ()
+getCurrentTime_ self = liftDOM (void ((js_getCurrentTime (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
-createSVGTransform_ :: (MonadIO m) => SVGSVGElement -> m ()
-createSVGTransform_ self
-  = liftIO (void (js_createSVGTransform self))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createSVGTransformFromMatrix\"]($2); })"
-        js_createSVGTransformFromMatrix ::
-        SVGSVGElement -> SVGMatrix -> IO SVGTransform
+foreign import javascript safe "(($1, $2) => { return $1[\"getElementById\"]($2); })"
+        js_getElementById :: SVGSVGElement -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getElementById MDN SVGSVGElement.getElementById documentation>
+getElementById :: (MonadDOM m, ToJSString elementId) => SVGSVGElement -> elementId -> m (Maybe Element)
+getElementById self elementId = liftDOM (((js_getElementById (self) (toJSString elementId)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix ::
-                             (MonadIO m) => SVGSVGElement -> SVGMatrix -> m SVGTransform
-createSVGTransformFromMatrix self matrix
-  = liftIO (js_createSVGTransformFromMatrix self matrix)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getElementById MDN SVGSVGElement.getElementById documentation>
+getElementById_ :: (MonadDOM m, ToJSString elementId) => SVGSVGElement -> elementId -> m ()
+getElementById_ self elementId = liftDOM (void ((js_getElementById (self) (toJSString elementId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix_ ::
-                              (MonadIO m) => SVGSVGElement -> SVGMatrix -> m ()
-createSVGTransformFromMatrix_ self matrix
-  = liftIO (void (js_createSVGTransformFromMatrix self matrix))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementById\"]($2); })"
-        js_getElementById :: SVGSVGElement -> JSString -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getElementById MDN SVGSVGElement.getElementById documentation>
+getElementByIdUnsafe :: (MonadDOM m, ToJSString elementId, HasCallStack) => SVGSVGElement -> elementId -> m Element
+getElementByIdUnsafe self elementId = liftDOM ((((js_getElementById (self) (toJSString elementId)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
-getElementById ::
-               (MonadIO m, ToJSString elementId) =>
-                 SVGSVGElement -> elementId -> m Element
-getElementById self elementId
-  = liftIO (js_getElementById self (toJSString elementId))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getElementById MDN SVGSVGElement.getElementById documentation>
+getElementByIdUnchecked :: (MonadDOM m, ToJSString elementId) => SVGSVGElement -> elementId -> m Element
+getElementByIdUnchecked self elementId = liftDOM ((pFromJSVal <$> (js_getElementById (self) (toJSString elementId))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
-getElementById_ ::
-                (MonadIO m, ToJSString elementId) =>
-                  SVGSVGElement -> elementId -> m ()
-getElementById_ self elementId
-  = liftIO (void (js_getElementById self (toJSString elementId)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGSVGElement -> IO SVGAnimatedLength
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getEnclosureList\"]($2, $3); })"
+        js_getEnclosureList :: SVGSVGElement -> DOMRect -> JSVal -> IO NodeList
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__getEnclosureList SVGSVGElement.getEnclosureList specification>
+getEnclosureList :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m NodeList
+getEnclosureList self rect referenceElement = liftDOM (((toJSVal referenceElement) >>= \a3' -> js_getEnclosureList (self) (rect) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.x Mozilla SVGSVGElement.x documentation> 
-getX :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGSVGElement -> IO SVGAnimatedLength
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__getEnclosureList SVGSVGElement.getEnclosureList specification>
+getEnclosureList_ :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m ()
+getEnclosureList_ self rect referenceElement = liftDOM (void (((toJSVal referenceElement) >>= \a3' -> js_getEnclosureList (self) (rect) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.y Mozilla SVGSVGElement.y documentation> 
-getY :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGSVGElement -> IO SVGAnimatedLength
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getIntersectionList\"]($2, $3); })"
+        js_getIntersectionList :: SVGSVGElement -> DOMRect -> JSVal -> IO NodeList
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__getIntersectionList SVGSVGElement.getIntersectionList specification>
+getIntersectionList :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m NodeList
+getIntersectionList self rect referenceElement = liftDOM (((toJSVal referenceElement) >>= \a3' -> js_getIntersectionList (self) (rect) a3'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.width Mozilla SVGSVGElement.width documentation> 
-getWidth :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGSVGElement -> IO SVGAnimatedLength
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__getIntersectionList SVGSVGElement.getIntersectionList specification>
+getIntersectionList_ :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m ()
+getIntersectionList_ self rect referenceElement = liftDOM (void (((toJSVal referenceElement) >>= \a3' -> js_getIntersectionList (self) (rect) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.height Mozilla SVGSVGElement.height documentation> 
-getHeight :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"contentScriptType\"] = $2; })"
-        js_setContentScriptType :: SVGSVGElement -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"pauseAnimations\"](); })"
+        js_pauseAnimations :: SVGSVGElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/pauseAnimations MDN SVGSVGElement.pauseAnimations documentation>
+pauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
+pauseAnimations self = liftDOM (void ((js_pauseAnimations (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
-setContentScriptType ::
-                     (MonadIO m, ToJSString val) => SVGSVGElement -> val -> m ()
-setContentScriptType self val
-  = liftIO (js_setContentScriptType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contentScriptType\"]; })"
-        js_getContentScriptType :: SVGSVGElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"setCurrentTime\"]($2); })"
+        js_setCurrentTime :: SVGSVGElement -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/setCurrentTime MDN SVGSVGElement.setCurrentTime documentation>
+setCurrentTime :: (MonadDOM m) => SVGSVGElement -> Float -> m ()
+setCurrentTime self seconds = liftDOM (void ((js_setCurrentTime (self) (seconds))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
-getContentScriptType ::
-                     (MonadIO m, FromJSString result) => SVGSVGElement -> m result
-getContentScriptType self
-  = liftIO (fromJSString <$> (js_getContentScriptType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"contentStyleType\"] = $2; })"
-        js_setContentStyleType :: SVGSVGElement -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"suspendRedraw\"]($2); })"
+        js_suspendRedraw :: SVGSVGElement -> Word -> IO Word
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__suspendRedraw SVGSVGElement.suspendRedraw specification>
+suspendRedraw :: (MonadDOM m) => SVGSVGElement -> Word -> m Word
+suspendRedraw self maxWaitMilliseconds = liftDOM ((js_suspendRedraw (self) (maxWaitMilliseconds)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
-setContentStyleType ::
-                    (MonadIO m, ToJSString val) => SVGSVGElement -> val -> m ()
-setContentStyleType self val
-  = liftIO (js_setContentStyleType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contentStyleType\"]; })"
-        js_getContentStyleType :: SVGSVGElement -> IO JSString
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__suspendRedraw SVGSVGElement.suspendRedraw specification>
+suspendRedraw_ :: (MonadDOM m) => SVGSVGElement -> Word -> m ()
+suspendRedraw_ self maxWaitMilliseconds = liftDOM (void ((js_suspendRedraw (self) (maxWaitMilliseconds))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
-getContentStyleType ::
-                    (MonadIO m, FromJSString result) => SVGSVGElement -> m result
-getContentStyleType self
-  = liftIO (fromJSString <$> (js_getContentStyleType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"viewport\"]; })" js_getViewport
-        :: SVGSVGElement -> IO SVGRect
+foreign import javascript safe "(($1) => { return $1[\"unpauseAnimations\"](); })"
+        js_unpauseAnimations :: SVGSVGElement -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/unpauseAnimations MDN SVGSVGElement.unpauseAnimations documentation>
+unpauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
+unpauseAnimations self = liftDOM (void ((js_unpauseAnimations (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.viewport Mozilla SVGSVGElement.viewport documentation> 
-getViewport :: (MonadIO m) => SVGSVGElement -> m SVGRect
-getViewport self = liftIO (js_getViewport self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pixelUnitToMillimeterX\"]; })"
-        js_getPixelUnitToMillimeterX :: SVGSVGElement -> IO Float
+foreign import javascript safe "(($1, $2) => { return $1[\"unsuspendRedraw\"]($2); })"
+        js_unsuspendRedraw :: SVGSVGElement -> Word -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__unsuspendRedraw SVGSVGElement.unsuspendRedraw specification>
+unsuspendRedraw :: (MonadDOM m) => SVGSVGElement -> Word -> m ()
+unsuspendRedraw self suspendHandleID = liftDOM (void ((js_unsuspendRedraw (self) (suspendHandleID))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterX Mozilla SVGSVGElement.pixelUnitToMillimeterX documentation> 
-getPixelUnitToMillimeterX ::
-                          (MonadIO m) => SVGSVGElement -> m Float
-getPixelUnitToMillimeterX self
-  = liftIO (js_getPixelUnitToMillimeterX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pixelUnitToMillimeterY\"]; })"
-        js_getPixelUnitToMillimeterY :: SVGSVGElement -> IO Float
+foreign import javascript safe "(($1) => { return $1[\"unsuspendRedrawAll\"](); })"
+        js_unsuspendRedrawAll :: SVGSVGElement -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__unsuspendRedrawAll SVGSVGElement.unsuspendRedrawAll specification>
+unsuspendRedrawAll :: (MonadDOM m) => SVGSVGElement -> m ()
+unsuspendRedrawAll self = liftDOM (void ((js_unsuspendRedrawAll (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterY Mozilla SVGSVGElement.pixelUnitToMillimeterY documentation> 
-getPixelUnitToMillimeterY ::
-                          (MonadIO m) => SVGSVGElement -> m Float
-getPixelUnitToMillimeterY self
-  = liftIO (js_getPixelUnitToMillimeterY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenPixelToMillimeterX\"]; })"
-        js_getScreenPixelToMillimeterX :: SVGSVGElement -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGSVGElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/x MDN SVGSVGElement.x documentation>
+getX :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterX Mozilla SVGSVGElement.screenPixelToMillimeterX documentation> 
-getScreenPixelToMillimeterX ::
-                            (MonadIO m) => SVGSVGElement -> m Float
-getScreenPixelToMillimeterX self
-  = liftIO (js_getScreenPixelToMillimeterX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenPixelToMillimeterY\"]; })"
-        js_getScreenPixelToMillimeterY :: SVGSVGElement -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGSVGElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/y MDN SVGSVGElement.y documentation>
+getY :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterY Mozilla SVGSVGElement.screenPixelToMillimeterY documentation> 
-getScreenPixelToMillimeterY ::
-                            (MonadIO m) => SVGSVGElement -> m Float
-getScreenPixelToMillimeterY self
-  = liftIO (js_getScreenPixelToMillimeterY self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"useCurrentView\"] ? 1 : 0); })"
-        js_getUseCurrentView :: SVGSVGElement -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGSVGElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/width MDN SVGSVGElement.width documentation>
+getWidth :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.useCurrentView Mozilla SVGSVGElement.useCurrentView documentation> 
-getUseCurrentView :: (MonadIO m) => SVGSVGElement -> m Bool
-getUseCurrentView self = liftIO (js_getUseCurrentView self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"currentView\"]; })"
-        js_getCurrentView :: SVGSVGElement -> IO SVGViewSpec
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGSVGElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/height MDN SVGSVGElement.height documentation>
+getHeight :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentView Mozilla SVGSVGElement.currentView documentation> 
-getCurrentView :: (MonadIO m) => SVGSVGElement -> m SVGViewSpec
-getCurrentView self = liftIO (js_getCurrentView self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"currentScale\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"currentScale\"] = $2; })"
         js_setCurrentScale :: SVGSVGElement -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/currentScale MDN SVGSVGElement.currentScale documentation>
+setCurrentScale :: (MonadDOM m) => SVGSVGElement -> Float -> m ()
+setCurrentScale self val = liftDOM (void ((js_setCurrentScale (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
-setCurrentScale :: (MonadIO m) => SVGSVGElement -> Float -> m ()
-setCurrentScale self val = liftIO (js_setCurrentScale self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"currentScale\"]; })"
         js_getCurrentScale :: SVGSVGElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/currentScale MDN SVGSVGElement.currentScale documentation>
+getCurrentScale :: (MonadDOM m) => SVGSVGElement -> m Float
+getCurrentScale self = liftDOM ((js_getCurrentScale (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
-getCurrentScale :: (MonadIO m) => SVGSVGElement -> m Float
-getCurrentScale self = liftIO (js_getCurrentScale self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"currentTranslate\"]; })"
-        js_getCurrentTranslate :: SVGSVGElement -> IO SVGPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentTranslate Mozilla SVGSVGElement.currentTranslate documentation> 
-getCurrentTranslate :: (MonadIO m) => SVGSVGElement -> m SVGPoint
-getCurrentTranslate self = liftIO (js_getCurrentTranslate self)
+        js_getCurrentTranslate :: SVGSVGElement -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/currentTranslate MDN SVGSVGElement.currentTranslate documentation>
+getCurrentTranslate :: (MonadDOM m) => SVGSVGElement -> m DOMPoint
+getCurrentTranslate self = liftDOM ((js_getCurrentTranslate (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
@@ -1,43 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGScriptElement
-       (js_setType, setType, js_getType, getType, SVGScriptElement(..),
-        gTypeSVGScriptElement)
+       (js_setType, js_getType, setType, getType, SVGScriptElement(..), gTypeSVGScriptElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        SVGScriptElement -> JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => SVGScriptElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        SVGScriptElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: SVGScriptElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGScriptElement/type MDN SVGScriptElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => SVGScriptElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => SVGScriptElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: SVGScriptElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGScriptElement/type MDN SVGScriptElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => SVGScriptElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGSetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGSetElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGSetElement
+       (SVGSetElement(..), gTypeSVGSetElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
@@ -1,33 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGStopElement
        (js_getOffset, getOffset, SVGStopElement(..), gTypeSVGStopElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })" js_getOffset ::
-        SVGStopElement -> IO SVGAnimatedNumber
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
-getOffset :: (MonadIO m) => SVGStopElement -> m SVGAnimatedNumber
-getOffset self = liftIO (js_getOffset self)
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: SVGStopElement -> IO SVGAnimatedNumber
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStopElement/offset MDN SVGStopElement.offset documentation>
+getOffset :: (MonadDOM m) => SVGStopElement -> m SVGAnimatedNumber
+getOffset self = liftDOM ((js_getOffset (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
@@ -1,143 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGStringList
-       (js_clear, clear, js_initialize, initialize, initialize_,
-        js_getItem, getItem, getItem_, js_insertItemBefore,
-        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
-        replaceItem_, js_removeItem, removeItem, removeItem_,
-        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
-        getNumberOfItems, SVGStringList(..), gTypeSVGStringList)
+       (js_appendItem, js_clear, js_getItem, js_initialize, js_insertItemBefore, js_removeItem, js_replaceItem, js_getLength, js_getNumberOfItems, appendItem, appendItem_, clear, getItem, getItem_, initialize, initialize_, insertItemBefore, insertItemBefore_, removeItem, removeItem_, replaceItem, replaceItem_, getLength, getNumberOfItems, SVGStringList(..), gTypeSVGStringList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        SVGStringList -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.clear Mozilla SVGStringList.clear documentation> 
-clear :: (MonadIO m) => SVGStringList -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
-        js_initialize :: SVGStringList -> JSString -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGStringList -> JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/appendItem MDN SVGStringList.appendItem documentation>
+appendItem :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> m result
+appendItem self newItem = liftDOM ((fromJSString <$> (js_appendItem (self) (toJSString newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
-initialize ::
-           (MonadIO m, ToJSString item, FromJSString result) =>
-             SVGStringList -> item -> m result
-initialize self item
-  = liftIO (fromJSString <$> (js_initialize self (toJSString item)))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/appendItem MDN SVGStringList.appendItem documentation>
+appendItem_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> m ()
+appendItem_ self newItem = liftDOM (void ((js_appendItem (self) (toJSString newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
-initialize_ ::
-            (MonadIO m, ToJSString item) => SVGStringList -> item -> m ()
-initialize_ self item
-  = liftIO (void (js_initialize self (toJSString item)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
-        SVGStringList -> Word -> IO JSString
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: SVGStringList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/clear MDN SVGStringList.clear documentation>
+clear :: (MonadDOM m) => SVGStringList -> m ()
+clear self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
-getItem ::
-        (MonadIO m, FromJSString result) =>
-          SVGStringList -> Word -> m result
-getItem self index
-  = liftIO (fromJSString <$> (js_getItem self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })"
+        js_getItem :: SVGStringList -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/getItem MDN SVGStringList.getItem documentation>
+getItem :: (MonadDOM m, FromJSString result) => SVGStringList -> Word -> m result
+getItem self index = liftDOM ((fromJSString <$> (js_getItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
-getItem_ :: (MonadIO m) => SVGStringList -> Word -> m ()
-getItem_ self index = liftIO (void (js_getItem self index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
-        js_insertItemBefore ::
-        SVGStringList -> JSString -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/getItem MDN SVGStringList.getItem documentation>
+getItem_ :: (MonadDOM m) => SVGStringList -> Word -> m ()
+getItem_ self index = liftDOM (void ((js_getItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.insertItemBefore Mozilla SVGStringList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadIO m, ToJSString item, FromJSString result) =>
-                   SVGStringList -> item -> Word -> m result
-insertItemBefore self item index
-  = liftIO
-      (fromJSString <$>
-         (js_insertItemBefore self (toJSString item) index))
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGStringList -> JSString -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/initialize MDN SVGStringList.initialize documentation>
+initialize :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> m result
+initialize self newItem = liftDOM ((fromJSString <$> (js_initialize (self) (toJSString newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.insertItemBefore Mozilla SVGStringList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadIO m, ToJSString item) =>
-                    SVGStringList -> item -> Word -> m ()
-insertItemBefore_ self item index
-  = liftIO (void (js_insertItemBefore self (toJSString item) index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
-        js_replaceItem :: SVGStringList -> JSString -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/initialize MDN SVGStringList.initialize documentation>
+initialize_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> m ()
+initialize_ self newItem = liftDOM (void ((js_initialize (self) (toJSString newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
-replaceItem ::
-            (MonadIO m, ToJSString item, FromJSString result) =>
-              SVGStringList -> item -> Word -> m result
-replaceItem self item index
-  = liftIO
-      (fromJSString <$> (js_replaceItem self (toJSString item) index))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore :: SVGStringList -> JSString -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/insertItemBefore MDN SVGStringList.insertItemBefore documentation>
+insertItemBefore :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> Word -> m result
+insertItemBefore self newItem index = liftDOM ((fromJSString <$> (js_insertItemBefore (self) (toJSString newItem) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadIO m, ToJSString item) =>
-               SVGStringList -> item -> Word -> m ()
-replaceItem_ self item index
-  = liftIO (void (js_replaceItem self (toJSString item) index))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/insertItemBefore MDN SVGStringList.insertItemBefore documentation>
+insertItemBefore_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> Word -> m ()
+insertItemBefore_ self newItem index = liftDOM (void ((js_insertItemBefore (self) (toJSString newItem) (index))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
         js_removeItem :: SVGStringList -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/removeItem MDN SVGStringList.removeItem documentation>
+removeItem :: (MonadDOM m, FromJSString result) => SVGStringList -> Word -> m result
+removeItem self index = liftDOM ((fromJSString <$> (js_removeItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
-removeItem ::
-           (MonadIO m, FromJSString result) =>
-             SVGStringList -> Word -> m result
-removeItem self index
-  = liftIO (fromJSString <$> (js_removeItem self index))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/removeItem MDN SVGStringList.removeItem documentation>
+removeItem_ :: (MonadDOM m) => SVGStringList -> Word -> m ()
+removeItem_ self index = liftDOM (void ((js_removeItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
-removeItem_ :: (MonadIO m) => SVGStringList -> Word -> m ()
-removeItem_ self index = liftIO (void (js_removeItem self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
-        js_appendItem :: SVGStringList -> JSString -> IO JSString
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem :: SVGStringList -> JSString -> Word -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/replaceItem MDN SVGStringList.replaceItem documentation>
+replaceItem :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> Word -> m result
+replaceItem self newItem index = liftDOM ((fromJSString <$> (js_replaceItem (self) (toJSString newItem) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
-appendItem ::
-           (MonadIO m, ToJSString item, FromJSString result) =>
-             SVGStringList -> item -> m result
-appendItem self item
-  = liftIO (fromJSString <$> (js_appendItem self (toJSString item)))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/replaceItem MDN SVGStringList.replaceItem documentation>
+replaceItem_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> Word -> m ()
+replaceItem_ self newItem index = liftDOM (void ((js_replaceItem (self) (toJSString newItem) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
-appendItem_ ::
-            (MonadIO m, ToJSString item) => SVGStringList -> item -> m ()
-appendItem_ self item
-  = liftIO (void (js_appendItem self (toJSString item)))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SVGStringList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/length MDN SVGStringList.length documentation>
+getLength :: (MonadDOM m) => SVGStringList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
         js_getNumberOfItems :: SVGStringList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.numberOfItems Mozilla SVGStringList.numberOfItems documentation> 
-getNumberOfItems :: (MonadIO m) => SVGStringList -> m Word
-getNumberOfItems self = liftIO (js_getNumberOfItems self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/numberOfItems MDN SVGStringList.numberOfItems documentation>
+getNumberOfItems :: (MonadDOM m) => SVGStringList -> m Word
+getNumberOfItems self = liftDOM ((js_getNumberOfItems (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
@@ -1,91 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGStyleElement
-       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
-        js_setType, setType, js_getType, getType, js_setMedia, setMedia,
-        js_getMedia, getMedia, js_setTitle, setTitle, js_getTitle,
-        getTitle, SVGStyleElement(..), gTypeSVGStyleElement)
+       (js_setType, js_getType, js_setMedia, js_getMedia, js_setTitle, js_getTitle, js_setDisabled, js_getDisabled, setType, getType, setMedia, getMedia, setTitle, getTitle, setDisabled, getDisabled, SVGStyleElement(..), gTypeSVGStyleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
-        js_setDisabled :: SVGStyleElement -> Bool -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
-setDisabled :: (MonadIO m) => SVGStyleElement -> Bool -> m ()
-setDisabled self val = liftIO (js_setDisabled self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
-        js_getDisabled :: SVGStyleElement -> IO Bool
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: SVGStyleElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/type MDN SVGStyleElement.type documentation>
+setType :: (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
+setType self val = liftDOM (void ((js_setType (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
-getDisabled :: (MonadIO m) => SVGStyleElement -> m Bool
-getDisabled self = liftIO (js_getDisabled self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
-        SVGStyleElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: SVGStyleElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/type MDN SVGStyleElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
-setType ::
-        (MonadIO m, ToJSString val) => SVGStyleElement -> val -> m ()
-setType self val = liftIO (js_setType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        SVGStyleElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"media\"] = $2; })"
+        js_setMedia :: SVGStyleElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/media MDN SVGStyleElement.media documentation>
+setMedia :: (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
+setMedia self val = liftDOM (void ((js_setMedia (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => SVGStyleElement -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
-        :: SVGStyleElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: SVGStyleElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/media MDN SVGStyleElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getMedia self = liftDOM ((fromJSString <$> (js_getMedia (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
-setMedia ::
-         (MonadIO m, ToJSString val) => SVGStyleElement -> val -> m ()
-setMedia self val = liftIO (js_setMedia self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        SVGStyleElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: SVGStyleElement -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/title MDN SVGStyleElement.title documentation>
+setTitle :: (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
-getMedia ::
-         (MonadIO m, FromJSString result) => SVGStyleElement -> m result
-getMedia self = liftIO (fromJSString <$> (js_getMedia self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"title\"] = $2; })" js_setTitle
-        :: SVGStyleElement -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: SVGStyleElement -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/title MDN SVGStyleElement.title documentation>
+getTitle :: (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getTitle self = liftDOM ((fromJSString <$> (js_getTitle (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
-setTitle ::
-         (MonadIO m, ToJSString val) => SVGStyleElement -> val -> m ()
-setTitle self val = liftIO (js_setTitle self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
-        SVGStyleElement -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: SVGStyleElement -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/disabled MDN SVGStyleElement.disabled documentation>
+setDisabled :: (MonadDOM m) => SVGStyleElement -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
-getTitle ::
-         (MonadIO m, FromJSString result) => SVGStyleElement -> m result
-getTitle self = liftIO (fromJSString <$> (js_getTitle self))
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
+        js_getDisabled :: SVGStyleElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/disabled MDN SVGStyleElement.disabled documentation>
+getDisabled :: (MonadDOM m) => SVGStyleElement -> m Bool
+getDisabled self = liftDOM ((js_getDisabled (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGSwitchElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGSwitchElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGSwitchElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGSwitchElement
+       (SVGSwitchElement(..), gTypeSVGSwitchElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGSymbolElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGSymbolElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGSymbolElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGSymbolElement
+       (SVGSymbolElement(..), gTypeSVGSymbolElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTSpanElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTSpanElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTSpanElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGTSpanElement
+       (SVGTSpanElement(..), gTypeSVGTSpanElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
@@ -1,78 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGTests
-       (js_hasExtension, hasExtension, hasExtension_,
-        js_getRequiredFeatures, getRequiredFeatures,
-        js_getRequiredExtensions, getRequiredExtensions,
-        js_getSystemLanguage, getSystemLanguage, SVGTests(..),
-        gTypeSVGTests, IsSVGTests, toSVGTests)
+       (js_getRequiredExtensions, js_getSystemLanguage, getRequiredExtensions, getSystemLanguage, SVGTests(..), gTypeSVGTests, IsSVGTests, toSVGTests)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"hasExtension\"]($2) ? 1 : 0); })" js_hasExtension ::
-        SVGTests -> Optional JSString -> IO Bool
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
-hasExtension ::
-             (MonadIO m, IsSVGTests self, ToJSString extension) =>
-               self -> Maybe extension -> m Bool
-hasExtension self extension
-  = liftIO
-      (js_hasExtension (toSVGTests self) (toOptionalJSString extension))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
-hasExtension_ ::
-              (MonadIO m, IsSVGTests self, ToJSString extension) =>
-                self -> Maybe extension -> m ()
-hasExtension_ self extension
-  = liftIO
-      (void
-         (js_hasExtension (toSVGTests self) (toOptionalJSString extension)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"requiredFeatures\"]; })"
-        js_getRequiredFeatures :: SVGTests -> IO SVGStringList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredFeatures Mozilla SVGTests.requiredFeatures documentation> 
-getRequiredFeatures ::
-                    (MonadIO m, IsSVGTests self) => self -> m SVGStringList
-getRequiredFeatures self
-  = liftIO (js_getRequiredFeatures (toSVGTests self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"requiredExtensions\"]; })"
         js_getRequiredExtensions :: SVGTests -> IO SVGStringList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/requiredExtensions MDN SVGTests.requiredExtensions documentation>
+getRequiredExtensions :: (MonadDOM m, IsSVGTests self) => self -> m SVGStringList
+getRequiredExtensions self = liftDOM ((js_getRequiredExtensions ((Types.toSVGTests self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredExtensions Mozilla SVGTests.requiredExtensions documentation> 
-getRequiredExtensions ::
-                      (MonadIO m, IsSVGTests self) => self -> m SVGStringList
-getRequiredExtensions self
-  = liftIO (js_getRequiredExtensions (toSVGTests self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"systemLanguage\"]; })"
         js_getSystemLanguage :: SVGTests -> IO SVGStringList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.systemLanguage Mozilla SVGTests.systemLanguage documentation> 
-getSystemLanguage ::
-                  (MonadIO m, IsSVGTests self) => self -> m SVGStringList
-getSystemLanguage self
-  = liftIO (js_getSystemLanguage (toSVGTests self))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/systemLanguage MDN SVGTests.systemLanguage documentation>
+getSystemLanguage :: (MonadDOM m, IsSVGTests self) => self -> m SVGStringList
+getSystemLanguage self = liftDOM ((js_getSystemLanguage ((Types.toSVGTests self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
@@ -1,248 +1,121 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
-       (js_getNumberOfChars, getNumberOfChars, getNumberOfChars_,
-        js_getComputedTextLength, getComputedTextLength,
-        getComputedTextLength_, js_getSubStringLength, getSubStringLength,
-        getSubStringLength_, js_getStartPositionOfChar,
-        getStartPositionOfChar, getStartPositionOfChar_,
-        js_getEndPositionOfChar, getEndPositionOfChar,
-        getEndPositionOfChar_, js_getExtentOfChar, getExtentOfChar,
-        getExtentOfChar_, js_getRotationOfChar, getRotationOfChar,
-        getRotationOfChar_, js_getCharNumAtPosition, getCharNumAtPosition,
-        getCharNumAtPosition_, js_selectSubString, selectSubString,
-        pattern LENGTHADJUST_UNKNOWN, pattern LENGTHADJUST_SPACING,
-        pattern LENGTHADJUST_SPACINGANDGLYPHS, js_getTextLength,
-        getTextLength, js_getLengthAdjust, getLengthAdjust,
-        SVGTextContentElement(..), gTypeSVGTextContentElement,
-        IsSVGTextContentElement, toSVGTextContentElement)
+       (js_getCharNumAtPosition, js_getComputedTextLength, js_getEndPositionOfChar, js_getExtentOfChar, js_getNumberOfChars, js_getRotationOfChar, js_getStartPositionOfChar, js_getSubStringLength, js_selectSubString, js_getTextLength, js_getLengthAdjust, getCharNumAtPosition, getCharNumAtPosition_, getComputedTextLength, getComputedTextLength_, getEndPositionOfChar, getEndPositionOfChar_, getExtentOfChar, getExtentOfChar_, getNumberOfChars, getNumberOfChars_, getRotationOfChar, getRotationOfChar_, getStartPositionOfChar, getStartPositionOfChar_, getSubStringLength, getSubStringLength_, selectSubString, getTextLength, getLengthAdjust, pattern LENGTHADJUST_UNKNOWN, pattern LENGTHADJUST_SPACING, pattern LENGTHADJUST_SPACINGANDGLYPHS, SVGTextContentElement(..), gTypeSVGTextContentElement, IsSVGTextContentElement, toSVGTextContentElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getNumberOfChars\"](); })"
-        js_getNumberOfChars :: SVGTextContentElement -> IO Int
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
-getNumberOfChars ::
-                 (MonadIO m, IsSVGTextContentElement self) => self -> m Int
-getNumberOfChars self
-  = liftIO (js_getNumberOfChars (toSVGTextContentElement self))
+foreign import javascript safe "(($1, $2) => { return $1[\"getCharNumAtPosition\"]($2); })"
+        js_getCharNumAtPosition :: SVGTextContentElement -> JSVal -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getCharNumAtPosition MDN SVGTextContentElement.getCharNumAtPosition documentation>
+getCharNumAtPosition :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe DOMPointInit -> m Int
+getCharNumAtPosition self point = liftDOM (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_getCharNumAtPosition ((Types.toSVGTextContentElement self)) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
-getNumberOfChars_ ::
-                  (MonadIO m, IsSVGTextContentElement self) => self -> m ()
-getNumberOfChars_ self
-  = liftIO
-      (void (js_getNumberOfChars (toSVGTextContentElement self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getComputedTextLength\"](); })"
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getCharNumAtPosition MDN SVGTextContentElement.getCharNumAtPosition documentation>
+getCharNumAtPosition_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe DOMPointInit -> m ()
+getCharNumAtPosition_ self point = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal point) >>= \a2' -> js_getCharNumAtPosition ((Types.toSVGTextContentElement self)) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"getComputedTextLength\"](); })"
         js_getComputedTextLength :: SVGTextContentElement -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getComputedTextLength MDN SVGTextContentElement.getComputedTextLength documentation>
+getComputedTextLength :: (MonadDOM m, IsSVGTextContentElement self) => self -> m Float
+getComputedTextLength self = liftDOM ((js_getComputedTextLength ((Types.toSVGTextContentElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getComputedTextLength Mozilla SVGTextContentElement.getComputedTextLength documentation> 
-getComputedTextLength ::
-                      (MonadIO m, IsSVGTextContentElement self) => self -> m Float
-getComputedTextLength self
-  = liftIO (js_getComputedTextLength (toSVGTextContentElement self))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getComputedTextLength MDN SVGTextContentElement.getComputedTextLength documentation>
+getComputedTextLength_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> m ()
+getComputedTextLength_ self = liftDOM (void ((js_getComputedTextLength ((Types.toSVGTextContentElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getComputedTextLength Mozilla SVGTextContentElement.getComputedTextLength documentation> 
-getComputedTextLength_ ::
-                       (MonadIO m, IsSVGTextContentElement self) => self -> m ()
-getComputedTextLength_ self
-  = liftIO
-      (void (js_getComputedTextLength (toSVGTextContentElement self)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"getSubStringLength\"]($2, $3); })"
-        js_getSubStringLength ::
-        SVGTextContentElement -> Optional Word -> Optional Word -> IO Float
+foreign import javascript safe "(($1, $2) => { return $1[\"getEndPositionOfChar\"]($2); })"
+        js_getEndPositionOfChar :: SVGTextContentElement -> Word -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getEndPositionOfChar MDN SVGTextContentElement.getEndPositionOfChar documentation>
+getEndPositionOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m DOMPoint
+getEndPositionOfChar self charnum = liftDOM ((js_getEndPositionOfChar ((Types.toSVGTextContentElement self)) (charnum)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
-getSubStringLength ::
-                   (MonadIO m, IsSVGTextContentElement self) =>
-                     self -> Maybe Word -> Maybe Word -> m Float
-getSubStringLength self offset length
-  = liftIO
-      (js_getSubStringLength (toSVGTextContentElement self)
-         (maybeToOptional offset)
-         (maybeToOptional length))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getEndPositionOfChar MDN SVGTextContentElement.getEndPositionOfChar documentation>
+getEndPositionOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()
+getEndPositionOfChar_ self charnum = liftDOM (void ((js_getEndPositionOfChar ((Types.toSVGTextContentElement self)) (charnum))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
-getSubStringLength_ ::
-                    (MonadIO m, IsSVGTextContentElement self) =>
-                      self -> Maybe Word -> Maybe Word -> m ()
-getSubStringLength_ self offset length
-  = liftIO
-      (void
-         (js_getSubStringLength (toSVGTextContentElement self)
-            (maybeToOptional offset)
-            (maybeToOptional length)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getStartPositionOfChar\"]($2); })"
-        js_getStartPositionOfChar ::
-        SVGTextContentElement -> Optional Word -> IO SVGPoint
+foreign import javascript safe "(($1, $2) => { return $1[\"getExtentOfChar\"]($2); })"
+        js_getExtentOfChar :: SVGTextContentElement -> Word -> IO DOMRect
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getExtentOfChar MDN SVGTextContentElement.getExtentOfChar documentation>
+getExtentOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m DOMRect
+getExtentOfChar self charnum = liftDOM ((js_getExtentOfChar ((Types.toSVGTextContentElement self)) (charnum)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
-getStartPositionOfChar ::
-                       (MonadIO m, IsSVGTextContentElement self) =>
-                         self -> Maybe Word -> m SVGPoint
-getStartPositionOfChar self offset
-  = liftIO
-      (js_getStartPositionOfChar (toSVGTextContentElement self)
-         (maybeToOptional offset))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getExtentOfChar MDN SVGTextContentElement.getExtentOfChar documentation>
+getExtentOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()
+getExtentOfChar_ self charnum = liftDOM (void ((js_getExtentOfChar ((Types.toSVGTextContentElement self)) (charnum))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
-getStartPositionOfChar_ ::
-                        (MonadIO m, IsSVGTextContentElement self) =>
-                          self -> Maybe Word -> m ()
-getStartPositionOfChar_ self offset
-  = liftIO
-      (void
-         (js_getStartPositionOfChar (toSVGTextContentElement self)
-            (maybeToOptional offset)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getEndPositionOfChar\"]($2); })"
-        js_getEndPositionOfChar ::
-        SVGTextContentElement -> Optional Word -> IO SVGPoint
+foreign import javascript safe "(($1) => { return $1[\"getNumberOfChars\"](); })"
+        js_getNumberOfChars :: SVGTextContentElement -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getNumberOfChars MDN SVGTextContentElement.getNumberOfChars documentation>
+getNumberOfChars :: (MonadDOM m, IsSVGTextContentElement self) => self -> m Int
+getNumberOfChars self = liftDOM ((js_getNumberOfChars ((Types.toSVGTextContentElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
-getEndPositionOfChar ::
-                     (MonadIO m, IsSVGTextContentElement self) =>
-                       self -> Maybe Word -> m SVGPoint
-getEndPositionOfChar self offset
-  = liftIO
-      (js_getEndPositionOfChar (toSVGTextContentElement self)
-         (maybeToOptional offset))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getNumberOfChars MDN SVGTextContentElement.getNumberOfChars documentation>
+getNumberOfChars_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> m ()
+getNumberOfChars_ self = liftDOM (void ((js_getNumberOfChars ((Types.toSVGTextContentElement self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
-getEndPositionOfChar_ ::
-                      (MonadIO m, IsSVGTextContentElement self) =>
-                        self -> Maybe Word -> m ()
-getEndPositionOfChar_ self offset
-  = liftIO
-      (void
-         (js_getEndPositionOfChar (toSVGTextContentElement self)
-            (maybeToOptional offset)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getExtentOfChar\"]($2); })"
-        js_getExtentOfChar ::
-        SVGTextContentElement -> Optional Word -> IO SVGRect
+foreign import javascript safe "(($1, $2) => { return $1[\"getRotationOfChar\"]($2); })"
+        js_getRotationOfChar :: SVGTextContentElement -> Word -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getRotationOfChar MDN SVGTextContentElement.getRotationOfChar documentation>
+getRotationOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m Float
+getRotationOfChar self charnum = liftDOM ((js_getRotationOfChar ((Types.toSVGTextContentElement self)) (charnum)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
-getExtentOfChar ::
-                (MonadIO m, IsSVGTextContentElement self) =>
-                  self -> Maybe Word -> m SVGRect
-getExtentOfChar self offset
-  = liftIO
-      (js_getExtentOfChar (toSVGTextContentElement self)
-         (maybeToOptional offset))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getRotationOfChar MDN SVGTextContentElement.getRotationOfChar documentation>
+getRotationOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()
+getRotationOfChar_ self charnum = liftDOM (void ((js_getRotationOfChar ((Types.toSVGTextContentElement self)) (charnum))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
-getExtentOfChar_ ::
-                 (MonadIO m, IsSVGTextContentElement self) =>
-                   self -> Maybe Word -> m ()
-getExtentOfChar_ self offset
-  = liftIO
-      (void
-         (js_getExtentOfChar (toSVGTextContentElement self)
-            (maybeToOptional offset)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getRotationOfChar\"]($2); })"
-        js_getRotationOfChar ::
-        SVGTextContentElement -> Optional Word -> IO Float
+foreign import javascript safe "(($1, $2) => { return $1[\"getStartPositionOfChar\"]($2); })"
+        js_getStartPositionOfChar :: SVGTextContentElement -> Word -> IO DOMPoint
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getStartPositionOfChar MDN SVGTextContentElement.getStartPositionOfChar documentation>
+getStartPositionOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m DOMPoint
+getStartPositionOfChar self charnum = liftDOM ((js_getStartPositionOfChar ((Types.toSVGTextContentElement self)) (charnum)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
-getRotationOfChar ::
-                  (MonadIO m, IsSVGTextContentElement self) =>
-                    self -> Maybe Word -> m Float
-getRotationOfChar self offset
-  = liftIO
-      (js_getRotationOfChar (toSVGTextContentElement self)
-         (maybeToOptional offset))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getStartPositionOfChar MDN SVGTextContentElement.getStartPositionOfChar documentation>
+getStartPositionOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()
+getStartPositionOfChar_ self charnum = liftDOM (void ((js_getStartPositionOfChar ((Types.toSVGTextContentElement self)) (charnum))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
-getRotationOfChar_ ::
-                   (MonadIO m, IsSVGTextContentElement self) =>
-                     self -> Maybe Word -> m ()
-getRotationOfChar_ self offset
-  = liftIO
-      (void
-         (js_getRotationOfChar (toSVGTextContentElement self)
-            (maybeToOptional offset)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getCharNumAtPosition\"]($2); })"
-        js_getCharNumAtPosition ::
-        SVGTextContentElement -> SVGPoint -> IO Int
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getSubStringLength\"]($2, $3); })"
+        js_getSubStringLength :: SVGTextContentElement -> Word -> Word -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getSubStringLength MDN SVGTextContentElement.getSubStringLength documentation>
+getSubStringLength :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> Word -> m Float
+getSubStringLength self charnum nchars = liftDOM ((js_getSubStringLength ((Types.toSVGTextContentElement self)) (charnum) (nchars)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
-getCharNumAtPosition ::
-                     (MonadIO m, IsSVGTextContentElement self) =>
-                       self -> SVGPoint -> m Int
-getCharNumAtPosition self point
-  = liftIO
-      (js_getCharNumAtPosition (toSVGTextContentElement self) point)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getSubStringLength MDN SVGTextContentElement.getSubStringLength documentation>
+getSubStringLength_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> Word -> m ()
+getSubStringLength_ self charnum nchars = liftDOM (void ((js_getSubStringLength ((Types.toSVGTextContentElement self)) (charnum) (nchars))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
-getCharNumAtPosition_ ::
-                      (MonadIO m, IsSVGTextContentElement self) =>
-                        self -> SVGPoint -> m ()
-getCharNumAtPosition_ self point
-  = liftIO
-      (void
-         (js_getCharNumAtPosition (toSVGTextContentElement self) point))
- 
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"selectSubString\"]($2, $3); })"
-        js_selectSubString ::
-        SVGTextContentElement -> Optional Word -> Optional Word -> IO ()
+        js_selectSubString :: SVGTextContentElement -> Word -> Word -> IO ()
+-- | <https://w3c.github.io/svgwg/svg2-draft/text.html#__svg__SVGTextContentElement__selectSubString SVGTextContentElement.selectSubString specification>
+selectSubString :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> Word -> m ()
+selectSubString self charnum nchars = liftDOM (void ((js_selectSubString ((Types.toSVGTextContentElement self)) (charnum) (nchars))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.selectSubString Mozilla SVGTextContentElement.selectSubString documentation> 
-selectSubString ::
-                (MonadIO m, IsSVGTextContentElement self) =>
-                  self -> Maybe Word -> Maybe Word -> m ()
-selectSubString self offset length
-  = liftIO
-      (js_selectSubString (toSVGTextContentElement self)
-         (maybeToOptional offset)
-         (maybeToOptional length))
-pattern LENGTHADJUST_UNKNOWN = 0
-pattern LENGTHADJUST_SPACING = 1
-pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
- 
 foreign import javascript unsafe "(($1) => { return $1[\"textLength\"]; })"
         js_getTextLength :: SVGTextContentElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/textLength MDN SVGTextContentElement.textLength documentation>
+getTextLength :: (MonadDOM m, IsSVGTextContentElement self) => self -> m SVGAnimatedLength
+getTextLength self = liftDOM ((js_getTextLength ((Types.toSVGTextContentElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.textLength Mozilla SVGTextContentElement.textLength documentation> 
-getTextLength ::
-              (MonadIO m, IsSVGTextContentElement self) =>
-                self -> m SVGAnimatedLength
-getTextLength self
-  = liftIO (js_getTextLength (toSVGTextContentElement self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"lengthAdjust\"]; })"
-        js_getLengthAdjust ::
-        SVGTextContentElement -> IO SVGAnimatedEnumeration
+        js_getLengthAdjust :: SVGTextContentElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/lengthAdjust MDN SVGTextContentElement.lengthAdjust documentation>
+getLengthAdjust :: (MonadDOM m, IsSVGTextContentElement self) => self -> m SVGAnimatedEnumeration
+getLengthAdjust self = liftDOM ((js_getLengthAdjust ((Types.toSVGTextContentElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.lengthAdjust Mozilla SVGTextContentElement.lengthAdjust documentation> 
-getLengthAdjust ::
-                (MonadIO m, IsSVGTextContentElement self) =>
-                  self -> m SVGAnimatedEnumeration
-getLengthAdjust self
-  = liftIO (js_getLengthAdjust (toSVGTextContentElement self))
+pattern LENGTHADJUST_UNKNOWN = 0
+
+pattern LENGTHADJUST_SPACING = 1
+
+pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGTextElement
+       (SVGTextElement(..), gTypeSVGTextElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
@@ -1,63 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGTextPathElement
-       (pattern TEXTPATH_METHODTYPE_UNKNOWN,
-        pattern TEXTPATH_METHODTYPE_ALIGN,
-        pattern TEXTPATH_METHODTYPE_STRETCH,
-        pattern TEXTPATH_SPACINGTYPE_UNKNOWN,
-        pattern TEXTPATH_SPACINGTYPE_AUTO,
-        pattern TEXTPATH_SPACINGTYPE_EXACT, js_getStartOffset,
-        getStartOffset, js_getMethod, getMethod, js_getSpacing, getSpacing,
-        SVGTextPathElement(..), gTypeSVGTextPathElement)
+       (js_getStartOffset, js_getMethod, js_getSpacing, js_getSide, getStartOffset, getMethod, getSpacing, getSide, pattern TEXTPATH_METHODTYPE_UNKNOWN, pattern TEXTPATH_METHODTYPE_ALIGN, pattern TEXTPATH_METHODTYPE_STRETCH, pattern TEXTPATH_SPACINGTYPE_UNKNOWN, pattern TEXTPATH_SPACINGTYPE_AUTO, pattern TEXTPATH_SPACINGTYPE_EXACT, pattern TEXTPATH_SIDETYPE_UNKNOWN, pattern TEXTPATH_SIDETYPE_LEFT, pattern TEXTPATH_SIDETYPE_RIGHT, SVGTextPathElement(..), gTypeSVGTextPathElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
+        js_getStartOffset :: SVGTextPathElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/startOffset MDN SVGTextPathElement.startOffset documentation>
+getStartOffset :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedLength
+getStartOffset self = liftDOM ((js_getStartOffset (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })"
+        js_getMethod :: SVGTextPathElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/method MDN SVGTextPathElement.method documentation>
+getMethod :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getMethod self = liftDOM ((js_getMethod (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"spacing\"]; })"
+        js_getSpacing :: SVGTextPathElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/spacing MDN SVGTextPathElement.spacing documentation>
+getSpacing :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getSpacing self = liftDOM ((js_getSpacing (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"side\"]; })"
+        js_getSide :: SVGTextPathElement -> IO SVGAnimatedEnumeration
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/side MDN SVGTextPathElement.side documentation>
+getSide :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getSide self = liftDOM ((js_getSide (self)))
+
 pattern TEXTPATH_METHODTYPE_UNKNOWN = 0
+
 pattern TEXTPATH_METHODTYPE_ALIGN = 1
+
 pattern TEXTPATH_METHODTYPE_STRETCH = 2
+
 pattern TEXTPATH_SPACINGTYPE_UNKNOWN = 0
+
 pattern TEXTPATH_SPACINGTYPE_AUTO = 1
+
 pattern TEXTPATH_SPACINGTYPE_EXACT = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
-        js_getStartOffset :: SVGTextPathElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.startOffset Mozilla SVGTextPathElement.startOffset documentation> 
-getStartOffset ::
-               (MonadIO m) => SVGTextPathElement -> m SVGAnimatedLength
-getStartOffset self = liftIO (js_getStartOffset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })" js_getMethod ::
-        SVGTextPathElement -> IO SVGAnimatedEnumeration
+pattern TEXTPATH_SIDETYPE_UNKNOWN = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.method Mozilla SVGTextPathElement.method documentation> 
-getMethod ::
-          (MonadIO m) => SVGTextPathElement -> m SVGAnimatedEnumeration
-getMethod self = liftIO (js_getMethod self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"spacing\"]; })" js_getSpacing ::
-        SVGTextPathElement -> IO SVGAnimatedEnumeration
+pattern TEXTPATH_SIDETYPE_LEFT = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.spacing Mozilla SVGTextPathElement.spacing documentation> 
-getSpacing ::
-           (MonadIO m) => SVGTextPathElement -> m SVGAnimatedEnumeration
-getSpacing self = liftIO (js_getSpacing self)
+pattern TEXTPATH_SIDETYPE_RIGHT = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
@@ -1,75 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
-       (js_getX, getX, js_getY, getY, js_getDx, getDx, js_getDy, getDy,
-        js_getRotate, getRotate, SVGTextPositioningElement(..),
-        gTypeSVGTextPositioningElement, IsSVGTextPositioningElement,
-        toSVGTextPositioningElement)
+       (js_getX, js_getY, js_getDx, js_getDy, js_getRotate, getX, getY, getDx, getDy, getRotate, SVGTextPositioningElement(..), gTypeSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGTextPositioningElement -> IO SVGAnimatedLengthList
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
-getX ::
-     (MonadIO m, IsSVGTextPositioningElement self) =>
-       self -> m SVGAnimatedLengthList
-getX self = liftIO (js_getX (toSVGTextPositioningElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGTextPositioningElement -> IO SVGAnimatedLengthList
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGTextPositioningElement -> IO SVGAnimatedLengthList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/x MDN SVGTextPositioningElement.x documentation>
+getX :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getX self = liftDOM ((js_getX ((Types.toSVGTextPositioningElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.y Mozilla SVGTextPositioningElement.y documentation> 
-getY ::
-     (MonadIO m, IsSVGTextPositioningElement self) =>
-       self -> m SVGAnimatedLengthList
-getY self = liftIO (js_getY (toSVGTextPositioningElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
-        SVGTextPositioningElement -> IO SVGAnimatedLengthList
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGTextPositioningElement -> IO SVGAnimatedLengthList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/y MDN SVGTextPositioningElement.y documentation>
+getY :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getY self = liftDOM ((js_getY ((Types.toSVGTextPositioningElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dx Mozilla SVGTextPositioningElement.dx documentation> 
-getDx ::
-      (MonadIO m, IsSVGTextPositioningElement self) =>
-        self -> m SVGAnimatedLengthList
-getDx self = liftIO (js_getDx (toSVGTextPositioningElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
-        SVGTextPositioningElement -> IO SVGAnimatedLengthList
+foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })"
+        js_getDx :: SVGTextPositioningElement -> IO SVGAnimatedLengthList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/dx MDN SVGTextPositioningElement.dx documentation>
+getDx :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getDx self = liftDOM ((js_getDx ((Types.toSVGTextPositioningElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dy Mozilla SVGTextPositioningElement.dy documentation> 
-getDy ::
-      (MonadIO m, IsSVGTextPositioningElement self) =>
-        self -> m SVGAnimatedLengthList
-getDy self = liftIO (js_getDy (toSVGTextPositioningElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rotate\"]; })" js_getRotate ::
-        SVGTextPositioningElement -> IO SVGAnimatedNumberList
+foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })"
+        js_getDy :: SVGTextPositioningElement -> IO SVGAnimatedLengthList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/dy MDN SVGTextPositioningElement.dy documentation>
+getDy :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getDy self = liftDOM ((js_getDy ((Types.toSVGTextPositioningElement self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.rotate Mozilla SVGTextPositioningElement.rotate documentation> 
-getRotate ::
-          (MonadIO m, IsSVGTextPositioningElement self) =>
-            self -> m SVGAnimatedNumberList
-getRotate self
-  = liftIO (js_getRotate (toSVGTextPositioningElement self))
+foreign import javascript unsafe "(($1) => { return $1[\"rotate\"]; })"
+        js_getRotate :: SVGTextPositioningElement -> IO SVGAnimatedNumberList
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/rotate MDN SVGTextPositioningElement.rotate documentation>
+getRotate :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedNumberList
+getRotate self = liftDOM ((js_getRotate ((Types.toSVGTextPositioningElement self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTitleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTitleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTitleElement.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SVGTitleElement
+       (SVGTitleElement(..), gTypeSVGTitleElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
@@ -1,105 +1,85 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGTransform
-       (js_setMatrix, setMatrix, js_setTranslate, setTranslate,
-        js_setScale, setScale, js_setRotate, setRotate, js_setSkewX,
-        setSkewX, js_setSkewY, setSkewY, pattern SVG_TRANSFORM_UNKNOWN,
-        pattern SVG_TRANSFORM_MATRIX, pattern SVG_TRANSFORM_TRANSLATE,
-        pattern SVG_TRANSFORM_SCALE, pattern SVG_TRANSFORM_ROTATE,
-        pattern SVG_TRANSFORM_SKEWX, pattern SVG_TRANSFORM_SKEWY,
-        js_getType, getType, js_getMatrix, getMatrix, js_getAngle,
-        getAngle, SVGTransform(..), gTypeSVGTransform)
+       (js_setMatrix, js_setRotate, js_setScale, js_setSkewX, js_setSkewY, js_setTranslate, js_getType, js_getMatrix, js_getAngle, setMatrix, setRotate, setScale, setSkewX, setSkewY, setTranslate, getType, getMatrix, getAngle, pattern SVG_TRANSFORM_UNKNOWN, pattern SVG_TRANSFORM_MATRIX, pattern SVG_TRANSFORM_TRANSLATE, pattern SVG_TRANSFORM_SCALE, pattern SVG_TRANSFORM_ROTATE, pattern SVG_TRANSFORM_SKEWX, pattern SVG_TRANSFORM_SKEWY, SVGTransform(..), gTypeSVGTransform)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setMatrix\"]($2); })" js_setMatrix
-        :: SVGTransform -> SVGMatrix -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
-setMatrix :: (MonadIO m) => SVGTransform -> SVGMatrix -> m ()
-setMatrix self matrix = liftIO (js_setMatrix self matrix)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setTranslate\"]($2, $3); })"
-        js_setTranslate :: SVGTransform -> Float -> Float -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"setMatrix\"]($2); })"
+        js_setMatrix :: SVGTransform -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setMatrix MDN SVGTransform.setMatrix documentation>
+setMatrix :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGTransform -> Maybe matrix -> m ()
+setMatrix self matrix = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal matrix) >>= \a2' -> js_setMatrix (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setTranslate Mozilla SVGTransform.setTranslate documentation> 
-setTranslate ::
-             (MonadIO m) => SVGTransform -> Float -> Float -> m ()
-setTranslate self tx ty = liftIO (js_setTranslate self tx ty)
- 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setRotate\"]($2, $3, $4); })"
+        js_setRotate :: SVGTransform -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setRotate MDN SVGTransform.setRotate documentation>
+setRotate :: (MonadDOM m) => SVGTransform -> Float -> Float -> Float -> m ()
+setRotate self angle cx cy = liftDOM (void ((js_setRotate (self) (angle) (cx) (cy))))
+
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"setScale\"]($2, $3); })"
         js_setScale :: SVGTransform -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setScale MDN SVGTransform.setScale documentation>
+setScale :: (MonadDOM m) => SVGTransform -> Float -> Float -> m ()
+setScale self sx sy = liftDOM (void ((js_setScale (self) (sx) (sy))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setScale Mozilla SVGTransform.setScale documentation> 
-setScale :: (MonadIO m) => SVGTransform -> Float -> Float -> m ()
-setScale self sx sy = liftIO (js_setScale self sx sy)
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setRotate\"]($2, $3, $4); })"
-        js_setRotate :: SVGTransform -> Float -> Float -> Float -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"setSkewX\"]($2); })"
+        js_setSkewX :: SVGTransform -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setSkewX MDN SVGTransform.setSkewX documentation>
+setSkewX :: (MonadDOM m) => SVGTransform -> Float -> m ()
+setSkewX self angle = liftDOM (void ((js_setSkewX (self) (angle))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setRotate Mozilla SVGTransform.setRotate documentation> 
-setRotate ::
-          (MonadIO m) => SVGTransform -> Float -> Float -> Float -> m ()
-setRotate self angle cx cy = liftIO (js_setRotate self angle cx cy)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setSkewX\"]($2); })" js_setSkewX
-        :: SVGTransform -> Float -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"setSkewY\"]($2); })"
+        js_setSkewY :: SVGTransform -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setSkewY MDN SVGTransform.setSkewY documentation>
+setSkewY :: (MonadDOM m) => SVGTransform -> Float -> m ()
+setSkewY self angle = liftDOM (void ((js_setSkewY (self) (angle))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewX Mozilla SVGTransform.setSkewX documentation> 
-setSkewX :: (MonadIO m) => SVGTransform -> Float -> m ()
-setSkewX self angle = liftIO (js_setSkewX self angle)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setSkewY\"]($2); })" js_setSkewY
-        :: SVGTransform -> Float -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setTranslate\"]($2, $3); })"
+        js_setTranslate :: SVGTransform -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setTranslate MDN SVGTransform.setTranslate documentation>
+setTranslate :: (MonadDOM m) => SVGTransform -> Float -> Float -> m ()
+setTranslate self tx ty = liftDOM (void ((js_setTranslate (self) (tx) (ty))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewY Mozilla SVGTransform.setSkewY documentation> 
-setSkewY :: (MonadIO m) => SVGTransform -> Float -> m ()
-setSkewY self angle = liftIO (js_setSkewY self angle)
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: SVGTransform -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/type MDN SVGTransform.type documentation>
+getType :: (MonadDOM m) => SVGTransform -> m Word
+getType self = liftDOM ((js_getType (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"matrix\"]; })"
+        js_getMatrix :: SVGTransform -> IO DOMMatrix
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/matrix MDN SVGTransform.matrix documentation>
+getMatrix :: (MonadDOM m) => SVGTransform -> m DOMMatrix
+getMatrix self = liftDOM ((js_getMatrix (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })"
+        js_getAngle :: SVGTransform -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/angle MDN SVGTransform.angle documentation>
+getAngle :: (MonadDOM m) => SVGTransform -> m Float
+getAngle self = liftDOM ((js_getAngle (self)))
+
 pattern SVG_TRANSFORM_UNKNOWN = 0
+
 pattern SVG_TRANSFORM_MATRIX = 1
+
 pattern SVG_TRANSFORM_TRANSLATE = 2
+
 pattern SVG_TRANSFORM_SCALE = 3
-pattern SVG_TRANSFORM_ROTATE = 4
-pattern SVG_TRANSFORM_SKEWX = 5
-pattern SVG_TRANSFORM_SKEWY = 6
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        SVGTransform -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.type Mozilla SVGTransform.type documentation> 
-getType :: (MonadIO m) => SVGTransform -> m Word
-getType self = liftIO (js_getType self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"matrix\"]; })" js_getMatrix ::
-        SVGTransform -> IO SVGMatrix
+pattern SVG_TRANSFORM_ROTATE = 4
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
-getMatrix :: (MonadIO m) => SVGTransform -> m SVGMatrix
-getMatrix self = liftIO (js_getMatrix self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })" js_getAngle ::
-        SVGTransform -> IO Float
+pattern SVG_TRANSFORM_SKEWX = 5
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.angle Mozilla SVGTransform.angle documentation> 
-getAngle :: (MonadIO m) => SVGTransform -> m Float
-getAngle self = liftIO (js_getAngle self)
+pattern SVG_TRANSFORM_SKEWY = 6
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
@@ -1,162 +1,123 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGTransformList
-       (js_clear, clear, js_initialize, initialize, initialize_,
-        js_getItem, getItem, getItem_, js_insertItemBefore,
-        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
-        replaceItem_, js_removeItem, removeItem, removeItem_,
-        js_appendItem, appendItem, appendItem_,
-        js_createSVGTransformFromMatrix, createSVGTransformFromMatrix,
-        createSVGTransformFromMatrix_, js_consolidate, consolidate,
-        consolidate_, js_getNumberOfItems, getNumberOfItems,
-        SVGTransformList(..), gTypeSVGTransformList)
+       (js_appendItem, js_clear, js_consolidate, js_createSVGTransformFromMatrix, js_getItem, js_initialize, js_insertItemBefore, js_removeItem, js_replaceItem, js_getLength, js_getNumberOfItems, appendItem, appendItem_, clear, consolidate, consolidate_, consolidateUnsafe, consolidateUnchecked, createSVGTransformFromMatrix, createSVGTransformFromMatrix_, getItem, getItem_, initialize, initialize_, insertItemBefore, insertItemBefore_, removeItem, removeItem_, replaceItem, replaceItem_, getLength, getNumberOfItems, SVGTransformList(..), gTypeSVGTransformList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        SVGTransformList -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.clear Mozilla SVGTransformList.clear documentation> 
-clear :: (MonadIO m) => SVGTransformList -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
-        js_initialize ::
-        SVGTransformList -> SVGTransform -> IO SVGTransform
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGTransformList -> SVGTransform -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/appendItem MDN SVGTransformList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m SVGTransform
+appendItem self newItem = liftDOM ((js_appendItem (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
-initialize ::
-           (MonadIO m) => SVGTransformList -> SVGTransform -> m SVGTransform
-initialize self item = liftIO (js_initialize self item)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/appendItem MDN SVGTransformList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m ()
+appendItem_ self newItem = liftDOM (void ((js_appendItem (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
-initialize_ ::
-            (MonadIO m) => SVGTransformList -> SVGTransform -> m ()
-initialize_ self item = liftIO (void (js_initialize self item))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
-        SVGTransformList -> Word -> IO SVGTransform
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: SVGTransformList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/clear MDN SVGTransformList.clear documentation>
+clear :: (MonadDOM m) => SVGTransformList -> m ()
+clear self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
-getItem ::
-        (MonadIO m) => SVGTransformList -> Word -> m SVGTransform
-getItem self index = liftIO (js_getItem self index)
+foreign import javascript safe "(($1) => { return $1[\"consolidate\"](); })"
+        js_consolidate :: SVGTransformList -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidate :: (MonadDOM m) => SVGTransformList -> m (Maybe SVGTransform)
+consolidate self = liftDOM (((js_consolidate (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
-getItem_ :: (MonadIO m) => SVGTransformList -> Word -> m ()
-getItem_ self index = liftIO (void (js_getItem self index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
-        js_insertItemBefore ::
-        SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidate_ :: (MonadDOM m) => SVGTransformList -> m ()
+consolidate_ self = liftDOM (void ((js_consolidate (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadIO m) =>
-                   SVGTransformList -> SVGTransform -> Word -> m SVGTransform
-insertItemBefore self item index
-  = liftIO (js_insertItemBefore self item index)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidateUnsafe :: (MonadDOM m, HasCallStack) => SVGTransformList -> m SVGTransform
+consolidateUnsafe self = liftDOM ((((js_consolidate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadIO m) => SVGTransformList -> SVGTransform -> Word -> m ()
-insertItemBefore_ self item index
-  = liftIO (void (js_insertItemBefore self item index))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
-        js_replaceItem ::
-        SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidateUnchecked :: (MonadDOM m) => SVGTransformList -> m SVGTransform
+consolidateUnchecked self = liftDOM ((pFromJSVal <$> (js_consolidate (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
-replaceItem ::
-            (MonadIO m) =>
-              SVGTransformList -> SVGTransform -> Word -> m SVGTransform
-replaceItem self item index
-  = liftIO (js_replaceItem self item index)
+foreign import javascript safe "(($1, $2) => { return $1[\"createSVGTransformFromMatrix\"]($2); })"
+        js_createSVGTransformFromMatrix :: SVGTransformList -> JSVal -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/createSVGTransformFromMatrix MDN SVGTransformList.createSVGTransformFromMatrix documentation>
+createSVGTransformFromMatrix :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGTransformList -> Maybe matrix -> m SVGTransform
+createSVGTransformFromMatrix self matrix = liftDOM (((P.maybe (P.return jsUndefined) toJSVal matrix) >>= \a2' -> js_createSVGTransformFromMatrix (self) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadIO m) => SVGTransformList -> SVGTransform -> Word -> m ()
-replaceItem_ self item index
-  = liftIO (void (js_replaceItem self item index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
-        js_removeItem :: SVGTransformList -> Word -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/createSVGTransformFromMatrix MDN SVGTransformList.createSVGTransformFromMatrix documentation>
+createSVGTransformFromMatrix_ :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGTransformList -> Maybe matrix -> m ()
+createSVGTransformFromMatrix_ self matrix = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal matrix) >>= \a2' -> js_createSVGTransformFromMatrix (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
-removeItem ::
-           (MonadIO m) => SVGTransformList -> Word -> m SVGTransform
-removeItem self index = liftIO (js_removeItem self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })"
+        js_getItem :: SVGTransformList -> Word -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/getItem MDN SVGTransformList.getItem documentation>
+getItem :: (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
+getItem self index = liftDOM ((js_getItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
-removeItem_ :: (MonadIO m) => SVGTransformList -> Word -> m ()
-removeItem_ self index = liftIO (void (js_removeItem self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
-        js_appendItem ::
-        SVGTransformList -> SVGTransform -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/getItem MDN SVGTransformList.getItem documentation>
+getItem_ :: (MonadDOM m) => SVGTransformList -> Word -> m ()
+getItem_ self index = liftDOM (void ((js_getItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
-appendItem ::
-           (MonadIO m) => SVGTransformList -> SVGTransform -> m SVGTransform
-appendItem self item = liftIO (js_appendItem self item)
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGTransformList -> SVGTransform -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/initialize MDN SVGTransformList.initialize documentation>
+initialize :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m SVGTransform
+initialize self newItem = liftDOM ((js_initialize (self) (newItem)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
-appendItem_ ::
-            (MonadIO m) => SVGTransformList -> SVGTransform -> m ()
-appendItem_ self item = liftIO (void (js_appendItem self item))
- 
-foreign import javascript safe
-        "(($1, $2) => { return $1[\"createSVGTransformFromMatrix\"]($2); })"
-        js_createSVGTransformFromMatrix ::
-        SVGTransformList -> SVGMatrix -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/initialize MDN SVGTransformList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m ()
+initialize_ self newItem = liftDOM (void ((js_initialize (self) (newItem))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix ::
-                             (MonadIO m) => SVGTransformList -> SVGMatrix -> m SVGTransform
-createSVGTransformFromMatrix self matrix
-  = liftIO (js_createSVGTransformFromMatrix self matrix)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore :: SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/insertItemBefore MDN SVGTransformList.insertItemBefore documentation>
+insertItemBefore :: (MonadDOM m) => SVGTransformList -> SVGTransform -> Word -> m SVGTransform
+insertItemBefore self newItem index = liftDOM ((js_insertItemBefore (self) (newItem) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix_ ::
-                              (MonadIO m) => SVGTransformList -> SVGMatrix -> m ()
-createSVGTransformFromMatrix_ self matrix
-  = liftIO (void (js_createSVGTransformFromMatrix self matrix))
- 
-foreign import javascript safe "(($1) => { return $1[\"consolidate\"](); })"
-        js_consolidate :: SVGTransformList -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/insertItemBefore MDN SVGTransformList.insertItemBefore documentation>
+insertItemBefore_ :: (MonadDOM m) => SVGTransformList -> SVGTransform -> Word -> m ()
+insertItemBefore_ self newItem index = liftDOM (void ((js_insertItemBefore (self) (newItem) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
-consolidate :: (MonadIO m) => SVGTransformList -> m SVGTransform
-consolidate self = liftIO (js_consolidate self)
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: SVGTransformList -> Word -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/removeItem MDN SVGTransformList.removeItem documentation>
+removeItem :: (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
+removeItem self index = liftDOM ((js_removeItem (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
-consolidate_ :: (MonadIO m) => SVGTransformList -> m ()
-consolidate_ self = liftIO (void (js_consolidate self))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/removeItem MDN SVGTransformList.removeItem documentation>
+removeItem_ :: (MonadDOM m) => SVGTransformList -> Word -> m ()
+removeItem_ self index = liftDOM (void ((js_removeItem (self) (index))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem :: SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/replaceItem MDN SVGTransformList.replaceItem documentation>
+replaceItem :: (MonadDOM m) => SVGTransformList -> SVGTransform -> Word -> m SVGTransform
+replaceItem self newItem index = liftDOM ((js_replaceItem (self) (newItem) (index)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/replaceItem MDN SVGTransformList.replaceItem documentation>
+replaceItem_ :: (MonadDOM m) => SVGTransformList -> SVGTransform -> Word -> m ()
+replaceItem_ self newItem index = liftDOM (void ((js_replaceItem (self) (newItem) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SVGTransformList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/length MDN SVGTransformList.length documentation>
+getLength :: (MonadDOM m) => SVGTransformList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
         js_getNumberOfItems :: SVGTransformList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.numberOfItems Mozilla SVGTransformList.numberOfItems documentation> 
-getNumberOfItems :: (MonadIO m) => SVGTransformList -> m Word
-getNumberOfItems self = liftIO (js_getNumberOfItems self)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/numberOfItems MDN SVGTransformList.numberOfItems documentation>
+getNumberOfItems :: (MonadDOM m) => SVGTransformList -> m Word
+getNumberOfItems self = liftDOM ((js_getNumberOfItems (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
@@ -1,35 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGURIReference
-       (js_getHref, getHref, SVGURIReference(..), gTypeSVGURIReference,
-        IsSVGURIReference, toSVGURIReference)
+       (js_getHref, getHref, SVGURIReference(..), gTypeSVGURIReference, IsSVGURIReference, toSVGURIReference)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        SVGURIReference -> IO SVGAnimatedString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
-getHref ::
-        (MonadIO m, IsSVGURIReference self) => self -> m SVGAnimatedString
-getHref self = liftIO (js_getHref (toSVGURIReference self))
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: SVGURIReference -> IO SVGAnimatedString
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/href MDN SVGURIReference.href documentation>
+getHref :: (MonadDOM m, IsSVGURIReference self) => self -> m SVGAnimatedString
+getHref self = liftDOM ((js_getHref ((Types.toSVGURIReference self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
@@ -1,32 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
-       (pattern SVG_UNIT_TYPE_UNKNOWN,
-        pattern SVG_UNIT_TYPE_USERSPACEONUSE,
-        pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, SVGUnitTypes(..),
-        gTypeSVGUnitTypes)
+       (pattern SVG_UNIT_TYPE_UNKNOWN, pattern SVG_UNIT_TYPE_USERSPACEONUSE, pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, SVGUnitTypes(..), gTypeSVGUnitTypes)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
+
 pattern SVG_UNIT_TYPE_UNKNOWN = 0
+
 pattern SVG_UNIT_TYPE_USERSPACEONUSE = 1
+
 pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
@@ -1,55 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGUseElement
-       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
-        getHeight, SVGUseElement(..), gTypeSVGUseElement)
+       (js_getX, js_getY, js_getWidth, js_getHeight, getX, getY, getWidth, getHeight, SVGUseElement(..), gTypeSVGUseElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        SVGUseElement -> IO SVGAnimatedLength
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
-getX :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        SVGUseElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })"
+        js_getX :: SVGUseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/x MDN SVGUseElement.x documentation>
+getX :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
+getX self = liftDOM ((js_getX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.y Mozilla SVGUseElement.y documentation> 
-getY :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
-getY self = liftIO (js_getY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        SVGUseElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })"
+        js_getY :: SVGUseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/y MDN SVGUseElement.y documentation>
+getY :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
+getY self = liftDOM ((js_getY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.width Mozilla SVGUseElement.width documentation> 
-getWidth :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        SVGUseElement -> IO SVGAnimatedLength
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: SVGUseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/width MDN SVGUseElement.width documentation>
+getWidth :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.height Mozilla SVGUseElement.height documentation> 
-getHeight :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
-getHeight self = liftIO (js_getHeight self)
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: SVGUseElement -> IO SVGAnimatedLength
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/height MDN SVGUseElement.height documentation>
+getHeight :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
+getHeight self = liftDOM ((js_getHeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
@@ -1,34 +1,18 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SVGViewElement
-       (js_getViewTarget, getViewTarget, SVGViewElement(..),
-        gTypeSVGViewElement)
+       (SVGViewElement(..), gTypeSVGViewElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"viewTarget\"]; })"
-        js_getViewTarget :: SVGViewElement -> IO SVGStringList
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
-getViewTarget :: (MonadIO m) => SVGViewElement -> m SVGStringList
-getViewTarget self = liftIO (js_getViewTarget self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs
+++ /dev/null
@@ -1,96 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGViewSpec
-       (js_getTransform, getTransform, js_getViewTarget, getViewTarget,
-        js_getViewBoxString, getViewBoxString,
-        js_getPreserveAspectRatioString, getPreserveAspectRatioString,
-        js_getTransformString, getTransformString, js_getViewTargetString,
-        getViewTargetString, js_setZoomAndPan, setZoomAndPan,
-        js_getZoomAndPan, getZoomAndPan, SVGViewSpec(..), gTypeSVGViewSpec)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
-        js_getTransform :: SVGViewSpec -> IO SVGTransformList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
-getTransform :: (MonadIO m) => SVGViewSpec -> m SVGTransformList
-getTransform self = liftIO (js_getTransform self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"viewTarget\"]; })"
-        js_getViewTarget :: SVGViewSpec -> IO SVGElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
-getViewTarget :: (MonadIO m) => SVGViewSpec -> m SVGElement
-getViewTarget self = liftIO (js_getViewTarget self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"viewBoxString\"]; })"
-        js_getViewBoxString :: SVGViewSpec -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewBoxString Mozilla SVGViewSpec.viewBoxString documentation> 
-getViewBoxString ::
-                 (MonadIO m, FromJSString result) => SVGViewSpec -> m result
-getViewBoxString self
-  = liftIO (fromJSString <$> (js_getViewBoxString self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"preserveAspectRatioString\"]; })" js_getPreserveAspectRatioString
-        :: SVGViewSpec -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.preserveAspectRatioString Mozilla SVGViewSpec.preserveAspectRatioString documentation> 
-getPreserveAspectRatioString ::
-                             (MonadIO m, FromJSString result) => SVGViewSpec -> m result
-getPreserveAspectRatioString self
-  = liftIO (fromJSString <$> (js_getPreserveAspectRatioString self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"transformString\"]; })"
-        js_getTransformString :: SVGViewSpec -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transformString Mozilla SVGViewSpec.transformString documentation> 
-getTransformString ::
-                   (MonadIO m, FromJSString result) => SVGViewSpec -> m result
-getTransformString self
-  = liftIO (fromJSString <$> (js_getTransformString self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"viewTargetString\"]; })"
-        js_getViewTargetString :: SVGViewSpec -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTargetString Mozilla SVGViewSpec.viewTargetString documentation> 
-getViewTargetString ::
-                    (MonadIO m, FromJSString result) => SVGViewSpec -> m result
-getViewTargetString self
-  = liftIO (fromJSString <$> (js_getViewTargetString self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"zoomAndPan\"] = $2; })"
-        js_setZoomAndPan :: SVGViewSpec -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
-setZoomAndPan :: (MonadIO m) => SVGViewSpec -> Word -> m ()
-setZoomAndPan self val = liftIO (js_setZoomAndPan self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"zoomAndPan\"]; })"
-        js_getZoomAndPan :: SVGViewSpec -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
-getZoomAndPan :: (MonadIO m) => SVGViewSpec -> m Word
-getZoomAndPan self = liftIO (js_getZoomAndPan self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan
-       (pattern SVG_ZOOMANDPAN_UNKNOWN, pattern SVG_ZOOMANDPAN_DISABLE,
-        pattern SVG_ZOOMANDPAN_MAGNIFY, js_setZoomAndPan, setZoomAndPan,
-        js_getZoomAndPan, getZoomAndPan, SVGZoomAndPan(..),
-        gTypeSVGZoomAndPan, IsSVGZoomAndPan, toSVGZoomAndPan)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern SVG_ZOOMANDPAN_UNKNOWN = 0
-pattern SVG_ZOOMANDPAN_DISABLE = 1
-pattern SVG_ZOOMANDPAN_MAGNIFY = 2
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"zoomAndPan\"] = $2; })"
-        js_setZoomAndPan :: SVGZoomAndPan -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
-setZoomAndPan ::
-              (MonadIO m, IsSVGZoomAndPan self) => self -> Word -> m ()
-setZoomAndPan self val
-  = liftIO (js_setZoomAndPan (toSVGZoomAndPan self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"zoomAndPan\"]; })"
-        js_getZoomAndPan :: SVGZoomAndPan -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
-getZoomAndPan ::
-              (MonadIO m, IsSVGZoomAndPan self) => self -> m Word
-getZoomAndPan self
-  = liftIO (js_getZoomAndPan (toSVGZoomAndPan self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SVGZoomEvent
-       (js_getZoomRectScreen, getZoomRectScreen, js_getPreviousScale,
-        getPreviousScale, js_getPreviousTranslate, getPreviousTranslate,
-        js_getNewScale, getNewScale, js_getNewTranslate, getNewTranslate,
-        SVGZoomEvent(..), gTypeSVGZoomEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"zoomRectScreen\"]; })"
-        js_getZoomRectScreen :: SVGZoomEvent -> IO SVGRect
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
-getZoomRectScreen :: (MonadIO m) => SVGZoomEvent -> m SVGRect
-getZoomRectScreen self = liftIO (js_getZoomRectScreen self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"previousScale\"]; })"
-        js_getPreviousScale :: SVGZoomEvent -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousScale Mozilla SVGZoomEvent.previousScale documentation> 
-getPreviousScale :: (MonadIO m) => SVGZoomEvent -> m Float
-getPreviousScale self = liftIO (js_getPreviousScale self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"previousTranslate\"]; })"
-        js_getPreviousTranslate :: SVGZoomEvent -> IO SVGPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousTranslate Mozilla SVGZoomEvent.previousTranslate documentation> 
-getPreviousTranslate :: (MonadIO m) => SVGZoomEvent -> m SVGPoint
-getPreviousTranslate self = liftIO (js_getPreviousTranslate self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"newScale\"]; })" js_getNewScale
-        :: SVGZoomEvent -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newScale Mozilla SVGZoomEvent.newScale documentation> 
-getNewScale :: (MonadIO m) => SVGZoomEvent -> m Float
-getNewScale self = liftIO (js_getNewScale self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"newTranslate\"]; })"
-        js_getNewTranslate :: SVGZoomEvent -> IO SVGPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newTranslate Mozilla SVGZoomEvent.newTranslate documentation> 
-getNewTranslate :: (MonadIO m) => SVGZoomEvent -> m SVGPoint
-getNewTranslate self = liftIO (js_getNewTranslate self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Sanitizer.hs b/src/GHCJS/DOM/JSFFI/Generated/Sanitizer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Sanitizer.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Sanitizer
+       (js_newSanitizer, js_allowAttribute, js_allowElement, js_get, js_removeAttribute, js_removeElement, js_removeUnsafe, js_replaceElementWithChildren, js_setComments, js_setDataAttributes, newSanitizer, allowAttribute, allowAttribute_, allowElement, allowElement_, get, get_, removeAttribute, removeAttribute_, removeElement, removeElement_, removeUnsafe, removeUnsafe_, replaceElementWithChildren, replaceElementWithChildren_, setComments, setComments_, setDataAttributes, setDataAttributes_, Sanitizer(..), gTypeSanitizer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"Sanitizer\"]($1); })"
+        js_newSanitizer :: JSVal -> IO Sanitizer
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/Sanitizer MDN Sanitizer. documentation>
+newSanitizer :: (MonadDOM m, IsSanitizerConfigOrSanitizerPresets configuration) => Maybe configuration -> m Sanitizer
+newSanitizer configuration = liftDOM (((P.maybe (P.return jsUndefined) toJSVal configuration) >>= \a1' -> js_newSanitizer a1'))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"allowAttribute\"]($2); })"
+        js_allowAttribute :: Sanitizer -> SanitizerAttribute -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/allowAttribute MDN Sanitizer.allowAttribute documentation>
+allowAttribute :: (MonadDOM m, IsSanitizerAttribute attribute) => Sanitizer -> attribute -> m Bool
+allowAttribute self attribute = liftDOM ((js_allowAttribute (self) (Types.toSanitizerAttribute attribute)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/allowAttribute MDN Sanitizer.allowAttribute documentation>
+allowAttribute_ :: (MonadDOM m, IsSanitizerAttribute attribute) => Sanitizer -> attribute -> m ()
+allowAttribute_ self attribute = liftDOM (void ((js_allowAttribute (self) (Types.toSanitizerAttribute attribute))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"allowElement\"]($2); })"
+        js_allowElement :: Sanitizer -> SanitizerElementWithAttributes -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/allowElement MDN Sanitizer.allowElement documentation>
+allowElement :: (MonadDOM m, IsSanitizerElementWithAttributes element) => Sanitizer -> element -> m Bool
+allowElement self element = liftDOM ((js_allowElement (self) (Types.toSanitizerElementWithAttributes element)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/allowElement MDN Sanitizer.allowElement documentation>
+allowElement_ :: (MonadDOM m, IsSanitizerElementWithAttributes element) => Sanitizer -> element -> m ()
+allowElement_ self element = liftDOM (void ((js_allowElement (self) (Types.toSanitizerElementWithAttributes element))))
+
+foreign import javascript safe "(($1) => { return $1[\"get\"](); })"
+        js_get :: Sanitizer -> IO SanitizerConfig
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/get MDN Sanitizer.get documentation>
+get :: (MonadDOM m) => Sanitizer -> m SanitizerConfig
+get self = liftDOM ((js_get (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/get MDN Sanitizer.get documentation>
+get_ :: (MonadDOM m) => Sanitizer -> m ()
+get_ self = liftDOM (void ((js_get (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"removeAttribute\"]($2); })"
+        js_removeAttribute :: Sanitizer -> SanitizerAttribute -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeAttribute MDN Sanitizer.removeAttribute documentation>
+removeAttribute :: (MonadDOM m, IsSanitizerAttribute attribute) => Sanitizer -> attribute -> m Bool
+removeAttribute self attribute = liftDOM ((js_removeAttribute (self) (Types.toSanitizerAttribute attribute)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeAttribute MDN Sanitizer.removeAttribute documentation>
+removeAttribute_ :: (MonadDOM m, IsSanitizerAttribute attribute) => Sanitizer -> attribute -> m ()
+removeAttribute_ self attribute = liftDOM (void ((js_removeAttribute (self) (Types.toSanitizerAttribute attribute))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"removeElement\"]($2); })"
+        js_removeElement :: Sanitizer -> SanitizerElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeElement MDN Sanitizer.removeElement documentation>
+removeElement :: (MonadDOM m, IsSanitizerElement element) => Sanitizer -> element -> m Bool
+removeElement self element = liftDOM ((js_removeElement (self) (Types.toSanitizerElement element)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeElement MDN Sanitizer.removeElement documentation>
+removeElement_ :: (MonadDOM m, IsSanitizerElement element) => Sanitizer -> element -> m ()
+removeElement_ self element = liftDOM (void ((js_removeElement (self) (Types.toSanitizerElement element))))
+
+foreign import javascript safe "(($1) => { return $1[\"removeUnsafe\"](); })"
+        js_removeUnsafe :: Sanitizer -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeUnsafe MDN Sanitizer.removeUnsafe documentation>
+removeUnsafe :: (MonadDOM m) => Sanitizer -> m Bool
+removeUnsafe self = liftDOM ((js_removeUnsafe (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeUnsafe MDN Sanitizer.removeUnsafe documentation>
+removeUnsafe_ :: (MonadDOM m) => Sanitizer -> m ()
+removeUnsafe_ self = liftDOM (void ((js_removeUnsafe (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"replaceElementWithChildren\"]($2); })"
+        js_replaceElementWithChildren :: Sanitizer -> SanitizerElement -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/replaceElementWithChildren MDN Sanitizer.replaceElementWithChildren documentation>
+replaceElementWithChildren :: (MonadDOM m, IsSanitizerElement element) => Sanitizer -> element -> m Bool
+replaceElementWithChildren self element = liftDOM ((js_replaceElementWithChildren (self) (Types.toSanitizerElement element)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/replaceElementWithChildren MDN Sanitizer.replaceElementWithChildren documentation>
+replaceElementWithChildren_ :: (MonadDOM m, IsSanitizerElement element) => Sanitizer -> element -> m ()
+replaceElementWithChildren_ self element = liftDOM (void ((js_replaceElementWithChildren (self) (Types.toSanitizerElement element))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setComments\"]($2); })"
+        js_setComments :: Sanitizer -> Bool -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setComments MDN Sanitizer.setComments documentation>
+setComments :: (MonadDOM m) => Sanitizer -> Bool -> m Bool
+setComments self allow = liftDOM ((js_setComments (self) (allow)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setComments MDN Sanitizer.setComments documentation>
+setComments_ :: (MonadDOM m) => Sanitizer -> Bool -> m ()
+setComments_ self allow = liftDOM (void ((js_setComments (self) (allow))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setDataAttributes\"]($2); })"
+        js_setDataAttributes :: Sanitizer -> Bool -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setDataAttributes MDN Sanitizer.setDataAttributes documentation>
+setDataAttributes :: (MonadDOM m) => Sanitizer -> Bool -> m Bool
+setDataAttributes self allow = liftDOM ((js_setDataAttributes (self) (allow)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setDataAttributes MDN Sanitizer.setDataAttributes documentation>
+setDataAttributes_ :: (MonadDOM m) => Sanitizer -> Bool -> m ()
+setDataAttributes_ self allow = liftDOM (void ((js_setDataAttributes (self) (allow))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SanitizerAttributeNamespace.hs b/src/GHCJS/DOM/JSFFI/Generated/SanitizerAttributeNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SanitizerAttributeNamespace.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SanitizerAttributeNamespace
+       (js_newSanitizerAttributeNamespace, js_setName, js_getName, js_setNamespace, js_getNamespace, newSanitizerAttributeNamespace, setName, getName, setNamespace, getNamespace, getNamespaceUnsafe, getNamespaceUnchecked, SanitizerAttributeNamespace(..), gTypeSanitizerAttributeNamespace)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"name\": $1}); })"
+        js_newSanitizerAttributeNamespace :: JSString -> IO SanitizerAttributeNamespace
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerattributenamespace SanitizerAttributeNamespace specification>
+newSanitizerAttributeNamespace :: (MonadDOM m, ToJSString name) => name -> m SanitizerAttributeNamespace
+newSanitizerAttributeNamespace name = liftDOM ((js_newSanitizerAttributeNamespace (toJSString name)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: SanitizerAttributeNamespace -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerattributenamespace-name SanitizerAttributeNamespace.name specification>
+setName :: (MonadDOM m, ToJSString val) => SanitizerAttributeNamespace -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: SanitizerAttributeNamespace -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerattributenamespace-name SanitizerAttributeNamespace.name specification>
+getName :: (MonadDOM m, FromJSString result) => SanitizerAttributeNamespace -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"namespace\"] = $2; })"
+        js_setNamespace :: SanitizerAttributeNamespace -> (Nullable JSString) -> IO ()
+setNamespace :: (MonadDOM m, ToJSString val) => SanitizerAttributeNamespace -> Maybe val -> m ()
+setNamespace self val = liftDOM (void ((js_setNamespace (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"namespace\"]; })"
+        js_getNamespace :: SanitizerAttributeNamespace -> IO JSVal
+getNamespace :: (MonadDOM m, FromJSString result) => SanitizerAttributeNamespace -> m (Maybe result)
+getNamespace self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNamespace (self))))
+
+getNamespaceUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SanitizerAttributeNamespace -> m result
+getNamespaceUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNamespace (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNamespaceUnchecked :: (MonadDOM m, FromJSString result) => SanitizerAttributeNamespace -> m result
+getNamespaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getNamespace (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SanitizerConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/SanitizerConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SanitizerConfig.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SanitizerConfig
+       (js_newSanitizerConfig, js_setElements, js_getElements, js_setRemoveElements, js_getRemoveElements, js_setReplaceWithChildrenElements, js_getReplaceWithChildrenElements, js_setProcessingInstructions, js_getProcessingInstructions, js_setRemoveProcessingInstructions, js_getRemoveProcessingInstructions, js_setAttributes, js_getAttributes, js_setRemoveAttributes, js_getRemoveAttributes, js_setComments, js_getComments, js_setDataAttributes, js_getDataAttributes, js_setJavascriptURLs, js_getJavascriptURLs, newSanitizerConfig, setElements, getElements, getElementsUnsafe, getElementsUnchecked, setRemoveElements, getRemoveElements, getRemoveElementsUnsafe, getRemoveElementsUnchecked, setReplaceWithChildrenElements, getReplaceWithChildrenElements, getReplaceWithChildrenElementsUnsafe, getReplaceWithChildrenElementsUnchecked, setProcessingInstructions, getProcessingInstructions, getProcessingInstructionsUnsafe, getProcessingInstructionsUnchecked, setRemoveProcessingInstructions, getRemoveProcessingInstructions, getRemoveProcessingInstructionsUnsafe, getRemoveProcessingInstructionsUnchecked, setAttributes, getAttributes, getAttributesUnsafe, getAttributesUnchecked, setRemoveAttributes, getRemoveAttributes, getRemoveAttributesUnsafe, getRemoveAttributesUnchecked, setComments, getComments, getCommentsUnsafe, getCommentsUnchecked, setDataAttributes, getDataAttributes, getDataAttributesUnsafe, getDataAttributesUnchecked, setJavascriptURLs, getJavascriptURLs, getJavascriptURLsUnsafe, getJavascriptURLsUnchecked, SanitizerConfig(..), gTypeSanitizerConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSanitizerConfig :: IO SanitizerConfig
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerconfig SanitizerConfig specification>
+newSanitizerConfig :: (MonadDOM m) => m SanitizerConfig
+newSanitizerConfig = liftDOM ((js_newSanitizerConfig))
+
+foreign import javascript safe "(($1, $2) => { $1[\"elements\"] = $2; })"
+        js_setElements :: SanitizerConfig -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-elements SanitizerConfig.elements specification>
+setElements :: (MonadDOM m, IsSanitizerElementWithAttributes val) => SanitizerConfig -> [val] -> m ()
+setElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setElements (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"elements\"]; })"
+        js_getElements :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-elements SanitizerConfig.elements specification>
+getElements :: (MonadDOM m) => SanitizerConfig -> m (Maybe [SanitizerElementWithAttributes])
+getElements self = liftDOM (((js_getElements (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-elements SanitizerConfig.elements specification>
+getElementsUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m [SanitizerElementWithAttributes]
+getElementsUnsafe self = liftDOM ((((js_getElements (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-elements SanitizerConfig.elements specification>
+getElementsUnchecked :: (MonadDOM m) => SanitizerConfig -> m [SanitizerElementWithAttributes]
+getElementsUnchecked self = liftDOM (((js_getElements (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"removeElements\"] = $2; })"
+        js_setRemoveElements :: SanitizerConfig -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeelements SanitizerConfig.removeElements specification>
+setRemoveElements :: (MonadDOM m, IsSanitizerElement val) => SanitizerConfig -> [val] -> m ()
+setRemoveElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRemoveElements (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"removeElements\"]; })"
+        js_getRemoveElements :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeelements SanitizerConfig.removeElements specification>
+getRemoveElements :: (MonadDOM m) => SanitizerConfig -> m (Maybe [SanitizerElement])
+getRemoveElements self = liftDOM (((js_getRemoveElements (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeelements SanitizerConfig.removeElements specification>
+getRemoveElementsUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m [SanitizerElement]
+getRemoveElementsUnsafe self = liftDOM ((((js_getRemoveElements (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeelements SanitizerConfig.removeElements specification>
+getRemoveElementsUnchecked :: (MonadDOM m) => SanitizerConfig -> m [SanitizerElement]
+getRemoveElementsUnchecked self = liftDOM (((js_getRemoveElements (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"replaceWithChildrenElements\"] = $2; })"
+        js_setReplaceWithChildrenElements :: SanitizerConfig -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-replacewithchildrenelements SanitizerConfig.replaceWithChildrenElements specification>
+setReplaceWithChildrenElements :: (MonadDOM m, IsSanitizerElement val) => SanitizerConfig -> [val] -> m ()
+setReplaceWithChildrenElements self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setReplaceWithChildrenElements (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"replaceWithChildrenElements\"]; })"
+        js_getReplaceWithChildrenElements :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-replacewithchildrenelements SanitizerConfig.replaceWithChildrenElements specification>
+getReplaceWithChildrenElements :: (MonadDOM m) => SanitizerConfig -> m (Maybe [SanitizerElement])
+getReplaceWithChildrenElements self = liftDOM (((js_getReplaceWithChildrenElements (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-replacewithchildrenelements SanitizerConfig.replaceWithChildrenElements specification>
+getReplaceWithChildrenElementsUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m [SanitizerElement]
+getReplaceWithChildrenElementsUnsafe self = liftDOM ((((js_getReplaceWithChildrenElements (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-replacewithchildrenelements SanitizerConfig.replaceWithChildrenElements specification>
+getReplaceWithChildrenElementsUnchecked :: (MonadDOM m) => SanitizerConfig -> m [SanitizerElement]
+getReplaceWithChildrenElementsUnchecked self = liftDOM (((js_getReplaceWithChildrenElements (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"processingInstructions\"] = $2; })"
+        js_setProcessingInstructions :: SanitizerConfig -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-processinginstructions SanitizerConfig.processingInstructions specification>
+setProcessingInstructions :: (MonadDOM m, IsSanitizerPI val) => SanitizerConfig -> [val] -> m ()
+setProcessingInstructions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setProcessingInstructions (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"processingInstructions\"]; })"
+        js_getProcessingInstructions :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-processinginstructions SanitizerConfig.processingInstructions specification>
+getProcessingInstructions :: (MonadDOM m) => SanitizerConfig -> m (Maybe [SanitizerPI])
+getProcessingInstructions self = liftDOM (((js_getProcessingInstructions (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-processinginstructions SanitizerConfig.processingInstructions specification>
+getProcessingInstructionsUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m [SanitizerPI]
+getProcessingInstructionsUnsafe self = liftDOM ((((js_getProcessingInstructions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-processinginstructions SanitizerConfig.processingInstructions specification>
+getProcessingInstructionsUnchecked :: (MonadDOM m) => SanitizerConfig -> m [SanitizerPI]
+getProcessingInstructionsUnchecked self = liftDOM (((js_getProcessingInstructions (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"removeProcessingInstructions\"] = $2; })"
+        js_setRemoveProcessingInstructions :: SanitizerConfig -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeprocessinginstructions SanitizerConfig.removeProcessingInstructions specification>
+setRemoveProcessingInstructions :: (MonadDOM m, IsSanitizerPI val) => SanitizerConfig -> [val] -> m ()
+setRemoveProcessingInstructions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRemoveProcessingInstructions (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"removeProcessingInstructions\"]; })"
+        js_getRemoveProcessingInstructions :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeprocessinginstructions SanitizerConfig.removeProcessingInstructions specification>
+getRemoveProcessingInstructions :: (MonadDOM m) => SanitizerConfig -> m (Maybe [SanitizerPI])
+getRemoveProcessingInstructions self = liftDOM (((js_getRemoveProcessingInstructions (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeprocessinginstructions SanitizerConfig.removeProcessingInstructions specification>
+getRemoveProcessingInstructionsUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m [SanitizerPI]
+getRemoveProcessingInstructionsUnsafe self = liftDOM ((((js_getRemoveProcessingInstructions (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeprocessinginstructions SanitizerConfig.removeProcessingInstructions specification>
+getRemoveProcessingInstructionsUnchecked :: (MonadDOM m) => SanitizerConfig -> m [SanitizerPI]
+getRemoveProcessingInstructionsUnchecked self = liftDOM (((js_getRemoveProcessingInstructions (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attributes\"] = $2; })"
+        js_setAttributes :: SanitizerConfig -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-attributes SanitizerConfig.attributes specification>
+setAttributes :: (MonadDOM m, IsSanitizerAttribute val) => SanitizerConfig -> [val] -> m ()
+setAttributes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAttributes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributes\"]; })"
+        js_getAttributes :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-attributes SanitizerConfig.attributes specification>
+getAttributes :: (MonadDOM m) => SanitizerConfig -> m (Maybe [SanitizerAttribute])
+getAttributes self = liftDOM (((js_getAttributes (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-attributes SanitizerConfig.attributes specification>
+getAttributesUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m [SanitizerAttribute]
+getAttributesUnsafe self = liftDOM ((((js_getAttributes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-attributes SanitizerConfig.attributes specification>
+getAttributesUnchecked :: (MonadDOM m) => SanitizerConfig -> m [SanitizerAttribute]
+getAttributesUnchecked self = liftDOM (((js_getAttributes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"removeAttributes\"] = $2; })"
+        js_setRemoveAttributes :: SanitizerConfig -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeattributes SanitizerConfig.removeAttributes specification>
+setRemoveAttributes :: (MonadDOM m, IsSanitizerAttribute val) => SanitizerConfig -> [val] -> m ()
+setRemoveAttributes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRemoveAttributes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"removeAttributes\"]; })"
+        js_getRemoveAttributes :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeattributes SanitizerConfig.removeAttributes specification>
+getRemoveAttributes :: (MonadDOM m) => SanitizerConfig -> m (Maybe [SanitizerAttribute])
+getRemoveAttributes self = liftDOM (((js_getRemoveAttributes (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeattributes SanitizerConfig.removeAttributes specification>
+getRemoveAttributesUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m [SanitizerAttribute]
+getRemoveAttributesUnsafe self = liftDOM ((((js_getRemoveAttributes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-removeattributes SanitizerConfig.removeAttributes specification>
+getRemoveAttributesUnchecked :: (MonadDOM m) => SanitizerConfig -> m [SanitizerAttribute]
+getRemoveAttributesUnchecked self = liftDOM (((js_getRemoveAttributes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"comments\"] = $2; })"
+        js_setComments :: SanitizerConfig -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-comments SanitizerConfig.comments specification>
+setComments :: (MonadDOM m) => SanitizerConfig -> Bool -> m ()
+setComments self val = liftDOM (void ((js_setComments (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"comments\"]; })"
+        js_getComments :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-comments SanitizerConfig.comments specification>
+getComments :: (MonadDOM m) => SanitizerConfig -> m (Maybe Bool)
+getComments self = liftDOM (((js_getComments (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-comments SanitizerConfig.comments specification>
+getCommentsUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m Bool
+getCommentsUnsafe self = liftDOM ((((js_getComments (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-comments SanitizerConfig.comments specification>
+getCommentsUnchecked :: (MonadDOM m) => SanitizerConfig -> m Bool
+getCommentsUnchecked self = liftDOM ((pFromJSVal <$> (js_getComments (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dataAttributes\"] = $2; })"
+        js_setDataAttributes :: SanitizerConfig -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-dataattributes SanitizerConfig.dataAttributes specification>
+setDataAttributes :: (MonadDOM m) => SanitizerConfig -> Bool -> m ()
+setDataAttributes self val = liftDOM (void ((js_setDataAttributes (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataAttributes\"]; })"
+        js_getDataAttributes :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-dataattributes SanitizerConfig.dataAttributes specification>
+getDataAttributes :: (MonadDOM m) => SanitizerConfig -> m (Maybe Bool)
+getDataAttributes self = liftDOM (((js_getDataAttributes (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-dataattributes SanitizerConfig.dataAttributes specification>
+getDataAttributesUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m Bool
+getDataAttributesUnsafe self = liftDOM ((((js_getDataAttributes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-dataattributes SanitizerConfig.dataAttributes specification>
+getDataAttributesUnchecked :: (MonadDOM m) => SanitizerConfig -> m Bool
+getDataAttributesUnchecked self = liftDOM ((pFromJSVal <$> (js_getDataAttributes (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"javascriptURLs\"] = $2; })"
+        js_setJavascriptURLs :: SanitizerConfig -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-javascripturls SanitizerConfig.javascriptURLs specification>
+setJavascriptURLs :: (MonadDOM m) => SanitizerConfig -> Bool -> m ()
+setJavascriptURLs self val = liftDOM (void ((js_setJavascriptURLs (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"javascriptURLs\"]; })"
+        js_getJavascriptURLs :: SanitizerConfig -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-javascripturls SanitizerConfig.javascriptURLs specification>
+getJavascriptURLs :: (MonadDOM m) => SanitizerConfig -> m (Maybe Bool)
+getJavascriptURLs self = liftDOM (((js_getJavascriptURLs (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-javascripturls SanitizerConfig.javascriptURLs specification>
+getJavascriptURLsUnsafe :: (MonadDOM m, HasCallStack) => SanitizerConfig -> m Bool
+getJavascriptURLsUnsafe self = liftDOM ((((js_getJavascriptURLs (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerconfig-javascripturls SanitizerConfig.javascriptURLs specification>
+getJavascriptURLsUnchecked :: (MonadDOM m) => SanitizerConfig -> m Bool
+getJavascriptURLsUnchecked self = liftDOM ((pFromJSVal <$> (js_getJavascriptURLs (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SanitizerElementNamespace.hs b/src/GHCJS/DOM/JSFFI/Generated/SanitizerElementNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SanitizerElementNamespace.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SanitizerElementNamespace
+       (js_newSanitizerElementNamespace, js_setName, js_getName, js_setNamespace, js_getNamespace, newSanitizerElementNamespace, setName, getName, setNamespace, getNamespace, getNamespaceUnsafe, getNamespaceUnchecked, SanitizerElementNamespace(..), gTypeSanitizerElementNamespace, IsSanitizerElementNamespace, toSanitizerElementNamespace)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"name\": $1}); })"
+        js_newSanitizerElementNamespace :: JSString -> IO SanitizerElementNamespace
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerelementnamespace SanitizerElementNamespace specification>
+newSanitizerElementNamespace :: (MonadDOM m, ToJSString name) => name -> m SanitizerElementNamespace
+newSanitizerElementNamespace name = liftDOM ((js_newSanitizerElementNamespace (toJSString name)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: SanitizerElementNamespace -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespace-name SanitizerElementNamespace.name specification>
+setName :: (MonadDOM m, IsSanitizerElementNamespace self, ToJSString val) => self -> val -> m ()
+setName self val = liftDOM (void ((js_setName ((Types.toSanitizerElementNamespace self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: SanitizerElementNamespace -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespace-name SanitizerElementNamespace.name specification>
+getName :: (MonadDOM m, IsSanitizerElementNamespace self, FromJSString result) => self -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName ((Types.toSanitizerElementNamespace self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"namespace\"] = $2; })"
+        js_setNamespace :: SanitizerElementNamespace -> (Nullable JSString) -> IO ()
+setNamespace :: (MonadDOM m, IsSanitizerElementNamespace self, ToJSString val) => self -> Maybe val -> m ()
+setNamespace self val = liftDOM (void ((js_setNamespace ((Types.toSanitizerElementNamespace self)) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"namespace\"]; })"
+        js_getNamespace :: SanitizerElementNamespace -> IO JSVal
+getNamespace :: (MonadDOM m, IsSanitizerElementNamespace self, FromJSString result) => self -> m (Maybe result)
+getNamespace self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNamespace ((Types.toSanitizerElementNamespace self)))))
+
+getNamespaceUnsafe :: (MonadDOM m, IsSanitizerElementNamespace self, HasCallStack, FromJSString result) => self -> m result
+getNamespaceUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNamespace ((Types.toSanitizerElementNamespace self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNamespaceUnchecked :: (MonadDOM m, IsSanitizerElementNamespace self, FromJSString result) => self -> m result
+getNamespaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getNamespace ((Types.toSanitizerElementNamespace self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SanitizerElementNamespaceWithAttributes.hs b/src/GHCJS/DOM/JSFFI/Generated/SanitizerElementNamespaceWithAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SanitizerElementNamespaceWithAttributes.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SanitizerElementNamespaceWithAttributes
+       (js_newSanitizerElementNamespaceWithAttributes, js_setAttributes, js_getAttributes, js_setRemoveAttributes, js_getRemoveAttributes, newSanitizerElementNamespaceWithAttributes, setAttributes, getAttributes, getAttributesUnsafe, getAttributesUnchecked, setRemoveAttributes, getRemoveAttributes, getRemoveAttributesUnsafe, getRemoveAttributesUnchecked, SanitizerElementNamespaceWithAttributes(..), gTypeSanitizerElementNamespaceWithAttributes)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"name\": $1}); })"
+        js_newSanitizerElementNamespaceWithAttributes :: JSString -> IO SanitizerElementNamespaceWithAttributes
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerelementnamespacewithattributes SanitizerElementNamespaceWithAttributes specification>
+newSanitizerElementNamespaceWithAttributes :: (MonadDOM m, ToJSString name) => name -> m SanitizerElementNamespaceWithAttributes
+newSanitizerElementNamespaceWithAttributes name = liftDOM ((js_newSanitizerElementNamespaceWithAttributes (toJSString name)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"attributes\"] = $2; })"
+        js_setAttributes :: SanitizerElementNamespaceWithAttributes -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-attributes SanitizerElementNamespaceWithAttributes.attributes specification>
+setAttributes :: (MonadDOM m, IsSanitizerAttribute val) => SanitizerElementNamespaceWithAttributes -> [val] -> m ()
+setAttributes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAttributes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"attributes\"]; })"
+        js_getAttributes :: SanitizerElementNamespaceWithAttributes -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-attributes SanitizerElementNamespaceWithAttributes.attributes specification>
+getAttributes :: (MonadDOM m) => SanitizerElementNamespaceWithAttributes -> m (Maybe [SanitizerAttribute])
+getAttributes self = liftDOM (((js_getAttributes (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-attributes SanitizerElementNamespaceWithAttributes.attributes specification>
+getAttributesUnsafe :: (MonadDOM m, HasCallStack) => SanitizerElementNamespaceWithAttributes -> m [SanitizerAttribute]
+getAttributesUnsafe self = liftDOM ((((js_getAttributes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-attributes SanitizerElementNamespaceWithAttributes.attributes specification>
+getAttributesUnchecked :: (MonadDOM m) => SanitizerElementNamespaceWithAttributes -> m [SanitizerAttribute]
+getAttributesUnchecked self = liftDOM (((js_getAttributes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"removeAttributes\"] = $2; })"
+        js_setRemoveAttributes :: SanitizerElementNamespaceWithAttributes -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-removeattributes SanitizerElementNamespaceWithAttributes.removeAttributes specification>
+setRemoveAttributes :: (MonadDOM m, IsSanitizerAttribute val) => SanitizerElementNamespaceWithAttributes -> [val] -> m ()
+setRemoveAttributes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRemoveAttributes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"removeAttributes\"]; })"
+        js_getRemoveAttributes :: SanitizerElementNamespaceWithAttributes -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-removeattributes SanitizerElementNamespaceWithAttributes.removeAttributes specification>
+getRemoveAttributes :: (MonadDOM m) => SanitizerElementNamespaceWithAttributes -> m (Maybe [SanitizerAttribute])
+getRemoveAttributes self = liftDOM (((js_getRemoveAttributes (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-removeattributes SanitizerElementNamespaceWithAttributes.removeAttributes specification>
+getRemoveAttributesUnsafe :: (MonadDOM m, HasCallStack) => SanitizerElementNamespaceWithAttributes -> m [SanitizerAttribute]
+getRemoveAttributesUnsafe self = liftDOM ((((js_getRemoveAttributes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerelementnamespacewithattributes-removeattributes SanitizerElementNamespaceWithAttributes.removeAttributes specification>
+getRemoveAttributesUnchecked :: (MonadDOM m) => SanitizerElementNamespaceWithAttributes -> m [SanitizerAttribute]
+getRemoveAttributesUnchecked self = liftDOM (((js_getRemoveAttributes (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SanitizerProcessingInstruction.hs b/src/GHCJS/DOM/JSFFI/Generated/SanitizerProcessingInstruction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SanitizerProcessingInstruction.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SanitizerProcessingInstruction
+       (js_newSanitizerProcessingInstruction, js_setTarget, js_getTarget, newSanitizerProcessingInstruction, setTarget, getTarget, SanitizerProcessingInstruction(..), gTypeSanitizerProcessingInstruction)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"target\": $1}); })"
+        js_newSanitizerProcessingInstruction :: JSString -> IO SanitizerProcessingInstruction
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerprocessinginstruction SanitizerProcessingInstruction specification>
+newSanitizerProcessingInstruction :: (MonadDOM m, ToJSString target) => target -> m SanitizerProcessingInstruction
+newSanitizerProcessingInstruction target = liftDOM ((js_newSanitizerProcessingInstruction (toJSString target)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: SanitizerProcessingInstruction -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerprocessinginstruction-target SanitizerProcessingInstruction.target specification>
+setTarget :: (MonadDOM m, ToJSString val) => SanitizerProcessingInstruction -> val -> m ()
+setTarget self val = liftDOM (void ((js_setTarget (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: SanitizerProcessingInstruction -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sanitizerprocessinginstruction-target SanitizerProcessingInstruction.target specification>
+getTarget :: (MonadDOM m, FromJSString result) => SanitizerProcessingInstruction -> m result
+getTarget self = liftDOM ((fromJSString <$> (js_getTarget (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Scheduler.hs b/src/GHCJS/DOM/JSFFI/Generated/Scheduler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Scheduler.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Scheduler
+       (js_postTask, js_yield, postTask, postTask_, yield, Scheduler(..), gTypeScheduler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"postTask\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_postTask :: Scheduler -> JSVal -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Scheduler/postTask MDN Scheduler.postTask documentation>
+postTask :: (MonadDOM m) => Scheduler -> SchedulerPostTaskCallback -> Maybe SchedulerPostTaskOptions -> m JSVal
+postTask self callback' options = liftDOM ((((toJSVal callback') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postTask (self) a2' a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Scheduler/postTask MDN Scheduler.postTask documentation>
+postTask_ :: (MonadDOM m) => Scheduler -> SchedulerPostTaskCallback -> Maybe SchedulerPostTaskOptions -> m ()
+postTask_ self callback' options = liftDOM (void ((((toJSVal callback') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postTask (self) a2' a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"yield\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_yield :: Scheduler -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Scheduler/yield MDN Scheduler.yield documentation>
+yield :: (MonadDOM m) => Scheduler -> m ()
+yield self = liftDOM (void (((js_yield (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SchedulerPostTaskCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SchedulerPostTaskCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SchedulerPostTaskCallback.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SchedulerPostTaskCallback
+       (newSchedulerPostTaskCallback, newSchedulerPostTaskCallbackSync, newSchedulerPostTaskCallbackAsync, SchedulerPostTaskCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback, asyncCallback)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newSchedulerPostTaskCallback :: (MonadDOM m) => (IO ()) -> m SchedulerPostTaskCallback
+newSchedulerPostTaskCallback callback = liftDOM ((SchedulerPostTaskCallback . coerce) <$> syncCallback ContinueAsync callback)
+
+newSchedulerPostTaskCallbackSync :: (MonadDOM m) => (IO ()) -> m SchedulerPostTaskCallback
+newSchedulerPostTaskCallbackSync callback = liftDOM ((SchedulerPostTaskCallback . coerce) <$> syncCallback ThrowWouldBlock callback)
+
+newSchedulerPostTaskCallbackAsync :: (MonadDOM m) => (IO ()) -> m SchedulerPostTaskCallback
+newSchedulerPostTaskCallbackAsync callback = liftDOM ((SchedulerPostTaskCallback . coerce) <$> asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SchedulerPostTaskOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SchedulerPostTaskOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SchedulerPostTaskOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SchedulerPostTaskOptions
+       (js_newSchedulerPostTaskOptions, js_setSignal, js_getSignal, js_setPriority, js_getPriority, js_setDelay, js_getDelay, newSchedulerPostTaskOptions, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, setPriority, getPriority, getPriorityUnsafe, getPriorityUnchecked, setDelay, getDelay, getDelayUnsafe, getDelayUnchecked, SchedulerPostTaskOptions(..), gTypeSchedulerPostTaskOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSchedulerPostTaskOptions :: IO SchedulerPostTaskOptions
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-schedulerposttaskoptions SchedulerPostTaskOptions specification>
+newSchedulerPostTaskOptions :: (MonadDOM m) => m SchedulerPostTaskOptions
+newSchedulerPostTaskOptions = liftDOM ((js_newSchedulerPostTaskOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: SchedulerPostTaskOptions -> AbortSignal -> IO ()
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-signal SchedulerPostTaskOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => SchedulerPostTaskOptions -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: SchedulerPostTaskOptions -> IO JSVal
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-signal SchedulerPostTaskOptions.signal specification>
+getSignal :: (MonadDOM m) => SchedulerPostTaskOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-signal SchedulerPostTaskOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => SchedulerPostTaskOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-signal SchedulerPostTaskOptions.signal specification>
+getSignalUnchecked :: (MonadDOM m) => SchedulerPostTaskOptions -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: SchedulerPostTaskOptions -> JSVal -> IO ()
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-priority SchedulerPostTaskOptions.priority specification>
+setPriority :: (MonadDOM m) => SchedulerPostTaskOptions -> TaskPriority -> m ()
+setPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: SchedulerPostTaskOptions -> IO JSVal
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-priority SchedulerPostTaskOptions.priority specification>
+getPriority :: (MonadDOM m) => SchedulerPostTaskOptions -> m (Maybe TaskPriority)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-priority SchedulerPostTaskOptions.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => SchedulerPostTaskOptions -> m TaskPriority
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-priority SchedulerPostTaskOptions.priority specification>
+getPriorityUnchecked :: (MonadDOM m) => SchedulerPostTaskOptions -> m TaskPriority
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"delay\"] = $2; })"
+        js_setDelay :: SchedulerPostTaskOptions -> JSVal -> IO ()
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-delay SchedulerPostTaskOptions.delay specification>
+setDelay :: (MonadDOM m) => SchedulerPostTaskOptions -> Word53 -> m ()
+setDelay self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDelay (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"delay\"]; })"
+        js_getDelay :: SchedulerPostTaskOptions -> IO JSVal
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-delay SchedulerPostTaskOptions.delay specification>
+getDelay :: (MonadDOM m) => SchedulerPostTaskOptions -> m (Maybe Word53)
+getDelay self = liftDOM (((js_getDelay (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-delay SchedulerPostTaskOptions.delay specification>
+getDelayUnsafe :: (MonadDOM m, HasCallStack) => SchedulerPostTaskOptions -> m Word53
+getDelayUnsafe self = liftDOM ((((js_getDelay (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-delay SchedulerPostTaskOptions.delay specification>
+getDelayUnchecked :: (MonadDOM m) => SchedulerPostTaskOptions -> m Word53
+getDelayUnchecked self = liftDOM ((pFromJSVal <$> (js_getDelay (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Screen.hs b/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
@@ -1,86 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Screen
-       (js_getHeight, getHeight, js_getWidth, getWidth, js_getColorDepth,
-        getColorDepth, js_getPixelDepth, getPixelDepth, js_getAvailLeft,
-        getAvailLeft, js_getAvailTop, getAvailTop, js_getAvailHeight,
-        getAvailHeight, js_getAvailWidth, getAvailWidth, Screen(..),
-        gTypeScreen)
+       (js_getAvailWidth, js_getAvailHeight, js_getWidth, js_getHeight, js_getColorDepth, js_getPixelDepth, js_getOrientation, getAvailWidth, getAvailHeight, getWidth, getHeight, getColorDepth, getPixelDepth, getOrientation, Screen(..), gTypeScreen, IsScreen, toScreen)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        Screen -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.height Mozilla Screen.height documentation> 
-getHeight :: (MonadIO m) => Screen -> m Word
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        Screen -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"availWidth\"]; })"
+        js_getAvailWidth :: Screen -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/availWidth MDN Screen.availWidth documentation>
+getAvailWidth :: (MonadDOM m, IsScreen self) => self -> m Int
+getAvailWidth self = liftDOM ((js_getAvailWidth ((Types.toScreen self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.width Mozilla Screen.width documentation> 
-getWidth :: (MonadIO m) => Screen -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"availHeight\"]; })"
+        js_getAvailHeight :: Screen -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/availHeight MDN Screen.availHeight documentation>
+getAvailHeight :: (MonadDOM m, IsScreen self) => self -> m Int
+getAvailHeight self = liftDOM ((js_getAvailHeight ((Types.toScreen self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: Screen -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/width MDN Screen.width documentation>
+getWidth :: (MonadDOM m, IsScreen self) => self -> m Int
+getWidth self = liftDOM ((js_getWidth ((Types.toScreen self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: Screen -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/height MDN Screen.height documentation>
+getHeight :: (MonadDOM m, IsScreen self) => self -> m Int
+getHeight self = liftDOM ((js_getHeight ((Types.toScreen self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"colorDepth\"]; })"
         js_getColorDepth :: Screen -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/colorDepth MDN Screen.colorDepth documentation>
+getColorDepth :: (MonadDOM m, IsScreen self) => self -> m Word
+getColorDepth self = liftDOM ((js_getColorDepth ((Types.toScreen self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.colorDepth Mozilla Screen.colorDepth documentation> 
-getColorDepth :: (MonadIO m) => Screen -> m Word
-getColorDepth self = liftIO (js_getColorDepth self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"pixelDepth\"]; })"
         js_getPixelDepth :: Screen -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.pixelDepth Mozilla Screen.pixelDepth documentation> 
-getPixelDepth :: (MonadIO m) => Screen -> m Word
-getPixelDepth self = liftIO (js_getPixelDepth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"availLeft\"]; })"
-        js_getAvailLeft :: Screen -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availLeft Mozilla Screen.availLeft documentation> 
-getAvailLeft :: (MonadIO m) => Screen -> m Int
-getAvailLeft self = liftIO (js_getAvailLeft self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"availTop\"]; })" js_getAvailTop
-        :: Screen -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availTop Mozilla Screen.availTop documentation> 
-getAvailTop :: (MonadIO m) => Screen -> m Int
-getAvailTop self = liftIO (js_getAvailTop self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"availHeight\"]; })"
-        js_getAvailHeight :: Screen -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availHeight Mozilla Screen.availHeight documentation> 
-getAvailHeight :: (MonadIO m) => Screen -> m Word
-getAvailHeight self = liftIO (js_getAvailHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"availWidth\"]; })"
-        js_getAvailWidth :: Screen -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/pixelDepth MDN Screen.pixelDepth documentation>
+getPixelDepth :: (MonadDOM m, IsScreen self) => self -> m Word
+getPixelDepth self = liftDOM ((js_getPixelDepth ((Types.toScreen self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availWidth Mozilla Screen.availWidth documentation> 
-getAvailWidth :: (MonadIO m) => Screen -> m Word
-getAvailWidth self = liftIO (js_getAvailWidth self)
+foreign import javascript unsafe "(($1) => { return $1[\"orientation\"]; })"
+        js_getOrientation :: Screen -> IO ScreenOrientation
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/orientation MDN Screen.orientation documentation>
+getOrientation :: (MonadDOM m, IsScreen self) => self -> m ScreenOrientation
+getOrientation self = liftDOM ((js_getOrientation ((Types.toScreen self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScreenDetailed.hs b/src/GHCJS/DOM/JSFFI/Generated/ScreenDetailed.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScreenDetailed.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from window-management (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScreenDetailed
+       (ScreenDetailed(..), gTypeScreenDetailed)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScreenOrientation.hs b/src/GHCJS/DOM/JSFFI/Generated/ScreenOrientation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScreenOrientation.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-orientation (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScreenOrientation
+       (js_lock, js_unlock, js_getType, js_getAngle, lock, unlock, getType, getAngle, change, ScreenOrientation(..), gTypeScreenOrientation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"lock\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_lock :: ScreenOrientation -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/lock MDN ScreenOrientation.lock documentation>
+lock :: (MonadDOM m) => ScreenOrientation -> OrientationLockType -> m ()
+lock self orientation = liftDOM (void ((((toJSVal orientation) >>= \a2' -> js_lock (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"unlock\"](); })"
+        js_unlock :: ScreenOrientation -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/unlock MDN ScreenOrientation.unlock documentation>
+unlock :: (MonadDOM m) => ScreenOrientation -> m ()
+unlock self = liftDOM (void ((js_unlock (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: ScreenOrientation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/type MDN ScreenOrientation.type documentation>
+getType :: (MonadDOM m) => ScreenOrientation -> m OrientationType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })"
+        js_getAngle :: ScreenOrientation -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/angle MDN ScreenOrientation.angle documentation>
+getAngle :: (MonadDOM m) => ScreenOrientation -> m Word
+getAngle self = liftDOM ((js_getAngle (self)))
+
+-- | <https://w3c.github.io/screen-orientation/#dom-screenorientation-onchange change event>
+change :: EventName ScreenOrientation Event
+change = unsafeEventName (toJSString "change")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
@@ -1,38 +1,27 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
-       (audioProcess, js_getBufferSize, getBufferSize,
-        ScriptProcessorNode(..), gTypeScriptProcessorNode)
+       (js_getBufferSize, getBufferSize, audioProcess, ScriptProcessorNode(..), gTypeScriptProcessorNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.onaudioprocess Mozilla ScriptProcessorNode.onaudioprocess documentation> 
-audioProcess :: EventName ScriptProcessorNode AudioProcessingEvent
-audioProcess = unsafeEventName (toJSString "audioprocess")
- 
 foreign import javascript unsafe "(($1) => { return $1[\"bufferSize\"]; })"
         js_getBufferSize :: ScriptProcessorNode -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/ScriptProcessorNode/bufferSize MDN ScriptProcessorNode.bufferSize documentation>
+getBufferSize :: (MonadDOM m) => ScriptProcessorNode -> m Int
+getBufferSize self = liftDOM ((js_getBufferSize (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.bufferSize Mozilla ScriptProcessorNode.bufferSize documentation> 
-getBufferSize :: (MonadIO m) => ScriptProcessorNode -> m Int
-getBufferSize self = liftIO (js_getBufferSize self)
+-- | <https://webaudio.github.io/web-audio-api/#dom-scriptprocessornode-onaudioprocess audioprocess event>
+audioProcess :: EventName ScriptProcessorNode AudioProcessingEvent
+audioProcess = unsafeEventName (toJSString "audioprocess")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScrollIntoViewOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ScrollIntoViewOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScrollIntoViewOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScrollIntoViewOptions
+       (js_newScrollIntoViewOptions, js_setBlock, js_getBlock, js_setInline, js_getInline, js_setContainer, js_getContainer, newScrollIntoViewOptions, setBlock, getBlock, getBlockUnsafe, getBlockUnchecked, setInline, getInline, getInlineUnsafe, getInlineUnchecked, setContainer, getContainer, getContainerUnsafe, getContainerUnchecked, ScrollIntoViewOptions(..), gTypeScrollIntoViewOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newScrollIntoViewOptions :: IO ScrollIntoViewOptions
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrollintoviewoptions ScrollIntoViewOptions specification>
+newScrollIntoViewOptions :: (MonadDOM m) => m ScrollIntoViewOptions
+newScrollIntoViewOptions = liftDOM ((js_newScrollIntoViewOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"block\"] = $2; })"
+        js_setBlock :: ScrollIntoViewOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-block ScrollIntoViewOptions.block specification>
+setBlock :: (MonadDOM m) => ScrollIntoViewOptions -> ScrollLogicalPosition -> m ()
+setBlock self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBlock (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"block\"]; })"
+        js_getBlock :: ScrollIntoViewOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-block ScrollIntoViewOptions.block specification>
+getBlock :: (MonadDOM m) => ScrollIntoViewOptions -> m (Maybe ScrollLogicalPosition)
+getBlock self = liftDOM (((js_getBlock (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-block ScrollIntoViewOptions.block specification>
+getBlockUnsafe :: (MonadDOM m, HasCallStack) => ScrollIntoViewOptions -> m ScrollLogicalPosition
+getBlockUnsafe self = liftDOM ((((js_getBlock (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-block ScrollIntoViewOptions.block specification>
+getBlockUnchecked :: (MonadDOM m) => ScrollIntoViewOptions -> m ScrollLogicalPosition
+getBlockUnchecked self = liftDOM ((pFromJSVal <$> (js_getBlock (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inline\"] = $2; })"
+        js_setInline :: ScrollIntoViewOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-inline ScrollIntoViewOptions.inline specification>
+setInline :: (MonadDOM m) => ScrollIntoViewOptions -> ScrollLogicalPosition -> m ()
+setInline self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setInline (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inline\"]; })"
+        js_getInline :: ScrollIntoViewOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-inline ScrollIntoViewOptions.inline specification>
+getInline :: (MonadDOM m) => ScrollIntoViewOptions -> m (Maybe ScrollLogicalPosition)
+getInline self = liftDOM (((js_getInline (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-inline ScrollIntoViewOptions.inline specification>
+getInlineUnsafe :: (MonadDOM m, HasCallStack) => ScrollIntoViewOptions -> m ScrollLogicalPosition
+getInlineUnsafe self = liftDOM ((((js_getInline (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-inline ScrollIntoViewOptions.inline specification>
+getInlineUnchecked :: (MonadDOM m) => ScrollIntoViewOptions -> m ScrollLogicalPosition
+getInlineUnchecked self = liftDOM ((pFromJSVal <$> (js_getInline (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"container\"] = $2; })"
+        js_setContainer :: ScrollIntoViewOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-container ScrollIntoViewOptions.container specification>
+setContainer :: (MonadDOM m) => ScrollIntoViewOptions -> ScrollIntoViewContainer -> m ()
+setContainer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setContainer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"container\"]; })"
+        js_getContainer :: ScrollIntoViewOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-container ScrollIntoViewOptions.container specification>
+getContainer :: (MonadDOM m) => ScrollIntoViewOptions -> m (Maybe ScrollIntoViewContainer)
+getContainer self = liftDOM (((js_getContainer (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-container ScrollIntoViewOptions.container specification>
+getContainerUnsafe :: (MonadDOM m, HasCallStack) => ScrollIntoViewOptions -> m ScrollIntoViewContainer
+getContainerUnsafe self = liftDOM ((((js_getContainer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-container ScrollIntoViewOptions.container specification>
+getContainerUnchecked :: (MonadDOM m) => ScrollIntoViewOptions -> m ScrollIntoViewContainer
+getContainerUnchecked self = liftDOM ((pFromJSVal <$> (js_getContainer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScrollOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ScrollOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScrollOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScrollOptions
+       (js_newScrollOptions, js_setBehavior, js_getBehavior, newScrollOptions, setBehavior, getBehavior, getBehaviorUnsafe, getBehaviorUnchecked, ScrollOptions(..), gTypeScrollOptions, IsScrollOptions, toScrollOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newScrollOptions :: IO ScrollOptions
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrolloptions ScrollOptions specification>
+newScrollOptions :: (MonadDOM m) => m ScrollOptions
+newScrollOptions = liftDOM ((js_newScrollOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"behavior\"] = $2; })"
+        js_setBehavior :: ScrollOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolloptions-behavior ScrollOptions.behavior specification>
+setBehavior :: (MonadDOM m, IsScrollOptions self) => self -> ScrollBehavior -> m ()
+setBehavior self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBehavior ((Types.toScrollOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"behavior\"]; })"
+        js_getBehavior :: ScrollOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolloptions-behavior ScrollOptions.behavior specification>
+getBehavior :: (MonadDOM m, IsScrollOptions self) => self -> m (Maybe ScrollBehavior)
+getBehavior self = liftDOM (((js_getBehavior ((Types.toScrollOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolloptions-behavior ScrollOptions.behavior specification>
+getBehaviorUnsafe :: (MonadDOM m, IsScrollOptions self, HasCallStack) => self -> m ScrollBehavior
+getBehaviorUnsafe self = liftDOM ((((js_getBehavior ((Types.toScrollOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolloptions-behavior ScrollOptions.behavior specification>
+getBehaviorUnchecked :: (MonadDOM m, IsScrollOptions self) => self -> m ScrollBehavior
+getBehaviorUnchecked self = liftDOM ((pFromJSVal <$> (js_getBehavior ((Types.toScrollOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScrollResult.hs b/src/GHCJS/DOM/JSFFI/Generated/ScrollResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScrollResult.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScrollResult
+       (js_newScrollResult, js_setInterrupted, js_getInterrupted, newScrollResult, setInterrupted, getInterrupted, ScrollResult(..), gTypeScrollResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"interrupted\": $1}); })"
+        js_newScrollResult :: Bool -> IO ScrollResult
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrollresult ScrollResult specification>
+newScrollResult :: (MonadDOM m) => Bool -> m ScrollResult
+newScrollResult interrupted = liftDOM ((js_newScrollResult (interrupted)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"interrupted\"] = $2; })"
+        js_setInterrupted :: ScrollResult -> Bool -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollresult-interrupted ScrollResult.interrupted specification>
+setInterrupted :: (MonadDOM m) => ScrollResult -> Bool -> m ()
+setInterrupted self val = liftDOM (void ((js_setInterrupted (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"interrupted\"]; })"
+        js_getInterrupted :: ScrollResult -> IO Bool
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollresult-interrupted ScrollResult.interrupted specification>
+getInterrupted :: (MonadDOM m) => ScrollResult -> m Bool
+getInterrupted self = liftDOM ((js_getInterrupted (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScrollTimeline.hs b/src/GHCJS/DOM/JSFFI/Generated/ScrollTimeline.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScrollTimeline.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScrollTimeline
+       (js_newScrollTimeline, js_getSource, js_getAxis, newScrollTimeline, getSource, getSourceUnsafe, getSourceUnchecked, getAxis, ScrollTimeline(..), gTypeScrollTimeline, IsScrollTimeline, toScrollTimeline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"ScrollTimeline\"]($1); })"
+        js_newScrollTimeline :: JSVal -> IO ScrollTimeline
+-- | <https://developer.mozilla.org/docs/Web/API/ScrollTimeline/ScrollTimeline MDN ScrollTimeline. documentation>
+newScrollTimeline :: (MonadDOM m) => Maybe ScrollTimelineOptions -> m ScrollTimeline
+newScrollTimeline options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a1' -> js_newScrollTimeline a1'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: ScrollTimeline -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ScrollTimeline/source MDN ScrollTimeline.source documentation>
+getSource :: (MonadDOM m, IsScrollTimeline self) => self -> m (Maybe Element)
+getSource self = liftDOM (((js_getSource ((Types.toScrollTimeline self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScrollTimeline/source MDN ScrollTimeline.source documentation>
+getSourceUnsafe :: (MonadDOM m, IsScrollTimeline self, HasCallStack) => self -> m Element
+getSourceUnsafe self = liftDOM ((((js_getSource ((Types.toScrollTimeline self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScrollTimeline/source MDN ScrollTimeline.source documentation>
+getSourceUnchecked :: (MonadDOM m, IsScrollTimeline self) => self -> m Element
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource ((Types.toScrollTimeline self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"axis\"]; })"
+        js_getAxis :: ScrollTimeline -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ScrollTimeline/axis MDN ScrollTimeline.axis documentation>
+getAxis :: (MonadDOM m, IsScrollTimeline self) => self -> m ScrollAxis
+getAxis self = liftDOM (((js_getAxis ((Types.toScrollTimeline self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScrollTimelineOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ScrollTimelineOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScrollTimelineOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScrollTimelineOptions
+       (js_newScrollTimelineOptions, js_setSource, js_getSource, js_setAxis, js_getAxis, newScrollTimelineOptions, setSource, getSource, getSourceUnsafe, getSourceUnchecked, setAxis, getAxis, getAxisUnsafe, getAxisUnchecked, ScrollTimelineOptions(..), gTypeScrollTimelineOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newScrollTimelineOptions :: IO ScrollTimelineOptions
+-- | <https://drafts.csswg.org/scroll-animations-1/#dictdef-scrolltimelineoptions ScrollTimelineOptions specification>
+newScrollTimelineOptions :: (MonadDOM m) => m ScrollTimelineOptions
+newScrollTimelineOptions = liftDOM ((js_newScrollTimelineOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: ScrollTimelineOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-source ScrollTimelineOptions.source specification>
+setSource :: (MonadDOM m, IsElement val) => ScrollTimelineOptions -> Maybe val -> m ()
+setSource self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSource (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: ScrollTimelineOptions -> IO JSVal
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-source ScrollTimelineOptions.source specification>
+getSource :: (MonadDOM m) => ScrollTimelineOptions -> m (Maybe Element)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-source ScrollTimelineOptions.source specification>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ScrollTimelineOptions -> m Element
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-source ScrollTimelineOptions.source specification>
+getSourceUnchecked :: (MonadDOM m) => ScrollTimelineOptions -> m Element
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"axis\"] = $2; })"
+        js_setAxis :: ScrollTimelineOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-axis ScrollTimelineOptions.axis specification>
+setAxis :: (MonadDOM m) => ScrollTimelineOptions -> ScrollAxis -> m ()
+setAxis self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAxis (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"axis\"]; })"
+        js_getAxis :: ScrollTimelineOptions -> IO JSVal
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-axis ScrollTimelineOptions.axis specification>
+getAxis :: (MonadDOM m) => ScrollTimelineOptions -> m (Maybe ScrollAxis)
+getAxis self = liftDOM (((js_getAxis (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-axis ScrollTimelineOptions.axis specification>
+getAxisUnsafe :: (MonadDOM m, HasCallStack) => ScrollTimelineOptions -> m ScrollAxis
+getAxisUnsafe self = liftDOM ((((js_getAxis (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-axis ScrollTimelineOptions.axis specification>
+getAxisUnchecked :: (MonadDOM m) => ScrollTimelineOptions -> m ScrollAxis
+getAxisUnchecked self = liftDOM ((pFromJSVal <$> (js_getAxis (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScrollToOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ScrollToOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScrollToOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ScrollToOptions
+       (js_newScrollToOptions, js_setLeft, js_getLeft, js_setTop, js_getTop, newScrollToOptions, setLeft, getLeft, getLeftUnsafe, getLeftUnchecked, setTop, getTop, getTopUnsafe, getTopUnchecked, ScrollToOptions(..), gTypeScrollToOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newScrollToOptions :: IO ScrollToOptions
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrolltooptions ScrollToOptions specification>
+newScrollToOptions :: (MonadDOM m) => m ScrollToOptions
+newScrollToOptions = liftDOM ((js_newScrollToOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"left\"] = $2; })"
+        js_setLeft :: ScrollToOptions -> Double -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-left ScrollToOptions.left specification>
+setLeft :: (MonadDOM m) => ScrollToOptions -> Double -> m ()
+setLeft self val = liftDOM (void ((js_setLeft (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"left\"]; })"
+        js_getLeft :: ScrollToOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-left ScrollToOptions.left specification>
+getLeft :: (MonadDOM m) => ScrollToOptions -> m (Maybe Double)
+getLeft self = liftDOM (((js_getLeft (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-left ScrollToOptions.left specification>
+getLeftUnsafe :: (MonadDOM m, HasCallStack) => ScrollToOptions -> m Double
+getLeftUnsafe self = liftDOM ((((js_getLeft (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-left ScrollToOptions.left specification>
+getLeftUnchecked :: (MonadDOM m) => ScrollToOptions -> m Double
+getLeftUnchecked self = liftDOM ((pFromJSVal <$> (js_getLeft (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"top\"] = $2; })"
+        js_setTop :: ScrollToOptions -> Double -> IO ()
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-top ScrollToOptions.top specification>
+setTop :: (MonadDOM m) => ScrollToOptions -> Double -> m ()
+setTop self val = liftDOM (void ((js_setTop (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })"
+        js_getTop :: ScrollToOptions -> IO JSVal
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-top ScrollToOptions.top specification>
+getTop :: (MonadDOM m) => ScrollToOptions -> m (Maybe Double)
+getTop self = liftDOM (((js_getTop (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-top ScrollToOptions.top specification>
+getTopUnsafe :: (MonadDOM m, HasCallStack) => ScrollToOptions -> m Double
+getTopUnsafe self = liftDOM ((((js_getTop (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-top ScrollToOptions.top specification>
+getTopUnchecked :: (MonadDOM m) => ScrollToOptions -> m Double
+getTopUnchecked self = liftDOM ((pFromJSVal <$> (js_getTop (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
@@ -1,148 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from CSP3 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
-       (js_newSecurityPolicyViolationEvent,
-        newSecurityPolicyViolationEvent, js_getDocumentURI, getDocumentURI,
-        js_getReferrer, getReferrer, js_getBlockedURI, getBlockedURI,
-        js_getViolatedDirective, getViolatedDirective,
-        js_getEffectiveDirective, getEffectiveDirective,
-        js_getOriginalPolicy, getOriginalPolicy, js_getSourceFile,
-        getSourceFile, js_getStatusCode, getStatusCode, js_getLineNumber,
-        getLineNumber, js_getColumnNumber, getColumnNumber,
-        SecurityPolicyViolationEvent(..),
-        gTypeSecurityPolicyViolationEvent)
+       (js_newSecurityPolicyViolationEvent, js_getDocumentURI, js_getReferrer, js_getBlockedURI, js_getEffectiveDirective, js_getViolatedDirective, js_getOriginalPolicy, js_getSourceFile, js_getSample, js_getDisposition, js_getStatusCode, js_getLineNumber, js_getColumnNumber, newSecurityPolicyViolationEvent, getDocumentURI, getReferrer, getBlockedURI, getEffectiveDirective, getViolatedDirective, getOriginalPolicy, getSourceFile, getSample, getDisposition, getStatusCode, getLineNumber, getColumnNumber, SecurityPolicyViolationEvent(..), gTypeSecurityPolicyViolationEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"SecurityPolicyViolationEvent\"]($1,\n$2); })"
-        js_newSecurityPolicyViolationEvent ::
-        JSString ->
-          Optional SecurityPolicyViolationEventInit ->
-            IO SecurityPolicyViolationEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation> 
-newSecurityPolicyViolationEvent ::
-                                (MonadIO m, ToJSString type') =>
-                                  type' ->
-                                    Maybe SecurityPolicyViolationEventInit ->
-                                      m SecurityPolicyViolationEvent
-newSecurityPolicyViolationEvent type' eventInitDict
-  = liftIO
-      (js_newSecurityPolicyViolationEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SecurityPolicyViolationEvent\"]($1, $2); })"
+        js_newSecurityPolicyViolationEvent :: JSString -> JSVal -> IO SecurityPolicyViolationEvent
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/SecurityPolicyViolationEvent MDN SecurityPolicyViolationEvent. documentation>
+newSecurityPolicyViolationEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe SecurityPolicyViolationEventInit -> m SecurityPolicyViolationEvent
+newSecurityPolicyViolationEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newSecurityPolicyViolationEvent (toJSString type') a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"documentURI\"]; })"
         js_getDocumentURI :: SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/documentURI MDN SecurityPolicyViolationEvent.documentURI documentation>
+getDocumentURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getDocumentURI self = liftDOM ((fromJSString <$> (js_getDocumentURI (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.documentURI Mozilla SecurityPolicyViolationEvent.documentURI documentation> 
-getDocumentURI ::
-               (MonadIO m, FromJSString result) =>
-                 SecurityPolicyViolationEvent -> m result
-getDocumentURI self
-  = liftIO (fromJSString <$> (js_getDocumentURI self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })" js_getReferrer
-        :: SecurityPolicyViolationEvent -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })"
+        js_getReferrer :: SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/referrer MDN SecurityPolicyViolationEvent.referrer documentation>
+getReferrer :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getReferrer self = liftDOM ((fromJSString <$> (js_getReferrer (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.referrer Mozilla SecurityPolicyViolationEvent.referrer documentation> 
-getReferrer ::
-            (MonadIO m, FromJSString result) =>
-              SecurityPolicyViolationEvent -> m result
-getReferrer self = liftIO (fromJSString <$> (js_getReferrer self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"blockedURI\"]; })"
         js_getBlockedURI :: SecurityPolicyViolationEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.blockedURI Mozilla SecurityPolicyViolationEvent.blockedURI documentation> 
-getBlockedURI ::
-              (MonadIO m, FromJSString result) =>
-                SecurityPolicyViolationEvent -> m result
-getBlockedURI self
-  = liftIO (fromJSString <$> (js_getBlockedURI self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"violatedDirective\"]; })"
-        js_getViolatedDirective ::
-        SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/blockedURI MDN SecurityPolicyViolationEvent.blockedURI documentation>
+getBlockedURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getBlockedURI self = liftDOM ((fromJSString <$> (js_getBlockedURI (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.violatedDirective Mozilla SecurityPolicyViolationEvent.violatedDirective documentation> 
-getViolatedDirective ::
-                     (MonadIO m, FromJSString result) =>
-                       SecurityPolicyViolationEvent -> m result
-getViolatedDirective self
-  = liftIO (fromJSString <$> (js_getViolatedDirective self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"effectiveDirective\"]; })"
-        js_getEffectiveDirective ::
-        SecurityPolicyViolationEvent -> IO JSString
+        js_getEffectiveDirective :: SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/effectiveDirective MDN SecurityPolicyViolationEvent.effectiveDirective documentation>
+getEffectiveDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getEffectiveDirective self = liftDOM ((fromJSString <$> (js_getEffectiveDirective (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.effectiveDirective Mozilla SecurityPolicyViolationEvent.effectiveDirective documentation> 
-getEffectiveDirective ::
-                      (MonadIO m, FromJSString result) =>
-                        SecurityPolicyViolationEvent -> m result
-getEffectiveDirective self
-  = liftIO (fromJSString <$> (js_getEffectiveDirective self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"violatedDirective\"]; })"
+        js_getViolatedDirective :: SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/violatedDirective MDN SecurityPolicyViolationEvent.violatedDirective documentation>
+getViolatedDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getViolatedDirective self = liftDOM ((fromJSString <$> (js_getViolatedDirective (self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"originalPolicy\"]; })"
         js_getOriginalPolicy :: SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/originalPolicy MDN SecurityPolicyViolationEvent.originalPolicy documentation>
+getOriginalPolicy :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getOriginalPolicy self = liftDOM ((fromJSString <$> (js_getOriginalPolicy (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.originalPolicy Mozilla SecurityPolicyViolationEvent.originalPolicy documentation> 
-getOriginalPolicy ::
-                  (MonadIO m, FromJSString result) =>
-                    SecurityPolicyViolationEvent -> m result
-getOriginalPolicy self
-  = liftIO (fromJSString <$> (js_getOriginalPolicy self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"sourceFile\"]; })"
         js_getSourceFile :: SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/sourceFile MDN SecurityPolicyViolationEvent.sourceFile documentation>
+getSourceFile :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getSourceFile self = liftDOM ((fromJSString <$> (js_getSourceFile (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.sourceFile Mozilla SecurityPolicyViolationEvent.sourceFile documentation> 
-getSourceFile ::
-              (MonadIO m, FromJSString result) =>
-                SecurityPolicyViolationEvent -> m result
-getSourceFile self
-  = liftIO (fromJSString <$> (js_getSourceFile self))
- 
+foreign import javascript unsafe "(($1) => { return $1[\"sample\"]; })"
+        js_getSample :: SecurityPolicyViolationEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/sample MDN SecurityPolicyViolationEvent.sample documentation>
+getSample :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getSample self = liftDOM ((fromJSString <$> (js_getSample (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disposition\"]; })"
+        js_getDisposition :: SecurityPolicyViolationEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/disposition MDN SecurityPolicyViolationEvent.disposition documentation>
+getDisposition :: (MonadDOM m) => SecurityPolicyViolationEvent -> m SecurityPolicyViolationEventDisposition
+getDisposition self = liftDOM (((js_getDisposition (self)) >>= fromJSValUnchecked))
+
 foreign import javascript unsafe "(($1) => { return $1[\"statusCode\"]; })"
         js_getStatusCode :: SecurityPolicyViolationEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/statusCode MDN SecurityPolicyViolationEvent.statusCode documentation>
+getStatusCode :: (MonadDOM m) => SecurityPolicyViolationEvent -> m Word
+getStatusCode self = liftDOM ((js_getStatusCode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.statusCode Mozilla SecurityPolicyViolationEvent.statusCode documentation> 
-getStatusCode ::
-              (MonadIO m) => SecurityPolicyViolationEvent -> m Word
-getStatusCode self = liftIO (js_getStatusCode self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"lineNumber\"]; })"
-        js_getLineNumber :: SecurityPolicyViolationEvent -> IO Int
+        js_getLineNumber :: SecurityPolicyViolationEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/lineNumber MDN SecurityPolicyViolationEvent.lineNumber documentation>
+getLineNumber :: (MonadDOM m) => SecurityPolicyViolationEvent -> m Word
+getLineNumber self = liftDOM ((js_getLineNumber (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.lineNumber Mozilla SecurityPolicyViolationEvent.lineNumber documentation> 
-getLineNumber ::
-              (MonadIO m) => SecurityPolicyViolationEvent -> m Int
-getLineNumber self = liftIO (js_getLineNumber self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"columnNumber\"]; })"
-        js_getColumnNumber :: SecurityPolicyViolationEvent -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.columnNumber Mozilla SecurityPolicyViolationEvent.columnNumber documentation> 
-getColumnNumber ::
-                (MonadIO m) => SecurityPolicyViolationEvent -> m Int
-getColumnNumber self = liftIO (js_getColumnNumber self)
+        js_getColumnNumber :: SecurityPolicyViolationEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/columnNumber MDN SecurityPolicyViolationEvent.columnNumber documentation>
+getColumnNumber :: (MonadDOM m) => SecurityPolicyViolationEvent -> m Word
+getColumnNumber self = liftDOM ((js_getColumnNumber (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEventInit.hs
@@ -0,0 +1,263 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from CSP3 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEventInit
+       (js_newSecurityPolicyViolationEventInit, js_setDocumentURI, js_getDocumentURI, js_setReferrer, js_getReferrer, js_setBlockedURI, js_getBlockedURI, js_setViolatedDirective, js_getViolatedDirective, js_setEffectiveDirective, js_getEffectiveDirective, js_setOriginalPolicy, js_getOriginalPolicy, js_setSourceFile, js_getSourceFile, js_setSample, js_getSample, js_setDisposition, js_getDisposition, js_setStatusCode, js_getStatusCode, js_setLineNumber, js_getLineNumber, js_setColumnNumber, js_getColumnNumber, newSecurityPolicyViolationEventInit, setDocumentURI, getDocumentURI, getDocumentURIUnsafe, getDocumentURIUnchecked, setReferrer, getReferrer, getReferrerUnsafe, getReferrerUnchecked, setBlockedURI, getBlockedURI, getBlockedURIUnsafe, getBlockedURIUnchecked, setViolatedDirective, getViolatedDirective, getViolatedDirectiveUnsafe, getViolatedDirectiveUnchecked, setEffectiveDirective, getEffectiveDirective, getEffectiveDirectiveUnsafe, getEffectiveDirectiveUnchecked, setOriginalPolicy, getOriginalPolicy, getOriginalPolicyUnsafe, getOriginalPolicyUnchecked, setSourceFile, getSourceFile, getSourceFileUnsafe, getSourceFileUnchecked, setSample, getSample, getSampleUnsafe, getSampleUnchecked, setDisposition, getDisposition, getDispositionUnsafe, getDispositionUnchecked, setStatusCode, getStatusCode, getStatusCodeUnsafe, getStatusCodeUnchecked, setLineNumber, getLineNumber, getLineNumberUnsafe, getLineNumberUnchecked, setColumnNumber, getColumnNumber, getColumnNumberUnsafe, getColumnNumberUnchecked, SecurityPolicyViolationEventInit(..), gTypeSecurityPolicyViolationEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSecurityPolicyViolationEventInit :: IO SecurityPolicyViolationEventInit
+-- | <https://w3c.github.io/webappsec-csp/#dictdef-securitypolicyviolationeventinit SecurityPolicyViolationEventInit specification>
+newSecurityPolicyViolationEventInit :: (MonadDOM m) => m SecurityPolicyViolationEventInit
+newSecurityPolicyViolationEventInit = liftDOM ((js_newSecurityPolicyViolationEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"documentURI\"] = $2; })"
+        js_setDocumentURI :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-documenturi SecurityPolicyViolationEventInit.documentURI specification>
+setDocumentURI :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setDocumentURI self val = liftDOM (void ((js_setDocumentURI (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"documentURI\"]; })"
+        js_getDocumentURI :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-documenturi SecurityPolicyViolationEventInit.documentURI specification>
+getDocumentURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getDocumentURI self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getDocumentURI (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-documenturi SecurityPolicyViolationEventInit.documentURI specification>
+getDocumentURIUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getDocumentURIUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getDocumentURI (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-documenturi SecurityPolicyViolationEventInit.documentURI specification>
+getDocumentURIUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getDocumentURIUnchecked self = liftDOM ((pFromJSVal <$> (js_getDocumentURI (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"referrer\"] = $2; })"
+        js_setReferrer :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-referrer SecurityPolicyViolationEventInit.referrer specification>
+setReferrer :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setReferrer self val = liftDOM (void ((js_setReferrer (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })"
+        js_getReferrer :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-referrer SecurityPolicyViolationEventInit.referrer specification>
+getReferrer :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getReferrer self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getReferrer (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-referrer SecurityPolicyViolationEventInit.referrer specification>
+getReferrerUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getReferrerUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getReferrer (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-referrer SecurityPolicyViolationEventInit.referrer specification>
+getReferrerUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getReferrerUnchecked self = liftDOM ((pFromJSVal <$> (js_getReferrer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"blockedURI\"] = $2; })"
+        js_setBlockedURI :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-blockeduri SecurityPolicyViolationEventInit.blockedURI specification>
+setBlockedURI :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setBlockedURI self val = liftDOM (void ((js_setBlockedURI (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"blockedURI\"]; })"
+        js_getBlockedURI :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-blockeduri SecurityPolicyViolationEventInit.blockedURI specification>
+getBlockedURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getBlockedURI self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getBlockedURI (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-blockeduri SecurityPolicyViolationEventInit.blockedURI specification>
+getBlockedURIUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getBlockedURIUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getBlockedURI (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-blockeduri SecurityPolicyViolationEventInit.blockedURI specification>
+getBlockedURIUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getBlockedURIUnchecked self = liftDOM ((pFromJSVal <$> (js_getBlockedURI (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"violatedDirective\"] = $2; })"
+        js_setViolatedDirective :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-violateddirective SecurityPolicyViolationEventInit.violatedDirective specification>
+setViolatedDirective :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setViolatedDirective self val = liftDOM (void ((js_setViolatedDirective (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"violatedDirective\"]; })"
+        js_getViolatedDirective :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-violateddirective SecurityPolicyViolationEventInit.violatedDirective specification>
+getViolatedDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getViolatedDirective self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getViolatedDirective (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-violateddirective SecurityPolicyViolationEventInit.violatedDirective specification>
+getViolatedDirectiveUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getViolatedDirectiveUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getViolatedDirective (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-violateddirective SecurityPolicyViolationEventInit.violatedDirective specification>
+getViolatedDirectiveUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getViolatedDirectiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getViolatedDirective (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"effectiveDirective\"] = $2; })"
+        js_setEffectiveDirective :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-effectivedirective SecurityPolicyViolationEventInit.effectiveDirective specification>
+setEffectiveDirective :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setEffectiveDirective self val = liftDOM (void ((js_setEffectiveDirective (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"effectiveDirective\"]; })"
+        js_getEffectiveDirective :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-effectivedirective SecurityPolicyViolationEventInit.effectiveDirective specification>
+getEffectiveDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getEffectiveDirective self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getEffectiveDirective (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-effectivedirective SecurityPolicyViolationEventInit.effectiveDirective specification>
+getEffectiveDirectiveUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getEffectiveDirectiveUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getEffectiveDirective (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-effectivedirective SecurityPolicyViolationEventInit.effectiveDirective specification>
+getEffectiveDirectiveUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getEffectiveDirectiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getEffectiveDirective (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"originalPolicy\"] = $2; })"
+        js_setOriginalPolicy :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-originalpolicy SecurityPolicyViolationEventInit.originalPolicy specification>
+setOriginalPolicy :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setOriginalPolicy self val = liftDOM (void ((js_setOriginalPolicy (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"originalPolicy\"]; })"
+        js_getOriginalPolicy :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-originalpolicy SecurityPolicyViolationEventInit.originalPolicy specification>
+getOriginalPolicy :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getOriginalPolicy self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOriginalPolicy (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-originalpolicy SecurityPolicyViolationEventInit.originalPolicy specification>
+getOriginalPolicyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getOriginalPolicyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOriginalPolicy (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-originalpolicy SecurityPolicyViolationEventInit.originalPolicy specification>
+getOriginalPolicyUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getOriginalPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getOriginalPolicy (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sourceFile\"] = $2; })"
+        js_setSourceFile :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sourcefile SecurityPolicyViolationEventInit.sourceFile specification>
+setSourceFile :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setSourceFile self val = liftDOM (void ((js_setSourceFile (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sourceFile\"]; })"
+        js_getSourceFile :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sourcefile SecurityPolicyViolationEventInit.sourceFile specification>
+getSourceFile :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getSourceFile self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSourceFile (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sourcefile SecurityPolicyViolationEventInit.sourceFile specification>
+getSourceFileUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getSourceFileUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSourceFile (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sourcefile SecurityPolicyViolationEventInit.sourceFile specification>
+getSourceFileUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getSourceFileUnchecked self = liftDOM ((pFromJSVal <$> (js_getSourceFile (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sample\"] = $2; })"
+        js_setSample :: SecurityPolicyViolationEventInit -> JSString -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sample SecurityPolicyViolationEventInit.sample specification>
+setSample :: (MonadDOM m, ToJSString val) => SecurityPolicyViolationEventInit -> val -> m ()
+setSample self val = liftDOM (void ((js_setSample (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sample\"]; })"
+        js_getSample :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sample SecurityPolicyViolationEventInit.sample specification>
+getSample :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getSample self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSample (self))))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sample SecurityPolicyViolationEventInit.sample specification>
+getSampleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getSampleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSample (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sample SecurityPolicyViolationEventInit.sample specification>
+getSampleUnchecked :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getSampleUnchecked self = liftDOM ((pFromJSVal <$> (js_getSample (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"disposition\"] = $2; })"
+        js_setDisposition :: SecurityPolicyViolationEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-disposition SecurityPolicyViolationEventInit.disposition specification>
+setDisposition :: (MonadDOM m) => SecurityPolicyViolationEventInit -> SecurityPolicyViolationEventDisposition -> m ()
+setDisposition self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDisposition (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"disposition\"]; })"
+        js_getDisposition :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-disposition SecurityPolicyViolationEventInit.disposition specification>
+getDisposition :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe SecurityPolicyViolationEventDisposition)
+getDisposition self = liftDOM (((js_getDisposition (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-disposition SecurityPolicyViolationEventInit.disposition specification>
+getDispositionUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m SecurityPolicyViolationEventDisposition
+getDispositionUnsafe self = liftDOM ((((js_getDisposition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-disposition SecurityPolicyViolationEventInit.disposition specification>
+getDispositionUnchecked :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m SecurityPolicyViolationEventDisposition
+getDispositionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisposition (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"statusCode\"] = $2; })"
+        js_setStatusCode :: SecurityPolicyViolationEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-statuscode SecurityPolicyViolationEventInit.statusCode specification>
+setStatusCode :: (MonadDOM m) => SecurityPolicyViolationEventInit -> Word -> m ()
+setStatusCode self val = liftDOM (void ((js_setStatusCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"statusCode\"]; })"
+        js_getStatusCode :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-statuscode SecurityPolicyViolationEventInit.statusCode specification>
+getStatusCode :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe Word)
+getStatusCode self = liftDOM (((js_getStatusCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-statuscode SecurityPolicyViolationEventInit.statusCode specification>
+getStatusCodeUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m Word
+getStatusCodeUnsafe self = liftDOM ((((js_getStatusCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-statuscode SecurityPolicyViolationEventInit.statusCode specification>
+getStatusCodeUnchecked :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m Word
+getStatusCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStatusCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lineNumber\"] = $2; })"
+        js_setLineNumber :: SecurityPolicyViolationEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-linenumber SecurityPolicyViolationEventInit.lineNumber specification>
+setLineNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> Word -> m ()
+setLineNumber self val = liftDOM (void ((js_setLineNumber (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lineNumber\"]; })"
+        js_getLineNumber :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-linenumber SecurityPolicyViolationEventInit.lineNumber specification>
+getLineNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe Word)
+getLineNumber self = liftDOM (((js_getLineNumber (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-linenumber SecurityPolicyViolationEventInit.lineNumber specification>
+getLineNumberUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m Word
+getLineNumberUnsafe self = liftDOM ((((js_getLineNumber (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-linenumber SecurityPolicyViolationEventInit.lineNumber specification>
+getLineNumberUnchecked :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m Word
+getLineNumberUnchecked self = liftDOM ((pFromJSVal <$> (js_getLineNumber (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"columnNumber\"] = $2; })"
+        js_setColumnNumber :: SecurityPolicyViolationEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-columnnumber SecurityPolicyViolationEventInit.columnNumber specification>
+setColumnNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> Word -> m ()
+setColumnNumber self val = liftDOM (void ((js_setColumnNumber (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"columnNumber\"]; })"
+        js_getColumnNumber :: SecurityPolicyViolationEventInit -> IO JSVal
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-columnnumber SecurityPolicyViolationEventInit.columnNumber specification>
+getColumnNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe Word)
+getColumnNumber self = liftDOM (((js_getColumnNumber (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-columnnumber SecurityPolicyViolationEventInit.columnNumber specification>
+getColumnNumberUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m Word
+getColumnNumberUnsafe self = liftDOM ((((js_getColumnNumber (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-columnnumber SecurityPolicyViolationEventInit.columnNumber specification>
+getColumnNumberUnchecked :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m Word
+getColumnNumberUnchecked self = liftDOM ((pFromJSVal <$> (js_getColumnNumber (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Segment.hs b/src/GHCJS/DOM/JSFFI/Generated/Segment.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Segment.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-extensions (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Segment
+       (js_newSegment, js_setType, js_getType, js_setId, js_getId, js_setPartOf, js_getPartOf, js_setProbability, js_getProbability, js_setCenterPoint, js_getCenterPoint, js_setBoundingBox, js_getBoundingBox, newSegment, setType, getType, setId, getId, setPartOf, getPartOf, getPartOfUnsafe, getPartOfUnchecked, setProbability, getProbability, setCenterPoint, getCenterPoint, getCenterPointUnsafe, getCenterPointUnchecked, setBoundingBox, getBoundingBox, getBoundingBoxUnsafe, getBoundingBoxUnchecked, Segment(..), gTypeSegment)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"type\": $1, \"id\": $2, \"probability\": $3}); })"
+        js_newSegment :: JSVal -> Int -> Float -> IO Segment
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment Segment specification>
+newSegment :: (MonadDOM m) => SegmentType -> Int -> Float -> m Segment
+newSegment type' id probability = liftDOM (((toJSVal type') >>= \a1' -> js_newSegment a1' (id) (probability)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: Segment -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-type Segment.type specification>
+setType :: (MonadDOM m) => Segment -> SegmentType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Segment -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-type Segment.type specification>
+getType :: (MonadDOM m) => Segment -> m SegmentType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: Segment -> Int -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-id Segment.id specification>
+setId :: (MonadDOM m) => Segment -> Int -> m ()
+setId self val = liftDOM (void ((js_setId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: Segment -> IO Int
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-id Segment.id specification>
+getId :: (MonadDOM m) => Segment -> m Int
+getId self = liftDOM ((js_getId (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"partOf\"] = $2; })"
+        js_setPartOf :: Segment -> Int -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-partof Segment.partOf specification>
+setPartOf :: (MonadDOM m) => Segment -> Int -> m ()
+setPartOf self val = liftDOM (void ((js_setPartOf (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"partOf\"]; })"
+        js_getPartOf :: Segment -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-partof Segment.partOf specification>
+getPartOf :: (MonadDOM m) => Segment -> m (Maybe Int)
+getPartOf self = liftDOM (((js_getPartOf (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-partof Segment.partOf specification>
+getPartOfUnsafe :: (MonadDOM m, HasCallStack) => Segment -> m Int
+getPartOfUnsafe self = liftDOM ((((js_getPartOf (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-partof Segment.partOf specification>
+getPartOfUnchecked :: (MonadDOM m) => Segment -> m Int
+getPartOfUnchecked self = liftDOM ((pFromJSVal <$> (js_getPartOf (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"probability\"] = $2; })"
+        js_setProbability :: Segment -> Float -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-probability Segment.probability specification>
+setProbability :: (MonadDOM m) => Segment -> Float -> m ()
+setProbability self val = liftDOM (void ((js_setProbability (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"probability\"]; })"
+        js_getProbability :: Segment -> IO Float
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-probability Segment.probability specification>
+getProbability :: (MonadDOM m) => Segment -> m Float
+getProbability self = liftDOM ((js_getProbability (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"centerPoint\"] = $2; })"
+        js_setCenterPoint :: Segment -> Point2D -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-centerpoint Segment.centerPoint specification>
+setCenterPoint :: (MonadDOM m) => Segment -> Point2D -> m ()
+setCenterPoint self val = liftDOM (void ((js_setCenterPoint (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"centerPoint\"]; })"
+        js_getCenterPoint :: Segment -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-centerpoint Segment.centerPoint specification>
+getCenterPoint :: (MonadDOM m) => Segment -> m (Maybe Point2D)
+getCenterPoint self = liftDOM (((js_getCenterPoint (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-centerpoint Segment.centerPoint specification>
+getCenterPointUnsafe :: (MonadDOM m, HasCallStack) => Segment -> m Point2D
+getCenterPointUnsafe self = liftDOM ((((js_getCenterPoint (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-centerpoint Segment.centerPoint specification>
+getCenterPointUnchecked :: (MonadDOM m) => Segment -> m Point2D
+getCenterPointUnchecked self = liftDOM ((pFromJSVal <$> (js_getCenterPoint (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"boundingBox\"] = $2; })"
+        js_setBoundingBox :: Segment -> DOMRectInit -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-boundingbox Segment.boundingBox specification>
+setBoundingBox :: (MonadDOM m) => Segment -> DOMRectInit -> m ()
+setBoundingBox self val = liftDOM (void ((js_setBoundingBox (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"boundingBox\"]; })"
+        js_getBoundingBox :: Segment -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-boundingbox Segment.boundingBox specification>
+getBoundingBox :: (MonadDOM m) => Segment -> m (Maybe DOMRectInit)
+getBoundingBox self = liftDOM (((js_getBoundingBox (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-boundingbox Segment.boundingBox specification>
+getBoundingBoxUnsafe :: (MonadDOM m, HasCallStack) => Segment -> m DOMRectInit
+getBoundingBoxUnsafe self = liftDOM ((((js_getBoundingBox (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-boundingbox Segment.boundingBox specification>
+getBoundingBoxUnchecked :: (MonadDOM m) => Segment -> m DOMRectInit
+getBoundingBoxUnchecked self = liftDOM ((pFromJSVal <$> (js_getBoundingBox (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Selection.hs b/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
@@ -1,336 +1,189 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from selection-api (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Selection
-       (js_collapse, collapse, js_collapseToEnd, collapseToEnd,
-        js_collapseToStart, collapseToStart, js_deleteFromDocument,
-        deleteFromDocument, js_containsNode, containsNode, containsNode_,
-        js_selectAllChildren, selectAllChildren, js_extend, extend,
-        js_getRangeAt, getRangeAt, getRangeAt_, js_removeAllRanges,
-        removeAllRanges, js_addRange, addRange, js_toString, toString,
-        toString_, js_setBaseAndExtent, setBaseAndExtent, js_setPosition,
-        setPosition, js_empty, empty, js_modify, modify, js_getAnchorNode,
-        getAnchorNode, getAnchorNodeUnsafe, getAnchorNodeUnchecked,
-        js_getAnchorOffset, getAnchorOffset, js_getFocusNode, getFocusNode,
-        getFocusNodeUnsafe, getFocusNodeUnchecked, js_getFocusOffset,
-        getFocusOffset, js_getIsCollapsed, getIsCollapsed,
-        js_getRangeCount, getRangeCount, js_getType, getType,
-        js_getBaseNode, getBaseNode, getBaseNodeUnsafe,
-        getBaseNodeUnchecked, js_getBaseOffset, getBaseOffset,
-        js_getExtentNode, getExtentNode, getExtentNodeUnsafe,
-        getExtentNodeUnchecked, js_getExtentOffset, getExtentOffset,
-        Selection(..), gTypeSelection)
+       (js_addRange, js_collapse, js_collapseToEnd, js_collapseToStart, js_containsNode, js_deleteFromDocument, js_empty, js_extend, js_getComposedRanges, js_getRangeAt, js_modify, js_removeAllRanges, js_removeRange, js_selectAllChildren, js_setBaseAndExtent, js_setPosition, js_getAnchorNode, js_getAnchorOffset, js_getFocusNode, js_getFocusOffset, js_getIsCollapsed, js_getRangeCount, js_getType, js_getDirection, addRange, collapse, collapseToEnd, collapseToStart, containsNode, containsNode_, deleteFromDocument, empty, extend, getComposedRanges, getComposedRanges_, getRangeAt, getRangeAt_, modify, removeAllRanges, removeRange, selectAllChildren, setBaseAndExtent, setPosition, getAnchorNode, getAnchorNodeUnsafe, getAnchorNodeUnchecked, getAnchorOffset, getFocusNode, getFocusNodeUnsafe, getFocusNodeUnchecked, getFocusOffset, getIsCollapsed, getRangeCount, getType, getDirection, Selection(..), gTypeSelection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"collapse\"]($2, $3); })"
-        js_collapse :: Selection -> Optional Node -> Optional Word -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapse Mozilla Selection.collapse documentation> 
-collapse ::
-         (MonadIO m, IsNode node) =>
-           Selection -> Maybe node -> Maybe Word -> m ()
-collapse self node offset
-  = liftIO
-      (js_collapse self (maybeToOptional (fmap toNode node))
-         (maybeToOptional offset))
- 
+foreign import javascript safe "(($1, $2) => { return $1[\"addRange\"]($2); })"
+        js_addRange :: Selection -> Range -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/addRange MDN Selection.addRange documentation>
+addRange :: (MonadDOM m) => Selection -> Range -> m ()
+addRange self range = liftDOM (void ((js_addRange (self) (range))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"collapse\"]($2, $3); })"
+        js_collapse :: Selection -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/collapse MDN Selection.collapse documentation>
+collapse :: (MonadDOM m, IsNode node) => Selection -> Maybe node -> Maybe Word -> m ()
+collapse self node offset = liftDOM (void (((toJSVal node) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal offset) >>= \a3' -> js_collapse (self) a2' a3')))
+
 foreign import javascript safe "(($1) => { return $1[\"collapseToEnd\"](); })"
         js_collapseToEnd :: Selection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/collapseToEnd MDN Selection.collapseToEnd documentation>
+collapseToEnd :: (MonadDOM m) => Selection -> m ()
+collapseToEnd self = liftDOM (void ((js_collapseToEnd (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToEnd Mozilla Selection.collapseToEnd documentation> 
-collapseToEnd :: (MonadIO m) => Selection -> m ()
-collapseToEnd self = liftIO (js_collapseToEnd self)
- 
 foreign import javascript safe "(($1) => { return $1[\"collapseToStart\"](); })"
         js_collapseToStart :: Selection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/collapseToStart MDN Selection.collapseToStart documentation>
+collapseToStart :: (MonadDOM m) => Selection -> m ()
+collapseToStart self = liftDOM (void ((js_collapseToStart (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToStart Mozilla Selection.collapseToStart documentation> 
-collapseToStart :: (MonadIO m) => Selection -> m ()
-collapseToStart self = liftIO (js_collapseToStart self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deleteFromDocument\"](); })"
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"containsNode\"]($2, $3); })"
+        js_containsNode :: Selection -> Node -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/containsNode MDN Selection.containsNode documentation>
+containsNode :: (MonadDOM m, IsNode node) => Selection -> node -> Maybe Bool -> m Bool
+containsNode self node allowPartialContainment = liftDOM (((P.maybe (P.return jsUndefined) toJSVal allowPartialContainment) >>= \a3' -> js_containsNode (self) (Types.toNode node) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/containsNode MDN Selection.containsNode documentation>
+containsNode_ :: (MonadDOM m, IsNode node) => Selection -> node -> Maybe Bool -> m ()
+containsNode_ self node allowPartialContainment = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal allowPartialContainment) >>= \a3' -> js_containsNode (self) (Types.toNode node) a3')))
+
+foreign import javascript safe "(($1) => { return $1[\"deleteFromDocument\"](); })"
         js_deleteFromDocument :: Selection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/deleteFromDocument MDN Selection.deleteFromDocument documentation>
+deleteFromDocument :: (MonadDOM m) => Selection -> m ()
+deleteFromDocument self = liftDOM (void ((js_deleteFromDocument (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.deleteFromDocument Mozilla Selection.deleteFromDocument documentation> 
-deleteFromDocument :: (MonadIO m) => Selection -> m ()
-deleteFromDocument self = liftIO (js_deleteFromDocument self)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return ($1[\"containsNode\"]($2,\n$3) ? 1 : 0); })" js_containsNode ::
-        Selection -> Node -> Bool -> IO Bool
+foreign import javascript safe "(($1) => { return $1[\"empty\"](); })"
+        js_empty :: Selection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/empty MDN Selection.empty documentation>
+empty :: (MonadDOM m) => Selection -> m ()
+empty self = liftDOM (void ((js_empty (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.containsNode Mozilla Selection.containsNode documentation> 
-containsNode ::
-             (MonadIO m, IsNode node) => Selection -> node -> Bool -> m Bool
-containsNode self node allowPartial
-  = liftIO (js_containsNode self (toNode node) allowPartial)
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"extend\"]($2, $3); })"
+        js_extend :: Selection -> Node -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/extend MDN Selection.extend documentation>
+extend :: (MonadDOM m, IsNode node) => Selection -> node -> Maybe Word -> m ()
+extend self node offset = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal offset) >>= \a3' -> js_extend (self) (Types.toNode node) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.containsNode Mozilla Selection.containsNode documentation> 
-containsNode_ ::
-              (MonadIO m, IsNode node) => Selection -> node -> Bool -> m ()
-containsNode_ self node allowPartial
-  = liftIO (void (js_containsNode self (toNode node) allowPartial))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"selectAllChildren\"]($2); })"
-        js_selectAllChildren :: Selection -> Node -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"getComposedRanges\"]($2); })"
+        js_getComposedRanges :: Selection -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/getComposedRanges MDN Selection.getComposedRanges documentation>
+getComposedRanges :: (MonadDOM m) => Selection -> Maybe GetComposedRangesOptions -> m [StaticRange]
+getComposedRanges self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getComposedRanges (self) a2') >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.selectAllChildren Mozilla Selection.selectAllChildren documentation> 
-selectAllChildren ::
-                  (MonadIO m, IsNode node) => Selection -> node -> m ()
-selectAllChildren self node
-  = liftIO (js_selectAllChildren self (toNode node))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"extend\"]($2, $3); })" js_extend
-        :: Selection -> Node -> Optional Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/getComposedRanges MDN Selection.getComposedRanges documentation>
+getComposedRanges_ :: (MonadDOM m) => Selection -> Maybe GetComposedRangesOptions -> m ()
+getComposedRanges_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getComposedRanges (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extend Mozilla Selection.extend documentation> 
-extend ::
-       (MonadIO m, IsNode node) => Selection -> node -> Maybe Word -> m ()
-extend self node offset
-  = liftIO (js_extend self (toNode node) (maybeToOptional offset))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"getRangeAt\"]($2); })"
         js_getRangeAt :: Selection -> Word -> IO Range
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
-getRangeAt :: (MonadIO m) => Selection -> Word -> m Range
-getRangeAt self index = liftIO (js_getRangeAt self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
-getRangeAt_ :: (MonadIO m) => Selection -> Word -> m ()
-getRangeAt_ self index = liftIO (void (js_getRangeAt self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"removeAllRanges\"](); })"
-        js_removeAllRanges :: Selection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/getRangeAt MDN Selection.getRangeAt documentation>
+getRangeAt :: (MonadDOM m) => Selection -> Word -> m Range
+getRangeAt self index = liftDOM ((js_getRangeAt (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.removeAllRanges Mozilla Selection.removeAllRanges documentation> 
-removeAllRanges :: (MonadIO m) => Selection -> m ()
-removeAllRanges self = liftIO (js_removeAllRanges self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"addRange\"]($2); })" js_addRange
-        :: Selection -> Range -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/getRangeAt MDN Selection.getRangeAt documentation>
+getRangeAt_ :: (MonadDOM m) => Selection -> Word -> m ()
+getRangeAt_ self index = liftDOM (void ((js_getRangeAt (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.addRange Mozilla Selection.addRange documentation> 
-addRange :: (MonadIO m) => Selection -> Range -> m ()
-addRange self range = liftIO (js_addRange self range)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: Selection -> IO JSString
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"modify\"]($2, $3, $4); })"
+        js_modify :: Selection -> (Optional JSString) -> (Optional JSString) -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/modify MDN Selection.modify documentation>
+modify :: (MonadDOM m, ToJSString alter, ToJSString direction, ToJSString granularity) => Selection -> Maybe alter -> Maybe direction -> Maybe granularity -> m ()
+modify self alter direction granularity = liftDOM (void ((js_modify (self) (toOptionalJSString alter) (toOptionalJSString direction) (toOptionalJSString granularity))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.toString Mozilla Selection.toString documentation> 
-toString ::
-         (MonadIO m, FromJSString result) => Selection -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
+foreign import javascript safe "(($1) => { return $1[\"removeAllRanges\"](); })"
+        js_removeAllRanges :: Selection -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/removeAllRanges MDN Selection.removeAllRanges documentation>
+removeAllRanges :: (MonadDOM m) => Selection -> m ()
+removeAllRanges self = liftDOM (void ((js_removeAllRanges (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.toString Mozilla Selection.toString documentation> 
-toString_ :: (MonadIO m) => Selection -> m ()
-toString_ self = liftIO (void (js_toString self))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"setBaseAndExtent\"]($2, $3,\n$4, $5); })" js_setBaseAndExtent ::
-        Selection ->
-          Optional Node -> Word -> Optional Node -> Word -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"removeRange\"]($2); })"
+        js_removeRange :: Selection -> Range -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/removeRange MDN Selection.removeRange documentation>
+removeRange :: (MonadDOM m) => Selection -> Range -> m ()
+removeRange self range = liftDOM (void ((js_removeRange (self) (range))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setBaseAndExtent Mozilla Selection.setBaseAndExtent documentation> 
-setBaseAndExtent ::
-                 (MonadIO m, IsNode baseNode, IsNode extentNode) =>
-                   Selection ->
-                     Maybe baseNode -> Word -> Maybe extentNode -> Word -> m ()
-setBaseAndExtent self baseNode baseOffset extentNode extentOffset
-  = liftIO
-      (js_setBaseAndExtent self (maybeToOptional (fmap toNode baseNode))
-         baseOffset
-         (maybeToOptional (fmap toNode extentNode))
-         extentOffset)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setPosition\"]($2, $3); })"
-        js_setPosition ::
-        Selection -> Optional Node -> Optional Word -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"selectAllChildren\"]($2); })"
+        js_selectAllChildren :: Selection -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/selectAllChildren MDN Selection.selectAllChildren documentation>
+selectAllChildren :: (MonadDOM m, IsNode node) => Selection -> node -> m ()
+selectAllChildren self node = liftDOM (void ((js_selectAllChildren (self) (Types.toNode node))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setPosition Mozilla Selection.setPosition documentation> 
-setPosition ::
-            (MonadIO m, IsNode node) =>
-              Selection -> Maybe node -> Maybe Word -> m ()
-setPosition self node offset
-  = liftIO
-      (js_setPosition self (maybeToOptional (fmap toNode node))
-         (maybeToOptional offset))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"empty\"](); })" js_empty ::
-        Selection -> IO ()
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"setBaseAndExtent\"]($2, $3, $4, $5); })"
+        js_setBaseAndExtent :: Selection -> Node -> Word -> Node -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/setBaseAndExtent MDN Selection.setBaseAndExtent documentation>
+setBaseAndExtent :: (MonadDOM m, IsNode anchorNode, IsNode focusNode) => Selection -> anchorNode -> Word -> focusNode -> Word -> m ()
+setBaseAndExtent self anchorNode anchorOffset focusNode focusOffset = liftDOM (void ((js_setBaseAndExtent (self) (Types.toNode anchorNode) (anchorOffset) (Types.toNode focusNode) (focusOffset))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.empty Mozilla Selection.empty documentation> 
-empty :: (MonadIO m) => Selection -> m ()
-empty self = liftIO (js_empty self)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"modify\"]($2, $3, $4); })"
-        js_modify ::
-        Selection ->
-          Optional JSString ->
-            Optional JSString -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setPosition\"]($2, $3); })"
+        js_setPosition :: Selection -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/setPosition MDN Selection.setPosition documentation>
+setPosition :: (MonadDOM m, IsNode node) => Selection -> Maybe node -> Maybe Word -> m ()
+setPosition self node offset = liftDOM (void (((toJSVal node) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal offset) >>= \a3' -> js_setPosition (self) a2' a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.modify Mozilla Selection.modify documentation> 
-modify ::
-       (MonadIO m, ToJSString alter, ToJSString direction,
-        ToJSString granularity) =>
-         Selection ->
-           Maybe alter -> Maybe direction -> Maybe granularity -> m ()
-modify self alter direction granularity
-  = liftIO
-      (js_modify self (toOptionalJSString alter)
-         (toOptionalJSString direction)
-         (toOptionalJSString granularity))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"anchorNode\"]; })"
-        js_getAnchorNode :: Selection -> IO (Nullable Node)
+        js_getAnchorNode :: Selection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorNode MDN Selection.anchorNode documentation>
+getAnchorNode :: (MonadDOM m) => Selection -> m (Maybe Node)
+getAnchorNode self = liftDOM (((js_getAnchorNode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
-getAnchorNode :: (MonadIO m) => Selection -> m (Maybe Node)
-getAnchorNode self
-  = liftIO (nullableToMaybe <$> (js_getAnchorNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorNode MDN Selection.anchorNode documentation>
+getAnchorNodeUnsafe :: (MonadDOM m, HasCallStack) => Selection -> m Node
+getAnchorNodeUnsafe self = liftDOM ((((js_getAnchorNode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
-getAnchorNodeUnsafe ::
-                    (MonadIO m, HasCallStack) => Selection -> m Node
-getAnchorNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAnchorNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorNode MDN Selection.anchorNode documentation>
+getAnchorNodeUnchecked :: (MonadDOM m) => Selection -> m Node
+getAnchorNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnchorNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
-getAnchorNodeUnchecked :: (MonadIO m) => Selection -> m Node
-getAnchorNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getAnchorNode self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"anchorOffset\"]; })"
         js_getAnchorOffset :: Selection -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorOffset MDN Selection.anchorOffset documentation>
+getAnchorOffset :: (MonadDOM m) => Selection -> m Word
+getAnchorOffset self = liftDOM ((js_getAnchorOffset (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorOffset Mozilla Selection.anchorOffset documentation> 
-getAnchorOffset :: (MonadIO m) => Selection -> m Word
-getAnchorOffset self = liftIO (js_getAnchorOffset self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"focusNode\"]; })"
-        js_getFocusNode :: Selection -> IO (Nullable Node)
+        js_getFocusNode :: Selection -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusNode MDN Selection.focusNode documentation>
+getFocusNode :: (MonadDOM m) => Selection -> m (Maybe Node)
+getFocusNode self = liftDOM (((js_getFocusNode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
-getFocusNode :: (MonadIO m) => Selection -> m (Maybe Node)
-getFocusNode self
-  = liftIO (nullableToMaybe <$> (js_getFocusNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusNode MDN Selection.focusNode documentation>
+getFocusNodeUnsafe :: (MonadDOM m, HasCallStack) => Selection -> m Node
+getFocusNodeUnsafe self = liftDOM ((((js_getFocusNode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
-getFocusNodeUnsafe ::
-                   (MonadIO m, HasCallStack) => Selection -> m Node
-getFocusNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFocusNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusNode MDN Selection.focusNode documentation>
+getFocusNodeUnchecked :: (MonadDOM m) => Selection -> m Node
+getFocusNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFocusNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
-getFocusNodeUnchecked :: (MonadIO m) => Selection -> m Node
-getFocusNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getFocusNode self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"focusOffset\"]; })"
         js_getFocusOffset :: Selection -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusOffset MDN Selection.focusOffset documentation>
+getFocusOffset :: (MonadDOM m) => Selection -> m Word
+getFocusOffset self = liftDOM ((js_getFocusOffset (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusOffset Mozilla Selection.focusOffset documentation> 
-getFocusOffset :: (MonadIO m) => Selection -> m Word
-getFocusOffset self = liftIO (js_getFocusOffset self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"isCollapsed\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"isCollapsed\"]; })"
         js_getIsCollapsed :: Selection -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/isCollapsed MDN Selection.isCollapsed documentation>
+getIsCollapsed :: (MonadDOM m) => Selection -> m Bool
+getIsCollapsed self = liftDOM ((js_getIsCollapsed (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.isCollapsed Mozilla Selection.isCollapsed documentation> 
-getIsCollapsed :: (MonadIO m) => Selection -> m Bool
-getIsCollapsed self = liftIO (js_getIsCollapsed self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"rangeCount\"]; })"
         js_getRangeCount :: Selection -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.rangeCount Mozilla Selection.rangeCount documentation> 
-getRangeCount :: (MonadIO m) => Selection -> m Word
-getRangeCount self = liftIO (js_getRangeCount self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        Selection -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.type Mozilla Selection.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => Selection -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseNode\"]; })" js_getBaseNode
-        :: Selection -> IO (Nullable Node)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
-getBaseNode :: (MonadIO m) => Selection -> m (Maybe Node)
-getBaseNode self
-  = liftIO (nullableToMaybe <$> (js_getBaseNode self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
-getBaseNodeUnsafe ::
-                  (MonadIO m, HasCallStack) => Selection -> m Node
-getBaseNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getBaseNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
-getBaseNodeUnchecked :: (MonadIO m) => Selection -> m Node
-getBaseNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getBaseNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"baseOffset\"]; })"
-        js_getBaseOffset :: Selection -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseOffset Mozilla Selection.baseOffset documentation> 
-getBaseOffset :: (MonadIO m) => Selection -> m Word
-getBaseOffset self = liftIO (js_getBaseOffset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"extentNode\"]; })"
-        js_getExtentNode :: Selection -> IO (Nullable Node)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
-getExtentNode :: (MonadIO m) => Selection -> m (Maybe Node)
-getExtentNode self
-  = liftIO (nullableToMaybe <$> (js_getExtentNode self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
-getExtentNodeUnsafe ::
-                    (MonadIO m, HasCallStack) => Selection -> m Node
-getExtentNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getExtentNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/rangeCount MDN Selection.rangeCount documentation>
+getRangeCount :: (MonadDOM m) => Selection -> m Word
+getRangeCount self = liftDOM ((js_getRangeCount (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
-getExtentNodeUnchecked :: (MonadIO m) => Selection -> m Node
-getExtentNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getExtentNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"extentOffset\"]; })"
-        js_getExtentOffset :: Selection -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: Selection -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/type MDN Selection.type documentation>
+getType :: (MonadDOM m, FromJSString result) => Selection -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentOffset Mozilla Selection.extentOffset documentation> 
-getExtentOffset :: (MonadIO m) => Selection -> m Word
-getExtentOffset self = liftIO (js_getExtentOffset self)
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: Selection -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/direction MDN Selection.direction documentation>
+getDirection :: (MonadDOM m, FromJSString result) => Selection -> m result
+getDirection self = liftDOM ((fromJSString <$> (js_getDirection (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Serial.hs b/src/GHCJS/DOM/JSFFI/Generated/Serial.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Serial.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Serial
+       (js_getPorts, js_requestPort, getPorts, getPorts_, requestPort, requestPort_, Serial(..), gTypeSerial)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getPorts\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getPorts :: Serial -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Serial/getPorts MDN Serial.getPorts documentation>
+getPorts :: (MonadDOM m) => Serial -> m [SerialPort]
+getPorts self = liftDOM ((((js_getPorts (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Serial/getPorts MDN Serial.getPorts documentation>
+getPorts_ :: (MonadDOM m) => Serial -> m ()
+getPorts_ self = liftDOM (void (((js_getPorts (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"requestPort\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestPort :: Serial -> JSVal -> IO (JSVal, SerialPort)
+-- | <https://developer.mozilla.org/docs/Web/API/Serial/requestPort MDN Serial.requestPort documentation>
+requestPort :: (MonadDOM m) => Serial -> Maybe SerialPortRequestOptions -> m SerialPort
+requestPort self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestPort (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Serial/requestPort MDN Serial.requestPort documentation>
+requestPort_ :: (MonadDOM m) => Serial -> Maybe SerialPortRequestOptions -> m ()
+requestPort_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_requestPort (self) a2') >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SerialInputSignals.hs b/src/GHCJS/DOM/JSFFI/Generated/SerialInputSignals.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SerialInputSignals.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SerialInputSignals
+       (js_newSerialInputSignals, js_setDataCarrierDetect, js_getDataCarrierDetect, js_setClearToSend, js_getClearToSend, js_setRingIndicator, js_getRingIndicator, js_setDataSetReady, js_getDataSetReady, newSerialInputSignals, setDataCarrierDetect, getDataCarrierDetect, setClearToSend, getClearToSend, setRingIndicator, getRingIndicator, setDataSetReady, getDataSetReady, SerialInputSignals(..), gTypeSerialInputSignals)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"dataCarrierDetect\": $1, \"clearToSend\": $2, \"ringIndicator\": $3, \"dataSetReady\": $4}); })"
+        js_newSerialInputSignals :: Bool -> Bool -> Bool -> Bool -> IO SerialInputSignals
+-- | <https://serial.spec.whatwg.org/#dictdef-serialinputsignals SerialInputSignals specification>
+newSerialInputSignals :: (MonadDOM m) => Bool -> Bool -> Bool -> Bool -> m SerialInputSignals
+newSerialInputSignals dataCarrierDetect clearToSend ringIndicator dataSetReady = liftDOM ((js_newSerialInputSignals (dataCarrierDetect) (clearToSend) (ringIndicator) (dataSetReady)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dataCarrierDetect\"] = $2; })"
+        js_setDataCarrierDetect :: SerialInputSignals -> Bool -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datacarrierdetect SerialInputSignals.dataCarrierDetect specification>
+setDataCarrierDetect :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setDataCarrierDetect self val = liftDOM (void ((js_setDataCarrierDetect (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataCarrierDetect\"]; })"
+        js_getDataCarrierDetect :: SerialInputSignals -> IO Bool
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datacarrierdetect SerialInputSignals.dataCarrierDetect specification>
+getDataCarrierDetect :: (MonadDOM m) => SerialInputSignals -> m Bool
+getDataCarrierDetect self = liftDOM ((js_getDataCarrierDetect (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clearToSend\"] = $2; })"
+        js_setClearToSend :: SerialInputSignals -> Bool -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-cleartosend SerialInputSignals.clearToSend specification>
+setClearToSend :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setClearToSend self val = liftDOM (void ((js_setClearToSend (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clearToSend\"]; })"
+        js_getClearToSend :: SerialInputSignals -> IO Bool
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-cleartosend SerialInputSignals.clearToSend specification>
+getClearToSend :: (MonadDOM m) => SerialInputSignals -> m Bool
+getClearToSend self = liftDOM ((js_getClearToSend (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ringIndicator\"] = $2; })"
+        js_setRingIndicator :: SerialInputSignals -> Bool -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-ringindicator SerialInputSignals.ringIndicator specification>
+setRingIndicator :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setRingIndicator self val = liftDOM (void ((js_setRingIndicator (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ringIndicator\"]; })"
+        js_getRingIndicator :: SerialInputSignals -> IO Bool
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-ringindicator SerialInputSignals.ringIndicator specification>
+getRingIndicator :: (MonadDOM m) => SerialInputSignals -> m Bool
+getRingIndicator self = liftDOM ((js_getRingIndicator (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dataSetReady\"] = $2; })"
+        js_setDataSetReady :: SerialInputSignals -> Bool -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datasetready SerialInputSignals.dataSetReady specification>
+setDataSetReady :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setDataSetReady self val = liftDOM (void ((js_setDataSetReady (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataSetReady\"]; })"
+        js_getDataSetReady :: SerialInputSignals -> IO Bool
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datasetready SerialInputSignals.dataSetReady specification>
+getDataSetReady :: (MonadDOM m) => SerialInputSignals -> m Bool
+getDataSetReady self = liftDOM ((js_getDataSetReady (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SerialOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SerialOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SerialOptions.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SerialOptions
+       (js_newSerialOptions, js_setBaudRate, js_getBaudRate, js_setDataBits, js_getDataBits, js_setStopBits, js_getStopBits, js_setParity, js_getParity, js_setBufferSize, js_getBufferSize, js_setFlowControl, js_getFlowControl, newSerialOptions, setBaudRate, getBaudRate, setDataBits, getDataBits, getDataBitsUnsafe, getDataBitsUnchecked, setStopBits, getStopBits, getStopBitsUnsafe, getStopBitsUnchecked, setParity, getParity, getParityUnsafe, getParityUnchecked, setBufferSize, getBufferSize, getBufferSizeUnsafe, getBufferSizeUnchecked, setFlowControl, getFlowControl, getFlowControlUnsafe, getFlowControlUnchecked, SerialOptions(..), gTypeSerialOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"baudRate\": $1}); })"
+        js_newSerialOptions :: Word -> IO SerialOptions
+-- | <https://serial.spec.whatwg.org/#dictdef-serialoptions SerialOptions specification>
+newSerialOptions :: (MonadDOM m) => Word -> m SerialOptions
+newSerialOptions baudRate = liftDOM ((js_newSerialOptions (baudRate)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"baudRate\"] = $2; })"
+        js_setBaudRate :: SerialOptions -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-baudrate SerialOptions.baudRate specification>
+setBaudRate :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setBaudRate self val = liftDOM (void ((js_setBaudRate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"baudRate\"]; })"
+        js_getBaudRate :: SerialOptions -> IO Word
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-baudrate SerialOptions.baudRate specification>
+getBaudRate :: (MonadDOM m) => SerialOptions -> m Word
+getBaudRate self = liftDOM ((js_getBaudRate (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dataBits\"] = $2; })"
+        js_setDataBits :: SerialOptions -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-databits SerialOptions.dataBits specification>
+setDataBits :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setDataBits self val = liftDOM (void ((js_setDataBits (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataBits\"]; })"
+        js_getDataBits :: SerialOptions -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-databits SerialOptions.dataBits specification>
+getDataBits :: (MonadDOM m) => SerialOptions -> m (Maybe Word)
+getDataBits self = liftDOM (((js_getDataBits (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-databits SerialOptions.dataBits specification>
+getDataBitsUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m Word
+getDataBitsUnsafe self = liftDOM ((((js_getDataBits (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-databits SerialOptions.dataBits specification>
+getDataBitsUnchecked :: (MonadDOM m) => SerialOptions -> m Word
+getDataBitsUnchecked self = liftDOM ((pFromJSVal <$> (js_getDataBits (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stopBits\"] = $2; })"
+        js_setStopBits :: SerialOptions -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-stopbits SerialOptions.stopBits specification>
+setStopBits :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setStopBits self val = liftDOM (void ((js_setStopBits (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stopBits\"]; })"
+        js_getStopBits :: SerialOptions -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-stopbits SerialOptions.stopBits specification>
+getStopBits :: (MonadDOM m) => SerialOptions -> m (Maybe Word)
+getStopBits self = liftDOM (((js_getStopBits (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-stopbits SerialOptions.stopBits specification>
+getStopBitsUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m Word
+getStopBitsUnsafe self = liftDOM ((((js_getStopBits (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-stopbits SerialOptions.stopBits specification>
+getStopBitsUnchecked :: (MonadDOM m) => SerialOptions -> m Word
+getStopBitsUnchecked self = liftDOM ((pFromJSVal <$> (js_getStopBits (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"parity\"] = $2; })"
+        js_setParity :: SerialOptions -> JSVal -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-parity SerialOptions.parity specification>
+setParity :: (MonadDOM m) => SerialOptions -> ParityType -> m ()
+setParity self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setParity (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"parity\"]; })"
+        js_getParity :: SerialOptions -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-parity SerialOptions.parity specification>
+getParity :: (MonadDOM m) => SerialOptions -> m (Maybe ParityType)
+getParity self = liftDOM (((js_getParity (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-parity SerialOptions.parity specification>
+getParityUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m ParityType
+getParityUnsafe self = liftDOM ((((js_getParity (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-parity SerialOptions.parity specification>
+getParityUnchecked :: (MonadDOM m) => SerialOptions -> m ParityType
+getParityUnchecked self = liftDOM ((pFromJSVal <$> (js_getParity (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bufferSize\"] = $2; })"
+        js_setBufferSize :: SerialOptions -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-buffersize SerialOptions.bufferSize specification>
+setBufferSize :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setBufferSize self val = liftDOM (void ((js_setBufferSize (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bufferSize\"]; })"
+        js_getBufferSize :: SerialOptions -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-buffersize SerialOptions.bufferSize specification>
+getBufferSize :: (MonadDOM m) => SerialOptions -> m (Maybe Word)
+getBufferSize self = liftDOM (((js_getBufferSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-buffersize SerialOptions.bufferSize specification>
+getBufferSizeUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m Word
+getBufferSizeUnsafe self = liftDOM ((((js_getBufferSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-buffersize SerialOptions.bufferSize specification>
+getBufferSizeUnchecked :: (MonadDOM m) => SerialOptions -> m Word
+getBufferSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getBufferSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flowControl\"] = $2; })"
+        js_setFlowControl :: SerialOptions -> JSVal -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-flowcontrol SerialOptions.flowControl specification>
+setFlowControl :: (MonadDOM m) => SerialOptions -> FlowControlType -> m ()
+setFlowControl self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFlowControl (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flowControl\"]; })"
+        js_getFlowControl :: SerialOptions -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-flowcontrol SerialOptions.flowControl specification>
+getFlowControl :: (MonadDOM m) => SerialOptions -> m (Maybe FlowControlType)
+getFlowControl self = liftDOM (((js_getFlowControl (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-flowcontrol SerialOptions.flowControl specification>
+getFlowControlUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m FlowControlType
+getFlowControlUnsafe self = liftDOM ((((js_getFlowControl (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-flowcontrol SerialOptions.flowControl specification>
+getFlowControlUnchecked :: (MonadDOM m) => SerialOptions -> m FlowControlType
+getFlowControlUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlowControl (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SerialOutputSignals.hs b/src/GHCJS/DOM/JSFFI/Generated/SerialOutputSignals.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SerialOutputSignals.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SerialOutputSignals
+       (js_newSerialOutputSignals, js_setDataTerminalReady, js_getDataTerminalReady, js_setRequestToSend, js_getRequestToSend, js_setBreak, js_getBreak, newSerialOutputSignals, setDataTerminalReady, getDataTerminalReady, getDataTerminalReadyUnsafe, getDataTerminalReadyUnchecked, setRequestToSend, getRequestToSend, getRequestToSendUnsafe, getRequestToSendUnchecked, setBreak, getBreak, getBreakUnsafe, getBreakUnchecked, SerialOutputSignals(..), gTypeSerialOutputSignals)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSerialOutputSignals :: IO SerialOutputSignals
+-- | <https://serial.spec.whatwg.org/#dictdef-serialoutputsignals SerialOutputSignals specification>
+newSerialOutputSignals :: (MonadDOM m) => m SerialOutputSignals
+newSerialOutputSignals = liftDOM ((js_newSerialOutputSignals))
+
+foreign import javascript safe "(($1, $2) => { $1[\"dataTerminalReady\"] = $2; })"
+        js_setDataTerminalReady :: SerialOutputSignals -> Bool -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-dataterminalready SerialOutputSignals.dataTerminalReady specification>
+setDataTerminalReady :: (MonadDOM m) => SerialOutputSignals -> Bool -> m ()
+setDataTerminalReady self val = liftDOM (void ((js_setDataTerminalReady (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"dataTerminalReady\"]; })"
+        js_getDataTerminalReady :: SerialOutputSignals -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-dataterminalready SerialOutputSignals.dataTerminalReady specification>
+getDataTerminalReady :: (MonadDOM m) => SerialOutputSignals -> m (Maybe Bool)
+getDataTerminalReady self = liftDOM (((js_getDataTerminalReady (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-dataterminalready SerialOutputSignals.dataTerminalReady specification>
+getDataTerminalReadyUnsafe :: (MonadDOM m, HasCallStack) => SerialOutputSignals -> m Bool
+getDataTerminalReadyUnsafe self = liftDOM ((((js_getDataTerminalReady (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-dataterminalready SerialOutputSignals.dataTerminalReady specification>
+getDataTerminalReadyUnchecked :: (MonadDOM m) => SerialOutputSignals -> m Bool
+getDataTerminalReadyUnchecked self = liftDOM ((pFromJSVal <$> (js_getDataTerminalReady (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requestToSend\"] = $2; })"
+        js_setRequestToSend :: SerialOutputSignals -> Bool -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-requesttosend SerialOutputSignals.requestToSend specification>
+setRequestToSend :: (MonadDOM m) => SerialOutputSignals -> Bool -> m ()
+setRequestToSend self val = liftDOM (void ((js_setRequestToSend (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requestToSend\"]; })"
+        js_getRequestToSend :: SerialOutputSignals -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-requesttosend SerialOutputSignals.requestToSend specification>
+getRequestToSend :: (MonadDOM m) => SerialOutputSignals -> m (Maybe Bool)
+getRequestToSend self = liftDOM (((js_getRequestToSend (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-requesttosend SerialOutputSignals.requestToSend specification>
+getRequestToSendUnsafe :: (MonadDOM m, HasCallStack) => SerialOutputSignals -> m Bool
+getRequestToSendUnsafe self = liftDOM ((((js_getRequestToSend (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-requesttosend SerialOutputSignals.requestToSend specification>
+getRequestToSendUnchecked :: (MonadDOM m) => SerialOutputSignals -> m Bool
+getRequestToSendUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequestToSend (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"break\"] = $2; })"
+        js_setBreak :: SerialOutputSignals -> Bool -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-break SerialOutputSignals.break specification>
+setBreak :: (MonadDOM m) => SerialOutputSignals -> Bool -> m ()
+setBreak self val = liftDOM (void ((js_setBreak (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"break\"]; })"
+        js_getBreak :: SerialOutputSignals -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-break SerialOutputSignals.break specification>
+getBreak :: (MonadDOM m) => SerialOutputSignals -> m (Maybe Bool)
+getBreak self = liftDOM (((js_getBreak (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-break SerialOutputSignals.break specification>
+getBreakUnsafe :: (MonadDOM m, HasCallStack) => SerialOutputSignals -> m Bool
+getBreakUnsafe self = liftDOM ((((js_getBreak (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-break SerialOutputSignals.break specification>
+getBreakUnchecked :: (MonadDOM m) => SerialOutputSignals -> m Bool
+getBreakUnchecked self = liftDOM ((pFromJSVal <$> (js_getBreak (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SerialPort.hs b/src/GHCJS/DOM/JSFFI/Generated/SerialPort.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SerialPort.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SerialPort
+       (js_close, js_forget, js_getInfo, js_getSignals, js_open, js_setSignals, js_getConnected, js_getReadable, js_getWritable, close, forget, getInfo, getInfo_, getSignals, getSignals_, open, setSignals, getConnected, getReadable, getReadableUnsafe, getReadableUnchecked, getWritable, getWritableUnsafe, getWritableUnchecked, connect, disconnect, SerialPort(..), gTypeSerialPort)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: SerialPort -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/close MDN SerialPort.close documentation>
+close :: (MonadDOM m) => SerialPort -> m ()
+close self = liftDOM (void (((js_close (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"forget\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_forget :: SerialPort -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/forget MDN SerialPort.forget documentation>
+forget :: (MonadDOM m) => SerialPort -> m ()
+forget self = liftDOM (void (((js_forget (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"getInfo\"](); })"
+        js_getInfo :: SerialPort -> IO SerialPortInfo
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getInfo MDN SerialPort.getInfo documentation>
+getInfo :: (MonadDOM m) => SerialPort -> m SerialPortInfo
+getInfo self = liftDOM ((js_getInfo (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getInfo MDN SerialPort.getInfo documentation>
+getInfo_ :: (MonadDOM m) => SerialPort -> m ()
+getInfo_ self = liftDOM (void ((js_getInfo (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getSignals\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getSignals :: SerialPort -> IO (JSVal, SerialInputSignals)
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getSignals MDN SerialPort.getSignals documentation>
+getSignals :: (MonadDOM m) => SerialPort -> m SerialInputSignals
+getSignals self = liftDOM (((js_getSignals (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getSignals MDN SerialPort.getSignals documentation>
+getSignals_ :: (MonadDOM m) => SerialPort -> m ()
+getSignals_ self = liftDOM (void (((js_getSignals (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"open\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_open :: SerialPort -> SerialOptions -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/open MDN SerialPort.open documentation>
+open :: (MonadDOM m) => SerialPort -> SerialOptions -> m ()
+open self options = liftDOM (void (((js_open (self) (options)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"setSignals\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setSignals :: SerialPort -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/setSignals MDN SerialPort.setSignals documentation>
+setSignals :: (MonadDOM m) => SerialPort -> Maybe SerialOutputSignals -> m ()
+setSignals self signals = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal signals) >>= \a2' -> js_setSignals (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"connected\"]; })"
+        js_getConnected :: SerialPort -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/connected MDN SerialPort.connected documentation>
+getConnected :: (MonadDOM m) => SerialPort -> m Bool
+getConnected self = liftDOM ((js_getConnected (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: SerialPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/readable MDN SerialPort.readable documentation>
+getReadable :: (MonadDOM m) => SerialPort -> m (Maybe ReadableStream)
+getReadable self = liftDOM (((js_getReadable (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/readable MDN SerialPort.readable documentation>
+getReadableUnsafe :: (MonadDOM m, HasCallStack) => SerialPort -> m ReadableStream
+getReadableUnsafe self = liftDOM ((((js_getReadable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/readable MDN SerialPort.readable documentation>
+getReadableUnchecked :: (MonadDOM m) => SerialPort -> m ReadableStream
+getReadableUnchecked self = liftDOM ((pFromJSVal <$> (js_getReadable (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writable\"]; })"
+        js_getWritable :: SerialPort -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/writable MDN SerialPort.writable documentation>
+getWritable :: (MonadDOM m) => SerialPort -> m (Maybe WritableStream)
+getWritable self = liftDOM (((js_getWritable (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/writable MDN SerialPort.writable documentation>
+getWritableUnsafe :: (MonadDOM m, HasCallStack) => SerialPort -> m WritableStream
+getWritableUnsafe self = liftDOM ((((js_getWritable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/writable MDN SerialPort.writable documentation>
+getWritableUnchecked :: (MonadDOM m) => SerialPort -> m WritableStream
+getWritableUnchecked self = liftDOM ((pFromJSVal <$> (js_getWritable (self))))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialport-onconnect connect event>
+connect :: EventName SerialPort Event
+connect = unsafeEventName (toJSString "connect")
+
+-- | <https://serial.spec.whatwg.org/#dom-serialport-ondisconnect disconnect event>
+disconnect :: EventName SerialPort Event
+disconnect = unsafeEventName (toJSString "disconnect")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SerialPortFilter.hs b/src/GHCJS/DOM/JSFFI/Generated/SerialPortFilter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SerialPortFilter.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SerialPortFilter
+       (js_newSerialPortFilter, js_setUsbVendorId, js_getUsbVendorId, js_setUsbProductId, js_getUsbProductId, js_setBluetoothServiceClassId, js_getBluetoothServiceClassId, newSerialPortFilter, setUsbVendorId, getUsbVendorId, getUsbVendorIdUnsafe, getUsbVendorIdUnchecked, setUsbProductId, getUsbProductId, getUsbProductIdUnsafe, getUsbProductIdUnchecked, setBluetoothServiceClassId, getBluetoothServiceClassId, getBluetoothServiceClassIdUnsafe, getBluetoothServiceClassIdUnchecked, SerialPortFilter(..), gTypeSerialPortFilter)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSerialPortFilter :: IO SerialPortFilter
+-- | <https://serial.spec.whatwg.org/#dictdef-serialportfilter SerialPortFilter specification>
+newSerialPortFilter :: (MonadDOM m) => m SerialPortFilter
+newSerialPortFilter = liftDOM ((js_newSerialPortFilter))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usbVendorId\"] = $2; })"
+        js_setUsbVendorId :: SerialPortFilter -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbvendorid SerialPortFilter.usbVendorId specification>
+setUsbVendorId :: (MonadDOM m) => SerialPortFilter -> Word -> m ()
+setUsbVendorId self val = liftDOM (void ((js_setUsbVendorId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usbVendorId\"]; })"
+        js_getUsbVendorId :: SerialPortFilter -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbvendorid SerialPortFilter.usbVendorId specification>
+getUsbVendorId :: (MonadDOM m) => SerialPortFilter -> m (Maybe Word)
+getUsbVendorId self = liftDOM (((js_getUsbVendorId (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbvendorid SerialPortFilter.usbVendorId specification>
+getUsbVendorIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortFilter -> m Word
+getUsbVendorIdUnsafe self = liftDOM ((((js_getUsbVendorId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbvendorid SerialPortFilter.usbVendorId specification>
+getUsbVendorIdUnchecked :: (MonadDOM m) => SerialPortFilter -> m Word
+getUsbVendorIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsbVendorId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usbProductId\"] = $2; })"
+        js_setUsbProductId :: SerialPortFilter -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbproductid SerialPortFilter.usbProductId specification>
+setUsbProductId :: (MonadDOM m) => SerialPortFilter -> Word -> m ()
+setUsbProductId self val = liftDOM (void ((js_setUsbProductId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usbProductId\"]; })"
+        js_getUsbProductId :: SerialPortFilter -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbproductid SerialPortFilter.usbProductId specification>
+getUsbProductId :: (MonadDOM m) => SerialPortFilter -> m (Maybe Word)
+getUsbProductId self = liftDOM (((js_getUsbProductId (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbproductid SerialPortFilter.usbProductId specification>
+getUsbProductIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortFilter -> m Word
+getUsbProductIdUnsafe self = liftDOM ((((js_getUsbProductId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbproductid SerialPortFilter.usbProductId specification>
+getUsbProductIdUnchecked :: (MonadDOM m) => SerialPortFilter -> m Word
+getUsbProductIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsbProductId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bluetoothServiceClassId\"] = $2; })"
+        js_setBluetoothServiceClassId :: SerialPortFilter -> BluetoothServiceUUID -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-bluetoothserviceclassid SerialPortFilter.bluetoothServiceClassId specification>
+setBluetoothServiceClassId :: (MonadDOM m, IsBluetoothServiceUUID val) => SerialPortFilter -> val -> m ()
+setBluetoothServiceClassId self val = liftDOM (void ((js_setBluetoothServiceClassId (self) (Types.toBluetoothServiceUUID val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bluetoothServiceClassId\"]; })"
+        js_getBluetoothServiceClassId :: SerialPortFilter -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-bluetoothserviceclassid SerialPortFilter.bluetoothServiceClassId specification>
+getBluetoothServiceClassId :: (MonadDOM m) => SerialPortFilter -> m (Maybe BluetoothServiceUUID)
+getBluetoothServiceClassId self = liftDOM (((js_getBluetoothServiceClassId (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-bluetoothserviceclassid SerialPortFilter.bluetoothServiceClassId specification>
+getBluetoothServiceClassIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortFilter -> m BluetoothServiceUUID
+getBluetoothServiceClassIdUnsafe self = liftDOM ((((js_getBluetoothServiceClassId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-bluetoothserviceclassid SerialPortFilter.bluetoothServiceClassId specification>
+getBluetoothServiceClassIdUnchecked :: (MonadDOM m) => SerialPortFilter -> m BluetoothServiceUUID
+getBluetoothServiceClassIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getBluetoothServiceClassId (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SerialPortInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/SerialPortInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SerialPortInfo.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SerialPortInfo
+       (js_newSerialPortInfo, js_setUsbVendorId, js_getUsbVendorId, js_setUsbProductId, js_getUsbProductId, js_setBluetoothServiceClassId, js_getBluetoothServiceClassId, newSerialPortInfo, setUsbVendorId, getUsbVendorId, getUsbVendorIdUnsafe, getUsbVendorIdUnchecked, setUsbProductId, getUsbProductId, getUsbProductIdUnsafe, getUsbProductIdUnchecked, setBluetoothServiceClassId, getBluetoothServiceClassId, getBluetoothServiceClassIdUnsafe, getBluetoothServiceClassIdUnchecked, SerialPortInfo(..), gTypeSerialPortInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSerialPortInfo :: IO SerialPortInfo
+-- | <https://serial.spec.whatwg.org/#dictdef-serialportinfo SerialPortInfo specification>
+newSerialPortInfo :: (MonadDOM m) => m SerialPortInfo
+newSerialPortInfo = liftDOM ((js_newSerialPortInfo))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usbVendorId\"] = $2; })"
+        js_setUsbVendorId :: SerialPortInfo -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbvendorid SerialPortInfo.usbVendorId specification>
+setUsbVendorId :: (MonadDOM m) => SerialPortInfo -> Word -> m ()
+setUsbVendorId self val = liftDOM (void ((js_setUsbVendorId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usbVendorId\"]; })"
+        js_getUsbVendorId :: SerialPortInfo -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbvendorid SerialPortInfo.usbVendorId specification>
+getUsbVendorId :: (MonadDOM m) => SerialPortInfo -> m (Maybe Word)
+getUsbVendorId self = liftDOM (((js_getUsbVendorId (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbvendorid SerialPortInfo.usbVendorId specification>
+getUsbVendorIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortInfo -> m Word
+getUsbVendorIdUnsafe self = liftDOM ((((js_getUsbVendorId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbvendorid SerialPortInfo.usbVendorId specification>
+getUsbVendorIdUnchecked :: (MonadDOM m) => SerialPortInfo -> m Word
+getUsbVendorIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsbVendorId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usbProductId\"] = $2; })"
+        js_setUsbProductId :: SerialPortInfo -> Word -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbproductid SerialPortInfo.usbProductId specification>
+setUsbProductId :: (MonadDOM m) => SerialPortInfo -> Word -> m ()
+setUsbProductId self val = liftDOM (void ((js_setUsbProductId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usbProductId\"]; })"
+        js_getUsbProductId :: SerialPortInfo -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbproductid SerialPortInfo.usbProductId specification>
+getUsbProductId :: (MonadDOM m) => SerialPortInfo -> m (Maybe Word)
+getUsbProductId self = liftDOM (((js_getUsbProductId (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbproductid SerialPortInfo.usbProductId specification>
+getUsbProductIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortInfo -> m Word
+getUsbProductIdUnsafe self = liftDOM ((((js_getUsbProductId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbproductid SerialPortInfo.usbProductId specification>
+getUsbProductIdUnchecked :: (MonadDOM m) => SerialPortInfo -> m Word
+getUsbProductIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsbProductId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bluetoothServiceClassId\"] = $2; })"
+        js_setBluetoothServiceClassId :: SerialPortInfo -> BluetoothServiceUUID -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-bluetoothserviceclassid SerialPortInfo.bluetoothServiceClassId specification>
+setBluetoothServiceClassId :: (MonadDOM m, IsBluetoothServiceUUID val) => SerialPortInfo -> val -> m ()
+setBluetoothServiceClassId self val = liftDOM (void ((js_setBluetoothServiceClassId (self) (Types.toBluetoothServiceUUID val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bluetoothServiceClassId\"]; })"
+        js_getBluetoothServiceClassId :: SerialPortInfo -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-bluetoothserviceclassid SerialPortInfo.bluetoothServiceClassId specification>
+getBluetoothServiceClassId :: (MonadDOM m) => SerialPortInfo -> m (Maybe BluetoothServiceUUID)
+getBluetoothServiceClassId self = liftDOM (((js_getBluetoothServiceClassId (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-bluetoothserviceclassid SerialPortInfo.bluetoothServiceClassId specification>
+getBluetoothServiceClassIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortInfo -> m BluetoothServiceUUID
+getBluetoothServiceClassIdUnsafe self = liftDOM ((((js_getBluetoothServiceClassId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-bluetoothserviceclassid SerialPortInfo.bluetoothServiceClassId specification>
+getBluetoothServiceClassIdUnchecked :: (MonadDOM m) => SerialPortInfo -> m BluetoothServiceUUID
+getBluetoothServiceClassIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getBluetoothServiceClassId (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SerialPortRequestOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SerialPortRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SerialPortRequestOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SerialPortRequestOptions
+       (js_newSerialPortRequestOptions, js_setFilters, js_getFilters, js_setAllowedBluetoothServiceClassIds, js_getAllowedBluetoothServiceClassIds, newSerialPortRequestOptions, setFilters, getFilters, getFiltersUnsafe, getFiltersUnchecked, setAllowedBluetoothServiceClassIds, getAllowedBluetoothServiceClassIds, getAllowedBluetoothServiceClassIdsUnsafe, getAllowedBluetoothServiceClassIdsUnchecked, SerialPortRequestOptions(..), gTypeSerialPortRequestOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSerialPortRequestOptions :: IO SerialPortRequestOptions
+-- | <https://serial.spec.whatwg.org/#dictdef-serialportrequestoptions SerialPortRequestOptions specification>
+newSerialPortRequestOptions :: (MonadDOM m) => m SerialPortRequestOptions
+newSerialPortRequestOptions = liftDOM ((js_newSerialPortRequestOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"filters\"] = $2; })"
+        js_setFilters :: SerialPortRequestOptions -> JSVal -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-filters SerialPortRequestOptions.filters specification>
+setFilters :: (MonadDOM m) => SerialPortRequestOptions -> [SerialPortFilter] -> m ()
+setFilters self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFilters (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"filters\"]; })"
+        js_getFilters :: SerialPortRequestOptions -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-filters SerialPortRequestOptions.filters specification>
+getFilters :: (MonadDOM m) => SerialPortRequestOptions -> m (Maybe [SerialPortFilter])
+getFilters self = liftDOM (((js_getFilters (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-filters SerialPortRequestOptions.filters specification>
+getFiltersUnsafe :: (MonadDOM m, HasCallStack) => SerialPortRequestOptions -> m [SerialPortFilter]
+getFiltersUnsafe self = liftDOM ((((js_getFilters (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-filters SerialPortRequestOptions.filters specification>
+getFiltersUnchecked :: (MonadDOM m) => SerialPortRequestOptions -> m [SerialPortFilter]
+getFiltersUnchecked self = liftDOM (((js_getFilters (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"allowedBluetoothServiceClassIds\"] = $2; })"
+        js_setAllowedBluetoothServiceClassIds :: SerialPortRequestOptions -> JSVal -> IO ()
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-allowedbluetoothserviceclassids SerialPortRequestOptions.allowedBluetoothServiceClassIds specification>
+setAllowedBluetoothServiceClassIds :: (MonadDOM m, IsBluetoothServiceUUID val) => SerialPortRequestOptions -> [val] -> m ()
+setAllowedBluetoothServiceClassIds self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAllowedBluetoothServiceClassIds (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"allowedBluetoothServiceClassIds\"]; })"
+        js_getAllowedBluetoothServiceClassIds :: SerialPortRequestOptions -> IO JSVal
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-allowedbluetoothserviceclassids SerialPortRequestOptions.allowedBluetoothServiceClassIds specification>
+getAllowedBluetoothServiceClassIds :: (MonadDOM m) => SerialPortRequestOptions -> m (Maybe [BluetoothServiceUUID])
+getAllowedBluetoothServiceClassIds self = liftDOM (((js_getAllowedBluetoothServiceClassIds (self)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-allowedbluetoothserviceclassids SerialPortRequestOptions.allowedBluetoothServiceClassIds specification>
+getAllowedBluetoothServiceClassIdsUnsafe :: (MonadDOM m, HasCallStack) => SerialPortRequestOptions -> m [BluetoothServiceUUID]
+getAllowedBluetoothServiceClassIdsUnsafe self = liftDOM ((((js_getAllowedBluetoothServiceClassIds (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-allowedbluetoothserviceclassids SerialPortRequestOptions.allowedBluetoothServiceClassIds specification>
+getAllowedBluetoothServiceClassIdsUnchecked :: (MonadDOM m) => SerialPortRequestOptions -> m [BluetoothServiceUUID]
+getAllowedBluetoothServiceClassIdsUnchecked self = liftDOM (((js_getAllowedBluetoothServiceClassIds (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ServiceWorker.hs b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorker.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ServiceWorker
+       (js_postMessage, js_postMessageOptions, js_getScriptURL, js_getState, postMessage, postMessageOptions, getScriptURL, getState, statechange, ServiceWorker(..), gTypeServiceWorker)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessage :: ServiceWorker -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorker/postMessage MDN ServiceWorker.postMessage documentation>
+postMessage :: (MonadDOM m) => ServiceWorker -> JSVal -> [GObject] -> m ()
+postMessage self message transfer = liftDOM (void (((toJSVal transfer) >>= \a3' -> js_postMessage (self) (message) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessageOptions :: ServiceWorker -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorker/postMessage MDN ServiceWorker.postMessage documentation>
+postMessageOptions :: (MonadDOM m, IsStructuredSerializeOptions options) => ServiceWorker -> JSVal -> Maybe options -> m ()
+postMessageOptions self message options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postMessageOptions (self) (message) a3')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scriptURL\"]; })"
+        js_getScriptURL :: ServiceWorker -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorker/scriptURL MDN ServiceWorker.scriptURL documentation>
+getScriptURL :: (MonadDOM m, FromJSString result) => ServiceWorker -> m result
+getScriptURL self = liftDOM ((fromJSString <$> (js_getScriptURL (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: ServiceWorker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorker/state MDN ServiceWorker.state documentation>
+getState :: (MonadDOM m) => ServiceWorker -> m ServiceWorkerState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworker-onstatechange statechange event>
+statechange :: EventName ServiceWorker Event
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerContainer.hs b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerContainer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerContainer.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ServiceWorkerContainer
+       (js_getRegistration, js_getRegistrations, js_register, js_startMessages, js_getController, js_getReady, getRegistration, getRegistration_, getRegistrations, getRegistrations_, register, register_, startMessages, getController, getControllerUnsafe, getControllerUnchecked, getReady, controllerchange, message, messageerror, ServiceWorkerContainer(..), gTypeServiceWorkerContainer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getRegistration\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getRegistration :: ServiceWorkerContainer -> (Optional JSString) -> IO (JSVal, ServiceWorkerRegistrationOrUndefined)
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/getRegistration MDN ServiceWorkerContainer.getRegistration documentation>
+getRegistration :: (MonadDOM m, ToJSString clientURL) => ServiceWorkerContainer -> Maybe clientURL -> m ServiceWorkerRegistrationOrUndefined
+getRegistration self clientURL = liftDOM (((js_getRegistration (self) (toOptionalJSString clientURL)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/getRegistration MDN ServiceWorkerContainer.getRegistration documentation>
+getRegistration_ :: (MonadDOM m, ToJSString clientURL) => ServiceWorkerContainer -> Maybe clientURL -> m ()
+getRegistration_ self clientURL = liftDOM (void (((js_getRegistration (self) (toOptionalJSString clientURL)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getRegistrations\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getRegistrations :: ServiceWorkerContainer -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/getRegistrations MDN ServiceWorkerContainer.getRegistrations documentation>
+getRegistrations :: (MonadDOM m) => ServiceWorkerContainer -> m [ServiceWorkerRegistration]
+getRegistrations self = liftDOM ((((js_getRegistrations (self)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/getRegistrations MDN ServiceWorkerContainer.getRegistrations documentation>
+getRegistrations_ :: (MonadDOM m) => ServiceWorkerContainer -> m ()
+getRegistrations_ self = liftDOM (void (((js_getRegistrations (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"register\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_register :: ServiceWorkerContainer -> TrustedScriptURLOrString -> JSVal -> IO (JSVal, ServiceWorkerRegistration)
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/register MDN ServiceWorkerContainer.register documentation>
+register :: (MonadDOM m, IsTrustedScriptURLOrString scriptURL) => ServiceWorkerContainer -> scriptURL -> Maybe RegistrationOptions -> m ServiceWorkerRegistration
+register self scriptURL options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_register (self) (Types.toTrustedScriptURLOrString scriptURL) a3') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/register MDN ServiceWorkerContainer.register documentation>
+register_ :: (MonadDOM m, IsTrustedScriptURLOrString scriptURL) => ServiceWorkerContainer -> scriptURL -> Maybe RegistrationOptions -> m ()
+register_ self scriptURL options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_register (self) (Types.toTrustedScriptURLOrString scriptURL) a3') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"startMessages\"](); })"
+        js_startMessages :: ServiceWorkerContainer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/startMessages MDN ServiceWorkerContainer.startMessages documentation>
+startMessages :: (MonadDOM m) => ServiceWorkerContainer -> m ()
+startMessages self = liftDOM (void ((js_startMessages (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"controller\"]; })"
+        js_getController :: ServiceWorkerContainer -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/controller MDN ServiceWorkerContainer.controller documentation>
+getController :: (MonadDOM m) => ServiceWorkerContainer -> m (Maybe ServiceWorker)
+getController self = liftDOM (((js_getController (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/controller MDN ServiceWorkerContainer.controller documentation>
+getControllerUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerContainer -> m ServiceWorker
+getControllerUnsafe self = liftDOM ((((js_getController (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/controller MDN ServiceWorkerContainer.controller documentation>
+getControllerUnchecked :: (MonadDOM m) => ServiceWorkerContainer -> m ServiceWorker
+getControllerUnchecked self = liftDOM ((pFromJSVal <$> (js_getController (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: ServiceWorkerContainer -> IO (JSVal, ServiceWorkerRegistration)
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/ready MDN ServiceWorkerContainer.ready documentation>
+getReady :: (MonadDOM m) => ServiceWorkerContainer -> m ServiceWorkerRegistration
+getReady self = liftDOM (((js_getReady (self)) >>= checkPromiseResult))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkercontainer-oncontrollerchange controllerchange event>
+controllerchange :: EventName ServiceWorkerContainer Event
+controllerchange = unsafeEventName (toJSString "controllerchange")
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkercontainer-onmessage message event>
+message :: EventName ServiceWorkerContainer MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkercontainer-onmessageerror messageerror event>
+messageerror :: EventName ServiceWorkerContainer MessageEvent
+messageerror = unsafeEventName (toJSString "messageerror")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerGlobalScope.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ServiceWorkerGlobalScope
+       (js_skipWaiting, js_getClients, js_getRegistration, js_getServiceWorker, js_getCookieStore, skipWaiting, getClients, getRegistration, getServiceWorker, getCookieStore, install, activate, fetch, message, messageerror, cookiechange, notificationclick, notificationclose, push, pushsubscriptionchange, ServiceWorkerGlobalScope(..), gTypeServiceWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"skipWaiting\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_skipWaiting :: ServiceWorkerGlobalScope -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/skipWaiting MDN ServiceWorkerGlobalScope.skipWaiting documentation>
+skipWaiting :: (MonadDOM m) => ServiceWorkerGlobalScope -> m ()
+skipWaiting self = liftDOM (void (((js_skipWaiting (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clients\"]; })"
+        js_getClients :: ServiceWorkerGlobalScope -> IO Clients
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/clients MDN ServiceWorkerGlobalScope.clients documentation>
+getClients :: (MonadDOM m) => ServiceWorkerGlobalScope -> m Clients
+getClients self = liftDOM ((js_getClients (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"registration\"]; })"
+        js_getRegistration :: ServiceWorkerGlobalScope -> IO ServiceWorkerRegistration
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/registration MDN ServiceWorkerGlobalScope.registration documentation>
+getRegistration :: (MonadDOM m) => ServiceWorkerGlobalScope -> m ServiceWorkerRegistration
+getRegistration self = liftDOM ((js_getRegistration (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serviceWorker\"]; })"
+        js_getServiceWorker :: ServiceWorkerGlobalScope -> IO ServiceWorker
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/serviceWorker MDN ServiceWorkerGlobalScope.serviceWorker documentation>
+getServiceWorker :: (MonadDOM m) => ServiceWorkerGlobalScope -> m ServiceWorker
+getServiceWorker self = liftDOM ((js_getServiceWorker (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cookieStore\"]; })"
+        js_getCookieStore :: ServiceWorkerGlobalScope -> IO CookieStore
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/cookieStore MDN ServiceWorkerGlobalScope.cookieStore documentation>
+getCookieStore :: (MonadDOM m) => ServiceWorkerGlobalScope -> m CookieStore
+getCookieStore self = liftDOM ((js_getCookieStore (self)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkerglobalscope-oninstall install event>
+install :: EventName ServiceWorkerGlobalScope InstallEvent
+install = unsafeEventName (toJSString "install")
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkerglobalscope-onactivate activate event>
+activate :: EventName ServiceWorkerGlobalScope ExtendableEvent
+activate = unsafeEventName (toJSString "activate")
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkerglobalscope-onfetch fetch event>
+fetch :: EventName ServiceWorkerGlobalScope FetchEvent
+fetch = unsafeEventName (toJSString "fetch")
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkerglobalscope-onmessage message event>
+message :: EventName ServiceWorkerGlobalScope ExtendableMessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkerglobalscope-onmessageerror messageerror event>
+messageerror :: EventName ServiceWorkerGlobalScope ExtendableMessageEvent
+messageerror = unsafeEventName (toJSString "messageerror")
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-serviceworkerglobalscope-oncookiechange cookiechange event>
+cookiechange :: EventName ServiceWorkerGlobalScope ExtendableCookieChangeEvent
+cookiechange = unsafeEventName (toJSString "cookiechange")
+
+-- | <https://notifications.spec.whatwg.org/#dom-serviceworkerglobalscope-onnotificationclick notificationclick event>
+notificationclick :: EventName ServiceWorkerGlobalScope NotificationEvent
+notificationclick = unsafeEventName (toJSString "notificationclick")
+
+-- | <https://notifications.spec.whatwg.org/#dom-serviceworkerglobalscope-onnotificationclose notificationclose event>
+notificationclose :: EventName ServiceWorkerGlobalScope NotificationEvent
+notificationclose = unsafeEventName (toJSString "notificationclose")
+
+-- | <https://w3c.github.io/push-api/#dom-serviceworkerglobalscope-onpush push event>
+push :: EventName ServiceWorkerGlobalScope PushEvent
+push = unsafeEventName (toJSString "push")
+
+-- | <https://w3c.github.io/push-api/#dom-serviceworkerglobalscope-onpushsubscriptionchange pushsubscriptionchange event>
+pushsubscriptionchange :: EventName ServiceWorkerGlobalScope PushSubscriptionChangeEvent
+pushsubscriptionchange = unsafeEventName (toJSString "pushsubscriptionchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerRegistration.hs b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerRegistration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ServiceWorkerRegistration.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ServiceWorkerRegistration
+       (js_getNotifications, js_showNotification, js_unregister, js_update, js_getInstalling, js_getWaiting, js_getActive, js_getNavigationPreload, js_getScope, js_getUpdateViaCache, js_getCookies, getNotifications, getNotifications_, showNotification, unregister, unregister_, update, update_, getInstalling, getInstallingUnsafe, getInstallingUnchecked, getWaiting, getWaitingUnsafe, getWaitingUnchecked, getActive, getActiveUnsafe, getActiveUnchecked, getNavigationPreload, getScope, getUpdateViaCache, getCookies, updatefound, ServiceWorkerRegistration(..), gTypeServiceWorkerRegistration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"getNotifications\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getNotifications :: ServiceWorkerRegistration -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/getNotifications MDN ServiceWorkerRegistration.getNotifications documentation>
+getNotifications :: (MonadDOM m) => ServiceWorkerRegistration -> Maybe GetNotificationOptions -> m [Notification]
+getNotifications self filter = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal filter) >>= \a2' -> js_getNotifications (self) a2') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/getNotifications MDN ServiceWorkerRegistration.getNotifications documentation>
+getNotifications_ :: (MonadDOM m) => ServiceWorkerRegistration -> Maybe GetNotificationOptions -> m ()
+getNotifications_ self filter = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal filter) >>= \a2' -> js_getNotifications (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"showNotification\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_showNotification :: ServiceWorkerRegistration -> JSString -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/showNotification MDN ServiceWorkerRegistration.showNotification documentation>
+showNotification :: (MonadDOM m, ToJSString title) => ServiceWorkerRegistration -> title -> Maybe NotificationOptions -> m ()
+showNotification self title options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_showNotification (self) (toJSString title) a3') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"unregister\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_unregister :: ServiceWorkerRegistration -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/unregister MDN ServiceWorkerRegistration.unregister documentation>
+unregister :: (MonadDOM m) => ServiceWorkerRegistration -> m Bool
+unregister self = liftDOM (((js_unregister (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/unregister MDN ServiceWorkerRegistration.unregister documentation>
+unregister_ :: (MonadDOM m) => ServiceWorkerRegistration -> m ()
+unregister_ self = liftDOM (void (((js_unregister (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"update\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_update :: ServiceWorkerRegistration -> IO (JSVal, ServiceWorkerRegistration)
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/update MDN ServiceWorkerRegistration.update documentation>
+update :: (MonadDOM m) => ServiceWorkerRegistration -> m ServiceWorkerRegistration
+update self = liftDOM (((js_update (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/update MDN ServiceWorkerRegistration.update documentation>
+update_ :: (MonadDOM m) => ServiceWorkerRegistration -> m ()
+update_ self = liftDOM (void (((js_update (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"installing\"]; })"
+        js_getInstalling :: ServiceWorkerRegistration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/installing MDN ServiceWorkerRegistration.installing documentation>
+getInstalling :: (MonadDOM m) => ServiceWorkerRegistration -> m (Maybe ServiceWorker)
+getInstalling self = liftDOM (((js_getInstalling (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/installing MDN ServiceWorkerRegistration.installing documentation>
+getInstallingUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerRegistration -> m ServiceWorker
+getInstallingUnsafe self = liftDOM ((((js_getInstalling (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/installing MDN ServiceWorkerRegistration.installing documentation>
+getInstallingUnchecked :: (MonadDOM m) => ServiceWorkerRegistration -> m ServiceWorker
+getInstallingUnchecked self = liftDOM ((pFromJSVal <$> (js_getInstalling (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"waiting\"]; })"
+        js_getWaiting :: ServiceWorkerRegistration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/waiting MDN ServiceWorkerRegistration.waiting documentation>
+getWaiting :: (MonadDOM m) => ServiceWorkerRegistration -> m (Maybe ServiceWorker)
+getWaiting self = liftDOM (((js_getWaiting (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/waiting MDN ServiceWorkerRegistration.waiting documentation>
+getWaitingUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerRegistration -> m ServiceWorker
+getWaitingUnsafe self = liftDOM ((((js_getWaiting (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/waiting MDN ServiceWorkerRegistration.waiting documentation>
+getWaitingUnchecked :: (MonadDOM m) => ServiceWorkerRegistration -> m ServiceWorker
+getWaitingUnchecked self = liftDOM ((pFromJSVal <$> (js_getWaiting (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"active\"]; })"
+        js_getActive :: ServiceWorkerRegistration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/active MDN ServiceWorkerRegistration.active documentation>
+getActive :: (MonadDOM m) => ServiceWorkerRegistration -> m (Maybe ServiceWorker)
+getActive self = liftDOM (((js_getActive (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/active MDN ServiceWorkerRegistration.active documentation>
+getActiveUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerRegistration -> m ServiceWorker
+getActiveUnsafe self = liftDOM ((((js_getActive (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/active MDN ServiceWorkerRegistration.active documentation>
+getActiveUnchecked :: (MonadDOM m) => ServiceWorkerRegistration -> m ServiceWorker
+getActiveUnchecked self = liftDOM ((pFromJSVal <$> (js_getActive (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigationPreload\"]; })"
+        js_getNavigationPreload :: ServiceWorkerRegistration -> IO NavigationPreloadManager
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/navigationPreload MDN ServiceWorkerRegistration.navigationPreload documentation>
+getNavigationPreload :: (MonadDOM m) => ServiceWorkerRegistration -> m NavigationPreloadManager
+getNavigationPreload self = liftDOM ((js_getNavigationPreload (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scope\"]; })"
+        js_getScope :: ServiceWorkerRegistration -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/scope MDN ServiceWorkerRegistration.scope documentation>
+getScope :: (MonadDOM m, FromJSString result) => ServiceWorkerRegistration -> m result
+getScope self = liftDOM ((fromJSString <$> (js_getScope (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"updateViaCache\"]; })"
+        js_getUpdateViaCache :: ServiceWorkerRegistration -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/updateViaCache MDN ServiceWorkerRegistration.updateViaCache documentation>
+getUpdateViaCache :: (MonadDOM m) => ServiceWorkerRegistration -> m ServiceWorkerUpdateViaCache
+getUpdateViaCache self = liftDOM (((js_getUpdateViaCache (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cookies\"]; })"
+        js_getCookies :: ServiceWorkerRegistration -> IO CookieStoreManager
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/cookies MDN ServiceWorkerRegistration.cookies documentation>
+getCookies :: (MonadDOM m) => ServiceWorkerRegistration -> m CookieStoreManager
+getCookies self = liftDOM ((js_getCookies (self)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkerregistration-onupdatefound updatefound event>
+updatefound :: EventName ServiceWorkerRegistration Event
+updatefound = unsafeEventName (toJSString "updatefound")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SetHTMLOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SetHTMLOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SetHTMLOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SetHTMLOptions
+       (js_newSetHTMLOptions, js_setSanitizer, js_getSanitizer, newSetHTMLOptions, setSanitizer, getSanitizer, getSanitizerUnsafe, getSanitizerUnchecked, SetHTMLOptions(..), gTypeSetHTMLOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSetHTMLOptions :: IO SetHTMLOptions
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sethtmloptions SetHTMLOptions specification>
+newSetHTMLOptions :: (MonadDOM m) => m SetHTMLOptions
+newSetHTMLOptions = liftDOM ((js_newSetHTMLOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sanitizer\"] = $2; })"
+        js_setSanitizer :: SetHTMLOptions -> SanitizerOrSanitizerConfigOrSanitizerPresets -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmloptions-sanitizer SetHTMLOptions.sanitizer specification>
+setSanitizer :: (MonadDOM m, IsSanitizerOrSanitizerConfigOrSanitizerPresets val) => SetHTMLOptions -> val -> m ()
+setSanitizer self val = liftDOM (void ((js_setSanitizer (self) (Types.toSanitizerOrSanitizerConfigOrSanitizerPresets val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sanitizer\"]; })"
+        js_getSanitizer :: SetHTMLOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmloptions-sanitizer SetHTMLOptions.sanitizer specification>
+getSanitizer :: (MonadDOM m) => SetHTMLOptions -> m (Maybe SanitizerOrSanitizerConfigOrSanitizerPresets)
+getSanitizer self = liftDOM (((js_getSanitizer (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmloptions-sanitizer SetHTMLOptions.sanitizer specification>
+getSanitizerUnsafe :: (MonadDOM m, HasCallStack) => SetHTMLOptions -> m SanitizerOrSanitizerConfigOrSanitizerPresets
+getSanitizerUnsafe self = liftDOM ((((js_getSanitizer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmloptions-sanitizer SetHTMLOptions.sanitizer specification>
+getSanitizerUnchecked :: (MonadDOM m) => SetHTMLOptions -> m SanitizerOrSanitizerConfigOrSanitizerPresets
+getSanitizerUnchecked self = liftDOM ((pFromJSVal <$> (js_getSanitizer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SetHTMLUnsafeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SetHTMLUnsafeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SetHTMLUnsafeOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SetHTMLUnsafeOptions
+       (js_newSetHTMLUnsafeOptions, js_setSanitizer, js_getSanitizer, js_setRunScripts, js_getRunScripts, newSetHTMLUnsafeOptions, setSanitizer, getSanitizer, getSanitizerUnsafe, getSanitizerUnchecked, setRunScripts, getRunScripts, getRunScriptsUnsafe, getRunScriptsUnchecked, SetHTMLUnsafeOptions(..), gTypeSetHTMLUnsafeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSetHTMLUnsafeOptions :: IO SetHTMLUnsafeOptions
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sethtmlunsafeoptions SetHTMLUnsafeOptions specification>
+newSetHTMLUnsafeOptions :: (MonadDOM m) => m SetHTMLUnsafeOptions
+newSetHTMLUnsafeOptions = liftDOM ((js_newSetHTMLUnsafeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sanitizer\"] = $2; })"
+        js_setSanitizer :: SetHTMLUnsafeOptions -> SanitizerOrSanitizerConfigOrSanitizerPresets -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-sanitizer SetHTMLUnsafeOptions.sanitizer specification>
+setSanitizer :: (MonadDOM m, IsSanitizerOrSanitizerConfigOrSanitizerPresets val) => SetHTMLUnsafeOptions -> val -> m ()
+setSanitizer self val = liftDOM (void ((js_setSanitizer (self) (Types.toSanitizerOrSanitizerConfigOrSanitizerPresets val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sanitizer\"]; })"
+        js_getSanitizer :: SetHTMLUnsafeOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-sanitizer SetHTMLUnsafeOptions.sanitizer specification>
+getSanitizer :: (MonadDOM m) => SetHTMLUnsafeOptions -> m (Maybe SanitizerOrSanitizerConfigOrSanitizerPresets)
+getSanitizer self = liftDOM (((js_getSanitizer (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-sanitizer SetHTMLUnsafeOptions.sanitizer specification>
+getSanitizerUnsafe :: (MonadDOM m, HasCallStack) => SetHTMLUnsafeOptions -> m SanitizerOrSanitizerConfigOrSanitizerPresets
+getSanitizerUnsafe self = liftDOM ((((js_getSanitizer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-sanitizer SetHTMLUnsafeOptions.sanitizer specification>
+getSanitizerUnchecked :: (MonadDOM m) => SetHTMLUnsafeOptions -> m SanitizerOrSanitizerConfigOrSanitizerPresets
+getSanitizerUnchecked self = liftDOM ((pFromJSVal <$> (js_getSanitizer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"runScripts\"] = $2; })"
+        js_setRunScripts :: SetHTMLUnsafeOptions -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-runscripts SetHTMLUnsafeOptions.runScripts specification>
+setRunScripts :: (MonadDOM m) => SetHTMLUnsafeOptions -> Bool -> m ()
+setRunScripts self val = liftDOM (void ((js_setRunScripts (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"runScripts\"]; })"
+        js_getRunScripts :: SetHTMLUnsafeOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-runscripts SetHTMLUnsafeOptions.runScripts specification>
+getRunScripts :: (MonadDOM m) => SetHTMLUnsafeOptions -> m (Maybe Bool)
+getRunScripts self = liftDOM (((js_getRunScripts (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-runscripts SetHTMLUnsafeOptions.runScripts specification>
+getRunScriptsUnsafe :: (MonadDOM m, HasCallStack) => SetHTMLUnsafeOptions -> m Bool
+getRunScriptsUnsafe self = liftDOM ((((js_getRunScripts (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-sethtmlunsafeoptions-runscripts SetHTMLUnsafeOptions.runScripts specification>
+getRunScriptsUnchecked :: (MonadDOM m) => SetHTMLUnsafeOptions -> m Bool
+getRunScriptsUnchecked self = liftDOM ((pFromJSVal <$> (js_getRunScripts (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs b/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
@@ -1,60 +1,87 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ShadowRoot
-       (js_getMode, getMode, js_getHost, getHost, js_setInnerHTML,
-        setInnerHTML, js_getInnerHTML, getInnerHTML, ShadowRoot(..),
-        gTypeShadowRoot)
+       (js_getHTML, js_setHTML, js_setHTMLUnsafe, js_getMode, js_getDelegatesFocus, js_getSerializable, js_getSlotAssignment, js_getClonable, js_getHost, js_setInnerHTML, js_getInnerHTML, getHTML, getHTML_, setHTML, setHTMLUnsafe, getMode, getDelegatesFocus, getSerializable, getSlotAssignment, getClonable, getHost, setInnerHTML, getInnerHTML, ShadowRoot(..), gTypeShadowRoot)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
-        ShadowRoot -> IO JSVal
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.mode Mozilla ShadowRoot.mode documentation> 
-getMode :: (MonadIO m) => ShadowRoot -> m ShadowRootMode
-getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
-        ShadowRoot -> IO Element
+foreign import javascript safe "(($1, $2) => { return $1[\"getHTML\"]($2); })"
+        js_getHTML :: ShadowRoot -> JSVal -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/getHTML MDN ShadowRoot.getHTML documentation>
+getHTML :: (MonadDOM m, FromJSString result) => ShadowRoot -> Maybe GetHTMLOptions -> m result
+getHTML self options = liftDOM ((fromJSString <$> ((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getHTML (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.host Mozilla ShadowRoot.host documentation> 
-getHost :: (MonadIO m) => ShadowRoot -> m Element
-getHost self = liftIO (js_getHost self)
- 
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/getHTML MDN ShadowRoot.getHTML documentation>
+getHTML_ :: (MonadDOM m) => ShadowRoot -> Maybe GetHTMLOptions -> m ()
+getHTML_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_getHTML (self) a2')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setHTML\"]($2, $3); })"
+        js_setHTML :: ShadowRoot -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/setHTML MDN ShadowRoot.setHTML documentation>
+setHTML :: (MonadDOM m, ToJSString html) => ShadowRoot -> html -> Maybe SetHTMLOptions -> m ()
+setHTML self html options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_setHTML (self) (toJSString html) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setHTMLUnsafe\"]($2, $3); })"
+        js_setHTMLUnsafe :: ShadowRoot -> TrustedHTMLOrString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/setHTMLUnsafe MDN ShadowRoot.setHTMLUnsafe documentation>
+setHTMLUnsafe :: (MonadDOM m, IsTrustedHTMLOrString html, IsSetHTMLUnsafeOptionsOrTrustedHTMLParserOptions options) => ShadowRoot -> html -> Maybe options -> m ()
+setHTMLUnsafe self html options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_setHTMLUnsafe (self) (Types.toTrustedHTMLOrString html) a3')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: ShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/mode MDN ShadowRoot.mode documentation>
+getMode :: (MonadDOM m) => ShadowRoot -> m ShadowRootMode
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"delegatesFocus\"]; })"
+        js_getDelegatesFocus :: ShadowRoot -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/delegatesFocus MDN ShadowRoot.delegatesFocus documentation>
+getDelegatesFocus :: (MonadDOM m) => ShadowRoot -> m Bool
+getDelegatesFocus self = liftDOM ((js_getDelegatesFocus (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serializable\"]; })"
+        js_getSerializable :: ShadowRoot -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/serializable MDN ShadowRoot.serializable documentation>
+getSerializable :: (MonadDOM m) => ShadowRoot -> m Bool
+getSerializable self = liftDOM ((js_getSerializable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"slotAssignment\"]; })"
+        js_getSlotAssignment :: ShadowRoot -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/slotAssignment MDN ShadowRoot.slotAssignment documentation>
+getSlotAssignment :: (MonadDOM m) => ShadowRoot -> m SlotAssignmentMode
+getSlotAssignment self = liftDOM (((js_getSlotAssignment (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clonable\"]; })"
+        js_getClonable :: ShadowRoot -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/clonable MDN ShadowRoot.clonable documentation>
+getClonable :: (MonadDOM m) => ShadowRoot -> m Bool
+getClonable self = liftDOM ((js_getClonable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })"
+        js_getHost :: ShadowRoot -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/host MDN ShadowRoot.host documentation>
+getHost :: (MonadDOM m) => ShadowRoot -> m Element
+getHost self = liftDOM ((js_getHost (self)))
+
 foreign import javascript safe "(($1, $2) => { $1[\"innerHTML\"] = $2; })"
-        js_setInnerHTML :: ShadowRoot -> JSString -> IO ()
+        js_setInnerHTML :: ShadowRoot -> TrustedHTMLOrString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/innerHTML MDN ShadowRoot.innerHTML documentation>
+setInnerHTML :: (MonadDOM m, IsTrustedHTMLOrString val) => ShadowRoot -> val -> m ()
+setInnerHTML self val = liftDOM (void ((js_setInnerHTML (self) (Types.toTrustedHTMLOrString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.innerHTML Mozilla ShadowRoot.innerHTML documentation> 
-setInnerHTML ::
-             (MonadIO m, ToJSString val) => ShadowRoot -> val -> m ()
-setInnerHTML self val
-  = liftIO (js_setInnerHTML self (toJSString val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"innerHTML\"]; })"
-        js_getInnerHTML :: ShadowRoot -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.innerHTML Mozilla ShadowRoot.innerHTML documentation> 
-getInnerHTML ::
-             (MonadIO m, FromJSString result) => ShadowRoot -> m result
-getInnerHTML self
-  = liftIO (fromJSString <$> (js_getInnerHTML self))
+        js_getInnerHTML :: ShadowRoot -> IO TrustedHTMLOrString
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/innerHTML MDN ShadowRoot.innerHTML documentation>
+getInnerHTML :: (MonadDOM m) => ShadowRoot -> m TrustedHTMLOrString
+getInnerHTML self = liftDOM ((js_getInnerHTML (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ShadowRootInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ShadowRootInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ShadowRootInit.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ShadowRootInit
+       (js_newShadowRootInit, js_setMode, js_getMode, js_setDelegatesFocus, js_getDelegatesFocus, js_setSerializable, js_getSerializable, js_setSlotAssignment, js_getSlotAssignment, js_setClonable, js_getClonable, js_setCustomElementRegistry, js_getCustomElementRegistry, newShadowRootInit, setMode, getMode, setDelegatesFocus, getDelegatesFocus, getDelegatesFocusUnsafe, getDelegatesFocusUnchecked, setSerializable, getSerializable, getSerializableUnsafe, getSerializableUnchecked, setSlotAssignment, getSlotAssignment, getSlotAssignmentUnsafe, getSlotAssignmentUnchecked, setClonable, getClonable, getClonableUnsafe, getClonableUnchecked, setCustomElementRegistry, getCustomElementRegistry, getCustomElementRegistryUnsafe, getCustomElementRegistryUnchecked, ShadowRootInit(..), gTypeShadowRootInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"mode\": $1}); })"
+        js_newShadowRootInit :: JSVal -> IO ShadowRootInit
+-- | <https://dom.spec.whatwg.org/#dictdef-shadowrootinit ShadowRootInit specification>
+newShadowRootInit :: (MonadDOM m) => ShadowRootMode -> m ShadowRootInit
+newShadowRootInit mode = liftDOM (((toJSVal mode) >>= \a1' -> js_newShadowRootInit a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: ShadowRootInit -> JSVal -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-mode ShadowRootInit.mode specification>
+setMode :: (MonadDOM m) => ShadowRootInit -> ShadowRootMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: ShadowRootInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-mode ShadowRootInit.mode specification>
+getMode :: (MonadDOM m) => ShadowRootInit -> m ShadowRootMode
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"delegatesFocus\"] = $2; })"
+        js_setDelegatesFocus :: ShadowRootInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-delegatesfocus ShadowRootInit.delegatesFocus specification>
+setDelegatesFocus :: (MonadDOM m) => ShadowRootInit -> Bool -> m ()
+setDelegatesFocus self val = liftDOM (void ((js_setDelegatesFocus (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"delegatesFocus\"]; })"
+        js_getDelegatesFocus :: ShadowRootInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-delegatesfocus ShadowRootInit.delegatesFocus specification>
+getDelegatesFocus :: (MonadDOM m) => ShadowRootInit -> m (Maybe Bool)
+getDelegatesFocus self = liftDOM (((js_getDelegatesFocus (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-delegatesfocus ShadowRootInit.delegatesFocus specification>
+getDelegatesFocusUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m Bool
+getDelegatesFocusUnsafe self = liftDOM ((((js_getDelegatesFocus (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-delegatesfocus ShadowRootInit.delegatesFocus specification>
+getDelegatesFocusUnchecked :: (MonadDOM m) => ShadowRootInit -> m Bool
+getDelegatesFocusUnchecked self = liftDOM ((pFromJSVal <$> (js_getDelegatesFocus (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"serializable\"] = $2; })"
+        js_setSerializable :: ShadowRootInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-serializable ShadowRootInit.serializable specification>
+setSerializable :: (MonadDOM m) => ShadowRootInit -> Bool -> m ()
+setSerializable self val = liftDOM (void ((js_setSerializable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serializable\"]; })"
+        js_getSerializable :: ShadowRootInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-serializable ShadowRootInit.serializable specification>
+getSerializable :: (MonadDOM m) => ShadowRootInit -> m (Maybe Bool)
+getSerializable self = liftDOM (((js_getSerializable (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-serializable ShadowRootInit.serializable specification>
+getSerializableUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m Bool
+getSerializableUnsafe self = liftDOM ((((js_getSerializable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-serializable ShadowRootInit.serializable specification>
+getSerializableUnchecked :: (MonadDOM m) => ShadowRootInit -> m Bool
+getSerializableUnchecked self = liftDOM ((pFromJSVal <$> (js_getSerializable (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"slotAssignment\"] = $2; })"
+        js_setSlotAssignment :: ShadowRootInit -> JSVal -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-slotassignment ShadowRootInit.slotAssignment specification>
+setSlotAssignment :: (MonadDOM m) => ShadowRootInit -> SlotAssignmentMode -> m ()
+setSlotAssignment self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSlotAssignment (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"slotAssignment\"]; })"
+        js_getSlotAssignment :: ShadowRootInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-slotassignment ShadowRootInit.slotAssignment specification>
+getSlotAssignment :: (MonadDOM m) => ShadowRootInit -> m (Maybe SlotAssignmentMode)
+getSlotAssignment self = liftDOM (((js_getSlotAssignment (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-slotassignment ShadowRootInit.slotAssignment specification>
+getSlotAssignmentUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m SlotAssignmentMode
+getSlotAssignmentUnsafe self = liftDOM ((((js_getSlotAssignment (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-slotassignment ShadowRootInit.slotAssignment specification>
+getSlotAssignmentUnchecked :: (MonadDOM m) => ShadowRootInit -> m SlotAssignmentMode
+getSlotAssignmentUnchecked self = liftDOM ((pFromJSVal <$> (js_getSlotAssignment (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clonable\"] = $2; })"
+        js_setClonable :: ShadowRootInit -> Bool -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-clonable ShadowRootInit.clonable specification>
+setClonable :: (MonadDOM m) => ShadowRootInit -> Bool -> m ()
+setClonable self val = liftDOM (void ((js_setClonable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clonable\"]; })"
+        js_getClonable :: ShadowRootInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-clonable ShadowRootInit.clonable specification>
+getClonable :: (MonadDOM m) => ShadowRootInit -> m (Maybe Bool)
+getClonable self = liftDOM (((js_getClonable (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-clonable ShadowRootInit.clonable specification>
+getClonableUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m Bool
+getClonableUnsafe self = liftDOM ((((js_getClonable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-clonable ShadowRootInit.clonable specification>
+getClonableUnchecked :: (MonadDOM m) => ShadowRootInit -> m Bool
+getClonableUnchecked self = liftDOM ((pFromJSVal <$> (js_getClonable (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"customElementRegistry\"] = $2; })"
+        js_setCustomElementRegistry :: ShadowRootInit -> JSVal -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-customelementregistry ShadowRootInit.customElementRegistry specification>
+setCustomElementRegistry :: (MonadDOM m) => ShadowRootInit -> Maybe CustomElementRegistry -> m ()
+setCustomElementRegistry self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCustomElementRegistry (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"customElementRegistry\"]; })"
+        js_getCustomElementRegistry :: ShadowRootInit -> IO JSVal
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-customelementregistry ShadowRootInit.customElementRegistry specification>
+getCustomElementRegistry :: (MonadDOM m) => ShadowRootInit -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((js_getCustomElementRegistry (self)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-customelementregistry ShadowRootInit.customElementRegistry specification>
+getCustomElementRegistryUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((js_getCustomElementRegistry (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-customelementregistry ShadowRootInit.customElementRegistry specification>
+getCustomElementRegistryUnchecked :: (MonadDOM m) => ShadowRootInit -> m CustomElementRegistry
+getCustomElementRegistryUnchecked self = liftDOM ((pFromJSVal <$> (js_getCustomElementRegistry (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ShareData.hs b/src/GHCJS/DOM/JSFFI/Generated/ShareData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ShareData.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-share (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ShareData
+       (js_newShareData, js_setFiles, js_getFiles, js_setTitle, js_getTitle, js_setText, js_getText, js_setUrl, js_getUrl, newShareData, setFiles, getFiles, getFilesUnsafe, getFilesUnchecked, setTitle, getTitle, getTitleUnsafe, getTitleUnchecked, setText, getText, getTextUnsafe, getTextUnchecked, setUrl, getUrl, getUrlUnsafe, getUrlUnchecked, ShareData(..), gTypeShareData)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newShareData :: IO ShareData
+-- | <https://w3c.github.io/web-share/#dom-sharedata ShareData specification>
+newShareData :: (MonadDOM m) => m ShareData
+newShareData = liftDOM ((js_newShareData))
+
+foreign import javascript safe "(($1, $2) => { $1[\"files\"] = $2; })"
+        js_setFiles :: ShareData -> JSVal -> IO ()
+-- | <https://w3c.github.io/web-share/#dom-sharedata-files ShareData.files specification>
+setFiles :: (MonadDOM m) => ShareData -> [File] -> m ()
+setFiles self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFiles (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"files\"]; })"
+        js_getFiles :: ShareData -> IO JSVal
+-- | <https://w3c.github.io/web-share/#dom-sharedata-files ShareData.files specification>
+getFiles :: (MonadDOM m) => ShareData -> m (Maybe [File])
+getFiles self = liftDOM (((js_getFiles (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-files ShareData.files specification>
+getFilesUnsafe :: (MonadDOM m, HasCallStack) => ShareData -> m [File]
+getFilesUnsafe self = liftDOM ((((js_getFiles (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-files ShareData.files specification>
+getFilesUnchecked :: (MonadDOM m) => ShareData -> m [File]
+getFilesUnchecked self = liftDOM (((js_getFiles (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"title\"] = $2; })"
+        js_setTitle :: ShareData -> JSString -> IO ()
+-- | <https://w3c.github.io/web-share/#dom-sharedata-title ShareData.title specification>
+setTitle :: (MonadDOM m, ToJSString val) => ShareData -> val -> m ()
+setTitle self val = liftDOM (void ((js_setTitle (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: ShareData -> IO JSVal
+-- | <https://w3c.github.io/web-share/#dom-sharedata-title ShareData.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => ShareData -> m (Maybe result)
+getTitle self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTitle (self))))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-title ShareData.title specification>
+getTitleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ShareData -> m result
+getTitleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTitle (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-title ShareData.title specification>
+getTitleUnchecked :: (MonadDOM m, FromJSString result) => ShareData -> m result
+getTitleUnchecked self = liftDOM ((pFromJSVal <$> (js_getTitle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: ShareData -> JSString -> IO ()
+-- | <https://w3c.github.io/web-share/#dom-sharedata-text ShareData.text specification>
+setText :: (MonadDOM m, ToJSString val) => ShareData -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: ShareData -> IO JSVal
+-- | <https://w3c.github.io/web-share/#dom-sharedata-text ShareData.text specification>
+getText :: (MonadDOM m, FromJSString result) => ShareData -> m (Maybe result)
+getText self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getText (self))))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-text ShareData.text specification>
+getTextUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ShareData -> m result
+getTextUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getText (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-text ShareData.text specification>
+getTextUnchecked :: (MonadDOM m, FromJSString result) => ShareData -> m result
+getTextUnchecked self = liftDOM ((pFromJSVal <$> (js_getText (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: ShareData -> JSString -> IO ()
+-- | <https://w3c.github.io/web-share/#dom-sharedata-url ShareData.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => ShareData -> val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: ShareData -> IO JSVal
+-- | <https://w3c.github.io/web-share/#dom-sharedata-url ShareData.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => ShareData -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-url ShareData.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ShareData -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-url ShareData.url specification>
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => ShareData -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SharedWorker.hs b/src/GHCJS/DOM/JSFFI/Generated/SharedWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SharedWorker.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SharedWorker
+       (js_newSharedWorker, js_getPort, newSharedWorker, getPort, SharedWorker(..), gTypeSharedWorker)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SharedWorker\"]($1, $2); })"
+        js_newSharedWorker :: TrustedScriptURLOrString -> JSVal -> IO SharedWorker
+-- | <https://developer.mozilla.org/docs/Web/API/SharedWorker/SharedWorker MDN SharedWorker. documentation>
+newSharedWorker :: (MonadDOM m, IsTrustedScriptURLOrString scriptURL, IsStringOrSharedWorkerOptions options) => scriptURL -> Maybe options -> m SharedWorker
+newSharedWorker scriptURL options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newSharedWorker (Types.toTrustedScriptURLOrString scriptURL) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: SharedWorker -> IO MessagePort
+-- | <https://developer.mozilla.org/docs/Web/API/SharedWorker/port MDN SharedWorker.port documentation>
+getPort :: (MonadDOM m) => SharedWorker -> m MessagePort
+getPort self = liftDOM ((js_getPort (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SharedWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/SharedWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SharedWorkerGlobalScope.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SharedWorkerGlobalScope
+       (js_close, js_getName, close, getName, connect, SharedWorkerGlobalScope(..), gTypeSharedWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: SharedWorkerGlobalScope -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SharedWorkerGlobalScope/close MDN SharedWorkerGlobalScope.close documentation>
+close :: (MonadDOM m) => SharedWorkerGlobalScope -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: SharedWorkerGlobalScope -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SharedWorkerGlobalScope/name MDN SharedWorkerGlobalScope.name documentation>
+getName :: (MonadDOM m, FromJSString result) => SharedWorkerGlobalScope -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-sharedworkerglobalscope-onconnect connect event>
+connect :: EventName SharedWorkerGlobalScope MessageEvent
+connect = unsafeEventName (toJSString "connect")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SharedWorkerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SharedWorkerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SharedWorkerOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SharedWorkerOptions
+       (js_newSharedWorkerOptions, js_setExtendedLifetime, js_getExtendedLifetime, js_setSameSiteCookies, js_getSameSiteCookies, newSharedWorkerOptions, setExtendedLifetime, getExtendedLifetime, getExtendedLifetimeUnsafe, getExtendedLifetimeUnchecked, setSameSiteCookies, getSameSiteCookies, getSameSiteCookiesUnsafe, getSameSiteCookiesUnchecked, SharedWorkerOptions(..), gTypeSharedWorkerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSharedWorkerOptions :: IO SharedWorkerOptions
+-- | <https://html.spec.whatwg.org/multipage/workers.html#sharedworkeroptions SharedWorkerOptions specification>
+newSharedWorkerOptions :: (MonadDOM m) => m SharedWorkerOptions
+newSharedWorkerOptions = liftDOM ((js_newSharedWorkerOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"extendedLifetime\"] = $2; })"
+        js_setExtendedLifetime :: SharedWorkerOptions -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-sharedworkeroptions-extendedlifetime SharedWorkerOptions.extendedLifetime specification>
+setExtendedLifetime :: (MonadDOM m) => SharedWorkerOptions -> Bool -> m ()
+setExtendedLifetime self val = liftDOM (void ((js_setExtendedLifetime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"extendedLifetime\"]; })"
+        js_getExtendedLifetime :: SharedWorkerOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-sharedworkeroptions-extendedlifetime SharedWorkerOptions.extendedLifetime specification>
+getExtendedLifetime :: (MonadDOM m) => SharedWorkerOptions -> m (Maybe Bool)
+getExtendedLifetime self = liftDOM (((js_getExtendedLifetime (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-sharedworkeroptions-extendedlifetime SharedWorkerOptions.extendedLifetime specification>
+getExtendedLifetimeUnsafe :: (MonadDOM m, HasCallStack) => SharedWorkerOptions -> m Bool
+getExtendedLifetimeUnsafe self = liftDOM ((((js_getExtendedLifetime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-sharedworkeroptions-extendedlifetime SharedWorkerOptions.extendedLifetime specification>
+getExtendedLifetimeUnchecked :: (MonadDOM m) => SharedWorkerOptions -> m Bool
+getExtendedLifetimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getExtendedLifetime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sameSiteCookies\"] = $2; })"
+        js_setSameSiteCookies :: SharedWorkerOptions -> JSVal -> IO ()
+-- | <https://privacycg.github.io/saa-non-cookie-storage/#dom-sharedworkeroptions-samesitecookies SharedWorkerOptions.sameSiteCookies specification>
+setSameSiteCookies :: (MonadDOM m) => SharedWorkerOptions -> SameSiteCookiesType -> m ()
+setSameSiteCookies self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSameSiteCookies (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sameSiteCookies\"]; })"
+        js_getSameSiteCookies :: SharedWorkerOptions -> IO JSVal
+-- | <https://privacycg.github.io/saa-non-cookie-storage/#dom-sharedworkeroptions-samesitecookies SharedWorkerOptions.sameSiteCookies specification>
+getSameSiteCookies :: (MonadDOM m) => SharedWorkerOptions -> m (Maybe SameSiteCookiesType)
+getSameSiteCookies self = liftDOM (((js_getSameSiteCookies (self)) >>= fromJSValUnchecked))
+
+-- | <https://privacycg.github.io/saa-non-cookie-storage/#dom-sharedworkeroptions-samesitecookies SharedWorkerOptions.sameSiteCookies specification>
+getSameSiteCookiesUnsafe :: (MonadDOM m, HasCallStack) => SharedWorkerOptions -> m SameSiteCookiesType
+getSameSiteCookiesUnsafe self = liftDOM ((((js_getSameSiteCookies (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://privacycg.github.io/saa-non-cookie-storage/#dom-sharedworkeroptions-samesitecookies SharedWorkerOptions.sameSiteCookies specification>
+getSameSiteCookiesUnchecked :: (MonadDOM m) => SharedWorkerOptions -> m SameSiteCookiesType
+getSameSiteCookiesUnchecked self = liftDOM ((pFromJSVal <$> (js_getSameSiteCookies (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ShowPopoverOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ShowPopoverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ShowPopoverOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ShowPopoverOptions
+       (js_newShowPopoverOptions, js_setSource, js_getSource, newShowPopoverOptions, setSource, getSource, getSourceUnsafe, getSourceUnchecked, ShowPopoverOptions(..), gTypeShowPopoverOptions, IsShowPopoverOptions, toShowPopoverOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newShowPopoverOptions :: IO ShowPopoverOptions
+-- | <https://html.spec.whatwg.org/multipage/dom.html#showpopoveroptions ShowPopoverOptions specification>
+newShowPopoverOptions :: (MonadDOM m) => m ShowPopoverOptions
+newShowPopoverOptions = liftDOM ((js_newShowPopoverOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: ShowPopoverOptions -> HTMLElement -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-showpopoveroptions-source ShowPopoverOptions.source specification>
+setSource :: (MonadDOM m, IsShowPopoverOptions self, IsHTMLElement val) => self -> val -> m ()
+setSource self val = liftDOM (void ((js_setSource ((Types.toShowPopoverOptions self)) (Types.toHTMLElement val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: ShowPopoverOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-showpopoveroptions-source ShowPopoverOptions.source specification>
+getSource :: (MonadDOM m, IsShowPopoverOptions self) => self -> m (Maybe HTMLElement)
+getSource self = liftDOM (((js_getSource ((Types.toShowPopoverOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-showpopoveroptions-source ShowPopoverOptions.source specification>
+getSourceUnsafe :: (MonadDOM m, IsShowPopoverOptions self, HasCallStack) => self -> m HTMLElement
+getSourceUnsafe self = liftDOM ((((js_getSource ((Types.toShowPopoverOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-showpopoveroptions-source ShowPopoverOptions.source specification>
+getSourceUnchecked :: (MonadDOM m, IsShowPopoverOptions self) => self -> m HTMLElement
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource ((Types.toShowPopoverOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.SiteBoundCredential
-       (js_getName, getName, js_getIconURL, getIconURL,
-        SiteBoundCredential(..), gTypeSiteBoundCredential,
-        IsSiteBoundCredential, toSiteBoundCredential)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        SiteBoundCredential -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential.name Mozilla SiteBoundCredential.name documentation> 
-getName ::
-        (MonadIO m, IsSiteBoundCredential self, FromJSString result) =>
-          self -> m result
-getName self
-  = liftIO
-      (fromJSString <$> (js_getName (toSiteBoundCredential self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"iconURL\"]; })" js_getIconURL ::
-        SiteBoundCredential -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential.iconURL Mozilla SiteBoundCredential.iconURL documentation> 
-getIconURL ::
-           (MonadIO m, IsSiteBoundCredential self, FromJSString result) =>
-             self -> m result
-getIconURL self
-  = liftIO
-      (fromJSString <$> (js_getIconURL (toSiteBoundCredential self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs b/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Slotable
-       (js_getAssignedSlot, getAssignedSlot, getAssignedSlotUnsafe,
-        getAssignedSlotUnchecked, Slotable(..), gTypeSlotable, IsSlotable,
-        toSlotable)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"assignedSlot\"]; })"
-        js_getAssignedSlot :: Slotable -> IO (Nullable HTMLSlotElement)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
-getAssignedSlot ::
-                (MonadIO m, IsSlotable self) => self -> m (Maybe HTMLSlotElement)
-getAssignedSlot self
-  = liftIO
-      (nullableToMaybe <$> (js_getAssignedSlot (toSlotable self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
-getAssignedSlotUnsafe ::
-                      (MonadIO m, IsSlotable self, HasCallStack) =>
-                        self -> m HTMLSlotElement
-getAssignedSlotUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getAssignedSlot (toSlotable self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
-getAssignedSlotUnchecked ::
-                         (MonadIO m, IsSlotable self) => self -> m HTMLSlotElement
-getAssignedSlotUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getAssignedSlot (toSlotable self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Slottable.hs b/src/GHCJS/DOM/JSFFI/Generated/Slottable.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Slottable.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Slottable
+       (js_getAssignedSlot, getAssignedSlot, getAssignedSlotUnsafe, getAssignedSlotUnchecked, Slottable(..), gTypeSlottable, IsSlottable, toSlottable)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"assignedSlot\"]; })"
+        js_getAssignedSlot :: Slottable -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Element/assignedSlot MDN Slottable.assignedSlot documentation>
+getAssignedSlot :: (MonadDOM m, IsSlottable self) => self -> m (Maybe HTMLSlotElement)
+getAssignedSlot self = liftDOM (((js_getAssignedSlot ((Types.toSlottable self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/assignedSlot MDN Slottable.assignedSlot documentation>
+getAssignedSlotUnsafe :: (MonadDOM m, IsSlottable self, HasCallStack) => self -> m HTMLSlotElement
+getAssignedSlotUnsafe self = liftDOM ((((js_getAssignedSlot ((Types.toSlottable self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/assignedSlot MDN Slottable.assignedSlot documentation>
+getAssignedSlotUnchecked :: (MonadDOM m, IsSlottable self) => self -> m HTMLSlotElement
+getAssignedSlotUnchecked self = liftDOM ((pFromJSVal <$> (js_getAssignedSlot ((Types.toSlottable self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
@@ -1,174 +1,139 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SourceBuffer
-       (js_appendBuffer, appendBuffer, js_abort, abort, js_remove, remove,
-        js_setMode, setMode, js_getMode, getMode, js_getUpdating,
-        getUpdating, js_getBuffered, getBuffered, js_setTimestampOffset,
-        setTimestampOffset, js_getTimestampOffset, getTimestampOffset,
-        js_getAudioTracks, getAudioTracks, js_getVideoTracks,
-        getVideoTracks, js_getTextTracks, getTextTracks,
-        js_setAppendWindowStart, setAppendWindowStart,
-        js_getAppendWindowStart, getAppendWindowStart,
-        js_setAppendWindowEnd, setAppendWindowEnd, js_getAppendWindowEnd,
-        getAppendWindowEnd, updatestart, update, updateend, error,
-        abortEvent, SourceBuffer(..), gTypeSourceBuffer)
+       (js_abort, js_appendBuffer, js_changeType, js_remove, js_setMode, js_getMode, js_getUpdating, js_getBuffered, js_setTimestampOffset, js_getTimestampOffset, js_getAudioTracks, js_getVideoTracks, js_getTextTracks, js_setAppendWindowStart, js_getAppendWindowStart, js_setAppendWindowEnd, js_getAppendWindowEnd, abort, appendBuffer, changeType, remove, setMode, getMode, getUpdating, getBuffered, setTimestampOffset, getTimestampOffset, getAudioTracks, getVideoTracks, getTextTracks, setAppendWindowStart, getAppendWindowStart, setAppendWindowEnd, getAppendWindowEnd, updatestart, update, updateend, error, abortEvent, SourceBuffer(..), gTypeSourceBuffer)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })"
+        js_abort :: SourceBuffer -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/abort MDN SourceBuffer.abort documentation>
+abort :: (MonadDOM m) => SourceBuffer -> m ()
+abort self = liftDOM (void ((js_abort (self))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"appendBuffer\"]($2); })"
         js_appendBuffer :: SourceBuffer -> BufferSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendBuffer MDN SourceBuffer.appendBuffer documentation>
+appendBuffer :: (MonadDOM m, IsBufferSource data') => SourceBuffer -> data' -> m ()
+appendBuffer self data' = liftDOM (void ((js_appendBuffer (self) (Types.toBufferSource data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
-appendBuffer ::
-             (MonadIO m, IsBufferSource data') => SourceBuffer -> data' -> m ()
-appendBuffer self data'
-  = liftIO (js_appendBuffer self (toBufferSource data'))
- 
-foreign import javascript safe "(($1) => { return $1[\"abort\"](); })" js_abort ::
-        SourceBuffer -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"changeType\"]($2); })"
+        js_changeType :: SourceBuffer -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/changeType MDN SourceBuffer.changeType documentation>
+changeType :: (MonadDOM m, ToJSString type') => SourceBuffer -> type' -> m ()
+changeType self type' = liftDOM (void ((js_changeType (self) (toJSString type'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.abort Mozilla SourceBuffer.abort documentation> 
-abort :: (MonadIO m) => SourceBuffer -> m ()
-abort self = liftIO (js_abort self)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"remove\"]($2, $3); })" js_remove
-        :: SourceBuffer -> Double -> Double -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"remove\"]($2, $3); })"
+        js_remove :: SourceBuffer -> Double -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/remove MDN SourceBuffer.remove documentation>
+remove :: (MonadDOM m) => SourceBuffer -> Double -> Double -> m ()
+remove self start end = liftDOM (void ((js_remove (self) (start) (end))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.remove Mozilla SourceBuffer.remove documentation> 
-remove :: (MonadIO m) => SourceBuffer -> Double -> Double -> m ()
-remove self start end = liftIO (js_remove self start end)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })" js_setMode ::
-        SourceBuffer -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: SourceBuffer -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/mode MDN SourceBuffer.mode documentation>
+setMode :: (MonadDOM m) => SourceBuffer -> AppendMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
-setMode :: (MonadIO m) => SourceBuffer -> AppendMode -> m ()
-setMode self val = liftIO (js_setMode self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
-        SourceBuffer -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: SourceBuffer -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/mode MDN SourceBuffer.mode documentation>
+getMode :: (MonadDOM m) => SourceBuffer -> m AppendMode
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
-getMode :: (MonadIO m) => SourceBuffer -> m AppendMode
-getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"updating\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"updating\"]; })"
         js_getUpdating :: SourceBuffer -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/updating MDN SourceBuffer.updating documentation>
+getUpdating :: (MonadDOM m) => SourceBuffer -> m Bool
+getUpdating self = liftDOM ((js_getUpdating (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.updating Mozilla SourceBuffer.updating documentation> 
-getUpdating :: (MonadIO m) => SourceBuffer -> m Bool
-getUpdating self = liftIO (js_getUpdating self)
- 
-foreign import javascript safe "(($1) => { return $1[\"buffered\"]; })" js_getBuffered ::
-        SourceBuffer -> IO TimeRanges
+foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })"
+        js_getBuffered :: SourceBuffer -> IO TimeRanges
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/buffered MDN SourceBuffer.buffered documentation>
+getBuffered :: (MonadDOM m) => SourceBuffer -> m TimeRanges
+getBuffered self = liftDOM ((js_getBuffered (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
-getBuffered :: (MonadIO m) => SourceBuffer -> m TimeRanges
-getBuffered self = liftIO (js_getBuffered self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"timestampOffset\"] = $2; })"
         js_setTimestampOffset :: SourceBuffer -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/timestampOffset MDN SourceBuffer.timestampOffset documentation>
+setTimestampOffset :: (MonadDOM m) => SourceBuffer -> Double -> m ()
+setTimestampOffset self val = liftDOM (void ((js_setTimestampOffset (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
-setTimestampOffset :: (MonadIO m) => SourceBuffer -> Double -> m ()
-setTimestampOffset self val
-  = liftIO (js_setTimestampOffset self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"timestampOffset\"]; })"
         js_getTimestampOffset :: SourceBuffer -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/timestampOffset MDN SourceBuffer.timestampOffset documentation>
+getTimestampOffset :: (MonadDOM m) => SourceBuffer -> m Double
+getTimestampOffset self = liftDOM ((js_getTimestampOffset (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
-getTimestampOffset :: (MonadIO m) => SourceBuffer -> m Double
-getTimestampOffset self = liftIO (js_getTimestampOffset self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"audioTracks\"]; })"
         js_getAudioTracks :: SourceBuffer -> IO AudioTrackList
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/audioTracks MDN SourceBuffer.audioTracks documentation>
+getAudioTracks :: (MonadDOM m) => SourceBuffer -> m AudioTrackList
+getAudioTracks self = liftDOM ((js_getAudioTracks (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.audioTracks Mozilla SourceBuffer.audioTracks documentation> 
-getAudioTracks :: (MonadIO m) => SourceBuffer -> m AudioTrackList
-getAudioTracks self = liftIO (js_getAudioTracks self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"videoTracks\"]; })"
         js_getVideoTracks :: SourceBuffer -> IO VideoTrackList
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/videoTracks MDN SourceBuffer.videoTracks documentation>
+getVideoTracks :: (MonadDOM m) => SourceBuffer -> m VideoTrackList
+getVideoTracks self = liftDOM ((js_getVideoTracks (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.videoTracks Mozilla SourceBuffer.videoTracks documentation> 
-getVideoTracks :: (MonadIO m) => SourceBuffer -> m VideoTrackList
-getVideoTracks self = liftIO (js_getVideoTracks self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"textTracks\"]; })"
         js_getTextTracks :: SourceBuffer -> IO TextTrackList
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/textTracks MDN SourceBuffer.textTracks documentation>
+getTextTracks :: (MonadDOM m) => SourceBuffer -> m TextTrackList
+getTextTracks self = liftDOM ((js_getTextTracks (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.textTracks Mozilla SourceBuffer.textTracks documentation> 
-getTextTracks :: (MonadIO m) => SourceBuffer -> m TextTrackList
-getTextTracks self = liftIO (js_getTextTracks self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"appendWindowStart\"] = $2; })"
         js_setAppendWindowStart :: SourceBuffer -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowStart MDN SourceBuffer.appendWindowStart documentation>
+setAppendWindowStart :: (MonadDOM m) => SourceBuffer -> Double -> m ()
+setAppendWindowStart self val = liftDOM (void ((js_setAppendWindowStart (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
-setAppendWindowStart ::
-                     (MonadIO m) => SourceBuffer -> Double -> m ()
-setAppendWindowStart self val
-  = liftIO (js_setAppendWindowStart self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"appendWindowStart\"]; })"
         js_getAppendWindowStart :: SourceBuffer -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowStart MDN SourceBuffer.appendWindowStart documentation>
+getAppendWindowStart :: (MonadDOM m) => SourceBuffer -> m Double
+getAppendWindowStart self = liftDOM ((js_getAppendWindowStart (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
-getAppendWindowStart :: (MonadIO m) => SourceBuffer -> m Double
-getAppendWindowStart self = liftIO (js_getAppendWindowStart self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"appendWindowEnd\"] = $2; })"
         js_setAppendWindowEnd :: SourceBuffer -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowEnd MDN SourceBuffer.appendWindowEnd documentation>
+setAppendWindowEnd :: (MonadDOM m) => SourceBuffer -> Double -> m ()
+setAppendWindowEnd self val = liftDOM (void ((js_setAppendWindowEnd (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
-setAppendWindowEnd :: (MonadIO m) => SourceBuffer -> Double -> m ()
-setAppendWindowEnd self val
-  = liftIO (js_setAppendWindowEnd self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"appendWindowEnd\"]; })"
         js_getAppendWindowEnd :: SourceBuffer -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
-getAppendWindowEnd :: (MonadIO m) => SourceBuffer -> m Double
-getAppendWindowEnd self = liftIO (js_getAppendWindowEnd self)
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowEnd MDN SourceBuffer.appendWindowEnd documentation>
+getAppendWindowEnd :: (MonadDOM m) => SourceBuffer -> m Double
+getAppendWindowEnd self = liftDOM ((js_getAppendWindowEnd (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onupdatestart Mozilla SourceBuffer.onupdatestart documentation> 
-updatestart :: EventName SourceBuffer onupdatestart
+-- | <https://w3c.github.io/media-source/#dom-sourcebuffer-onupdatestart updatestart event>
+updatestart :: EventName SourceBuffer Event
 updatestart = unsafeEventName (toJSString "updatestart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onupdate Mozilla SourceBuffer.onupdate documentation> 
-update :: EventName SourceBuffer onupdate
+-- | <https://w3c.github.io/media-source/#dom-sourcebuffer-onupdate update event>
+update :: EventName SourceBuffer Event
 update = unsafeEventName (toJSString "update")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onupdateend Mozilla SourceBuffer.onupdateend documentation> 
-updateend :: EventName SourceBuffer onupdateend
+-- | <https://w3c.github.io/media-source/#dom-sourcebuffer-onupdateend updateend event>
+updateend :: EventName SourceBuffer Event
 updateend = unsafeEventName (toJSString "updateend")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onerror Mozilla SourceBuffer.onerror documentation> 
-error :: EventName SourceBuffer UIEvent
+-- | <https://w3c.github.io/media-source/#dom-sourcebuffer-onerror error event>
+error :: EventName SourceBuffer Event
 error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onabort Mozilla SourceBuffer.onabort documentation> 
-abortEvent :: EventName SourceBuffer UIEvent
+-- | <https://w3c.github.io/media-source/#dom-sourcebuffer-onabort abort event>
+abortEvent :: EventName SourceBuffer Event
 abortEvent = unsafeEventNameAsync (toJSString "abort")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs b/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
@@ -1,55 +1,31 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SourceBufferList
-       (js_item, item, item_, js_getLength, getLength, addsourcebuffer,
-        removesourcebuffer, SourceBufferList(..), gTypeSourceBufferList)
+       (js_getLength, getLength, addsourcebuffer, removesourcebuffer, SourceBufferList(..), gTypeSourceBufferList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        SourceBufferList -> Word -> IO SourceBuffer
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
-item :: (MonadIO m) => SourceBufferList -> Word -> m SourceBuffer
-item self index = liftIO (js_item self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
-item_ :: (MonadIO m) => SourceBufferList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        SourceBufferList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.length Mozilla SourceBufferList.length documentation> 
-getLength :: (MonadIO m) => SourceBufferList -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SourceBufferList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBufferList/length MDN SourceBufferList.length documentation>
+getLength :: (MonadDOM m) => SourceBufferList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.onaddsourcebuffer Mozilla SourceBufferList.onaddsourcebuffer documentation> 
-addsourcebuffer :: EventName SourceBufferList onaddsourcebuffer
+-- | <https://w3c.github.io/media-source/#dom-sourcebufferlist-onaddsourcebuffer addsourcebuffer event>
+addsourcebuffer :: EventName SourceBufferList Event
 addsourcebuffer = unsafeEventName (toJSString "addsourcebuffer")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.onremovesourcebuffer Mozilla SourceBufferList.onremovesourcebuffer documentation> 
-removesourcebuffer ::
-                     EventName SourceBufferList onremovesourcebuffer
-removesourcebuffer
-  = unsafeEventName (toJSString "removesourcebuffer")
+-- | <https://w3c.github.io/media-source/#dom-sourcebufferlist-onremovesourcebuffer removesourcebuffer event>
+removesourcebuffer :: EventName SourceBufferList Event
+removesourcebuffer = unsafeEventName (toJSString "removesourcebuffer")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechGrammar.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechGrammar.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechGrammar.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechGrammar
+       (js_setSrc, js_getSrc, js_setWeight, js_getWeight, setSrc, getSrc, setWeight, getWeight, SpeechGrammar(..), gTypeSpeechGrammar)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"src\"] = $2; })"
+        js_setSrc :: SpeechGrammar -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammar/src MDN SpeechGrammar.src documentation>
+setSrc :: (MonadDOM m, ToJSString val) => SpeechGrammar -> val -> m ()
+setSrc self val = liftDOM (void ((js_setSrc (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })"
+        js_getSrc :: SpeechGrammar -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammar/src MDN SpeechGrammar.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => SpeechGrammar -> m result
+getSrc self = liftDOM ((fromJSString <$> (js_getSrc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"weight\"] = $2; })"
+        js_setWeight :: SpeechGrammar -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammar/weight MDN SpeechGrammar.weight documentation>
+setWeight :: (MonadDOM m) => SpeechGrammar -> Float -> m ()
+setWeight self val = liftDOM (void ((js_setWeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"weight\"]; })"
+        js_getWeight :: SpeechGrammar -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammar/weight MDN SpeechGrammar.weight documentation>
+getWeight :: (MonadDOM m) => SpeechGrammar -> m Float
+getWeight self = liftDOM ((js_getWeight (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechGrammarList.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechGrammarList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechGrammarList.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechGrammarList
+       (js_newSpeechGrammarList, js_addFromString, js_item, js_getLength, newSpeechGrammarList, addFromString, item, item_, itemUnsafe, itemUnchecked, getLength, SpeechGrammarList(..), gTypeSpeechGrammarList)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return new globalThis[\"SpeechGrammarList\"](); })"
+        js_newSpeechGrammarList :: IO SpeechGrammarList
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/SpeechGrammarList MDN SpeechGrammarList. documentation>
+newSpeechGrammarList :: (MonadDOM m) => m SpeechGrammarList
+newSpeechGrammarList = liftDOM ((js_newSpeechGrammarList))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addFromString\"]($2, $3); })"
+        js_addFromString :: SpeechGrammarList -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/addFromString MDN SpeechGrammarList.addFromString documentation>
+addFromString :: (MonadDOM m, ToJSString string) => SpeechGrammarList -> string -> Maybe Float -> m ()
+addFromString self string weight = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal weight) >>= \a3' -> js_addFromString (self) (toJSString string) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: SpeechGrammarList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/item MDN SpeechGrammarList.item documentation>
+item :: (MonadDOM m) => SpeechGrammarList -> Word -> m (Maybe SpeechGrammar)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/item MDN SpeechGrammarList.item documentation>
+item_ :: (MonadDOM m) => SpeechGrammarList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/item MDN SpeechGrammarList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => SpeechGrammarList -> Word -> m SpeechGrammar
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/item MDN SpeechGrammarList.item documentation>
+itemUnchecked :: (MonadDOM m) => SpeechGrammarList -> Word -> m SpeechGrammar
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SpeechGrammarList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/length MDN SpeechGrammarList.length documentation>
+getLength :: (MonadDOM m) => SpeechGrammarList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognition.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognition.hs
@@ -0,0 +1,207 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognition
+       (js_newSpeechRecognition, js_abort, js_start, js_startAudioTrack, js_stop, js_available, js_install, js_setGrammars, js_getGrammars, js_setLang, js_getLang, js_setContinuous, js_getContinuous, js_setInterimResults, js_getInterimResults, js_setUnspokenPunctuation, js_getUnspokenPunctuation, js_setMaxAlternatives, js_getMaxAlternatives, js_setProcessLocally, js_getProcessLocally, js_setPhrases, js_getPhrases, newSpeechRecognition, abort, start, startAudioTrack, stop, available, available_, install, install_, setGrammars, getGrammars, setLang, getLang, setContinuous, getContinuous, setInterimResults, getInterimResults, setUnspokenPunctuation, getUnspokenPunctuation, setMaxAlternatives, getMaxAlternatives, setProcessLocally, getProcessLocally, setPhrases, getPhrases, audiostart, soundstart, speechstart, speechend, soundend, audioend, result', nomatch, error, startEvent, end, SpeechRecognition(..), gTypeSpeechRecognition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return new globalThis[\"SpeechRecognition\"](); })"
+        js_newSpeechRecognition :: IO SpeechRecognition
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/SpeechRecognition MDN SpeechRecognition. documentation>
+newSpeechRecognition :: (MonadDOM m) => m SpeechRecognition
+newSpeechRecognition = liftDOM ((js_newSpeechRecognition))
+
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })"
+        js_abort :: SpeechRecognition -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/abort MDN SpeechRecognition.abort documentation>
+abort :: (MonadDOM m) => SpeechRecognition -> m ()
+abort self = liftDOM (void ((js_abort (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"start\"](); })"
+        js_start :: SpeechRecognition -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/start MDN SpeechRecognition.start documentation>
+start :: (MonadDOM m) => SpeechRecognition -> m ()
+start self = liftDOM (void ((js_start (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })"
+        js_startAudioTrack :: SpeechRecognition -> MediaStreamTrack -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/start MDN SpeechRecognition.start documentation>
+startAudioTrack :: (MonadDOM m, IsMediaStreamTrack audioTrack) => SpeechRecognition -> audioTrack -> m ()
+startAudioTrack self audioTrack = liftDOM (void ((js_startAudioTrack (self) (Types.toMediaStreamTrack audioTrack))))
+
+foreign import javascript safe "(($1) => { return $1[\"stop\"](); })"
+        js_stop :: SpeechRecognition -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/stop MDN SpeechRecognition.stop documentation>
+stop :: (MonadDOM m) => SpeechRecognition -> m ()
+stop self = liftDOM (void ((js_stop (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"SpeechRecognition\"][\"available\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_available :: SpeechRecognitionOptions -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/available_static MDN SpeechRecognition.available documentation>
+available :: (MonadDOM m) => SpeechRecognitionOptions -> m SpeechRecognitionAvailabilityStatus
+available options = liftDOM ((((js_available (options)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/available_static MDN SpeechRecognition.available documentation>
+available_ :: (MonadDOM m) => SpeechRecognitionOptions -> m ()
+available_ options = liftDOM (void (((js_available (options)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"SpeechRecognition\"][\"install\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_install :: SpeechRecognitionOptions -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/install_static MDN SpeechRecognition.install documentation>
+install :: (MonadDOM m) => SpeechRecognitionOptions -> m Bool
+install options = liftDOM (((js_install (options)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/install_static MDN SpeechRecognition.install documentation>
+install_ :: (MonadDOM m) => SpeechRecognitionOptions -> m ()
+install_ options = liftDOM (void (((js_install (options)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"grammars\"] = $2; })"
+        js_setGrammars :: SpeechRecognition -> SpeechGrammarList -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/grammars MDN SpeechRecognition.grammars documentation>
+setGrammars :: (MonadDOM m) => SpeechRecognition -> SpeechGrammarList -> m ()
+setGrammars self val = liftDOM (void ((js_setGrammars (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"grammars\"]; })"
+        js_getGrammars :: SpeechRecognition -> IO SpeechGrammarList
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/grammars MDN SpeechRecognition.grammars documentation>
+getGrammars :: (MonadDOM m) => SpeechRecognition -> m SpeechGrammarList
+getGrammars self = liftDOM ((js_getGrammars (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lang\"] = $2; })"
+        js_setLang :: SpeechRecognition -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/lang MDN SpeechRecognition.lang documentation>
+setLang :: (MonadDOM m, ToJSString val) => SpeechRecognition -> val -> m ()
+setLang self val = liftDOM (void ((js_setLang (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })"
+        js_getLang :: SpeechRecognition -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/lang MDN SpeechRecognition.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => SpeechRecognition -> m result
+getLang self = liftDOM ((fromJSString <$> (js_getLang (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"continuous\"] = $2; })"
+        js_setContinuous :: SpeechRecognition -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/continuous MDN SpeechRecognition.continuous documentation>
+setContinuous :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setContinuous self val = liftDOM (void ((js_setContinuous (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"continuous\"]; })"
+        js_getContinuous :: SpeechRecognition -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/continuous MDN SpeechRecognition.continuous documentation>
+getContinuous :: (MonadDOM m) => SpeechRecognition -> m Bool
+getContinuous self = liftDOM ((js_getContinuous (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"interimResults\"] = $2; })"
+        js_setInterimResults :: SpeechRecognition -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/interimResults MDN SpeechRecognition.interimResults documentation>
+setInterimResults :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setInterimResults self val = liftDOM (void ((js_setInterimResults (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"interimResults\"]; })"
+        js_getInterimResults :: SpeechRecognition -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/interimResults MDN SpeechRecognition.interimResults documentation>
+getInterimResults :: (MonadDOM m) => SpeechRecognition -> m Bool
+getInterimResults self = liftDOM ((js_getInterimResults (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unspokenPunctuation\"] = $2; })"
+        js_setUnspokenPunctuation :: SpeechRecognition -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/unspokenPunctuation MDN SpeechRecognition.unspokenPunctuation documentation>
+setUnspokenPunctuation :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setUnspokenPunctuation self val = liftDOM (void ((js_setUnspokenPunctuation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unspokenPunctuation\"]; })"
+        js_getUnspokenPunctuation :: SpeechRecognition -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/unspokenPunctuation MDN SpeechRecognition.unspokenPunctuation documentation>
+getUnspokenPunctuation :: (MonadDOM m) => SpeechRecognition -> m Bool
+getUnspokenPunctuation self = liftDOM ((js_getUnspokenPunctuation (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"maxAlternatives\"] = $2; })"
+        js_setMaxAlternatives :: SpeechRecognition -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/maxAlternatives MDN SpeechRecognition.maxAlternatives documentation>
+setMaxAlternatives :: (MonadDOM m) => SpeechRecognition -> Word -> m ()
+setMaxAlternatives self val = liftDOM (void ((js_setMaxAlternatives (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxAlternatives\"]; })"
+        js_getMaxAlternatives :: SpeechRecognition -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/maxAlternatives MDN SpeechRecognition.maxAlternatives documentation>
+getMaxAlternatives :: (MonadDOM m) => SpeechRecognition -> m Word
+getMaxAlternatives self = liftDOM ((js_getMaxAlternatives (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"processLocally\"] = $2; })"
+        js_setProcessLocally :: SpeechRecognition -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/processLocally MDN SpeechRecognition.processLocally documentation>
+setProcessLocally :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setProcessLocally self val = liftDOM (void ((js_setProcessLocally (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"processLocally\"]; })"
+        js_getProcessLocally :: SpeechRecognition -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/processLocally MDN SpeechRecognition.processLocally documentation>
+getProcessLocally :: (MonadDOM m) => SpeechRecognition -> m Bool
+getProcessLocally self = liftDOM ((js_getProcessLocally (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"phrases\"] = $2; })"
+        js_setPhrases :: SpeechRecognition -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/phrases MDN SpeechRecognition.phrases documentation>
+setPhrases :: (MonadDOM m) => SpeechRecognition -> [SpeechRecognitionPhrase] -> m ()
+setPhrases self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPhrases (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"phrases\"]; })"
+        js_getPhrases :: SpeechRecognition -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/phrases MDN SpeechRecognition.phrases documentation>
+getPhrases :: (MonadDOM m) => SpeechRecognition -> m [SpeechRecognitionPhrase]
+getPhrases self = liftDOM (((js_getPhrases (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onaudiostart audiostart event>
+audiostart :: EventName SpeechRecognition Event
+audiostart = unsafeEventName (toJSString "audiostart")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onsoundstart soundstart event>
+soundstart :: EventName SpeechRecognition Event
+soundstart = unsafeEventName (toJSString "soundstart")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onspeechstart speechstart event>
+speechstart :: EventName SpeechRecognition Event
+speechstart = unsafeEventName (toJSString "speechstart")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onspeechend speechend event>
+speechend :: EventName SpeechRecognition Event
+speechend = unsafeEventName (toJSString "speechend")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onsoundend soundend event>
+soundend :: EventName SpeechRecognition Event
+soundend = unsafeEventName (toJSString "soundend")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onaudioend audioend event>
+audioend :: EventName SpeechRecognition Event
+audioend = unsafeEventName (toJSString "audioend")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onresult result event>
+result' :: EventName SpeechRecognition SpeechRecognitionEvent
+result' = unsafeEventName (toJSString "result")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onnomatch nomatch event>
+nomatch :: EventName SpeechRecognition SpeechRecognitionEvent
+nomatch = unsafeEventName (toJSString "nomatch")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onerror error event>
+error :: EventName SpeechRecognition SpeechRecognitionErrorEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onstart start event>
+startEvent :: EventName SpeechRecognition Event
+startEvent = unsafeEventName (toJSString "start")
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognition-onend end event>
+end :: EventName SpeechRecognition Event
+end = unsafeEventName (toJSString "end")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionAlternative.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionAlternative.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionAlternative.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionAlternative
+       (js_getTranscript, js_getConfidence, getTranscript, getConfidence, SpeechRecognitionAlternative(..), gTypeSpeechRecognitionAlternative)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"transcript\"]; })"
+        js_getTranscript :: SpeechRecognitionAlternative -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionAlternative/transcript MDN SpeechRecognitionAlternative.transcript documentation>
+getTranscript :: (MonadDOM m, FromJSString result) => SpeechRecognitionAlternative -> m result
+getTranscript self = liftDOM ((fromJSString <$> (js_getTranscript (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"confidence\"]; })"
+        js_getConfidence :: SpeechRecognitionAlternative -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionAlternative/confidence MDN SpeechRecognitionAlternative.confidence documentation>
+getConfidence :: (MonadDOM m) => SpeechRecognitionAlternative -> m Float
+getConfidence self = liftDOM ((js_getConfidence (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionErrorEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionErrorEvent
+       (js_newSpeechRecognitionErrorEvent, js_getError, js_getMessage, newSpeechRecognitionErrorEvent, getError, getMessage, SpeechRecognitionErrorEvent(..), gTypeSpeechRecognitionErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SpeechRecognitionErrorEvent\"]($1, $2); })"
+        js_newSpeechRecognitionErrorEvent :: JSString -> SpeechRecognitionErrorEventInit -> IO SpeechRecognitionErrorEvent
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionErrorEvent/SpeechRecognitionErrorEvent MDN SpeechRecognitionErrorEvent. documentation>
+newSpeechRecognitionErrorEvent :: (MonadDOM m, ToJSString type') => type' -> SpeechRecognitionErrorEventInit -> m SpeechRecognitionErrorEvent
+newSpeechRecognitionErrorEvent type' eventInitDict = liftDOM ((js_newSpeechRecognitionErrorEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: SpeechRecognitionErrorEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionErrorEvent/error MDN SpeechRecognitionErrorEvent.error documentation>
+getError :: (MonadDOM m) => SpeechRecognitionErrorEvent -> m SpeechRecognitionErrorCode
+getError self = liftDOM (((js_getError (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: SpeechRecognitionErrorEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionErrorEvent/message MDN SpeechRecognitionErrorEvent.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => SpeechRecognitionErrorEvent -> m result
+getMessage self = liftDOM ((fromJSString <$> (js_getMessage (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionErrorEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionErrorEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionErrorEventInit
+       (js_newSpeechRecognitionErrorEventInit, js_setError, js_getError, js_setMessage, js_getMessage, newSpeechRecognitionErrorEventInit, setError, getError, setMessage, getMessage, getMessageUnsafe, getMessageUnchecked, SpeechRecognitionErrorEventInit(..), gTypeSpeechRecognitionErrorEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"error\": $1}); })"
+        js_newSpeechRecognitionErrorEventInit :: JSVal -> IO SpeechRecognitionErrorEventInit
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechrecognitionerroreventinit SpeechRecognitionErrorEventInit specification>
+newSpeechRecognitionErrorEventInit :: (MonadDOM m) => SpeechRecognitionErrorCode -> m SpeechRecognitionErrorEventInit
+newSpeechRecognitionErrorEventInit error = liftDOM (((toJSVal error) >>= \a1' -> js_newSpeechRecognitionErrorEventInit a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: SpeechRecognitionErrorEventInit -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-error SpeechRecognitionErrorEventInit.error specification>
+setError :: (MonadDOM m) => SpeechRecognitionErrorEventInit -> SpeechRecognitionErrorCode -> m ()
+setError self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setError (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: SpeechRecognitionErrorEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-error SpeechRecognitionErrorEventInit.error specification>
+getError :: (MonadDOM m) => SpeechRecognitionErrorEventInit -> m SpeechRecognitionErrorCode
+getError self = liftDOM (((js_getError (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"message\"] = $2; })"
+        js_setMessage :: SpeechRecognitionErrorEventInit -> JSString -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-message SpeechRecognitionErrorEventInit.message specification>
+setMessage :: (MonadDOM m, ToJSString val) => SpeechRecognitionErrorEventInit -> val -> m ()
+setMessage self val = liftDOM (void ((js_setMessage (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })"
+        js_getMessage :: SpeechRecognitionErrorEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-message SpeechRecognitionErrorEventInit.message specification>
+getMessage :: (MonadDOM m, FromJSString result) => SpeechRecognitionErrorEventInit -> m (Maybe result)
+getMessage self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getMessage (self))))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-message SpeechRecognitionErrorEventInit.message specification>
+getMessageUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SpeechRecognitionErrorEventInit -> m result
+getMessageUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getMessage (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-message SpeechRecognitionErrorEventInit.message specification>
+getMessageUnchecked :: (MonadDOM m, FromJSString result) => SpeechRecognitionErrorEventInit -> m result
+getMessageUnchecked self = liftDOM ((pFromJSVal <$> (js_getMessage (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionEvent
+       (js_newSpeechRecognitionEvent, js_getResultIndex, js_getResults, newSpeechRecognitionEvent, getResultIndex, getResults, SpeechRecognitionEvent(..), gTypeSpeechRecognitionEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SpeechRecognitionEvent\"]($1, $2); })"
+        js_newSpeechRecognitionEvent :: JSString -> SpeechRecognitionEventInit -> IO SpeechRecognitionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionEvent/SpeechRecognitionEvent MDN SpeechRecognitionEvent. documentation>
+newSpeechRecognitionEvent :: (MonadDOM m, ToJSString type') => type' -> SpeechRecognitionEventInit -> m SpeechRecognitionEvent
+newSpeechRecognitionEvent type' eventInitDict = liftDOM ((js_newSpeechRecognitionEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resultIndex\"]; })"
+        js_getResultIndex :: SpeechRecognitionEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionEvent/resultIndex MDN SpeechRecognitionEvent.resultIndex documentation>
+getResultIndex :: (MonadDOM m) => SpeechRecognitionEvent -> m Word
+getResultIndex self = liftDOM ((js_getResultIndex (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"results\"]; })"
+        js_getResults :: SpeechRecognitionEvent -> IO SpeechRecognitionResultList
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionEvent/results MDN SpeechRecognitionEvent.results documentation>
+getResults :: (MonadDOM m) => SpeechRecognitionEvent -> m SpeechRecognitionResultList
+getResults self = liftDOM ((js_getResults (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionEventInit.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionEventInit
+       (js_newSpeechRecognitionEventInit, js_setResultIndex, js_getResultIndex, js_setResults, js_getResults, newSpeechRecognitionEventInit, setResultIndex, getResultIndex, getResultIndexUnsafe, getResultIndexUnchecked, setResults, getResults, SpeechRecognitionEventInit(..), gTypeSpeechRecognitionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"results\": $1}); })"
+        js_newSpeechRecognitionEventInit :: SpeechRecognitionResultList -> IO SpeechRecognitionEventInit
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechrecognitioneventinit SpeechRecognitionEventInit specification>
+newSpeechRecognitionEventInit :: (MonadDOM m) => SpeechRecognitionResultList -> m SpeechRecognitionEventInit
+newSpeechRecognitionEventInit results = liftDOM ((js_newSpeechRecognitionEventInit (results)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"resultIndex\"] = $2; })"
+        js_setResultIndex :: SpeechRecognitionEventInit -> Word -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-resultindex SpeechRecognitionEventInit.resultIndex specification>
+setResultIndex :: (MonadDOM m) => SpeechRecognitionEventInit -> Word -> m ()
+setResultIndex self val = liftDOM (void ((js_setResultIndex (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"resultIndex\"]; })"
+        js_getResultIndex :: SpeechRecognitionEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-resultindex SpeechRecognitionEventInit.resultIndex specification>
+getResultIndex :: (MonadDOM m) => SpeechRecognitionEventInit -> m (Maybe Word)
+getResultIndex self = liftDOM (((js_getResultIndex (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-resultindex SpeechRecognitionEventInit.resultIndex specification>
+getResultIndexUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionEventInit -> m Word
+getResultIndexUnsafe self = liftDOM ((((js_getResultIndex (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-resultindex SpeechRecognitionEventInit.resultIndex specification>
+getResultIndexUnchecked :: (MonadDOM m) => SpeechRecognitionEventInit -> m Word
+getResultIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getResultIndex (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"results\"] = $2; })"
+        js_setResults :: SpeechRecognitionEventInit -> SpeechRecognitionResultList -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-results SpeechRecognitionEventInit.results specification>
+setResults :: (MonadDOM m) => SpeechRecognitionEventInit -> SpeechRecognitionResultList -> m ()
+setResults self val = liftDOM (void ((js_setResults (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"results\"]; })"
+        js_getResults :: SpeechRecognitionEventInit -> IO SpeechRecognitionResultList
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-results SpeechRecognitionEventInit.results specification>
+getResults :: (MonadDOM m) => SpeechRecognitionEventInit -> m SpeechRecognitionResultList
+getResults self = liftDOM ((js_getResults (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionOptions.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionOptions
+       (js_newSpeechRecognitionOptions, js_setLangs, js_getLangs, js_setProcessLocally, js_getProcessLocally, js_setQuality, js_getQuality, newSpeechRecognitionOptions, setLangs, getLangs, setProcessLocally, getProcessLocally, getProcessLocallyUnsafe, getProcessLocallyUnchecked, setQuality, getQuality, getQualityUnsafe, getQualityUnchecked, SpeechRecognitionOptions(..), gTypeSpeechRecognitionOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"langs\": $1}); })"
+        js_newSpeechRecognitionOptions :: JSVal -> IO SpeechRecognitionOptions
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechrecognitionoptions SpeechRecognitionOptions specification>
+newSpeechRecognitionOptions :: (MonadDOM m, ToJSString langs) => [langs] -> m SpeechRecognitionOptions
+newSpeechRecognitionOptions langs = liftDOM (((toJSVal langs) >>= \a1' -> js_newSpeechRecognitionOptions a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"langs\"] = $2; })"
+        js_setLangs :: SpeechRecognitionOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-langs SpeechRecognitionOptions.langs specification>
+setLangs :: (MonadDOM m, ToJSString val) => SpeechRecognitionOptions -> [val] -> m ()
+setLangs self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLangs (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"langs\"]; })"
+        js_getLangs :: SpeechRecognitionOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-langs SpeechRecognitionOptions.langs specification>
+getLangs :: (MonadDOM m, FromJSString result) => SpeechRecognitionOptions -> m [result]
+getLangs self = liftDOM (((js_getLangs (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"processLocally\"] = $2; })"
+        js_setProcessLocally :: SpeechRecognitionOptions -> Bool -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-processlocally SpeechRecognitionOptions.processLocally specification>
+setProcessLocally :: (MonadDOM m) => SpeechRecognitionOptions -> Bool -> m ()
+setProcessLocally self val = liftDOM (void ((js_setProcessLocally (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"processLocally\"]; })"
+        js_getProcessLocally :: SpeechRecognitionOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-processlocally SpeechRecognitionOptions.processLocally specification>
+getProcessLocally :: (MonadDOM m) => SpeechRecognitionOptions -> m (Maybe Bool)
+getProcessLocally self = liftDOM (((js_getProcessLocally (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-processlocally SpeechRecognitionOptions.processLocally specification>
+getProcessLocallyUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionOptions -> m Bool
+getProcessLocallyUnsafe self = liftDOM ((((js_getProcessLocally (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-processlocally SpeechRecognitionOptions.processLocally specification>
+getProcessLocallyUnchecked :: (MonadDOM m) => SpeechRecognitionOptions -> m Bool
+getProcessLocallyUnchecked self = liftDOM ((pFromJSVal <$> (js_getProcessLocally (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"quality\"] = $2; })"
+        js_setQuality :: SpeechRecognitionOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-quality SpeechRecognitionOptions.quality specification>
+setQuality :: (MonadDOM m) => SpeechRecognitionOptions -> SpeechRecognitionQuality -> m ()
+setQuality self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setQuality (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"quality\"]; })"
+        js_getQuality :: SpeechRecognitionOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-quality SpeechRecognitionOptions.quality specification>
+getQuality :: (MonadDOM m) => SpeechRecognitionOptions -> m (Maybe SpeechRecognitionQuality)
+getQuality self = liftDOM (((js_getQuality (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-quality SpeechRecognitionOptions.quality specification>
+getQualityUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionOptions -> m SpeechRecognitionQuality
+getQualityUnsafe self = liftDOM ((((js_getQuality (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-quality SpeechRecognitionOptions.quality specification>
+getQualityUnchecked :: (MonadDOM m) => SpeechRecognitionOptions -> m SpeechRecognitionQuality
+getQualityUnchecked self = liftDOM ((pFromJSVal <$> (js_getQuality (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionPhrase.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionPhrase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionPhrase.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionPhrase
+       (js_newSpeechRecognitionPhrase, js_getPhrase, js_getBoost, newSpeechRecognitionPhrase, getPhrase, getBoost, SpeechRecognitionPhrase(..), gTypeSpeechRecognitionPhrase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SpeechRecognitionPhrase\"]($1, $2); })"
+        js_newSpeechRecognitionPhrase :: JSString -> JSVal -> IO SpeechRecognitionPhrase
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionPhrase/SpeechRecognitionPhrase MDN SpeechRecognitionPhrase. documentation>
+newSpeechRecognitionPhrase :: (MonadDOM m, ToJSString phrase) => phrase -> Maybe Float -> m SpeechRecognitionPhrase
+newSpeechRecognitionPhrase phrase boost = liftDOM (((P.maybe (P.return jsUndefined) toJSVal boost) >>= \a2' -> js_newSpeechRecognitionPhrase (toJSString phrase) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"phrase\"]; })"
+        js_getPhrase :: SpeechRecognitionPhrase -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionPhrase/phrase MDN SpeechRecognitionPhrase.phrase documentation>
+getPhrase :: (MonadDOM m, FromJSString result) => SpeechRecognitionPhrase -> m result
+getPhrase self = liftDOM ((fromJSString <$> (js_getPhrase (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"boost\"]; })"
+        js_getBoost :: SpeechRecognitionPhrase -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionPhrase/boost MDN SpeechRecognitionPhrase.boost documentation>
+getBoost :: (MonadDOM m) => SpeechRecognitionPhrase -> m Float
+getBoost self = liftDOM ((js_getBoost (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionResult.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionResult.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionResult
+       (js_item, js_getLength, js_getIsFinal, item, item_, itemUnsafe, itemUnchecked, getLength, getIsFinal, SpeechRecognitionResult(..), gTypeSpeechRecognitionResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: SpeechRecognitionResult -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/item MDN SpeechRecognitionResult.item documentation>
+item :: (MonadDOM m) => SpeechRecognitionResult -> Word -> m (Maybe SpeechRecognitionAlternative)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/item MDN SpeechRecognitionResult.item documentation>
+item_ :: (MonadDOM m) => SpeechRecognitionResult -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/item MDN SpeechRecognitionResult.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionResult -> Word -> m SpeechRecognitionAlternative
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/item MDN SpeechRecognitionResult.item documentation>
+itemUnchecked :: (MonadDOM m) => SpeechRecognitionResult -> Word -> m SpeechRecognitionAlternative
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SpeechRecognitionResult -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/length MDN SpeechRecognitionResult.length documentation>
+getLength :: (MonadDOM m) => SpeechRecognitionResult -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isFinal\"]; })"
+        js_getIsFinal :: SpeechRecognitionResult -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/isFinal MDN SpeechRecognitionResult.isFinal documentation>
+getIsFinal :: (MonadDOM m) => SpeechRecognitionResult -> m Bool
+getIsFinal self = liftDOM ((js_getIsFinal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionResultList.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionResultList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechRecognitionResultList.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechRecognitionResultList
+       (js_item, js_getLength, item, item_, itemUnsafe, itemUnchecked, getLength, SpeechRecognitionResultList(..), gTypeSpeechRecognitionResultList)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: SpeechRecognitionResultList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResultList/item MDN SpeechRecognitionResultList.item documentation>
+item :: (MonadDOM m) => SpeechRecognitionResultList -> Word -> m (Maybe SpeechRecognitionResult)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResultList/item MDN SpeechRecognitionResultList.item documentation>
+item_ :: (MonadDOM m) => SpeechRecognitionResultList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResultList/item MDN SpeechRecognitionResultList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionResultList -> Word -> m SpeechRecognitionResult
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResultList/item MDN SpeechRecognitionResultList.item documentation>
+itemUnchecked :: (MonadDOM m) => SpeechRecognitionResultList -> Word -> m SpeechRecognitionResult
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: SpeechRecognitionResultList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResultList/length MDN SpeechRecognitionResultList.length documentation>
+getLength :: (MonadDOM m) => SpeechRecognitionResultList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
@@ -1,92 +1,73 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
-       (js_speak, speak, js_cancel, cancel, js_pause, pause, js_resume,
-        resume, js_getVoices, getVoices, getVoices_, js_getPending,
-        getPending, js_getSpeaking, getSpeaking, js_getPaused, getPaused,
-        SpeechSynthesis(..), gTypeSpeechSynthesis)
+       (js_cancel, js_getVoices, js_pause, js_resume, js_speak, js_getPending, js_getSpeaking, js_getPaused, cancel, getVoices, getVoices_, pause, resume, speak, getPending, getSpeaking, getPaused, voiceschanged, SpeechSynthesis(..), gTypeSpeechSynthesis)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"speak\"]($2); })" js_speak ::
-        SpeechSynthesis -> SpeechSynthesisUtterance -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speak Mozilla SpeechSynthesis.speak documentation> 
-speak ::
-      (MonadIO m) => SpeechSynthesis -> SpeechSynthesisUtterance -> m ()
-speak self utterance = liftIO (js_speak self utterance)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cancel\"](); })" js_cancel ::
-        SpeechSynthesis -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"cancel\"](); })"
+        js_cancel :: SpeechSynthesis -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/cancel MDN SpeechSynthesis.cancel documentation>
+cancel :: (MonadDOM m) => SpeechSynthesis -> m ()
+cancel self = liftDOM (void ((js_cancel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.cancel Mozilla SpeechSynthesis.cancel documentation> 
-cancel :: (MonadIO m) => SpeechSynthesis -> m ()
-cancel self = liftIO (js_cancel self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pause\"](); })" js_pause ::
-        SpeechSynthesis -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"getVoices\"](); })"
+        js_getVoices :: SpeechSynthesis -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/getVoices MDN SpeechSynthesis.getVoices documentation>
+getVoices :: (MonadDOM m) => SpeechSynthesis -> m [SpeechSynthesisVoice]
+getVoices self = liftDOM (((js_getVoices (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pause Mozilla SpeechSynthesis.pause documentation> 
-pause :: (MonadIO m) => SpeechSynthesis -> m ()
-pause self = liftIO (js_pause self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"resume\"](); })" js_resume ::
-        SpeechSynthesis -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/getVoices MDN SpeechSynthesis.getVoices documentation>
+getVoices_ :: (MonadDOM m) => SpeechSynthesis -> m ()
+getVoices_ self = liftDOM (void ((js_getVoices (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.resume Mozilla SpeechSynthesis.resume documentation> 
-resume :: (MonadIO m) => SpeechSynthesis -> m ()
-resume self = liftIO (js_resume self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getVoices\"](); })" js_getVoices
-        :: SpeechSynthesis -> IO JSVal
+foreign import javascript safe "(($1) => { return $1[\"pause\"](); })"
+        js_pause :: SpeechSynthesis -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/pause MDN SpeechSynthesis.pause documentation>
+pause :: (MonadDOM m) => SpeechSynthesis -> m ()
+pause self = liftDOM (void ((js_pause (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.getVoices Mozilla SpeechSynthesis.getVoices documentation> 
-getVoices ::
-          (MonadIO m) => SpeechSynthesis -> m [SpeechSynthesisVoice]
-getVoices self
-  = liftIO ((js_getVoices self) >>= fromJSValUnchecked)
+foreign import javascript safe "(($1) => { return $1[\"resume\"](); })"
+        js_resume :: SpeechSynthesis -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/resume MDN SpeechSynthesis.resume documentation>
+resume :: (MonadDOM m) => SpeechSynthesis -> m ()
+resume self = liftDOM (void ((js_resume (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.getVoices Mozilla SpeechSynthesis.getVoices documentation> 
-getVoices_ :: (MonadIO m) => SpeechSynthesis -> m ()
-getVoices_ self = liftIO (void (js_getVoices self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"pending\"] ? 1 : 0); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"speak\"]($2); })"
+        js_speak :: SpeechSynthesis -> SpeechSynthesisUtterance -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/speak MDN SpeechSynthesis.speak documentation>
+speak :: (MonadDOM m) => SpeechSynthesis -> SpeechSynthesisUtterance -> m ()
+speak self utterance = liftDOM (void ((js_speak (self) (utterance))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pending\"]; })"
         js_getPending :: SpeechSynthesis -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/pending MDN SpeechSynthesis.pending documentation>
+getPending :: (MonadDOM m) => SpeechSynthesis -> m Bool
+getPending self = liftDOM ((js_getPending (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pending Mozilla SpeechSynthesis.pending documentation> 
-getPending :: (MonadIO m) => SpeechSynthesis -> m Bool
-getPending self = liftIO (js_getPending self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"speaking\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"speaking\"]; })"
         js_getSpeaking :: SpeechSynthesis -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/speaking MDN SpeechSynthesis.speaking documentation>
+getSpeaking :: (MonadDOM m) => SpeechSynthesis -> m Bool
+getSpeaking self = liftDOM ((js_getSpeaking (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speaking Mozilla SpeechSynthesis.speaking documentation> 
-getSpeaking :: (MonadIO m) => SpeechSynthesis -> m Bool
-getSpeaking self = liftIO (js_getSpeaking self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"paused\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"paused\"]; })"
         js_getPaused :: SpeechSynthesis -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/paused MDN SpeechSynthesis.paused documentation>
+getPaused :: (MonadDOM m) => SpeechSynthesis -> m Bool
+getPaused self = liftDOM ((js_getPaused (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.paused Mozilla SpeechSynthesis.paused documentation> 
-getPaused :: (MonadIO m) => SpeechSynthesis -> m Bool
-getPaused self = liftIO (js_getPaused self)
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesis-onvoiceschanged voiceschanged event>
+voiceschanged :: EventName SpeechSynthesis Event
+voiceschanged = unsafeEventName (toJSString "voiceschanged")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisErrorEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisErrorEvent
+       (js_newSpeechSynthesisErrorEvent, js_getError, newSpeechSynthesisErrorEvent, getError, SpeechSynthesisErrorEvent(..), gTypeSpeechSynthesisErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SpeechSynthesisErrorEvent\"]($1, $2); })"
+        js_newSpeechSynthesisErrorEvent :: JSString -> SpeechSynthesisErrorEventInit -> IO SpeechSynthesisErrorEvent
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisErrorEvent/SpeechSynthesisErrorEvent MDN SpeechSynthesisErrorEvent. documentation>
+newSpeechSynthesisErrorEvent :: (MonadDOM m, ToJSString type') => type' -> SpeechSynthesisErrorEventInit -> m SpeechSynthesisErrorEvent
+newSpeechSynthesisErrorEvent type' eventInitDict = liftDOM ((js_newSpeechSynthesisErrorEvent (toJSString type') (eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: SpeechSynthesisErrorEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisErrorEvent/error MDN SpeechSynthesisErrorEvent.error documentation>
+getError :: (MonadDOM m) => SpeechSynthesisErrorEvent -> m SpeechSynthesisErrorCode
+getError self = liftDOM (((js_getError (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisErrorEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisErrorEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisErrorEventInit
+       (js_newSpeechSynthesisErrorEventInit, js_setError, js_getError, newSpeechSynthesisErrorEventInit, setError, getError, SpeechSynthesisErrorEventInit(..), gTypeSpeechSynthesisErrorEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"utterance\": $1, \"error\": $2}); })"
+        js_newSpeechSynthesisErrorEventInit :: SpeechSynthesisUtterance -> JSVal -> IO SpeechSynthesisErrorEventInit
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechsynthesiserroreventinit SpeechSynthesisErrorEventInit specification>
+newSpeechSynthesisErrorEventInit :: (MonadDOM m) => SpeechSynthesisUtterance -> SpeechSynthesisErrorCode -> m SpeechSynthesisErrorEventInit
+newSpeechSynthesisErrorEventInit utterance error = liftDOM (((toJSVal error) >>= \a2' -> js_newSpeechSynthesisErrorEventInit (utterance) a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: SpeechSynthesisErrorEventInit -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiserroreventinit-error SpeechSynthesisErrorEventInit.error specification>
+setError :: (MonadDOM m) => SpeechSynthesisErrorEventInit -> SpeechSynthesisErrorCode -> m ()
+setError self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setError (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })"
+        js_getError :: SpeechSynthesisErrorEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiserroreventinit-error SpeechSynthesisErrorEventInit.error specification>
+getError :: (MonadDOM m) => SpeechSynthesisErrorEventInit -> m SpeechSynthesisErrorCode
+getError self = liftDOM (((js_getError (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
@@ -1,51 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
-       (js_getCharIndex, getCharIndex, js_getElapsedTime, getElapsedTime,
-        js_getName, getName, SpeechSynthesisEvent(..),
-        gTypeSpeechSynthesisEvent)
+       (js_newSpeechSynthesisEvent, js_getUtterance, js_getCharIndex, js_getCharLength, js_getElapsedTime, js_getName, newSpeechSynthesisEvent, getUtterance, getCharIndex, getCharLength, getElapsedTime, getName, SpeechSynthesisEvent(..), gTypeSpeechSynthesisEvent, IsSpeechSynthesisEvent, toSpeechSynthesisEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SpeechSynthesisEvent\"]($1, $2); })"
+        js_newSpeechSynthesisEvent :: JSString -> SpeechSynthesisEventInit -> IO SpeechSynthesisEvent
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/SpeechSynthesisEvent MDN SpeechSynthesisEvent. documentation>
+newSpeechSynthesisEvent :: (MonadDOM m, ToJSString type', IsSpeechSynthesisEventInit eventInitDict) => type' -> eventInitDict -> m SpeechSynthesisEvent
+newSpeechSynthesisEvent type' eventInitDict = liftDOM ((js_newSpeechSynthesisEvent (toJSString type') (Types.toSpeechSynthesisEventInit eventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"utterance\"]; })"
+        js_getUtterance :: SpeechSynthesisEvent -> IO SpeechSynthesisUtterance
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/utterance MDN SpeechSynthesisEvent.utterance documentation>
+getUtterance :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m SpeechSynthesisUtterance
+getUtterance self = liftDOM ((js_getUtterance ((Types.toSpeechSynthesisEvent self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"charIndex\"]; })"
         js_getCharIndex :: SpeechSynthesisEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/charIndex MDN SpeechSynthesisEvent.charIndex documentation>
+getCharIndex :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Word
+getCharIndex self = liftDOM ((js_getCharIndex ((Types.toSpeechSynthesisEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.charIndex Mozilla SpeechSynthesisEvent.charIndex documentation> 
-getCharIndex :: (MonadIO m) => SpeechSynthesisEvent -> m Word
-getCharIndex self = liftIO (js_getCharIndex self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"charLength\"]; })"
+        js_getCharLength :: SpeechSynthesisEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/charLength MDN SpeechSynthesisEvent.charLength documentation>
+getCharLength :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Word
+getCharLength self = liftDOM ((js_getCharLength ((Types.toSpeechSynthesisEvent self))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
         js_getElapsedTime :: SpeechSynthesisEvent -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.elapsedTime Mozilla SpeechSynthesisEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadIO m) => SpeechSynthesisEvent -> m Float
-getElapsedTime self = liftIO (js_getElapsedTime self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        SpeechSynthesisEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/elapsedTime MDN SpeechSynthesisEvent.elapsedTime documentation>
+getElapsedTime :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Float
+getElapsedTime self = liftDOM ((js_getElapsedTime ((Types.toSpeechSynthesisEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.name Mozilla SpeechSynthesisEvent.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) =>
-          SpeechSynthesisEvent -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: SpeechSynthesisEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/name MDN SpeechSynthesisEvent.name documentation>
+getName :: (MonadDOM m, IsSpeechSynthesisEvent self, FromJSString result) => self -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName ((Types.toSpeechSynthesisEvent self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEventInit.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEventInit
+       (js_newSpeechSynthesisEventInit, js_setUtterance, js_getUtterance, js_setCharIndex, js_getCharIndex, js_setCharLength, js_getCharLength, js_setElapsedTime, js_getElapsedTime, js_setName, js_getName, newSpeechSynthesisEventInit, setUtterance, getUtterance, setCharIndex, getCharIndex, getCharIndexUnsafe, getCharIndexUnchecked, setCharLength, getCharLength, getCharLengthUnsafe, getCharLengthUnchecked, setElapsedTime, getElapsedTime, getElapsedTimeUnsafe, getElapsedTimeUnchecked, setName, getName, getNameUnsafe, getNameUnchecked, SpeechSynthesisEventInit(..), gTypeSpeechSynthesisEventInit, IsSpeechSynthesisEventInit, toSpeechSynthesisEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"utterance\": $1}); })"
+        js_newSpeechSynthesisEventInit :: SpeechSynthesisUtterance -> IO SpeechSynthesisEventInit
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechsynthesiseventinit SpeechSynthesisEventInit specification>
+newSpeechSynthesisEventInit :: (MonadDOM m) => SpeechSynthesisUtterance -> m SpeechSynthesisEventInit
+newSpeechSynthesisEventInit utterance = liftDOM ((js_newSpeechSynthesisEventInit (utterance)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"utterance\"] = $2; })"
+        js_setUtterance :: SpeechSynthesisEventInit -> SpeechSynthesisUtterance -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-utterance SpeechSynthesisEventInit.utterance specification>
+setUtterance :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> SpeechSynthesisUtterance -> m ()
+setUtterance self val = liftDOM (void ((js_setUtterance ((Types.toSpeechSynthesisEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"utterance\"]; })"
+        js_getUtterance :: SpeechSynthesisEventInit -> IO SpeechSynthesisUtterance
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-utterance SpeechSynthesisEventInit.utterance specification>
+getUtterance :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m SpeechSynthesisUtterance
+getUtterance self = liftDOM ((js_getUtterance ((Types.toSpeechSynthesisEventInit self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"charIndex\"] = $2; })"
+        js_setCharIndex :: SpeechSynthesisEventInit -> Word -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charindex SpeechSynthesisEventInit.charIndex specification>
+setCharIndex :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> Word -> m ()
+setCharIndex self val = liftDOM (void ((js_setCharIndex ((Types.toSpeechSynthesisEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"charIndex\"]; })"
+        js_getCharIndex :: SpeechSynthesisEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charindex SpeechSynthesisEventInit.charIndex specification>
+getCharIndex :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m (Maybe Word)
+getCharIndex self = liftDOM (((js_getCharIndex ((Types.toSpeechSynthesisEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charindex SpeechSynthesisEventInit.charIndex specification>
+getCharIndexUnsafe :: (MonadDOM m, IsSpeechSynthesisEventInit self, HasCallStack) => self -> m Word
+getCharIndexUnsafe self = liftDOM ((((js_getCharIndex ((Types.toSpeechSynthesisEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charindex SpeechSynthesisEventInit.charIndex specification>
+getCharIndexUnchecked :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m Word
+getCharIndexUnchecked self = liftDOM ((pFromJSVal <$> (js_getCharIndex ((Types.toSpeechSynthesisEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"charLength\"] = $2; })"
+        js_setCharLength :: SpeechSynthesisEventInit -> Word -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charlength SpeechSynthesisEventInit.charLength specification>
+setCharLength :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> Word -> m ()
+setCharLength self val = liftDOM (void ((js_setCharLength ((Types.toSpeechSynthesisEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"charLength\"]; })"
+        js_getCharLength :: SpeechSynthesisEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charlength SpeechSynthesisEventInit.charLength specification>
+getCharLength :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m (Maybe Word)
+getCharLength self = liftDOM (((js_getCharLength ((Types.toSpeechSynthesisEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charlength SpeechSynthesisEventInit.charLength specification>
+getCharLengthUnsafe :: (MonadDOM m, IsSpeechSynthesisEventInit self, HasCallStack) => self -> m Word
+getCharLengthUnsafe self = liftDOM ((((js_getCharLength ((Types.toSpeechSynthesisEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-charlength SpeechSynthesisEventInit.charLength specification>
+getCharLengthUnchecked :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m Word
+getCharLengthUnchecked self = liftDOM ((pFromJSVal <$> (js_getCharLength ((Types.toSpeechSynthesisEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"elapsedTime\"] = $2; })"
+        js_setElapsedTime :: SpeechSynthesisEventInit -> Float -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-elapsedtime SpeechSynthesisEventInit.elapsedTime specification>
+setElapsedTime :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> Float -> m ()
+setElapsedTime self val = liftDOM (void ((js_setElapsedTime ((Types.toSpeechSynthesisEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: SpeechSynthesisEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-elapsedtime SpeechSynthesisEventInit.elapsedTime specification>
+getElapsedTime :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m (Maybe Float)
+getElapsedTime self = liftDOM (((js_getElapsedTime ((Types.toSpeechSynthesisEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-elapsedtime SpeechSynthesisEventInit.elapsedTime specification>
+getElapsedTimeUnsafe :: (MonadDOM m, IsSpeechSynthesisEventInit self, HasCallStack) => self -> m Float
+getElapsedTimeUnsafe self = liftDOM ((((js_getElapsedTime ((Types.toSpeechSynthesisEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-elapsedtime SpeechSynthesisEventInit.elapsedTime specification>
+getElapsedTimeUnchecked :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m Float
+getElapsedTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getElapsedTime ((Types.toSpeechSynthesisEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: SpeechSynthesisEventInit -> JSString -> IO ()
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-name SpeechSynthesisEventInit.name specification>
+setName :: (MonadDOM m, IsSpeechSynthesisEventInit self, ToJSString val) => self -> val -> m ()
+setName self val = liftDOM (void ((js_setName ((Types.toSpeechSynthesisEventInit self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: SpeechSynthesisEventInit -> IO JSVal
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-name SpeechSynthesisEventInit.name specification>
+getName :: (MonadDOM m, IsSpeechSynthesisEventInit self, FromJSString result) => self -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName ((Types.toSpeechSynthesisEventInit self)))))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-name SpeechSynthesisEventInit.name specification>
+getNameUnsafe :: (MonadDOM m, IsSpeechSynthesisEventInit self, HasCallStack, FromJSString result) => self -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName ((Types.toSpeechSynthesisEventInit self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-name SpeechSynthesisEventInit.name specification>
+getNameUnchecked :: (MonadDOM m, IsSpeechSynthesisEventInit self, FromJSString result) => self -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName ((Types.toSpeechSynthesisEventInit self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
@@ -1,187 +1,131 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
-       (js_newSpeechSynthesisUtterance, newSpeechSynthesisUtterance,
-        js_setText, setText, js_getText, getText, js_setLang, setLang,
-        js_getLang, getLang, js_setVoice, setVoice, js_getVoice, getVoice,
-        getVoiceUnsafe, getVoiceUnchecked, js_setVolume, setVolume,
-        js_getVolume, getVolume, js_setRate, setRate, js_getRate, getRate,
-        js_setPitch, setPitch, js_getPitch, getPitch, start, end, error,
-        pause, resume, mark, boundary, SpeechSynthesisUtterance(..),
-        gTypeSpeechSynthesisUtterance)
+       (js_newSpeechSynthesisUtterance, js_setText, js_getText, js_setLang, js_getLang, js_setVoice, js_getVoice, js_setVolume, js_getVolume, js_setRate, js_getRate, js_setPitch, js_getPitch, newSpeechSynthesisUtterance, setText, getText, setLang, getLang, setVoice, getVoice, getVoiceUnsafe, getVoiceUnchecked, setVolume, getVolume, setRate, getRate, setPitch, getPitch, start, end, error, pause, resume, mark, boundary, SpeechSynthesisUtterance(..), gTypeSpeechSynthesisUtterance)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1) => { return new window[\"SpeechSynthesisUtterance\"]($1); })"
-        js_newSpeechSynthesisUtterance ::
-        Optional JSString -> IO SpeechSynthesisUtterance
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation> 
-newSpeechSynthesisUtterance ::
-                            (MonadIO m, ToJSString text) =>
-                              Maybe text -> m SpeechSynthesisUtterance
-newSpeechSynthesisUtterance text
-  = liftIO (js_newSpeechSynthesisUtterance (toOptionalJSString text))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
-        SpeechSynthesisUtterance -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"SpeechSynthesisUtterance\"]($1); })"
+        js_newSpeechSynthesisUtterance :: (Optional JSString) -> IO SpeechSynthesisUtterance
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/SpeechSynthesisUtterance MDN SpeechSynthesisUtterance. documentation>
+newSpeechSynthesisUtterance :: (MonadDOM m, ToJSString text) => Maybe text -> m SpeechSynthesisUtterance
+newSpeechSynthesisUtterance text = liftDOM ((js_newSpeechSynthesisUtterance (toOptionalJSString text)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
-setText ::
-        (MonadIO m, ToJSString val) =>
-          SpeechSynthesisUtterance -> val -> m ()
-setText self val = liftIO (js_setText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
-        SpeechSynthesisUtterance -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: SpeechSynthesisUtterance -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/text MDN SpeechSynthesisUtterance.text documentation>
+setText :: (MonadDOM m, ToJSString val) => SpeechSynthesisUtterance -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
-getText ::
-        (MonadIO m, FromJSString result) =>
-          SpeechSynthesisUtterance -> m result
-getText self = liftIO (fromJSString <$> (js_getText self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"lang\"] = $2; })" js_setLang ::
-        SpeechSynthesisUtterance -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: SpeechSynthesisUtterance -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/text MDN SpeechSynthesisUtterance.text documentation>
+getText :: (MonadDOM m, FromJSString result) => SpeechSynthesisUtterance -> m result
+getText self = liftDOM ((fromJSString <$> (js_getText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
-setLang ::
-        (MonadIO m, ToJSString val) =>
-          SpeechSynthesisUtterance -> val -> m ()
-setLang self val = liftIO (js_setLang self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })" js_getLang ::
-        SpeechSynthesisUtterance -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"lang\"] = $2; })"
+        js_setLang :: SpeechSynthesisUtterance -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/lang MDN SpeechSynthesisUtterance.lang documentation>
+setLang :: (MonadDOM m, ToJSString val) => SpeechSynthesisUtterance -> val -> m ()
+setLang self val = liftDOM (void ((js_setLang (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
-getLang ::
-        (MonadIO m, FromJSString result) =>
-          SpeechSynthesisUtterance -> m result
-getLang self = liftIO (fromJSString <$> (js_getLang self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"voice\"] = $2; })" js_setVoice
-        ::
-        SpeechSynthesisUtterance -> Optional SpeechSynthesisVoice -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })"
+        js_getLang :: SpeechSynthesisUtterance -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/lang MDN SpeechSynthesisUtterance.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => SpeechSynthesisUtterance -> m result
+getLang self = liftDOM ((fromJSString <$> (js_getLang (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
-setVoice ::
-         (MonadIO m) =>
-           SpeechSynthesisUtterance -> Maybe SpeechSynthesisVoice -> m ()
-setVoice self val = liftIO (js_setVoice self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"voice\"]; })" js_getVoice ::
-        SpeechSynthesisUtterance -> IO (Nullable SpeechSynthesisVoice)
+foreign import javascript safe "(($1, $2) => { $1[\"voice\"] = $2; })"
+        js_setVoice :: SpeechSynthesisUtterance -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/voice MDN SpeechSynthesisUtterance.voice documentation>
+setVoice :: (MonadDOM m) => SpeechSynthesisUtterance -> Maybe SpeechSynthesisVoice -> m ()
+setVoice self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setVoice (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
-getVoice ::
-         (MonadIO m) =>
-           SpeechSynthesisUtterance -> m (Maybe SpeechSynthesisVoice)
-getVoice self = liftIO (nullableToMaybe <$> (js_getVoice self))
+foreign import javascript unsafe "(($1) => { return $1[\"voice\"]; })"
+        js_getVoice :: SpeechSynthesisUtterance -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/voice MDN SpeechSynthesisUtterance.voice documentation>
+getVoice :: (MonadDOM m) => SpeechSynthesisUtterance -> m (Maybe SpeechSynthesisVoice)
+getVoice self = liftDOM (((js_getVoice (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
-getVoiceUnsafe ::
-               (MonadIO m, HasCallStack) =>
-                 SpeechSynthesisUtterance -> m SpeechSynthesisVoice
-getVoiceUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getVoice self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/voice MDN SpeechSynthesisUtterance.voice documentation>
+getVoiceUnsafe :: (MonadDOM m, HasCallStack) => SpeechSynthesisUtterance -> m SpeechSynthesisVoice
+getVoiceUnsafe self = liftDOM ((((js_getVoice (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
-getVoiceUnchecked ::
-                  (MonadIO m) => SpeechSynthesisUtterance -> m SpeechSynthesisVoice
-getVoiceUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getVoice self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"volume\"] = $2; })"
-        js_setVolume :: SpeechSynthesisUtterance -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/voice MDN SpeechSynthesisUtterance.voice documentation>
+getVoiceUnchecked :: (MonadDOM m) => SpeechSynthesisUtterance -> m SpeechSynthesisVoice
+getVoiceUnchecked self = liftDOM ((pFromJSVal <$> (js_getVoice (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
-setVolume ::
-          (MonadIO m) => SpeechSynthesisUtterance -> Float -> m ()
-setVolume self val = liftIO (js_setVolume self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })" js_getVolume ::
-        SpeechSynthesisUtterance -> IO Float
+foreign import javascript safe "(($1, $2) => { $1[\"volume\"] = $2; })"
+        js_setVolume :: SpeechSynthesisUtterance -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/volume MDN SpeechSynthesisUtterance.volume documentation>
+setVolume :: (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setVolume self val = liftDOM (void ((js_setVolume (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
-getVolume :: (MonadIO m) => SpeechSynthesisUtterance -> m Float
-getVolume self = liftIO (js_getVolume self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"rate\"] = $2; })" js_setRate ::
-        SpeechSynthesisUtterance -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })"
+        js_getVolume :: SpeechSynthesisUtterance -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/volume MDN SpeechSynthesisUtterance.volume documentation>
+getVolume :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
+getVolume self = liftDOM ((js_getVolume (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
-setRate :: (MonadIO m) => SpeechSynthesisUtterance -> Float -> m ()
-setRate self val = liftIO (js_setRate self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rate\"]; })" js_getRate ::
-        SpeechSynthesisUtterance -> IO Float
+foreign import javascript safe "(($1, $2) => { $1[\"rate\"] = $2; })"
+        js_setRate :: SpeechSynthesisUtterance -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/rate MDN SpeechSynthesisUtterance.rate documentation>
+setRate :: (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setRate self val = liftDOM (void ((js_setRate (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
-getRate :: (MonadIO m) => SpeechSynthesisUtterance -> m Float
-getRate self = liftIO (js_getRate self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"pitch\"] = $2; })" js_setPitch
-        :: SpeechSynthesisUtterance -> Float -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"rate\"]; })"
+        js_getRate :: SpeechSynthesisUtterance -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/rate MDN SpeechSynthesisUtterance.rate documentation>
+getRate :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
+getRate self = liftDOM ((js_getRate (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
-setPitch ::
-         (MonadIO m) => SpeechSynthesisUtterance -> Float -> m ()
-setPitch self val = liftIO (js_setPitch self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pitch\"]; })" js_getPitch ::
-        SpeechSynthesisUtterance -> IO Float
+foreign import javascript safe "(($1, $2) => { $1[\"pitch\"] = $2; })"
+        js_setPitch :: SpeechSynthesisUtterance -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/pitch MDN SpeechSynthesisUtterance.pitch documentation>
+setPitch :: (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setPitch self val = liftDOM (void ((js_setPitch (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
-getPitch :: (MonadIO m) => SpeechSynthesisUtterance -> m Float
-getPitch self = liftIO (js_getPitch self)
+foreign import javascript unsafe "(($1) => { return $1[\"pitch\"]; })"
+        js_getPitch :: SpeechSynthesisUtterance -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/pitch MDN SpeechSynthesisUtterance.pitch documentation>
+getPitch :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
+getPitch self = liftDOM ((js_getPitch (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onstart Mozilla SpeechSynthesisUtterance.onstart documentation> 
-start :: EventName SpeechSynthesisUtterance Event
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesisutterance-onstart start event>
+start :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent
 start = unsafeEventName (toJSString "start")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onend Mozilla SpeechSynthesisUtterance.onend documentation> 
-end :: EventName SpeechSynthesisUtterance Event
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesisutterance-onend end event>
+end :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent
 end = unsafeEventName (toJSString "end")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onerror Mozilla SpeechSynthesisUtterance.onerror documentation> 
-error :: EventName SpeechSynthesisUtterance UIEvent
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesisutterance-onerror error event>
+error :: EventName SpeechSynthesisUtterance SpeechSynthesisErrorEvent
 error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onpause Mozilla SpeechSynthesisUtterance.onpause documentation> 
-pause :: EventName SpeechSynthesisUtterance Event
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesisutterance-onpause pause event>
+pause :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent
 pause = unsafeEventName (toJSString "pause")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onresume Mozilla SpeechSynthesisUtterance.onresume documentation> 
-resume :: EventName SpeechSynthesisUtterance Event
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesisutterance-onresume resume event>
+resume :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent
 resume = unsafeEventName (toJSString "resume")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onmark Mozilla SpeechSynthesisUtterance.onmark documentation> 
-mark :: EventName SpeechSynthesisUtterance Event
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesisutterance-onmark mark event>
+mark :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent
 mark = unsafeEventName (toJSString "mark")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onboundary Mozilla SpeechSynthesisUtterance.onboundary documentation> 
-boundary :: EventName SpeechSynthesisUtterance Event
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesisutterance-onboundary boundary event>
+boundary :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent
 boundary = unsafeEventName (toJSString "boundary")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
@@ -1,69 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
-       (js_getVoiceURI, getVoiceURI, js_getName, getName, js_getLang,
-        getLang, js_getLocalService, getLocalService, js_getDefault,
-        getDefault, SpeechSynthesisVoice(..), gTypeSpeechSynthesisVoice)
+       (js_getVoiceURI, js_getName, js_getLang, js_getLocalService, js_getDefault, getVoiceURI, getName, getLang, getLocalService, getDefault, SpeechSynthesisVoice(..), gTypeSpeechSynthesisVoice)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"voiceURI\"]; })" js_getVoiceURI
-        :: SpeechSynthesisVoice -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.voiceURI Mozilla SpeechSynthesisVoice.voiceURI documentation> 
-getVoiceURI ::
-            (MonadIO m, FromJSString result) =>
-              SpeechSynthesisVoice -> m result
-getVoiceURI self = liftIO (fromJSString <$> (js_getVoiceURI self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        SpeechSynthesisVoice -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"voiceURI\"]; })"
+        js_getVoiceURI :: SpeechSynthesisVoice -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/voiceURI MDN SpeechSynthesisVoice.voiceURI documentation>
+getVoiceURI :: (MonadDOM m, FromJSString result) => SpeechSynthesisVoice -> m result
+getVoiceURI self = liftDOM ((fromJSString <$> (js_getVoiceURI (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.name Mozilla SpeechSynthesisVoice.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) =>
-          SpeechSynthesisVoice -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })" js_getLang ::
-        SpeechSynthesisVoice -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: SpeechSynthesisVoice -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/name MDN SpeechSynthesisVoice.name documentation>
+getName :: (MonadDOM m, FromJSString result) => SpeechSynthesisVoice -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.lang Mozilla SpeechSynthesisVoice.lang documentation> 
-getLang ::
-        (MonadIO m, FromJSString result) =>
-          SpeechSynthesisVoice -> m result
-getLang self = liftIO (fromJSString <$> (js_getLang self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"localService\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })"
+        js_getLang :: SpeechSynthesisVoice -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/lang MDN SpeechSynthesisVoice.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => SpeechSynthesisVoice -> m result
+getLang self = liftDOM ((fromJSString <$> (js_getLang (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"localService\"]; })"
         js_getLocalService :: SpeechSynthesisVoice -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/localService MDN SpeechSynthesisVoice.localService documentation>
+getLocalService :: (MonadDOM m) => SpeechSynthesisVoice -> m Bool
+getLocalService self = liftDOM ((js_getLocalService (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.localService Mozilla SpeechSynthesisVoice.localService documentation> 
-getLocalService :: (MonadIO m) => SpeechSynthesisVoice -> m Bool
-getLocalService self = liftIO (js_getLocalService self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"default\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"default\"]; })"
         js_getDefault :: SpeechSynthesisVoice -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.default Mozilla SpeechSynthesisVoice.default documentation> 
-getDefault :: (MonadIO m) => SpeechSynthesisVoice -> m Bool
-getDefault self = liftIO (js_getDefault self)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/default MDN SpeechSynthesisVoice.default documentation>
+getDefault :: (MonadDOM m) => SpeechSynthesisVoice -> m Bool
+getDefault self = liftDOM ((js_getDefault (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StartViewTransitionOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/StartViewTransitionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StartViewTransitionOptions.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StartViewTransitionOptions
+       (js_newStartViewTransitionOptions, js_setUpdate, js_setTypes, js_getTypes, newStartViewTransitionOptions, setUpdate, setTypes, getTypes, getTypesUnsafe, getTypesUnchecked, StartViewTransitionOptions(..), gTypeStartViewTransitionOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newStartViewTransitionOptions :: IO StartViewTransitionOptions
+-- | <https://drafts.csswg.org/css-view-transitions-2/#dictdef-startviewtransitionoptions StartViewTransitionOptions specification>
+newStartViewTransitionOptions :: (MonadDOM m) => m StartViewTransitionOptions
+newStartViewTransitionOptions = liftDOM ((js_newStartViewTransitionOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"update\"] = $2; })"
+        js_setUpdate :: StartViewTransitionOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/css-view-transitions-2/#dom-startviewtransitionoptions-update StartViewTransitionOptions.update specification>
+setUpdate :: (MonadDOM m) => StartViewTransitionOptions -> Maybe ViewTransitionUpdateCallback -> m ()
+setUpdate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setUpdate (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"types\"] = $2; })"
+        js_setTypes :: StartViewTransitionOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/css-view-transitions-2/#dom-startviewtransitionoptions-types StartViewTransitionOptions.types specification>
+setTypes :: (MonadDOM m, ToJSString val) => StartViewTransitionOptions -> Maybe [val] -> m ()
+setTypes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTypes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })"
+        js_getTypes :: StartViewTransitionOptions -> IO JSVal
+-- | <https://drafts.csswg.org/css-view-transitions-2/#dom-startviewtransitionoptions-types StartViewTransitionOptions.types specification>
+getTypes :: (MonadDOM m, FromJSString result) => StartViewTransitionOptions -> m (Maybe [result])
+getTypes self = liftDOM (((js_getTypes (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-view-transitions-2/#dom-startviewtransitionoptions-types StartViewTransitionOptions.types specification>
+getTypesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StartViewTransitionOptions -> m [result]
+getTypesUnsafe self = liftDOM ((((js_getTypes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-view-transitions-2/#dom-startviewtransitionoptions-types StartViewTransitionOptions.types specification>
+getTypesUnchecked :: (MonadDOM m, FromJSString result) => StartViewTransitionOptions -> m [result]
+getTypesUnchecked self = liftDOM (((js_getTypes (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs b/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
@@ -1,64 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.StaticRange
-       (js_getStartOffset, getStartOffset, js_getEndOffset, getEndOffset,
-        js_getStartContainer, getStartContainer, js_getEndContainer,
-        getEndContainer, js_getCollapsed, getCollapsed, StaticRange(..),
-        gTypeStaticRange)
+       (js_newStaticRange, newStaticRange, StaticRange(..), gTypeStaticRange)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
-        js_getStartOffset :: StaticRange -> IO Word
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.startOffset Mozilla StaticRange.startOffset documentation> 
-getStartOffset :: (MonadIO m) => StaticRange -> m Word
-getStartOffset self = liftIO (js_getStartOffset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endOffset\"]; })"
-        js_getEndOffset :: StaticRange -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.endOffset Mozilla StaticRange.endOffset documentation> 
-getEndOffset :: (MonadIO m) => StaticRange -> m Word
-getEndOffset self = liftIO (js_getEndOffset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"startContainer\"]; })"
-        js_getStartContainer :: StaticRange -> IO Node
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.startContainer Mozilla StaticRange.startContainer documentation> 
-getStartContainer :: (MonadIO m) => StaticRange -> m Node
-getStartContainer self = liftIO (js_getStartContainer self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endContainer\"]; })"
-        js_getEndContainer :: StaticRange -> IO Node
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.endContainer Mozilla StaticRange.endContainer documentation> 
-getEndContainer :: (MonadIO m) => StaticRange -> m Node
-getEndContainer self = liftIO (js_getEndContainer self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"collapsed\"] ? 1 : 0); })"
-        js_getCollapsed :: StaticRange -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.collapsed Mozilla StaticRange.collapsed documentation> 
-getCollapsed :: (MonadIO m) => StaticRange -> m Bool
-getCollapsed self = liftIO (js_getCollapsed self)
+foreign import javascript safe "(($1) => { return new globalThis[\"StaticRange\"]($1); })"
+        js_newStaticRange :: StaticRangeInit -> IO StaticRange
+-- | <https://developer.mozilla.org/docs/Web/API/StaticRange/StaticRange MDN StaticRange. documentation>
+newStaticRange :: (MonadDOM m) => StaticRangeInit -> m StaticRange
+newStaticRange init = liftDOM ((js_newStaticRange (init)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StaticRangeInit.hs b/src/GHCJS/DOM/JSFFI/Generated/StaticRangeInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StaticRangeInit.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StaticRangeInit
+       (js_newStaticRangeInit, js_setStartContainer, js_getStartContainer, js_setStartOffset, js_getStartOffset, js_setEndContainer, js_getEndContainer, js_setEndOffset, js_getEndOffset, newStaticRangeInit, setStartContainer, getStartContainer, setStartOffset, getStartOffset, setEndContainer, getEndContainer, setEndOffset, getEndOffset, StaticRangeInit(..), gTypeStaticRangeInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"startContainer\": $1, \"startOffset\": $2, \"endContainer\": $3, \"endOffset\": $4}); })"
+        js_newStaticRangeInit :: Node -> Word -> Node -> Word -> IO StaticRangeInit
+-- | <https://dom.spec.whatwg.org/#dictdef-staticrangeinit StaticRangeInit specification>
+newStaticRangeInit :: (MonadDOM m, IsNode startContainer, IsNode endContainer) => startContainer -> Word -> endContainer -> Word -> m StaticRangeInit
+newStaticRangeInit startContainer startOffset endContainer endOffset = liftDOM ((js_newStaticRangeInit (Types.toNode startContainer) (startOffset) (Types.toNode endContainer) (endOffset)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startContainer\"] = $2; })"
+        js_setStartContainer :: StaticRangeInit -> Node -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startcontainer StaticRangeInit.startContainer specification>
+setStartContainer :: (MonadDOM m, IsNode val) => StaticRangeInit -> val -> m ()
+setStartContainer self val = liftDOM (void ((js_setStartContainer (self) (Types.toNode val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startContainer\"]; })"
+        js_getStartContainer :: StaticRangeInit -> IO Node
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startcontainer StaticRangeInit.startContainer specification>
+getStartContainer :: (MonadDOM m) => StaticRangeInit -> m Node
+getStartContainer self = liftDOM ((js_getStartContainer (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startOffset\"] = $2; })"
+        js_setStartOffset :: StaticRangeInit -> Word -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startoffset StaticRangeInit.startOffset specification>
+setStartOffset :: (MonadDOM m) => StaticRangeInit -> Word -> m ()
+setStartOffset self val = liftDOM (void ((js_setStartOffset (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
+        js_getStartOffset :: StaticRangeInit -> IO Word
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startoffset StaticRangeInit.startOffset specification>
+getStartOffset :: (MonadDOM m) => StaticRangeInit -> m Word
+getStartOffset self = liftDOM ((js_getStartOffset (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endContainer\"] = $2; })"
+        js_setEndContainer :: StaticRangeInit -> Node -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endcontainer StaticRangeInit.endContainer specification>
+setEndContainer :: (MonadDOM m, IsNode val) => StaticRangeInit -> val -> m ()
+setEndContainer self val = liftDOM (void ((js_setEndContainer (self) (Types.toNode val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endContainer\"]; })"
+        js_getEndContainer :: StaticRangeInit -> IO Node
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endcontainer StaticRangeInit.endContainer specification>
+getEndContainer :: (MonadDOM m) => StaticRangeInit -> m Node
+getEndContainer self = liftDOM ((js_getEndContainer (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"endOffset\"] = $2; })"
+        js_setEndOffset :: StaticRangeInit -> Word -> IO ()
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endoffset StaticRangeInit.endOffset specification>
+setEndOffset :: (MonadDOM m) => StaticRangeInit -> Word -> m ()
+setEndOffset self val = liftDOM (void ((js_setEndOffset (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endOffset\"]; })"
+        js_getEndOffset :: StaticRangeInit -> IO Word
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endoffset StaticRangeInit.endOffset specification>
+getEndOffset :: (MonadDOM m) => StaticRangeInit -> m Word
+getEndOffset self = liftDOM ((js_getEndOffset (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StereoPannerNode.hs b/src/GHCJS/DOM/JSFFI/Generated/StereoPannerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StereoPannerNode.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StereoPannerNode
+       (js_newStereoPannerNode, js_getPan, newStereoPannerNode, getPan, StereoPannerNode(..), gTypeStereoPannerNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"StereoPannerNode\"]($1, $2); })"
+        js_newStereoPannerNode :: BaseAudioContext -> JSVal -> IO StereoPannerNode
+-- | <https://developer.mozilla.org/docs/Web/API/StereoPannerNode/StereoPannerNode MDN StereoPannerNode. documentation>
+newStereoPannerNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe StereoPannerOptions -> m StereoPannerNode
+newStereoPannerNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newStereoPannerNode (Types.toBaseAudioContext context) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pan\"]; })"
+        js_getPan :: StereoPannerNode -> IO AudioParam
+-- | <https://developer.mozilla.org/docs/Web/API/StereoPannerNode/pan MDN StereoPannerNode.pan documentation>
+getPan :: (MonadDOM m) => StereoPannerNode -> m AudioParam
+getPan self = liftDOM ((js_getPan (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StereoPannerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/StereoPannerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StereoPannerOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StereoPannerOptions
+       (js_newStereoPannerOptions, js_setPan, js_getPan, newStereoPannerOptions, setPan, getPan, getPanUnsafe, getPanUnchecked, StereoPannerOptions(..), gTypeStereoPannerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newStereoPannerOptions :: IO StereoPannerOptions
+-- | <https://webaudio.github.io/web-audio-api/#StereoPannerOptions StereoPannerOptions specification>
+newStereoPannerOptions :: (MonadDOM m) => m StereoPannerOptions
+newStereoPannerOptions = liftDOM ((js_newStereoPannerOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pan\"] = $2; })"
+        js_setPan :: StereoPannerOptions -> Float -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-stereopanneroptions-pan StereoPannerOptions.pan specification>
+setPan :: (MonadDOM m) => StereoPannerOptions -> Float -> m ()
+setPan self val = liftDOM (void ((js_setPan (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pan\"]; })"
+        js_getPan :: StereoPannerOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-stereopanneroptions-pan StereoPannerOptions.pan specification>
+getPan :: (MonadDOM m) => StereoPannerOptions -> m (Maybe Float)
+getPan self = liftDOM (((js_getPan (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-stereopanneroptions-pan StereoPannerOptions.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => StereoPannerOptions -> m Float
+getPanUnsafe self = liftDOM ((((js_getPan (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-stereopanneroptions-pan StereoPannerOptions.pan specification>
+getPanUnchecked :: (MonadDOM m) => StereoPannerOptions -> m Float
+getPanUnchecked self = liftDOM ((pFromJSVal <$> (js_getPan (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Storage.hs b/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
@@ -1,121 +1,77 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Storage
-       (js_key, key, key_, keyUnsafe, keyUnchecked, js_getItem, getItem,
-        getItem_, getItemUnsafe, getItemUnchecked, js_setItem, setItem,
-        js_removeItem, removeItem, js_clear, clear, js_getLength,
-        getLength, Storage(..), gTypeStorage)
+       (js_clear, js_getItem, js_key, js_removeItem, js_setItem, js_getLength, clear, getItem, getItem_, getItemUnsafe, getItemUnchecked, key, key_, keyUnsafe, keyUnchecked, removeItem, setItem, getLength, Storage(..), gTypeStorage)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"key\"]($2); })" js_key ::
-        Storage -> Word -> IO (Nullable JSString)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-key ::
-    (MonadIO m, FromJSString result) =>
-      Storage -> Word -> m (Maybe result)
-key self index = liftIO (fromMaybeJSString <$> (js_key self index))
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: Storage -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/clear MDN Storage.clear documentation>
+clear :: (MonadDOM m) => Storage -> m ()
+clear self = liftDOM (void ((js_clear (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-key_ :: (MonadIO m) => Storage -> Word -> m ()
-key_ self index = liftIO (void (js_key self index))
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })"
+        js_getItem :: Storage -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/getItem MDN Storage.getItem documentation>
+getItem :: (MonadDOM m, ToJSString key, FromJSString result) => Storage -> key -> m (Maybe result)
+getItem self key = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getItem (self) (toJSString key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-keyUnsafe ::
-          (MonadIO m, HasCallStack, FromJSString result) =>
-            Storage -> Word -> m result
-keyUnsafe self index
-  = liftIO
-      ((fromMaybeJSString <$> (js_key self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/getItem MDN Storage.getItem documentation>
+getItem_ :: (MonadDOM m, ToJSString key) => Storage -> key -> m ()
+getItem_ self key = liftDOM (void ((js_getItem (self) (toJSString key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-keyUnchecked ::
-             (MonadIO m, FromJSString result) => Storage -> Word -> m result
-keyUnchecked self index
-  = liftIO (fromJust . fromMaybeJSString <$> (js_key self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[$2]; })" js_getItem ::
-        Storage -> JSString -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/getItem MDN Storage.getItem documentation>
+getItemUnsafe :: (MonadDOM m, ToJSString key, HasCallStack, FromJSString result) => Storage -> key -> m result
+getItemUnsafe self key = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getItem (self) (toJSString key))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
-getItem ::
-        (MonadIO m, ToJSString key, FromJSString result) =>
-          Storage -> key -> m (Maybe result)
-getItem self key
-  = liftIO (fromMaybeJSString <$> (js_getItem self (toJSString key)))
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/getItem MDN Storage.getItem documentation>
+getItemUnchecked :: (MonadDOM m, ToJSString key, FromJSString result) => Storage -> key -> m result
+getItemUnchecked self key = liftDOM ((pFromJSVal <$> (js_getItem (self) (toJSString key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
-getItem_ :: (MonadIO m, ToJSString key) => Storage -> key -> m ()
-getItem_ self key
-  = liftIO (void (js_getItem self (toJSString key)))
+foreign import javascript safe "(($1, $2) => { return $1[\"key\"]($2); })"
+        js_key :: Storage -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/key MDN Storage.key documentation>
+key :: (MonadDOM m, FromJSString result) => Storage -> Word -> m (Maybe result)
+key self index = liftDOM (((fromMaybeJSString . Nullable) <$> (js_key (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
-getItemUnsafe ::
-              (MonadIO m, ToJSString key, HasCallStack, FromJSString result) =>
-                Storage -> key -> m result
-getItemUnsafe self key
-  = liftIO
-      ((fromMaybeJSString <$> (js_getItem self (toJSString key))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/key MDN Storage.key documentation>
+key_ :: (MonadDOM m) => Storage -> Word -> m ()
+key_ self index = liftDOM (void ((js_key (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
-getItemUnchecked ::
-                 (MonadIO m, ToJSString key, FromJSString result) =>
-                   Storage -> key -> m result
-getItemUnchecked self key
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getItem self (toJSString key)))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setItem\"]($2, $3); })" js_setItem
-        :: Storage -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/key MDN Storage.key documentation>
+keyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => Storage -> Word -> m result
+keyUnsafe self index = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_key (self) (index))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.setItem Mozilla Storage.setItem documentation> 
-setItem ::
-        (MonadIO m, ToJSString key, ToJSString data') =>
-          Storage -> key -> data' -> m ()
-setItem self key data'
-  = liftIO (js_setItem self (toJSString key) (toJSString data'))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/key MDN Storage.key documentation>
+keyUnchecked :: (MonadDOM m, FromJSString result) => Storage -> Word -> m result
+keyUnchecked self index = liftDOM ((pFromJSVal <$> (js_key (self) (index))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
         js_removeItem :: Storage -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.removeItem Mozilla Storage.removeItem documentation> 
-removeItem :: (MonadIO m, ToJSString key) => Storage -> key -> m ()
-removeItem self key = liftIO (js_removeItem self (toJSString key))
- 
-foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
-        Storage -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/removeItem MDN Storage.removeItem documentation>
+removeItem :: (MonadDOM m, ToJSString key) => Storage -> key -> m ()
+removeItem self key = liftDOM (void ((js_removeItem (self) (toJSString key))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.clear Mozilla Storage.clear documentation> 
-clear :: (MonadIO m) => Storage -> m ()
-clear self = liftIO (js_clear self)
- 
-foreign import javascript safe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        Storage -> IO Word
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setItem\"]($2, $3); })"
+        js_setItem :: Storage -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/setItem MDN Storage.setItem documentation>
+setItem :: (MonadDOM m, ToJSString key, ToJSString value) => Storage -> key -> value -> m ()
+setItem self key value = liftDOM (void ((js_setItem (self) (toJSString key) (toJSString value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.length Mozilla Storage.length documentation> 
-getLength :: (MonadIO m) => Storage -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: Storage -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/length MDN Storage.length documentation>
+getLength :: (MonadDOM m) => Storage -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.StorageErrorCallback
-       (newStorageErrorCallback, newStorageErrorCallbackSync,
-        newStorageErrorCallbackAsync, StorageErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
-newStorageErrorCallback ::
-                        (MonadIO m) => (DOMException -> IO ()) -> m StorageErrorCallback
-newStorageErrorCallback callback
-  = liftIO
-      (StorageErrorCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
-newStorageErrorCallbackSync ::
-                            (MonadIO m) => (DOMException -> IO ()) -> m StorageErrorCallback
-newStorageErrorCallbackSync callback
-  = liftIO
-      (StorageErrorCallback <$>
-         syncCallback1 ContinueAsync
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
-newStorageErrorCallbackAsync ::
-                             (MonadIO m) => (DOMException -> IO ()) -> m StorageErrorCallback
-newStorageErrorCallbackAsync callback
-  = liftIO
-      (StorageErrorCallback <$>
-         asyncCallback1
-           (\ error ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageEstimate.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageEstimate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageEstimate.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from storage (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StorageEstimate
+       (js_newStorageEstimate, js_setUsage, js_getUsage, js_setQuota, js_getQuota, newStorageEstimate, setUsage, getUsage, getUsageUnsafe, getUsageUnchecked, setQuota, getQuota, getQuotaUnsafe, getQuotaUnchecked, StorageEstimate(..), gTypeStorageEstimate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newStorageEstimate :: IO StorageEstimate
+-- | <https://storage.spec.whatwg.org/#dictdef-storageestimate StorageEstimate specification>
+newStorageEstimate :: (MonadDOM m) => m StorageEstimate
+newStorageEstimate = liftDOM ((js_newStorageEstimate))
+
+foreign import javascript safe "(($1, $2) => { $1[\"usage\"] = $2; })"
+        js_setUsage :: StorageEstimate -> JSVal -> IO ()
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-usage StorageEstimate.usage specification>
+setUsage :: (MonadDOM m) => StorageEstimate -> Word53 -> m ()
+setUsage self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setUsage (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })"
+        js_getUsage :: StorageEstimate -> IO JSVal
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-usage StorageEstimate.usage specification>
+getUsage :: (MonadDOM m) => StorageEstimate -> m (Maybe Word53)
+getUsage self = liftDOM (((js_getUsage (self)) >>= fromJSValUnchecked))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-usage StorageEstimate.usage specification>
+getUsageUnsafe :: (MonadDOM m, HasCallStack) => StorageEstimate -> m Word53
+getUsageUnsafe self = liftDOM ((((js_getUsage (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-usage StorageEstimate.usage specification>
+getUsageUnchecked :: (MonadDOM m) => StorageEstimate -> m Word53
+getUsageUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsage (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"quota\"] = $2; })"
+        js_setQuota :: StorageEstimate -> JSVal -> IO ()
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-quota StorageEstimate.quota specification>
+setQuota :: (MonadDOM m) => StorageEstimate -> Word53 -> m ()
+setQuota self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setQuota (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"quota\"]; })"
+        js_getQuota :: StorageEstimate -> IO JSVal
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-quota StorageEstimate.quota specification>
+getQuota :: (MonadDOM m) => StorageEstimate -> m (Maybe Word53)
+getQuota self = liftDOM (((js_getQuota (self)) >>= fromJSValUnchecked))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-quota StorageEstimate.quota specification>
+getQuotaUnsafe :: (MonadDOM m, HasCallStack) => StorageEstimate -> m Word53
+getQuotaUnsafe self = liftDOM ((((js_getQuota (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-quota StorageEstimate.quota specification>
+getQuotaUnchecked :: (MonadDOM m) => StorageEstimate -> m Word53
+getQuotaUnchecked self = liftDOM ((pFromJSVal <$> (js_getQuota (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
@@ -1,182 +1,91 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.StorageEvent
-       (js_newStorageEvent, newStorageEvent, js_initStorageEvent,
-        initStorageEvent, js_getKey, getKey, getKeyUnsafe, getKeyUnchecked,
-        js_getOldValue, getOldValue, getOldValueUnsafe,
-        getOldValueUnchecked, js_getNewValue, getNewValue,
-        getNewValueUnsafe, getNewValueUnchecked, js_getUrl, getUrl,
-        js_getStorageArea, getStorageArea, getStorageAreaUnsafe,
-        getStorageAreaUnchecked, StorageEvent(..), gTypeStorageEvent)
+       (js_newStorageEvent, js_initStorageEvent, js_getKey, js_getOldValue, js_getNewValue, js_getUrl, js_getStorageArea, newStorageEvent, initStorageEvent, getKey, getKeyUnsafe, getKeyUnchecked, getOldValue, getOldValueUnsafe, getOldValueUnchecked, getNewValue, getNewValueUnsafe, getNewValueUnchecked, getUrl, getStorageArea, getStorageAreaUnsafe, getStorageAreaUnchecked, StorageEvent(..), gTypeStorageEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"StorageEvent\"]($1,\n$2); })" js_newStorageEvent ::
-        JSString -> Optional StorageEventInit -> IO StorageEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation> 
-newStorageEvent ::
-                (MonadIO m, ToJSString type') =>
-                  type' -> Maybe StorageEventInit -> m StorageEvent
-newStorageEvent type' eventInitDict
-  = liftIO
-      (js_newStorageEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initStorageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
-        js_initStorageEvent ::
-        StorageEvent ->
-          Optional JSString ->
-            Bool ->
-              Bool ->
-                Optional JSString ->
-                  Optional JSString ->
-                    Optional JSString -> Optional JSString -> Optional Storage -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"StorageEvent\"]($1, $2); })"
+        js_newStorageEvent :: JSString -> JSVal -> IO StorageEvent
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/StorageEvent MDN StorageEvent. documentation>
+newStorageEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe StorageEventInit -> m StorageEvent
+newStorageEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newStorageEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.initStorageEvent Mozilla StorageEvent.initStorageEvent documentation> 
-initStorageEvent ::
-                 (MonadIO m, ToJSString typeArg, ToJSString keyArg,
-                  ToJSString oldValueArg, ToJSString newValueArg,
-                  ToJSString urlArg) =>
-                   StorageEvent ->
-                     Maybe typeArg ->
-                       Bool ->
-                         Bool ->
-                           Maybe keyArg ->
-                             Maybe oldValueArg ->
-                               Maybe newValueArg -> Maybe urlArg -> Maybe Storage -> m ()
-initStorageEvent self typeArg canBubbleArg cancelableArg keyArg
-  oldValueArg newValueArg urlArg storageAreaArg
-  = liftIO
-      (js_initStorageEvent self (toOptionalJSString typeArg) canBubbleArg
-         cancelableArg
-         (toOptionalJSString keyArg)
-         (toOptionalJSString oldValueArg)
-         (toOptionalJSString newValueArg)
-         (toOptionalJSString urlArg)
-         (maybeToOptional storageAreaArg))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })" js_getKey ::
-        StorageEvent -> IO (Nullable JSString)
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initStorageEvent\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_initStorageEvent :: StorageEvent -> JSString -> JSVal -> JSVal -> (Nullable JSString) -> (Nullable JSString) -> (Nullable JSString) -> (Optional JSString) -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/initStorageEvent MDN StorageEvent.initStorageEvent documentation>
+initStorageEvent :: (MonadDOM m, ToJSString type', ToJSString key, ToJSString oldValue, ToJSString newValue, ToJSString url) => StorageEvent -> type' -> Maybe Bool -> Maybe Bool -> Maybe key -> Maybe oldValue -> Maybe newValue -> Maybe url -> Maybe Storage -> m ()
+initStorageEvent self type' bubbles cancelable key oldValue newValue url storageArea = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubbles) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelable) >>= \a4' -> (toJSVal storageArea) >>= \a9' -> js_initStorageEvent (self) (toJSString type') a3' a4' (toMaybeJSString key) (toMaybeJSString oldValue) (toMaybeJSString newValue) (toOptionalJSString url) a9')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
-getKey ::
-       (MonadIO m, FromJSString result) =>
-         StorageEvent -> m (Maybe result)
-getKey self = liftIO (fromMaybeJSString <$> (js_getKey self))
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: StorageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/key MDN StorageEvent.key documentation>
+getKey :: (MonadDOM m, FromJSString result) => StorageEvent -> m (Maybe result)
+getKey self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getKey (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
-getKeyUnsafe ::
-             (MonadIO m, HasCallStack, FromJSString result) =>
-               StorageEvent -> m result
-getKeyUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getKey self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/key MDN StorageEvent.key documentation>
+getKeyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEvent -> m result
+getKeyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getKey (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
-getKeyUnchecked ::
-                (MonadIO m, FromJSString result) => StorageEvent -> m result
-getKeyUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getKey self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"oldValue\"]; })" js_getOldValue
-        :: StorageEvent -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/key MDN StorageEvent.key documentation>
+getKeyUnchecked :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getKey (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
-getOldValue ::
-            (MonadIO m, FromJSString result) =>
-              StorageEvent -> m (Maybe result)
-getOldValue self
-  = liftIO (fromMaybeJSString <$> (js_getOldValue self))
+foreign import javascript unsafe "(($1) => { return $1[\"oldValue\"]; })"
+        js_getOldValue :: StorageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/oldValue MDN StorageEvent.oldValue documentation>
+getOldValue :: (MonadDOM m, FromJSString result) => StorageEvent -> m (Maybe result)
+getOldValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOldValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
-getOldValueUnsafe ::
-                  (MonadIO m, HasCallStack, FromJSString result) =>
-                    StorageEvent -> m result
-getOldValueUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getOldValue self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/oldValue MDN StorageEvent.oldValue documentation>
+getOldValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEvent -> m result
+getOldValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOldValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
-getOldValueUnchecked ::
-                     (MonadIO m, FromJSString result) => StorageEvent -> m result
-getOldValueUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getOldValue self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"newValue\"]; })" js_getNewValue
-        :: StorageEvent -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/oldValue MDN StorageEvent.oldValue documentation>
+getOldValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getOldValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
-getNewValue ::
-            (MonadIO m, FromJSString result) =>
-              StorageEvent -> m (Maybe result)
-getNewValue self
-  = liftIO (fromMaybeJSString <$> (js_getNewValue self))
+foreign import javascript unsafe "(($1) => { return $1[\"newValue\"]; })"
+        js_getNewValue :: StorageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/newValue MDN StorageEvent.newValue documentation>
+getNewValue :: (MonadDOM m, FromJSString result) => StorageEvent -> m (Maybe result)
+getNewValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNewValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
-getNewValueUnsafe ::
-                  (MonadIO m, HasCallStack, FromJSString result) =>
-                    StorageEvent -> m result
-getNewValueUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getNewValue self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/newValue MDN StorageEvent.newValue documentation>
+getNewValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEvent -> m result
+getNewValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNewValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
-getNewValueUnchecked ::
-                     (MonadIO m, FromJSString result) => StorageEvent -> m result
-getNewValueUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getNewValue self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
-        StorageEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/newValue MDN StorageEvent.newValue documentation>
+getNewValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getNewValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.url Mozilla StorageEvent.url documentation> 
-getUrl ::
-       (MonadIO m, FromJSString result) => StorageEvent -> m result
-getUrl self = liftIO (fromJSString <$> (js_getUrl self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"storageArea\"]; })"
-        js_getStorageArea :: StorageEvent -> IO (Nullable Storage)
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: StorageEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/url MDN StorageEvent.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
-getStorageArea :: (MonadIO m) => StorageEvent -> m (Maybe Storage)
-getStorageArea self
-  = liftIO (nullableToMaybe <$> (js_getStorageArea self))
+foreign import javascript unsafe "(($1) => { return $1[\"storageArea\"]; })"
+        js_getStorageArea :: StorageEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/storageArea MDN StorageEvent.storageArea documentation>
+getStorageArea :: (MonadDOM m) => StorageEvent -> m (Maybe Storage)
+getStorageArea self = liftDOM (((js_getStorageArea (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
-getStorageAreaUnsafe ::
-                     (MonadIO m, HasCallStack) => StorageEvent -> m Storage
-getStorageAreaUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getStorageArea self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/storageArea MDN StorageEvent.storageArea documentation>
+getStorageAreaUnsafe :: (MonadDOM m, HasCallStack) => StorageEvent -> m Storage
+getStorageAreaUnsafe self = liftDOM ((((js_getStorageArea (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
-getStorageAreaUnchecked :: (MonadIO m) => StorageEvent -> m Storage
-getStorageAreaUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getStorageArea self))
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/storageArea MDN StorageEvent.storageArea documentation>
+getStorageAreaUnchecked :: (MonadDOM m) => StorageEvent -> m Storage
+getStorageAreaUnchecked self = liftDOM ((pFromJSVal <$> (js_getStorageArea (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageEventInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StorageEventInit
+       (js_newStorageEventInit, js_setKey, js_getKey, js_setOldValue, js_getOldValue, js_setNewValue, js_getNewValue, js_setUrl, js_getUrl, js_setStorageArea, js_getStorageArea, newStorageEventInit, setKey, getKey, getKeyUnsafe, getKeyUnchecked, setOldValue, getOldValue, getOldValueUnsafe, getOldValueUnchecked, setNewValue, getNewValue, getNewValueUnsafe, getNewValueUnchecked, setUrl, getUrl, getUrlUnsafe, getUrlUnchecked, setStorageArea, getStorageArea, getStorageAreaUnsafe, getStorageAreaUnchecked, StorageEventInit(..), gTypeStorageEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newStorageEventInit :: IO StorageEventInit
+-- | <https://html.spec.whatwg.org/multipage/webstorage.html#storageeventinit StorageEventInit specification>
+newStorageEventInit :: (MonadDOM m) => m StorageEventInit
+newStorageEventInit = liftDOM ((js_newStorageEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"key\"] = $2; })"
+        js_setKey :: StorageEventInit -> (Nullable JSString) -> IO ()
+setKey :: (MonadDOM m, ToJSString val) => StorageEventInit -> Maybe val -> m ()
+setKey self val = liftDOM (void ((js_setKey (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })"
+        js_getKey :: StorageEventInit -> IO JSVal
+getKey :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getKey self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getKey (self))))
+
+getKeyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getKeyUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getKey (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getKeyUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getKeyUnchecked self = liftDOM ((pFromJSVal <$> (js_getKey (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oldValue\"] = $2; })"
+        js_setOldValue :: StorageEventInit -> (Nullable JSString) -> IO ()
+setOldValue :: (MonadDOM m, ToJSString val) => StorageEventInit -> Maybe val -> m ()
+setOldValue self val = liftDOM (void ((js_setOldValue (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oldValue\"]; })"
+        js_getOldValue :: StorageEventInit -> IO JSVal
+getOldValue :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getOldValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOldValue (self))))
+
+getOldValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getOldValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOldValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getOldValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getOldValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"newValue\"] = $2; })"
+        js_setNewValue :: StorageEventInit -> (Nullable JSString) -> IO ()
+setNewValue :: (MonadDOM m, ToJSString val) => StorageEventInit -> Maybe val -> m ()
+setNewValue self val = liftDOM (void ((js_setNewValue (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"newValue\"]; })"
+        js_getNewValue :: StorageEventInit -> IO JSVal
+getNewValue :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getNewValue self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNewValue (self))))
+
+getNewValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getNewValueUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNewValue (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNewValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getNewValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewValue (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"url\"] = $2; })"
+        js_setUrl :: StorageEventInit -> JSString -> IO ()
+setUrl :: (MonadDOM m, ToJSString val) => StorageEventInit -> val -> m ()
+setUrl self val = liftDOM (void ((js_setUrl (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: StorageEventInit -> IO JSVal
+getUrl :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getUrl self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUrl (self))))
+
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getUrlUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUrl (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getUrlUnchecked self = liftDOM ((pFromJSVal <$> (js_getUrl (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"storageArea\"] = $2; })"
+        js_setStorageArea :: StorageEventInit -> JSVal -> IO ()
+setStorageArea :: (MonadDOM m) => StorageEventInit -> Maybe Storage -> m ()
+setStorageArea self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStorageArea (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"storageArea\"]; })"
+        js_getStorageArea :: StorageEventInit -> IO JSVal
+getStorageArea :: (MonadDOM m) => StorageEventInit -> m (Maybe Storage)
+getStorageArea self = liftDOM (((js_getStorageArea (self)) >>= fromJSValUnchecked))
+
+getStorageAreaUnsafe :: (MonadDOM m, HasCallStack) => StorageEventInit -> m Storage
+getStorageAreaUnsafe self = liftDOM ((((js_getStorageArea (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStorageAreaUnchecked :: (MonadDOM m) => StorageEventInit -> m Storage
+getStorageAreaUnchecked self = liftDOM ((pFromJSVal <$> (js_getStorageArea (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs
+++ /dev/null
@@ -1,71 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.StorageInfo
-       (js_queryUsageAndQuota, queryUsageAndQuota, js_requestQuota,
-        requestQuota, pattern TEMPORARY, pattern PERSISTENT,
-        StorageInfo(..), gTypeStorageInfo)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"queryUsageAndQuota\"]($2, $3,\n$4); })" js_queryUsageAndQuota ::
-        StorageInfo ->
-          Word ->
-            Optional StorageUsageCallback ->
-              Optional StorageErrorCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.queryUsageAndQuota Mozilla StorageInfo.queryUsageAndQuota documentation> 
-queryUsageAndQuota ::
-                   (MonadIO m) =>
-                     StorageInfo ->
-                       Word ->
-                         Maybe StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
-queryUsageAndQuota self storageType usageCallback errorCallback
-  = liftIO
-      (js_queryUsageAndQuota self storageType
-         (maybeToOptional usageCallback)
-         (maybeToOptional errorCallback))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"requestQuota\"]($2, $3, $4,\n$5); })" js_requestQuota ::
-        StorageInfo ->
-          Word ->
-            Double ->
-              Optional StorageQuotaCallback ->
-                Optional StorageErrorCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.requestQuota Mozilla StorageInfo.requestQuota documentation> 
-requestQuota ::
-             (MonadIO m) =>
-               StorageInfo ->
-                 Word ->
-                   Word64 ->
-                     Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
-requestQuota self storageType newQuotaInBytes quotaCallback
-  errorCallback
-  = liftIO
-      (js_requestQuota self storageType (fromIntegral newQuotaInBytes)
-         (maybeToOptional quotaCallback)
-         (maybeToOptional errorCallback))
-pattern TEMPORARY = 0
-pattern PERSISTENT = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageManager.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageManager.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageManager.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from storage (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StorageManager
+       (js_estimate, js_getDirectory, js_persist, js_persisted, estimate, estimate_, getDirectory, getDirectory_, persist, persist_, persisted, persisted_, StorageManager(..), gTypeStorageManager)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"estimate\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_estimate :: StorageManager -> IO (JSVal, StorageEstimate)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/estimate MDN StorageManager.estimate documentation>
+estimate :: (MonadDOM m) => StorageManager -> m StorageEstimate
+estimate self = liftDOM (((js_estimate (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/estimate MDN StorageManager.estimate documentation>
+estimate_ :: (MonadDOM m) => StorageManager -> m ()
+estimate_ self = liftDOM (void (((js_estimate (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getDirectory\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getDirectory :: StorageManager -> IO (JSVal, FileSystemDirectoryHandle)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/getDirectory MDN StorageManager.getDirectory documentation>
+getDirectory :: (MonadDOM m) => StorageManager -> m FileSystemDirectoryHandle
+getDirectory self = liftDOM (((js_getDirectory (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/getDirectory MDN StorageManager.getDirectory documentation>
+getDirectory_ :: (MonadDOM m) => StorageManager -> m ()
+getDirectory_ self = liftDOM (void (((js_getDirectory (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"persist\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_persist :: StorageManager -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persist MDN StorageManager.persist documentation>
+persist :: (MonadDOM m) => StorageManager -> m Bool
+persist self = liftDOM (((js_persist (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persist MDN StorageManager.persist documentation>
+persist_ :: (MonadDOM m) => StorageManager -> m ()
+persist_ self = liftDOM (void (((js_persist (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"persisted\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_persisted :: StorageManager -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persisted MDN StorageManager.persisted documentation>
+persisted :: (MonadDOM m) => StorageManager -> m Bool
+persisted self = liftDOM (((js_persisted (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persisted MDN StorageManager.persisted documentation>
+persisted_ :: (MonadDOM m) => StorageManager -> m ()
+persisted_ self = liftDOM (void (((js_persisted (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.StorageQuota
-       (js_queryUsageAndQuota, queryUsageAndQuota, js_requestQuota,
-        requestQuota, StorageQuota(..), gTypeStorageQuota)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"queryUsageAndQuota\"]($2, $3); })" js_queryUsageAndQuota ::
-        StorageQuota ->
-          StorageUsageCallback -> Optional StorageErrorCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
-queryUsageAndQuota ::
-                   (MonadIO m) =>
-                     StorageQuota ->
-                       StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
-queryUsageAndQuota self usageCallback errorCallback
-  = liftIO
-      (js_queryUsageAndQuota self usageCallback
-         (maybeToOptional errorCallback))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"requestQuota\"]($2, $3, $4); })"
-        js_requestQuota ::
-        StorageQuota ->
-          Double ->
-            Optional StorageQuotaCallback ->
-              Optional StorageErrorCallback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.requestQuota Mozilla StorageQuota.requestQuota documentation> 
-requestQuota ::
-             (MonadIO m) =>
-               StorageQuota ->
-                 Word64 ->
-                   Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
-requestQuota self newQuotaInBytes quotaCallback errorCallback
-  = liftIO
-      (js_requestQuota self (fromIntegral newQuotaInBytes)
-         (maybeToOptional quotaCallback)
-         (maybeToOptional errorCallback))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback
-       (newStorageQuotaCallback, newStorageQuotaCallbackSync,
-        newStorageQuotaCallbackAsync, StorageQuotaCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
-newStorageQuotaCallback ::
-                        (MonadIO m) => (Double -> IO ()) -> m StorageQuotaCallback
-newStorageQuotaCallback callback
-  = liftIO
-      (StorageQuotaCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ grantedQuotaInBytes ->
-              fromJSValUnchecked grantedQuotaInBytes >>=
-                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
-newStorageQuotaCallbackSync ::
-                            (MonadIO m) => (Double -> IO ()) -> m StorageQuotaCallback
-newStorageQuotaCallbackSync callback
-  = liftIO
-      (StorageQuotaCallback <$>
-         syncCallback1 ContinueAsync
-           (\ grantedQuotaInBytes ->
-              fromJSValUnchecked grantedQuotaInBytes >>=
-                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
-newStorageQuotaCallbackAsync ::
-                             (MonadIO m) => (Double -> IO ()) -> m StorageQuotaCallback
-newStorageQuotaCallbackAsync callback
-  = liftIO
-      (StorageQuotaCallback <$>
-         asyncCallback1
-           (\ grantedQuotaInBytes ->
-              fromJSValUnchecked grantedQuotaInBytes >>=
-                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs
+++ /dev/null
@@ -1,72 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.StorageUsageCallback
-       (newStorageUsageCallback, newStorageUsageCallbackSync,
-        newStorageUsageCallbackAsync, StorageUsageCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
-newStorageUsageCallback ::
-                        (MonadIO m) =>
-                          (Double -> Double -> IO ()) -> m StorageUsageCallback
-newStorageUsageCallback callback
-  = liftIO
-      (StorageUsageCallback <$>
-         syncCallback2 ThrowWouldBlock
-           (\ currentUsageInBytes currentQuotaInBytes ->
-              fromJSValUnchecked currentQuotaInBytes >>=
-                \ currentQuotaInBytes' ->
-                  fromJSValUnchecked currentUsageInBytes >>=
-                    \ currentUsageInBytes' -> callback currentUsageInBytes'
-                    currentQuotaInBytes'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
-newStorageUsageCallbackSync ::
-                            (MonadIO m) =>
-                              (Double -> Double -> IO ()) -> m StorageUsageCallback
-newStorageUsageCallbackSync callback
-  = liftIO
-      (StorageUsageCallback <$>
-         syncCallback2 ContinueAsync
-           (\ currentUsageInBytes currentQuotaInBytes ->
-              fromJSValUnchecked currentQuotaInBytes >>=
-                \ currentQuotaInBytes' ->
-                  fromJSValUnchecked currentUsageInBytes >>=
-                    \ currentUsageInBytes' -> callback currentUsageInBytes'
-                    currentQuotaInBytes'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
-newStorageUsageCallbackAsync ::
-                             (MonadIO m) =>
-                               (Double -> Double -> IO ()) -> m StorageUsageCallback
-newStorageUsageCallbackAsync callback
-  = liftIO
-      (StorageUsageCallback <$>
-         asyncCallback2
-           (\ currentUsageInBytes currentQuotaInBytes ->
-              fromJSValUnchecked currentQuotaInBytes >>=
-                \ currentQuotaInBytes' ->
-                  fromJSValUnchecked currentUsageInBytes >>=
-                    \ currentUsageInBytes' -> callback currentUsageInBytes'
-                    currentQuotaInBytes'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StreamPipeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/StreamPipeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StreamPipeOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StreamPipeOptions
+       (js_newStreamPipeOptions, js_setPreventClose, js_getPreventClose, js_setPreventAbort, js_getPreventAbort, js_setPreventCancel, js_getPreventCancel, js_setSignal, js_getSignal, newStreamPipeOptions, setPreventClose, getPreventClose, getPreventCloseUnsafe, getPreventCloseUnchecked, setPreventAbort, getPreventAbort, getPreventAbortUnsafe, getPreventAbortUnchecked, setPreventCancel, getPreventCancel, getPreventCancelUnsafe, getPreventCancelUnchecked, setSignal, getSignal, getSignalUnsafe, getSignalUnchecked, StreamPipeOptions(..), gTypeStreamPipeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newStreamPipeOptions :: IO StreamPipeOptions
+-- | <https://streams.spec.whatwg.org/#dictdef-streampipeoptions StreamPipeOptions specification>
+newStreamPipeOptions :: (MonadDOM m) => m StreamPipeOptions
+newStreamPipeOptions = liftDOM ((js_newStreamPipeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preventClose\"] = $2; })"
+        js_setPreventClose :: StreamPipeOptions -> Bool -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventclose StreamPipeOptions.preventClose specification>
+setPreventClose :: (MonadDOM m) => StreamPipeOptions -> Bool -> m ()
+setPreventClose self val = liftDOM (void ((js_setPreventClose (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preventClose\"]; })"
+        js_getPreventClose :: StreamPipeOptions -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventclose StreamPipeOptions.preventClose specification>
+getPreventClose :: (MonadDOM m) => StreamPipeOptions -> m (Maybe Bool)
+getPreventClose self = liftDOM (((js_getPreventClose (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventclose StreamPipeOptions.preventClose specification>
+getPreventCloseUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m Bool
+getPreventCloseUnsafe self = liftDOM ((((js_getPreventClose (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventclose StreamPipeOptions.preventClose specification>
+getPreventCloseUnchecked :: (MonadDOM m) => StreamPipeOptions -> m Bool
+getPreventCloseUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreventClose (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preventAbort\"] = $2; })"
+        js_setPreventAbort :: StreamPipeOptions -> Bool -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventabort StreamPipeOptions.preventAbort specification>
+setPreventAbort :: (MonadDOM m) => StreamPipeOptions -> Bool -> m ()
+setPreventAbort self val = liftDOM (void ((js_setPreventAbort (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preventAbort\"]; })"
+        js_getPreventAbort :: StreamPipeOptions -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventabort StreamPipeOptions.preventAbort specification>
+getPreventAbort :: (MonadDOM m) => StreamPipeOptions -> m (Maybe Bool)
+getPreventAbort self = liftDOM (((js_getPreventAbort (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventabort StreamPipeOptions.preventAbort specification>
+getPreventAbortUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m Bool
+getPreventAbortUnsafe self = liftDOM ((((js_getPreventAbort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventabort StreamPipeOptions.preventAbort specification>
+getPreventAbortUnchecked :: (MonadDOM m) => StreamPipeOptions -> m Bool
+getPreventAbortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreventAbort (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preventCancel\"] = $2; })"
+        js_setPreventCancel :: StreamPipeOptions -> Bool -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventcancel StreamPipeOptions.preventCancel specification>
+setPreventCancel :: (MonadDOM m) => StreamPipeOptions -> Bool -> m ()
+setPreventCancel self val = liftDOM (void ((js_setPreventCancel (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preventCancel\"]; })"
+        js_getPreventCancel :: StreamPipeOptions -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventcancel StreamPipeOptions.preventCancel specification>
+getPreventCancel :: (MonadDOM m) => StreamPipeOptions -> m (Maybe Bool)
+getPreventCancel self = liftDOM (((js_getPreventCancel (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventcancel StreamPipeOptions.preventCancel specification>
+getPreventCancelUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m Bool
+getPreventCancelUnsafe self = liftDOM ((((js_getPreventCancel (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventcancel StreamPipeOptions.preventCancel specification>
+getPreventCancelUnchecked :: (MonadDOM m) => StreamPipeOptions -> m Bool
+getPreventCancelUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreventCancel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"signal\"] = $2; })"
+        js_setSignal :: StreamPipeOptions -> AbortSignal -> IO ()
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-signal StreamPipeOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => StreamPipeOptions -> val -> m ()
+setSignal self val = liftDOM (void ((js_setSignal (self) (Types.toAbortSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: StreamPipeOptions -> IO JSVal
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-signal StreamPipeOptions.signal specification>
+getSignal :: (MonadDOM m) => StreamPipeOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((js_getSignal (self)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-signal StreamPipeOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((js_getSignal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-signal StreamPipeOptions.signal specification>
+getSignalUnchecked :: (MonadDOM m) => StreamPipeOptions -> m AbortSignal
+getSignalUnchecked self = liftDOM ((pFromJSVal <$> (js_getSignal (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.StringCallback
-       (newStringCallback, newStringCallbackSync, newStringCallbackAsync,
-        StringCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
-newStringCallback ::
-                  (MonadIO m, FromJSString data') =>
-                    (data' -> IO ()) -> m (StringCallback data')
-newStringCallback callback
-  = liftIO
-      (StringCallback <$>
-         syncCallback1 ThrowWouldBlock
-           (\ data' ->
-              fromJSValUnchecked data' >>= \ data'' -> callback data''))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
-newStringCallbackSync ::
-                      (MonadIO m, FromJSString data') =>
-                        (data' -> IO ()) -> m (StringCallback data')
-newStringCallbackSync callback
-  = liftIO
-      (StringCallback <$>
-         syncCallback1 ContinueAsync
-           (\ data' ->
-              fromJSValUnchecked data' >>= \ data'' -> callback data''))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
-newStringCallbackAsync ::
-                       (MonadIO m, FromJSString data') =>
-                         (data' -> IO ()) -> m (StringCallback data')
-newStringCallbackAsync callback
-  = liftIO
-      (StringCallback <$>
-         asyncCallback1
-           (\ data' ->
-              fromJSValUnchecked data' >>= \ data'' -> callback data''))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StructuredSerializeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/StructuredSerializeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StructuredSerializeOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StructuredSerializeOptions
+       (js_newStructuredSerializeOptions, js_setTransfer, js_getTransfer, newStructuredSerializeOptions, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, StructuredSerializeOptions(..), gTypeStructuredSerializeOptions, IsStructuredSerializeOptions, toStructuredSerializeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newStructuredSerializeOptions :: IO StructuredSerializeOptions
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#structuredserializeoptions StructuredSerializeOptions specification>
+newStructuredSerializeOptions :: (MonadDOM m) => m StructuredSerializeOptions
+newStructuredSerializeOptions = liftDOM ((js_newStructuredSerializeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transfer\"] = $2; })"
+        js_setTransfer :: StructuredSerializeOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#dom-structuredserializeoptions-transfer StructuredSerializeOptions.transfer specification>
+setTransfer :: (MonadDOM m, IsStructuredSerializeOptions self) => self -> [GObject] -> m ()
+setTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransfer ((Types.toStructuredSerializeOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: StructuredSerializeOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#dom-structuredserializeoptions-transfer StructuredSerializeOptions.transfer specification>
+getTransfer :: (MonadDOM m, IsStructuredSerializeOptions self) => self -> m (Maybe [GObject])
+getTransfer self = liftDOM (((js_getTransfer ((Types.toStructuredSerializeOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#dom-structuredserializeoptions-transfer StructuredSerializeOptions.transfer specification>
+getTransferUnsafe :: (MonadDOM m, IsStructuredSerializeOptions self, HasCallStack) => self -> m [GObject]
+getTransferUnsafe self = liftDOM ((((js_getTransfer ((Types.toStructuredSerializeOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#dom-structuredserializeoptions-transfer StructuredSerializeOptions.transfer specification>
+getTransferUnchecked :: (MonadDOM m, IsStructuredSerializeOptions self) => self -> m [GObject]
+getTransferUnchecked self = liftDOM (((js_getTransfer ((Types.toStructuredSerializeOptions self))) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.StyleMedia
-       (js_matchMedium, matchMedium, matchMedium_, js_getType, getType,
-        StyleMedia(..), gTypeStyleMedia)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return ($1[\"matchMedium\"]($2) ? 1 : 0); })" js_matchMedium ::
-        StyleMedia -> Optional JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
-matchMedium ::
-            (MonadIO m, ToJSString mediaquery) =>
-              StyleMedia -> Maybe mediaquery -> m Bool
-matchMedium self mediaquery
-  = liftIO (js_matchMedium self (toOptionalJSString mediaquery))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
-matchMedium_ ::
-             (MonadIO m, ToJSString mediaquery) =>
-               StyleMedia -> Maybe mediaquery -> m ()
-matchMedium_ self mediaquery
-  = liftIO
-      (void (js_matchMedium self (toOptionalJSString mediaquery)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        StyleMedia -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.type Mozilla StyleMedia.type documentation> 
-getType ::
-        (MonadIO m, FromJSString result) => StyleMedia -> m result
-getType self = liftIO (fromJSString <$> (js_getType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StylePropertyMap.hs b/src/GHCJS/DOM/JSFFI/Generated/StylePropertyMap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StylePropertyMap.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StylePropertyMap
+       (js_append, js_clear, js_delete, js_set, append, clear, delete, set, StylePropertyMap(..), gTypeStylePropertyMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"append\"]($2, ...$3); })"
+        js_append :: StylePropertyMap -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMap/append MDN StylePropertyMap.append documentation>
+append :: (MonadDOM m, ToJSString property, IsCSSStyleValueOrString values) => StylePropertyMap -> property -> [values] -> m ()
+append self property values = liftDOM (void (((toJSVal values) >>= \a3' -> js_append (self) (toJSString property) a3')))
+
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })"
+        js_clear :: StylePropertyMap -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMap/clear MDN StylePropertyMap.clear documentation>
+clear :: (MonadDOM m) => StylePropertyMap -> m ()
+clear self = liftDOM (void ((js_clear (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })"
+        js_delete :: StylePropertyMap -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMap/delete MDN StylePropertyMap.delete documentation>
+delete :: (MonadDOM m, ToJSString property) => StylePropertyMap -> property -> m ()
+delete self property = liftDOM (void ((js_delete (self) (toJSString property))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"set\"]($2, ...$3); })"
+        js_set :: StylePropertyMap -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMap/set MDN StylePropertyMap.set documentation>
+set :: (MonadDOM m, ToJSString property, IsCSSStyleValueOrString values) => StylePropertyMap -> property -> [values] -> m ()
+set self property values = liftDOM (void (((toJSVal values) >>= \a3' -> js_set (self) (toJSString property) a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StylePropertyMapReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/StylePropertyMapReadOnly.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StylePropertyMapReadOnly.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.StylePropertyMapReadOnly
+       (js_get, js_getAll, js_has, js_getSize, get, get_, getAll, getAll_, has, has_, getSize, StylePropertyMapReadOnly(..), gTypeStylePropertyMapReadOnly, IsStylePropertyMapReadOnly, toStylePropertyMapReadOnly)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: StylePropertyMapReadOnly -> JSString -> IO UndefinedOrCSSStyleValue
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/get MDN StylePropertyMapReadOnly.get documentation>
+get :: (MonadDOM m, IsStylePropertyMapReadOnly self, ToJSString property) => self -> property -> m UndefinedOrCSSStyleValue
+get self property = liftDOM ((js_get ((Types.toStylePropertyMapReadOnly self)) (toJSString property)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/get MDN StylePropertyMapReadOnly.get documentation>
+get_ :: (MonadDOM m, IsStylePropertyMapReadOnly self, ToJSString property) => self -> property -> m ()
+get_ self property = liftDOM (void ((js_get ((Types.toStylePropertyMapReadOnly self)) (toJSString property))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getAll\"]($2); })"
+        js_getAll :: StylePropertyMapReadOnly -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/getAll MDN StylePropertyMapReadOnly.getAll documentation>
+getAll :: (MonadDOM m, IsStylePropertyMapReadOnly self, ToJSString property) => self -> property -> m [CSSStyleValue]
+getAll self property = liftDOM (((js_getAll ((Types.toStylePropertyMapReadOnly self)) (toJSString property)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/getAll MDN StylePropertyMapReadOnly.getAll documentation>
+getAll_ :: (MonadDOM m, IsStylePropertyMapReadOnly self, ToJSString property) => self -> property -> m ()
+getAll_ self property = liftDOM (void ((js_getAll ((Types.toStylePropertyMapReadOnly self)) (toJSString property))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"has\"]($2); })"
+        js_has :: StylePropertyMapReadOnly -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/has MDN StylePropertyMapReadOnly.has documentation>
+has :: (MonadDOM m, IsStylePropertyMapReadOnly self, ToJSString property) => self -> property -> m Bool
+has self property = liftDOM ((js_has ((Types.toStylePropertyMapReadOnly self)) (toJSString property)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/has MDN StylePropertyMapReadOnly.has documentation>
+has_ :: (MonadDOM m, IsStylePropertyMapReadOnly self, ToJSString property) => self -> property -> m ()
+has_ self property = liftDOM (void ((js_has ((Types.toStylePropertyMapReadOnly self)) (toJSString property))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: StylePropertyMapReadOnly -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/size MDN StylePropertyMapReadOnly.size documentation>
+getSize :: (MonadDOM m, IsStylePropertyMapReadOnly self) => self -> m Word
+getSize self = liftDOM ((js_getSize ((Types.toStylePropertyMapReadOnly self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
@@ -1,156 +1,97 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.StyleSheet
-       (js_getType, getType, getTypeUnsafe, getTypeUnchecked,
-        js_setDisabled, setDisabled, js_getDisabled, getDisabled,
-        js_getOwnerNode, getOwnerNode, js_getParentStyleSheet,
-        getParentStyleSheet, js_getHref, getHref, getHrefUnsafe,
-        getHrefUnchecked, js_getTitle, getTitle, getTitleUnsafe,
-        getTitleUnchecked, js_getMedia, getMedia, StyleSheet(..),
-        gTypeStyleSheet, IsStyleSheet, toStyleSheet)
+       (js_getType, js_getHref, js_getOwnerNode, js_getParentStyleSheet, js_getTitle, js_getMedia, js_setDisabled, js_getDisabled, getType, getHref, getHrefUnsafe, getHrefUnchecked, getOwnerNode, getOwnerNodeUnsafe, getOwnerNodeUnchecked, getParentStyleSheet, getParentStyleSheetUnsafe, getParentStyleSheetUnchecked, getTitle, getTitleUnsafe, getTitleUnchecked, getMedia, setDisabled, getDisabled, StyleSheet(..), gTypeStyleSheet, IsStyleSheet, toStyleSheet)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        StyleSheet -> IO (Nullable JSString)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
-getType ::
-        (MonadIO m, IsStyleSheet self, FromJSString result) =>
-          self -> m (Maybe result)
-getType self
-  = liftIO (fromMaybeJSString <$> (js_getType (toStyleSheet self)))
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: StyleSheet -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/type MDN StyleSheet.type documentation>
+getType :: (MonadDOM m, IsStyleSheet self, FromJSString result) => self -> m result
+getType self = liftDOM ((fromJSString <$> (js_getType ((Types.toStyleSheet self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
-getTypeUnsafe ::
-              (MonadIO m, IsStyleSheet self, HasCallStack,
-               FromJSString result) =>
-                self -> m result
-getTypeUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getType (toStyleSheet self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: StyleSheet -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/href MDN StyleSheet.href documentation>
+getHref :: (MonadDOM m, IsStyleSheet self, FromJSString result) => self -> m (Maybe result)
+getHref self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getHref ((Types.toStyleSheet self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
-getTypeUnchecked ::
-                 (MonadIO m, IsStyleSheet self, FromJSString result) =>
-                   self -> m result
-getTypeUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getType (toStyleSheet self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
-        js_setDisabled :: StyleSheet -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/href MDN StyleSheet.href documentation>
+getHrefUnsafe :: (MonadDOM m, IsStyleSheet self, HasCallStack, FromJSString result) => self -> m result
+getHrefUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getHref ((Types.toStyleSheet self)))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.disabled Mozilla StyleSheet.disabled documentation> 
-setDisabled ::
-            (MonadIO m, IsStyleSheet self) => self -> Bool -> m ()
-setDisabled self val
-  = liftIO (js_setDisabled (toStyleSheet self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
-        js_getDisabled :: StyleSheet -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/href MDN StyleSheet.href documentation>
+getHrefUnchecked :: (MonadDOM m, IsStyleSheet self, FromJSString result) => self -> m result
+getHrefUnchecked self = liftDOM ((pFromJSVal <$> (js_getHref ((Types.toStyleSheet self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.disabled Mozilla StyleSheet.disabled documentation> 
-getDisabled :: (MonadIO m, IsStyleSheet self) => self -> m Bool
-getDisabled self = liftIO (js_getDisabled (toStyleSheet self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"ownerNode\"]; })"
-        js_getOwnerNode :: StyleSheet -> IO Node
+        js_getOwnerNode :: StyleSheet -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/ownerNode MDN StyleSheet.ownerNode documentation>
+getOwnerNode :: (MonadDOM m, IsStyleSheet self) => self -> m (Maybe ElementOrProcessingInstruction)
+getOwnerNode self = liftDOM (((js_getOwnerNode ((Types.toStyleSheet self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.ownerNode Mozilla StyleSheet.ownerNode documentation> 
-getOwnerNode :: (MonadIO m, IsStyleSheet self) => self -> m Node
-getOwnerNode self = liftIO (js_getOwnerNode (toStyleSheet self))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/ownerNode MDN StyleSheet.ownerNode documentation>
+getOwnerNodeUnsafe :: (MonadDOM m, IsStyleSheet self, HasCallStack) => self -> m ElementOrProcessingInstruction
+getOwnerNodeUnsafe self = liftDOM ((((js_getOwnerNode ((Types.toStyleSheet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/ownerNode MDN StyleSheet.ownerNode documentation>
+getOwnerNodeUnchecked :: (MonadDOM m, IsStyleSheet self) => self -> m ElementOrProcessingInstruction
+getOwnerNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getOwnerNode ((Types.toStyleSheet self)))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"parentStyleSheet\"]; })"
-        js_getParentStyleSheet :: StyleSheet -> IO StyleSheet
+        js_getParentStyleSheet :: StyleSheet -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/parentStyleSheet MDN StyleSheet.parentStyleSheet documentation>
+getParentStyleSheet :: (MonadDOM m, IsStyleSheet self) => self -> m (Maybe CSSStyleSheet)
+getParentStyleSheet self = liftDOM (((js_getParentStyleSheet ((Types.toStyleSheet self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.parentStyleSheet Mozilla StyleSheet.parentStyleSheet documentation> 
-getParentStyleSheet ::
-                    (MonadIO m, IsStyleSheet self) => self -> m StyleSheet
-getParentStyleSheet self
-  = liftIO (js_getParentStyleSheet (toStyleSheet self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        StyleSheet -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/parentStyleSheet MDN StyleSheet.parentStyleSheet documentation>
+getParentStyleSheetUnsafe :: (MonadDOM m, IsStyleSheet self, HasCallStack) => self -> m CSSStyleSheet
+getParentStyleSheetUnsafe self = liftDOM ((((js_getParentStyleSheet ((Types.toStyleSheet self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
-getHref ::
-        (MonadIO m, IsStyleSheet self, FromJSString result) =>
-          self -> m (Maybe result)
-getHref self
-  = liftIO (fromMaybeJSString <$> (js_getHref (toStyleSheet self)))
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/parentStyleSheet MDN StyleSheet.parentStyleSheet documentation>
+getParentStyleSheetUnchecked :: (MonadDOM m, IsStyleSheet self) => self -> m CSSStyleSheet
+getParentStyleSheetUnchecked self = liftDOM ((pFromJSVal <$> (js_getParentStyleSheet ((Types.toStyleSheet self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
-getHrefUnsafe ::
-              (MonadIO m, IsStyleSheet self, HasCallStack,
-               FromJSString result) =>
-                self -> m result
-getHrefUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getHref (toStyleSheet self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })"
+        js_getTitle :: StyleSheet -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/title MDN StyleSheet.title documentation>
+getTitle :: (MonadDOM m, IsStyleSheet self, FromJSString result) => self -> m (Maybe result)
+getTitle self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTitle ((Types.toStyleSheet self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
-getHrefUnchecked ::
-                 (MonadIO m, IsStyleSheet self, FromJSString result) =>
-                   self -> m result
-getHrefUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getHref (toStyleSheet self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
-        StyleSheet -> IO (Nullable JSString)
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/title MDN StyleSheet.title documentation>
+getTitleUnsafe :: (MonadDOM m, IsStyleSheet self, HasCallStack, FromJSString result) => self -> m result
+getTitleUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTitle ((Types.toStyleSheet self)))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
-getTitle ::
-         (MonadIO m, IsStyleSheet self, FromJSString result) =>
-           self -> m (Maybe result)
-getTitle self
-  = liftIO (fromMaybeJSString <$> (js_getTitle (toStyleSheet self)))
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/title MDN StyleSheet.title documentation>
+getTitleUnchecked :: (MonadDOM m, IsStyleSheet self, FromJSString result) => self -> m result
+getTitleUnchecked self = liftDOM ((pFromJSVal <$> (js_getTitle ((Types.toStyleSheet self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
-getTitleUnsafe ::
-               (MonadIO m, IsStyleSheet self, HasCallStack,
-                FromJSString result) =>
-                 self -> m result
-getTitleUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getTitle (toStyleSheet self))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })"
+        js_getMedia :: StyleSheet -> IO MediaList
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/media MDN StyleSheet.media documentation>
+getMedia :: (MonadDOM m, IsStyleSheet self) => self -> m MediaList
+getMedia self = liftDOM ((js_getMedia ((Types.toStyleSheet self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
-getTitleUnchecked ::
-                  (MonadIO m, IsStyleSheet self, FromJSString result) =>
-                    self -> m result
-getTitleUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getTitle (toStyleSheet self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
-        StyleSheet -> IO MediaList
+foreign import javascript safe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: StyleSheet -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/disabled MDN StyleSheet.disabled documentation>
+setDisabled :: (MonadDOM m, IsStyleSheet self) => self -> Bool -> m ()
+setDisabled self val = liftDOM (void ((js_setDisabled ((Types.toStyleSheet self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.media Mozilla StyleSheet.media documentation> 
-getMedia :: (MonadIO m, IsStyleSheet self) => self -> m MediaList
-getMedia self = liftIO (js_getMedia (toStyleSheet self))
+foreign import javascript unsafe "(($1) => { return $1[\"disabled\"]; })"
+        js_getDisabled :: StyleSheet -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/disabled MDN StyleSheet.disabled documentation>
+getDisabled :: (MonadDOM m, IsStyleSheet self) => self -> m Bool
+getDisabled self = liftDOM ((js_getDisabled ((Types.toStyleSheet self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
@@ -1,75 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.StyleSheetList
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_get, get,
-        get_, js_getLength, getLength, StyleSheetList(..),
-        gTypeStyleSheetList)
+       (js_item, js_getLength, item, item_, itemUnsafe, itemUnchecked, getLength, StyleSheetList(..), gTypeStyleSheetList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        StyleSheetList -> Word -> IO (Nullable StyleSheet)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
-item ::
-     (MonadIO m) => StyleSheetList -> Word -> m (Maybe StyleSheet)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
-item_ :: (MonadIO m) => StyleSheetList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => StyleSheetList -> Word -> m StyleSheet
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: StyleSheetList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/item MDN StyleSheetList.item documentation>
+item :: (MonadDOM m) => StyleSheetList -> Word -> m (Maybe CSSStyleSheet)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
-itemUnchecked ::
-              (MonadIO m) => StyleSheetList -> Word -> m StyleSheet
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
-        StyleSheetList -> JSString -> IO CSSStyleSheet
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/item MDN StyleSheetList.item documentation>
+item_ :: (MonadDOM m) => StyleSheetList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.get Mozilla StyleSheetList.get documentation> 
-get ::
-    (MonadIO m, ToJSString name) =>
-      StyleSheetList -> name -> m CSSStyleSheet
-get self name = liftIO (js_get self (toJSString name))
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/item MDN StyleSheetList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => StyleSheetList -> Word -> m CSSStyleSheet
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.get Mozilla StyleSheetList.get documentation> 
-get_ ::
-     (MonadIO m, ToJSString name) => StyleSheetList -> name -> m ()
-get_ self name = liftIO (void (js_get self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        StyleSheetList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/item MDN StyleSheetList.item documentation>
+itemUnchecked :: (MonadDOM m) => StyleSheetList -> Word -> m CSSStyleSheet
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.length Mozilla StyleSheetList.length documentation> 
-getLength :: (MonadIO m) => StyleSheetList -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: StyleSheetList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/length MDN StyleSheetList.length documentation>
+getLength :: (MonadDOM m) => StyleSheetList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SubmitEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SubmitEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SubmitEvent.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SubmitEvent
+       (js_newSubmitEvent, js_getSubmitter, newSubmitEvent, getSubmitter, getSubmitterUnsafe, getSubmitterUnchecked, SubmitEvent(..), gTypeSubmitEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"SubmitEvent\"]($1, $2); })"
+        js_newSubmitEvent :: JSString -> JSVal -> IO SubmitEvent
+-- | <https://developer.mozilla.org/docs/Web/API/SubmitEvent/SubmitEvent MDN SubmitEvent. documentation>
+newSubmitEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe SubmitEventInit -> m SubmitEvent
+newSubmitEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newSubmitEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"submitter\"]; })"
+        js_getSubmitter :: SubmitEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/SubmitEvent/submitter MDN SubmitEvent.submitter documentation>
+getSubmitter :: (MonadDOM m) => SubmitEvent -> m (Maybe HTMLElement)
+getSubmitter self = liftDOM (((js_getSubmitter (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SubmitEvent/submitter MDN SubmitEvent.submitter documentation>
+getSubmitterUnsafe :: (MonadDOM m, HasCallStack) => SubmitEvent -> m HTMLElement
+getSubmitterUnsafe self = liftDOM ((((js_getSubmitter (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SubmitEvent/submitter MDN SubmitEvent.submitter documentation>
+getSubmitterUnchecked :: (MonadDOM m) => SubmitEvent -> m HTMLElement
+getSubmitterUnchecked self = liftDOM ((pFromJSVal <$> (js_getSubmitter (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SubmitEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/SubmitEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SubmitEventInit.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SubmitEventInit
+       (js_newSubmitEventInit, js_setSubmitter, js_getSubmitter, newSubmitEventInit, setSubmitter, getSubmitter, getSubmitterUnsafe, getSubmitterUnchecked, SubmitEventInit(..), gTypeSubmitEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSubmitEventInit :: IO SubmitEventInit
+-- | <https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#submiteventinit SubmitEventInit specification>
+newSubmitEventInit :: (MonadDOM m) => m SubmitEventInit
+newSubmitEventInit = liftDOM ((js_newSubmitEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"submitter\"] = $2; })"
+        js_setSubmitter :: SubmitEventInit -> JSVal -> IO ()
+setSubmitter :: (MonadDOM m, IsHTMLElement val) => SubmitEventInit -> Maybe val -> m ()
+setSubmitter self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSubmitter (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"submitter\"]; })"
+        js_getSubmitter :: SubmitEventInit -> IO JSVal
+getSubmitter :: (MonadDOM m) => SubmitEventInit -> m (Maybe HTMLElement)
+getSubmitter self = liftDOM (((js_getSubmitter (self)) >>= fromJSValUnchecked))
+
+getSubmitterUnsafe :: (MonadDOM m, HasCallStack) => SubmitEventInit -> m HTMLElement
+getSubmitterUnsafe self = liftDOM ((((js_getSubmitter (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getSubmitterUnchecked :: (MonadDOM m) => SubmitEventInit -> m HTMLElement
+getSubmitterUnchecked self = liftDOM ((pFromJSVal <$> (js_getSubmitter (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
@@ -1,404 +1,137 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.SubtleCrypto
-       (js_encrypt, encrypt, encrypt_, js_decrypt, decrypt, decrypt_,
-        js_sign, sign, sign_, js_verify, verify, verify_, js_digest,
-        digest, digest_, js_deriveKey, deriveKey, deriveKey_,
-        js_deriveBits, deriveBits, deriveBits_, js_generateKey,
-        generateKey, generateKey_, js_importKey, importKey, importKey_,
-        js_exportKey, exportKey, exportKey_, js_wrapKey, wrapKey, wrapKey_,
-        js_unwrapKey, unwrapKey, unwrapKey_, SubtleCrypto(..),
-        gTypeSubtleCrypto)
+       (js_decrypt, js_deriveBits, js_deriveKey, js_digest, js_encrypt, js_exportKey, js_generateKey, js_importKey, js_sign, js_unwrapKey, js_verify, js_wrapKey, decrypt, decrypt_, deriveBits, deriveBits_, deriveKey, deriveKey_, digest, digest_, encrypt, encrypt_, exportKey, exportKey_, generateKey, generateKey_, importKey, importKey_, sign, sign_, unwrapKey, unwrapKey_, verify, verify_, wrapKey, wrapKey_, SubtleCrypto(..), gTypeSubtleCrypto)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"encrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_encrypt ::
-        SubtleCrypto ->
-          JSString -> CryptoKey -> BufferSource -> IO (JSVal, JSVal)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt ::
-        (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
-encrypt self algorithm key data'
-  = liftIO
-      ((js_encrypt self (toJSString algorithm) key
-          (toBufferSource data'))
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"decrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_decrypt :: SubtleCrypto -> AlgorithmIdentifier -> CryptoKey -> BufferSource -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/decrypt MDN SubtleCrypto.decrypt documentation>
+decrypt :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ArrayBuffer
+decrypt self algorithm key data' = liftDOM (((js_decrypt (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource data')) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt_ ::
-         (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
-encrypt_ self algorithm key data'
-  = liftIO
-      (void
-         (js_encrypt self (toJSString algorithm) key
-            (toBufferSource data')))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"decrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_decrypt ::
-        SubtleCrypto ->
-          JSString -> CryptoKey -> BufferSource -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/decrypt MDN SubtleCrypto.decrypt documentation>
+decrypt_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
+decrypt_ self algorithm key data' = liftDOM (void (((js_decrypt (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource data')) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt ::
-        (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
-decrypt self algorithm key data'
-  = liftIO
-      ((js_decrypt self (toJSString algorithm) key
-          (toBufferSource data'))
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"deriveBits\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_deriveBits :: SubtleCrypto -> AlgorithmIdentifier -> CryptoKey -> JSVal -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveBits MDN SubtleCrypto.deriveBits documentation>
+deriveBits :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> CryptoKey -> Maybe Word -> m ArrayBuffer
+deriveBits self algorithm baseKey length = liftDOM ((((toJSVal length) >>= \a4' -> js_deriveBits (self) (Types.toAlgorithmIdentifier algorithm) (baseKey) a4') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt_ ::
-         (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
-decrypt_ self algorithm key data'
-  = liftIO
-      (void
-         (js_decrypt self (toJSString algorithm) key
-            (toBufferSource data')))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"sign\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_sign ::
-        SubtleCrypto ->
-          JSString -> CryptoKey -> BufferSource -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveBits MDN SubtleCrypto.deriveBits documentation>
+deriveBits_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> CryptoKey -> Maybe Word -> m ()
+deriveBits_ self algorithm baseKey length = liftDOM (void ((((toJSVal length) >>= \a4' -> js_deriveBits (self) (Types.toAlgorithmIdentifier algorithm) (baseKey) a4') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign ::
-     (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-       SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
-sign self algorithm key data'
-  = liftIO
-      ((js_sign self (toJSString algorithm) key (toBufferSource data'))
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"deriveKey\"]($2, $3, $4, $5, $6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_deriveKey :: SubtleCrypto -> AlgorithmIdentifier -> CryptoKey -> AlgorithmIdentifier -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey MDN SubtleCrypto.deriveKey documentation>
+deriveKey :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsAlgorithmIdentifier derivedKeyType) => SubtleCrypto -> algorithm -> CryptoKey -> derivedKeyType -> Bool -> [KeyUsage] -> m CryptoKey
+deriveKey self algorithm baseKey derivedKeyType extractable keyUsages = liftDOM ((((toJSVal keyUsages) >>= \a6' -> js_deriveKey (self) (Types.toAlgorithmIdentifier algorithm) (baseKey) (Types.toAlgorithmIdentifier derivedKeyType) (extractable) a6') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign_ ::
-      (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-        SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
-sign_ self algorithm key data'
-  = liftIO
-      (void
-         (js_sign self (toJSString algorithm) key (toBufferSource data')))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $c) => { return $1[\"verify\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_verify ::
-        SubtleCrypto ->
-          JSString ->
-            CryptoKey -> BufferSource -> BufferSource -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey MDN SubtleCrypto.deriveKey documentation>
+deriveKey_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsAlgorithmIdentifier derivedKeyType) => SubtleCrypto -> algorithm -> CryptoKey -> derivedKeyType -> Bool -> [KeyUsage] -> m ()
+deriveKey_ self algorithm baseKey derivedKeyType extractable keyUsages = liftDOM (void ((((toJSVal keyUsages) >>= \a6' -> js_deriveKey (self) (Types.toAlgorithmIdentifier algorithm) (baseKey) (Types.toAlgorithmIdentifier derivedKeyType) (extractable) a6') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify ::
-       (MonadIO m, ToJSString algorithm, IsBufferSource signature,
-        IsBufferSource data') =>
-         SubtleCrypto ->
-           algorithm -> CryptoKey -> signature -> data' -> m JSVal
-verify self algorithm key signature data'
-  = liftIO
-      ((js_verify self (toJSString algorithm) key
-          (toBufferSource signature)
-          (toBufferSource data'))
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"digest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_digest :: SubtleCrypto -> AlgorithmIdentifier -> BufferSource -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/digest MDN SubtleCrypto.digest documentation>
+digest :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> data' -> m ArrayBuffer
+digest self algorithm data' = liftDOM (((js_digest (self) (Types.toAlgorithmIdentifier algorithm) (Types.toBufferSource data')) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify_ ::
-        (MonadIO m, ToJSString algorithm, IsBufferSource signature,
-         IsBufferSource data') =>
-          SubtleCrypto ->
-            algorithm -> CryptoKey -> signature -> data' -> m ()
-verify_ self algorithm key signature data'
-  = liftIO
-      (void
-         (js_verify self (toJSString algorithm) key
-            (toBufferSource signature)
-            (toBufferSource data')))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"digest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_digest ::
-        SubtleCrypto -> JSString -> BufferSource -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/digest MDN SubtleCrypto.digest documentation>
+digest_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> data' -> m ()
+digest_ self algorithm data' = liftDOM (void (((js_digest (self) (Types.toAlgorithmIdentifier algorithm) (Types.toBufferSource data')) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest ::
-       (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-         SubtleCrypto -> algorithm -> data' -> m JSVal
-digest self algorithm data'
-  = liftIO
-      ((js_digest self (toJSString algorithm) (toBufferSource data')) >>=
-         checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"encrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_encrypt :: SubtleCrypto -> AlgorithmIdentifier -> CryptoKey -> BufferSource -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/encrypt MDN SubtleCrypto.encrypt documentation>
+encrypt :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ArrayBuffer
+encrypt self algorithm key data' = liftDOM (((js_encrypt (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource data')) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest_ ::
-        (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
-          SubtleCrypto -> algorithm -> data' -> m ()
-digest_ self algorithm data'
-  = liftIO
-      (void
-         (js_digest self (toJSString algorithm) (toBufferSource data')))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"deriveKey\"]($2, $3, $4, $5,\n$6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_deriveKey ::
-        SubtleCrypto ->
-          JSString ->
-            CryptoKey -> JSString -> Bool -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/encrypt MDN SubtleCrypto.encrypt documentation>
+encrypt_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
+encrypt_ self algorithm key data' = liftDOM (void (((js_encrypt (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource data')) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
-deriveKey ::
-          (MonadIO m, ToJSString algorithm, ToJSString derivedKeyType) =>
-            SubtleCrypto ->
-              algorithm ->
-                CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m JSVal
-deriveKey self algorithm baseKey derivedKeyType extractable
-  keyUsages
-  = liftIO
-      ((toJSVal keyUsages >>=
-          \ keyUsages' ->
-            js_deriveKey self (toJSString algorithm) baseKey
-              (toJSString derivedKeyType)
-              extractable
-              keyUsages')
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"exportKey\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_exportKey :: SubtleCrypto -> JSVal -> CryptoKey -> IO (JSVal, ArrayBufferOrJsonWebKey)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/exportKey MDN SubtleCrypto.exportKey documentation>
+exportKey :: (MonadDOM m) => SubtleCrypto -> KeyFormat -> CryptoKey -> m ArrayBufferOrJsonWebKey
+exportKey self format key = liftDOM ((((toJSVal format) >>= \a2' -> js_exportKey (self) a2' (key)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
-deriveKey_ ::
-           (MonadIO m, ToJSString algorithm, ToJSString derivedKeyType) =>
-             SubtleCrypto ->
-               algorithm ->
-                 CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m ()
-deriveKey_ self algorithm baseKey derivedKeyType extractable
-  keyUsages
-  = liftIO
-      (void
-         (toJSVal keyUsages >>=
-            \ keyUsages' ->
-              js_deriveKey self (toJSString algorithm) baseKey
-                (toJSString derivedKeyType)
-                extractable
-                keyUsages'))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"deriveBits\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_deriveBits ::
-        SubtleCrypto ->
-          JSString -> CryptoKey -> Word -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/exportKey MDN SubtleCrypto.exportKey documentation>
+exportKey_ :: (MonadDOM m) => SubtleCrypto -> KeyFormat -> CryptoKey -> m ()
+exportKey_ self format key = liftDOM (void ((((toJSVal format) >>= \a2' -> js_exportKey (self) a2' (key)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
-deriveBits ::
-           (MonadIO m, ToJSString algorithm) =>
-             SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ArrayBuffer
-deriveBits self algorithm baseKey length
-  = liftIO
-      ((js_deriveBits self (toJSString algorithm) baseKey length) >>=
-         checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"generateKey\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_generateKey :: SubtleCrypto -> AlgorithmIdentifier -> Bool -> JSVal -> IO (JSVal, CryptoKeyOrCryptoKeyPair)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey MDN SubtleCrypto.generateKey documentation>
+generateKey :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> Bool -> [KeyUsage] -> m CryptoKeyOrCryptoKeyPair
+generateKey self algorithm extractable keyUsages = liftDOM ((((toJSVal keyUsages) >>= \a4' -> js_generateKey (self) (Types.toAlgorithmIdentifier algorithm) (extractable) a4') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
-deriveBits_ ::
-            (MonadIO m, ToJSString algorithm) =>
-              SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ()
-deriveBits_ self algorithm baseKey length
-  = liftIO
-      (void (js_deriveBits self (toJSString algorithm) baseKey length))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"generateKey\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_generateKey ::
-        SubtleCrypto -> JSString -> Bool -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey MDN SubtleCrypto.generateKey documentation>
+generateKey_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> Bool -> [KeyUsage] -> m ()
+generateKey_ self algorithm extractable keyUsages = liftDOM (void ((((toJSVal keyUsages) >>= \a4' -> js_generateKey (self) (Types.toAlgorithmIdentifier algorithm) (extractable) a4') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey ::
-            (MonadIO m, ToJSString algorithm) =>
-              SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m JSVal
-generateKey self algorithm extractable keyUsages
-  = liftIO
-      ((toJSVal keyUsages >>=
-          \ keyUsages' ->
-            js_generateKey self (toJSString algorithm) extractable keyUsages')
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"importKey\"]($2, $3, $4, $5, $6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_importKey :: SubtleCrypto -> JSVal -> BufferSourceOrJsonWebKey -> AlgorithmIdentifier -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/importKey MDN SubtleCrypto.importKey documentation>
+importKey :: (MonadDOM m, IsBufferSourceOrJsonWebKey keyData, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> KeyFormat -> keyData -> algorithm -> Bool -> [KeyUsage] -> m CryptoKey
+importKey self format keyData algorithm extractable keyUsages = liftDOM ((((toJSVal format) >>= \a2' -> (toJSVal keyUsages) >>= \a6' -> js_importKey (self) a2' (Types.toBufferSourceOrJsonWebKey keyData) (Types.toAlgorithmIdentifier algorithm) (extractable) a6') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey_ ::
-             (MonadIO m, ToJSString algorithm) =>
-               SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-generateKey_ self algorithm extractable keyUsages
-  = liftIO
-      (void
-         (toJSVal keyUsages >>=
-            \ keyUsages' ->
-              js_generateKey self (toJSString algorithm) extractable keyUsages'))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"importKey\"]($2, $3, $4, $5,\n$6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_importKey ::
-        SubtleCrypto ->
-          JSString ->
-            KeyData -> JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/importKey MDN SubtleCrypto.importKey documentation>
+importKey_ :: (MonadDOM m, IsBufferSourceOrJsonWebKey keyData, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> KeyFormat -> keyData -> algorithm -> Bool -> [KeyUsage] -> m ()
+importKey_ self format keyData algorithm extractable keyUsages = liftDOM (void ((((toJSVal format) >>= \a2' -> (toJSVal keyUsages) >>= \a6' -> js_importKey (self) a2' (Types.toBufferSourceOrJsonWebKey keyData) (Types.toAlgorithmIdentifier algorithm) (extractable) a6') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey ::
-          (MonadIO m, ToJSString format, IsKeyData keyData,
-           ToJSString algorithm) =>
-            SubtleCrypto ->
-              format ->
-                keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
-importKey self format keyData algorithm extractable keyUsages
-  = liftIO
-      ((toJSVal keyUsages >>=
-          \ keyUsages' ->
-            toJSVal keyData >>=
-              \ keyData' ->
-                js_importKey self (toJSString format) (KeyData keyData')
-              (toJSString algorithm)
-              extractable
-              keyUsages')
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $c) => { return $1[\"sign\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_sign :: SubtleCrypto -> AlgorithmIdentifier -> CryptoKey -> BufferSource -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/sign MDN SubtleCrypto.sign documentation>
+sign :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ArrayBuffer
+sign self algorithm key data' = liftDOM (((js_sign (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource data')) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey_ ::
-           (MonadIO m, ToJSString format, IsKeyData keyData,
-            ToJSString algorithm) =>
-             SubtleCrypto ->
-               format -> keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-importKey_ self format keyData algorithm extractable keyUsages
-  = liftIO
-      (void
-         (toJSVal keyUsages >>=
-            \ keyUsages' ->
-              toJSVal keyData >>=
-                \ keyData' ->
-                  js_importKey self (toJSString format) (KeyData keyData')
-                (toJSString algorithm)
-                extractable
-                keyUsages'))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"exportKey\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_exportKey ::
-        SubtleCrypto -> JSString -> CryptoKey -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/sign MDN SubtleCrypto.sign documentation>
+sign_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
+sign_ self algorithm key data' = liftDOM (void (((js_sign (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource data')) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey ::
-          (MonadIO m, ToJSString format) =>
-            SubtleCrypto -> format -> CryptoKey -> m JSVal
-exportKey self format key
-  = liftIO
-      ((js_exportKey self (toJSString format) key) >>=
-         checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $5, $6, $7, $8, $c) => { return $1[\"unwrapKey\"]($2, $3, $4, $5, $6, $7, $8).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_unwrapKey :: SubtleCrypto -> JSVal -> BufferSource -> CryptoKey -> AlgorithmIdentifier -> AlgorithmIdentifier -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/unwrapKey MDN SubtleCrypto.unwrapKey documentation>
+unwrapKey :: (MonadDOM m, IsBufferSource wrappedKey, IsAlgorithmIdentifier unwrapAlgorithm, IsAlgorithmIdentifier unwrappedKeyAlgorithm) => SubtleCrypto -> KeyFormat -> wrappedKey -> CryptoKey -> unwrapAlgorithm -> unwrappedKeyAlgorithm -> Bool -> [KeyUsage] -> m CryptoKey
+unwrapKey self format wrappedKey unwrappingKey unwrapAlgorithm unwrappedKeyAlgorithm extractable keyUsages = liftDOM ((((toJSVal format) >>= \a2' -> (toJSVal keyUsages) >>= \a8' -> js_unwrapKey (self) a2' (Types.toBufferSource wrappedKey) (unwrappingKey) (Types.toAlgorithmIdentifier unwrapAlgorithm) (Types.toAlgorithmIdentifier unwrappedKeyAlgorithm) (extractable) a8') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey_ ::
-           (MonadIO m, ToJSString format) =>
-             SubtleCrypto -> format -> CryptoKey -> m ()
-exportKey_ self format key
-  = liftIO (void (js_exportKey self (toJSString format) key))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $c) => { return $1[\"wrapKey\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_wrapKey ::
-        SubtleCrypto ->
-          JSString -> CryptoKey -> CryptoKey -> JSString -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/unwrapKey MDN SubtleCrypto.unwrapKey documentation>
+unwrapKey_ :: (MonadDOM m, IsBufferSource wrappedKey, IsAlgorithmIdentifier unwrapAlgorithm, IsAlgorithmIdentifier unwrappedKeyAlgorithm) => SubtleCrypto -> KeyFormat -> wrappedKey -> CryptoKey -> unwrapAlgorithm -> unwrappedKeyAlgorithm -> Bool -> [KeyUsage] -> m ()
+unwrapKey_ self format wrappedKey unwrappingKey unwrapAlgorithm unwrappedKeyAlgorithm extractable keyUsages = liftDOM (void ((((toJSVal format) >>= \a2' -> (toJSVal keyUsages) >>= \a8' -> js_unwrapKey (self) a2' (Types.toBufferSource wrappedKey) (unwrappingKey) (Types.toAlgorithmIdentifier unwrapAlgorithm) (Types.toAlgorithmIdentifier unwrappedKeyAlgorithm) (extractable) a8') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey ::
-        (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
-          SubtleCrypto ->
-            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m JSVal
-wrapKey self format key wrappingKey wrapAlgorithm
-  = liftIO
-      ((js_wrapKey self (toJSString format) key wrappingKey
-          (toJSString wrapAlgorithm))
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $5, $c) => { return $1[\"verify\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_verify :: SubtleCrypto -> AlgorithmIdentifier -> CryptoKey -> BufferSource -> BufferSource -> IO (JSVal, Bool)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/verify MDN SubtleCrypto.verify documentation>
+verify :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource signature, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> signature -> data' -> m Bool
+verify self algorithm key signature data' = liftDOM (((js_verify (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource signature) (Types.toBufferSource data')) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey_ ::
-         (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
-           SubtleCrypto ->
-             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
-wrapKey_ self format key wrappingKey wrapAlgorithm
-  = liftIO
-      (void
-         (js_wrapKey self (toJSString format) key wrappingKey
-            (toJSString wrapAlgorithm)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $c) => { return $1[\"unwrapKey\"]($2, $3, $4, $5,\n$6, $7, $8).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_unwrapKey ::
-        SubtleCrypto ->
-          JSString ->
-            BufferSource ->
-              CryptoKey ->
-                JSString -> JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/verify MDN SubtleCrypto.verify documentation>
+verify_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource signature, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> signature -> data' -> m ()
+verify_ self algorithm key signature data' = liftDOM (void (((js_verify (self) (Types.toAlgorithmIdentifier algorithm) (key) (Types.toBufferSource signature) (Types.toBufferSource data')) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey ::
-          (MonadIO m, ToJSString format, IsBufferSource wrappedKey,
-           ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
-            SubtleCrypto ->
-              format ->
-                wrappedKey ->
-                  CryptoKey ->
-                    unwrapAlgorithm ->
-                      unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
-unwrapKey self format wrappedKey unwrappingKey unwrapAlgorithm
-  unwrappedKeyAlgorithm extractable keyUsages
-  = liftIO
-      ((toJSVal keyUsages >>=
-          \ keyUsages' ->
-            js_unwrapKey self (toJSString format) (toBufferSource wrappedKey)
-              unwrappingKey
-              (toJSString unwrapAlgorithm)
-              (toJSString unwrappedKeyAlgorithm)
-              extractable
-              keyUsages')
-         >>= checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $3, $4, $5, $c) => { return $1[\"wrapKey\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_wrapKey :: SubtleCrypto -> JSVal -> CryptoKey -> CryptoKey -> AlgorithmIdentifier -> IO (JSVal, ArrayBuffer)
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/wrapKey MDN SubtleCrypto.wrapKey documentation>
+wrapKey :: (MonadDOM m, IsAlgorithmIdentifier wrapAlgorithm) => SubtleCrypto -> KeyFormat -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ArrayBuffer
+wrapKey self format key wrappingKey wrapAlgorithm = liftDOM ((((toJSVal format) >>= \a2' -> js_wrapKey (self) a2' (key) (wrappingKey) (Types.toAlgorithmIdentifier wrapAlgorithm)) >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey_ ::
-           (MonadIO m, ToJSString format, IsBufferSource wrappedKey,
-            ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
-             SubtleCrypto ->
-               format ->
-                 wrappedKey ->
-                   CryptoKey ->
-                     unwrapAlgorithm ->
-                       unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m ()
-unwrapKey_ self format wrappedKey unwrappingKey unwrapAlgorithm
-  unwrappedKeyAlgorithm extractable keyUsages
-  = liftIO
-      (void
-         (toJSVal keyUsages >>=
-            \ keyUsages' ->
-              js_unwrapKey self (toJSString format) (toBufferSource wrappedKey)
-                unwrappingKey
-                (toJSString unwrapAlgorithm)
-                (toJSString unwrappedKeyAlgorithm)
-                extractable
-                keyUsages'))
+-- | <https://developer.mozilla.org/docs/Web/API/SubtleCrypto/wrapKey MDN SubtleCrypto.wrapKey documentation>
+wrapKey_ :: (MonadDOM m, IsAlgorithmIdentifier wrapAlgorithm) => SubtleCrypto -> KeyFormat -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
+wrapKey_ self format key wrappingKey wrapAlgorithm = liftDOM (void ((((toJSVal format) >>= \a2' -> js_wrapKey (self) a2' (key) (wrappingKey) (Types.toAlgorithmIdentifier wrapAlgorithm)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SvcOutputMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/SvcOutputMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SvcOutputMetadata.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.SvcOutputMetadata
+       (js_newSvcOutputMetadata, js_setTemporalLayerId, js_getTemporalLayerId, newSvcOutputMetadata, setTemporalLayerId, getTemporalLayerId, getTemporalLayerIdUnsafe, getTemporalLayerIdUnchecked, SvcOutputMetadata(..), gTypeSvcOutputMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newSvcOutputMetadata :: IO SvcOutputMetadata
+-- | <https://w3c.github.io/webcodecs/#dictdef-svcoutputmetadata SvcOutputMetadata specification>
+newSvcOutputMetadata :: (MonadDOM m) => m SvcOutputMetadata
+newSvcOutputMetadata = liftDOM ((js_newSvcOutputMetadata))
+
+foreign import javascript safe "(($1, $2) => { $1[\"temporalLayerId\"] = $2; })"
+        js_setTemporalLayerId :: SvcOutputMetadata -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-svcoutputmetadata-temporallayerid SvcOutputMetadata.temporalLayerId specification>
+setTemporalLayerId :: (MonadDOM m) => SvcOutputMetadata -> Word -> m ()
+setTemporalLayerId self val = liftDOM (void ((js_setTemporalLayerId (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"temporalLayerId\"]; })"
+        js_getTemporalLayerId :: SvcOutputMetadata -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-svcoutputmetadata-temporallayerid SvcOutputMetadata.temporalLayerId specification>
+getTemporalLayerId :: (MonadDOM m) => SvcOutputMetadata -> m (Maybe Word)
+getTemporalLayerId self = liftDOM (((js_getTemporalLayerId (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-svcoutputmetadata-temporallayerid SvcOutputMetadata.temporalLayerId specification>
+getTemporalLayerIdUnsafe :: (MonadDOM m, HasCallStack) => SvcOutputMetadata -> m Word
+getTemporalLayerIdUnsafe self = liftDOM ((((js_getTemporalLayerId (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-svcoutputmetadata-temporallayerid SvcOutputMetadata.temporalLayerId specification>
+getTemporalLayerIdUnchecked :: (MonadDOM m) => SvcOutputMetadata -> m Word
+getTemporalLayerIdUnchecked self = liftDOM ((pFromJSVal <$> (js_getTemporalLayerId (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TaskController.hs b/src/GHCJS/DOM/JSFFI/Generated/TaskController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TaskController.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TaskController
+       (js_newTaskController, js_setPriority, newTaskController, setPriority, TaskController(..), gTypeTaskController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"TaskController\"]($1); })"
+        js_newTaskController :: JSVal -> IO TaskController
+-- | <https://developer.mozilla.org/docs/Web/API/TaskController/TaskController MDN TaskController. documentation>
+newTaskController :: (MonadDOM m) => Maybe TaskControllerInit -> m TaskController
+newTaskController init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a1' -> js_newTaskController a1'))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"setPriority\"]($2); })"
+        js_setPriority :: TaskController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TaskController/setPriority MDN TaskController.setPriority documentation>
+setPriority :: (MonadDOM m) => TaskController -> TaskPriority -> m ()
+setPriority self priority = liftDOM (void (((toJSVal priority) >>= \a2' -> js_setPriority (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TaskControllerInit.hs b/src/GHCJS/DOM/JSFFI/Generated/TaskControllerInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TaskControllerInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TaskControllerInit
+       (js_newTaskControllerInit, js_setPriority, js_getPriority, newTaskControllerInit, setPriority, getPriority, getPriorityUnsafe, getPriorityUnchecked, TaskControllerInit(..), gTypeTaskControllerInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTaskControllerInit :: IO TaskControllerInit
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-taskcontrollerinit TaskControllerInit specification>
+newTaskControllerInit :: (MonadDOM m) => m TaskControllerInit
+newTaskControllerInit = liftDOM ((js_newTaskControllerInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: TaskControllerInit -> JSVal -> IO ()
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskcontrollerinit-priority TaskControllerInit.priority specification>
+setPriority :: (MonadDOM m) => TaskControllerInit -> TaskPriority -> m ()
+setPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: TaskControllerInit -> IO JSVal
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskcontrollerinit-priority TaskControllerInit.priority specification>
+getPriority :: (MonadDOM m) => TaskControllerInit -> m (Maybe TaskPriority)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskcontrollerinit-priority TaskControllerInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => TaskControllerInit -> m TaskPriority
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskcontrollerinit-priority TaskControllerInit.priority specification>
+getPriorityUnchecked :: (MonadDOM m) => TaskControllerInit -> m TaskPriority
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TaskPriorityChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TaskPriorityChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TaskPriorityChangeEvent.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TaskPriorityChangeEvent
+       (js_newTaskPriorityChangeEvent, js_getPreviousPriority, newTaskPriorityChangeEvent, getPreviousPriority, TaskPriorityChangeEvent(..), gTypeTaskPriorityChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"TaskPriorityChangeEvent\"]($1, $2); })"
+        js_newTaskPriorityChangeEvent :: JSString -> TaskPriorityChangeEventInit -> IO TaskPriorityChangeEvent
+-- | <https://developer.mozilla.org/docs/Web/API/TaskPriorityChangeEvent/TaskPriorityChangeEvent MDN TaskPriorityChangeEvent. documentation>
+newTaskPriorityChangeEvent :: (MonadDOM m, ToJSString type') => type' -> TaskPriorityChangeEventInit -> m TaskPriorityChangeEvent
+newTaskPriorityChangeEvent type' priorityChangeEventInitDict = liftDOM ((js_newTaskPriorityChangeEvent (toJSString type') (priorityChangeEventInitDict)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"previousPriority\"]; })"
+        js_getPreviousPriority :: TaskPriorityChangeEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TaskPriorityChangeEvent/previousPriority MDN TaskPriorityChangeEvent.previousPriority documentation>
+getPreviousPriority :: (MonadDOM m) => TaskPriorityChangeEvent -> m TaskPriority
+getPreviousPriority self = liftDOM (((js_getPreviousPriority (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TaskPriorityChangeEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/TaskPriorityChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TaskPriorityChangeEventInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TaskPriorityChangeEventInit
+       (js_newTaskPriorityChangeEventInit, js_setPreviousPriority, js_getPreviousPriority, newTaskPriorityChangeEventInit, setPreviousPriority, getPreviousPriority, TaskPriorityChangeEventInit(..), gTypeTaskPriorityChangeEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"previousPriority\": $1}); })"
+        js_newTaskPriorityChangeEventInit :: JSVal -> IO TaskPriorityChangeEventInit
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-taskprioritychangeeventinit TaskPriorityChangeEventInit specification>
+newTaskPriorityChangeEventInit :: (MonadDOM m) => TaskPriority -> m TaskPriorityChangeEventInit
+newTaskPriorityChangeEventInit previousPriority = liftDOM (((toJSVal previousPriority) >>= \a1' -> js_newTaskPriorityChangeEventInit a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"previousPriority\"] = $2; })"
+        js_setPreviousPriority :: TaskPriorityChangeEventInit -> JSVal -> IO ()
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskprioritychangeeventinit-previouspriority TaskPriorityChangeEventInit.previousPriority specification>
+setPreviousPriority :: (MonadDOM m) => TaskPriorityChangeEventInit -> TaskPriority -> m ()
+setPreviousPriority self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPreviousPriority (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"previousPriority\"]; })"
+        js_getPreviousPriority :: TaskPriorityChangeEventInit -> IO JSVal
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskprioritychangeeventinit-previouspriority TaskPriorityChangeEventInit.previousPriority specification>
+getPreviousPriority :: (MonadDOM m) => TaskPriorityChangeEventInit -> m TaskPriority
+getPreviousPriority self = liftDOM (((js_getPreviousPriority (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TaskSignal.hs b/src/GHCJS/DOM/JSFFI/Generated/TaskSignal.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TaskSignal.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TaskSignal
+       (js_any, js_getPriority, any, any_, getPriority, prioritychange, TaskSignal(..), gTypeTaskSignal)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return globalThis[\"TaskSignal\"][\"any\"]($1, $2); })"
+        js_any :: JSVal -> JSVal -> IO TaskSignal
+-- | <https://developer.mozilla.org/docs/Web/API/TaskSignal/any_static MDN TaskSignal.any documentation>
+any :: (MonadDOM m, IsAbortSignal signals) => [signals] -> Maybe TaskSignalAnyInit -> m TaskSignal
+any signals init = liftDOM (((toJSVal signals) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal init) >>= \a2' -> js_any a1' a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TaskSignal/any_static MDN TaskSignal.any documentation>
+any_ :: (MonadDOM m, IsAbortSignal signals) => [signals] -> Maybe TaskSignalAnyInit -> m ()
+any_ signals init = liftDOM (void (((toJSVal signals) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal init) >>= \a2' -> js_any a1' a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: TaskSignal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TaskSignal/priority MDN TaskSignal.priority documentation>
+getPriority :: (MonadDOM m) => TaskSignal -> m TaskPriority
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignal-onprioritychange prioritychange event>
+prioritychange :: EventName TaskSignal TaskPriorityChangeEvent
+prioritychange = unsafeEventName (toJSString "prioritychange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TaskSignalAnyInit.hs b/src/GHCJS/DOM/JSFFI/Generated/TaskSignalAnyInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TaskSignalAnyInit.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TaskSignalAnyInit
+       (js_newTaskSignalAnyInit, js_setPriority, js_getPriority, newTaskSignalAnyInit, setPriority, getPriority, getPriorityUnsafe, getPriorityUnchecked, TaskSignalAnyInit(..), gTypeTaskSignalAnyInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTaskSignalAnyInit :: IO TaskSignalAnyInit
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-tasksignalanyinit TaskSignalAnyInit specification>
+newTaskSignalAnyInit :: (MonadDOM m) => m TaskSignalAnyInit
+newTaskSignalAnyInit = liftDOM ((js_newTaskSignalAnyInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"priority\"] = $2; })"
+        js_setPriority :: TaskSignalAnyInit -> TaskPriorityOrTaskSignal -> IO ()
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignalanyinit-priority TaskSignalAnyInit.priority specification>
+setPriority :: (MonadDOM m, IsTaskPriorityOrTaskSignal val) => TaskSignalAnyInit -> val -> m ()
+setPriority self val = liftDOM (void ((js_setPriority (self) (Types.toTaskPriorityOrTaskSignal val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"priority\"]; })"
+        js_getPriority :: TaskSignalAnyInit -> IO JSVal
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignalanyinit-priority TaskSignalAnyInit.priority specification>
+getPriority :: (MonadDOM m) => TaskSignalAnyInit -> m (Maybe TaskPriorityOrTaskSignal)
+getPriority self = liftDOM (((js_getPriority (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignalanyinit-priority TaskSignalAnyInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => TaskSignalAnyInit -> m TaskPriorityOrTaskSignal
+getPriorityUnsafe self = liftDOM ((((js_getPriority (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignalanyinit-priority TaskSignalAnyInit.priority specification>
+getPriorityUnchecked :: (MonadDOM m) => TaskSignalAnyInit -> m TaskPriorityOrTaskSignal
+getPriorityUnchecked self = liftDOM ((pFromJSVal <$> (js_getPriority (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Text.hs b/src/GHCJS/DOM/JSFFI/Generated/Text.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Text.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Text.hs
@@ -1,55 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Text
-       (js_newText, newText, js_splitText, splitText, splitText_,
-        js_getWholeText, getWholeText, Text(..), gTypeText, IsText, toText)
+       (js_newText, js_splitText, js_getWholeText, newText, splitText, splitText_, getWholeText, drag, dragEnd, dragStart, pointercancel, Text(..), gTypeText, IsText, toText)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return new window[\"Text\"]($1); })"
-        js_newText :: Optional JSString -> IO Text
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation> 
-newText :: (MonadIO m, ToJSString data') => Maybe data' -> m Text
-newText data' = liftIO (js_newText (toOptionalJSString data'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"splitText\"]($2); })" js_splitText
-        :: Text -> Word -> IO Text
+foreign import javascript safe "(($1) => { return new globalThis[\"Text\"]($1); })"
+        js_newText :: (Optional JSString) -> IO Text
+-- | <https://developer.mozilla.org/docs/Web/API/Text/Text MDN Text. documentation>
+newText :: (MonadDOM m, ToJSString data') => Maybe data' -> m Text
+newText data' = liftDOM ((js_newText (toOptionalJSString data')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
-splitText :: (MonadIO m, IsText self) => self -> Word -> m Text
-splitText self offset = liftIO (js_splitText (toText self) offset)
+foreign import javascript safe "(($1, $2) => { return $1[\"splitText\"]($2); })"
+        js_splitText :: Text -> Word -> IO Text
+-- | <https://developer.mozilla.org/docs/Web/API/Text/splitText MDN Text.splitText documentation>
+splitText :: (MonadDOM m, IsText self) => self -> Word -> m Text
+splitText self offset = liftDOM ((js_splitText ((Types.toText self)) (offset)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
-splitText_ :: (MonadIO m, IsText self) => self -> Word -> m ()
-splitText_ self offset
-  = liftIO (void (js_splitText (toText self) offset))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/Text/splitText MDN Text.splitText documentation>
+splitText_ :: (MonadDOM m, IsText self) => self -> Word -> m ()
+splitText_ self offset = liftDOM (void ((js_splitText ((Types.toText self)) (offset))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"wholeText\"]; })"
         js_getWholeText :: Text -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Text/wholeText MDN Text.wholeText documentation>
+getWholeText :: (MonadDOM m, IsText self, FromJSString result) => self -> m result
+getWholeText self = liftDOM ((fromJSString <$> (js_getWholeText ((Types.toText self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.wholeText Mozilla Text.wholeText documentation> 
-getWholeText ::
-             (MonadIO m, IsText self, FromJSString result) => self -> m result
-getWholeText self
-  = liftIO (fromJSString <$> (js_getWholeText (toText self)))
+-- | <https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-drag drag event>
+drag :: (IsText self, IsEventTarget self) => EventName self DragEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragend dragend event>
+dragEnd :: (IsText self, IsEventTarget self) => EventName self DragEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragstart dragstart event>
+dragStart :: (IsText self, IsEventTarget self) => EventName self DragEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://w3c.github.io/pointerevents/#dfn-pointercancel pointercancel event>
+pointercancel :: (IsText self, IsEventTarget self) => EventName self PointerEvent
+pointercancel = unsafeEventName (toJSString "pointercancel")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextDecodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/TextDecodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextDecodeOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TextDecodeOptions
+       (js_newTextDecodeOptions, js_setStream, js_getStream, newTextDecodeOptions, setStream, getStream, getStreamUnsafe, getStreamUnchecked, TextDecodeOptions(..), gTypeTextDecodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTextDecodeOptions :: IO TextDecodeOptions
+-- | <https://encoding.spec.whatwg.org/#textdecodeoptions TextDecodeOptions specification>
+newTextDecodeOptions :: (MonadDOM m) => m TextDecodeOptions
+newTextDecodeOptions = liftDOM ((js_newTextDecodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stream\"] = $2; })"
+        js_setStream :: TextDecodeOptions -> Bool -> IO ()
+-- | <https://encoding.spec.whatwg.org/#dom-textdecodeoptions-stream TextDecodeOptions.stream specification>
+setStream :: (MonadDOM m) => TextDecodeOptions -> Bool -> m ()
+setStream self val = liftDOM (void ((js_setStream (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stream\"]; })"
+        js_getStream :: TextDecodeOptions -> IO JSVal
+-- | <https://encoding.spec.whatwg.org/#dom-textdecodeoptions-stream TextDecodeOptions.stream specification>
+getStream :: (MonadDOM m) => TextDecodeOptions -> m (Maybe Bool)
+getStream self = liftDOM (((js_getStream (self)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecodeoptions-stream TextDecodeOptions.stream specification>
+getStreamUnsafe :: (MonadDOM m, HasCallStack) => TextDecodeOptions -> m Bool
+getStreamUnsafe self = liftDOM ((((js_getStream (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecodeoptions-stream TextDecodeOptions.stream specification>
+getStreamUnchecked :: (MonadDOM m) => TextDecodeOptions -> m Bool
+getStreamUnchecked self = liftDOM ((pFromJSVal <$> (js_getStream (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs b/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
@@ -1,88 +1,33 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextDecoder
-       (js_newTextDecoder, newTextDecoder, js_decode, decode, decode_,
-        js_getEncoding, getEncoding, js_getFatal, getFatal,
-        js_getIgnoreBOM, getIgnoreBOM, TextDecoder(..), gTypeTextDecoder)
+       (js_newTextDecoder, js_decode, newTextDecoder, decode, decode_, TextDecoder(..), gTypeTextDecoder)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1, $2) => { return new window[\"TextDecoder\"]($1,\n$2); })" js_newTextDecoder ::
-        Optional JSString -> Optional TextDecoderOptions -> IO TextDecoder
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder Mozilla TextDecoder documentation> 
-newTextDecoder ::
-               (MonadIO m, ToJSString label) =>
-                 Maybe label -> Maybe TextDecoderOptions -> m TextDecoder
-newTextDecoder label options
-  = liftIO
-      (js_newTextDecoder (toOptionalJSString label)
-         (maybeToOptional options))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"decode\"]($2, $3); })" js_decode
-        ::
-        TextDecoder ->
-          Optional BufferSource -> Optional TextDecodeOptions -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.decode Mozilla TextDecoder.decode documentation> 
-decode ::
-       (MonadIO m, IsBufferSource input, FromJSString result) =>
-         TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m result
-decode self input options
-  = liftIO
-      (fromJSString <$>
-         (js_decode self (maybeToOptional (fmap toBufferSource input))
-            (maybeToOptional options)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.decode Mozilla TextDecoder.decode documentation> 
-decode_ ::
-        (MonadIO m, IsBufferSource input) =>
-          TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m ()
-decode_ self input options
-  = liftIO
-      (void
-         (js_decode self (maybeToOptional (fmap toBufferSource input))
-            (maybeToOptional options)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })" js_getEncoding
-        :: TextDecoder -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.encoding Mozilla TextDecoder.encoding documentation> 
-getEncoding ::
-            (MonadIO m, FromJSString result) => TextDecoder -> m result
-getEncoding self = liftIO (fromJSString <$> (js_getEncoding self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"fatal\"] ? 1 : 0); })"
-        js_getFatal :: TextDecoder -> IO Bool
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"TextDecoder\"]($1, $2); })"
+        js_newTextDecoder :: (Optional JSString) -> JSVal -> IO TextDecoder
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/TextDecoder MDN TextDecoder. documentation>
+newTextDecoder :: (MonadDOM m, ToJSString label) => Maybe label -> Maybe TextDecoderOptions -> m TextDecoder
+newTextDecoder label options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newTextDecoder (toOptionalJSString label) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.fatal Mozilla TextDecoder.fatal documentation> 
-getFatal :: (MonadIO m) => TextDecoder -> m Bool
-getFatal self = liftIO (js_getFatal self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"ignoreBOM\"] ? 1 : 0); })"
-        js_getIgnoreBOM :: TextDecoder -> IO Bool
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"decode\"]($2, $3); })"
+        js_decode :: TextDecoder -> JSVal -> JSVal -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/decode MDN TextDecoder.decode documentation>
+decode :: (MonadDOM m, IsAllowSharedBufferSource input, FromJSString result) => TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m result
+decode self input options = liftDOM ((fromJSString <$> ((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_decode (self) a2' a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.ignoreBOM Mozilla TextDecoder.ignoreBOM documentation> 
-getIgnoreBOM :: (MonadIO m) => TextDecoder -> m Bool
-getIgnoreBOM self = liftIO (js_getIgnoreBOM self)
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/decode MDN TextDecoder.decode documentation>
+decode_ :: (MonadDOM m, IsAllowSharedBufferSource input) => TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m ()
+decode_ self input options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_decode (self) a2' a3')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextDecoderCommon.hs b/src/GHCJS/DOM/JSFFI/Generated/TextDecoderCommon.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextDecoderCommon.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TextDecoderCommon
+       (js_getEncoding, js_getFatal, js_getIgnoreBOM, getEncoding, getFatal, getIgnoreBOM, TextDecoderCommon(..), gTypeTextDecoderCommon, IsTextDecoderCommon, toTextDecoderCommon)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })"
+        js_getEncoding :: TextDecoderCommon -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/encoding MDN TextDecoderCommon.encoding documentation>
+getEncoding :: (MonadDOM m, IsTextDecoderCommon self, FromJSString result) => self -> m result
+getEncoding self = liftDOM ((fromJSString <$> (js_getEncoding ((Types.toTextDecoderCommon self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fatal\"]; })"
+        js_getFatal :: TextDecoderCommon -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/fatal MDN TextDecoderCommon.fatal documentation>
+getFatal :: (MonadDOM m, IsTextDecoderCommon self) => self -> m Bool
+getFatal self = liftDOM ((js_getFatal ((Types.toTextDecoderCommon self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ignoreBOM\"]; })"
+        js_getIgnoreBOM :: TextDecoderCommon -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/ignoreBOM MDN TextDecoderCommon.ignoreBOM documentation>
+getIgnoreBOM :: (MonadDOM m, IsTextDecoderCommon self) => self -> m Bool
+getIgnoreBOM self = liftDOM ((js_getIgnoreBOM ((Types.toTextDecoderCommon self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextDecoderOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/TextDecoderOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextDecoderOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TextDecoderOptions
+       (js_newTextDecoderOptions, js_setFatal, js_getFatal, js_setIgnoreBOM, js_getIgnoreBOM, newTextDecoderOptions, setFatal, getFatal, getFatalUnsafe, getFatalUnchecked, setIgnoreBOM, getIgnoreBOM, getIgnoreBOMUnsafe, getIgnoreBOMUnchecked, TextDecoderOptions(..), gTypeTextDecoderOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTextDecoderOptions :: IO TextDecoderOptions
+-- | <https://encoding.spec.whatwg.org/#textdecoderoptions TextDecoderOptions specification>
+newTextDecoderOptions :: (MonadDOM m) => m TextDecoderOptions
+newTextDecoderOptions = liftDOM ((js_newTextDecoderOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fatal\"] = $2; })"
+        js_setFatal :: TextDecoderOptions -> Bool -> IO ()
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-fatal TextDecoderOptions.fatal specification>
+setFatal :: (MonadDOM m) => TextDecoderOptions -> Bool -> m ()
+setFatal self val = liftDOM (void ((js_setFatal (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fatal\"]; })"
+        js_getFatal :: TextDecoderOptions -> IO JSVal
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-fatal TextDecoderOptions.fatal specification>
+getFatal :: (MonadDOM m) => TextDecoderOptions -> m (Maybe Bool)
+getFatal self = liftDOM (((js_getFatal (self)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-fatal TextDecoderOptions.fatal specification>
+getFatalUnsafe :: (MonadDOM m, HasCallStack) => TextDecoderOptions -> m Bool
+getFatalUnsafe self = liftDOM ((((js_getFatal (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-fatal TextDecoderOptions.fatal specification>
+getFatalUnchecked :: (MonadDOM m) => TextDecoderOptions -> m Bool
+getFatalUnchecked self = liftDOM ((pFromJSVal <$> (js_getFatal (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ignoreBOM\"] = $2; })"
+        js_setIgnoreBOM :: TextDecoderOptions -> Bool -> IO ()
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-ignorebom TextDecoderOptions.ignoreBOM specification>
+setIgnoreBOM :: (MonadDOM m) => TextDecoderOptions -> Bool -> m ()
+setIgnoreBOM self val = liftDOM (void ((js_setIgnoreBOM (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ignoreBOM\"]; })"
+        js_getIgnoreBOM :: TextDecoderOptions -> IO JSVal
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-ignorebom TextDecoderOptions.ignoreBOM specification>
+getIgnoreBOM :: (MonadDOM m) => TextDecoderOptions -> m (Maybe Bool)
+getIgnoreBOM self = liftDOM (((js_getIgnoreBOM (self)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-ignorebom TextDecoderOptions.ignoreBOM specification>
+getIgnoreBOMUnsafe :: (MonadDOM m, HasCallStack) => TextDecoderOptions -> m Bool
+getIgnoreBOMUnsafe self = liftDOM ((((js_getIgnoreBOM (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-ignorebom TextDecoderOptions.ignoreBOM specification>
+getIgnoreBOMUnchecked :: (MonadDOM m) => TextDecoderOptions -> m Bool
+getIgnoreBOMUnchecked self = liftDOM ((pFromJSVal <$> (js_getIgnoreBOM (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextDecoderStream.hs b/src/GHCJS/DOM/JSFFI/Generated/TextDecoderStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextDecoderStream.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TextDecoderStream
+       (js_newTextDecoderStream, newTextDecoderStream, TextDecoderStream(..), gTypeTextDecoderStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"TextDecoderStream\"]($1, $2); })"
+        js_newTextDecoderStream :: (Optional JSString) -> JSVal -> IO TextDecoderStream
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoderStream/TextDecoderStream MDN TextDecoderStream. documentation>
+newTextDecoderStream :: (MonadDOM m, ToJSString label) => Maybe label -> Maybe TextDecoderOptions -> m TextDecoderStream
+newTextDecoderStream label options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newTextDecoderStream (toOptionalJSString label) a2'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
@@ -1,58 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextEncoder
-       (js_newTextEncoder, newTextEncoder, js_encode, encode, encode_,
-        js_getEncoding, getEncoding, TextEncoder(..), gTypeTextEncoder)
+       (js_newTextEncoder, js_encode, js_encodeInto, newTextEncoder, encode, encode_, encodeInto, encodeInto_, TextEncoder(..), gTypeTextEncoder)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"TextEncoder\"](); })"
+
+foreign import javascript safe "(() => { return new globalThis[\"TextEncoder\"](); })"
         js_newTextEncoder :: IO TextEncoder
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoder/TextEncoder MDN TextEncoder. documentation>
+newTextEncoder :: (MonadDOM m) => m TextEncoder
+newTextEncoder = liftDOM ((js_newTextEncoder))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder Mozilla TextEncoder documentation> 
-newTextEncoder :: (MonadIO m) => m TextEncoder
-newTextEncoder = liftIO (js_newTextEncoder)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"encode\"]($2); })" js_encode ::
-        TextEncoder -> Optional JSString -> IO Uint8Array
+foreign import javascript safe "(($1, $2) => { return $1[\"encode\"]($2); })"
+        js_encode :: TextEncoder -> (Optional JSString) -> IO Uint8Array
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoder/encode MDN TextEncoder.encode documentation>
+encode :: (MonadDOM m, ToJSString input) => TextEncoder -> Maybe input -> m Uint8Array
+encode self input = liftDOM ((js_encode (self) (toOptionalJSString input)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encode Mozilla TextEncoder.encode documentation> 
-encode ::
-       (MonadIO m, ToJSString input) =>
-         TextEncoder -> Maybe input -> m Uint8Array
-encode self input
-  = liftIO (js_encode self (toOptionalJSString input))
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoder/encode MDN TextEncoder.encode documentation>
+encode_ :: (MonadDOM m, ToJSString input) => TextEncoder -> Maybe input -> m ()
+encode_ self input = liftDOM (void ((js_encode (self) (toOptionalJSString input))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encode Mozilla TextEncoder.encode documentation> 
-encode_ ::
-        (MonadIO m, ToJSString input) => TextEncoder -> Maybe input -> m ()
-encode_ self input
-  = liftIO (void (js_encode self (toOptionalJSString input)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })" js_getEncoding
-        :: TextEncoder -> IO JSString
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"encodeInto\"]($2, $3); })"
+        js_encodeInto :: TextEncoder -> JSString -> Uint8Array -> IO TextEncoderEncodeIntoResult
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoder/encodeInto MDN TextEncoder.encodeInto documentation>
+encodeInto :: (MonadDOM m, ToJSString source, IsUint8Array destination) => TextEncoder -> source -> destination -> m TextEncoderEncodeIntoResult
+encodeInto self source destination = liftDOM ((js_encodeInto (self) (toJSString source) (Types.toUint8Array destination)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encoding Mozilla TextEncoder.encoding documentation> 
-getEncoding ::
-            (MonadIO m, FromJSString result) => TextEncoder -> m result
-getEncoding self = liftIO (fromJSString <$> (js_getEncoding self))
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoder/encodeInto MDN TextEncoder.encodeInto documentation>
+encodeInto_ :: (MonadDOM m, ToJSString source, IsUint8Array destination) => TextEncoder -> source -> destination -> m ()
+encodeInto_ self source destination = liftDOM (void ((js_encodeInto (self) (toJSString source) (Types.toUint8Array destination))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEncoderCommon.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEncoderCommon.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEncoderCommon.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TextEncoderCommon
+       (js_getEncoding, getEncoding, TextEncoderCommon(..), gTypeTextEncoderCommon, IsTextEncoderCommon, toTextEncoderCommon)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })"
+        js_getEncoding :: TextEncoderCommon -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoder/encoding MDN TextEncoderCommon.encoding documentation>
+getEncoding :: (MonadDOM m, IsTextEncoderCommon self, FromJSString result) => self -> m result
+getEncoding self = liftDOM ((fromJSString <$> (js_getEncoding ((Types.toTextEncoderCommon self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEncoderEncodeIntoResult.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEncoderEncodeIntoResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEncoderEncodeIntoResult.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TextEncoderEncodeIntoResult
+       (js_newTextEncoderEncodeIntoResult, js_setRead, js_getRead, js_setWritten, js_getWritten, newTextEncoderEncodeIntoResult, setRead, getRead, getReadUnsafe, getReadUnchecked, setWritten, getWritten, getWrittenUnsafe, getWrittenUnchecked, TextEncoderEncodeIntoResult(..), gTypeTextEncoderEncodeIntoResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTextEncoderEncodeIntoResult :: IO TextEncoderEncodeIntoResult
+-- | <https://encoding.spec.whatwg.org/#dictdef-textencoderencodeintoresult TextEncoderEncodeIntoResult specification>
+newTextEncoderEncodeIntoResult :: (MonadDOM m) => m TextEncoderEncodeIntoResult
+newTextEncoderEncodeIntoResult = liftDOM ((js_newTextEncoderEncodeIntoResult))
+
+foreign import javascript safe "(($1, $2) => { $1[\"read\"] = $2; })"
+        js_setRead :: TextEncoderEncodeIntoResult -> JSVal -> IO ()
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-read TextEncoderEncodeIntoResult.read specification>
+setRead :: (MonadDOM m) => TextEncoderEncodeIntoResult -> Word53 -> m ()
+setRead self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRead (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"read\"]; })"
+        js_getRead :: TextEncoderEncodeIntoResult -> IO JSVal
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-read TextEncoderEncodeIntoResult.read specification>
+getRead :: (MonadDOM m) => TextEncoderEncodeIntoResult -> m (Maybe Word53)
+getRead self = liftDOM (((js_getRead (self)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-read TextEncoderEncodeIntoResult.read specification>
+getReadUnsafe :: (MonadDOM m, HasCallStack) => TextEncoderEncodeIntoResult -> m Word53
+getReadUnsafe self = liftDOM ((((js_getRead (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-read TextEncoderEncodeIntoResult.read specification>
+getReadUnchecked :: (MonadDOM m) => TextEncoderEncodeIntoResult -> m Word53
+getReadUnchecked self = liftDOM ((pFromJSVal <$> (js_getRead (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"written\"] = $2; })"
+        js_setWritten :: TextEncoderEncodeIntoResult -> JSVal -> IO ()
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-written TextEncoderEncodeIntoResult.written specification>
+setWritten :: (MonadDOM m) => TextEncoderEncodeIntoResult -> Word53 -> m ()
+setWritten self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setWritten (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"written\"]; })"
+        js_getWritten :: TextEncoderEncodeIntoResult -> IO JSVal
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-written TextEncoderEncodeIntoResult.written specification>
+getWritten :: (MonadDOM m) => TextEncoderEncodeIntoResult -> m (Maybe Word53)
+getWritten self = liftDOM (((js_getWritten (self)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-written TextEncoderEncodeIntoResult.written specification>
+getWrittenUnsafe :: (MonadDOM m, HasCallStack) => TextEncoderEncodeIntoResult -> m Word53
+getWrittenUnsafe self = liftDOM ((((js_getWritten (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-written TextEncoderEncodeIntoResult.written specification>
+getWrittenUnchecked :: (MonadDOM m) => TextEncoderEncodeIntoResult -> m Word53
+getWrittenUnchecked self = liftDOM ((pFromJSVal <$> (js_getWritten (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEncoderStream.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEncoderStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEncoderStream.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TextEncoderStream
+       (js_newTextEncoderStream, newTextEncoderStream, TextEncoderStream(..), gTypeTextEncoderStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return new globalThis[\"TextEncoderStream\"](); })"
+        js_newTextEncoderStream :: IO TextEncoderStream
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoderStream/TextEncoderStream MDN TextEncoderStream. documentation>
+newTextEncoderStream :: (MonadDOM m) => m TextEncoderStream
+newTextEncoderStream = liftDOM ((js_newTextEncoderStream))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
@@ -1,55 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextEvent
-       (js_initTextEvent, initTextEvent, js_getData, getData,
-        TextEvent(..), gTypeTextEvent)
+       (js_initTextEvent, js_getData, initTextEvent, getData, TextEvent(..), gTypeTextEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initTextEvent\"]($2, $3, $4,\n$5, $6); })" js_initTextEvent ::
-        TextEvent ->
-          Optional JSString ->
-            Bool -> Bool -> Optional Window -> Optional JSString -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.initTextEvent Mozilla TextEvent.initTextEvent documentation> 
-initTextEvent ::
-              (MonadIO m, ToJSString typeArg, ToJSString dataArg) =>
-                TextEvent ->
-                  Maybe typeArg ->
-                    Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()
-initTextEvent self typeArg canBubbleArg cancelableArg viewArg
-  dataArg
-  = liftIO
-      (js_initTextEvent self (toOptionalJSString typeArg) canBubbleArg
-         cancelableArg
-         (maybeToOptional viewArg)
-         (toOptionalJSString dataArg))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
-        TextEvent -> IO JSString
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"initTextEvent\"]($2, $3, $4, $5, $6); })"
+        js_initTextEvent :: TextEvent -> JSString -> JSVal -> JSVal -> JSVal -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextEvent/initTextEvent MDN TextEvent.initTextEvent documentation>
+initTextEvent :: (MonadDOM m, ToJSString type', ToJSString data') => TextEvent -> type' -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe data' -> m ()
+initTextEvent self type' bubbles cancelable view data' = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubbles) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelable) >>= \a4' -> (toJSVal view) >>= \a5' -> js_initTextEvent (self) (toJSString type') a3' a4' a5' (toOptionalJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.data Mozilla TextEvent.data documentation> 
-getData ::
-        (MonadIO m, FromJSString result) => TextEvent -> m result
-getData self = liftIO (fromJSString <$> (js_getData self))
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: TextEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextEvent/data MDN TextEvent.data documentation>
+getData :: (MonadDOM m, FromJSString result) => TextEvent -> m result
+getData self = liftDOM ((fromJSString <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs b/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
@@ -1,32 +1,89 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextMetrics
-       (js_getWidth, getWidth, TextMetrics(..), gTypeTextMetrics) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+       (js_getWidth, js_getActualBoundingBoxLeft, js_getActualBoundingBoxRight, js_getFontBoundingBoxAscent, js_getFontBoundingBoxDescent, js_getActualBoundingBoxAscent, js_getActualBoundingBoxDescent, js_getEmHeightAscent, js_getEmHeightDescent, js_getHangingBaseline, js_getAlphabeticBaseline, js_getIdeographicBaseline, getWidth, getActualBoundingBoxLeft, getActualBoundingBoxRight, getFontBoundingBoxAscent, getFontBoundingBoxDescent, getActualBoundingBoxAscent, getActualBoundingBoxDescent, getEmHeightAscent, getEmHeightDescent, getHangingBaseline, getAlphabeticBaseline, getIdeographicBaseline, TextMetrics(..), gTypeTextMetrics)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        TextMetrics -> IO Float
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics.width Mozilla TextMetrics.width documentation> 
-getWidth :: (MonadIO m) => TextMetrics -> m Float
-getWidth self = liftIO (js_getWidth self)
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/width MDN TextMetrics.width documentation>
+getWidth :: (MonadDOM m) => TextMetrics -> m Double
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"actualBoundingBoxLeft\"]; })"
+        js_getActualBoundingBoxLeft :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxLeft MDN TextMetrics.actualBoundingBoxLeft documentation>
+getActualBoundingBoxLeft :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxLeft self = liftDOM ((js_getActualBoundingBoxLeft (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"actualBoundingBoxRight\"]; })"
+        js_getActualBoundingBoxRight :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxRight MDN TextMetrics.actualBoundingBoxRight documentation>
+getActualBoundingBoxRight :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxRight self = liftDOM ((js_getActualBoundingBoxRight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontBoundingBoxAscent\"]; })"
+        js_getFontBoundingBoxAscent :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxAscent MDN TextMetrics.fontBoundingBoxAscent documentation>
+getFontBoundingBoxAscent :: (MonadDOM m) => TextMetrics -> m Double
+getFontBoundingBoxAscent self = liftDOM ((js_getFontBoundingBoxAscent (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fontBoundingBoxDescent\"]; })"
+        js_getFontBoundingBoxDescent :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxDescent MDN TextMetrics.fontBoundingBoxDescent documentation>
+getFontBoundingBoxDescent :: (MonadDOM m) => TextMetrics -> m Double
+getFontBoundingBoxDescent self = liftDOM ((js_getFontBoundingBoxDescent (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"actualBoundingBoxAscent\"]; })"
+        js_getActualBoundingBoxAscent :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxAscent MDN TextMetrics.actualBoundingBoxAscent documentation>
+getActualBoundingBoxAscent :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxAscent self = liftDOM ((js_getActualBoundingBoxAscent (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"actualBoundingBoxDescent\"]; })"
+        js_getActualBoundingBoxDescent :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxDescent MDN TextMetrics.actualBoundingBoxDescent documentation>
+getActualBoundingBoxDescent :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxDescent self = liftDOM ((js_getActualBoundingBoxDescent (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"emHeightAscent\"]; })"
+        js_getEmHeightAscent :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/emHeightAscent MDN TextMetrics.emHeightAscent documentation>
+getEmHeightAscent :: (MonadDOM m) => TextMetrics -> m Double
+getEmHeightAscent self = liftDOM ((js_getEmHeightAscent (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"emHeightDescent\"]; })"
+        js_getEmHeightDescent :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/emHeightDescent MDN TextMetrics.emHeightDescent documentation>
+getEmHeightDescent :: (MonadDOM m) => TextMetrics -> m Double
+getEmHeightDescent self = liftDOM ((js_getEmHeightDescent (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hangingBaseline\"]; })"
+        js_getHangingBaseline :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/hangingBaseline MDN TextMetrics.hangingBaseline documentation>
+getHangingBaseline :: (MonadDOM m) => TextMetrics -> m Double
+getHangingBaseline self = liftDOM ((js_getHangingBaseline (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alphabeticBaseline\"]; })"
+        js_getAlphabeticBaseline :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/alphabeticBaseline MDN TextMetrics.alphabeticBaseline documentation>
+getAlphabeticBaseline :: (MonadDOM m) => TextMetrics -> m Double
+getAlphabeticBaseline self = liftDOM ((js_getAlphabeticBaseline (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ideographicBaseline\"]; })"
+        js_getIdeographicBaseline :: TextMetrics -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/ideographicBaseline MDN TextMetrics.ideographicBaseline documentation>
+getIdeographicBaseline :: (MonadDOM m) => TextMetrics -> m Double
+getIdeographicBaseline self = liftDOM ((js_getIdeographicBaseline (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
@@ -1,201 +1,117 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextTrack
-       (js_addCue, addCue, js_removeCue, removeCue, js_addRegion,
-        addRegion, js_removeRegion, removeRegion, js_getId, getId,
-        js_setKind, setKind, js_getKind, getKind, js_getLabel, getLabel,
-        js_setLanguage, setLanguage, js_getLanguage, getLanguage,
-        js_getInBandMetadataTrackDispatchType,
-        getInBandMetadataTrackDispatchType, js_setMode, setMode,
-        js_getMode, getMode, js_getCues, getCues, getCuesUnsafe,
-        getCuesUnchecked, js_getActiveCues, getActiveCues,
-        getActiveCuesUnsafe, getActiveCuesUnchecked, cueChange,
-        js_getRegions, getRegions, js_getSourceBuffer, getSourceBuffer,
-        TextTrack(..), gTypeTextTrack)
+       (js_addCue, js_removeCue, js_getKind, js_getLabel, js_getLanguage, js_getId, js_getInBandMetadataTrackDispatchType, js_setMode, js_getMode, js_getCues, js_getActiveCues, js_getSourceBuffer, addCue, removeCue, getKind, getLabel, getLanguage, getId, getInBandMetadataTrackDispatchType, setMode, getMode, getCues, getCuesUnsafe, getCuesUnchecked, getActiveCues, getActiveCuesUnsafe, getActiveCuesUnchecked, getSourceBuffer, getSourceBufferUnsafe, getSourceBufferUnchecked, cueChange, TextTrack(..), gTypeTextTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"addCue\"]($2); })" js_addCue ::
-        TextTrack -> TextTrackCue -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
-addCue ::
-       (MonadIO m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
-addCue self cue = liftIO (js_addCue self (toTextTrackCue cue))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"removeCue\"]($2); })" js_removeCue
-        :: TextTrack -> TextTrackCue -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeCue Mozilla TextTrack.removeCue documentation> 
-removeCue ::
-          (MonadIO m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
-removeCue self cue
-  = liftIO (js_removeCue self (toTextTrackCue cue))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"addRegion\"]($2); })"
-        js_addRegion :: TextTrack -> Optional VTTRegion -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addRegion Mozilla TextTrack.addRegion documentation> 
-addRegion :: (MonadIO m) => TextTrack -> Maybe VTTRegion -> m ()
-addRegion self region
-  = liftIO (js_addRegion self (maybeToOptional region))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"removeRegion\"]($2); })"
-        js_removeRegion :: TextTrack -> Optional VTTRegion -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeRegion Mozilla TextTrack.removeRegion documentation> 
-removeRegion :: (MonadIO m) => TextTrack -> Maybe VTTRegion -> m ()
-removeRegion self region
-  = liftIO (js_removeRegion self (maybeToOptional region))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        TextTrack -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"addCue\"]($2); })"
+        js_addCue :: TextTrack -> TextTrackCue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/addCue MDN TextTrack.addCue documentation>
+addCue :: (MonadDOM m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
+addCue self cue = liftDOM (void ((js_addCue (self) (Types.toTextTrackCue cue))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.id Mozilla TextTrack.id documentation> 
-getId :: (MonadIO m, FromJSString result) => TextTrack -> m result
-getId self = liftIO (fromJSString <$> (js_getId self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
-        TextTrack -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"removeCue\"]($2); })"
+        js_removeCue :: TextTrack -> TextTrackCue -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/removeCue MDN TextTrack.removeCue documentation>
+removeCue :: (MonadDOM m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
+removeCue self cue = liftDOM (void ((js_removeCue (self) (Types.toTextTrackCue cue))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
-setKind :: (MonadIO m) => TextTrack -> TextTrackKind -> m ()
-setKind self val = liftIO (js_setKind self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        TextTrack -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: TextTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/kind MDN TextTrack.kind documentation>
+getKind :: (MonadDOM m) => TextTrack -> m TextTrackKind
+getKind self = liftDOM (((js_getKind (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
-getKind :: (MonadIO m) => TextTrack -> m TextTrackKind
-getKind self = liftIO ((js_getKind self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        TextTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: TextTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/label MDN TextTrack.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.label Mozilla TextTrack.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => TextTrack -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"language\"] = $2; })"
-        js_setLanguage :: TextTrack -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })"
+        js_getLanguage :: TextTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/language MDN TextTrack.language documentation>
+getLanguage :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getLanguage self = liftDOM ((fromJSString <$> (js_getLanguage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
-setLanguage ::
-            (MonadIO m, ToJSString val) => TextTrack -> val -> m ()
-setLanguage self val
-  = liftIO (js_setLanguage self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
-        :: TextTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: TextTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/id MDN TextTrack.id documentation>
+getId :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
-getLanguage ::
-            (MonadIO m, FromJSString result) => TextTrack -> m result
-getLanguage self = liftIO (fromJSString <$> (js_getLanguage self))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"inBandMetadataTrackDispatchType\"]; })"
+foreign import javascript unsafe "(($1) => { return $1[\"inBandMetadataTrackDispatchType\"]; })"
         js_getInBandMetadataTrackDispatchType :: TextTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/inBandMetadataTrackDispatchType MDN TextTrack.inBandMetadataTrackDispatchType documentation>
+getInBandMetadataTrackDispatchType :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getInBandMetadataTrackDispatchType self = liftDOM ((fromJSString <$> (js_getInBandMetadataTrackDispatchType (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.inBandMetadataTrackDispatchType Mozilla TextTrack.inBandMetadataTrackDispatchType documentation> 
-getInBandMetadataTrackDispatchType ::
-                                   (MonadIO m, FromJSString result) => TextTrack -> m result
-getInBandMetadataTrackDispatchType self
-  = liftIO
-      (fromJSString <$> (js_getInBandMetadataTrackDispatchType self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"mode\"] = $2; })" js_setMode ::
-        TextTrack -> JSVal -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })"
+        js_setMode :: TextTrack -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/mode MDN TextTrack.mode documentation>
+setMode :: (MonadDOM m) => TextTrack -> TextTrackMode -> m ()
+setMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMode (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
-setMode :: (MonadIO m) => TextTrack -> TextTrackMode -> m ()
-setMode self val = liftIO (js_setMode self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
-        TextTrack -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })"
+        js_getMode :: TextTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/mode MDN TextTrack.mode documentation>
+getMode :: (MonadDOM m) => TextTrack -> m TextTrackMode
+getMode self = liftDOM (((js_getMode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
-getMode :: (MonadIO m) => TextTrack -> m TextTrackMode
-getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cues\"]; })" js_getCues ::
-        TextTrack -> IO (Nullable TextTrackCueList)
+foreign import javascript unsafe "(($1) => { return $1[\"cues\"]; })"
+        js_getCues :: TextTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/cues MDN TextTrack.cues documentation>
+getCues :: (MonadDOM m) => TextTrack -> m (Maybe TextTrackCueList)
+getCues self = liftDOM (((js_getCues (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
-getCues :: (MonadIO m) => TextTrack -> m (Maybe TextTrackCueList)
-getCues self = liftIO (nullableToMaybe <$> (js_getCues self))
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/cues MDN TextTrack.cues documentation>
+getCuesUnsafe :: (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
+getCuesUnsafe self = liftDOM ((((js_getCues (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
-getCuesUnsafe ::
-              (MonadIO m, HasCallStack) => TextTrack -> m TextTrackCueList
-getCuesUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getCues self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/cues MDN TextTrack.cues documentation>
+getCuesUnchecked :: (MonadDOM m) => TextTrack -> m TextTrackCueList
+getCuesUnchecked self = liftDOM ((pFromJSVal <$> (js_getCues (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
-getCuesUnchecked :: (MonadIO m) => TextTrack -> m TextTrackCueList
-getCuesUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getCues self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"activeCues\"]; })"
-        js_getActiveCues :: TextTrack -> IO (Nullable TextTrackCueList)
+        js_getActiveCues :: TextTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/activeCues MDN TextTrack.activeCues documentation>
+getActiveCues :: (MonadDOM m) => TextTrack -> m (Maybe TextTrackCueList)
+getActiveCues self = liftDOM (((js_getActiveCues (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
-getActiveCues ::
-              (MonadIO m) => TextTrack -> m (Maybe TextTrackCueList)
-getActiveCues self
-  = liftIO (nullableToMaybe <$> (js_getActiveCues self))
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/activeCues MDN TextTrack.activeCues documentation>
+getActiveCuesUnsafe :: (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
+getActiveCuesUnsafe self = liftDOM ((((js_getActiveCues (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
-getActiveCuesUnsafe ::
-                    (MonadIO m, HasCallStack) => TextTrack -> m TextTrackCueList
-getActiveCuesUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getActiveCues self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/activeCues MDN TextTrack.activeCues documentation>
+getActiveCuesUnchecked :: (MonadDOM m) => TextTrack -> m TextTrackCueList
+getActiveCuesUnchecked self = liftDOM ((pFromJSVal <$> (js_getActiveCues (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
-getActiveCuesUnchecked ::
-                       (MonadIO m) => TextTrack -> m TextTrackCueList
-getActiveCuesUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getActiveCues self))
+foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffer\"]; })"
+        js_getSourceBuffer :: TextTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/sourceBuffer MDN TextTrack.sourceBuffer documentation>
+getSourceBuffer :: (MonadDOM m) => TextTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self = liftDOM (((js_getSourceBuffer (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.oncuechange Mozilla TextTrack.oncuechange documentation> 
-cueChange :: EventName TextTrack Event
-cueChange = unsafeEventName (toJSString "cuechange")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"regions\"]; })" js_getRegions ::
-        TextTrack -> IO VTTRegionList
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/sourceBuffer MDN TextTrack.sourceBuffer documentation>
+getSourceBufferUnsafe :: (MonadDOM m, HasCallStack) => TextTrack -> m SourceBuffer
+getSourceBufferUnsafe self = liftDOM ((((js_getSourceBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.regions Mozilla TextTrack.regions documentation> 
-getRegions :: (MonadIO m) => TextTrack -> m VTTRegionList
-getRegions self = liftIO (js_getRegions self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffer\"]; })"
-        js_getSourceBuffer :: TextTrack -> IO SourceBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/sourceBuffer MDN TextTrack.sourceBuffer documentation>
+getSourceBufferUnchecked :: (MonadDOM m) => TextTrack -> m SourceBuffer
+getSourceBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getSourceBuffer (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.sourceBuffer Mozilla TextTrack.sourceBuffer documentation> 
-getSourceBuffer :: (MonadIO m) => TextTrack -> m SourceBuffer
-getSourceBuffer self = liftIO (js_getSourceBuffer self)
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-texttrack-oncuechange cuechange event>
+cueChange :: EventName TextTrack Event
+cueChange = unsafeEventName (toJSString "cuechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
@@ -1,119 +1,87 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextTrackCue
-       (js_getTrack, getTrack, js_setId, setId, js_getId, getId,
-        js_setStartTime, setStartTime, js_getStartTime, getStartTime,
-        js_setEndTime, setEndTime, js_getEndTime, getEndTime,
-        js_setPauseOnExit, setPauseOnExit, js_getPauseOnExit,
-        getPauseOnExit, enter, exit, TextTrackCue(..), gTypeTextTrackCue,
-        IsTextTrackCue, toTextTrackCue)
+       (js_getTrack, js_setId, js_getId, js_setStartTime, js_getStartTime, js_setEndTime, js_getEndTime, js_setPauseOnExit, js_getPauseOnExit, getTrack, getTrackUnsafe, getTrackUnchecked, setId, getId, setStartTime, getStartTime, setEndTime, getEndTime, setPauseOnExit, getPauseOnExit, enter, exit, TextTrackCue(..), gTypeTextTrackCue, IsTextTrackCue, toTextTrackCue)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        TextTrackCue -> IO TextTrack
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
-getTrack :: (MonadIO m, IsTextTrackCue self) => self -> m TextTrack
-getTrack self = liftIO (js_getTrack (toTextTrackCue self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"id\"] = $2; })" js_setId ::
-        TextTrackCue -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: TextTrackCue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/track MDN TextTrackCue.track documentation>
+getTrack :: (MonadDOM m, IsTextTrackCue self) => self -> m (Maybe TextTrack)
+getTrack self = liftDOM (((js_getTrack ((Types.toTextTrackCue self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.id Mozilla TextTrackCue.id documentation> 
-setId ::
-      (MonadIO m, IsTextTrackCue self, ToJSString val) =>
-        self -> val -> m ()
-setId self val
-  = liftIO (js_setId (toTextTrackCue self) (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        TextTrackCue -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/track MDN TextTrackCue.track documentation>
+getTrackUnsafe :: (MonadDOM m, IsTextTrackCue self, HasCallStack) => self -> m TextTrack
+getTrackUnsafe self = liftDOM ((((js_getTrack ((Types.toTextTrackCue self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.id Mozilla TextTrackCue.id documentation> 
-getId ::
-      (MonadIO m, IsTextTrackCue self, FromJSString result) =>
-        self -> m result
-getId self
-  = liftIO (fromJSString <$> (js_getId (toTextTrackCue self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"startTime\"] = $2; })"
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/track MDN TextTrackCue.track documentation>
+getTrackUnchecked :: (MonadDOM m, IsTextTrackCue self) => self -> m TextTrack
+getTrackUnchecked self = liftDOM ((pFromJSVal <$> (js_getTrack ((Types.toTextTrackCue self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: TextTrackCue -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/id MDN TextTrackCue.id documentation>
+setId :: (MonadDOM m, IsTextTrackCue self, ToJSString val) => self -> val -> m ()
+setId self val = liftDOM (void ((js_setId ((Types.toTextTrackCue self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: TextTrackCue -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/id MDN TextTrackCue.id documentation>
+getId :: (MonadDOM m, IsTextTrackCue self, FromJSString result) => self -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId ((Types.toTextTrackCue self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"startTime\"] = $2; })"
         js_setStartTime :: TextTrackCue -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/startTime MDN TextTrackCue.startTime documentation>
+setStartTime :: (MonadDOM m, IsTextTrackCue self) => self -> Double -> m ()
+setStartTime self val = liftDOM (void ((js_setStartTime ((Types.toTextTrackCue self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
-setStartTime ::
-             (MonadIO m, IsTextTrackCue self) => self -> Double -> m ()
-setStartTime self val
-  = liftIO (js_setStartTime (toTextTrackCue self) val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
         js_getStartTime :: TextTrackCue -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/startTime MDN TextTrackCue.startTime documentation>
+getStartTime :: (MonadDOM m, IsTextTrackCue self) => self -> m Double
+getStartTime self = liftDOM ((js_getStartTime ((Types.toTextTrackCue self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
-getStartTime ::
-             (MonadIO m, IsTextTrackCue self) => self -> m Double
-getStartTime self = liftIO (js_getStartTime (toTextTrackCue self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"endTime\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"endTime\"] = $2; })"
         js_setEndTime :: TextTrackCue -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/endTime MDN TextTrackCue.endTime documentation>
+setEndTime :: (MonadDOM m, IsTextTrackCue self) => self -> Double -> m ()
+setEndTime self val = liftDOM (void ((js_setEndTime ((Types.toTextTrackCue self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
-setEndTime ::
-           (MonadIO m, IsTextTrackCue self) => self -> Double -> m ()
-setEndTime self val
-  = liftIO (js_setEndTime (toTextTrackCue self) val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endTime\"]; })" js_getEndTime ::
-        TextTrackCue -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"endTime\"]; })"
+        js_getEndTime :: TextTrackCue -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/endTime MDN TextTrackCue.endTime documentation>
+getEndTime :: (MonadDOM m, IsTextTrackCue self) => self -> m Double
+getEndTime self = liftDOM ((js_getEndTime ((Types.toTextTrackCue self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
-getEndTime :: (MonadIO m, IsTextTrackCue self) => self -> m Double
-getEndTime self = liftIO (js_getEndTime (toTextTrackCue self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"pauseOnExit\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"pauseOnExit\"] = $2; })"
         js_setPauseOnExit :: TextTrackCue -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/pauseOnExit MDN TextTrackCue.pauseOnExit documentation>
+setPauseOnExit :: (MonadDOM m, IsTextTrackCue self) => self -> Bool -> m ()
+setPauseOnExit self val = liftDOM (void ((js_setPauseOnExit ((Types.toTextTrackCue self)) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
-setPauseOnExit ::
-               (MonadIO m, IsTextTrackCue self) => self -> Bool -> m ()
-setPauseOnExit self val
-  = liftIO (js_setPauseOnExit (toTextTrackCue self) val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"pauseOnExit\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"pauseOnExit\"]; })"
         js_getPauseOnExit :: TextTrackCue -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
-getPauseOnExit ::
-               (MonadIO m, IsTextTrackCue self) => self -> m Bool
-getPauseOnExit self
-  = liftIO (js_getPauseOnExit (toTextTrackCue self))
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/pauseOnExit MDN TextTrackCue.pauseOnExit documentation>
+getPauseOnExit :: (MonadDOM m, IsTextTrackCue self) => self -> m Bool
+getPauseOnExit self = liftDOM ((js_getPauseOnExit ((Types.toTextTrackCue self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.onenter Mozilla TextTrackCue.onenter documentation> 
-enter ::
-      (IsTextTrackCue self, IsEventTarget self) => EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-texttrackcue-onenter enter event>
+enter :: (IsTextTrackCue self, IsEventTarget self) => EventName self Event
 enter = unsafeEventName (toJSString "enter")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.onexit Mozilla TextTrackCue.onexit documentation> 
-exit ::
-     (IsTextTrackCue self, IsEventTarget self) => EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-texttrackcue-onexit exit event>
+exit :: (IsTextTrackCue self, IsEventTarget self) => EventName self Event
 exit = unsafeEventName (toJSString "exit")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
@@ -1,61 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextTrackCueList
-       (js_item, item, item_, js_getCueById, getCueById, getCueById_,
-        js_getLength, getLength, TextTrackCueList(..),
-        gTypeTextTrackCueList)
+       (js_getCueById, js_getLength, getCueById, getCueById_, getCueByIdUnsafe, getCueByIdUnchecked, getLength, TextTrackCueList(..), gTypeTextTrackCueList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        TextTrackCueList -> Word -> IO TextTrackCue
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
-item :: (MonadIO m) => TextTrackCueList -> Word -> m TextTrackCue
-item self index = liftIO (js_item self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"getCueById\"]($2); })"
+        js_getCueById :: TextTrackCueList -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCueList/getCueById MDN TextTrackCueList.getCueById documentation>
+getCueById :: (MonadDOM m, ToJSString id) => TextTrackCueList -> id -> m (Maybe TextTrackCue)
+getCueById self id = liftDOM (((js_getCueById (self) (toJSString id)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
-item_ :: (MonadIO m) => TextTrackCueList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getCueById\"]($2); })"
-        js_getCueById :: TextTrackCueList -> JSString -> IO TextTrackCue
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCueList/getCueById MDN TextTrackCueList.getCueById documentation>
+getCueById_ :: (MonadDOM m, ToJSString id) => TextTrackCueList -> id -> m ()
+getCueById_ self id = liftDOM (void ((js_getCueById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
-getCueById ::
-           (MonadIO m, ToJSString id) =>
-             TextTrackCueList -> id -> m TextTrackCue
-getCueById self id = liftIO (js_getCueById self (toJSString id))
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCueList/getCueById MDN TextTrackCueList.getCueById documentation>
+getCueByIdUnsafe :: (MonadDOM m, ToJSString id, HasCallStack) => TextTrackCueList -> id -> m TextTrackCue
+getCueByIdUnsafe self id = liftDOM ((((js_getCueById (self) (toJSString id)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
-getCueById_ ::
-            (MonadIO m, ToJSString id) => TextTrackCueList -> id -> m ()
-getCueById_ self id
-  = liftIO (void (js_getCueById self (toJSString id)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        TextTrackCueList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCueList/getCueById MDN TextTrackCueList.getCueById documentation>
+getCueByIdUnchecked :: (MonadDOM m, ToJSString id) => TextTrackCueList -> id -> m TextTrackCue
+getCueByIdUnchecked self id = liftDOM ((pFromJSVal <$> (js_getCueById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.length Mozilla TextTrackCueList.length documentation> 
-getLength :: (MonadIO m) => TextTrackCueList -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: TextTrackCueList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCueList/length MDN TextTrackCueList.length documentation>
+getLength :: (MonadDOM m) => TextTrackCueList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
@@ -1,73 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TextTrackList
-       (js_item, item, item_, js_getTrackById, getTrackById,
-        getTrackById_, js_getLength, getLength, addTrack, change,
-        removeTrack, TextTrackList(..), gTypeTextTrackList)
+       (js_getTrackById, js_getLength, getTrackById, getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked, getLength, change, addTrack, removeTrack, TextTrackList(..), gTypeTextTrackList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        TextTrackList -> Word -> IO TextTrack
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
-item :: (MonadIO m) => TextTrackList -> Word -> m TextTrack
-item self index = liftIO (js_item self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
-item_ :: (MonadIO m) => TextTrackList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
-        js_getTrackById :: TextTrackList -> JSString -> IO TextTrack
+foreign import javascript safe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: TextTrackList -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackList/getTrackById MDN TextTrackList.getTrackById documentation>
+getTrackById :: (MonadDOM m, ToJSString id) => TextTrackList -> id -> m (Maybe TextTrack)
+getTrackById self id = liftDOM (((js_getTrackById (self) (toJSString id)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
-getTrackById ::
-             (MonadIO m, ToJSString id) => TextTrackList -> id -> m TextTrack
-getTrackById self id
-  = liftIO (js_getTrackById self (toJSString id))
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackList/getTrackById MDN TextTrackList.getTrackById documentation>
+getTrackById_ :: (MonadDOM m, ToJSString id) => TextTrackList -> id -> m ()
+getTrackById_ self id = liftDOM (void ((js_getTrackById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
-getTrackById_ ::
-              (MonadIO m, ToJSString id) => TextTrackList -> id -> m ()
-getTrackById_ self id
-  = liftIO (void (js_getTrackById self (toJSString id)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        TextTrackList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackList/getTrackById MDN TextTrackList.getTrackById documentation>
+getTrackByIdUnsafe :: (MonadDOM m, ToJSString id, HasCallStack) => TextTrackList -> id -> m TextTrack
+getTrackByIdUnsafe self id = liftDOM ((((js_getTrackById (self) (toJSString id)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.length Mozilla TextTrackList.length documentation> 
-getLength :: (MonadIO m) => TextTrackList -> m Word
-getLength self = liftIO (js_getLength self)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackList/getTrackById MDN TextTrackList.getTrackById documentation>
+getTrackByIdUnchecked :: (MonadDOM m, ToJSString id) => TextTrackList -> id -> m TextTrack
+getTrackByIdUnchecked self id = liftDOM ((pFromJSVal <$> (js_getTrackById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onaddtrack Mozilla TextTrackList.onaddtrack documentation> 
-addTrack :: EventName TextTrackList Event
-addTrack = unsafeEventName (toJSString "addtrack")
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: TextTrackList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackList/length MDN TextTrackList.length documentation>
+getLength :: (MonadDOM m) => TextTrackList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onchange Mozilla TextTrackList.onchange documentation> 
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-texttracklist-onchange change event>
 change :: EventName TextTrackList Event
 change = unsafeEventName (toJSString "change")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onremovetrack Mozilla TextTrackList.onremovetrack documentation> 
-removeTrack :: EventName TextTrackList Event
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-texttracklist-onaddtrack addtrack event>
+addTrack :: EventName TextTrackList TrackEvent
+addTrack = unsafeEventName (toJSString "addtrack")
+
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-texttracklist-onremovetrack removetrack event>
+removeTrack :: EventName TextTrackList TrackEvent
 removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs b/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
@@ -1,56 +1,43 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TimeRanges
-       (js_start, start, start_, js_end, end, end_, js_getLength,
-        getLength, TimeRanges(..), gTypeTimeRanges)
+       (js_end, js_start, js_getLength, end, end_, start, start_, getLength, TimeRanges(..), gTypeTimeRanges)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })" js_start ::
-        TimeRanges -> Word -> IO Double
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
-start :: (MonadIO m) => TimeRanges -> Word -> m Double
-start self index = liftIO (js_start self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"end\"]($2); })"
+        js_end :: TimeRanges -> Word -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/end MDN TimeRanges.end documentation>
+end :: (MonadDOM m) => TimeRanges -> Word -> m Double
+end self index = liftDOM ((js_end (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
-start_ :: (MonadIO m) => TimeRanges -> Word -> m ()
-start_ self index = liftIO (void (js_start self index))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"end\"]($2); })" js_end ::
-        TimeRanges -> Word -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/end MDN TimeRanges.end documentation>
+end_ :: (MonadDOM m) => TimeRanges -> Word -> m ()
+end_ self index = liftDOM (void ((js_end (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
-end :: (MonadIO m) => TimeRanges -> Word -> m Double
-end self index = liftIO (js_end self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })"
+        js_start :: TimeRanges -> Word -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/start MDN TimeRanges.start documentation>
+start :: (MonadDOM m) => TimeRanges -> Word -> m Double
+start self index = liftDOM ((js_start (self) (index)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
-end_ :: (MonadIO m) => TimeRanges -> Word -> m ()
-end_ self index = liftIO (void (js_end self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        TimeRanges -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/start MDN TimeRanges.start documentation>
+start_ :: (MonadDOM m) => TimeRanges -> Word -> m ()
+start_ self index = liftDOM (void ((js_start (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.length Mozilla TimeRanges.length documentation> 
-getLength :: (MonadIO m) => TimeRanges -> m Word
-getLength self = liftIO (js_getLength self)
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: TimeRanges -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/length MDN TimeRanges.length documentation>
+getLength :: (MonadDOM m) => TimeRanges -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TimelineRangeOffset.hs b/src/GHCJS/DOM/JSFFI/Generated/TimelineRangeOffset.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TimelineRangeOffset.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TimelineRangeOffset
+       (js_newTimelineRangeOffset, js_setRangeName, js_getRangeName, js_setOffset, js_getOffset, newTimelineRangeOffset, setRangeName, getRangeName, getRangeNameUnsafe, getRangeNameUnchecked, setOffset, getOffset, getOffsetUnsafe, getOffsetUnchecked, TimelineRangeOffset(..), gTypeTimelineRangeOffset)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTimelineRangeOffset :: IO TimelineRangeOffset
+-- | <https://drafts.csswg.org/web-animations-2/#dictdef-timelinerangeoffset TimelineRangeOffset specification>
+newTimelineRangeOffset :: (MonadDOM m) => m TimelineRangeOffset
+newTimelineRangeOffset = liftDOM ((js_newTimelineRangeOffset))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rangeName\"] = $2; })"
+        js_setRangeName :: TimelineRangeOffset -> (Nullable JSString) -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-rangename TimelineRangeOffset.rangeName specification>
+setRangeName :: (MonadDOM m, ToJSString val) => TimelineRangeOffset -> Maybe val -> m ()
+setRangeName self val = liftDOM (void ((js_setRangeName (self) (toMaybeJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rangeName\"]; })"
+        js_getRangeName :: TimelineRangeOffset -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-rangename TimelineRangeOffset.rangeName specification>
+getRangeName :: (MonadDOM m, FromJSString result) => TimelineRangeOffset -> m (Maybe result)
+getRangeName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getRangeName (self))))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-rangename TimelineRangeOffset.rangeName specification>
+getRangeNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => TimelineRangeOffset -> m result
+getRangeNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getRangeName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-rangename TimelineRangeOffset.rangeName specification>
+getRangeNameUnchecked :: (MonadDOM m, FromJSString result) => TimelineRangeOffset -> m result
+getRangeNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getRangeName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"offset\"] = $2; })"
+        js_setOffset :: TimelineRangeOffset -> CSSNumericValue -> IO ()
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-offset TimelineRangeOffset.offset specification>
+setOffset :: (MonadDOM m, IsCSSNumericValue val) => TimelineRangeOffset -> val -> m ()
+setOffset self val = liftDOM (void ((js_setOffset (self) (Types.toCSSNumericValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })"
+        js_getOffset :: TimelineRangeOffset -> IO JSVal
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-offset TimelineRangeOffset.offset specification>
+getOffset :: (MonadDOM m) => TimelineRangeOffset -> m (Maybe CSSNumericValue)
+getOffset self = liftDOM (((js_getOffset (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-offset TimelineRangeOffset.offset specification>
+getOffsetUnsafe :: (MonadDOM m, HasCallStack) => TimelineRangeOffset -> m CSSNumericValue
+getOffsetUnsafe self = liftDOM ((((js_getOffset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-offset TimelineRangeOffset.offset specification>
+getOffsetUnchecked :: (MonadDOM m) => TimelineRangeOffset -> m CSSNumericValue
+getOffsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getOffset (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ToggleEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ToggleEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ToggleEvent.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ToggleEvent
+       (js_newToggleEvent, js_getOldState, js_getNewState, js_getSource, newToggleEvent, getOldState, getNewState, getSource, getSourceUnsafe, getSourceUnchecked, ToggleEvent(..), gTypeToggleEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"ToggleEvent\"]($1, $2); })"
+        js_newToggleEvent :: JSString -> JSVal -> IO ToggleEvent
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/ToggleEvent MDN ToggleEvent. documentation>
+newToggleEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe ToggleEventInit -> m ToggleEvent
+newToggleEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newToggleEvent (toJSString type') a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oldState\"]; })"
+        js_getOldState :: ToggleEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/oldState MDN ToggleEvent.oldState documentation>
+getOldState :: (MonadDOM m, FromJSString result) => ToggleEvent -> m result
+getOldState self = liftDOM ((fromJSString <$> (js_getOldState (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"newState\"]; })"
+        js_getNewState :: ToggleEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/newState MDN ToggleEvent.newState documentation>
+getNewState :: (MonadDOM m, FromJSString result) => ToggleEvent -> m result
+getNewState self = liftDOM ((fromJSString <$> (js_getNewState (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: ToggleEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/source MDN ToggleEvent.source documentation>
+getSource :: (MonadDOM m) => ToggleEvent -> m (Maybe Element)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/source MDN ToggleEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ToggleEvent -> m Element
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/source MDN ToggleEvent.source documentation>
+getSourceUnchecked :: (MonadDOM m) => ToggleEvent -> m Element
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ToggleEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/ToggleEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ToggleEventInit.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ToggleEventInit
+       (js_newToggleEventInit, js_setOldState, js_getOldState, js_setNewState, js_getNewState, js_setSource, js_getSource, newToggleEventInit, setOldState, getOldState, getOldStateUnsafe, getOldStateUnchecked, setNewState, getNewState, getNewStateUnsafe, getNewStateUnchecked, setSource, getSource, getSourceUnsafe, getSourceUnchecked, ToggleEventInit(..), gTypeToggleEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newToggleEventInit :: IO ToggleEventInit
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#toggleeventinit ToggleEventInit specification>
+newToggleEventInit :: (MonadDOM m) => m ToggleEventInit
+newToggleEventInit = liftDOM ((js_newToggleEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oldState\"] = $2; })"
+        js_setOldState :: ToggleEventInit -> JSString -> IO ()
+setOldState :: (MonadDOM m, ToJSString val) => ToggleEventInit -> val -> m ()
+setOldState self val = liftDOM (void ((js_setOldState (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oldState\"]; })"
+        js_getOldState :: ToggleEventInit -> IO JSVal
+getOldState :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m (Maybe result)
+getOldState self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getOldState (self))))
+
+getOldStateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ToggleEventInit -> m result
+getOldStateUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getOldState (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getOldStateUnchecked :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m result
+getOldStateUnchecked self = liftDOM ((pFromJSVal <$> (js_getOldState (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"newState\"] = $2; })"
+        js_setNewState :: ToggleEventInit -> JSString -> IO ()
+setNewState :: (MonadDOM m, ToJSString val) => ToggleEventInit -> val -> m ()
+setNewState self val = liftDOM (void ((js_setNewState (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"newState\"]; })"
+        js_getNewState :: ToggleEventInit -> IO JSVal
+getNewState :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m (Maybe result)
+getNewState self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getNewState (self))))
+
+getNewStateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ToggleEventInit -> m result
+getNewStateUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getNewState (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNewStateUnchecked :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m result
+getNewStateUnchecked self = liftDOM ((pFromJSVal <$> (js_getNewState (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: ToggleEventInit -> JSVal -> IO ()
+setSource :: (MonadDOM m, IsElement val) => ToggleEventInit -> Maybe val -> m ()
+setSource self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSource (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: ToggleEventInit -> IO JSVal
+getSource :: (MonadDOM m) => ToggleEventInit -> m (Maybe Element)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ToggleEventInit -> m Element
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getSourceUnchecked :: (MonadDOM m) => ToggleEventInit -> m Element
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TogglePopoverOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/TogglePopoverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TogglePopoverOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TogglePopoverOptions
+       (js_newTogglePopoverOptions, js_setForce, js_getForce, newTogglePopoverOptions, setForce, getForce, getForceUnsafe, getForceUnchecked, TogglePopoverOptions(..), gTypeTogglePopoverOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTogglePopoverOptions :: IO TogglePopoverOptions
+-- | <https://html.spec.whatwg.org/multipage/dom.html#togglepopoveroptions TogglePopoverOptions specification>
+newTogglePopoverOptions :: (MonadDOM m) => m TogglePopoverOptions
+newTogglePopoverOptions = liftDOM ((js_newTogglePopoverOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"force\"] = $2; })"
+        js_setForce :: TogglePopoverOptions -> Bool -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-togglepopoveroptions-force TogglePopoverOptions.force specification>
+setForce :: (MonadDOM m) => TogglePopoverOptions -> Bool -> m ()
+setForce self val = liftDOM (void ((js_setForce (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"force\"]; })"
+        js_getForce :: TogglePopoverOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-togglepopoveroptions-force TogglePopoverOptions.force specification>
+getForce :: (MonadDOM m) => TogglePopoverOptions -> m (Maybe Bool)
+getForce self = liftDOM (((js_getForce (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-togglepopoveroptions-force TogglePopoverOptions.force specification>
+getForceUnsafe :: (MonadDOM m, HasCallStack) => TogglePopoverOptions -> m Bool
+getForceUnsafe self = liftDOM ((((js_getForce (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-togglepopoveroptions-force TogglePopoverOptions.force specification>
+getForceUnchecked :: (MonadDOM m) => TogglePopoverOptions -> m Bool
+getForceUnchecked self = liftDOM ((pFromJSVal <$> (js_getForce (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Touch.hs b/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
@@ -1,117 +1,95 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Touch
-       (js_getClientX, getClientX, js_getClientY, getClientY,
-        js_getScreenX, getScreenX, js_getScreenY, getScreenY, js_getPageX,
-        getPageX, js_getPageY, getPageY, js_getTarget, getTarget,
-        js_getIdentifier, getIdentifier, js_getWebkitRadiusX,
-        getWebkitRadiusX, js_getWebkitRadiusY, getWebkitRadiusY,
-        js_getWebkitRotationAngle, getWebkitRotationAngle,
-        js_getWebkitForce, getWebkitForce, Touch(..), gTypeTouch)
+       (js_newTouch, js_getIdentifier, js_getTarget, js_getScreenX, js_getScreenY, js_getClientX, js_getClientY, js_getPageX, js_getPageY, js_getRadiusX, js_getRadiusY, js_getRotationAngle, js_getForce, newTouch, getIdentifier, getTarget, getScreenX, getScreenY, getClientX, getClientY, getPageX, getPageY, getRadiusX, getRadiusY, getRotationAngle, getForce, Touch(..), gTypeTouch)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })" js_getClientX ::
-        Touch -> IO Int
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientX Mozilla Touch.clientX documentation> 
-getClientX :: (MonadIO m) => Touch -> m Int
-getClientX self = liftIO (js_getClientX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })" js_getClientY ::
-        Touch -> IO Int
+foreign import javascript safe "(($1) => { return new globalThis[\"Touch\"]($1); })"
+        js_newTouch :: TouchInit -> IO Touch
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/Touch MDN Touch. documentation>
+newTouch :: (MonadDOM m) => TouchInit -> m Touch
+newTouch touchInitDict = liftDOM ((js_newTouch (touchInitDict)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientY Mozilla Touch.clientY documentation> 
-getClientY :: (MonadIO m) => Touch -> m Int
-getClientY self = liftIO (js_getClientY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })" js_getScreenX ::
-        Touch -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"identifier\"]; })"
+        js_getIdentifier :: Touch -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/identifier MDN Touch.identifier documentation>
+getIdentifier :: (MonadDOM m) => Touch -> m Int
+getIdentifier self = liftDOM ((js_getIdentifier (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenX Mozilla Touch.screenX documentation> 
-getScreenX :: (MonadIO m) => Touch -> m Int
-getScreenX self = liftIO (js_getScreenX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })" js_getScreenY ::
-        Touch -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: Touch -> IO EventTarget
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/target MDN Touch.target documentation>
+getTarget :: (MonadDOM m) => Touch -> m EventTarget
+getTarget self = liftDOM ((js_getTarget (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenY Mozilla Touch.screenY documentation> 
-getScreenY :: (MonadIO m) => Touch -> m Int
-getScreenY self = liftIO (js_getScreenY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pageX\"]; })" js_getPageX ::
-        Touch -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })"
+        js_getScreenX :: Touch -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/screenX MDN Touch.screenX documentation>
+getScreenX :: (MonadDOM m) => Touch -> m Double
+getScreenX self = liftDOM ((js_getScreenX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageX Mozilla Touch.pageX documentation> 
-getPageX :: (MonadIO m) => Touch -> m Int
-getPageX self = liftIO (js_getPageX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pageY\"]; })" js_getPageY ::
-        Touch -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })"
+        js_getScreenY :: Touch -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/screenY MDN Touch.screenY documentation>
+getScreenY :: (MonadDOM m) => Touch -> m Double
+getScreenY self = liftDOM ((js_getScreenY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageY Mozilla Touch.pageY documentation> 
-getPageY :: (MonadIO m) => Touch -> m Int
-getPageY self = liftIO (js_getPageY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
-        Touch -> IO EventTarget
+foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })"
+        js_getClientX :: Touch -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/clientX MDN Touch.clientX documentation>
+getClientX :: (MonadDOM m) => Touch -> m Double
+getClientX self = liftDOM ((js_getClientX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
-getTarget :: (MonadIO m) => Touch -> m EventTarget
-getTarget self = liftIO (js_getTarget self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"identifier\"]; })"
-        js_getIdentifier :: Touch -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })"
+        js_getClientY :: Touch -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/clientY MDN Touch.clientY documentation>
+getClientY :: (MonadDOM m) => Touch -> m Double
+getClientY self = liftDOM ((js_getClientY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.identifier Mozilla Touch.identifier documentation> 
-getIdentifier :: (MonadIO m) => Touch -> m Word
-getIdentifier self = liftIO (js_getIdentifier self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitRadiusX\"]; })"
-        js_getWebkitRadiusX :: Touch -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"pageX\"]; })"
+        js_getPageX :: Touch -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/pageX MDN Touch.pageX documentation>
+getPageX :: (MonadDOM m) => Touch -> m Double
+getPageX self = liftDOM ((js_getPageX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusX Mozilla Touch.webkitRadiusX documentation> 
-getWebkitRadiusX :: (MonadIO m) => Touch -> m Int
-getWebkitRadiusX self = liftIO (js_getWebkitRadiusX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitRadiusY\"]; })"
-        js_getWebkitRadiusY :: Touch -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"pageY\"]; })"
+        js_getPageY :: Touch -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/pageY MDN Touch.pageY documentation>
+getPageY :: (MonadDOM m) => Touch -> m Double
+getPageY self = liftDOM ((js_getPageY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusY Mozilla Touch.webkitRadiusY documentation> 
-getWebkitRadiusY :: (MonadIO m) => Touch -> m Int
-getWebkitRadiusY self = liftIO (js_getWebkitRadiusY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitRotationAngle\"]; })"
-        js_getWebkitRotationAngle :: Touch -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"radiusX\"]; })"
+        js_getRadiusX :: Touch -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/radiusX MDN Touch.radiusX documentation>
+getRadiusX :: (MonadDOM m) => Touch -> m Float
+getRadiusX self = liftDOM ((js_getRadiusX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRotationAngle Mozilla Touch.webkitRotationAngle documentation> 
-getWebkitRotationAngle :: (MonadIO m) => Touch -> m Float
-getWebkitRotationAngle self
-  = liftIO (js_getWebkitRotationAngle self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitForce\"]; })"
-        js_getWebkitForce :: Touch -> IO Float
+foreign import javascript unsafe "(($1) => { return $1[\"radiusY\"]; })"
+        js_getRadiusY :: Touch -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/radiusY MDN Touch.radiusY documentation>
+getRadiusY :: (MonadDOM m) => Touch -> m Float
+getRadiusY self = liftDOM ((js_getRadiusY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitForce Mozilla Touch.webkitForce documentation> 
-getWebkitForce :: (MonadIO m) => Touch -> m Float
-getWebkitForce self = liftIO (js_getWebkitForce self)
+foreign import javascript unsafe "(($1) => { return $1[\"rotationAngle\"]; })"
+        js_getRotationAngle :: Touch -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/rotationAngle MDN Touch.rotationAngle documentation>
+getRotationAngle :: (MonadDOM m) => Touch -> m Float
+getRotationAngle self = liftDOM ((js_getRotationAngle (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"force\"]; })"
+        js_getForce :: Touch -> IO Float
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/force MDN Touch.force documentation>
+getForce :: (MonadDOM m) => Touch -> m Float
+getForce self = liftDOM ((js_getForce (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
@@ -1,136 +1,65 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TouchEvent
-       (js_newTouchEvent, newTouchEvent, js_initTouchEvent,
-        initTouchEvent, js_getTouches, getTouches, js_getTargetTouches,
-        getTargetTouches, js_getChangedTouches, getChangedTouches,
-        js_getCtrlKey, getCtrlKey, js_getShiftKey, getShiftKey,
-        js_getAltKey, getAltKey, js_getMetaKey, getMetaKey, TouchEvent(..),
-        gTypeTouchEvent)
+       (js_newTouchEvent, js_getTouches, js_getTargetTouches, js_getChangedTouches, js_getAltKey, js_getMetaKey, js_getCtrlKey, js_getShiftKey, newTouchEvent, getTouches, getTargetTouches, getChangedTouches, getAltKey, getMetaKey, getCtrlKey, getShiftKey, TouchEvent(..), gTypeTouchEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"TouchEvent\"]($1, $2); })" js_newTouchEvent ::
-        JSString -> Optional TouchEventInit -> IO TouchEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation> 
-newTouchEvent ::
-              (MonadIO m, ToJSString type') =>
-                type' -> Maybe TouchEventInit -> m TouchEvent
-newTouchEvent type' eventInitDict
-  = liftIO
-      (js_newTouchEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) => { return $1[\"initTouchEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14); })"
-        js_initTouchEvent ::
-        TouchEvent ->
-          Optional TouchList ->
-            Optional TouchList ->
-              Optional TouchList ->
-                Optional JSString ->
-                  Optional Window ->
-                    Optional Int ->
-                      Optional Int ->
-                        Optional Int ->
-                          Optional Int -> Bool -> Bool -> Bool -> Bool -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"TouchEvent\"]($1, $2); })"
+        js_newTouchEvent :: JSString -> JSVal -> IO TouchEvent
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/TouchEvent MDN TouchEvent. documentation>
+newTouchEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe TouchEventInit -> m TouchEvent
+newTouchEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newTouchEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.initTouchEvent Mozilla TouchEvent.initTouchEvent documentation> 
-initTouchEvent ::
-               (MonadIO m, ToJSString type') =>
-                 TouchEvent ->
-                   Maybe TouchList ->
-                     Maybe TouchList ->
-                       Maybe TouchList ->
-                         Maybe type' ->
-                           Maybe Window ->
-                             Maybe Int ->
-                               Maybe Int ->
-                                 Maybe Int -> Maybe Int -> Bool -> Bool -> Bool -> Bool -> m ()
-initTouchEvent self touches targetTouches changedTouches type' view
-  screenX screenY clientX clientY ctrlKey altKey shiftKey metaKey
-  = liftIO
-      (js_initTouchEvent self (maybeToOptional touches)
-         (maybeToOptional targetTouches)
-         (maybeToOptional changedTouches)
-         (toOptionalJSString type')
-         (maybeToOptional view)
-         (maybeToOptional screenX)
-         (maybeToOptional screenY)
-         (maybeToOptional clientX)
-         (maybeToOptional clientY)
-         ctrlKey
-         altKey
-         shiftKey
-         metaKey)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"touches\"]; })" js_getTouches ::
-        TouchEvent -> IO TouchList
+foreign import javascript unsafe "(($1) => { return $1[\"touches\"]; })"
+        js_getTouches :: TouchEvent -> IO TouchList
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/touches MDN TouchEvent.touches documentation>
+getTouches :: (MonadDOM m) => TouchEvent -> m TouchList
+getTouches self = liftDOM ((js_getTouches (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.touches Mozilla TouchEvent.touches documentation> 
-getTouches :: (MonadIO m) => TouchEvent -> m TouchList
-getTouches self = liftIO (js_getTouches self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"targetTouches\"]; })"
         js_getTargetTouches :: TouchEvent -> IO TouchList
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/targetTouches MDN TouchEvent.targetTouches documentation>
+getTargetTouches :: (MonadDOM m) => TouchEvent -> m TouchList
+getTargetTouches self = liftDOM ((js_getTargetTouches (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.targetTouches Mozilla TouchEvent.targetTouches documentation> 
-getTargetTouches :: (MonadIO m) => TouchEvent -> m TouchList
-getTargetTouches self = liftIO (js_getTargetTouches self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"changedTouches\"]; })"
         js_getChangedTouches :: TouchEvent -> IO TouchList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches Mozilla TouchEvent.changedTouches documentation> 
-getChangedTouches :: (MonadIO m) => TouchEvent -> m TouchList
-getChangedTouches self = liftIO (js_getChangedTouches self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"ctrlKey\"] ? 1 : 0); })"
-        js_getCtrlKey :: TouchEvent -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.ctrlKey Mozilla TouchEvent.ctrlKey documentation> 
-getCtrlKey :: (MonadIO m) => TouchEvent -> m Bool
-getCtrlKey self = liftIO (js_getCtrlKey self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"shiftKey\"] ? 1 : 0); })"
-        js_getShiftKey :: TouchEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/changedTouches MDN TouchEvent.changedTouches documentation>
+getChangedTouches :: (MonadDOM m) => TouchEvent -> m TouchList
+getChangedTouches self = liftDOM ((js_getChangedTouches (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.shiftKey Mozilla TouchEvent.shiftKey documentation> 
-getShiftKey :: (MonadIO m) => TouchEvent -> m Bool
-getShiftKey self = liftIO (js_getShiftKey self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"altKey\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"altKey\"]; })"
         js_getAltKey :: TouchEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/altKey MDN TouchEvent.altKey documentation>
+getAltKey :: (MonadDOM m) => TouchEvent -> m Bool
+getAltKey self = liftDOM ((js_getAltKey (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.altKey Mozilla TouchEvent.altKey documentation> 
-getAltKey :: (MonadIO m) => TouchEvent -> m Bool
-getAltKey self = liftIO (js_getAltKey self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"metaKey\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"metaKey\"]; })"
         js_getMetaKey :: TouchEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/metaKey MDN TouchEvent.metaKey documentation>
+getMetaKey :: (MonadDOM m) => TouchEvent -> m Bool
+getMetaKey self = liftDOM ((js_getMetaKey (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.metaKey Mozilla TouchEvent.metaKey documentation> 
-getMetaKey :: (MonadIO m) => TouchEvent -> m Bool
-getMetaKey self = liftIO (js_getMetaKey self)
+foreign import javascript unsafe "(($1) => { return $1[\"ctrlKey\"]; })"
+        js_getCtrlKey :: TouchEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/ctrlKey MDN TouchEvent.ctrlKey documentation>
+getCtrlKey :: (MonadDOM m) => TouchEvent -> m Bool
+getCtrlKey self = liftDOM ((js_getCtrlKey (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"shiftKey\"]; })"
+        js_getShiftKey :: TouchEvent -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/shiftKey MDN TouchEvent.shiftKey documentation>
+getShiftKey :: (MonadDOM m) => TouchEvent -> m Bool
+getShiftKey self = liftDOM ((js_getShiftKey (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchEventInit.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TouchEventInit
+       (js_newTouchEventInit, js_setTouches, js_getTouches, js_setTargetTouches, js_getTargetTouches, js_setChangedTouches, js_getChangedTouches, newTouchEventInit, setTouches, getTouches, getTouchesUnsafe, getTouchesUnchecked, setTargetTouches, getTargetTouches, getTargetTouchesUnsafe, getTargetTouchesUnchecked, setChangedTouches, getChangedTouches, getChangedTouchesUnsafe, getChangedTouchesUnchecked, TouchEventInit(..), gTypeTouchEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTouchEventInit :: IO TouchEventInit
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit TouchEventInit specification>
+newTouchEventInit :: (MonadDOM m) => m TouchEventInit
+newTouchEventInit = liftDOM ((js_newTouchEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"touches\"] = $2; })"
+        js_setTouches :: TouchEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-touches TouchEventInit.touches specification>
+setTouches :: (MonadDOM m) => TouchEventInit -> [Touch] -> m ()
+setTouches self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTouches (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"touches\"]; })"
+        js_getTouches :: TouchEventInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-touches TouchEventInit.touches specification>
+getTouches :: (MonadDOM m) => TouchEventInit -> m (Maybe [Touch])
+getTouches self = liftDOM (((js_getTouches (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-touches TouchEventInit.touches specification>
+getTouchesUnsafe :: (MonadDOM m, HasCallStack) => TouchEventInit -> m [Touch]
+getTouchesUnsafe self = liftDOM ((((js_getTouches (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-touches TouchEventInit.touches specification>
+getTouchesUnchecked :: (MonadDOM m) => TouchEventInit -> m [Touch]
+getTouchesUnchecked self = liftDOM (((js_getTouches (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"targetTouches\"] = $2; })"
+        js_setTargetTouches :: TouchEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-targettouches TouchEventInit.targetTouches specification>
+setTargetTouches :: (MonadDOM m) => TouchEventInit -> [Touch] -> m ()
+setTargetTouches self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTargetTouches (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"targetTouches\"]; })"
+        js_getTargetTouches :: TouchEventInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-targettouches TouchEventInit.targetTouches specification>
+getTargetTouches :: (MonadDOM m) => TouchEventInit -> m (Maybe [Touch])
+getTargetTouches self = liftDOM (((js_getTargetTouches (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-targettouches TouchEventInit.targetTouches specification>
+getTargetTouchesUnsafe :: (MonadDOM m, HasCallStack) => TouchEventInit -> m [Touch]
+getTargetTouchesUnsafe self = liftDOM ((((js_getTargetTouches (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-targettouches TouchEventInit.targetTouches specification>
+getTargetTouchesUnchecked :: (MonadDOM m) => TouchEventInit -> m [Touch]
+getTargetTouchesUnchecked self = liftDOM (((js_getTargetTouches (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"changedTouches\"] = $2; })"
+        js_setChangedTouches :: TouchEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-changedtouches TouchEventInit.changedTouches specification>
+setChangedTouches :: (MonadDOM m) => TouchEventInit -> [Touch] -> m ()
+setChangedTouches self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setChangedTouches (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"changedTouches\"]; })"
+        js_getChangedTouches :: TouchEventInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-changedtouches TouchEventInit.changedTouches specification>
+getChangedTouches :: (MonadDOM m) => TouchEventInit -> m (Maybe [Touch])
+getChangedTouches self = liftDOM (((js_getChangedTouches (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-changedtouches TouchEventInit.changedTouches specification>
+getChangedTouchesUnsafe :: (MonadDOM m, HasCallStack) => TouchEventInit -> m [Touch]
+getChangedTouchesUnsafe self = liftDOM ((((js_getChangedTouches (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-changedtouches TouchEventInit.changedTouches specification>
+getChangedTouchesUnchecked :: (MonadDOM m) => TouchEventInit -> m [Touch]
+getChangedTouchesUnchecked self = liftDOM (((js_getChangedTouches (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchInit.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchInit.hs
@@ -0,0 +1,307 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TouchInit
+       (js_newTouchInit, js_setIdentifier, js_getIdentifier, js_setTarget, js_getTarget, js_setClientX, js_getClientX, js_setClientY, js_getClientY, js_setScreenX, js_getScreenX, js_setScreenY, js_getScreenY, js_setPageX, js_getPageX, js_setPageY, js_getPageY, js_setRadiusX, js_getRadiusX, js_setRadiusY, js_getRadiusY, js_setRotationAngle, js_getRotationAngle, js_setForce, js_getForce, js_setAltitudeAngle, js_getAltitudeAngle, js_setAzimuthAngle, js_getAzimuthAngle, js_setTouchType, js_getTouchType, newTouchInit, setIdentifier, getIdentifier, setTarget, getTarget, setClientX, getClientX, getClientXUnsafe, getClientXUnchecked, setClientY, getClientY, getClientYUnsafe, getClientYUnchecked, setScreenX, getScreenX, getScreenXUnsafe, getScreenXUnchecked, setScreenY, getScreenY, getScreenYUnsafe, getScreenYUnchecked, setPageX, getPageX, getPageXUnsafe, getPageXUnchecked, setPageY, getPageY, getPageYUnsafe, getPageYUnchecked, setRadiusX, getRadiusX, getRadiusXUnsafe, getRadiusXUnchecked, setRadiusY, getRadiusY, getRadiusYUnsafe, getRadiusYUnchecked, setRotationAngle, getRotationAngle, getRotationAngleUnsafe, getRotationAngleUnchecked, setForce, getForce, getForceUnsafe, getForceUnchecked, setAltitudeAngle, getAltitudeAngle, getAltitudeAngleUnsafe, getAltitudeAngleUnchecked, setAzimuthAngle, getAzimuthAngle, getAzimuthAngleUnsafe, getAzimuthAngleUnchecked, setTouchType, getTouchType, getTouchTypeUnsafe, getTouchTypeUnchecked, TouchInit(..), gTypeTouchInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"identifier\": $1, \"target\": $2}); })"
+        js_newTouchInit :: Int -> EventTarget -> IO TouchInit
+-- | <https://w3c.github.io/touch-events/#dom-touchinit TouchInit specification>
+newTouchInit :: (MonadDOM m, IsEventTarget target) => Int -> target -> m TouchInit
+newTouchInit identifier target = liftDOM ((js_newTouchInit (identifier) (Types.toEventTarget target)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"identifier\"] = $2; })"
+        js_setIdentifier :: TouchInit -> Int -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-identifier TouchInit.identifier specification>
+setIdentifier :: (MonadDOM m) => TouchInit -> Int -> m ()
+setIdentifier self val = liftDOM (void ((js_setIdentifier (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"identifier\"]; })"
+        js_getIdentifier :: TouchInit -> IO Int
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-identifier TouchInit.identifier specification>
+getIdentifier :: (MonadDOM m) => TouchInit -> m Int
+getIdentifier self = liftDOM ((js_getIdentifier (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: TouchInit -> EventTarget -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-target TouchInit.target specification>
+setTarget :: (MonadDOM m, IsEventTarget val) => TouchInit -> val -> m ()
+setTarget self val = liftDOM (void ((js_setTarget (self) (Types.toEventTarget val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })"
+        js_getTarget :: TouchInit -> IO EventTarget
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-target TouchInit.target specification>
+getTarget :: (MonadDOM m) => TouchInit -> m EventTarget
+getTarget self = liftDOM ((js_getTarget (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clientX\"] = $2; })"
+        js_setClientX :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clientx TouchInit.clientX specification>
+setClientX :: (MonadDOM m) => TouchInit -> Double -> m ()
+setClientX self val = liftDOM (void ((js_setClientX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })"
+        js_getClientX :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clientx TouchInit.clientX specification>
+getClientX :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getClientX self = liftDOM (((js_getClientX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clientx TouchInit.clientX specification>
+getClientXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getClientXUnsafe self = liftDOM ((((js_getClientX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clientx TouchInit.clientX specification>
+getClientXUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getClientXUnchecked self = liftDOM ((pFromJSVal <$> (js_getClientX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"clientY\"] = $2; })"
+        js_setClientY :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clienty TouchInit.clientY specification>
+setClientY :: (MonadDOM m) => TouchInit -> Double -> m ()
+setClientY self val = liftDOM (void ((js_setClientY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })"
+        js_getClientY :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clienty TouchInit.clientY specification>
+getClientY :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getClientY self = liftDOM (((js_getClientY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clienty TouchInit.clientY specification>
+getClientYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getClientYUnsafe self = liftDOM ((((js_getClientY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clienty TouchInit.clientY specification>
+getClientYUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getClientYUnchecked self = liftDOM ((pFromJSVal <$> (js_getClientY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"screenX\"] = $2; })"
+        js_setScreenX :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screenx TouchInit.screenX specification>
+setScreenX :: (MonadDOM m) => TouchInit -> Double -> m ()
+setScreenX self val = liftDOM (void ((js_setScreenX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })"
+        js_getScreenX :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screenx TouchInit.screenX specification>
+getScreenX :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getScreenX self = liftDOM (((js_getScreenX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screenx TouchInit.screenX specification>
+getScreenXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getScreenXUnsafe self = liftDOM ((((js_getScreenX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screenx TouchInit.screenX specification>
+getScreenXUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getScreenXUnchecked self = liftDOM ((pFromJSVal <$> (js_getScreenX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"screenY\"] = $2; })"
+        js_setScreenY :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screeny TouchInit.screenY specification>
+setScreenY :: (MonadDOM m) => TouchInit -> Double -> m ()
+setScreenY self val = liftDOM (void ((js_setScreenY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })"
+        js_getScreenY :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screeny TouchInit.screenY specification>
+getScreenY :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getScreenY self = liftDOM (((js_getScreenY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screeny TouchInit.screenY specification>
+getScreenYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getScreenYUnsafe self = liftDOM ((((js_getScreenY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screeny TouchInit.screenY specification>
+getScreenYUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getScreenYUnchecked self = liftDOM ((pFromJSVal <$> (js_getScreenY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pageX\"] = $2; })"
+        js_setPageX :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagex TouchInit.pageX specification>
+setPageX :: (MonadDOM m) => TouchInit -> Double -> m ()
+setPageX self val = liftDOM (void ((js_setPageX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pageX\"]; })"
+        js_getPageX :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagex TouchInit.pageX specification>
+getPageX :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getPageX self = liftDOM (((js_getPageX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagex TouchInit.pageX specification>
+getPageXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getPageXUnsafe self = liftDOM ((((js_getPageX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagex TouchInit.pageX specification>
+getPageXUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getPageXUnchecked self = liftDOM ((pFromJSVal <$> (js_getPageX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pageY\"] = $2; })"
+        js_setPageY :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagey TouchInit.pageY specification>
+setPageY :: (MonadDOM m) => TouchInit -> Double -> m ()
+setPageY self val = liftDOM (void ((js_setPageY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pageY\"]; })"
+        js_getPageY :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagey TouchInit.pageY specification>
+getPageY :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getPageY self = liftDOM (((js_getPageY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagey TouchInit.pageY specification>
+getPageYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getPageYUnsafe self = liftDOM ((((js_getPageY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagey TouchInit.pageY specification>
+getPageYUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getPageYUnchecked self = liftDOM ((pFromJSVal <$> (js_getPageY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"radiusX\"] = $2; })"
+        js_setRadiusX :: TouchInit -> Float -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusx TouchInit.radiusX specification>
+setRadiusX :: (MonadDOM m) => TouchInit -> Float -> m ()
+setRadiusX self val = liftDOM (void ((js_setRadiusX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"radiusX\"]; })"
+        js_getRadiusX :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusx TouchInit.radiusX specification>
+getRadiusX :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getRadiusX self = liftDOM (((js_getRadiusX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusx TouchInit.radiusX specification>
+getRadiusXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getRadiusXUnsafe self = liftDOM ((((js_getRadiusX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusx TouchInit.radiusX specification>
+getRadiusXUnchecked :: (MonadDOM m) => TouchInit -> m Float
+getRadiusXUnchecked self = liftDOM ((pFromJSVal <$> (js_getRadiusX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"radiusY\"] = $2; })"
+        js_setRadiusY :: TouchInit -> Float -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusy TouchInit.radiusY specification>
+setRadiusY :: (MonadDOM m) => TouchInit -> Float -> m ()
+setRadiusY self val = liftDOM (void ((js_setRadiusY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"radiusY\"]; })"
+        js_getRadiusY :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusy TouchInit.radiusY specification>
+getRadiusY :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getRadiusY self = liftDOM (((js_getRadiusY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusy TouchInit.radiusY specification>
+getRadiusYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getRadiusYUnsafe self = liftDOM ((((js_getRadiusY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusy TouchInit.radiusY specification>
+getRadiusYUnchecked :: (MonadDOM m) => TouchInit -> m Float
+getRadiusYUnchecked self = liftDOM ((pFromJSVal <$> (js_getRadiusY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rotationAngle\"] = $2; })"
+        js_setRotationAngle :: TouchInit -> Float -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-rotationangle TouchInit.rotationAngle specification>
+setRotationAngle :: (MonadDOM m) => TouchInit -> Float -> m ()
+setRotationAngle self val = liftDOM (void ((js_setRotationAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rotationAngle\"]; })"
+        js_getRotationAngle :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-rotationangle TouchInit.rotationAngle specification>
+getRotationAngle :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getRotationAngle self = liftDOM (((js_getRotationAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-rotationangle TouchInit.rotationAngle specification>
+getRotationAngleUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getRotationAngleUnsafe self = liftDOM ((((js_getRotationAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-rotationangle TouchInit.rotationAngle specification>
+getRotationAngleUnchecked :: (MonadDOM m) => TouchInit -> m Float
+getRotationAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getRotationAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"force\"] = $2; })"
+        js_setForce :: TouchInit -> Float -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-force TouchInit.force specification>
+setForce :: (MonadDOM m) => TouchInit -> Float -> m ()
+setForce self val = liftDOM (void ((js_setForce (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"force\"]; })"
+        js_getForce :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-force TouchInit.force specification>
+getForce :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getForce self = liftDOM (((js_getForce (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-force TouchInit.force specification>
+getForceUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getForceUnsafe self = liftDOM ((((js_getForce (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-force TouchInit.force specification>
+getForceUnchecked :: (MonadDOM m) => TouchInit -> m Float
+getForceUnchecked self = liftDOM ((pFromJSVal <$> (js_getForce (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"altitudeAngle\"] = $2; })"
+        js_setAltitudeAngle :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-altitudeangle TouchInit.altitudeAngle specification>
+setAltitudeAngle :: (MonadDOM m) => TouchInit -> Double -> m ()
+setAltitudeAngle self val = liftDOM (void ((js_setAltitudeAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"altitudeAngle\"]; })"
+        js_getAltitudeAngle :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-altitudeangle TouchInit.altitudeAngle specification>
+getAltitudeAngle :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getAltitudeAngle self = liftDOM (((js_getAltitudeAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-altitudeangle TouchInit.altitudeAngle specification>
+getAltitudeAngleUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getAltitudeAngleUnsafe self = liftDOM ((((js_getAltitudeAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-altitudeangle TouchInit.altitudeAngle specification>
+getAltitudeAngleUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getAltitudeAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getAltitudeAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"azimuthAngle\"] = $2; })"
+        js_setAzimuthAngle :: TouchInit -> Double -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-azimuthangle TouchInit.azimuthAngle specification>
+setAzimuthAngle :: (MonadDOM m) => TouchInit -> Double -> m ()
+setAzimuthAngle self val = liftDOM (void ((js_setAzimuthAngle (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"azimuthAngle\"]; })"
+        js_getAzimuthAngle :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-azimuthangle TouchInit.azimuthAngle specification>
+getAzimuthAngle :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getAzimuthAngle self = liftDOM (((js_getAzimuthAngle (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-azimuthangle TouchInit.azimuthAngle specification>
+getAzimuthAngleUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getAzimuthAngleUnsafe self = liftDOM ((((js_getAzimuthAngle (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-azimuthangle TouchInit.azimuthAngle specification>
+getAzimuthAngleUnchecked :: (MonadDOM m) => TouchInit -> m Double
+getAzimuthAngleUnchecked self = liftDOM ((pFromJSVal <$> (js_getAzimuthAngle (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"touchType\"] = $2; })"
+        js_setTouchType :: TouchInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-touchtype TouchInit.touchType specification>
+setTouchType :: (MonadDOM m) => TouchInit -> TouchType -> m ()
+setTouchType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTouchType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"touchType\"]; })"
+        js_getTouchType :: TouchInit -> IO JSVal
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-touchtype TouchInit.touchType specification>
+getTouchType :: (MonadDOM m) => TouchInit -> m (Maybe TouchType)
+getTouchType self = liftDOM (((js_getTouchType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-touchtype TouchInit.touchType specification>
+getTouchTypeUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m TouchType
+getTouchTypeUnsafe self = liftDOM ((((js_getTouchType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-touchtype TouchInit.touchType specification>
+getTouchTypeUnchecked :: (MonadDOM m) => TouchInit -> m TouchType
+getTouchTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getTouchType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
@@ -1,45 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TouchList
-       (js_item, item, item_, js_getLength, getLength, TouchList(..),
-        gTypeTouchList)
+       (js_item, js_getLength, item, item_, itemUnsafe, itemUnchecked, getLength, TouchList(..), gTypeTouchList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        TouchList -> Word -> IO Touch
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
-item :: (MonadIO m) => TouchList -> Word -> m Touch
-item self index = liftIO (js_item self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })"
+        js_item :: TouchList -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TouchList/item MDN TouchList.item documentation>
+item :: (MonadDOM m) => TouchList -> Word -> m (Maybe Touch)
+item self index = liftDOM (((js_item (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
-item_ :: (MonadIO m) => TouchList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        TouchList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TouchList/item MDN TouchList.item documentation>
+item_ :: (MonadDOM m) => TouchList -> Word -> m ()
+item_ self index = liftDOM (void ((js_item (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.length Mozilla TouchList.length documentation> 
-getLength :: (MonadIO m) => TouchList -> m Word
-getLength self = liftIO (js_getLength self)
+-- | <https://developer.mozilla.org/docs/Web/API/TouchList/item MDN TouchList.item documentation>
+itemUnsafe :: (MonadDOM m, HasCallStack) => TouchList -> Word -> m Touch
+itemUnsafe self index = liftDOM ((((js_item (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TouchList/item MDN TouchList.item documentation>
+itemUnchecked :: (MonadDOM m) => TouchList -> Word -> m Touch
+itemUnchecked self index = liftDOM ((pFromJSVal <$> (js_item (self) (index))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: TouchList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TouchList/length MDN TouchList.length documentation>
+getLength :: (MonadDOM m) => TouchList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
@@ -1,60 +1,37 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TrackEvent
-       (js_newTrackEvent, newTrackEvent, js_getTrack, getTrack,
-        getTrackUnsafe, getTrackUnchecked, TrackEvent(..), gTypeTrackEvent)
+       (js_newTrackEvent, js_getTrack, newTrackEvent, getTrack, getTrackUnsafe, getTrackUnchecked, TrackEvent(..), gTypeTrackEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"TrackEvent\"]($1, $2); })" js_newTrackEvent ::
-        JSString -> Optional TrackEventInit -> IO TrackEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation> 
-newTrackEvent ::
-              (MonadIO m, ToJSString type') =>
-                type' -> Maybe TrackEventInit -> m TrackEvent
-newTrackEvent type' eventInitDict
-  = liftIO
-      (js_newTrackEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        TrackEvent -> IO (Nullable Track)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"TrackEvent\"]($1, $2); })"
+        js_newTrackEvent :: JSString -> JSVal -> IO TrackEvent
+-- | <https://developer.mozilla.org/docs/Web/API/TrackEvent/TrackEvent MDN TrackEvent. documentation>
+newTrackEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe TrackEventInit -> m TrackEvent
+newTrackEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newTrackEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
-getTrack :: (MonadIO m) => TrackEvent -> m (Maybe Track)
-getTrack self = liftIO (nullableToMaybe <$> (js_getTrack self))
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: TrackEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TrackEvent/track MDN TrackEvent.track documentation>
+getTrack :: (MonadDOM m) => TrackEvent -> m (Maybe VideoTrackOrAudioTrackOrTextTrack)
+getTrack self = liftDOM (((js_getTrack (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
-getTrackUnsafe ::
-               (MonadIO m, HasCallStack) => TrackEvent -> m Track
-getTrackUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getTrack self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TrackEvent/track MDN TrackEvent.track documentation>
+getTrackUnsafe :: (MonadDOM m, HasCallStack) => TrackEvent -> m VideoTrackOrAudioTrackOrTextTrack
+getTrackUnsafe self = liftDOM ((((js_getTrack (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
-getTrackUnchecked :: (MonadIO m) => TrackEvent -> m Track
-getTrackUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getTrack self))
+-- | <https://developer.mozilla.org/docs/Web/API/TrackEvent/track MDN TrackEvent.track documentation>
+getTrackUnchecked :: (MonadDOM m) => TrackEvent -> m VideoTrackOrAudioTrackOrTextTrack
+getTrackUnchecked self = liftDOM ((pFromJSVal <$> (js_getTrack (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrackEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/TrackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrackEventInit.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrackEventInit
+       (js_newTrackEventInit, js_setTrack, js_getTrack, newTrackEventInit, setTrack, getTrack, getTrackUnsafe, getTrackUnchecked, TrackEventInit(..), gTypeTrackEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTrackEventInit :: IO TrackEventInit
+-- | <https://html.spec.whatwg.org/multipage/media.html#trackeventinit TrackEventInit specification>
+newTrackEventInit :: (MonadDOM m) => m TrackEventInit
+newTrackEventInit = liftDOM ((js_newTrackEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"track\"] = $2; })"
+        js_setTrack :: TrackEventInit -> JSVal -> IO ()
+setTrack :: (MonadDOM m, IsVideoTrackOrAudioTrackOrTextTrack val) => TrackEventInit -> Maybe val -> m ()
+setTrack self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTrack (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })"
+        js_getTrack :: TrackEventInit -> IO JSVal
+getTrack :: (MonadDOM m) => TrackEventInit -> m (Maybe VideoTrackOrAudioTrackOrTextTrack)
+getTrack self = liftDOM (((js_getTrack (self)) >>= fromJSValUnchecked))
+
+getTrackUnsafe :: (MonadDOM m, HasCallStack) => TrackEventInit -> m VideoTrackOrAudioTrackOrTextTrack
+getTrackUnsafe self = liftDOM ((((js_getTrack (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTrackUnchecked :: (MonadDOM m) => TrackEventInit -> m VideoTrackOrAudioTrackOrTextTrack
+getTrackUnchecked self = liftDOM ((pFromJSVal <$> (js_getTrack (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TransformStream.hs b/src/GHCJS/DOM/JSFFI/Generated/TransformStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TransformStream.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TransformStream
+       (js_newTransformStream, js_getReadable, js_getWritable, newTransformStream, getReadable, getWritable, TransformStream(..), gTypeTransformStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"TransformStream\"]($1, $2, $3); })"
+        js_newTransformStream :: JSVal -> JSVal -> JSVal -> IO TransformStream
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStream/TransformStream MDN TransformStream. documentation>
+newTransformStream :: (MonadDOM m) => Maybe GObject -> Maybe QueuingStrategy -> Maybe QueuingStrategy -> m TransformStream
+newTransformStream transformer writableStrategy readableStrategy = liftDOM (((P.maybe (P.return jsUndefined) toJSVal transformer) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal writableStrategy) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal readableStrategy) >>= \a3' -> js_newTransformStream a1' a2' a3'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: TransformStream -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStream/readable MDN TransformStream.readable documentation>
+getReadable :: (MonadDOM m) => TransformStream -> m ReadableStream
+getReadable self = liftDOM ((js_getReadable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writable\"]; })"
+        js_getWritable :: TransformStream -> IO WritableStream
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStream/writable MDN TransformStream.writable documentation>
+getWritable :: (MonadDOM m) => TransformStream -> m WritableStream
+getWritable self = liftDOM ((js_getWritable (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TransformStreamDefaultController.hs b/src/GHCJS/DOM/JSFFI/Generated/TransformStreamDefaultController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TransformStreamDefaultController.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TransformStreamDefaultController
+       (js_enqueue, js_error, js_terminate, js_getDesiredSize, enqueue, error, terminate, getDesiredSize, getDesiredSizeUnsafe, getDesiredSizeUnchecked, TransformStreamDefaultController(..), gTypeTransformStreamDefaultController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"enqueue\"]($2); })"
+        js_enqueue :: TransformStreamDefaultController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/enqueue MDN TransformStreamDefaultController.enqueue documentation>
+enqueue :: (MonadDOM m) => TransformStreamDefaultController -> JSVal -> m ()
+enqueue self chunk = liftDOM (void ((js_enqueue (self) (chunk))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"error\"]($2); })"
+        js_error :: TransformStreamDefaultController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/error MDN TransformStreamDefaultController.error documentation>
+error :: (MonadDOM m) => TransformStreamDefaultController -> JSVal -> m ()
+error self reason = liftDOM (void ((js_error (self) (reason))))
+
+foreign import javascript safe "(($1) => { return $1[\"terminate\"](); })"
+        js_terminate :: TransformStreamDefaultController -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/terminate MDN TransformStreamDefaultController.terminate documentation>
+terminate :: (MonadDOM m) => TransformStreamDefaultController -> m ()
+terminate self = liftDOM (void ((js_terminate (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"desiredSize\"]; })"
+        js_getDesiredSize :: TransformStreamDefaultController -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize MDN TransformStreamDefaultController.desiredSize documentation>
+getDesiredSize :: (MonadDOM m) => TransformStreamDefaultController -> m (Maybe Double)
+getDesiredSize self = liftDOM (((js_getDesiredSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize MDN TransformStreamDefaultController.desiredSize documentation>
+getDesiredSizeUnsafe :: (MonadDOM m, HasCallStack) => TransformStreamDefaultController -> m Double
+getDesiredSizeUnsafe self = liftDOM ((((js_getDesiredSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize MDN TransformStreamDefaultController.desiredSize documentation>
+getDesiredSizeUnchecked :: (MonadDOM m) => TransformStreamDefaultController -> m Double
+getDesiredSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesiredSize (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
@@ -1,67 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TransitionEvent
-       (js_newTransitionEvent, newTransitionEvent, js_getPropertyName,
-        getPropertyName, js_getElapsedTime, getElapsedTime,
-        js_getPseudoElement, getPseudoElement, TransitionEvent(..),
-        gTypeTransitionEvent)
+       (js_newTransitionEvent, js_getPropertyName, js_getElapsedTime, js_getPseudoElement, js_getAnimation, newTransitionEvent, getPropertyName, getElapsedTime, getPseudoElement, getAnimation, getAnimationUnsafe, getAnimationUnchecked, TransitionEvent(..), gTypeTransitionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"TransitionEvent\"]($1,\n$2); })" js_newTransitionEvent ::
-        JSString -> Optional TransitionEventInit -> IO TransitionEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation> 
-newTransitionEvent ::
-                   (MonadIO m, ToJSString type') =>
-                     type' -> Maybe TransitionEventInit -> m TransitionEvent
-newTransitionEvent type' transitionEventInitDict
-  = liftIO
-      (js_newTransitionEvent (toJSString type')
-         (maybeToOptional transitionEventInitDict))
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"TransitionEvent\"]($1, $2); })"
+        js_newTransitionEvent :: JSString -> JSVal -> IO TransitionEvent
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/TransitionEvent MDN TransitionEvent. documentation>
+newTransitionEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe TransitionEventInit -> m TransitionEvent
+newTransitionEvent type' transitionEventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal transitionEventInitDict) >>= \a2' -> js_newTransitionEvent (toJSString type') a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"propertyName\"]; })"
         js_getPropertyName :: TransitionEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/propertyName MDN TransitionEvent.propertyName documentation>
+getPropertyName :: (MonadDOM m, FromJSString result) => TransitionEvent -> m result
+getPropertyName self = liftDOM ((fromJSString <$> (js_getPropertyName (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.propertyName Mozilla TransitionEvent.propertyName documentation> 
-getPropertyName ::
-                (MonadIO m, FromJSString result) => TransitionEvent -> m result
-getPropertyName self
-  = liftIO (fromJSString <$> (js_getPropertyName self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
         js_getElapsedTime :: TransitionEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/elapsedTime MDN TransitionEvent.elapsedTime documentation>
+getElapsedTime :: (MonadDOM m) => TransitionEvent -> m Double
+getElapsedTime self = liftDOM ((js_getElapsedTime (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.elapsedTime Mozilla TransitionEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadIO m) => TransitionEvent -> m Double
-getElapsedTime self = liftIO (js_getElapsedTime self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
         js_getPseudoElement :: TransitionEvent -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/pseudoElement MDN TransitionEvent.pseudoElement documentation>
+getPseudoElement :: (MonadDOM m, FromJSString result) => TransitionEvent -> m result
+getPseudoElement self = liftDOM ((fromJSString <$> (js_getPseudoElement (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.pseudoElement Mozilla TransitionEvent.pseudoElement documentation> 
-getPseudoElement ::
-                 (MonadIO m, FromJSString result) => TransitionEvent -> m result
-getPseudoElement self
-  = liftIO (fromJSString <$> (js_getPseudoElement self))
+foreign import javascript unsafe "(($1) => { return $1[\"animation\"]; })"
+        js_getAnimation :: TransitionEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/animation MDN TransitionEvent.animation documentation>
+getAnimation :: (MonadDOM m) => TransitionEvent -> m (Maybe CSSTransition)
+getAnimation self = liftDOM (((js_getAnimation (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/animation MDN TransitionEvent.animation documentation>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => TransitionEvent -> m CSSTransition
+getAnimationUnsafe self = liftDOM ((((js_getAnimation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/animation MDN TransitionEvent.animation documentation>
+getAnimationUnchecked :: (MonadDOM m) => TransitionEvent -> m CSSTransition
+getAnimationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnimation (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TransitionEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/TransitionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TransitionEventInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TransitionEventInit
+       (js_newTransitionEventInit, js_setPropertyName, js_getPropertyName, js_setElapsedTime, js_getElapsedTime, js_setPseudoElement, js_getPseudoElement, js_setAnimation, js_getAnimation, newTransitionEventInit, setPropertyName, getPropertyName, getPropertyNameUnsafe, getPropertyNameUnchecked, setElapsedTime, getElapsedTime, getElapsedTimeUnsafe, getElapsedTimeUnchecked, setPseudoElement, getPseudoElement, getPseudoElementUnsafe, getPseudoElementUnchecked, setAnimation, getAnimation, getAnimationUnsafe, getAnimationUnchecked, TransitionEventInit(..), gTypeTransitionEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTransitionEventInit :: IO TransitionEventInit
+-- | <https://drafts.csswg.org/css-transitions-1/#dictdef-transitioneventinit TransitionEventInit specification>
+newTransitionEventInit :: (MonadDOM m) => m TransitionEventInit
+newTransitionEventInit = liftDOM ((js_newTransitionEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"propertyName\"] = $2; })"
+        js_setPropertyName :: TransitionEventInit -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-propertyname TransitionEventInit.propertyName specification>
+setPropertyName :: (MonadDOM m, ToJSString val) => TransitionEventInit -> val -> m ()
+setPropertyName self val = liftDOM (void ((js_setPropertyName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"propertyName\"]; })"
+        js_getPropertyName :: TransitionEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-propertyname TransitionEventInit.propertyName specification>
+getPropertyName :: (MonadDOM m, FromJSString result) => TransitionEventInit -> m (Maybe result)
+getPropertyName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPropertyName (self))))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-propertyname TransitionEventInit.propertyName specification>
+getPropertyNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => TransitionEventInit -> m result
+getPropertyNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPropertyName (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-propertyname TransitionEventInit.propertyName specification>
+getPropertyNameUnchecked :: (MonadDOM m, FromJSString result) => TransitionEventInit -> m result
+getPropertyNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getPropertyName (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"elapsedTime\"] = $2; })"
+        js_setElapsedTime :: TransitionEventInit -> Double -> IO ()
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-elapsedtime TransitionEventInit.elapsedTime specification>
+setElapsedTime :: (MonadDOM m) => TransitionEventInit -> Double -> m ()
+setElapsedTime self val = liftDOM (void ((js_setElapsedTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: TransitionEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-elapsedtime TransitionEventInit.elapsedTime specification>
+getElapsedTime :: (MonadDOM m) => TransitionEventInit -> m (Maybe Double)
+getElapsedTime self = liftDOM (((js_getElapsedTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-elapsedtime TransitionEventInit.elapsedTime specification>
+getElapsedTimeUnsafe :: (MonadDOM m, HasCallStack) => TransitionEventInit -> m Double
+getElapsedTimeUnsafe self = liftDOM ((((js_getElapsedTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-elapsedtime TransitionEventInit.elapsedTime specification>
+getElapsedTimeUnchecked :: (MonadDOM m) => TransitionEventInit -> m Double
+getElapsedTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getElapsedTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pseudoElement\"] = $2; })"
+        js_setPseudoElement :: TransitionEventInit -> JSString -> IO ()
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-pseudoelement TransitionEventInit.pseudoElement specification>
+setPseudoElement :: (MonadDOM m, ToJSString val) => TransitionEventInit -> val -> m ()
+setPseudoElement self val = liftDOM (void ((js_setPseudoElement (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: TransitionEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-pseudoelement TransitionEventInit.pseudoElement specification>
+getPseudoElement :: (MonadDOM m, FromJSString result) => TransitionEventInit -> m (Maybe result)
+getPseudoElement self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-pseudoelement TransitionEventInit.pseudoElement specification>
+getPseudoElementUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => TransitionEventInit -> m result
+getPseudoElementUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPseudoElement (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-pseudoelement TransitionEventInit.pseudoElement specification>
+getPseudoElementUnchecked :: (MonadDOM m, FromJSString result) => TransitionEventInit -> m result
+getPseudoElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getPseudoElement (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"animation\"] = $2; })"
+        js_setAnimation :: TransitionEventInit -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/css-transitions-2/#dom-transitioneventinit-animation TransitionEventInit.animation specification>
+setAnimation :: (MonadDOM m) => TransitionEventInit -> Maybe CSSTransition -> m ()
+setAnimation self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAnimation (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"animation\"]; })"
+        js_getAnimation :: TransitionEventInit -> IO JSVal
+-- | <https://drafts.csswg.org/css-transitions-2/#dom-transitioneventinit-animation TransitionEventInit.animation specification>
+getAnimation :: (MonadDOM m) => TransitionEventInit -> m (Maybe CSSTransition)
+getAnimation self = liftDOM (((js_getAnimation (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-transitions-2/#dom-transitioneventinit-animation TransitionEventInit.animation specification>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => TransitionEventInit -> m CSSTransition
+getAnimationUnsafe self = liftDOM ((((js_getAnimation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/css-transitions-2/#dom-transitioneventinit-animation TransitionEventInit.animation specification>
+getAnimationUnchecked :: (MonadDOM m) => TransitionEventInit -> m CSSTransition
+getAnimationUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnimation (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs b/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
@@ -1,237 +1,167 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.TreeWalker
-       (js_parentNode, parentNode, parentNode_, parentNodeUnsafe,
-        parentNodeUnchecked, js_firstChild, firstChild, firstChild_,
-        firstChildUnsafe, firstChildUnchecked, js_lastChild, lastChild,
-        lastChild_, lastChildUnsafe, lastChildUnchecked,
-        js_previousSibling, previousSibling, previousSibling_,
-        previousSiblingUnsafe, previousSiblingUnchecked, js_nextSibling,
-        nextSibling, nextSibling_, nextSiblingUnsafe, nextSiblingUnchecked,
-        js_previousNode, previousNode, previousNode_, previousNodeUnsafe,
-        previousNodeUnchecked, js_nextNode, nextNode, nextNode_,
-        nextNodeUnsafe, nextNodeUnchecked, js_getRoot, getRoot,
-        js_getWhatToShow, getWhatToShow, js_setCurrentNode, setCurrentNode,
-        js_getCurrentNode, getCurrentNode, TreeWalker(..), gTypeTreeWalker)
+       (js_firstChild, js_lastChild, js_nextNode, js_nextSibling, js_parentNode, js_previousNode, js_previousSibling, js_getRoot, js_getWhatToShow, js_setCurrentNode, js_getCurrentNode, firstChild, firstChild_, firstChildUnsafe, firstChildUnchecked, lastChild, lastChild_, lastChildUnsafe, lastChildUnchecked, nextNode, nextNode_, nextNodeUnsafe, nextNodeUnchecked, nextSibling, nextSibling_, nextSiblingUnsafe, nextSiblingUnchecked, parentNode, parentNode_, parentNodeUnsafe, parentNodeUnchecked, previousNode, previousNode_, previousNodeUnsafe, previousNodeUnchecked, previousSibling, previousSibling_, previousSiblingUnsafe, previousSiblingUnchecked, getRoot, getWhatToShow, setCurrentNode, getCurrentNode, TreeWalker(..), gTypeTreeWalker)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"parentNode\"](); })"
-        js_parentNode :: TreeWalker -> IO (Nullable Node)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNode :: (MonadIO m) => TreeWalker -> m (Maybe Node)
-parentNode self = liftIO (nullableToMaybe <$> (js_parentNode self))
+foreign import javascript safe "(($1) => { return $1[\"firstChild\"](); })"
+        js_firstChild :: TreeWalker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/firstChild MDN TreeWalker.firstChild documentation>
+firstChild :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+firstChild self = liftDOM (((js_firstChild (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNode_ :: (MonadIO m) => TreeWalker -> m ()
-parentNode_ self = liftIO (void (js_parentNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/firstChild MDN TreeWalker.firstChild documentation>
+firstChild_ :: (MonadDOM m) => TreeWalker -> m ()
+firstChild_ self = liftDOM (void ((js_firstChild (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNodeUnsafe ::
-                 (MonadIO m, HasCallStack) => TreeWalker -> m Node
-parentNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_parentNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/firstChild MDN TreeWalker.firstChild documentation>
+firstChildUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+firstChildUnsafe self = liftDOM ((((js_firstChild (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNodeUnchecked :: (MonadIO m) => TreeWalker -> m Node
-parentNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_parentNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"firstChild\"](); })"
-        js_firstChild :: TreeWalker -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/firstChild MDN TreeWalker.firstChild documentation>
+firstChildUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+firstChildUnchecked self = liftDOM ((pFromJSVal <$> (js_firstChild (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
-firstChild :: (MonadIO m) => TreeWalker -> m (Maybe Node)
-firstChild self = liftIO (nullableToMaybe <$> (js_firstChild self))
+foreign import javascript safe "(($1) => { return $1[\"lastChild\"](); })"
+        js_lastChild :: TreeWalker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/lastChild MDN TreeWalker.lastChild documentation>
+lastChild :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+lastChild self = liftDOM (((js_lastChild (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
-firstChild_ :: (MonadIO m) => TreeWalker -> m ()
-firstChild_ self = liftIO (void (js_firstChild self))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/lastChild MDN TreeWalker.lastChild documentation>
+lastChild_ :: (MonadDOM m) => TreeWalker -> m ()
+lastChild_ self = liftDOM (void ((js_lastChild (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
-firstChildUnsafe ::
-                 (MonadIO m, HasCallStack) => TreeWalker -> m Node
-firstChildUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_firstChild self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/lastChild MDN TreeWalker.lastChild documentation>
+lastChildUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+lastChildUnsafe self = liftDOM ((((js_lastChild (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
-firstChildUnchecked :: (MonadIO m) => TreeWalker -> m Node
-firstChildUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_firstChild self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"lastChild\"](); })" js_lastChild
-        :: TreeWalker -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/lastChild MDN TreeWalker.lastChild documentation>
+lastChildUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+lastChildUnchecked self = liftDOM ((pFromJSVal <$> (js_lastChild (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
-lastChild :: (MonadIO m) => TreeWalker -> m (Maybe Node)
-lastChild self = liftIO (nullableToMaybe <$> (js_lastChild self))
+foreign import javascript safe "(($1) => { return $1[\"nextNode\"](); })"
+        js_nextNode :: TreeWalker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextNode MDN TreeWalker.nextNode documentation>
+nextNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+nextNode self = liftDOM (((js_nextNode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
-lastChild_ :: (MonadIO m) => TreeWalker -> m ()
-lastChild_ self = liftIO (void (js_lastChild self))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextNode MDN TreeWalker.nextNode documentation>
+nextNode_ :: (MonadDOM m) => TreeWalker -> m ()
+nextNode_ self = liftDOM (void ((js_nextNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
-lastChildUnsafe ::
-                (MonadIO m, HasCallStack) => TreeWalker -> m Node
-lastChildUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_lastChild self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextNode MDN TreeWalker.nextNode documentation>
+nextNodeUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+nextNodeUnsafe self = liftDOM ((((js_nextNode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
-lastChildUnchecked :: (MonadIO m) => TreeWalker -> m Node
-lastChildUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_lastChild self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"previousSibling\"](); })"
-        js_previousSibling :: TreeWalker -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextNode MDN TreeWalker.nextNode documentation>
+nextNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+nextNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_nextNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
-previousSibling :: (MonadIO m) => TreeWalker -> m (Maybe Node)
-previousSibling self
-  = liftIO (nullableToMaybe <$> (js_previousSibling self))
+foreign import javascript safe "(($1) => { return $1[\"nextSibling\"](); })"
+        js_nextSibling :: TreeWalker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextSibling MDN TreeWalker.nextSibling documentation>
+nextSibling :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+nextSibling self = liftDOM (((js_nextSibling (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
-previousSibling_ :: (MonadIO m) => TreeWalker -> m ()
-previousSibling_ self = liftIO (void (js_previousSibling self))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextSibling MDN TreeWalker.nextSibling documentation>
+nextSibling_ :: (MonadDOM m) => TreeWalker -> m ()
+nextSibling_ self = liftDOM (void ((js_nextSibling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
-previousSiblingUnsafe ::
-                      (MonadIO m, HasCallStack) => TreeWalker -> m Node
-previousSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_previousSibling self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextSibling MDN TreeWalker.nextSibling documentation>
+nextSiblingUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+nextSiblingUnsafe self = liftDOM ((((js_nextSibling (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
-previousSiblingUnchecked :: (MonadIO m) => TreeWalker -> m Node
-previousSiblingUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_previousSibling self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nextSibling\"](); })"
-        js_nextSibling :: TreeWalker -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextSibling MDN TreeWalker.nextSibling documentation>
+nextSiblingUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+nextSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_nextSibling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
-nextSibling :: (MonadIO m) => TreeWalker -> m (Maybe Node)
-nextSibling self
-  = liftIO (nullableToMaybe <$> (js_nextSibling self))
+foreign import javascript safe "(($1) => { return $1[\"parentNode\"](); })"
+        js_parentNode :: TreeWalker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+parentNode self = liftDOM (((js_parentNode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
-nextSibling_ :: (MonadIO m) => TreeWalker -> m ()
-nextSibling_ self = liftIO (void (js_nextSibling self))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNode_ :: (MonadDOM m) => TreeWalker -> m ()
+parentNode_ self = liftDOM (void ((js_parentNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
-nextSiblingUnsafe ::
-                  (MonadIO m, HasCallStack) => TreeWalker -> m Node
-nextSiblingUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_nextSibling self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNodeUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+parentNodeUnsafe self = liftDOM ((((js_parentNode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
-nextSiblingUnchecked :: (MonadIO m) => TreeWalker -> m Node
-nextSiblingUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_nextSibling self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"previousNode\"](); })"
-        js_previousNode :: TreeWalker -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+parentNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_parentNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
-previousNode :: (MonadIO m) => TreeWalker -> m (Maybe Node)
-previousNode self
-  = liftIO (nullableToMaybe <$> (js_previousNode self))
+foreign import javascript safe "(($1) => { return $1[\"previousNode\"](); })"
+        js_previousNode :: TreeWalker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousNode MDN TreeWalker.previousNode documentation>
+previousNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+previousNode self = liftDOM (((js_previousNode (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
-previousNode_ :: (MonadIO m) => TreeWalker -> m ()
-previousNode_ self = liftIO (void (js_previousNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousNode MDN TreeWalker.previousNode documentation>
+previousNode_ :: (MonadDOM m) => TreeWalker -> m ()
+previousNode_ self = liftDOM (void ((js_previousNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
-previousNodeUnsafe ::
-                   (MonadIO m, HasCallStack) => TreeWalker -> m Node
-previousNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_previousNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousNode MDN TreeWalker.previousNode documentation>
+previousNodeUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+previousNodeUnsafe self = liftDOM ((((js_previousNode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
-previousNodeUnchecked :: (MonadIO m) => TreeWalker -> m Node
-previousNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_previousNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nextNode\"](); })" js_nextNode
-        :: TreeWalker -> IO (Nullable Node)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousNode MDN TreeWalker.previousNode documentation>
+previousNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+previousNodeUnchecked self = liftDOM ((pFromJSVal <$> (js_previousNode (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
-nextNode :: (MonadIO m) => TreeWalker -> m (Maybe Node)
-nextNode self = liftIO (nullableToMaybe <$> (js_nextNode self))
+foreign import javascript safe "(($1) => { return $1[\"previousSibling\"](); })"
+        js_previousSibling :: TreeWalker -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousSibling MDN TreeWalker.previousSibling documentation>
+previousSibling :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+previousSibling self = liftDOM (((js_previousSibling (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
-nextNode_ :: (MonadIO m) => TreeWalker -> m ()
-nextNode_ self = liftIO (void (js_nextNode self))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousSibling MDN TreeWalker.previousSibling documentation>
+previousSibling_ :: (MonadDOM m) => TreeWalker -> m ()
+previousSibling_ self = liftDOM (void ((js_previousSibling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
-nextNodeUnsafe :: (MonadIO m, HasCallStack) => TreeWalker -> m Node
-nextNodeUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_nextNode self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousSibling MDN TreeWalker.previousSibling documentation>
+previousSiblingUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+previousSiblingUnsafe self = liftDOM ((((js_previousSibling (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
-nextNodeUnchecked :: (MonadIO m) => TreeWalker -> m Node
-nextNodeUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_nextNode self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })" js_getRoot ::
-        TreeWalker -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousSibling MDN TreeWalker.previousSibling documentation>
+previousSiblingUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+previousSiblingUnchecked self = liftDOM ((pFromJSVal <$> (js_previousSibling (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.root Mozilla TreeWalker.root documentation> 
-getRoot :: (MonadIO m) => TreeWalker -> m Node
-getRoot self = liftIO (js_getRoot self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })"
+        js_getRoot :: TreeWalker -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/root MDN TreeWalker.root documentation>
+getRoot :: (MonadDOM m) => TreeWalker -> m Node
+getRoot self = liftDOM ((js_getRoot (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"whatToShow\"]; })"
         js_getWhatToShow :: TreeWalker -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/whatToShow MDN TreeWalker.whatToShow documentation>
+getWhatToShow :: (MonadDOM m) => TreeWalker -> m Word
+getWhatToShow self = liftDOM ((js_getWhatToShow (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.whatToShow Mozilla TreeWalker.whatToShow documentation> 
-getWhatToShow :: (MonadIO m) => TreeWalker -> m Word
-getWhatToShow self = liftIO (js_getWhatToShow self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"currentNode\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"currentNode\"] = $2; })"
         js_setCurrentNode :: TreeWalker -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/currentNode MDN TreeWalker.currentNode documentation>
+setCurrentNode :: (MonadDOM m, IsNode val) => TreeWalker -> val -> m ()
+setCurrentNode self val = liftDOM (void ((js_setCurrentNode (self) (Types.toNode val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
-setCurrentNode ::
-               (MonadIO m, IsNode val) => TreeWalker -> val -> m ()
-setCurrentNode self val
-  = liftIO (js_setCurrentNode self (toNode val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"currentNode\"]; })"
         js_getCurrentNode :: TreeWalker -> IO Node
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
-getCurrentNode :: (MonadIO m) => TreeWalker -> m Node
-getCurrentNode self = liftIO (js_getCurrentNode self)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/currentNode MDN TreeWalker.currentNode documentation>
+getCurrentNode :: (MonadDOM m) => TreeWalker -> m Node
+getCurrentNode self = liftDOM ((js_getCurrentNode (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrustedHTML.hs b/src/GHCJS/DOM/JSFFI/Generated/TrustedHTML.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrustedHTML.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrustedHTML
+       (js_toJSON, toJSON, toJSON_, TrustedHTML(..), gTypeTrustedHTML)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: TrustedHTML -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedHTML/toJSON MDN TrustedHTML.toJSON documentation>
+toJSON :: (MonadDOM m, FromJSString result) => TrustedHTML -> m result
+toJSON self = liftDOM ((fromJSString <$> (js_toJSON (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedHTML/toJSON MDN TrustedHTML.toJSON documentation>
+toJSON_ :: (MonadDOM m) => TrustedHTML -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrustedHTMLParserOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/TrustedHTMLParserOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrustedHTMLParserOptions.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrustedHTMLParserOptions
+       (TrustedHTMLParserOptions(..), gTypeTrustedHTMLParserOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrustedScript.hs b/src/GHCJS/DOM/JSFFI/Generated/TrustedScript.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrustedScript.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrustedScript
+       (js_toJSON, toJSON, toJSON_, TrustedScript(..), gTypeTrustedScript)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: TrustedScript -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScript/toJSON MDN TrustedScript.toJSON documentation>
+toJSON :: (MonadDOM m, FromJSString result) => TrustedScript -> m result
+toJSON self = liftDOM ((fromJSString <$> (js_toJSON (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScript/toJSON MDN TrustedScript.toJSON documentation>
+toJSON_ :: (MonadDOM m) => TrustedScript -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrustedScriptURL.hs b/src/GHCJS/DOM/JSFFI/Generated/TrustedScriptURL.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrustedScriptURL.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrustedScriptURL
+       (js_toJSON, toJSON, toJSON_, TrustedScriptURL(..), gTypeTrustedScriptURL)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: TrustedScriptURL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScriptURL/toJSON MDN TrustedScriptURL.toJSON documentation>
+toJSON :: (MonadDOM m, FromJSString result) => TrustedScriptURL -> m result
+toJSON self = liftDOM ((fromJSString <$> (js_toJSON (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScriptURL/toJSON MDN TrustedScriptURL.toJSON documentation>
+toJSON_ :: (MonadDOM m) => TrustedScriptURL -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicy.hs b/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicy.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrustedTypePolicy
+       (js_createHTML, js_createScript, js_createScriptURL, js_getName, createHTML, createHTML_, createScript, createScript_, createScriptURL, createScriptURL_, getName, TrustedTypePolicy(..), gTypeTrustedTypePolicy)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createHTML\"]($2, ...$3); })"
+        js_createHTML :: TrustedTypePolicy -> JSString -> JSVal -> IO TrustedHTML
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/createHTML MDN TrustedTypePolicy.createHTML documentation>
+createHTML :: (MonadDOM m, ToJSString input) => TrustedTypePolicy -> input -> [JSVal] -> m TrustedHTML
+createHTML self input arguments = liftDOM (((toJSVal arguments) >>= \a3' -> js_createHTML (self) (toJSString input) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/createHTML MDN TrustedTypePolicy.createHTML documentation>
+createHTML_ :: (MonadDOM m, ToJSString input) => TrustedTypePolicy -> input -> [JSVal] -> m ()
+createHTML_ self input arguments = liftDOM (void (((toJSVal arguments) >>= \a3' -> js_createHTML (self) (toJSString input) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createScript\"]($2, ...$3); })"
+        js_createScript :: TrustedTypePolicy -> JSString -> JSVal -> IO TrustedScript
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/createScript MDN TrustedTypePolicy.createScript documentation>
+createScript :: (MonadDOM m, ToJSString input) => TrustedTypePolicy -> input -> [JSVal] -> m TrustedScript
+createScript self input arguments = liftDOM (((toJSVal arguments) >>= \a3' -> js_createScript (self) (toJSString input) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/createScript MDN TrustedTypePolicy.createScript documentation>
+createScript_ :: (MonadDOM m, ToJSString input) => TrustedTypePolicy -> input -> [JSVal] -> m ()
+createScript_ self input arguments = liftDOM (void (((toJSVal arguments) >>= \a3' -> js_createScript (self) (toJSString input) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createScriptURL\"]($2, ...$3); })"
+        js_createScriptURL :: TrustedTypePolicy -> JSString -> JSVal -> IO TrustedScriptURL
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/createScriptURL MDN TrustedTypePolicy.createScriptURL documentation>
+createScriptURL :: (MonadDOM m, ToJSString input) => TrustedTypePolicy -> input -> [JSVal] -> m TrustedScriptURL
+createScriptURL self input arguments = liftDOM (((toJSVal arguments) >>= \a3' -> js_createScriptURL (self) (toJSString input) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/createScriptURL MDN TrustedTypePolicy.createScriptURL documentation>
+createScriptURL_ :: (MonadDOM m, ToJSString input) => TrustedTypePolicy -> input -> [JSVal] -> m ()
+createScriptURL_ self input arguments = liftDOM (void (((toJSVal arguments) >>= \a3' -> js_createScriptURL (self) (toJSString input) a3')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: TrustedTypePolicy -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/name MDN TrustedTypePolicy.name documentation>
+getName :: (MonadDOM m, FromJSString result) => TrustedTypePolicy -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicyFactory.hs b/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicyFactory.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicyFactory.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrustedTypePolicyFactory
+       (js_createPolicy, js_getAttributeType, js_getPropertyType, js_isHTML, js_isScript, js_isScriptURL, js_getEmptyHTML, js_getEmptyScript, js_getDefaultPolicy, createPolicy, createPolicy_, getAttributeType, getAttributeType_, getAttributeTypeUnsafe, getAttributeTypeUnchecked, getPropertyType, getPropertyType_, getPropertyTypeUnsafe, getPropertyTypeUnchecked, isHTML, isHTML_, isScript, isScript_, isScriptURL, isScriptURL_, getEmptyHTML, getEmptyScript, getDefaultPolicy, getDefaultPolicyUnsafe, getDefaultPolicyUnchecked, TrustedTypePolicyFactory(..), gTypeTrustedTypePolicyFactory)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createPolicy\"]($2, $3); })"
+        js_createPolicy :: TrustedTypePolicyFactory -> JSString -> JSVal -> IO TrustedTypePolicy
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/createPolicy MDN TrustedTypePolicyFactory.createPolicy documentation>
+createPolicy :: (MonadDOM m, ToJSString policyName) => TrustedTypePolicyFactory -> policyName -> Maybe TrustedTypePolicyOptions -> m TrustedTypePolicy
+createPolicy self policyName policyOptions = liftDOM (((P.maybe (P.return jsUndefined) toJSVal policyOptions) >>= \a3' -> js_createPolicy (self) (toJSString policyName) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/createPolicy MDN TrustedTypePolicyFactory.createPolicy documentation>
+createPolicy_ :: (MonadDOM m, ToJSString policyName) => TrustedTypePolicyFactory -> policyName -> Maybe TrustedTypePolicyOptions -> m ()
+createPolicy_ self policyName policyOptions = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal policyOptions) >>= \a3' -> js_createPolicy (self) (toJSString policyName) a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"getAttributeType\"]($2, $3, $4, $5); })"
+        js_getAttributeType :: TrustedTypePolicyFactory -> JSString -> JSString -> (Nullable JSString) -> (Nullable JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getAttributeType MDN TrustedTypePolicyFactory.getAttributeType documentation>
+getAttributeType :: (MonadDOM m, ToJSString tagName, ToJSString attribute, ToJSString elementNs, ToJSString attrNs, FromJSString result) => TrustedTypePolicyFactory -> tagName -> attribute -> Maybe elementNs -> Maybe attrNs -> m (Maybe result)
+getAttributeType self tagName attribute elementNs attrNs = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getAttributeType (self) (toJSString tagName) (toJSString attribute) (toMaybeJSString elementNs) (toMaybeJSString attrNs))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getAttributeType MDN TrustedTypePolicyFactory.getAttributeType documentation>
+getAttributeType_ :: (MonadDOM m, ToJSString tagName, ToJSString attribute, ToJSString elementNs, ToJSString attrNs) => TrustedTypePolicyFactory -> tagName -> attribute -> Maybe elementNs -> Maybe attrNs -> m ()
+getAttributeType_ self tagName attribute elementNs attrNs = liftDOM (void ((js_getAttributeType (self) (toJSString tagName) (toJSString attribute) (toMaybeJSString elementNs) (toMaybeJSString attrNs))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getAttributeType MDN TrustedTypePolicyFactory.getAttributeType documentation>
+getAttributeTypeUnsafe :: (MonadDOM m, ToJSString tagName, ToJSString attribute, ToJSString elementNs, ToJSString attrNs, HasCallStack, FromJSString result) => TrustedTypePolicyFactory -> tagName -> attribute -> Maybe elementNs -> Maybe attrNs -> m result
+getAttributeTypeUnsafe self tagName attribute elementNs attrNs = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getAttributeType (self) (toJSString tagName) (toJSString attribute) (toMaybeJSString elementNs) (toMaybeJSString attrNs))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getAttributeType MDN TrustedTypePolicyFactory.getAttributeType documentation>
+getAttributeTypeUnchecked :: (MonadDOM m, ToJSString tagName, ToJSString attribute, ToJSString elementNs, ToJSString attrNs, FromJSString result) => TrustedTypePolicyFactory -> tagName -> attribute -> Maybe elementNs -> Maybe attrNs -> m result
+getAttributeTypeUnchecked self tagName attribute elementNs attrNs = liftDOM ((pFromJSVal <$> (js_getAttributeType (self) (toJSString tagName) (toJSString attribute) (toMaybeJSString elementNs) (toMaybeJSString attrNs))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getPropertyType\"]($2, $3, $4); })"
+        js_getPropertyType :: TrustedTypePolicyFactory -> JSString -> JSString -> (Nullable JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getPropertyType MDN TrustedTypePolicyFactory.getPropertyType documentation>
+getPropertyType :: (MonadDOM m, ToJSString tagName, ToJSString property, ToJSString elementNs, FromJSString result) => TrustedTypePolicyFactory -> tagName -> property -> Maybe elementNs -> m (Maybe result)
+getPropertyType self tagName property elementNs = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPropertyType (self) (toJSString tagName) (toJSString property) (toMaybeJSString elementNs))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getPropertyType MDN TrustedTypePolicyFactory.getPropertyType documentation>
+getPropertyType_ :: (MonadDOM m, ToJSString tagName, ToJSString property, ToJSString elementNs) => TrustedTypePolicyFactory -> tagName -> property -> Maybe elementNs -> m ()
+getPropertyType_ self tagName property elementNs = liftDOM (void ((js_getPropertyType (self) (toJSString tagName) (toJSString property) (toMaybeJSString elementNs))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getPropertyType MDN TrustedTypePolicyFactory.getPropertyType documentation>
+getPropertyTypeUnsafe :: (MonadDOM m, ToJSString tagName, ToJSString property, ToJSString elementNs, HasCallStack, FromJSString result) => TrustedTypePolicyFactory -> tagName -> property -> Maybe elementNs -> m result
+getPropertyTypeUnsafe self tagName property elementNs = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPropertyType (self) (toJSString tagName) (toJSString property) (toMaybeJSString elementNs))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/getPropertyType MDN TrustedTypePolicyFactory.getPropertyType documentation>
+getPropertyTypeUnchecked :: (MonadDOM m, ToJSString tagName, ToJSString property, ToJSString elementNs, FromJSString result) => TrustedTypePolicyFactory -> tagName -> property -> Maybe elementNs -> m result
+getPropertyTypeUnchecked self tagName property elementNs = liftDOM ((pFromJSVal <$> (js_getPropertyType (self) (toJSString tagName) (toJSString property) (toMaybeJSString elementNs))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isHTML\"]($2); })"
+        js_isHTML :: TrustedTypePolicyFactory -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isHTML MDN TrustedTypePolicyFactory.isHTML documentation>
+isHTML :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m Bool
+isHTML self value = liftDOM ((js_isHTML (self) (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isHTML MDN TrustedTypePolicyFactory.isHTML documentation>
+isHTML_ :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m ()
+isHTML_ self value = liftDOM (void ((js_isHTML (self) (value))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isScript\"]($2); })"
+        js_isScript :: TrustedTypePolicyFactory -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScript MDN TrustedTypePolicyFactory.isScript documentation>
+isScript :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m Bool
+isScript self value = liftDOM ((js_isScript (self) (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScript MDN TrustedTypePolicyFactory.isScript documentation>
+isScript_ :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m ()
+isScript_ self value = liftDOM (void ((js_isScript (self) (value))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isScriptURL\"]($2); })"
+        js_isScriptURL :: TrustedTypePolicyFactory -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScriptURL MDN TrustedTypePolicyFactory.isScriptURL documentation>
+isScriptURL :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m Bool
+isScriptURL self value = liftDOM ((js_isScriptURL (self) (value)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScriptURL MDN TrustedTypePolicyFactory.isScriptURL documentation>
+isScriptURL_ :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m ()
+isScriptURL_ self value = liftDOM (void ((js_isScriptURL (self) (value))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"emptyHTML\"]; })"
+        js_getEmptyHTML :: TrustedTypePolicyFactory -> IO TrustedHTML
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/emptyHTML MDN TrustedTypePolicyFactory.emptyHTML documentation>
+getEmptyHTML :: (MonadDOM m) => TrustedTypePolicyFactory -> m TrustedHTML
+getEmptyHTML self = liftDOM ((js_getEmptyHTML (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"emptyScript\"]; })"
+        js_getEmptyScript :: TrustedTypePolicyFactory -> IO TrustedScript
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/emptyScript MDN TrustedTypePolicyFactory.emptyScript documentation>
+getEmptyScript :: (MonadDOM m) => TrustedTypePolicyFactory -> m TrustedScript
+getEmptyScript self = liftDOM ((js_getEmptyScript (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"defaultPolicy\"]; })"
+        js_getDefaultPolicy :: TrustedTypePolicyFactory -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/defaultPolicy MDN TrustedTypePolicyFactory.defaultPolicy documentation>
+getDefaultPolicy :: (MonadDOM m) => TrustedTypePolicyFactory -> m (Maybe TrustedTypePolicy)
+getDefaultPolicy self = liftDOM (((js_getDefaultPolicy (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/defaultPolicy MDN TrustedTypePolicyFactory.defaultPolicy documentation>
+getDefaultPolicyUnsafe :: (MonadDOM m, HasCallStack) => TrustedTypePolicyFactory -> m TrustedTypePolicy
+getDefaultPolicyUnsafe self = liftDOM ((((js_getDefaultPolicy (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/defaultPolicy MDN TrustedTypePolicyFactory.defaultPolicy documentation>
+getDefaultPolicyUnchecked :: (MonadDOM m) => TrustedTypePolicyFactory -> m TrustedTypePolicy
+getDefaultPolicyUnchecked self = liftDOM ((pFromJSVal <$> (js_getDefaultPolicy (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicyOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicyOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrustedTypePolicyOptions.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.TrustedTypePolicyOptions
+       (js_newTrustedTypePolicyOptions, js_setCreateHTML, js_setCreateScript, js_setCreateScriptURL, js_setCreateParserOptions, newTrustedTypePolicyOptions, setCreateHTML, setCreateScript, setCreateScriptURL, setCreateParserOptions, TrustedTypePolicyOptions(..), gTypeTrustedTypePolicyOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newTrustedTypePolicyOptions :: IO TrustedTypePolicyOptions
+-- | <https://w3c.github.io/trusted-types/dist/spec/#dictdef-trustedtypepolicyoptions TrustedTypePolicyOptions specification>
+newTrustedTypePolicyOptions :: (MonadDOM m) => m TrustedTypePolicyOptions
+newTrustedTypePolicyOptions = liftDOM ((js_newTrustedTypePolicyOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"createHTML\"] = $2; })"
+        js_setCreateHTML :: TrustedTypePolicyOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/trusted-types/dist/spec/#dom-trustedtypepolicyoptions-createhtml TrustedTypePolicyOptions.createHTML specification>
+setCreateHTML :: (MonadDOM m) => TrustedTypePolicyOptions -> CreateHTMLCallback -> m ()
+setCreateHTML self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCreateHTML (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"createScript\"] = $2; })"
+        js_setCreateScript :: TrustedTypePolicyOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/trusted-types/dist/spec/#dom-trustedtypepolicyoptions-createscript TrustedTypePolicyOptions.createScript specification>
+setCreateScript :: (MonadDOM m) => TrustedTypePolicyOptions -> CreateScriptCallback -> m ()
+setCreateScript self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCreateScript (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"createScriptURL\"] = $2; })"
+        js_setCreateScriptURL :: TrustedTypePolicyOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/trusted-types/dist/spec/#dom-trustedtypepolicyoptions-createscripturl TrustedTypePolicyOptions.createScriptURL specification>
+setCreateScriptURL :: (MonadDOM m) => TrustedTypePolicyOptions -> CreateScriptURLCallback -> m ()
+setCreateScriptURL self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCreateScriptURL (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"createParserOptions\"] = $2; })"
+        js_setCreateParserOptions :: TrustedTypePolicyOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/trusted-types/dist/spec/#dom-trustedtypepolicyoptions-createparseroptions TrustedTypePolicyOptions.createParserOptions specification>
+setCreateParserOptions :: (MonadDOM m) => TrustedTypePolicyOptions -> CreateParserOptionsCallback -> m ()
+setCreateParserOptions self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCreateParserOptions (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UIEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/UIEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/UIEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/UIEvent.hs
@@ -1,109 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.UIEvent
-       (js_newUIEvent, newUIEvent, js_initUIEvent, initUIEvent,
-        js_getView, getView, js_getDetail, getDetail, js_getLayerX,
-        getLayerX, js_getLayerY, getLayerY, js_getPageX, getPageX,
-        js_getPageY, getPageY, js_getWhich, getWhich, UIEvent(..),
-        gTypeUIEvent, IsUIEvent, toUIEvent)
+       (js_newUIEvent, js_initUIEvent, js_getView, js_getDetail, js_getWhich, newUIEvent, initUIEvent, getView, getViewUnsafe, getViewUnchecked, getDetail, getWhich, UIEvent(..), gTypeUIEvent, IsUIEvent, toUIEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return new window[\"UIEvent\"]($1, $2); })"
-        js_newUIEvent :: JSString -> Optional UIEventInit -> IO UIEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent Mozilla UIEvent documentation> 
-newUIEvent ::
-           (MonadIO m, ToJSString type', IsUIEventInit eventInitDict) =>
-             type' -> Maybe eventInitDict -> m UIEvent
-newUIEvent type' eventInitDict
-  = liftIO
-      (js_newUIEvent (toJSString type')
-         (maybeToOptional (fmap toUIEventInit eventInitDict)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initUIEvent\"]($2, $3, $4,\n$5, $6); })" js_initUIEvent ::
-        UIEvent ->
-          Optional JSString ->
-            Bool -> Bool -> Optional Window -> Optional Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.initUIEvent Mozilla UIEvent.initUIEvent documentation> 
-initUIEvent ::
-            (MonadIO m, IsUIEvent self, ToJSString type') =>
-              self ->
-                Maybe type' -> Bool -> Bool -> Maybe Window -> Maybe Int -> m ()
-initUIEvent self type' canBubble cancelable view detail
-  = liftIO
-      (js_initUIEvent (toUIEvent self) (toOptionalJSString type')
-         canBubble
-         cancelable
-         (maybeToOptional view)
-         (maybeToOptional detail))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })" js_getView ::
-        UIEvent -> IO Window
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.view Mozilla UIEvent.view documentation> 
-getView :: (MonadIO m, IsUIEvent self) => self -> m Window
-getView self = liftIO (js_getView (toUIEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })" js_getDetail ::
-        UIEvent -> IO Int
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"UIEvent\"]($1, $2); })"
+        js_newUIEvent :: JSString -> JSVal -> IO UIEvent
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/UIEvent MDN UIEvent. documentation>
+newUIEvent :: (MonadDOM m, ToJSString type', IsUIEventInit eventInitDict) => type' -> Maybe eventInitDict -> m UIEvent
+newUIEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newUIEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.detail Mozilla UIEvent.detail documentation> 
-getDetail :: (MonadIO m, IsUIEvent self) => self -> m Int
-getDetail self = liftIO (js_getDetail (toUIEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"layerX\"]; })" js_getLayerX ::
-        UIEvent -> IO Int
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"initUIEvent\"]($2, $3, $4, $5, $6); })"
+        js_initUIEvent :: UIEvent -> JSString -> JSVal -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/initUIEvent MDN UIEvent.initUIEvent documentation>
+initUIEvent :: (MonadDOM m, IsUIEvent self, ToJSString typeArg) => self -> typeArg -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe Int -> m ()
+initUIEvent self typeArg bubblesArg cancelableArg viewArg detailArg = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal bubblesArg) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal cancelableArg) >>= \a4' -> (toJSVal viewArg) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal detailArg) >>= \a6' -> js_initUIEvent ((Types.toUIEvent self)) (toJSString typeArg) a3' a4' a5' a6')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerX Mozilla UIEvent.layerX documentation> 
-getLayerX :: (MonadIO m, IsUIEvent self) => self -> m Int
-getLayerX self = liftIO (js_getLayerX (toUIEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"layerY\"]; })" js_getLayerY ::
-        UIEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })"
+        js_getView :: UIEvent -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/view MDN UIEvent.view documentation>
+getView :: (MonadDOM m, IsUIEvent self) => self -> m (Maybe Window)
+getView self = liftDOM (((js_getView ((Types.toUIEvent self))) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerY Mozilla UIEvent.layerY documentation> 
-getLayerY :: (MonadIO m, IsUIEvent self) => self -> m Int
-getLayerY self = liftIO (js_getLayerY (toUIEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pageX\"]; })" js_getPageX ::
-        UIEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/view MDN UIEvent.view documentation>
+getViewUnsafe :: (MonadDOM m, IsUIEvent self, HasCallStack) => self -> m Window
+getViewUnsafe self = liftDOM ((((js_getView ((Types.toUIEvent self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.pageX Mozilla UIEvent.pageX documentation> 
-getPageX :: (MonadIO m, IsUIEvent self) => self -> m Int
-getPageX self = liftIO (js_getPageX (toUIEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pageY\"]; })" js_getPageY ::
-        UIEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/view MDN UIEvent.view documentation>
+getViewUnchecked :: (MonadDOM m, IsUIEvent self) => self -> m Window
+getViewUnchecked self = liftDOM ((pFromJSVal <$> (js_getView ((Types.toUIEvent self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.pageY Mozilla UIEvent.pageY documentation> 
-getPageY :: (MonadIO m, IsUIEvent self) => self -> m Int
-getPageY self = liftIO (js_getPageY (toUIEvent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"which\"]; })" js_getWhich ::
-        UIEvent -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: UIEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/detail MDN UIEvent.detail documentation>
+getDetail :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getDetail self = liftDOM ((js_getDetail ((Types.toUIEvent self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.which Mozilla UIEvent.which documentation> 
-getWhich :: (MonadIO m, IsUIEvent self) => self -> m Int
-getWhich self = liftIO (js_getWhich (toUIEvent self))
+foreign import javascript unsafe "(($1) => { return $1[\"which\"]; })"
+        js_getWhich :: UIEvent -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/which MDN UIEvent.which documentation>
+getWhich :: (MonadDOM m, IsUIEvent self) => self -> m Word
+getWhich self = liftDOM ((js_getWhich ((Types.toUIEvent self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UIEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/UIEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/UIEventInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.UIEventInit
+       (js_newUIEventInit, js_setView, js_getView, js_setDetail, js_getDetail, js_setSourceCapabilities, js_getSourceCapabilities, js_setWhich, js_getWhich, newUIEventInit, setView, getView, getViewUnsafe, getViewUnchecked, setDetail, getDetail, getDetailUnsafe, getDetailUnchecked, setSourceCapabilities, getSourceCapabilities, getSourceCapabilitiesUnsafe, getSourceCapabilitiesUnchecked, setWhich, getWhich, getWhichUnsafe, getWhichUnchecked, UIEventInit(..), gTypeUIEventInit, IsUIEventInit, toUIEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newUIEventInit :: IO UIEventInit
+-- | <https://w3c.github.io/uievents/#dictdef-uieventinit UIEventInit specification>
+newUIEventInit :: (MonadDOM m) => m UIEventInit
+newUIEventInit = liftDOM ((js_newUIEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"view\"] = $2; })"
+        js_setView :: UIEventInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-view UIEventInit.view specification>
+setView :: (MonadDOM m, IsUIEventInit self) => self -> Maybe Window -> m ()
+setView self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setView ((Types.toUIEventInit self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })"
+        js_getView :: UIEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-view UIEventInit.view specification>
+getView :: (MonadDOM m, IsUIEventInit self) => self -> m (Maybe Window)
+getView self = liftDOM (((js_getView ((Types.toUIEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-view UIEventInit.view specification>
+getViewUnsafe :: (MonadDOM m, IsUIEventInit self, HasCallStack) => self -> m Window
+getViewUnsafe self = liftDOM ((((js_getView ((Types.toUIEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-view UIEventInit.view specification>
+getViewUnchecked :: (MonadDOM m, IsUIEventInit self) => self -> m Window
+getViewUnchecked self = liftDOM ((pFromJSVal <$> (js_getView ((Types.toUIEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"detail\"] = $2; })"
+        js_setDetail :: UIEventInit -> Int -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-detail UIEventInit.detail specification>
+setDetail :: (MonadDOM m, IsUIEventInit self) => self -> Int -> m ()
+setDetail self val = liftDOM (void ((js_setDetail ((Types.toUIEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })"
+        js_getDetail :: UIEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-detail UIEventInit.detail specification>
+getDetail :: (MonadDOM m, IsUIEventInit self) => self -> m (Maybe Int)
+getDetail self = liftDOM (((js_getDetail ((Types.toUIEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-detail UIEventInit.detail specification>
+getDetailUnsafe :: (MonadDOM m, IsUIEventInit self, HasCallStack) => self -> m Int
+getDetailUnsafe self = liftDOM ((((js_getDetail ((Types.toUIEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-detail UIEventInit.detail specification>
+getDetailUnchecked :: (MonadDOM m, IsUIEventInit self) => self -> m Int
+getDetailUnchecked self = liftDOM ((pFromJSVal <$> (js_getDetail ((Types.toUIEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sourceCapabilities\"] = $2; })"
+        js_setSourceCapabilities :: UIEventInit -> JSVal -> IO ()
+-- | <https://wicg.github.io/input-device-capabilities/#dom-uieventinit-sourcecapabilities UIEventInit.sourceCapabilities specification>
+setSourceCapabilities :: (MonadDOM m, IsUIEventInit self) => self -> Maybe InputDeviceCapabilities -> m ()
+setSourceCapabilities self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSourceCapabilities ((Types.toUIEventInit self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sourceCapabilities\"]; })"
+        js_getSourceCapabilities :: UIEventInit -> IO JSVal
+-- | <https://wicg.github.io/input-device-capabilities/#dom-uieventinit-sourcecapabilities UIEventInit.sourceCapabilities specification>
+getSourceCapabilities :: (MonadDOM m, IsUIEventInit self) => self -> m (Maybe InputDeviceCapabilities)
+getSourceCapabilities self = liftDOM (((js_getSourceCapabilities ((Types.toUIEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/input-device-capabilities/#dom-uieventinit-sourcecapabilities UIEventInit.sourceCapabilities specification>
+getSourceCapabilitiesUnsafe :: (MonadDOM m, IsUIEventInit self, HasCallStack) => self -> m InputDeviceCapabilities
+getSourceCapabilitiesUnsafe self = liftDOM ((((js_getSourceCapabilities ((Types.toUIEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/input-device-capabilities/#dom-uieventinit-sourcecapabilities UIEventInit.sourceCapabilities specification>
+getSourceCapabilitiesUnchecked :: (MonadDOM m, IsUIEventInit self) => self -> m InputDeviceCapabilities
+getSourceCapabilitiesUnchecked self = liftDOM ((pFromJSVal <$> (js_getSourceCapabilities ((Types.toUIEventInit self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"which\"] = $2; })"
+        js_setWhich :: UIEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-which UIEventInit.which specification>
+setWhich :: (MonadDOM m, IsUIEventInit self) => self -> Word -> m ()
+setWhich self val = liftDOM (void ((js_setWhich ((Types.toUIEventInit self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"which\"]; })"
+        js_getWhich :: UIEventInit -> IO JSVal
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-which UIEventInit.which specification>
+getWhich :: (MonadDOM m, IsUIEventInit self) => self -> m (Maybe Word)
+getWhich self = liftDOM (((js_getWhich ((Types.toUIEventInit self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-which UIEventInit.which specification>
+getWhichUnsafe :: (MonadDOM m, IsUIEventInit self, HasCallStack) => self -> m Word
+getWhichUnsafe self = liftDOM ((((js_getWhich ((Types.toUIEventInit self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-which UIEventInit.which specification>
+getWhichUnchecked :: (MonadDOM m, IsUIEventInit self) => self -> m Word
+getWhichUnchecked self = liftDOM ((pFromJSVal <$> (js_getWhich ((Types.toUIEventInit self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ULongRange.hs b/src/GHCJS/DOM/JSFFI/Generated/ULongRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ULongRange.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ULongRange
+       (js_newULongRange, js_setMax, js_getMax, js_setMin, js_getMin, newULongRange, setMax, getMax, getMaxUnsafe, getMaxUnchecked, setMin, getMin, getMinUnsafe, getMinUnchecked, ULongRange(..), gTypeULongRange, IsULongRange, toULongRange)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newULongRange :: IO ULongRange
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange ULongRange specification>
+newULongRange :: (MonadDOM m) => m ULongRange
+newULongRange = liftDOM ((js_newULongRange))
+
+foreign import javascript safe "(($1, $2) => { $1[\"max\"] = $2; })"
+        js_setMax :: ULongRange -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-max ULongRange.max specification>
+setMax :: (MonadDOM m, IsULongRange self) => self -> Word -> m ()
+setMax self val = liftDOM (void ((js_setMax ((Types.toULongRange self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })"
+        js_getMax :: ULongRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-max ULongRange.max specification>
+getMax :: (MonadDOM m, IsULongRange self) => self -> m (Maybe Word)
+getMax self = liftDOM (((js_getMax ((Types.toULongRange self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-max ULongRange.max specification>
+getMaxUnsafe :: (MonadDOM m, IsULongRange self, HasCallStack) => self -> m Word
+getMaxUnsafe self = liftDOM ((((js_getMax ((Types.toULongRange self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-max ULongRange.max specification>
+getMaxUnchecked :: (MonadDOM m, IsULongRange self) => self -> m Word
+getMaxUnchecked self = liftDOM ((pFromJSVal <$> (js_getMax ((Types.toULongRange self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"min\"] = $2; })"
+        js_setMin :: ULongRange -> Word -> IO ()
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-min ULongRange.min specification>
+setMin :: (MonadDOM m, IsULongRange self) => self -> Word -> m ()
+setMin self val = liftDOM (void ((js_setMin ((Types.toULongRange self)) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })"
+        js_getMin :: ULongRange -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-min ULongRange.min specification>
+getMin :: (MonadDOM m, IsULongRange self) => self -> m (Maybe Word)
+getMin self = liftDOM (((js_getMin ((Types.toULongRange self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-min ULongRange.min specification>
+getMinUnsafe :: (MonadDOM m, IsULongRange self, HasCallStack) => self -> m Word
+getMinUnsafe self = liftDOM ((((js_getMin ((Types.toULongRange self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-min ULongRange.min specification>
+getMinUnchecked :: (MonadDOM m, IsULongRange self) => self -> m Word
+getMinUnchecked self = liftDOM ((pFromJSVal <$> (js_getMin ((Types.toULongRange self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URL.hs b/src/GHCJS/DOM/JSFFI/Generated/URL.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/URL.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/URL.hs
@@ -1,271 +1,215 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from url (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.URL
-       (js_newURL, newURL, js_newURL', newURL', js_newURL'', newURL'',
-        js_toJSON, toJSON, toJSON_, js_createObjectURL, createObjectURL,
-        createObjectURL_, js_revokeObjectURL, revokeObjectURL,
-        js_createObjectURLSource, createObjectURLSource,
-        createObjectURLSource_, js_setHref, setHref, js_getHref, getHref,
-        js_getOrigin, getOrigin, js_setProtocol, setProtocol,
-        js_getProtocol, getProtocol, js_setUsername, setUsername,
-        js_getUsername, getUsername, js_setPassword, setPassword,
-        js_getPassword, getPassword, js_setHost, setHost, js_getHost,
-        getHost, js_setHostname, setHostname, js_getHostname, getHostname,
-        js_setPort, setPort, js_getPort, getPort, js_setPathname,
-        setPathname, js_getPathname, getPathname, js_setHash, setHash,
-        js_getHash, getHash, js_setSearch, setSearch, js_getSearch,
-        getSearch, js_getSearchParams, getSearchParams, URL(..), gTypeURL)
+       (js_newURL, js_newURL', js_toJSON, js_canParse, js_createObjectURL, js_parse, js_revokeObjectURL, js_setHref, js_getHref, js_getOrigin, js_setProtocol, js_getProtocol, js_setUsername, js_getUsername, js_setPassword, js_getPassword, js_setHost, js_getHost, js_setHostname, js_getHostname, js_setPort, js_getPort, js_setPathname, js_getPathname, js_setSearch, js_getSearch, js_getSearchParams, js_setHash, js_getHash, newURL, newURL', toJSON, toJSON_, canParse, canParse_, createObjectURL, createObjectURL_, parse, parse_, parseUnsafe, parseUnchecked, revokeObjectURL, setHref, getHref, getOrigin, setProtocol, getProtocol, setUsername, getUsername, setPassword, getPassword, setHost, getHost, setHostname, getHostname, setPort, getPort, setPathname, getPathname, setSearch, getSearch, getSearchParams, setHash, getHash, URL(..), gTypeURL)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1) => { return new window[\"URL\"]($1); })" js_newURL
-        :: JSString -> IO URL
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
-newURL :: (MonadIO m, ToJSString url) => url -> m URL
-newURL url = liftIO (js_newURL (toJSString url))
- 
-foreign import javascript safe "(($1, $2) => { return new window[\"URL\"]($1, $2); })"
-        js_newURL' :: JSString -> JSString -> IO URL
+foreign import javascript safe "(($1) => { return new globalThis[\"URL\"]($1); })"
+        js_newURL :: JSString -> IO URL
+-- | <https://developer.mozilla.org/docs/Web/API/URL/URL MDN URL. documentation>
+newURL :: (MonadDOM m, ToJSString url) => url -> m URL
+newURL url = liftDOM ((js_newURL (toJSString url)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
-newURL' ::
-        (MonadIO m, ToJSString url, ToJSString base) =>
-          url -> base -> m URL
-newURL' url base
-  = liftIO (js_newURL' (toJSString url) (toJSString base))
- 
-foreign import javascript safe "(($1, $2) => { return new window[\"URL\"]($1, $2); })"
-        js_newURL'' :: JSString -> URL -> IO URL
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"URL\"]($1, $2); })"
+        js_newURL' :: JSString -> (Optional JSString) -> IO URL
+-- | <https://developer.mozilla.org/docs/Web/API/URL/URL MDN URL. documentation>
+newURL' :: (MonadDOM m, ToJSString url, ToJSString base) => url -> Maybe base -> m URL
+newURL' url base = liftDOM ((js_newURL' (toJSString url) (toOptionalJSString base)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
-newURL'' :: (MonadIO m, ToJSString url) => url -> URL -> m URL
-newURL'' url base = liftIO (js_newURL'' (toJSString url) base)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toJSON\"](); })" js_toJSON ::
-        URL -> IO JSString
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/toJSON MDN URL.toJSON documentation>
+toJSON :: (MonadDOM m, FromJSString result) => URL -> m result
+toJSON self = liftDOM ((fromJSString <$> (js_toJSON (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.toJSON Mozilla URL.toJSON documentation> 
-toJSON :: (MonadIO m, FromJSString result) => URL -> m result
-toJSON self = liftIO (fromJSString <$> (js_toJSON self))
+-- | <https://developer.mozilla.org/docs/Web/API/URL/toJSON MDN URL.toJSON documentation>
+toJSON_ :: (MonadDOM m) => URL -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.toJSON Mozilla URL.toJSON documentation> 
-toJSON_ :: (MonadIO m) => URL -> m ()
-toJSON_ self = liftIO (void (js_toJSON self))
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"URL\"][\"createObjectURL\"]($1); })" js_createObjectURL ::
-        Blob -> IO JSString
+foreign import javascript safe "(($1, $2) => { return globalThis[\"URL\"][\"canParse\"]($1, $2); })"
+        js_canParse :: JSString -> (Optional JSString) -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/URL/canParse_static MDN URL.canParse documentation>
+canParse :: (MonadDOM m, ToJSString url, ToJSString base) => url -> Maybe base -> m Bool
+canParse url base = liftDOM ((js_canParse (toJSString url) (toOptionalJSString base)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURL ::
-                (MonadIO m, IsBlob blob, FromJSString result) => blob -> m result
-createObjectURL blob
-  = liftIO (fromJSString <$> (js_createObjectURL (toBlob blob)))
+-- | <https://developer.mozilla.org/docs/Web/API/URL/canParse_static MDN URL.canParse documentation>
+canParse_ :: (MonadDOM m, ToJSString url, ToJSString base) => url -> Maybe base -> m ()
+canParse_ url base = liftDOM (void ((js_canParse (toJSString url) (toOptionalJSString base))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURL_ :: (MonadIO m, IsBlob blob) => blob -> m ()
-createObjectURL_ blob
-  = liftIO (void (js_createObjectURL (toBlob blob)))
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"URL\"][\"revokeObjectURL\"]($1); })" js_revokeObjectURL ::
-        JSString -> IO ()
+foreign import javascript safe "(($1) => { return globalThis[\"URL\"][\"createObjectURL\"]($1); })"
+        js_createObjectURL :: BlobOrMediaSource -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/createObjectURL_static MDN URL.createObjectURL documentation>
+createObjectURL :: (MonadDOM m, IsBlobOrMediaSource obj, FromJSString result) => obj -> m result
+createObjectURL obj = liftDOM ((fromJSString <$> (js_createObjectURL (Types.toBlobOrMediaSource obj))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL Mozilla URL.revokeObjectURL documentation> 
-revokeObjectURL :: (MonadIO m, ToJSString url) => url -> m ()
-revokeObjectURL url = liftIO (js_revokeObjectURL (toJSString url))
- 
-foreign import javascript unsafe
-        "(($1) => { return window[\"URL\"][\"createObjectURL\"]($1); })" js_createObjectURLSource
-        :: MediaSource -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/createObjectURL_static MDN URL.createObjectURL documentation>
+createObjectURL_ :: (MonadDOM m, IsBlobOrMediaSource obj) => obj -> m ()
+createObjectURL_ obj = liftDOM (void ((js_createObjectURL (Types.toBlobOrMediaSource obj))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURLSource ::
-                      (MonadIO m, FromJSString result) => MediaSource -> m result
-createObjectURLSource source
-  = liftIO (fromJSString <$> (js_createObjectURLSource source))
+foreign import javascript safe "(($1, $2) => { return globalThis[\"URL\"][\"parse\"]($1, $2); })"
+        js_parse :: JSString -> (Optional JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/URL/parse_static MDN URL.parse documentation>
+parse :: (MonadDOM m, ToJSString url, ToJSString base) => url -> Maybe base -> m (Maybe URL)
+parse url base = liftDOM (((js_parse (toJSString url) (toOptionalJSString base)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURLSource_ :: (MonadIO m) => MediaSource -> m ()
-createObjectURLSource_ source
-  = liftIO (void (js_createObjectURLSource source))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
-        URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/parse_static MDN URL.parse documentation>
+parse_ :: (MonadDOM m, ToJSString url, ToJSString base) => url -> Maybe base -> m ()
+parse_ url base = liftDOM (void ((js_parse (toJSString url) (toOptionalJSString base))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
-setHref :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setHref self val = liftIO (js_setHref self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/parse_static MDN URL.parse documentation>
+parseUnsafe :: (MonadDOM m, ToJSString url, ToJSString base, HasCallStack) => url -> Maybe base -> m URL
+parseUnsafe url base = liftDOM ((((js_parse (toJSString url) (toOptionalJSString base)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
-getHref :: (MonadIO m, FromJSString result) => URL -> m result
-getHref self = liftIO (fromJSString <$> (js_getHref self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
-        URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/parse_static MDN URL.parse documentation>
+parseUnchecked :: (MonadDOM m, ToJSString url, ToJSString base) => url -> Maybe base -> m URL
+parseUnchecked url base = liftDOM ((pFromJSVal <$> (js_parse (toJSString url) (toOptionalJSString base))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.origin Mozilla URL.origin documentation> 
-getOrigin :: (MonadIO m, FromJSString result) => URL -> m result
-getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+foreign import javascript safe "(($1) => { return globalThis[\"URL\"][\"revokeObjectURL\"]($1); })"
+        js_revokeObjectURL :: JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL_static MDN URL.revokeObjectURL documentation>
+revokeObjectURL :: (MonadDOM m, ToJSString url) => url -> m ()
+revokeObjectURL url = liftDOM (void ((js_revokeObjectURL (toJSString url))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"href\"] = $2; })"
+        js_setHref :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/href MDN URL.href documentation>
+setHref :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setHref self val = liftDOM (void ((js_setHref (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/href MDN URL.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => URL -> m result
+getHref self = liftDOM ((fromJSString <$> (js_getHref (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/origin MDN URL.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => URL -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
         js_setProtocol :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/protocol MDN URL.protocol documentation>
+setProtocol :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.protocol Mozilla URL.protocol documentation> 
-setProtocol :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setProtocol self val
-  = liftIO (js_setProtocol self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
-        :: URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/protocol MDN URL.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => URL -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.protocol Mozilla URL.protocol documentation> 
-getProtocol :: (MonadIO m, FromJSString result) => URL -> m result
-getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"username\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"username\"] = $2; })"
         js_setUsername :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/username MDN URL.username documentation>
+setUsername :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setUsername self val = liftDOM (void ((js_setUsername (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.username Mozilla URL.username documentation> 
-setUsername :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setUsername self val
-  = liftIO (js_setUsername self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })" js_getUsername
-        :: URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })"
+        js_getUsername :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/username MDN URL.username documentation>
+getUsername :: (MonadDOM m, FromJSString result) => URL -> m result
+getUsername self = liftDOM ((fromJSString <$> (js_getUsername (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.username Mozilla URL.username documentation> 
-getUsername :: (MonadIO m, FromJSString result) => URL -> m result
-getUsername self = liftIO (fromJSString <$> (js_getUsername self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"password\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"password\"] = $2; })"
         js_setPassword :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/password MDN URL.password documentation>
+setPassword :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setPassword self val = liftDOM (void ((js_setPassword (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.password Mozilla URL.password documentation> 
-setPassword :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setPassword self val
-  = liftIO (js_setPassword self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })" js_getPassword
-        :: URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/password MDN URL.password documentation>
+getPassword :: (MonadDOM m, FromJSString result) => URL -> m result
+getPassword self = liftDOM ((fromJSString <$> (js_getPassword (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.password Mozilla URL.password documentation> 
-getPassword :: (MonadIO m, FromJSString result) => URL -> m result
-getPassword self = liftIO (fromJSString <$> (js_getPassword self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"host\"] = $2; })" js_setHost ::
-        URL -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"host\"] = $2; })"
+        js_setHost :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/host MDN URL.host documentation>
+setHost :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setHost self val = liftDOM (void ((js_setHost (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.host Mozilla URL.host documentation> 
-setHost :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setHost self val = liftIO (js_setHost self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
-        URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })"
+        js_getHost :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/host MDN URL.host documentation>
+getHost :: (MonadDOM m, FromJSString result) => URL -> m result
+getHost self = liftDOM ((fromJSString <$> (js_getHost (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.host Mozilla URL.host documentation> 
-getHost :: (MonadIO m, FromJSString result) => URL -> m result
-getHost self = liftIO (fromJSString <$> (js_getHost self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"hostname\"] = $2; })"
         js_setHostname :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/hostname MDN URL.hostname documentation>
+setHostname :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setHostname self val = liftDOM (void ((js_setHostname (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hostname Mozilla URL.hostname documentation> 
-setHostname :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setHostname self val
-  = liftIO (js_setHostname self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
-        :: URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })"
+        js_getHostname :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/hostname MDN URL.hostname documentation>
+getHostname :: (MonadDOM m, FromJSString result) => URL -> m result
+getHostname self = liftDOM ((fromJSString <$> (js_getHostname (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hostname Mozilla URL.hostname documentation> 
-getHostname :: (MonadIO m, FromJSString result) => URL -> m result
-getHostname self = liftIO (fromJSString <$> (js_getHostname self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"port\"] = $2; })" js_setPort ::
-        URL -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"port\"] = $2; })"
+        js_setPort :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/port MDN URL.port documentation>
+setPort :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setPort self val = liftDOM (void ((js_setPort (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.port Mozilla URL.port documentation> 
-setPort :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setPort self val = liftIO (js_setPort self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
-        URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/port MDN URL.port documentation>
+getPort :: (MonadDOM m, FromJSString result) => URL -> m result
+getPort self = liftDOM ((fromJSString <$> (js_getPort (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.port Mozilla URL.port documentation> 
-getPort :: (MonadIO m, FromJSString result) => URL -> m result
-getPort self = liftIO (fromJSString <$> (js_getPort self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"pathname\"] = $2; })"
         js_setPathname :: URL -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.pathname Mozilla URL.pathname documentation> 
-setPathname :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setPathname self val
-  = liftIO (js_setPathname self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
-        :: URL -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.pathname Mozilla URL.pathname documentation> 
-getPathname :: (MonadIO m, FromJSString result) => URL -> m result
-getPathname self = liftIO (fromJSString <$> (js_getPathname self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"hash\"] = $2; })" js_setHash ::
-        URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/pathname MDN URL.pathname documentation>
+setPathname :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setPathname self val = liftDOM (void ((js_setPathname (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hash Mozilla URL.hash documentation> 
-setHash :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setHash self val = liftIO (js_setHash self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
-        URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })"
+        js_getPathname :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/pathname MDN URL.pathname documentation>
+getPathname :: (MonadDOM m, FromJSString result) => URL -> m result
+getPathname self = liftDOM ((fromJSString <$> (js_getPathname (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hash Mozilla URL.hash documentation> 
-getHash :: (MonadIO m, FromJSString result) => URL -> m result
-getHash self = liftIO (fromJSString <$> (js_getHash self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"search\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"search\"] = $2; })"
         js_setSearch :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/search MDN URL.search documentation>
+setSearch :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setSearch self val = liftDOM (void ((js_setSearch (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.search Mozilla URL.search documentation> 
-setSearch :: (MonadIO m, ToJSString val) => URL -> val -> m ()
-setSearch self val = liftIO (js_setSearch self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
-        URL -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })"
+        js_getSearch :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/search MDN URL.search documentation>
+getSearch :: (MonadDOM m, FromJSString result) => URL -> m result
+getSearch self = liftDOM ((fromJSString <$> (js_getSearch (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.search Mozilla URL.search documentation> 
-getSearch :: (MonadIO m, FromJSString result) => URL -> m result
-getSearch self = liftIO (fromJSString <$> (js_getSearch self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"searchParams\"]; })"
         js_getSearchParams :: URL -> IO URLSearchParams
+-- | <https://developer.mozilla.org/docs/Web/API/URL/searchParams MDN URL.searchParams documentation>
+getSearchParams :: (MonadDOM m) => URL -> m URLSearchParams
+getSearchParams self = liftDOM ((js_getSearchParams (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.searchParams Mozilla URL.searchParams documentation> 
-getSearchParams :: (MonadIO m) => URL -> m URLSearchParams
-getSearchParams self = liftIO (js_getSearchParams self)
+foreign import javascript safe "(($1, $2) => { $1[\"hash\"] = $2; })"
+        js_setHash :: URL -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URL/hash MDN URL.hash documentation>
+setHash :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
+setHash self val = liftDOM (void ((js_setHash (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })"
+        js_getHash :: URL -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URL/hash MDN URL.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => URL -> m result
+getHash self = liftDOM ((fromJSString <$> (js_getHash (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLPattern.hs b/src/GHCJS/DOM/JSFFI/Generated/URLPattern.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLPattern.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.URLPattern
+       (js_newURLPattern, js_newURLPattern', js_exec, js_test, js_getProtocol, js_getUsername, js_getPassword, js_getHostname, js_getPort, js_getPathname, js_getSearch, js_getHash, js_getHasRegExpGroups, newURLPattern, newURLPattern', exec, exec_, execUnsafe, execUnchecked, test, test_, getProtocol, getUsername, getPassword, getHostname, getPort, getPathname, getSearch, getHash, getHasRegExpGroups, URLPattern(..), gTypeURLPattern)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"URLPattern\"]($1, $2, $3); })"
+        js_newURLPattern :: URLPatternInput -> JSString -> JSVal -> IO URLPattern
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/URLPattern MDN URLPattern. documentation>
+newURLPattern :: (MonadDOM m, IsURLPatternInput input, ToJSString baseURL) => input -> baseURL -> Maybe URLPatternOptions -> m URLPattern
+newURLPattern input baseURL options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_newURLPattern (Types.toURLPatternInput input) (toJSString baseURL) a3'))
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"URLPattern\"]($1, $2); })"
+        js_newURLPattern' :: JSVal -> JSVal -> IO URLPattern
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/URLPattern MDN URLPattern. documentation>
+newURLPattern' :: (MonadDOM m, IsURLPatternInput input) => Maybe input -> Maybe URLPatternOptions -> m URLPattern
+newURLPattern' input options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal input) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newURLPattern' a1' a2'))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"exec\"]($2, $3); })"
+        js_exec :: URLPattern -> JSVal -> (Optional JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/exec MDN URLPattern.exec documentation>
+exec :: (MonadDOM m, IsURLPatternInput input, ToJSString baseURL) => URLPattern -> Maybe input -> Maybe baseURL -> m (Maybe URLPatternResult)
+exec self input baseURL = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> js_exec (self) a2' (toOptionalJSString baseURL)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/exec MDN URLPattern.exec documentation>
+exec_ :: (MonadDOM m, IsURLPatternInput input, ToJSString baseURL) => URLPattern -> Maybe input -> Maybe baseURL -> m ()
+exec_ self input baseURL = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> js_exec (self) a2' (toOptionalJSString baseURL))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/exec MDN URLPattern.exec documentation>
+execUnsafe :: (MonadDOM m, IsURLPatternInput input, ToJSString baseURL, HasCallStack) => URLPattern -> Maybe input -> Maybe baseURL -> m URLPatternResult
+execUnsafe self input baseURL = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> js_exec (self) a2' (toOptionalJSString baseURL)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/exec MDN URLPattern.exec documentation>
+execUnchecked :: (MonadDOM m, IsURLPatternInput input, ToJSString baseURL) => URLPattern -> Maybe input -> Maybe baseURL -> m URLPatternResult
+execUnchecked self input baseURL = liftDOM ((pFromJSVal <$> ((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> js_exec (self) a2' (toOptionalJSString baseURL))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"test\"]($2, $3); })"
+        js_test :: URLPattern -> JSVal -> (Optional JSString) -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/test MDN URLPattern.test documentation>
+test :: (MonadDOM m, IsURLPatternInput input, ToJSString baseURL) => URLPattern -> Maybe input -> Maybe baseURL -> m Bool
+test self input baseURL = liftDOM (((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> js_test (self) a2' (toOptionalJSString baseURL)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/test MDN URLPattern.test documentation>
+test_ :: (MonadDOM m, IsURLPatternInput input, ToJSString baseURL) => URLPattern -> Maybe input -> Maybe baseURL -> m ()
+test_ self input baseURL = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal input) >>= \a2' -> js_test (self) a2' (toOptionalJSString baseURL))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/protocol MDN URLPattern.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })"
+        js_getUsername :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/username MDN URLPattern.username documentation>
+getUsername :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getUsername self = liftDOM ((fromJSString <$> (js_getUsername (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/password MDN URLPattern.password documentation>
+getPassword :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getPassword self = liftDOM ((fromJSString <$> (js_getPassword (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })"
+        js_getHostname :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/hostname MDN URLPattern.hostname documentation>
+getHostname :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getHostname self = liftDOM ((fromJSString <$> (js_getHostname (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/port MDN URLPattern.port documentation>
+getPort :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getPort self = liftDOM ((fromJSString <$> (js_getPort (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })"
+        js_getPathname :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/pathname MDN URLPattern.pathname documentation>
+getPathname :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getPathname self = liftDOM ((fromJSString <$> (js_getPathname (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })"
+        js_getSearch :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/search MDN URLPattern.search documentation>
+getSearch :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getSearch self = liftDOM ((fromJSString <$> (js_getSearch (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })"
+        js_getHash :: URLPattern -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/hash MDN URLPattern.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getHash self = liftDOM ((fromJSString <$> (js_getHash (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasRegExpGroups\"]; })"
+        js_getHasRegExpGroups :: URLPattern -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/hasRegExpGroups MDN URLPattern.hasRegExpGroups documentation>
+getHasRegExpGroups :: (MonadDOM m) => URLPattern -> m Bool
+getHasRegExpGroups self = liftDOM ((js_getHasRegExpGroups (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLPatternComponentResult.hs b/src/GHCJS/DOM/JSFFI/Generated/URLPatternComponentResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLPatternComponentResult.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.URLPatternComponentResult
+       (js_newURLPatternComponentResult, js_setInput, js_getInput, js_setGroups, js_getGroups, newURLPatternComponentResult, setInput, getInput, getInputUnsafe, getInputUnchecked, setGroups, getGroups, getGroupsUnsafe, getGroupsUnchecked, URLPatternComponentResult(..), gTypeURLPatternComponentResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newURLPatternComponentResult :: IO URLPatternComponentResult
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatterncomponentresult URLPatternComponentResult specification>
+newURLPatternComponentResult :: (MonadDOM m) => m URLPatternComponentResult
+newURLPatternComponentResult = liftDOM ((js_newURLPatternComponentResult))
+
+foreign import javascript safe "(($1, $2) => { $1[\"input\"] = $2; })"
+        js_setInput :: URLPatternComponentResult -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-input URLPatternComponentResult.input specification>
+setInput :: (MonadDOM m, ToJSString val) => URLPatternComponentResult -> val -> m ()
+setInput self val = liftDOM (void ((js_setInput (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"input\"]; })"
+        js_getInput :: URLPatternComponentResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-input URLPatternComponentResult.input specification>
+getInput :: (MonadDOM m, FromJSString result) => URLPatternComponentResult -> m (Maybe result)
+getInput self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getInput (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-input URLPatternComponentResult.input specification>
+getInputUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternComponentResult -> m result
+getInputUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getInput (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-input URLPatternComponentResult.input specification>
+getInputUnchecked :: (MonadDOM m, FromJSString result) => URLPatternComponentResult -> m result
+getInputUnchecked self = liftDOM ((pFromJSVal <$> (js_getInput (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"groups\"] = $2; })"
+        js_setGroups :: URLPatternComponentResult -> JSVal -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-groups URLPatternComponentResult.groups specification>
+setGroups :: (MonadDOM m) => URLPatternComponentResult -> (Record JSString JSVal) -> m ()
+setGroups self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setGroups (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"groups\"]; })"
+        js_getGroups :: URLPatternComponentResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-groups URLPatternComponentResult.groups specification>
+getGroups :: (MonadDOM m) => URLPatternComponentResult -> m (Maybe (Record JSString JSVal))
+getGroups self = liftDOM (((js_getGroups (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-groups URLPatternComponentResult.groups specification>
+getGroupsUnsafe :: (MonadDOM m, HasCallStack) => URLPatternComponentResult -> m (Record JSString JSVal)
+getGroupsUnsafe self = liftDOM ((((js_getGroups (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-groups URLPatternComponentResult.groups specification>
+getGroupsUnchecked :: (MonadDOM m) => URLPatternComponentResult -> m (Record JSString JSVal)
+getGroupsUnchecked self = liftDOM ((pFromJSVal <$> (js_getGroups (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLPatternInit.hs b/src/GHCJS/DOM/JSFFI/Generated/URLPatternInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLPatternInit.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.URLPatternInit
+       (js_newURLPatternInit, js_setProtocol, js_getProtocol, js_setUsername, js_getUsername, js_setPassword, js_getPassword, js_setHostname, js_getHostname, js_setPort, js_getPort, js_setPathname, js_getPathname, js_setSearch, js_getSearch, js_setHash, js_getHash, js_setBaseURL, js_getBaseURL, newURLPatternInit, setProtocol, getProtocol, getProtocolUnsafe, getProtocolUnchecked, setUsername, getUsername, getUsernameUnsafe, getUsernameUnchecked, setPassword, getPassword, getPasswordUnsafe, getPasswordUnchecked, setHostname, getHostname, getHostnameUnsafe, getHostnameUnchecked, setPort, getPort, getPortUnsafe, getPortUnchecked, setPathname, getPathname, getPathnameUnsafe, getPathnameUnchecked, setSearch, getSearch, getSearchUnsafe, getSearchUnchecked, setHash, getHash, getHashUnsafe, getHashUnchecked, setBaseURL, getBaseURL, getBaseURLUnsafe, getBaseURLUnchecked, URLPatternInit(..), gTypeURLPatternInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newURLPatternInit :: IO URLPatternInit
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatterninit URLPatternInit specification>
+newURLPatternInit :: (MonadDOM m) => m URLPatternInit
+newURLPatternInit = liftDOM ((js_newURLPatternInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-protocol URLPatternInit.protocol specification>
+setProtocol :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-protocol URLPatternInit.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getProtocol self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getProtocol (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-protocol URLPatternInit.protocol specification>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getProtocolUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getProtocol (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-protocol URLPatternInit.protocol specification>
+getProtocolUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getProtocolUnchecked self = liftDOM ((pFromJSVal <$> (js_getProtocol (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"username\"] = $2; })"
+        js_setUsername :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-username URLPatternInit.username specification>
+setUsername :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setUsername self val = liftDOM (void ((js_setUsername (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })"
+        js_getUsername :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-username URLPatternInit.username specification>
+getUsername :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getUsername self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getUsername (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-username URLPatternInit.username specification>
+getUsernameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getUsernameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getUsername (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-username URLPatternInit.username specification>
+getUsernameUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getUsernameUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsername (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-password URLPatternInit.password specification>
+setPassword :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setPassword self val = liftDOM (void ((js_setPassword (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-password URLPatternInit.password specification>
+getPassword :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getPassword self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPassword (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-password URLPatternInit.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getPasswordUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPassword (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-password URLPatternInit.password specification>
+getPasswordUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getPasswordUnchecked self = liftDOM ((pFromJSVal <$> (js_getPassword (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+        js_setHostname :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hostname URLPatternInit.hostname specification>
+setHostname :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setHostname self val = liftDOM (void ((js_setHostname (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })"
+        js_getHostname :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hostname URLPatternInit.hostname specification>
+getHostname :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getHostname self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getHostname (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hostname URLPatternInit.hostname specification>
+getHostnameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getHostnameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getHostname (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hostname URLPatternInit.hostname specification>
+getHostnameUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getHostnameUnchecked self = liftDOM ((pFromJSVal <$> (js_getHostname (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"port\"] = $2; })"
+        js_setPort :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-port URLPatternInit.port specification>
+setPort :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setPort self val = liftDOM (void ((js_setPort (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-port URLPatternInit.port specification>
+getPort :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getPort self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPort (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-port URLPatternInit.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getPortUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPort (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-port URLPatternInit.port specification>
+getPortUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPort (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+        js_setPathname :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-pathname URLPatternInit.pathname specification>
+setPathname :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setPathname self val = liftDOM (void ((js_setPathname (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })"
+        js_getPathname :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-pathname URLPatternInit.pathname specification>
+getPathname :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getPathname self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getPathname (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-pathname URLPatternInit.pathname specification>
+getPathnameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getPathnameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getPathname (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-pathname URLPatternInit.pathname specification>
+getPathnameUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getPathnameUnchecked self = liftDOM ((pFromJSVal <$> (js_getPathname (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"search\"] = $2; })"
+        js_setSearch :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-search URLPatternInit.search specification>
+setSearch :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setSearch self val = liftDOM (void ((js_setSearch (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })"
+        js_getSearch :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-search URLPatternInit.search specification>
+getSearch :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getSearch self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getSearch (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-search URLPatternInit.search specification>
+getSearchUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getSearchUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getSearch (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-search URLPatternInit.search specification>
+getSearchUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getSearchUnchecked self = liftDOM ((pFromJSVal <$> (js_getSearch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hash\"] = $2; })"
+        js_setHash :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hash URLPatternInit.hash specification>
+setHash :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setHash self val = liftDOM (void ((js_setHash (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })"
+        js_getHash :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hash URLPatternInit.hash specification>
+getHash :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getHash self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getHash (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hash URLPatternInit.hash specification>
+getHashUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getHashUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getHash (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hash URLPatternInit.hash specification>
+getHashUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getHashUnchecked self = liftDOM ((pFromJSVal <$> (js_getHash (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"baseURL\"] = $2; })"
+        js_setBaseURL :: URLPatternInit -> JSString -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-baseurl URLPatternInit.baseURL specification>
+setBaseURL :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setBaseURL self val = liftDOM (void ((js_setBaseURL (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"baseURL\"]; })"
+        js_getBaseURL :: URLPatternInit -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-baseurl URLPatternInit.baseURL specification>
+getBaseURL :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getBaseURL self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getBaseURL (self))))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-baseurl URLPatternInit.baseURL specification>
+getBaseURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getBaseURLUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getBaseURL (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-baseurl URLPatternInit.baseURL specification>
+getBaseURLUnchecked :: (MonadDOM m, FromJSString result) => URLPatternInit -> m result
+getBaseURLUnchecked self = liftDOM ((pFromJSVal <$> (js_getBaseURL (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLPatternOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/URLPatternOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLPatternOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.URLPatternOptions
+       (js_newURLPatternOptions, js_setIgnoreCase, js_getIgnoreCase, newURLPatternOptions, setIgnoreCase, getIgnoreCase, getIgnoreCaseUnsafe, getIgnoreCaseUnchecked, URLPatternOptions(..), gTypeURLPatternOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newURLPatternOptions :: IO URLPatternOptions
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatternoptions URLPatternOptions specification>
+newURLPatternOptions :: (MonadDOM m) => m URLPatternOptions
+newURLPatternOptions = liftDOM ((js_newURLPatternOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"ignoreCase\"] = $2; })"
+        js_setIgnoreCase :: URLPatternOptions -> Bool -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternoptions-ignorecase URLPatternOptions.ignoreCase specification>
+setIgnoreCase :: (MonadDOM m) => URLPatternOptions -> Bool -> m ()
+setIgnoreCase self val = liftDOM (void ((js_setIgnoreCase (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"ignoreCase\"]; })"
+        js_getIgnoreCase :: URLPatternOptions -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternoptions-ignorecase URLPatternOptions.ignoreCase specification>
+getIgnoreCase :: (MonadDOM m) => URLPatternOptions -> m (Maybe Bool)
+getIgnoreCase self = liftDOM (((js_getIgnoreCase (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternoptions-ignorecase URLPatternOptions.ignoreCase specification>
+getIgnoreCaseUnsafe :: (MonadDOM m, HasCallStack) => URLPatternOptions -> m Bool
+getIgnoreCaseUnsafe self = liftDOM ((((js_getIgnoreCase (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternoptions-ignorecase URLPatternOptions.ignoreCase specification>
+getIgnoreCaseUnchecked :: (MonadDOM m) => URLPatternOptions -> m Bool
+getIgnoreCaseUnchecked self = liftDOM ((pFromJSVal <$> (js_getIgnoreCase (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLPatternResult.hs b/src/GHCJS/DOM/JSFFI/Generated/URLPatternResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLPatternResult.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.URLPatternResult
+       (js_newURLPatternResult, js_setInputs, js_getInputs, js_setProtocol, js_getProtocol, js_setUsername, js_getUsername, js_setPassword, js_getPassword, js_setHostname, js_getHostname, js_setPort, js_getPort, js_setPathname, js_getPathname, js_setSearch, js_getSearch, js_setHash, js_getHash, newURLPatternResult, setInputs, getInputs, getInputsUnsafe, getInputsUnchecked, setProtocol, getProtocol, getProtocolUnsafe, getProtocolUnchecked, setUsername, getUsername, getUsernameUnsafe, getUsernameUnchecked, setPassword, getPassword, getPasswordUnsafe, getPasswordUnchecked, setHostname, getHostname, getHostnameUnsafe, getHostnameUnchecked, setPort, getPort, getPortUnsafe, getPortUnchecked, setPathname, getPathname, getPathnameUnsafe, getPathnameUnchecked, setSearch, getSearch, getSearchUnsafe, getSearchUnchecked, setHash, getHash, getHashUnsafe, getHashUnchecked, URLPatternResult(..), gTypeURLPatternResult)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newURLPatternResult :: IO URLPatternResult
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatternresult URLPatternResult specification>
+newURLPatternResult :: (MonadDOM m) => m URLPatternResult
+newURLPatternResult = liftDOM ((js_newURLPatternResult))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inputs\"] = $2; })"
+        js_setInputs :: URLPatternResult -> JSVal -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-inputs URLPatternResult.inputs specification>
+setInputs :: (MonadDOM m, IsURLPatternInput val) => URLPatternResult -> [val] -> m ()
+setInputs self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setInputs (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inputs\"]; })"
+        js_getInputs :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-inputs URLPatternResult.inputs specification>
+getInputs :: (MonadDOM m) => URLPatternResult -> m (Maybe [URLPatternInput])
+getInputs self = liftDOM (((js_getInputs (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-inputs URLPatternResult.inputs specification>
+getInputsUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m [URLPatternInput]
+getInputsUnsafe self = liftDOM ((((js_getInputs (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-inputs URLPatternResult.inputs specification>
+getInputsUnchecked :: (MonadDOM m) => URLPatternResult -> m [URLPatternInput]
+getInputsUnchecked self = liftDOM (((js_getInputs (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-protocol URLPatternResult.protocol specification>
+setProtocol :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setProtocol self val = liftDOM (void ((js_setProtocol (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-protocol URLPatternResult.protocol specification>
+getProtocol :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getProtocol self = liftDOM (((js_getProtocol (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-protocol URLPatternResult.protocol specification>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getProtocolUnsafe self = liftDOM ((((js_getProtocol (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-protocol URLPatternResult.protocol specification>
+getProtocolUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getProtocolUnchecked self = liftDOM ((pFromJSVal <$> (js_getProtocol (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"username\"] = $2; })"
+        js_setUsername :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-username URLPatternResult.username specification>
+setUsername :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setUsername self val = liftDOM (void ((js_setUsername (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })"
+        js_getUsername :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-username URLPatternResult.username specification>
+getUsername :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getUsername self = liftDOM (((js_getUsername (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-username URLPatternResult.username specification>
+getUsernameUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getUsernameUnsafe self = liftDOM ((((js_getUsername (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-username URLPatternResult.username specification>
+getUsernameUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getUsernameUnchecked self = liftDOM ((pFromJSVal <$> (js_getUsername (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-password URLPatternResult.password specification>
+setPassword :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setPassword self val = liftDOM (void ((js_setPassword (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })"
+        js_getPassword :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-password URLPatternResult.password specification>
+getPassword :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getPassword self = liftDOM (((js_getPassword (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-password URLPatternResult.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getPasswordUnsafe self = liftDOM ((((js_getPassword (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-password URLPatternResult.password specification>
+getPasswordUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getPasswordUnchecked self = liftDOM ((pFromJSVal <$> (js_getPassword (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+        js_setHostname :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hostname URLPatternResult.hostname specification>
+setHostname :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setHostname self val = liftDOM (void ((js_setHostname (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })"
+        js_getHostname :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hostname URLPatternResult.hostname specification>
+getHostname :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getHostname self = liftDOM (((js_getHostname (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hostname URLPatternResult.hostname specification>
+getHostnameUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getHostnameUnsafe self = liftDOM ((((js_getHostname (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hostname URLPatternResult.hostname specification>
+getHostnameUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getHostnameUnchecked self = liftDOM ((pFromJSVal <$> (js_getHostname (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"port\"] = $2; })"
+        js_setPort :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-port URLPatternResult.port specification>
+setPort :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setPort self val = liftDOM (void ((js_setPort (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-port URLPatternResult.port specification>
+getPort :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getPort self = liftDOM (((js_getPort (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-port URLPatternResult.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getPortUnsafe self = liftDOM ((((js_getPort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-port URLPatternResult.port specification>
+getPortUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getPortUnchecked self = liftDOM ((pFromJSVal <$> (js_getPort (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+        js_setPathname :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-pathname URLPatternResult.pathname specification>
+setPathname :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setPathname self val = liftDOM (void ((js_setPathname (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })"
+        js_getPathname :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-pathname URLPatternResult.pathname specification>
+getPathname :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getPathname self = liftDOM (((js_getPathname (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-pathname URLPatternResult.pathname specification>
+getPathnameUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getPathnameUnsafe self = liftDOM ((((js_getPathname (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-pathname URLPatternResult.pathname specification>
+getPathnameUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getPathnameUnchecked self = liftDOM ((pFromJSVal <$> (js_getPathname (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"search\"] = $2; })"
+        js_setSearch :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-search URLPatternResult.search specification>
+setSearch :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setSearch self val = liftDOM (void ((js_setSearch (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })"
+        js_getSearch :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-search URLPatternResult.search specification>
+getSearch :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getSearch self = liftDOM (((js_getSearch (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-search URLPatternResult.search specification>
+getSearchUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getSearchUnsafe self = liftDOM ((((js_getSearch (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-search URLPatternResult.search specification>
+getSearchUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getSearchUnchecked self = liftDOM ((pFromJSVal <$> (js_getSearch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hash\"] = $2; })"
+        js_setHash :: URLPatternResult -> URLPatternComponentResult -> IO ()
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hash URLPatternResult.hash specification>
+setHash :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setHash self val = liftDOM (void ((js_setHash (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })"
+        js_getHash :: URLPatternResult -> IO JSVal
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hash URLPatternResult.hash specification>
+getHash :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getHash self = liftDOM (((js_getHash (self)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hash URLPatternResult.hash specification>
+getHashUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getHashUnsafe self = liftDOM ((((js_getHash (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hash URLPatternResult.hash specification>
+getHashUnchecked :: (MonadDOM m) => URLPatternResult -> m URLPatternComponentResult
+getHashUnchecked self = liftDOM ((pFromJSVal <$> (js_getHash (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs b/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
@@ -1,152 +1,107 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from url (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.URLSearchParams
-       (js_newURLSearchParams, newURLSearchParams, js_append, append,
-        js_delete, delete, js_get, get, get_, getUnsafe, getUnchecked,
-        js_getAll, getAll, getAll_, js_has, has, has_, js_set, set,
-        js_sort, sort, js_toString, toString, toString_,
-        URLSearchParams(..), gTypeURLSearchParams)
+       (js_newURLSearchParams, js_append, js_delete, js_delete', js_get, js_getAll, js_has, js_has', js_set, js_sort, js_getSize, newURLSearchParams, append, delete, delete', get, get_, getUnsafe, getUnchecked, getAll, getAll_, has, has_, has', has'_, set, sort, getSize, URLSearchParams(..), gTypeURLSearchParams)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1) => { return new window[\"URLSearchParams\"]($1); })" js_newURLSearchParams ::
-        URLSearchParamsInit -> IO URLSearchParams
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams Mozilla URLSearchParams documentation> 
-newURLSearchParams ::
-                   (MonadIO m, IsURLSearchParamsInit init) =>
-                     init -> m URLSearchParams
-newURLSearchParams init
-  = liftIO
-      (toJSVal init >>=
-         \ init' -> js_newURLSearchParams (URLSearchParamsInit init'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
-        :: URLSearchParams -> JSString -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"URLSearchParams\"]($1); })"
+        js_newURLSearchParams :: JSVal -> IO URLSearchParams
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/URLSearchParams MDN URLSearchParams. documentation>
+newURLSearchParams :: (MonadDOM m, IsSequenceSequenceStringOrRecordStringStringOrString init) => Maybe init -> m URLSearchParams
+newURLSearchParams init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a1' -> js_newURLSearchParams a1'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.append Mozilla URLSearchParams.append documentation> 
-append ::
-       (MonadIO m, ToJSString name, ToJSString value) =>
-         URLSearchParams -> name -> value -> m ()
-append self name value
-  = liftIO (js_append self (toJSString name) (toJSString value))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"delete\"]($2); })" js_delete ::
-        URLSearchParams -> JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })"
+        js_append :: URLSearchParams -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/append MDN URLSearchParams.append documentation>
+append :: (MonadDOM m, ToJSString name, ToJSString value) => URLSearchParams -> name -> value -> m ()
+append self name value = liftDOM (void ((js_append (self) (toJSString name) (toJSString value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.delete Mozilla URLSearchParams.delete documentation> 
-delete ::
-       (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
-delete self name = liftIO (js_delete self (toJSString name))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
-        URLSearchParams -> JSString -> IO (Nullable JSString)
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })"
+        js_delete :: URLSearchParams -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/delete MDN URLSearchParams.delete documentation>
+delete :: (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
+delete self name = liftDOM (void ((js_delete (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-get ::
-    (MonadIO m, ToJSString name, FromJSString result) =>
-      URLSearchParams -> name -> m (Maybe result)
-get self name
-  = liftIO (fromMaybeJSString <$> (js_get self (toJSString name)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"delete\"]($2, $3); })"
+        js_delete' :: URLSearchParams -> JSString -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/delete MDN URLSearchParams.delete documentation>
+delete' :: (MonadDOM m, ToJSString name, ToJSString value) => URLSearchParams -> name -> Maybe value -> m ()
+delete' self name value = liftDOM (void ((js_delete' (self) (toJSString name) (toOptionalJSString value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-get_ ::
-     (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
-get_ self name = liftIO (void (js_get self (toJSString name)))
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })"
+        js_get :: URLSearchParams -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/get MDN URLSearchParams.get documentation>
+get :: (MonadDOM m, ToJSString name, FromJSString result) => URLSearchParams -> name -> m (Maybe result)
+get self name = liftDOM (((fromMaybeJSString . Nullable) <$> (js_get (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-getUnsafe ::
-          (MonadIO m, ToJSString name, HasCallStack, FromJSString result) =>
-            URLSearchParams -> name -> m result
-getUnsafe self name
-  = liftIO
-      ((fromMaybeJSString <$> (js_get self (toJSString name))) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/get MDN URLSearchParams.get documentation>
+get_ :: (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
+get_ self name = liftDOM (void ((js_get (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-getUnchecked ::
-             (MonadIO m, ToJSString name, FromJSString result) =>
-               URLSearchParams -> name -> m result
-getUnchecked self name
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_get self (toJSString name)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getAll\"]($2); })" js_getAll ::
-        URLSearchParams -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/get MDN URLSearchParams.get documentation>
+getUnsafe :: (MonadDOM m, ToJSString name, HasCallStack, FromJSString result) => URLSearchParams -> name -> m result
+getUnsafe self name = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_get (self) (toJSString name))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.getAll Mozilla URLSearchParams.getAll documentation> 
-getAll ::
-       (MonadIO m, ToJSString name, FromJSString result) =>
-         URLSearchParams -> name -> m [result]
-getAll self name
-  = liftIO
-      ((js_getAll self (toJSString name)) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/get MDN URLSearchParams.get documentation>
+getUnchecked :: (MonadDOM m, ToJSString name, FromJSString result) => URLSearchParams -> name -> m result
+getUnchecked self name = liftDOM ((pFromJSVal <$> (js_get (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.getAll Mozilla URLSearchParams.getAll documentation> 
-getAll_ ::
-        (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
-getAll_ self name
-  = liftIO (void (js_getAll self (toJSString name)))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
-        :: URLSearchParams -> JSString -> IO Bool
+foreign import javascript safe "(($1, $2) => { return $1[\"getAll\"]($2); })"
+        js_getAll :: URLSearchParams -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/getAll MDN URLSearchParams.getAll documentation>
+getAll :: (MonadDOM m, ToJSString name, FromJSString result) => URLSearchParams -> name -> m [result]
+getAll self name = liftDOM (((js_getAll (self) (toJSString name)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.has Mozilla URLSearchParams.has documentation> 
-has ::
-    (MonadIO m, ToJSString name) => URLSearchParams -> name -> m Bool
-has self name = liftIO (js_has self (toJSString name))
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/getAll MDN URLSearchParams.getAll documentation>
+getAll_ :: (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
+getAll_ self name = liftDOM (void ((js_getAll (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.has Mozilla URLSearchParams.has documentation> 
-has_ ::
-     (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
-has_ self name = liftIO (void (js_has self (toJSString name)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"set\"]($2, $3); })" js_set ::
-        URLSearchParams -> JSString -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"has\"]($2); })"
+        js_has :: URLSearchParams -> JSString -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/has MDN URLSearchParams.has documentation>
+has :: (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m Bool
+has self name = liftDOM ((js_has (self) (toJSString name)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.set Mozilla URLSearchParams.set documentation> 
-set ::
-    (MonadIO m, ToJSString name, ToJSString value) =>
-      URLSearchParams -> name -> value -> m ()
-set self name value
-  = liftIO (js_set self (toJSString name) (toJSString value))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sort\"](); })" js_sort ::
-        URLSearchParams -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/has MDN URLSearchParams.has documentation>
+has_ :: (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
+has_ self name = liftDOM (void ((js_has (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.sort Mozilla URLSearchParams.sort documentation> 
-sort :: (MonadIO m) => URLSearchParams -> m ()
-sort self = liftIO (js_sort self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: URLSearchParams -> IO JSString
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"has\"]($2, $3); })"
+        js_has' :: URLSearchParams -> JSString -> (Optional JSString) -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/has MDN URLSearchParams.has documentation>
+has' :: (MonadDOM m, ToJSString name, ToJSString value) => URLSearchParams -> name -> Maybe value -> m Bool
+has' self name value = liftDOM ((js_has' (self) (toJSString name) (toOptionalJSString value)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.toString Mozilla URLSearchParams.toString documentation> 
-toString ::
-         (MonadIO m, FromJSString result) => URLSearchParams -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/has MDN URLSearchParams.has documentation>
+has'_ :: (MonadDOM m, ToJSString name, ToJSString value) => URLSearchParams -> name -> Maybe value -> m ()
+has'_ self name value = liftDOM (void ((js_has' (self) (toJSString name) (toOptionalJSString value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.toString Mozilla URLSearchParams.toString documentation> 
-toString_ :: (MonadIO m) => URLSearchParams -> m ()
-toString_ self = liftIO (void (js_toString self))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"set\"]($2, $3); })"
+        js_set :: URLSearchParams -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/set MDN URLSearchParams.set documentation>
+set :: (MonadDOM m, ToJSString name, ToJSString value) => URLSearchParams -> name -> value -> m ()
+set self name value = liftDOM (void ((js_set (self) (toJSString name) (toJSString value))))
+
+foreign import javascript safe "(($1) => { return $1[\"sort\"](); })"
+        js_sort :: URLSearchParams -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/sort MDN URLSearchParams.sort documentation>
+sort :: (MonadDOM m) => URLSearchParams -> m ()
+sort self = liftDOM (void ((js_sort (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: URLSearchParams -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/size MDN URLSearchParams.size documentation>
+getSize :: (MonadDOM m) => URLSearchParams -> m Word
+getSize self = liftDOM ((js_getSize (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UnknownCredentialOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/UnknownCredentialOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/UnknownCredentialOptions.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.UnknownCredentialOptions
+       (js_newUnknownCredentialOptions, js_setRpId, js_getRpId, js_setCredentialId, js_getCredentialId, newUnknownCredentialOptions, setRpId, getRpId, setCredentialId, getCredentialId, UnknownCredentialOptions(..), gTypeUnknownCredentialOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"rpId\": $1, \"credentialId\": $2}); })"
+        js_newUnknownCredentialOptions :: JSString -> JSString -> IO UnknownCredentialOptions
+-- | <https://w3c.github.io/webauthn/#dictdef-unknowncredentialoptions UnknownCredentialOptions specification>
+newUnknownCredentialOptions :: (MonadDOM m, ToJSString rpId, ToJSString credentialId) => rpId -> credentialId -> m UnknownCredentialOptions
+newUnknownCredentialOptions rpId credentialId = liftDOM ((js_newUnknownCredentialOptions (toJSString rpId) (toJSString credentialId)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rpId\"] = $2; })"
+        js_setRpId :: UnknownCredentialOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-rpid UnknownCredentialOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => UnknownCredentialOptions -> val -> m ()
+setRpId self val = liftDOM (void ((js_setRpId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rpId\"]; })"
+        js_getRpId :: UnknownCredentialOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-rpid UnknownCredentialOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => UnknownCredentialOptions -> m result
+getRpId self = liftDOM ((fromJSString <$> (js_getRpId (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credentialId\"] = $2; })"
+        js_setCredentialId :: UnknownCredentialOptions -> JSString -> IO ()
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-credentialid UnknownCredentialOptions.credentialId specification>
+setCredentialId :: (MonadDOM m, ToJSString val) => UnknownCredentialOptions -> val -> m ()
+setCredentialId self val = liftDOM (void ((js_setCredentialId (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credentialId\"]; })"
+        js_getCredentialId :: UnknownCredentialOptions -> IO JSString
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-credentialid UnknownCredentialOptions.credentialId specification>
+getCredentialId :: (MonadDOM m, FromJSString result) => UnknownCredentialOptions -> m result
+getCredentialId self = liftDOM ((fromJSString <$> (js_getCredentialId (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UserActivation.hs b/src/GHCJS/DOM/JSFFI/Generated/UserActivation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/UserActivation.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.UserActivation
+       (js_getHasBeenActive, js_getIsActive, getHasBeenActive, getIsActive, UserActivation(..), gTypeUserActivation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasBeenActive\"]; })"
+        js_getHasBeenActive :: UserActivation -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/UserActivation/hasBeenActive MDN UserActivation.hasBeenActive documentation>
+getHasBeenActive :: (MonadDOM m) => UserActivation -> m Bool
+getHasBeenActive self = liftDOM ((js_getHasBeenActive (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"isActive\"]; })"
+        js_getIsActive :: UserActivation -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/UserActivation/isActive MDN UserActivation.isActive documentation>
+getIsActive :: (MonadDOM m) => UserActivation -> m Bool
+getIsActive self = liftDOM ((js_getIsActive (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs b/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.UserMessageHandler
-       (js_postMessage, postMessage, UserMessageHandler(..),
-        gTypeUserMessageHandler)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"postMessage\"]($2); })"
-        js_postMessage ::
-        UserMessageHandler -> SerializedScriptValue -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler.postMessage Mozilla UserMessageHandler.postMessage documentation> 
-postMessage ::
-            (MonadIO m, IsSerializedScriptValue message) =>
-              UserMessageHandler -> message -> m ()
-postMessage self message
-  = liftIO (js_postMessage self (toSerializedScriptValue message))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
@@ -1,172 +1,161 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webvtt1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.VTTCue
-       (js_newVTTCue, newVTTCue, js_getCueAsHTML, getCueAsHTML,
-        getCueAsHTML_, js_setVertical, setVertical, js_getVertical,
-        getVertical, js_setSnapToLines, setSnapToLines, js_getSnapToLines,
-        getSnapToLines, js_setLine, setLine, js_getLine, getLine,
-        js_setPosition, setPosition, js_getPosition, getPosition,
-        js_setSize, setSize, js_getSize, getSize, js_setAlign, setAlign,
-        js_getAlign, getAlign, js_setText, setText, js_getText, getText,
-        js_setRegionId, setRegionId, js_getRegionId, getRegionId,
-        VTTCue(..), gTypeVTTCue)
+       (js_newVTTCue, js_getCueAsHTML, js_setRegion, js_getRegion, js_setVertical, js_getVertical, js_setSnapToLines, js_getSnapToLines, js_setLine, js_getLine, js_setLineAlign, js_getLineAlign, js_setPosition, js_getPosition, js_setPositionAlign, js_getPositionAlign, js_setSize, js_getSize, js_setAlign, js_getAlign, js_setText, js_getText, newVTTCue, getCueAsHTML, getCueAsHTML_, setRegion, getRegion, getRegionUnsafe, getRegionUnchecked, setVertical, getVertical, setSnapToLines, getSnapToLines, setLine, getLine, setLineAlign, getLineAlign, setPosition, getPosition, setPositionAlign, getPositionAlign, setSize, getSize, setAlign, getAlign, setText, getText, VTTCue(..), gTypeVTTCue)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return new window[\"VTTCue\"]($1, $2, $3); })" js_newVTTCue ::
-        Double -> Double -> JSString -> IO VTTCue
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation> 
-newVTTCue ::
-          (MonadIO m, ToJSString text) =>
-            Double -> Double -> text -> m VTTCue
-newVTTCue startTime endTime text
-  = liftIO (js_newVTTCue startTime endTime (toJSString text))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getCueAsHTML\"](); })"
+foreign import javascript safe "(($1, $2, $3) => { return new globalThis[\"VTTCue\"]($1, $2, $3); })"
+        js_newVTTCue :: Double -> Double -> JSString -> IO VTTCue
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/VTTCue MDN VTTCue. documentation>
+newVTTCue :: (MonadDOM m, ToJSString text) => Double -> Double -> text -> m VTTCue
+newVTTCue startTime endTime text = liftDOM ((js_newVTTCue (startTime) (endTime) (toJSString text)))
+
+foreign import javascript safe "(($1) => { return $1[\"getCueAsHTML\"](); })"
         js_getCueAsHTML :: VTTCue -> IO DocumentFragment
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/getCueAsHTML MDN VTTCue.getCueAsHTML documentation>
+getCueAsHTML :: (MonadDOM m) => VTTCue -> m DocumentFragment
+getCueAsHTML self = liftDOM ((js_getCueAsHTML (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
-getCueAsHTML :: (MonadIO m) => VTTCue -> m DocumentFragment
-getCueAsHTML self = liftIO (js_getCueAsHTML self)
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/getCueAsHTML MDN VTTCue.getCueAsHTML documentation>
+getCueAsHTML_ :: (MonadDOM m) => VTTCue -> m ()
+getCueAsHTML_ self = liftDOM (void ((js_getCueAsHTML (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
-getCueAsHTML_ :: (MonadIO m) => VTTCue -> m ()
-getCueAsHTML_ self = liftIO (void (js_getCueAsHTML self))
- 
+foreign import javascript safe "(($1, $2) => { $1[\"region\"] = $2; })"
+        js_setRegion :: VTTCue -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/region MDN VTTCue.region documentation>
+setRegion :: (MonadDOM m) => VTTCue -> Maybe VTTRegion -> m ()
+setRegion self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setRegion (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"region\"]; })"
+        js_getRegion :: VTTCue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/region MDN VTTCue.region documentation>
+getRegion :: (MonadDOM m) => VTTCue -> m (Maybe VTTRegion)
+getRegion self = liftDOM (((js_getRegion (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/region MDN VTTCue.region documentation>
+getRegionUnsafe :: (MonadDOM m, HasCallStack) => VTTCue -> m VTTRegion
+getRegionUnsafe self = liftDOM ((((js_getRegion (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/region MDN VTTCue.region documentation>
+getRegionUnchecked :: (MonadDOM m) => VTTCue -> m VTTRegion
+getRegionUnchecked self = liftDOM ((pFromJSVal <$> (js_getRegion (self))))
+
 foreign import javascript safe "(($1, $2) => { $1[\"vertical\"] = $2; })"
-        js_setVertical :: VTTCue -> JSString -> IO ()
+        js_setVertical :: VTTCue -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/vertical MDN VTTCue.vertical documentation>
+setVertical :: (MonadDOM m) => VTTCue -> DirectionSetting -> m ()
+setVertical self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setVertical (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
-setVertical :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
-setVertical self val
-  = liftIO (js_setVertical self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vertical\"]; })" js_getVertical
-        :: VTTCue -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"vertical\"]; })"
+        js_getVertical :: VTTCue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/vertical MDN VTTCue.vertical documentation>
+getVertical :: (MonadDOM m) => VTTCue -> m DirectionSetting
+getVertical self = liftDOM (((js_getVertical (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
-getVertical ::
-            (MonadIO m, FromJSString result) => VTTCue -> m result
-getVertical self = liftIO (fromJSString <$> (js_getVertical self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"snapToLines\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"snapToLines\"] = $2; })"
         js_setSnapToLines :: VTTCue -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/snapToLines MDN VTTCue.snapToLines documentation>
+setSnapToLines :: (MonadDOM m) => VTTCue -> Bool -> m ()
+setSnapToLines self val = liftDOM (void ((js_setSnapToLines (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
-setSnapToLines :: (MonadIO m) => VTTCue -> Bool -> m ()
-setSnapToLines self val = liftIO (js_setSnapToLines self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"snapToLines\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"snapToLines\"]; })"
         js_getSnapToLines :: VTTCue -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/snapToLines MDN VTTCue.snapToLines documentation>
+getSnapToLines :: (MonadDOM m) => VTTCue -> m Bool
+getSnapToLines self = liftDOM ((js_getSnapToLines (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
-getSnapToLines :: (MonadIO m) => VTTCue -> m Bool
-getSnapToLines self = liftIO (js_getSnapToLines self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"line\"] = $2; })" js_setLine ::
-        VTTCue -> Double -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"line\"] = $2; })"
+        js_setLine :: VTTCue -> LineAndPositionSetting -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/line MDN VTTCue.line documentation>
+setLine :: (MonadDOM m, IsLineAndPositionSetting val) => VTTCue -> val -> m ()
+setLine self val = liftDOM (void ((js_setLine (self) (Types.toLineAndPositionSetting val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
-setLine :: (MonadIO m) => VTTCue -> Double -> m ()
-setLine self val = liftIO (js_setLine self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"line\"]; })" js_getLine ::
-        VTTCue -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"line\"]; })"
+        js_getLine :: VTTCue -> IO LineAndPositionSetting
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/line MDN VTTCue.line documentation>
+getLine :: (MonadDOM m) => VTTCue -> m LineAndPositionSetting
+getLine self = liftDOM ((js_getLine (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
-getLine :: (MonadIO m) => VTTCue -> m Double
-getLine self = liftIO (js_getLine self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"position\"] = $2; })"
-        js_setPosition :: VTTCue -> Double -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"lineAlign\"] = $2; })"
+        js_setLineAlign :: VTTCue -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/lineAlign MDN VTTCue.lineAlign documentation>
+setLineAlign :: (MonadDOM m) => VTTCue -> LineAlignSetting -> m ()
+setLineAlign self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLineAlign (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
-setPosition :: (MonadIO m) => VTTCue -> Double -> m ()
-setPosition self val = liftIO (js_setPosition self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })" js_getPosition
-        :: VTTCue -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"lineAlign\"]; })"
+        js_getLineAlign :: VTTCue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/lineAlign MDN VTTCue.lineAlign documentation>
+getLineAlign :: (MonadDOM m) => VTTCue -> m LineAlignSetting
+getLineAlign self = liftDOM (((js_getLineAlign (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
-getPosition :: (MonadIO m) => VTTCue -> m Double
-getPosition self = liftIO (js_getPosition self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
-        VTTCue -> Double -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"position\"] = $2; })"
+        js_setPosition :: VTTCue -> LineAndPositionSetting -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/position MDN VTTCue.position documentation>
+setPosition :: (MonadDOM m, IsLineAndPositionSetting val) => VTTCue -> val -> m ()
+setPosition self val = liftDOM (void ((js_setPosition (self) (Types.toLineAndPositionSetting val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
-setSize :: (MonadIO m) => VTTCue -> Double -> m ()
-setSize self val = liftIO (js_setSize self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        VTTCue -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })"
+        js_getPosition :: VTTCue -> IO LineAndPositionSetting
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/position MDN VTTCue.position documentation>
+getPosition :: (MonadDOM m) => VTTCue -> m LineAndPositionSetting
+getPosition self = liftDOM ((js_getPosition (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
-getSize :: (MonadIO m) => VTTCue -> m Double
-getSize self = liftIO (js_getSize self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign ::
-        VTTCue -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"positionAlign\"] = $2; })"
+        js_setPositionAlign :: VTTCue -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/positionAlign MDN VTTCue.positionAlign documentation>
+setPositionAlign :: (MonadDOM m) => VTTCue -> PositionAlignSetting -> m ()
+setPositionAlign self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPositionAlign (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
-setAlign :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
-setAlign self val = liftIO (js_setAlign self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
-        VTTCue -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"positionAlign\"]; })"
+        js_getPositionAlign :: VTTCue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/positionAlign MDN VTTCue.positionAlign documentation>
+getPositionAlign :: (MonadDOM m) => VTTCue -> m PositionAlignSetting
+getPositionAlign self = liftDOM (((js_getPositionAlign (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
-getAlign :: (MonadIO m, FromJSString result) => VTTCue -> m result
-getAlign self = liftIO (fromJSString <$> (js_getAlign self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
-        VTTCue -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: VTTCue -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/size MDN VTTCue.size documentation>
+setSize :: (MonadDOM m) => VTTCue -> Double -> m ()
+setSize self val = liftDOM (void ((js_setSize (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
-setText :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
-setText self val = liftIO (js_setText self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
-        VTTCue -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: VTTCue -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/size MDN VTTCue.size documentation>
+getSize :: (MonadDOM m) => VTTCue -> m Double
+getSize self = liftDOM ((js_getSize (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
-getText :: (MonadIO m, FromJSString result) => VTTCue -> m result
-getText self = liftIO (fromJSString <$> (js_getText self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"regionId\"] = $2; })"
-        js_setRegionId :: VTTCue -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })"
+        js_setAlign :: VTTCue -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/align MDN VTTCue.align documentation>
+setAlign :: (MonadDOM m) => VTTCue -> AlignSetting -> m ()
+setAlign self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAlign (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
-setRegionId :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
-setRegionId self val
-  = liftIO (js_setRegionId self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"regionId\"]; })" js_getRegionId
-        :: VTTCue -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })"
+        js_getAlign :: VTTCue -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/align MDN VTTCue.align documentation>
+getAlign :: (MonadDOM m) => VTTCue -> m AlignSetting
+getAlign self = liftDOM (((js_getAlign (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
-getRegionId ::
-            (MonadIO m, FromJSString result) => VTTCue -> m result
-getRegionId self = liftIO (fromJSString <$> (js_getRegionId self))
+foreign import javascript safe "(($1, $2) => { $1[\"text\"] = $2; })"
+        js_setText :: VTTCue -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/text MDN VTTCue.text documentation>
+setText :: (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
+setText self val = liftDOM (void ((js_setText (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })"
+        js_getText :: VTTCue -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/text MDN VTTCue.text documentation>
+getText :: (MonadDOM m, FromJSString result) => VTTCue -> m result
+getText self = liftDOM ((fromJSString <$> (js_getText (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
@@ -1,165 +1,119 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webvtt1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.VTTRegion
-       (js_newVTTRegion, newVTTRegion, js_getTrack, getTrack, js_setId,
-        setId, js_getId, getId, js_setWidth, setWidth, js_getWidth,
-        getWidth, js_setHeight, setHeight, js_getHeight, getHeight,
-        js_setRegionAnchorX, setRegionAnchorX, js_getRegionAnchorX,
-        getRegionAnchorX, js_setRegionAnchorY, setRegionAnchorY,
-        js_getRegionAnchorY, getRegionAnchorY, js_setViewportAnchorX,
-        setViewportAnchorX, js_getViewportAnchorX, getViewportAnchorX,
-        js_setViewportAnchorY, setViewportAnchorY, js_getViewportAnchorY,
-        getViewportAnchorY, js_setScroll, setScroll, js_getScroll,
-        getScroll, VTTRegion(..), gTypeVTTRegion)
+       (js_newVTTRegion, js_setId, js_getId, js_setWidth, js_getWidth, js_setLines, js_getLines, js_setRegionAnchorX, js_getRegionAnchorX, js_setRegionAnchorY, js_getRegionAnchorY, js_setViewportAnchorX, js_getViewportAnchorX, js_setViewportAnchorY, js_getViewportAnchorY, js_setScroll, js_getScroll, newVTTRegion, setId, getId, setWidth, getWidth, setLines, getLines, setRegionAnchorX, getRegionAnchorX, setRegionAnchorY, getRegionAnchorY, setViewportAnchorX, getViewportAnchorX, setViewportAnchorY, getViewportAnchorY, setScroll, getScroll, VTTRegion(..), gTypeVTTRegion)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"VTTRegion\"](); })"
-        js_newVTTRegion :: IO VTTRegion
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation> 
-newVTTRegion :: (MonadIO m) => m VTTRegion
-newVTTRegion = liftIO (js_newVTTRegion)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
-        VTTRegion -> IO TextTrack
+foreign import javascript safe "(() => { return new globalThis[\"VTTRegion\"](); })"
+        js_newVTTRegion :: IO VTTRegion
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/VTTRegion MDN VTTRegion. documentation>
+newVTTRegion :: (MonadDOM m) => m VTTRegion
+newVTTRegion = liftDOM ((js_newVTTRegion))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
-getTrack :: (MonadIO m) => VTTRegion -> m TextTrack
-getTrack self = liftIO (js_getTrack self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"id\"] = $2; })" js_setId ::
-        VTTRegion -> JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"id\"] = $2; })"
+        js_setId :: VTTRegion -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/id MDN VTTRegion.id documentation>
+setId :: (MonadDOM m, ToJSString val) => VTTRegion -> val -> m ()
+setId self val = liftDOM (void ((js_setId (self) (toJSString val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
-setId :: (MonadIO m, ToJSString val) => VTTRegion -> val -> m ()
-setId self val = liftIO (js_setId self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        VTTRegion -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: VTTRegion -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/id MDN VTTRegion.id documentation>
+getId :: (MonadDOM m, FromJSString result) => VTTRegion -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
-getId :: (MonadIO m, FromJSString result) => VTTRegion -> m result
-getId self = liftIO (fromJSString <$> (js_getId self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth ::
-        VTTRegion -> Double -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: VTTRegion -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/width MDN VTTRegion.width documentation>
+setWidth :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
-setWidth :: (MonadIO m) => VTTRegion -> Double -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        VTTRegion -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: VTTRegion -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/width MDN VTTRegion.width documentation>
+getWidth :: (MonadDOM m) => VTTRegion -> m Double
+getWidth self = liftDOM ((js_getWidth (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
-getWidth :: (MonadIO m) => VTTRegion -> m Double
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })" js_setHeight
-        :: VTTRegion -> Int -> IO ()
+foreign import javascript safe "(($1, $2) => { $1[\"lines\"] = $2; })"
+        js_setLines :: VTTRegion -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/lines MDN VTTRegion.lines documentation>
+setLines :: (MonadDOM m) => VTTRegion -> Word -> m ()
+setLines self val = liftDOM (void ((js_setLines (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
-setHeight :: (MonadIO m) => VTTRegion -> Int -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        VTTRegion -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"lines\"]; })"
+        js_getLines :: VTTRegion -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/lines MDN VTTRegion.lines documentation>
+getLines :: (MonadDOM m) => VTTRegion -> m Word
+getLines self = liftDOM ((js_getLines (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
-getHeight :: (MonadIO m) => VTTRegion -> m Int
-getHeight self = liftIO (js_getHeight self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"regionAnchorX\"] = $2; })"
         js_setRegionAnchorX :: VTTRegion -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorX MDN VTTRegion.regionAnchorX documentation>
+setRegionAnchorX :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setRegionAnchorX self val = liftDOM (void ((js_setRegionAnchorX (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
-setRegionAnchorX :: (MonadIO m) => VTTRegion -> Double -> m ()
-setRegionAnchorX self val = liftIO (js_setRegionAnchorX self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"regionAnchorX\"]; })"
         js_getRegionAnchorX :: VTTRegion -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorX MDN VTTRegion.regionAnchorX documentation>
+getRegionAnchorX :: (MonadDOM m) => VTTRegion -> m Double
+getRegionAnchorX self = liftDOM ((js_getRegionAnchorX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
-getRegionAnchorX :: (MonadIO m) => VTTRegion -> m Double
-getRegionAnchorX self = liftIO (js_getRegionAnchorX self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"regionAnchorY\"] = $2; })"
         js_setRegionAnchorY :: VTTRegion -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorY MDN VTTRegion.regionAnchorY documentation>
+setRegionAnchorY :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setRegionAnchorY self val = liftDOM (void ((js_setRegionAnchorY (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
-setRegionAnchorY :: (MonadIO m) => VTTRegion -> Double -> m ()
-setRegionAnchorY self val = liftIO (js_setRegionAnchorY self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"regionAnchorY\"]; })"
         js_getRegionAnchorY :: VTTRegion -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorY MDN VTTRegion.regionAnchorY documentation>
+getRegionAnchorY :: (MonadDOM m) => VTTRegion -> m Double
+getRegionAnchorY self = liftDOM ((js_getRegionAnchorY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
-getRegionAnchorY :: (MonadIO m) => VTTRegion -> m Double
-getRegionAnchorY self = liftIO (js_getRegionAnchorY self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"viewportAnchorX\"] = $2; })"
         js_setViewportAnchorX :: VTTRegion -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorX MDN VTTRegion.viewportAnchorX documentation>
+setViewportAnchorX :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setViewportAnchorX self val = liftDOM (void ((js_setViewportAnchorX (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
-setViewportAnchorX :: (MonadIO m) => VTTRegion -> Double -> m ()
-setViewportAnchorX self val
-  = liftIO (js_setViewportAnchorX self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"viewportAnchorX\"]; })"
         js_getViewportAnchorX :: VTTRegion -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorX MDN VTTRegion.viewportAnchorX documentation>
+getViewportAnchorX :: (MonadDOM m) => VTTRegion -> m Double
+getViewportAnchorX self = liftDOM ((js_getViewportAnchorX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
-getViewportAnchorX :: (MonadIO m) => VTTRegion -> m Double
-getViewportAnchorX self = liftIO (js_getViewportAnchorX self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"viewportAnchorY\"] = $2; })"
         js_setViewportAnchorY :: VTTRegion -> Double -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorY MDN VTTRegion.viewportAnchorY documentation>
+setViewportAnchorY :: (MonadDOM m) => VTTRegion -> Double -> m ()
+setViewportAnchorY self val = liftDOM (void ((js_setViewportAnchorY (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
-setViewportAnchorY :: (MonadIO m) => VTTRegion -> Double -> m ()
-setViewportAnchorY self val
-  = liftIO (js_setViewportAnchorY self val)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"viewportAnchorY\"]; })"
         js_getViewportAnchorY :: VTTRegion -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
-getViewportAnchorY :: (MonadIO m) => VTTRegion -> m Double
-getViewportAnchorY self = liftIO (js_getViewportAnchorY self)
- 
-foreign import javascript safe "(($1, $2) => { $1[\"scroll\"] = $2; })" js_setScroll
-        :: VTTRegion -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorY MDN VTTRegion.viewportAnchorY documentation>
+getViewportAnchorY :: (MonadDOM m) => VTTRegion -> m Double
+getViewportAnchorY self = liftDOM ((js_getViewportAnchorY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
-setScroll ::
-          (MonadIO m, ToJSString val) => VTTRegion -> val -> m ()
-setScroll self val = liftIO (js_setScroll self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scroll\"]; })" js_getScroll ::
-        VTTRegion -> IO JSString
+foreign import javascript safe "(($1, $2) => { $1[\"scroll\"] = $2; })"
+        js_setScroll :: VTTRegion -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/scroll MDN VTTRegion.scroll documentation>
+setScroll :: (MonadDOM m) => VTTRegion -> ScrollSetting -> m ()
+setScroll self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setScroll (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
-getScroll ::
-          (MonadIO m, FromJSString result) => VTTRegion -> m result
-getScroll self = liftIO (fromJSString <$> (js_getScroll self))
+foreign import javascript unsafe "(($1) => { return $1[\"scroll\"]; })"
+        js_getScroll :: VTTRegion -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/scroll MDN VTTRegion.scroll documentation>
+getScroll :: (MonadDOM m) => VTTRegion -> m ScrollSetting
+getScroll self = liftDOM (((js_getScroll (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs
+++ /dev/null
@@ -1,96 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.VTTRegionList
-       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getRegionById,
-        getRegionById, getRegionById_, getRegionByIdUnsafe,
-        getRegionByIdUnchecked, js_getLength, getLength, VTTRegionList(..),
-        gTypeVTTRegionList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        VTTRegionList -> Word -> IO (Nullable VTTRegion)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-item :: (MonadIO m) => VTTRegionList -> Word -> m (Maybe VTTRegion)
-item self index = liftIO (nullableToMaybe <$> (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-item_ :: (MonadIO m) => VTTRegionList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-itemUnsafe ::
-           (MonadIO m, HasCallStack) => VTTRegionList -> Word -> m VTTRegion
-itemUnsafe self index
-  = liftIO
-      ((nullableToMaybe <$> (js_item self index)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-itemUnchecked ::
-              (MonadIO m) => VTTRegionList -> Word -> m VTTRegion
-itemUnchecked self index
-  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getRegionById\"]($2); })"
-        js_getRegionById ::
-        VTTRegionList -> JSString -> IO (Nullable VTTRegion)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionById ::
-              (MonadIO m, ToJSString id) =>
-                VTTRegionList -> id -> m (Maybe VTTRegion)
-getRegionById self id
-  = liftIO
-      (nullableToMaybe <$> (js_getRegionById self (toJSString id)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionById_ ::
-               (MonadIO m, ToJSString id) => VTTRegionList -> id -> m ()
-getRegionById_ self id
-  = liftIO (void (js_getRegionById self (toJSString id)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionByIdUnsafe ::
-                    (MonadIO m, ToJSString id, HasCallStack) =>
-                      VTTRegionList -> id -> m VTTRegion
-getRegionByIdUnsafe self id
-  = liftIO
-      ((nullableToMaybe <$> (js_getRegionById self (toJSString id))) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionByIdUnchecked ::
-                       (MonadIO m, ToJSString id) => VTTRegionList -> id -> m VTTRegion
-getRegionByIdUnchecked self id
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getRegionById self (toJSString id)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        VTTRegionList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.length Mozilla VTTRegionList.length documentation> 
-getLength :: (MonadIO m) => VTTRegionList -> m Word
-getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs b/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
@@ -1,110 +1,83 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.ValidityState
-       (js_getValueMissing, getValueMissing, js_getTypeMismatch,
-        getTypeMismatch, js_getPatternMismatch, getPatternMismatch,
-        js_getTooShort, getTooShort, js_getTooLong, getTooLong,
-        js_getRangeUnderflow, getRangeUnderflow, js_getRangeOverflow,
-        getRangeOverflow, js_getStepMismatch, getStepMismatch,
-        js_getBadInput, getBadInput, js_getCustomError, getCustomError,
-        js_getValid, getValid, ValidityState(..), gTypeValidityState)
+       (js_getValueMissing, js_getTypeMismatch, js_getPatternMismatch, js_getTooLong, js_getTooShort, js_getRangeUnderflow, js_getRangeOverflow, js_getStepMismatch, js_getBadInput, js_getCustomError, js_getValid, getValueMissing, getTypeMismatch, getPatternMismatch, getTooLong, getTooShort, getRangeUnderflow, getRangeOverflow, getStepMismatch, getBadInput, getCustomError, getValid, ValidityState(..), gTypeValidityState)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"valueMissing\"] ? 1 : 0); })"
+
+foreign import javascript unsafe "(($1) => { return $1[\"valueMissing\"]; })"
         js_getValueMissing :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/valueMissing MDN ValidityState.valueMissing documentation>
+getValueMissing :: (MonadDOM m) => ValidityState -> m Bool
+getValueMissing self = liftDOM ((js_getValueMissing (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valueMissing Mozilla ValidityState.valueMissing documentation> 
-getValueMissing :: (MonadIO m) => ValidityState -> m Bool
-getValueMissing self = liftIO (js_getValueMissing self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"typeMismatch\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"typeMismatch\"]; })"
         js_getTypeMismatch :: ValidityState -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.typeMismatch Mozilla ValidityState.typeMismatch documentation> 
-getTypeMismatch :: (MonadIO m) => ValidityState -> m Bool
-getTypeMismatch self = liftIO (js_getTypeMismatch self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"patternMismatch\"] ? 1 : 0); })" js_getPatternMismatch ::
-        ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/typeMismatch MDN ValidityState.typeMismatch documentation>
+getTypeMismatch :: (MonadDOM m) => ValidityState -> m Bool
+getTypeMismatch self = liftDOM ((js_getTypeMismatch (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.patternMismatch Mozilla ValidityState.patternMismatch documentation> 
-getPatternMismatch :: (MonadIO m) => ValidityState -> m Bool
-getPatternMismatch self = liftIO (js_getPatternMismatch self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"tooShort\"] ? 1 : 0); })"
-        js_getTooShort :: ValidityState -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"patternMismatch\"]; })"
+        js_getPatternMismatch :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/patternMismatch MDN ValidityState.patternMismatch documentation>
+getPatternMismatch :: (MonadDOM m) => ValidityState -> m Bool
+getPatternMismatch self = liftDOM ((js_getPatternMismatch (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.tooShort Mozilla ValidityState.tooShort documentation> 
-getTooShort :: (MonadIO m) => ValidityState -> m Bool
-getTooShort self = liftIO (js_getTooShort self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"tooLong\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"tooLong\"]; })"
         js_getTooLong :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/tooLong MDN ValidityState.tooLong documentation>
+getTooLong :: (MonadDOM m) => ValidityState -> m Bool
+getTooLong self = liftDOM ((js_getTooLong (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.tooLong Mozilla ValidityState.tooLong documentation> 
-getTooLong :: (MonadIO m) => ValidityState -> m Bool
-getTooLong self = liftIO (js_getTooLong self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"rangeUnderflow\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"tooShort\"]; })"
+        js_getTooShort :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/tooShort MDN ValidityState.tooShort documentation>
+getTooShort :: (MonadDOM m) => ValidityState -> m Bool
+getTooShort self = liftDOM ((js_getTooShort (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rangeUnderflow\"]; })"
         js_getRangeUnderflow :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/rangeUnderflow MDN ValidityState.rangeUnderflow documentation>
+getRangeUnderflow :: (MonadDOM m) => ValidityState -> m Bool
+getRangeUnderflow self = liftDOM ((js_getRangeUnderflow (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeUnderflow Mozilla ValidityState.rangeUnderflow documentation> 
-getRangeUnderflow :: (MonadIO m) => ValidityState -> m Bool
-getRangeUnderflow self = liftIO (js_getRangeUnderflow self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"rangeOverflow\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"rangeOverflow\"]; })"
         js_getRangeOverflow :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/rangeOverflow MDN ValidityState.rangeOverflow documentation>
+getRangeOverflow :: (MonadDOM m) => ValidityState -> m Bool
+getRangeOverflow self = liftDOM ((js_getRangeOverflow (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeOverflow Mozilla ValidityState.rangeOverflow documentation> 
-getRangeOverflow :: (MonadIO m) => ValidityState -> m Bool
-getRangeOverflow self = liftIO (js_getRangeOverflow self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"stepMismatch\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"stepMismatch\"]; })"
         js_getStepMismatch :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/stepMismatch MDN ValidityState.stepMismatch documentation>
+getStepMismatch :: (MonadDOM m) => ValidityState -> m Bool
+getStepMismatch self = liftDOM ((js_getStepMismatch (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.stepMismatch Mozilla ValidityState.stepMismatch documentation> 
-getStepMismatch :: (MonadIO m) => ValidityState -> m Bool
-getStepMismatch self = liftIO (js_getStepMismatch self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"badInput\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"badInput\"]; })"
         js_getBadInput :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/badInput MDN ValidityState.badInput documentation>
+getBadInput :: (MonadDOM m) => ValidityState -> m Bool
+getBadInput self = liftDOM ((js_getBadInput (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.badInput Mozilla ValidityState.badInput documentation> 
-getBadInput :: (MonadIO m) => ValidityState -> m Bool
-getBadInput self = liftIO (js_getBadInput self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"customError\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"customError\"]; })"
         js_getCustomError :: ValidityState -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/customError MDN ValidityState.customError documentation>
+getCustomError :: (MonadDOM m) => ValidityState -> m Bool
+getCustomError self = liftDOM ((js_getCustomError (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.customError Mozilla ValidityState.customError documentation> 
-getCustomError :: (MonadIO m) => ValidityState -> m Bool
-getCustomError self = liftIO (js_getCustomError self)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"valid\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"valid\"]; })"
         js_getValid :: ValidityState -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valid Mozilla ValidityState.valid documentation> 
-getValid :: (MonadIO m) => ValidityState -> m Bool
-getValid self = liftIO (js_getValid self)
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/valid MDN ValidityState.valid documentation>
+getValid :: (MonadDOM m) => ValidityState -> m Bool
+getValid self = liftDOM ((js_getValid (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ValidityStateFlags.hs b/src/GHCJS/DOM/JSFFI/Generated/ValidityStateFlags.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ValidityStateFlags.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ValidityStateFlags
+       (js_newValidityStateFlags, js_setValueMissing, js_getValueMissing, js_setTypeMismatch, js_getTypeMismatch, js_setPatternMismatch, js_getPatternMismatch, js_setTooLong, js_getTooLong, js_setTooShort, js_getTooShort, js_setRangeUnderflow, js_getRangeUnderflow, js_setRangeOverflow, js_getRangeOverflow, js_setStepMismatch, js_getStepMismatch, js_setBadInput, js_getBadInput, js_setCustomError, js_getCustomError, newValidityStateFlags, setValueMissing, getValueMissing, getValueMissingUnsafe, getValueMissingUnchecked, setTypeMismatch, getTypeMismatch, getTypeMismatchUnsafe, getTypeMismatchUnchecked, setPatternMismatch, getPatternMismatch, getPatternMismatchUnsafe, getPatternMismatchUnchecked, setTooLong, getTooLong, getTooLongUnsafe, getTooLongUnchecked, setTooShort, getTooShort, getTooShortUnsafe, getTooShortUnchecked, setRangeUnderflow, getRangeUnderflow, getRangeUnderflowUnsafe, getRangeUnderflowUnchecked, setRangeOverflow, getRangeOverflow, getRangeOverflowUnsafe, getRangeOverflowUnchecked, setStepMismatch, getStepMismatch, getStepMismatchUnsafe, getStepMismatchUnchecked, setBadInput, getBadInput, getBadInputUnsafe, getBadInputUnchecked, setCustomError, getCustomError, getCustomErrorUnsafe, getCustomErrorUnchecked, ValidityStateFlags(..), gTypeValidityStateFlags)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newValidityStateFlags :: IO ValidityStateFlags
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#validitystateflags ValidityStateFlags specification>
+newValidityStateFlags :: (MonadDOM m) => m ValidityStateFlags
+newValidityStateFlags = liftDOM ((js_newValidityStateFlags))
+
+foreign import javascript safe "(($1, $2) => { $1[\"valueMissing\"] = $2; })"
+        js_setValueMissing :: ValidityStateFlags -> Bool -> IO ()
+setValueMissing :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setValueMissing self val = liftDOM (void ((js_setValueMissing (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"valueMissing\"]; })"
+        js_getValueMissing :: ValidityStateFlags -> IO JSVal
+getValueMissing :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getValueMissing self = liftDOM (((js_getValueMissing (self)) >>= fromJSValUnchecked))
+
+getValueMissingUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getValueMissingUnsafe self = liftDOM ((((js_getValueMissing (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getValueMissingUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getValueMissingUnchecked self = liftDOM ((pFromJSVal <$> (js_getValueMissing (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"typeMismatch\"] = $2; })"
+        js_setTypeMismatch :: ValidityStateFlags -> Bool -> IO ()
+setTypeMismatch :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setTypeMismatch self val = liftDOM (void ((js_setTypeMismatch (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"typeMismatch\"]; })"
+        js_getTypeMismatch :: ValidityStateFlags -> IO JSVal
+getTypeMismatch :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getTypeMismatch self = liftDOM (((js_getTypeMismatch (self)) >>= fromJSValUnchecked))
+
+getTypeMismatchUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getTypeMismatchUnsafe self = liftDOM ((((js_getTypeMismatch (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTypeMismatchUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getTypeMismatchUnchecked self = liftDOM ((pFromJSVal <$> (js_getTypeMismatch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"patternMismatch\"] = $2; })"
+        js_setPatternMismatch :: ValidityStateFlags -> Bool -> IO ()
+setPatternMismatch :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setPatternMismatch self val = liftDOM (void ((js_setPatternMismatch (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"patternMismatch\"]; })"
+        js_getPatternMismatch :: ValidityStateFlags -> IO JSVal
+getPatternMismatch :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getPatternMismatch self = liftDOM (((js_getPatternMismatch (self)) >>= fromJSValUnchecked))
+
+getPatternMismatchUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getPatternMismatchUnsafe self = liftDOM ((((js_getPatternMismatch (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPatternMismatchUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getPatternMismatchUnchecked self = liftDOM ((pFromJSVal <$> (js_getPatternMismatch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tooLong\"] = $2; })"
+        js_setTooLong :: ValidityStateFlags -> Bool -> IO ()
+setTooLong :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setTooLong self val = liftDOM (void ((js_setTooLong (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tooLong\"]; })"
+        js_getTooLong :: ValidityStateFlags -> IO JSVal
+getTooLong :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getTooLong self = liftDOM (((js_getTooLong (self)) >>= fromJSValUnchecked))
+
+getTooLongUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getTooLongUnsafe self = liftDOM ((((js_getTooLong (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTooLongUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getTooLongUnchecked self = liftDOM ((pFromJSVal <$> (js_getTooLong (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"tooShort\"] = $2; })"
+        js_setTooShort :: ValidityStateFlags -> Bool -> IO ()
+setTooShort :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setTooShort self val = liftDOM (void ((js_setTooShort (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"tooShort\"]; })"
+        js_getTooShort :: ValidityStateFlags -> IO JSVal
+getTooShort :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getTooShort self = liftDOM (((js_getTooShort (self)) >>= fromJSValUnchecked))
+
+getTooShortUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getTooShortUnsafe self = liftDOM ((((js_getTooShort (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTooShortUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getTooShortUnchecked self = liftDOM ((pFromJSVal <$> (js_getTooShort (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rangeUnderflow\"] = $2; })"
+        js_setRangeUnderflow :: ValidityStateFlags -> Bool -> IO ()
+setRangeUnderflow :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setRangeUnderflow self val = liftDOM (void ((js_setRangeUnderflow (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rangeUnderflow\"]; })"
+        js_getRangeUnderflow :: ValidityStateFlags -> IO JSVal
+getRangeUnderflow :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getRangeUnderflow self = liftDOM (((js_getRangeUnderflow (self)) >>= fromJSValUnchecked))
+
+getRangeUnderflowUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getRangeUnderflowUnsafe self = liftDOM ((((js_getRangeUnderflow (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getRangeUnderflowUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getRangeUnderflowUnchecked self = liftDOM ((pFromJSVal <$> (js_getRangeUnderflow (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rangeOverflow\"] = $2; })"
+        js_setRangeOverflow :: ValidityStateFlags -> Bool -> IO ()
+setRangeOverflow :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setRangeOverflow self val = liftDOM (void ((js_setRangeOverflow (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rangeOverflow\"]; })"
+        js_getRangeOverflow :: ValidityStateFlags -> IO JSVal
+getRangeOverflow :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getRangeOverflow self = liftDOM (((js_getRangeOverflow (self)) >>= fromJSValUnchecked))
+
+getRangeOverflowUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getRangeOverflowUnsafe self = liftDOM ((((js_getRangeOverflow (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getRangeOverflowUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getRangeOverflowUnchecked self = liftDOM ((pFromJSVal <$> (js_getRangeOverflow (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stepMismatch\"] = $2; })"
+        js_setStepMismatch :: ValidityStateFlags -> Bool -> IO ()
+setStepMismatch :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setStepMismatch self val = liftDOM (void ((js_setStepMismatch (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stepMismatch\"]; })"
+        js_getStepMismatch :: ValidityStateFlags -> IO JSVal
+getStepMismatch :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getStepMismatch self = liftDOM (((js_getStepMismatch (self)) >>= fromJSValUnchecked))
+
+getStepMismatchUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getStepMismatchUnsafe self = liftDOM ((((js_getStepMismatch (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStepMismatchUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getStepMismatchUnchecked self = liftDOM ((pFromJSVal <$> (js_getStepMismatch (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"badInput\"] = $2; })"
+        js_setBadInput :: ValidityStateFlags -> Bool -> IO ()
+setBadInput :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setBadInput self val = liftDOM (void ((js_setBadInput (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"badInput\"]; })"
+        js_getBadInput :: ValidityStateFlags -> IO JSVal
+getBadInput :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getBadInput self = liftDOM (((js_getBadInput (self)) >>= fromJSValUnchecked))
+
+getBadInputUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getBadInputUnsafe self = liftDOM ((((js_getBadInput (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getBadInputUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getBadInputUnchecked self = liftDOM ((pFromJSVal <$> (js_getBadInput (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"customError\"] = $2; })"
+        js_setCustomError :: ValidityStateFlags -> Bool -> IO ()
+setCustomError :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setCustomError self val = liftDOM (void ((js_setCustomError (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"customError\"]; })"
+        js_getCustomError :: ValidityStateFlags -> IO JSVal
+getCustomError :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getCustomError self = liftDOM (((js_getCustomError (self)) >>= fromJSValUnchecked))
+
+getCustomErrorUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getCustomErrorUnsafe self = liftDOM ((((js_getCustomError (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getCustomErrorUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getCustomErrorUnchecked self = liftDOM ((pFromJSVal <$> (js_getCustomError (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoColorSpace.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoColorSpace.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoColorSpace.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoColorSpace
+       (js_newVideoColorSpace, js_toJSON, js_getPrimaries, js_getTransfer, js_getMatrix, js_getFullRange, newVideoColorSpace, toJSON, toJSON_, getPrimaries, getPrimariesUnsafe, getPrimariesUnchecked, getTransfer, getTransferUnsafe, getTransferUnchecked, getMatrix, getMatrixUnsafe, getMatrixUnchecked, getFullRange, getFullRangeUnsafe, getFullRangeUnchecked, VideoColorSpace(..), gTypeVideoColorSpace)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"VideoColorSpace\"]($1); })"
+        js_newVideoColorSpace :: JSVal -> IO VideoColorSpace
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/VideoColorSpace MDN VideoColorSpace. documentation>
+newVideoColorSpace :: (MonadDOM m) => Maybe VideoColorSpaceInit -> m VideoColorSpace
+newVideoColorSpace init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a1' -> js_newVideoColorSpace a1'))
+
+foreign import javascript safe "(($1) => { return $1[\"toJSON\"](); })"
+        js_toJSON :: VideoColorSpace -> IO VideoColorSpaceInit
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/toJSON MDN VideoColorSpace.toJSON documentation>
+toJSON :: (MonadDOM m) => VideoColorSpace -> m VideoColorSpaceInit
+toJSON self = liftDOM ((js_toJSON (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/toJSON MDN VideoColorSpace.toJSON documentation>
+toJSON_ :: (MonadDOM m) => VideoColorSpace -> m ()
+toJSON_ self = liftDOM (void ((js_toJSON (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"primaries\"]; })"
+        js_getPrimaries :: VideoColorSpace -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/primaries MDN VideoColorSpace.primaries documentation>
+getPrimaries :: (MonadDOM m) => VideoColorSpace -> m (Maybe VideoColorPrimaries)
+getPrimaries self = liftDOM (((js_getPrimaries (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/primaries MDN VideoColorSpace.primaries documentation>
+getPrimariesUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m VideoColorPrimaries
+getPrimariesUnsafe self = liftDOM ((((js_getPrimaries (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/primaries MDN VideoColorSpace.primaries documentation>
+getPrimariesUnchecked :: (MonadDOM m) => VideoColorSpace -> m VideoColorPrimaries
+getPrimariesUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrimaries (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: VideoColorSpace -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/transfer MDN VideoColorSpace.transfer documentation>
+getTransfer :: (MonadDOM m) => VideoColorSpace -> m (Maybe VideoTransferCharacteristics)
+getTransfer self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/transfer MDN VideoColorSpace.transfer documentation>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m VideoTransferCharacteristics
+getTransferUnsafe self = liftDOM ((((js_getTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/transfer MDN VideoColorSpace.transfer documentation>
+getTransferUnchecked :: (MonadDOM m) => VideoColorSpace -> m VideoTransferCharacteristics
+getTransferUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransfer (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"matrix\"]; })"
+        js_getMatrix :: VideoColorSpace -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/matrix MDN VideoColorSpace.matrix documentation>
+getMatrix :: (MonadDOM m) => VideoColorSpace -> m (Maybe VideoMatrixCoefficients)
+getMatrix self = liftDOM (((js_getMatrix (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/matrix MDN VideoColorSpace.matrix documentation>
+getMatrixUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m VideoMatrixCoefficients
+getMatrixUnsafe self = liftDOM ((((js_getMatrix (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/matrix MDN VideoColorSpace.matrix documentation>
+getMatrixUnchecked :: (MonadDOM m) => VideoColorSpace -> m VideoMatrixCoefficients
+getMatrixUnchecked self = liftDOM ((pFromJSVal <$> (js_getMatrix (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fullRange\"]; })"
+        js_getFullRange :: VideoColorSpace -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/fullRange MDN VideoColorSpace.fullRange documentation>
+getFullRange :: (MonadDOM m) => VideoColorSpace -> m (Maybe Bool)
+getFullRange self = liftDOM (((js_getFullRange (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/fullRange MDN VideoColorSpace.fullRange documentation>
+getFullRangeUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m Bool
+getFullRangeUnsafe self = liftDOM ((((js_getFullRange (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/fullRange MDN VideoColorSpace.fullRange documentation>
+getFullRangeUnchecked :: (MonadDOM m) => VideoColorSpace -> m Bool
+getFullRangeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFullRange (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoColorSpaceInit.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoColorSpaceInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoColorSpaceInit.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoColorSpaceInit
+       (js_newVideoColorSpaceInit, js_setPrimaries, js_getPrimaries, js_setTransfer, js_getTransfer, js_setMatrix, js_getMatrix, js_setFullRange, js_getFullRange, newVideoColorSpaceInit, setPrimaries, getPrimaries, getPrimariesUnsafe, getPrimariesUnchecked, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, setMatrix, getMatrix, getMatrixUnsafe, getMatrixUnchecked, setFullRange, getFullRange, getFullRangeUnsafe, getFullRangeUnchecked, VideoColorSpaceInit(..), gTypeVideoColorSpaceInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoColorSpaceInit :: IO VideoColorSpaceInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-videocolorspaceinit VideoColorSpaceInit specification>
+newVideoColorSpaceInit :: (MonadDOM m) => m VideoColorSpaceInit
+newVideoColorSpaceInit = liftDOM ((js_newVideoColorSpaceInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"primaries\"] = $2; })"
+        js_setPrimaries :: VideoColorSpaceInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-primaries VideoColorSpaceInit.primaries specification>
+setPrimaries :: (MonadDOM m) => VideoColorSpaceInit -> Maybe VideoColorPrimaries -> m ()
+setPrimaries self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPrimaries (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"primaries\"]; })"
+        js_getPrimaries :: VideoColorSpaceInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-primaries VideoColorSpaceInit.primaries specification>
+getPrimaries :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe VideoColorPrimaries)
+getPrimaries self = liftDOM (((js_getPrimaries (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-primaries VideoColorSpaceInit.primaries specification>
+getPrimariesUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m VideoColorPrimaries
+getPrimariesUnsafe self = liftDOM ((((js_getPrimaries (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-primaries VideoColorSpaceInit.primaries specification>
+getPrimariesUnchecked :: (MonadDOM m) => VideoColorSpaceInit -> m VideoColorPrimaries
+getPrimariesUnchecked self = liftDOM ((pFromJSVal <$> (js_getPrimaries (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transfer\"] = $2; })"
+        js_setTransfer :: VideoColorSpaceInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-transfer VideoColorSpaceInit.transfer specification>
+setTransfer :: (MonadDOM m) => VideoColorSpaceInit -> Maybe VideoTransferCharacteristics -> m ()
+setTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: VideoColorSpaceInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-transfer VideoColorSpaceInit.transfer specification>
+getTransfer :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe VideoTransferCharacteristics)
+getTransfer self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-transfer VideoColorSpaceInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m VideoTransferCharacteristics
+getTransferUnsafe self = liftDOM ((((js_getTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-transfer VideoColorSpaceInit.transfer specification>
+getTransferUnchecked :: (MonadDOM m) => VideoColorSpaceInit -> m VideoTransferCharacteristics
+getTransferUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransfer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"matrix\"] = $2; })"
+        js_setMatrix :: VideoColorSpaceInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-matrix VideoColorSpaceInit.matrix specification>
+setMatrix :: (MonadDOM m) => VideoColorSpaceInit -> Maybe VideoMatrixCoefficients -> m ()
+setMatrix self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setMatrix (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"matrix\"]; })"
+        js_getMatrix :: VideoColorSpaceInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-matrix VideoColorSpaceInit.matrix specification>
+getMatrix :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe VideoMatrixCoefficients)
+getMatrix self = liftDOM (((js_getMatrix (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-matrix VideoColorSpaceInit.matrix specification>
+getMatrixUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m VideoMatrixCoefficients
+getMatrixUnsafe self = liftDOM ((((js_getMatrix (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-matrix VideoColorSpaceInit.matrix specification>
+getMatrixUnchecked :: (MonadDOM m) => VideoColorSpaceInit -> m VideoMatrixCoefficients
+getMatrixUnchecked self = liftDOM ((pFromJSVal <$> (js_getMatrix (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"fullRange\"] = $2; })"
+        js_setFullRange :: VideoColorSpaceInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-fullrange VideoColorSpaceInit.fullRange specification>
+setFullRange :: (MonadDOM m) => VideoColorSpaceInit -> Maybe Bool -> m ()
+setFullRange self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFullRange (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"fullRange\"]; })"
+        js_getFullRange :: VideoColorSpaceInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-fullrange VideoColorSpaceInit.fullRange specification>
+getFullRange :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe Bool)
+getFullRange self = liftDOM (((js_getFullRange (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-fullrange VideoColorSpaceInit.fullRange specification>
+getFullRangeUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m Bool
+getFullRangeUnsafe self = liftDOM ((((js_getFullRange (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-fullrange VideoColorSpaceInit.fullRange specification>
+getFullRangeUnchecked :: (MonadDOM m) => VideoColorSpaceInit -> m Bool
+getFullRangeUnchecked self = liftDOM ((pFromJSVal <$> (js_getFullRange (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoConfiguration.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoConfiguration
+       (js_newVideoConfiguration, js_setContentType, js_getContentType, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setBitrate, js_getBitrate, js_setFramerate, js_getFramerate, js_setHasAlphaChannel, js_getHasAlphaChannel, js_setHdrMetadataType, js_getHdrMetadataType, js_setColorGamut, js_getColorGamut, js_setTransferFunction, js_getTransferFunction, js_setScalabilityMode, js_getScalabilityMode, js_setSpatialScalability, js_getSpatialScalability, newVideoConfiguration, setContentType, getContentType, setWidth, getWidth, setHeight, getHeight, setBitrate, getBitrate, setFramerate, getFramerate, setHasAlphaChannel, getHasAlphaChannel, getHasAlphaChannelUnsafe, getHasAlphaChannelUnchecked, setHdrMetadataType, getHdrMetadataType, getHdrMetadataTypeUnsafe, getHdrMetadataTypeUnchecked, setColorGamut, getColorGamut, getColorGamutUnsafe, getColorGamutUnchecked, setTransferFunction, getTransferFunction, getTransferFunctionUnsafe, getTransferFunctionUnchecked, setScalabilityMode, getScalabilityMode, getScalabilityModeUnsafe, getScalabilityModeUnchecked, setSpatialScalability, getSpatialScalability, getSpatialScalabilityUnsafe, getSpatialScalabilityUnchecked, VideoConfiguration(..), gTypeVideoConfiguration)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return ({\"contentType\": $1, \"width\": $2, \"height\": $3, \"bitrate\": $4, \"framerate\": $5}); })"
+        js_newVideoConfiguration :: JSString -> Word -> Word -> JSVal -> Double -> IO VideoConfiguration
+-- | <https://w3c.github.io/media-capabilities/#dictdef-videoconfiguration VideoConfiguration specification>
+newVideoConfiguration :: (MonadDOM m, ToJSString contentType) => contentType -> Word -> Word -> Word53 -> Double -> m VideoConfiguration
+newVideoConfiguration contentType width height bitrate framerate = liftDOM (((toJSVal bitrate) >>= \a4' -> js_newVideoConfiguration (toJSString contentType) (width) (height) a4' (framerate)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contentType\"] = $2; })"
+        js_setContentType :: VideoConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-contenttype VideoConfiguration.contentType specification>
+setContentType :: (MonadDOM m, ToJSString val) => VideoConfiguration -> val -> m ()
+setContentType self val = liftDOM (void ((js_setContentType (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentType\"]; })"
+        js_getContentType :: VideoConfiguration -> IO JSString
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-contenttype VideoConfiguration.contentType specification>
+getContentType :: (MonadDOM m, FromJSString result) => VideoConfiguration -> m result
+getContentType self = liftDOM ((fromJSString <$> (js_getContentType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: VideoConfiguration -> Word -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-width VideoConfiguration.width specification>
+setWidth :: (MonadDOM m) => VideoConfiguration -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: VideoConfiguration -> IO Word
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-width VideoConfiguration.width specification>
+getWidth :: (MonadDOM m) => VideoConfiguration -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: VideoConfiguration -> Word -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-height VideoConfiguration.height specification>
+setHeight :: (MonadDOM m) => VideoConfiguration -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: VideoConfiguration -> IO Word
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-height VideoConfiguration.height specification>
+getHeight :: (MonadDOM m) => VideoConfiguration -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bitrate\"] = $2; })"
+        js_setBitrate :: VideoConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-bitrate VideoConfiguration.bitrate specification>
+setBitrate :: (MonadDOM m) => VideoConfiguration -> Word53 -> m ()
+setBitrate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBitrate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bitrate\"]; })"
+        js_getBitrate :: VideoConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-bitrate VideoConfiguration.bitrate specification>
+getBitrate :: (MonadDOM m) => VideoConfiguration -> m Word53
+getBitrate self = liftDOM (((js_getBitrate (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"framerate\"] = $2; })"
+        js_setFramerate :: VideoConfiguration -> Double -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-framerate VideoConfiguration.framerate specification>
+setFramerate :: (MonadDOM m) => VideoConfiguration -> Double -> m ()
+setFramerate self val = liftDOM (void ((js_setFramerate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"framerate\"]; })"
+        js_getFramerate :: VideoConfiguration -> IO Double
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-framerate VideoConfiguration.framerate specification>
+getFramerate :: (MonadDOM m) => VideoConfiguration -> m Double
+getFramerate self = liftDOM ((js_getFramerate (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hasAlphaChannel\"] = $2; })"
+        js_setHasAlphaChannel :: VideoConfiguration -> Bool -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hasalphachannel VideoConfiguration.hasAlphaChannel specification>
+setHasAlphaChannel :: (MonadDOM m) => VideoConfiguration -> Bool -> m ()
+setHasAlphaChannel self val = liftDOM (void ((js_setHasAlphaChannel (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hasAlphaChannel\"]; })"
+        js_getHasAlphaChannel :: VideoConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hasalphachannel VideoConfiguration.hasAlphaChannel specification>
+getHasAlphaChannel :: (MonadDOM m) => VideoConfiguration -> m (Maybe Bool)
+getHasAlphaChannel self = liftDOM (((js_getHasAlphaChannel (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hasalphachannel VideoConfiguration.hasAlphaChannel specification>
+getHasAlphaChannelUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m Bool
+getHasAlphaChannelUnsafe self = liftDOM ((((js_getHasAlphaChannel (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hasalphachannel VideoConfiguration.hasAlphaChannel specification>
+getHasAlphaChannelUnchecked :: (MonadDOM m) => VideoConfiguration -> m Bool
+getHasAlphaChannelUnchecked self = liftDOM ((pFromJSVal <$> (js_getHasAlphaChannel (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hdrMetadataType\"] = $2; })"
+        js_setHdrMetadataType :: VideoConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hdrmetadatatype VideoConfiguration.hdrMetadataType specification>
+setHdrMetadataType :: (MonadDOM m) => VideoConfiguration -> HdrMetadataType -> m ()
+setHdrMetadataType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHdrMetadataType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hdrMetadataType\"]; })"
+        js_getHdrMetadataType :: VideoConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hdrmetadatatype VideoConfiguration.hdrMetadataType specification>
+getHdrMetadataType :: (MonadDOM m) => VideoConfiguration -> m (Maybe HdrMetadataType)
+getHdrMetadataType self = liftDOM (((js_getHdrMetadataType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hdrmetadatatype VideoConfiguration.hdrMetadataType specification>
+getHdrMetadataTypeUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m HdrMetadataType
+getHdrMetadataTypeUnsafe self = liftDOM ((((js_getHdrMetadataType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hdrmetadatatype VideoConfiguration.hdrMetadataType specification>
+getHdrMetadataTypeUnchecked :: (MonadDOM m) => VideoConfiguration -> m HdrMetadataType
+getHdrMetadataTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getHdrMetadataType (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorGamut\"] = $2; })"
+        js_setColorGamut :: VideoConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-colorgamut VideoConfiguration.colorGamut specification>
+setColorGamut :: (MonadDOM m) => VideoConfiguration -> ColorGamut -> m ()
+setColorGamut self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorGamut (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorGamut\"]; })"
+        js_getColorGamut :: VideoConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-colorgamut VideoConfiguration.colorGamut specification>
+getColorGamut :: (MonadDOM m) => VideoConfiguration -> m (Maybe ColorGamut)
+getColorGamut self = liftDOM (((js_getColorGamut (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-colorgamut VideoConfiguration.colorGamut specification>
+getColorGamutUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m ColorGamut
+getColorGamutUnsafe self = liftDOM ((((js_getColorGamut (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-colorgamut VideoConfiguration.colorGamut specification>
+getColorGamutUnchecked :: (MonadDOM m) => VideoConfiguration -> m ColorGamut
+getColorGamutUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorGamut (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transferFunction\"] = $2; })"
+        js_setTransferFunction :: VideoConfiguration -> JSVal -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-transferfunction VideoConfiguration.transferFunction specification>
+setTransferFunction :: (MonadDOM m) => VideoConfiguration -> TransferFunction -> m ()
+setTransferFunction self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransferFunction (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transferFunction\"]; })"
+        js_getTransferFunction :: VideoConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-transferfunction VideoConfiguration.transferFunction specification>
+getTransferFunction :: (MonadDOM m) => VideoConfiguration -> m (Maybe TransferFunction)
+getTransferFunction self = liftDOM (((js_getTransferFunction (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-transferfunction VideoConfiguration.transferFunction specification>
+getTransferFunctionUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m TransferFunction
+getTransferFunctionUnsafe self = liftDOM ((((js_getTransferFunction (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-transferfunction VideoConfiguration.transferFunction specification>
+getTransferFunctionUnchecked :: (MonadDOM m) => VideoConfiguration -> m TransferFunction
+getTransferFunctionUnchecked self = liftDOM ((pFromJSVal <$> (js_getTransferFunction (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scalabilityMode\"] = $2; })"
+        js_setScalabilityMode :: VideoConfiguration -> JSString -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-scalabilitymode VideoConfiguration.scalabilityMode specification>
+setScalabilityMode :: (MonadDOM m, ToJSString val) => VideoConfiguration -> val -> m ()
+setScalabilityMode self val = liftDOM (void ((js_setScalabilityMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scalabilityMode\"]; })"
+        js_getScalabilityMode :: VideoConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-scalabilitymode VideoConfiguration.scalabilityMode specification>
+getScalabilityMode :: (MonadDOM m, FromJSString result) => VideoConfiguration -> m (Maybe result)
+getScalabilityMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getScalabilityMode (self))))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-scalabilitymode VideoConfiguration.scalabilityMode specification>
+getScalabilityModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => VideoConfiguration -> m result
+getScalabilityModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getScalabilityMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-scalabilitymode VideoConfiguration.scalabilityMode specification>
+getScalabilityModeUnchecked :: (MonadDOM m, FromJSString result) => VideoConfiguration -> m result
+getScalabilityModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getScalabilityMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"spatialScalability\"] = $2; })"
+        js_setSpatialScalability :: VideoConfiguration -> Bool -> IO ()
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-spatialscalability VideoConfiguration.spatialScalability specification>
+setSpatialScalability :: (MonadDOM m) => VideoConfiguration -> Bool -> m ()
+setSpatialScalability self val = liftDOM (void ((js_setSpatialScalability (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"spatialScalability\"]; })"
+        js_getSpatialScalability :: VideoConfiguration -> IO JSVal
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-spatialscalability VideoConfiguration.spatialScalability specification>
+getSpatialScalability :: (MonadDOM m) => VideoConfiguration -> m (Maybe Bool)
+getSpatialScalability self = liftDOM (((js_getSpatialScalability (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-spatialscalability VideoConfiguration.spatialScalability specification>
+getSpatialScalabilityUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m Bool
+getSpatialScalabilityUnsafe self = liftDOM ((((js_getSpatialScalability (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-spatialscalability VideoConfiguration.spatialScalability specification>
+getSpatialScalabilityUnchecked :: (MonadDOM m) => VideoConfiguration -> m Bool
+getSpatialScalabilityUnchecked self = liftDOM ((pFromJSVal <$> (js_getSpatialScalability (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoDecoder.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoder.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoDecoder
+       (js_newVideoDecoder, js_close, js_configure, js_decode, js_flush, js_reset, js_isConfigSupported, js_getState, js_getDecodeQueueSize, newVideoDecoder, close, configure, decode, flush, reset, isConfigSupported, isConfigSupported_, getState, getDecodeQueueSize, dequeue, VideoDecoder(..), gTypeVideoDecoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"VideoDecoder\"]($1); })"
+        js_newVideoDecoder :: VideoDecoderInit -> IO VideoDecoder
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/VideoDecoder MDN VideoDecoder. documentation>
+newVideoDecoder :: (MonadDOM m) => VideoDecoderInit -> m VideoDecoder
+newVideoDecoder init = liftDOM ((js_newVideoDecoder (init)))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: VideoDecoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/close MDN VideoDecoder.close documentation>
+close :: (MonadDOM m) => VideoDecoder -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"configure\"]($2); })"
+        js_configure :: VideoDecoder -> VideoDecoderConfig -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/configure MDN VideoDecoder.configure documentation>
+configure :: (MonadDOM m) => VideoDecoder -> VideoDecoderConfig -> m ()
+configure self config = liftDOM (void ((js_configure (self) (config))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"decode\"]($2); })"
+        js_decode :: VideoDecoder -> EncodedVideoChunk -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/decode MDN VideoDecoder.decode documentation>
+decode :: (MonadDOM m) => VideoDecoder -> EncodedVideoChunk -> m ()
+decode self chunk = liftDOM (void ((js_decode (self) (chunk))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"flush\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_flush :: VideoDecoder -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/flush MDN VideoDecoder.flush documentation>
+flush :: (MonadDOM m) => VideoDecoder -> m ()
+flush self = liftDOM (void (((js_flush (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: VideoDecoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/reset MDN VideoDecoder.reset documentation>
+reset :: (MonadDOM m) => VideoDecoder -> m ()
+reset self = liftDOM (void ((js_reset (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"VideoDecoder\"][\"isConfigSupported\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isConfigSupported :: VideoDecoderConfig -> IO (JSVal, VideoDecoderSupport)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/isConfigSupported_static MDN VideoDecoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => VideoDecoderConfig -> m VideoDecoderSupport
+isConfigSupported config = liftDOM (((js_isConfigSupported (config)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/isConfigSupported_static MDN VideoDecoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => VideoDecoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void (((js_isConfigSupported (config)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: VideoDecoder -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/state MDN VideoDecoder.state documentation>
+getState :: (MonadDOM m) => VideoDecoder -> m CodecState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"decodeQueueSize\"]; })"
+        js_getDecodeQueueSize :: VideoDecoder -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/decodeQueueSize MDN VideoDecoder.decodeQueueSize documentation>
+getDecodeQueueSize :: (MonadDOM m) => VideoDecoder -> m Word
+getDecodeQueueSize self = liftDOM ((js_getDecodeQueueSize (self)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoder-ondequeue dequeue event>
+dequeue :: EventName VideoDecoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderConfig.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoDecoderConfig
+       (js_newVideoDecoderConfig, js_setCodec, js_getCodec, js_setDescription, js_getDescription, js_setCodedWidth, js_getCodedWidth, js_setCodedHeight, js_getCodedHeight, js_setDisplayAspectWidth, js_getDisplayAspectWidth, js_setDisplayAspectHeight, js_getDisplayAspectHeight, js_setColorSpace, js_getColorSpace, js_setHardwareAcceleration, js_getHardwareAcceleration, js_setOptimizeForLatency, js_getOptimizeForLatency, js_setRotation, js_getRotation, js_setFlip, js_getFlip, newVideoDecoderConfig, setCodec, getCodec, setDescription, getDescription, getDescriptionUnsafe, getDescriptionUnchecked, setCodedWidth, getCodedWidth, getCodedWidthUnsafe, getCodedWidthUnchecked, setCodedHeight, getCodedHeight, getCodedHeightUnsafe, getCodedHeightUnchecked, setDisplayAspectWidth, getDisplayAspectWidth, getDisplayAspectWidthUnsafe, getDisplayAspectWidthUnchecked, setDisplayAspectHeight, getDisplayAspectHeight, getDisplayAspectHeightUnsafe, getDisplayAspectHeightUnchecked, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, setHardwareAcceleration, getHardwareAcceleration, getHardwareAccelerationUnsafe, getHardwareAccelerationUnchecked, setOptimizeForLatency, getOptimizeForLatency, getOptimizeForLatencyUnsafe, getOptimizeForLatencyUnchecked, setRotation, getRotation, getRotationUnsafe, getRotationUnchecked, setFlip, getFlip, getFlipUnsafe, getFlipUnchecked, VideoDecoderConfig(..), gTypeVideoDecoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"codec\": $1}); })"
+        js_newVideoDecoderConfig :: JSString -> IO VideoDecoderConfig
+-- | <https://w3c.github.io/webcodecs/#dictdef-videodecoderconfig VideoDecoderConfig specification>
+newVideoDecoderConfig :: (MonadDOM m, ToJSString codec) => codec -> m VideoDecoderConfig
+newVideoDecoderConfig codec = liftDOM ((js_newVideoDecoderConfig (toJSString codec)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codec\"] = $2; })"
+        js_setCodec :: VideoDecoderConfig -> JSString -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codec VideoDecoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => VideoDecoderConfig -> val -> m ()
+setCodec self val = liftDOM (void ((js_setCodec (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codec\"]; })"
+        js_getCodec :: VideoDecoderConfig -> IO JSString
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codec VideoDecoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => VideoDecoderConfig -> m result
+getCodec self = liftDOM ((fromJSString <$> (js_getCodec (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"description\"] = $2; })"
+        js_setDescription :: VideoDecoderConfig -> AllowSharedBufferSource -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-description VideoDecoderConfig.description specification>
+setDescription :: (MonadDOM m, IsAllowSharedBufferSource val) => VideoDecoderConfig -> val -> m ()
+setDescription self val = liftDOM (void ((js_setDescription (self) (Types.toAllowSharedBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
+        js_getDescription :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-description VideoDecoderConfig.description specification>
+getDescription :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe AllowSharedBufferSource)
+getDescription self = liftDOM (((js_getDescription (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-description VideoDecoderConfig.description specification>
+getDescriptionUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m AllowSharedBufferSource
+getDescriptionUnsafe self = liftDOM ((((js_getDescription (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-description VideoDecoderConfig.description specification>
+getDescriptionUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m AllowSharedBufferSource
+getDescriptionUnchecked self = liftDOM ((pFromJSVal <$> (js_getDescription (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codedWidth\"] = $2; })"
+        js_setCodedWidth :: VideoDecoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedwidth VideoDecoderConfig.codedWidth specification>
+setCodedWidth :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setCodedWidth self val = liftDOM (void ((js_setCodedWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codedWidth\"]; })"
+        js_getCodedWidth :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedwidth VideoDecoderConfig.codedWidth specification>
+getCodedWidth :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getCodedWidth self = liftDOM (((js_getCodedWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedwidth VideoDecoderConfig.codedWidth specification>
+getCodedWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getCodedWidthUnsafe self = liftDOM ((((js_getCodedWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedwidth VideoDecoderConfig.codedWidth specification>
+getCodedWidthUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m Word
+getCodedWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getCodedWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codedHeight\"] = $2; })"
+        js_setCodedHeight :: VideoDecoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedheight VideoDecoderConfig.codedHeight specification>
+setCodedHeight :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setCodedHeight self val = liftDOM (void ((js_setCodedHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codedHeight\"]; })"
+        js_getCodedHeight :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedheight VideoDecoderConfig.codedHeight specification>
+getCodedHeight :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getCodedHeight self = liftDOM (((js_getCodedHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedheight VideoDecoderConfig.codedHeight specification>
+getCodedHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getCodedHeightUnsafe self = liftDOM ((((js_getCodedHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedheight VideoDecoderConfig.codedHeight specification>
+getCodedHeightUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m Word
+getCodedHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getCodedHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayAspectWidth\"] = $2; })"
+        js_setDisplayAspectWidth :: VideoDecoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectwidth VideoDecoderConfig.displayAspectWidth specification>
+setDisplayAspectWidth :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setDisplayAspectWidth self val = liftDOM (void ((js_setDisplayAspectWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayAspectWidth\"]; })"
+        js_getDisplayAspectWidth :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectwidth VideoDecoderConfig.displayAspectWidth specification>
+getDisplayAspectWidth :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getDisplayAspectWidth self = liftDOM (((js_getDisplayAspectWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectwidth VideoDecoderConfig.displayAspectWidth specification>
+getDisplayAspectWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getDisplayAspectWidthUnsafe self = liftDOM ((((js_getDisplayAspectWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectwidth VideoDecoderConfig.displayAspectWidth specification>
+getDisplayAspectWidthUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m Word
+getDisplayAspectWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayAspectWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayAspectHeight\"] = $2; })"
+        js_setDisplayAspectHeight :: VideoDecoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectheight VideoDecoderConfig.displayAspectHeight specification>
+setDisplayAspectHeight :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setDisplayAspectHeight self val = liftDOM (void ((js_setDisplayAspectHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayAspectHeight\"]; })"
+        js_getDisplayAspectHeight :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectheight VideoDecoderConfig.displayAspectHeight specification>
+getDisplayAspectHeight :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getDisplayAspectHeight self = liftDOM (((js_getDisplayAspectHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectheight VideoDecoderConfig.displayAspectHeight specification>
+getDisplayAspectHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getDisplayAspectHeightUnsafe self = liftDOM ((((js_getDisplayAspectHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectheight VideoDecoderConfig.displayAspectHeight specification>
+getDisplayAspectHeightUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m Word
+getDisplayAspectHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayAspectHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: VideoDecoderConfig -> VideoColorSpaceInit -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-colorspace VideoDecoderConfig.colorSpace specification>
+setColorSpace :: (MonadDOM m) => VideoDecoderConfig -> VideoColorSpaceInit -> m ()
+setColorSpace self val = liftDOM (void ((js_setColorSpace (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-colorspace VideoDecoderConfig.colorSpace specification>
+getColorSpace :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe VideoColorSpaceInit)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-colorspace VideoDecoderConfig.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m VideoColorSpaceInit
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-colorspace VideoDecoderConfig.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m VideoColorSpaceInit
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hardwareAcceleration\"] = $2; })"
+        js_setHardwareAcceleration :: VideoDecoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-hardwareacceleration VideoDecoderConfig.hardwareAcceleration specification>
+setHardwareAcceleration :: (MonadDOM m) => VideoDecoderConfig -> HardwareAcceleration -> m ()
+setHardwareAcceleration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHardwareAcceleration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hardwareAcceleration\"]; })"
+        js_getHardwareAcceleration :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-hardwareacceleration VideoDecoderConfig.hardwareAcceleration specification>
+getHardwareAcceleration :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe HardwareAcceleration)
+getHardwareAcceleration self = liftDOM (((js_getHardwareAcceleration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-hardwareacceleration VideoDecoderConfig.hardwareAcceleration specification>
+getHardwareAccelerationUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m HardwareAcceleration
+getHardwareAccelerationUnsafe self = liftDOM ((((js_getHardwareAcceleration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-hardwareacceleration VideoDecoderConfig.hardwareAcceleration specification>
+getHardwareAccelerationUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m HardwareAcceleration
+getHardwareAccelerationUnchecked self = liftDOM ((pFromJSVal <$> (js_getHardwareAcceleration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"optimizeForLatency\"] = $2; })"
+        js_setOptimizeForLatency :: VideoDecoderConfig -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-optimizeforlatency VideoDecoderConfig.optimizeForLatency specification>
+setOptimizeForLatency :: (MonadDOM m) => VideoDecoderConfig -> Bool -> m ()
+setOptimizeForLatency self val = liftDOM (void ((js_setOptimizeForLatency (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"optimizeForLatency\"]; })"
+        js_getOptimizeForLatency :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-optimizeforlatency VideoDecoderConfig.optimizeForLatency specification>
+getOptimizeForLatency :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Bool)
+getOptimizeForLatency self = liftDOM (((js_getOptimizeForLatency (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-optimizeforlatency VideoDecoderConfig.optimizeForLatency specification>
+getOptimizeForLatencyUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Bool
+getOptimizeForLatencyUnsafe self = liftDOM ((((js_getOptimizeForLatency (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-optimizeforlatency VideoDecoderConfig.optimizeForLatency specification>
+getOptimizeForLatencyUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m Bool
+getOptimizeForLatencyUnchecked self = liftDOM ((pFromJSVal <$> (js_getOptimizeForLatency (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rotation\"] = $2; })"
+        js_setRotation :: VideoDecoderConfig -> Double -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-rotation VideoDecoderConfig.rotation specification>
+setRotation :: (MonadDOM m) => VideoDecoderConfig -> Double -> m ()
+setRotation self val = liftDOM (void ((js_setRotation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rotation\"]; })"
+        js_getRotation :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-rotation VideoDecoderConfig.rotation specification>
+getRotation :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Double)
+getRotation self = liftDOM (((js_getRotation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-rotation VideoDecoderConfig.rotation specification>
+getRotationUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Double
+getRotationUnsafe self = liftDOM ((((js_getRotation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-rotation VideoDecoderConfig.rotation specification>
+getRotationUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m Double
+getRotationUnchecked self = liftDOM ((pFromJSVal <$> (js_getRotation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flip\"] = $2; })"
+        js_setFlip :: VideoDecoderConfig -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-flip VideoDecoderConfig.flip specification>
+setFlip :: (MonadDOM m) => VideoDecoderConfig -> Bool -> m ()
+setFlip self val = liftDOM (void ((js_setFlip (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flip\"]; })"
+        js_getFlip :: VideoDecoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-flip VideoDecoderConfig.flip specification>
+getFlip :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Bool)
+getFlip self = liftDOM (((js_getFlip (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-flip VideoDecoderConfig.flip specification>
+getFlipUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Bool
+getFlipUnsafe self = liftDOM ((((js_getFlip (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-flip VideoDecoderConfig.flip specification>
+getFlipUnchecked :: (MonadDOM m) => VideoDecoderConfig -> m Bool
+getFlipUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlip (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderInit.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoDecoderInit
+       (js_newVideoDecoderInit, js_setOutput, js_setError, newVideoDecoderInit, setOutput, setError, VideoDecoderInit(..), gTypeVideoDecoderInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"output\": $1, \"error\": $2}); })"
+        js_newVideoDecoderInit :: JSVal -> JSVal -> IO VideoDecoderInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-videodecoderinit VideoDecoderInit specification>
+newVideoDecoderInit :: (MonadDOM m) => VideoFrameOutputCallback -> WebCodecsErrorCallback -> m VideoDecoderInit
+newVideoDecoderInit output error = liftDOM (((toJSVal output) >>= \a1' -> (toJSVal error) >>= \a2' -> js_newVideoDecoderInit a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"output\"] = $2; })"
+        js_setOutput :: VideoDecoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderinit-output VideoDecoderInit.output specification>
+setOutput :: (MonadDOM m) => VideoDecoderInit -> VideoFrameOutputCallback -> m ()
+setOutput self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOutput (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: VideoDecoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderinit-error VideoDecoderInit.error specification>
+setError :: (MonadDOM m) => VideoDecoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setError (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderSupport.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoDecoderSupport.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoDecoderSupport
+       (js_newVideoDecoderSupport, js_setSupported, js_getSupported, js_setConfig, js_getConfig, newVideoDecoderSupport, setSupported, getSupported, getSupportedUnsafe, getSupportedUnchecked, setConfig, getConfig, getConfigUnsafe, getConfigUnchecked, VideoDecoderSupport(..), gTypeVideoDecoderSupport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoDecoderSupport :: IO VideoDecoderSupport
+-- | <https://w3c.github.io/webcodecs/#dictdef-videodecodersupport VideoDecoderSupport specification>
+newVideoDecoderSupport :: (MonadDOM m) => m VideoDecoderSupport
+newVideoDecoderSupport = liftDOM ((js_newVideoDecoderSupport))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supported\"] = $2; })"
+        js_setSupported :: VideoDecoderSupport -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-supported VideoDecoderSupport.supported specification>
+setSupported :: (MonadDOM m) => VideoDecoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void ((js_setSupported (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supported\"]; })"
+        js_getSupported :: VideoDecoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-supported VideoDecoderSupport.supported specification>
+getSupported :: (MonadDOM m) => VideoDecoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((js_getSupported (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-supported VideoDecoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((js_getSupported (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-supported VideoDecoderSupport.supported specification>
+getSupportedUnchecked :: (MonadDOM m) => VideoDecoderSupport -> m Bool
+getSupportedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupported (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"config\"] = $2; })"
+        js_setConfig :: VideoDecoderSupport -> VideoDecoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-config VideoDecoderSupport.config specification>
+setConfig :: (MonadDOM m) => VideoDecoderSupport -> VideoDecoderConfig -> m ()
+setConfig self val = liftDOM (void ((js_setConfig (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"config\"]; })"
+        js_getConfig :: VideoDecoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-config VideoDecoderSupport.config specification>
+getConfig :: (MonadDOM m) => VideoDecoderSupport -> m (Maybe VideoDecoderConfig)
+getConfig self = liftDOM (((js_getConfig (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-config VideoDecoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderSupport -> m VideoDecoderConfig
+getConfigUnsafe self = liftDOM ((((js_getConfig (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-config VideoDecoderSupport.config specification>
+getConfigUnchecked :: (MonadDOM m) => VideoDecoderSupport -> m VideoDecoderConfig
+getConfigUnchecked self = liftDOM ((pFromJSVal <$> (js_getConfig (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoder.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoder
+       (js_newVideoEncoder, js_close, js_configure, js_encode, js_flush, js_reset, js_isConfigSupported, js_getState, js_getEncodeQueueSize, newVideoEncoder, close, configure, encode, flush, reset, isConfigSupported, isConfigSupported_, getState, getEncodeQueueSize, dequeue, VideoEncoder(..), gTypeVideoEncoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"VideoEncoder\"]($1); })"
+        js_newVideoEncoder :: VideoEncoderInit -> IO VideoEncoder
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/VideoEncoder MDN VideoEncoder. documentation>
+newVideoEncoder :: (MonadDOM m) => VideoEncoderInit -> m VideoEncoder
+newVideoEncoder init = liftDOM ((js_newVideoEncoder (init)))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: VideoEncoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/close MDN VideoEncoder.close documentation>
+close :: (MonadDOM m) => VideoEncoder -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"configure\"]($2); })"
+        js_configure :: VideoEncoder -> VideoEncoderConfig -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/configure MDN VideoEncoder.configure documentation>
+configure :: (MonadDOM m) => VideoEncoder -> VideoEncoderConfig -> m ()
+configure self config = liftDOM (void ((js_configure (self) (config))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"encode\"]($2, $3); })"
+        js_encode :: VideoEncoder -> VideoFrame -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/encode MDN VideoEncoder.encode documentation>
+encode :: (MonadDOM m) => VideoEncoder -> VideoFrame -> Maybe VideoEncoderEncodeOptions -> m ()
+encode self frame options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_encode (self) (frame) a3')))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"flush\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_flush :: VideoEncoder -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/flush MDN VideoEncoder.flush documentation>
+flush :: (MonadDOM m) => VideoEncoder -> m ()
+flush self = liftDOM (void (((js_flush (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: VideoEncoder -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/reset MDN VideoEncoder.reset documentation>
+reset :: (MonadDOM m) => VideoEncoder -> m ()
+reset self = liftDOM (void ((js_reset (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return globalThis[\"VideoEncoder\"][\"isConfigSupported\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_isConfigSupported :: VideoEncoderConfig -> IO (JSVal, VideoEncoderSupport)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/isConfigSupported_static MDN VideoEncoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => VideoEncoderConfig -> m VideoEncoderSupport
+isConfigSupported config = liftDOM (((js_isConfigSupported (config)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/isConfigSupported_static MDN VideoEncoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => VideoEncoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void (((js_isConfigSupported (config)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })"
+        js_getState :: VideoEncoder -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/state MDN VideoEncoder.state documentation>
+getState :: (MonadDOM m) => VideoEncoder -> m CodecState
+getState self = liftDOM (((js_getState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"encodeQueueSize\"]; })"
+        js_getEncodeQueueSize :: VideoEncoder -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/encodeQueueSize MDN VideoEncoder.encodeQueueSize documentation>
+getEncodeQueueSize :: (MonadDOM m) => VideoEncoder -> m Word
+getEncodeQueueSize self = liftDOM ((js_getEncodeQueueSize (self)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoder-ondequeue dequeue event>
+dequeue :: EventName VideoEncoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderConfig.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderConfig.hs
@@ -0,0 +1,299 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderConfig
+       (js_newVideoEncoderConfig, js_setCodec, js_getCodec, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setDisplayWidth, js_getDisplayWidth, js_setDisplayHeight, js_getDisplayHeight, js_setBitrate, js_getBitrate, js_setFramerate, js_getFramerate, js_setHardwareAcceleration, js_getHardwareAcceleration, js_setAlpha, js_getAlpha, js_setScalabilityMode, js_getScalabilityMode, js_setBitrateMode, js_getBitrateMode, js_setLatencyMode, js_getLatencyMode, js_setContentHint, js_getContentHint, js_setAvc, js_getAvc, js_setHevc, js_getHevc, newVideoEncoderConfig, setCodec, getCodec, setWidth, getWidth, setHeight, getHeight, setDisplayWidth, getDisplayWidth, getDisplayWidthUnsafe, getDisplayWidthUnchecked, setDisplayHeight, getDisplayHeight, getDisplayHeightUnsafe, getDisplayHeightUnchecked, setBitrate, getBitrate, getBitrateUnsafe, getBitrateUnchecked, setFramerate, getFramerate, getFramerateUnsafe, getFramerateUnchecked, setHardwareAcceleration, getHardwareAcceleration, getHardwareAccelerationUnsafe, getHardwareAccelerationUnchecked, setAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked, setScalabilityMode, getScalabilityMode, getScalabilityModeUnsafe, getScalabilityModeUnchecked, setBitrateMode, getBitrateMode, getBitrateModeUnsafe, getBitrateModeUnchecked, setLatencyMode, getLatencyMode, getLatencyModeUnsafe, getLatencyModeUnchecked, setContentHint, getContentHint, getContentHintUnsafe, getContentHintUnchecked, setAvc, getAvc, getAvcUnsafe, getAvcUnchecked, setHevc, getHevc, getHevcUnsafe, getHevcUnchecked, VideoEncoderConfig(..), gTypeVideoEncoderConfig)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return ({\"codec\": $1, \"width\": $2, \"height\": $3}); })"
+        js_newVideoEncoderConfig :: JSString -> Word -> Word -> IO VideoEncoderConfig
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencoderconfig VideoEncoderConfig specification>
+newVideoEncoderConfig :: (MonadDOM m, ToJSString codec) => codec -> Word -> Word -> m VideoEncoderConfig
+newVideoEncoderConfig codec width height = liftDOM ((js_newVideoEncoderConfig (toJSString codec) (width) (height)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codec\"] = $2; })"
+        js_setCodec :: VideoEncoderConfig -> JSString -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-codec VideoEncoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => VideoEncoderConfig -> val -> m ()
+setCodec self val = liftDOM (void ((js_setCodec (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codec\"]; })"
+        js_getCodec :: VideoEncoderConfig -> IO JSString
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-codec VideoEncoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m result
+getCodec self = liftDOM ((fromJSString <$> (js_getCodec (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: VideoEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-width VideoEncoderConfig.width specification>
+setWidth :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: VideoEncoderConfig -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-width VideoEncoderConfig.width specification>
+getWidth :: (MonadDOM m) => VideoEncoderConfig -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: VideoEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-height VideoEncoderConfig.height specification>
+setHeight :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: VideoEncoderConfig -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-height VideoEncoderConfig.height specification>
+getHeight :: (MonadDOM m) => VideoEncoderConfig -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayWidth\"] = $2; })"
+        js_setDisplayWidth :: VideoEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displaywidth VideoEncoderConfig.displayWidth specification>
+setDisplayWidth :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setDisplayWidth self val = liftDOM (void ((js_setDisplayWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayWidth\"]; })"
+        js_getDisplayWidth :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displaywidth VideoEncoderConfig.displayWidth specification>
+getDisplayWidth :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Word)
+getDisplayWidth self = liftDOM (((js_getDisplayWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displaywidth VideoEncoderConfig.displayWidth specification>
+getDisplayWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Word
+getDisplayWidthUnsafe self = liftDOM ((((js_getDisplayWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displaywidth VideoEncoderConfig.displayWidth specification>
+getDisplayWidthUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m Word
+getDisplayWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayHeight\"] = $2; })"
+        js_setDisplayHeight :: VideoEncoderConfig -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displayheight VideoEncoderConfig.displayHeight specification>
+setDisplayHeight :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setDisplayHeight self val = liftDOM (void ((js_setDisplayHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayHeight\"]; })"
+        js_getDisplayHeight :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displayheight VideoEncoderConfig.displayHeight specification>
+getDisplayHeight :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Word)
+getDisplayHeight self = liftDOM (((js_getDisplayHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displayheight VideoEncoderConfig.displayHeight specification>
+getDisplayHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Word
+getDisplayHeightUnsafe self = liftDOM ((((js_getDisplayHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displayheight VideoEncoderConfig.displayHeight specification>
+getDisplayHeightUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m Word
+getDisplayHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bitrate\"] = $2; })"
+        js_setBitrate :: VideoEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitrate VideoEncoderConfig.bitrate specification>
+setBitrate :: (MonadDOM m) => VideoEncoderConfig -> Word53 -> m ()
+setBitrate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBitrate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bitrate\"]; })"
+        js_getBitrate :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitrate VideoEncoderConfig.bitrate specification>
+getBitrate :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Word53)
+getBitrate self = liftDOM (((js_getBitrate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitrate VideoEncoderConfig.bitrate specification>
+getBitrateUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Word53
+getBitrateUnsafe self = liftDOM ((((js_getBitrate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitrate VideoEncoderConfig.bitrate specification>
+getBitrateUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m Word53
+getBitrateUnchecked self = liftDOM ((pFromJSVal <$> (js_getBitrate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"framerate\"] = $2; })"
+        js_setFramerate :: VideoEncoderConfig -> Double -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-framerate VideoEncoderConfig.framerate specification>
+setFramerate :: (MonadDOM m) => VideoEncoderConfig -> Double -> m ()
+setFramerate self val = liftDOM (void ((js_setFramerate (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"framerate\"]; })"
+        js_getFramerate :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-framerate VideoEncoderConfig.framerate specification>
+getFramerate :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Double)
+getFramerate self = liftDOM (((js_getFramerate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-framerate VideoEncoderConfig.framerate specification>
+getFramerateUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Double
+getFramerateUnsafe self = liftDOM ((((js_getFramerate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-framerate VideoEncoderConfig.framerate specification>
+getFramerateUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m Double
+getFramerateUnchecked self = liftDOM ((pFromJSVal <$> (js_getFramerate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hardwareAcceleration\"] = $2; })"
+        js_setHardwareAcceleration :: VideoEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-hardwareacceleration VideoEncoderConfig.hardwareAcceleration specification>
+setHardwareAcceleration :: (MonadDOM m) => VideoEncoderConfig -> HardwareAcceleration -> m ()
+setHardwareAcceleration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setHardwareAcceleration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hardwareAcceleration\"]; })"
+        js_getHardwareAcceleration :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-hardwareacceleration VideoEncoderConfig.hardwareAcceleration specification>
+getHardwareAcceleration :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe HardwareAcceleration)
+getHardwareAcceleration self = liftDOM (((js_getHardwareAcceleration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-hardwareacceleration VideoEncoderConfig.hardwareAcceleration specification>
+getHardwareAccelerationUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m HardwareAcceleration
+getHardwareAccelerationUnsafe self = liftDOM ((((js_getHardwareAcceleration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-hardwareacceleration VideoEncoderConfig.hardwareAcceleration specification>
+getHardwareAccelerationUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m HardwareAcceleration
+getHardwareAccelerationUnchecked self = liftDOM ((pFromJSVal <$> (js_getHardwareAcceleration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alpha\"] = $2; })"
+        js_setAlpha :: VideoEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-alpha VideoEncoderConfig.alpha specification>
+setAlpha :: (MonadDOM m) => VideoEncoderConfig -> AlphaOption -> m ()
+setAlpha self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAlpha (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-alpha VideoEncoderConfig.alpha specification>
+getAlpha :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe AlphaOption)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-alpha VideoEncoderConfig.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m AlphaOption
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-alpha VideoEncoderConfig.alpha specification>
+getAlphaUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m AlphaOption
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"scalabilityMode\"] = $2; })"
+        js_setScalabilityMode :: VideoEncoderConfig -> JSString -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-scalabilitymode VideoEncoderConfig.scalabilityMode specification>
+setScalabilityMode :: (MonadDOM m, ToJSString val) => VideoEncoderConfig -> val -> m ()
+setScalabilityMode self val = liftDOM (void ((js_setScalabilityMode (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scalabilityMode\"]; })"
+        js_getScalabilityMode :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-scalabilitymode VideoEncoderConfig.scalabilityMode specification>
+getScalabilityMode :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m (Maybe result)
+getScalabilityMode self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getScalabilityMode (self))))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-scalabilitymode VideoEncoderConfig.scalabilityMode specification>
+getScalabilityModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => VideoEncoderConfig -> m result
+getScalabilityModeUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getScalabilityMode (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-scalabilitymode VideoEncoderConfig.scalabilityMode specification>
+getScalabilityModeUnchecked :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m result
+getScalabilityModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getScalabilityMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bitrateMode\"] = $2; })"
+        js_setBitrateMode :: VideoEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitratemode VideoEncoderConfig.bitrateMode specification>
+setBitrateMode :: (MonadDOM m) => VideoEncoderConfig -> VideoEncoderBitrateMode -> m ()
+setBitrateMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBitrateMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bitrateMode\"]; })"
+        js_getBitrateMode :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitratemode VideoEncoderConfig.bitrateMode specification>
+getBitrateMode :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe VideoEncoderBitrateMode)
+getBitrateMode self = liftDOM (((js_getBitrateMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitratemode VideoEncoderConfig.bitrateMode specification>
+getBitrateModeUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m VideoEncoderBitrateMode
+getBitrateModeUnsafe self = liftDOM ((((js_getBitrateMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitratemode VideoEncoderConfig.bitrateMode specification>
+getBitrateModeUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m VideoEncoderBitrateMode
+getBitrateModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getBitrateMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"latencyMode\"] = $2; })"
+        js_setLatencyMode :: VideoEncoderConfig -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-latencymode VideoEncoderConfig.latencyMode specification>
+setLatencyMode :: (MonadDOM m) => VideoEncoderConfig -> LatencyMode -> m ()
+setLatencyMode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLatencyMode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"latencyMode\"]; })"
+        js_getLatencyMode :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-latencymode VideoEncoderConfig.latencyMode specification>
+getLatencyMode :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe LatencyMode)
+getLatencyMode self = liftDOM (((js_getLatencyMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-latencymode VideoEncoderConfig.latencyMode specification>
+getLatencyModeUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m LatencyMode
+getLatencyModeUnsafe self = liftDOM ((((js_getLatencyMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-latencymode VideoEncoderConfig.latencyMode specification>
+getLatencyModeUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m LatencyMode
+getLatencyModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getLatencyMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"contentHint\"] = $2; })"
+        js_setContentHint :: VideoEncoderConfig -> JSString -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-contenthint VideoEncoderConfig.contentHint specification>
+setContentHint :: (MonadDOM m, ToJSString val) => VideoEncoderConfig -> val -> m ()
+setContentHint self val = liftDOM (void ((js_setContentHint (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"contentHint\"]; })"
+        js_getContentHint :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-contenthint VideoEncoderConfig.contentHint specification>
+getContentHint :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m (Maybe result)
+getContentHint self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getContentHint (self))))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-contenthint VideoEncoderConfig.contentHint specification>
+getContentHintUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => VideoEncoderConfig -> m result
+getContentHintUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getContentHint (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-contenthint VideoEncoderConfig.contentHint specification>
+getContentHintUnchecked :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m result
+getContentHintUnchecked self = liftDOM ((pFromJSVal <$> (js_getContentHint (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"avc\"] = $2; })"
+        js_setAvc :: VideoEncoderConfig -> AvcEncoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderconfig-avc VideoEncoderConfig.avc specification>
+setAvc :: (MonadDOM m) => VideoEncoderConfig -> AvcEncoderConfig -> m ()
+setAvc self val = liftDOM (void ((js_setAvc (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"avc\"]; })"
+        js_getAvc :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderconfig-avc VideoEncoderConfig.avc specification>
+getAvc :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe AvcEncoderConfig)
+getAvc self = liftDOM (((js_getAvc (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderconfig-avc VideoEncoderConfig.avc specification>
+getAvcUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m AvcEncoderConfig
+getAvcUnsafe self = liftDOM ((((js_getAvc (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderconfig-avc VideoEncoderConfig.avc specification>
+getAvcUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m AvcEncoderConfig
+getAvcUnchecked self = liftDOM ((pFromJSVal <$> (js_getAvc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hevc\"] = $2; })"
+        js_setHevc :: VideoEncoderConfig -> HevcEncoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderconfig-hevc VideoEncoderConfig.hevc specification>
+setHevc :: (MonadDOM m) => VideoEncoderConfig -> HevcEncoderConfig -> m ()
+setHevc self val = liftDOM (void ((js_setHevc (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hevc\"]; })"
+        js_getHevc :: VideoEncoderConfig -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderconfig-hevc VideoEncoderConfig.hevc specification>
+getHevc :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe HevcEncoderConfig)
+getHevc self = liftDOM (((js_getHevc (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderconfig-hevc VideoEncoderConfig.hevc specification>
+getHevcUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m HevcEncoderConfig
+getHevcUnsafe self = liftDOM ((((js_getHevc (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderconfig-hevc VideoEncoderConfig.hevc specification>
+getHevcUnchecked :: (MonadDOM m) => VideoEncoderConfig -> m HevcEncoderConfig
+getHevcUnchecked self = liftDOM ((pFromJSVal <$> (js_getHevc (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptions.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptions
+       (js_newVideoEncoderEncodeOptions, js_setKeyFrame, js_getKeyFrame, js_setAv1, js_getAv1, js_setAvc, js_getAvc, js_setHevc, js_getHevc, js_setVp9, js_getVp9, newVideoEncoderEncodeOptions, setKeyFrame, getKeyFrame, getKeyFrameUnsafe, getKeyFrameUnchecked, setAv1, getAv1, getAv1Unsafe, getAv1Unchecked, setAvc, getAvc, getAvcUnsafe, getAvcUnchecked, setHevc, getHevc, getHevcUnsafe, getHevcUnchecked, setVp9, getVp9, getVp9Unsafe, getVp9Unchecked, VideoEncoderEncodeOptions(..), gTypeVideoEncoderEncodeOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoEncoderEncodeOptions :: IO VideoEncoderEncodeOptions
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencoderencodeoptions VideoEncoderEncodeOptions specification>
+newVideoEncoderEncodeOptions :: (MonadDOM m) => m VideoEncoderEncodeOptions
+newVideoEncoderEncodeOptions = liftDOM ((js_newVideoEncoderEncodeOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"keyFrame\"] = $2; })"
+        js_setKeyFrame :: VideoEncoderEncodeOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderencodeoptions-keyframe VideoEncoderEncodeOptions.keyFrame specification>
+setKeyFrame :: (MonadDOM m) => VideoEncoderEncodeOptions -> Bool -> m ()
+setKeyFrame self val = liftDOM (void ((js_setKeyFrame (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"keyFrame\"]; })"
+        js_getKeyFrame :: VideoEncoderEncodeOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderencodeoptions-keyframe VideoEncoderEncodeOptions.keyFrame specification>
+getKeyFrame :: (MonadDOM m) => VideoEncoderEncodeOptions -> m (Maybe Bool)
+getKeyFrame self = liftDOM (((js_getKeyFrame (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderencodeoptions-keyframe VideoEncoderEncodeOptions.keyFrame specification>
+getKeyFrameUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptions -> m Bool
+getKeyFrameUnsafe self = liftDOM ((((js_getKeyFrame (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderencodeoptions-keyframe VideoEncoderEncodeOptions.keyFrame specification>
+getKeyFrameUnchecked :: (MonadDOM m) => VideoEncoderEncodeOptions -> m Bool
+getKeyFrameUnchecked self = liftDOM ((pFromJSVal <$> (js_getKeyFrame (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"av1\"] = $2; })"
+        js_setAv1 :: VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForAv1 -> IO ()
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptions-av1 VideoEncoderEncodeOptions.av1 specification>
+setAv1 :: (MonadDOM m) => VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForAv1 -> m ()
+setAv1 self val = liftDOM (void ((js_setAv1 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"av1\"]; })"
+        js_getAv1 :: VideoEncoderEncodeOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptions-av1 VideoEncoderEncodeOptions.av1 specification>
+getAv1 :: (MonadDOM m) => VideoEncoderEncodeOptions -> m (Maybe VideoEncoderEncodeOptionsForAv1)
+getAv1 self = liftDOM (((js_getAv1 (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptions-av1 VideoEncoderEncodeOptions.av1 specification>
+getAv1Unsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForAv1
+getAv1Unsafe self = liftDOM ((((js_getAv1 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptions-av1 VideoEncoderEncodeOptions.av1 specification>
+getAv1Unchecked :: (MonadDOM m) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForAv1
+getAv1Unchecked self = liftDOM ((pFromJSVal <$> (js_getAv1 (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"avc\"] = $2; })"
+        js_setAvc :: VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForAvc -> IO ()
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptions-avc VideoEncoderEncodeOptions.avc specification>
+setAvc :: (MonadDOM m) => VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForAvc -> m ()
+setAvc self val = liftDOM (void ((js_setAvc (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"avc\"]; })"
+        js_getAvc :: VideoEncoderEncodeOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptions-avc VideoEncoderEncodeOptions.avc specification>
+getAvc :: (MonadDOM m) => VideoEncoderEncodeOptions -> m (Maybe VideoEncoderEncodeOptionsForAvc)
+getAvc self = liftDOM (((js_getAvc (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptions-avc VideoEncoderEncodeOptions.avc specification>
+getAvcUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForAvc
+getAvcUnsafe self = liftDOM ((((js_getAvc (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptions-avc VideoEncoderEncodeOptions.avc specification>
+getAvcUnchecked :: (MonadDOM m) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForAvc
+getAvcUnchecked self = liftDOM ((pFromJSVal <$> (js_getAvc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"hevc\"] = $2; })"
+        js_setHevc :: VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForHevc -> IO ()
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptions-hevc VideoEncoderEncodeOptions.hevc specification>
+setHevc :: (MonadDOM m) => VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForHevc -> m ()
+setHevc self val = liftDOM (void ((js_setHevc (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"hevc\"]; })"
+        js_getHevc :: VideoEncoderEncodeOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptions-hevc VideoEncoderEncodeOptions.hevc specification>
+getHevc :: (MonadDOM m) => VideoEncoderEncodeOptions -> m (Maybe VideoEncoderEncodeOptionsForHevc)
+getHevc self = liftDOM (((js_getHevc (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptions-hevc VideoEncoderEncodeOptions.hevc specification>
+getHevcUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForHevc
+getHevcUnsafe self = liftDOM ((((js_getHevc (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptions-hevc VideoEncoderEncodeOptions.hevc specification>
+getHevcUnchecked :: (MonadDOM m) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForHevc
+getHevcUnchecked self = liftDOM ((pFromJSVal <$> (js_getHevc (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"vp9\"] = $2; })"
+        js_setVp9 :: VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForVp9 -> IO ()
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptions-vp9 VideoEncoderEncodeOptions.vp9 specification>
+setVp9 :: (MonadDOM m) => VideoEncoderEncodeOptions -> VideoEncoderEncodeOptionsForVp9 -> m ()
+setVp9 self val = liftDOM (void ((js_setVp9 (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"vp9\"]; })"
+        js_getVp9 :: VideoEncoderEncodeOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptions-vp9 VideoEncoderEncodeOptions.vp9 specification>
+getVp9 :: (MonadDOM m) => VideoEncoderEncodeOptions -> m (Maybe VideoEncoderEncodeOptionsForVp9)
+getVp9 self = liftDOM (((js_getVp9 (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptions-vp9 VideoEncoderEncodeOptions.vp9 specification>
+getVp9Unsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForVp9
+getVp9Unsafe self = liftDOM ((((js_getVp9 (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptions-vp9 VideoEncoderEncodeOptions.vp9 specification>
+getVp9Unchecked :: (MonadDOM m) => VideoEncoderEncodeOptions -> m VideoEncoderEncodeOptionsForVp9
+getVp9Unchecked self = liftDOM ((pFromJSVal <$> (js_getVp9 (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForAv1.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForAv1.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForAv1.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-av1-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForAv1
+       (js_newVideoEncoderEncodeOptionsForAv1, js_setQuantizer, js_getQuantizer, newVideoEncoderEncodeOptionsForAv1, setQuantizer, getQuantizer, getQuantizerUnsafe, getQuantizerUnchecked, VideoEncoderEncodeOptionsForAv1(..), gTypeVideoEncoderEncodeOptionsForAv1)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoEncoderEncodeOptionsForAv1 :: IO VideoEncoderEncodeOptionsForAv1
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dictdef-videoencoderencodeoptionsforav1 VideoEncoderEncodeOptionsForAv1 specification>
+newVideoEncoderEncodeOptionsForAv1 :: (MonadDOM m) => m VideoEncoderEncodeOptionsForAv1
+newVideoEncoderEncodeOptionsForAv1 = liftDOM ((js_newVideoEncoderEncodeOptionsForAv1))
+
+foreign import javascript safe "(($1, $2) => { $1[\"quantizer\"] = $2; })"
+        js_setQuantizer :: VideoEncoderEncodeOptionsForAv1 -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptionsforav1-quantizer VideoEncoderEncodeOptionsForAv1.quantizer specification>
+setQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForAv1 -> Maybe Word -> m ()
+setQuantizer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setQuantizer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"quantizer\"]; })"
+        js_getQuantizer :: VideoEncoderEncodeOptionsForAv1 -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptionsforav1-quantizer VideoEncoderEncodeOptionsForAv1.quantizer specification>
+getQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForAv1 -> m (Maybe Word)
+getQuantizer self = liftDOM (((js_getQuantizer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptionsforav1-quantizer VideoEncoderEncodeOptionsForAv1.quantizer specification>
+getQuantizerUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptionsForAv1 -> m Word
+getQuantizerUnsafe self = liftDOM ((((js_getQuantizer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dom-videoencoderencodeoptionsforav1-quantizer VideoEncoderEncodeOptionsForAv1.quantizer specification>
+getQuantizerUnchecked :: (MonadDOM m) => VideoEncoderEncodeOptionsForAv1 -> m Word
+getQuantizerUnchecked self = liftDOM ((pFromJSVal <$> (js_getQuantizer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForAvc.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForAvc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForAvc.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-avc-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForAvc
+       (js_newVideoEncoderEncodeOptionsForAvc, js_setQuantizer, js_getQuantizer, newVideoEncoderEncodeOptionsForAvc, setQuantizer, getQuantizer, getQuantizerUnsafe, getQuantizerUnchecked, VideoEncoderEncodeOptionsForAvc(..), gTypeVideoEncoderEncodeOptionsForAvc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoEncoderEncodeOptionsForAvc :: IO VideoEncoderEncodeOptionsForAvc
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dictdef-videoencoderencodeoptionsforavc VideoEncoderEncodeOptionsForAvc specification>
+newVideoEncoderEncodeOptionsForAvc :: (MonadDOM m) => m VideoEncoderEncodeOptionsForAvc
+newVideoEncoderEncodeOptionsForAvc = liftDOM ((js_newVideoEncoderEncodeOptionsForAvc))
+
+foreign import javascript safe "(($1, $2) => { $1[\"quantizer\"] = $2; })"
+        js_setQuantizer :: VideoEncoderEncodeOptionsForAvc -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptionsforavc-quantizer VideoEncoderEncodeOptionsForAvc.quantizer specification>
+setQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForAvc -> Maybe Word -> m ()
+setQuantizer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setQuantizer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"quantizer\"]; })"
+        js_getQuantizer :: VideoEncoderEncodeOptionsForAvc -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptionsforavc-quantizer VideoEncoderEncodeOptionsForAvc.quantizer specification>
+getQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForAvc -> m (Maybe Word)
+getQuantizer self = liftDOM (((js_getQuantizer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptionsforavc-quantizer VideoEncoderEncodeOptionsForAvc.quantizer specification>
+getQuantizerUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptionsForAvc -> m Word
+getQuantizerUnsafe self = liftDOM ((((js_getQuantizer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dom-videoencoderencodeoptionsforavc-quantizer VideoEncoderEncodeOptionsForAvc.quantizer specification>
+getQuantizerUnchecked :: (MonadDOM m) => VideoEncoderEncodeOptionsForAvc -> m Word
+getQuantizerUnchecked self = liftDOM ((pFromJSVal <$> (js_getQuantizer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForHevc.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForHevc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForHevc.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-hevc-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForHevc
+       (js_newVideoEncoderEncodeOptionsForHevc, js_setQuantizer, js_getQuantizer, newVideoEncoderEncodeOptionsForHevc, setQuantizer, getQuantizer, getQuantizerUnsafe, getQuantizerUnchecked, VideoEncoderEncodeOptionsForHevc(..), gTypeVideoEncoderEncodeOptionsForHevc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoEncoderEncodeOptionsForHevc :: IO VideoEncoderEncodeOptionsForHevc
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dictdef-videoencoderencodeoptionsforhevc VideoEncoderEncodeOptionsForHevc specification>
+newVideoEncoderEncodeOptionsForHevc :: (MonadDOM m) => m VideoEncoderEncodeOptionsForHevc
+newVideoEncoderEncodeOptionsForHevc = liftDOM ((js_newVideoEncoderEncodeOptionsForHevc))
+
+foreign import javascript safe "(($1, $2) => { $1[\"quantizer\"] = $2; })"
+        js_setQuantizer :: VideoEncoderEncodeOptionsForHevc -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptionsforhevc-quantizer VideoEncoderEncodeOptionsForHevc.quantizer specification>
+setQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForHevc -> Maybe Word -> m ()
+setQuantizer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setQuantizer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"quantizer\"]; })"
+        js_getQuantizer :: VideoEncoderEncodeOptionsForHevc -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptionsforhevc-quantizer VideoEncoderEncodeOptionsForHevc.quantizer specification>
+getQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForHevc -> m (Maybe Word)
+getQuantizer self = liftDOM (((js_getQuantizer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptionsforhevc-quantizer VideoEncoderEncodeOptionsForHevc.quantizer specification>
+getQuantizerUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptionsForHevc -> m Word
+getQuantizerUnsafe self = liftDOM ((((js_getQuantizer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dom-videoencoderencodeoptionsforhevc-quantizer VideoEncoderEncodeOptionsForHevc.quantizer specification>
+getQuantizerUnchecked :: (MonadDOM m) => VideoEncoderEncodeOptionsForHevc -> m Word
+getQuantizerUnchecked self = liftDOM ((pFromJSVal <$> (js_getQuantizer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForVp9.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForVp9.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderEncodeOptionsForVp9.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-vp9-codec-registration (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderEncodeOptionsForVp9
+       (js_newVideoEncoderEncodeOptionsForVp9, js_setQuantizer, js_getQuantizer, newVideoEncoderEncodeOptionsForVp9, setQuantizer, getQuantizer, getQuantizerUnsafe, getQuantizerUnchecked, VideoEncoderEncodeOptionsForVp9(..), gTypeVideoEncoderEncodeOptionsForVp9)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoEncoderEncodeOptionsForVp9 :: IO VideoEncoderEncodeOptionsForVp9
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dictdef-videoencoderencodeoptionsforvp9 VideoEncoderEncodeOptionsForVp9 specification>
+newVideoEncoderEncodeOptionsForVp9 :: (MonadDOM m) => m VideoEncoderEncodeOptionsForVp9
+newVideoEncoderEncodeOptionsForVp9 = liftDOM ((js_newVideoEncoderEncodeOptionsForVp9))
+
+foreign import javascript safe "(($1, $2) => { $1[\"quantizer\"] = $2; })"
+        js_setQuantizer :: VideoEncoderEncodeOptionsForVp9 -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptionsforvp9-quantizer VideoEncoderEncodeOptionsForVp9.quantizer specification>
+setQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForVp9 -> Maybe Word -> m ()
+setQuantizer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setQuantizer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"quantizer\"]; })"
+        js_getQuantizer :: VideoEncoderEncodeOptionsForVp9 -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptionsforvp9-quantizer VideoEncoderEncodeOptionsForVp9.quantizer specification>
+getQuantizer :: (MonadDOM m) => VideoEncoderEncodeOptionsForVp9 -> m (Maybe Word)
+getQuantizer self = liftDOM (((js_getQuantizer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptionsforvp9-quantizer VideoEncoderEncodeOptionsForVp9.quantizer specification>
+getQuantizerUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptionsForVp9 -> m Word
+getQuantizerUnsafe self = liftDOM ((((js_getQuantizer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dom-videoencoderencodeoptionsforvp9-quantizer VideoEncoderEncodeOptionsForVp9.quantizer specification>
+getQuantizerUnchecked :: (MonadDOM m) => VideoEncoderEncodeOptionsForVp9 -> m Word
+getQuantizerUnchecked self = liftDOM ((pFromJSVal <$> (js_getQuantizer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderInit.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderInit.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderInit
+       (js_newVideoEncoderInit, js_setOutput, js_setError, newVideoEncoderInit, setOutput, setError, VideoEncoderInit(..), gTypeVideoEncoderInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"output\": $1, \"error\": $2}); })"
+        js_newVideoEncoderInit :: JSVal -> JSVal -> IO VideoEncoderInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencoderinit VideoEncoderInit specification>
+newVideoEncoderInit :: (MonadDOM m) => EncodedVideoChunkOutputCallback -> WebCodecsErrorCallback -> m VideoEncoderInit
+newVideoEncoderInit output error = liftDOM (((toJSVal output) >>= \a1' -> (toJSVal error) >>= \a2' -> js_newVideoEncoderInit a1' a2'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"output\"] = $2; })"
+        js_setOutput :: VideoEncoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderinit-output VideoEncoderInit.output specification>
+setOutput :: (MonadDOM m) => VideoEncoderInit -> EncodedVideoChunkOutputCallback -> m ()
+setOutput self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOutput (self) a2')))
+
+foreign import javascript safe "(($1, $2) => { $1[\"error\"] = $2; })"
+        js_setError :: VideoEncoderInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderinit-error VideoEncoderInit.error specification>
+setError :: (MonadDOM m) => VideoEncoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setError (self) a2')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderSupport.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoEncoderSupport.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoEncoderSupport
+       (js_newVideoEncoderSupport, js_setSupported, js_getSupported, js_setConfig, js_getConfig, newVideoEncoderSupport, setSupported, getSupported, getSupportedUnsafe, getSupportedUnchecked, setConfig, getConfig, getConfigUnsafe, getConfigUnchecked, VideoEncoderSupport(..), gTypeVideoEncoderSupport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoEncoderSupport :: IO VideoEncoderSupport
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencodersupport VideoEncoderSupport specification>
+newVideoEncoderSupport :: (MonadDOM m) => m VideoEncoderSupport
+newVideoEncoderSupport = liftDOM ((js_newVideoEncoderSupport))
+
+foreign import javascript safe "(($1, $2) => { $1[\"supported\"] = $2; })"
+        js_setSupported :: VideoEncoderSupport -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-supported VideoEncoderSupport.supported specification>
+setSupported :: (MonadDOM m) => VideoEncoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void ((js_setSupported (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"supported\"]; })"
+        js_getSupported :: VideoEncoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-supported VideoEncoderSupport.supported specification>
+getSupported :: (MonadDOM m) => VideoEncoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((js_getSupported (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-supported VideoEncoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((js_getSupported (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-supported VideoEncoderSupport.supported specification>
+getSupportedUnchecked :: (MonadDOM m) => VideoEncoderSupport -> m Bool
+getSupportedUnchecked self = liftDOM ((pFromJSVal <$> (js_getSupported (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"config\"] = $2; })"
+        js_setConfig :: VideoEncoderSupport -> VideoEncoderConfig -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-config VideoEncoderSupport.config specification>
+setConfig :: (MonadDOM m) => VideoEncoderSupport -> VideoEncoderConfig -> m ()
+setConfig self val = liftDOM (void ((js_setConfig (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"config\"]; })"
+        js_getConfig :: VideoEncoderSupport -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-config VideoEncoderSupport.config specification>
+getConfig :: (MonadDOM m) => VideoEncoderSupport -> m (Maybe VideoEncoderConfig)
+getConfig self = liftDOM (((js_getConfig (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-config VideoEncoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderSupport -> m VideoEncoderConfig
+getConfigUnsafe self = liftDOM ((((js_getConfig (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-config VideoEncoderSupport.config specification>
+getConfigUnchecked :: (MonadDOM m) => VideoEncoderSupport -> m VideoEncoderConfig
+getConfigUnchecked self = liftDOM ((pFromJSVal <$> (js_getConfig (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrame.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrame.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrame.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrame
+       (js_newVideoFrame, js_newVideoFrameData', js_allocationSize, js_clone, js_close, js_copyTo, js_getFormat, js_getCodedWidth, js_getCodedHeight, js_getCodedRect, js_getVisibleRect, js_getDisplayWidth, js_getDisplayHeight, js_getDuration, js_getTimestamp, js_getColorSpace, newVideoFrame, newVideoFrameData', allocationSize, allocationSize_, clone, clone_, close, copyTo, copyTo_, getFormat, getFormatUnsafe, getFormatUnchecked, getCodedWidth, getCodedHeight, getCodedRect, getCodedRectUnsafe, getCodedRectUnchecked, getVisibleRect, getVisibleRectUnsafe, getVisibleRectUnchecked, getDisplayWidth, getDisplayHeight, getDuration, getDurationUnsafe, getDurationUnchecked, getTimestamp, getColorSpace, VideoFrame(..), gTypeVideoFrame)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"VideoFrame\"]($1, $2); })"
+        js_newVideoFrame :: CanvasImageSource -> JSVal -> IO VideoFrame
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/VideoFrame MDN VideoFrame. documentation>
+newVideoFrame :: (MonadDOM m, IsCanvasImageSource image) => image -> Maybe VideoFrameInit -> m VideoFrame
+newVideoFrame image init = liftDOM (((P.maybe (P.return jsUndefined) toJSVal init) >>= \a2' -> js_newVideoFrame (Types.toCanvasImageSource image) a2'))
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"VideoFrame\"]($1, $2); })"
+        js_newVideoFrameData' :: AllowSharedBufferSource -> VideoFrameBufferInit -> IO VideoFrame
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/VideoFrame MDN VideoFrame. documentation>
+newVideoFrameData' :: (MonadDOM m, IsAllowSharedBufferSource data') => data' -> VideoFrameBufferInit -> m VideoFrame
+newVideoFrameData' data' init = liftDOM ((js_newVideoFrameData' (Types.toAllowSharedBufferSource data') (init)))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"allocationSize\"]($2); })"
+        js_allocationSize :: VideoFrame -> JSVal -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/allocationSize MDN VideoFrame.allocationSize documentation>
+allocationSize :: (MonadDOM m) => VideoFrame -> Maybe VideoFrameCopyToOptions -> m Word
+allocationSize self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_allocationSize (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/allocationSize MDN VideoFrame.allocationSize documentation>
+allocationSize_ :: (MonadDOM m) => VideoFrame -> Maybe VideoFrameCopyToOptions -> m ()
+allocationSize_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_allocationSize (self) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"clone\"](); })"
+        js_clone :: VideoFrame -> IO VideoFrame
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/clone MDN VideoFrame.clone documentation>
+clone :: (MonadDOM m) => VideoFrame -> m VideoFrame
+clone self = liftDOM ((js_clone (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/clone MDN VideoFrame.clone documentation>
+clone_ :: (MonadDOM m) => VideoFrame -> m ()
+clone_ self = liftDOM (void ((js_clone (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: VideoFrame -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/close MDN VideoFrame.close documentation>
+close :: (MonadDOM m) => VideoFrame -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"copyTo\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_copyTo :: VideoFrame -> AllowSharedBufferSource -> JSVal -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/copyTo MDN VideoFrame.copyTo documentation>
+copyTo :: (MonadDOM m, IsAllowSharedBufferSource destination) => VideoFrame -> destination -> Maybe VideoFrameCopyToOptions -> m [PlaneLayout]
+copyTo self destination options = liftDOM (((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_copyTo (self) (Types.toAllowSharedBufferSource destination) a3') >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/copyTo MDN VideoFrame.copyTo documentation>
+copyTo_ :: (MonadDOM m, IsAllowSharedBufferSource destination) => VideoFrame -> destination -> Maybe VideoFrameCopyToOptions -> m ()
+copyTo_ self destination options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_copyTo (self) (Types.toAllowSharedBufferSource destination) a3') >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: VideoFrame -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/format MDN VideoFrame.format documentation>
+getFormat :: (MonadDOM m) => VideoFrame -> m (Maybe VideoPixelFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/format MDN VideoFrame.format documentation>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m VideoPixelFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/format MDN VideoFrame.format documentation>
+getFormatUnchecked :: (MonadDOM m) => VideoFrame -> m VideoPixelFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codedWidth\"]; })"
+        js_getCodedWidth :: VideoFrame -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedWidth MDN VideoFrame.codedWidth documentation>
+getCodedWidth :: (MonadDOM m) => VideoFrame -> m Word
+getCodedWidth self = liftDOM ((js_getCodedWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codedHeight\"]; })"
+        js_getCodedHeight :: VideoFrame -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedHeight MDN VideoFrame.codedHeight documentation>
+getCodedHeight :: (MonadDOM m) => VideoFrame -> m Word
+getCodedHeight self = liftDOM ((js_getCodedHeight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codedRect\"]; })"
+        js_getCodedRect :: VideoFrame -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedRect MDN VideoFrame.codedRect documentation>
+getCodedRect :: (MonadDOM m) => VideoFrame -> m (Maybe DOMRectReadOnly)
+getCodedRect self = liftDOM (((js_getCodedRect (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedRect MDN VideoFrame.codedRect documentation>
+getCodedRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m DOMRectReadOnly
+getCodedRectUnsafe self = liftDOM ((((js_getCodedRect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedRect MDN VideoFrame.codedRect documentation>
+getCodedRectUnchecked :: (MonadDOM m) => VideoFrame -> m DOMRectReadOnly
+getCodedRectUnchecked self = liftDOM ((pFromJSVal <$> (js_getCodedRect (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visibleRect\"]; })"
+        js_getVisibleRect :: VideoFrame -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/visibleRect MDN VideoFrame.visibleRect documentation>
+getVisibleRect :: (MonadDOM m) => VideoFrame -> m (Maybe DOMRectReadOnly)
+getVisibleRect self = liftDOM (((js_getVisibleRect (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/visibleRect MDN VideoFrame.visibleRect documentation>
+getVisibleRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m DOMRectReadOnly
+getVisibleRectUnsafe self = liftDOM ((((js_getVisibleRect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/visibleRect MDN VideoFrame.visibleRect documentation>
+getVisibleRectUnchecked :: (MonadDOM m) => VideoFrame -> m DOMRectReadOnly
+getVisibleRectUnchecked self = liftDOM ((pFromJSVal <$> (js_getVisibleRect (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayWidth\"]; })"
+        js_getDisplayWidth :: VideoFrame -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/displayWidth MDN VideoFrame.displayWidth documentation>
+getDisplayWidth :: (MonadDOM m) => VideoFrame -> m Word
+getDisplayWidth self = liftDOM ((js_getDisplayWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayHeight\"]; })"
+        js_getDisplayHeight :: VideoFrame -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/displayHeight MDN VideoFrame.displayHeight documentation>
+getDisplayHeight :: (MonadDOM m) => VideoFrame -> m Word
+getDisplayHeight self = liftDOM ((js_getDisplayHeight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: VideoFrame -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/duration MDN VideoFrame.duration documentation>
+getDuration :: (MonadDOM m) => VideoFrame -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/duration MDN VideoFrame.duration documentation>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/duration MDN VideoFrame.duration documentation>
+getDurationUnchecked :: (MonadDOM m) => VideoFrame -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: VideoFrame -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/timestamp MDN VideoFrame.timestamp documentation>
+getTimestamp :: (MonadDOM m) => VideoFrame -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: VideoFrame -> IO VideoColorSpace
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/colorSpace MDN VideoFrame.colorSpace documentation>
+getColorSpace :: (MonadDOM m) => VideoFrame -> m VideoColorSpace
+getColorSpace self = liftDOM ((js_getColorSpace (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrameBufferInit.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameBufferInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameBufferInit.hs
@@ -0,0 +1,271 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrameBufferInit
+       (js_newVideoFrameBufferInit, js_setFormat, js_getFormat, js_setCodedWidth, js_getCodedWidth, js_setCodedHeight, js_getCodedHeight, js_setTimestamp, js_getTimestamp, js_setDuration, js_getDuration, js_setLayout, js_getLayout, js_setVisibleRect, js_getVisibleRect, js_setRotation, js_getRotation, js_setFlip, js_getFlip, js_setDisplayWidth, js_getDisplayWidth, js_setDisplayHeight, js_getDisplayHeight, js_setColorSpace, js_getColorSpace, js_setTransfer, js_getTransfer, js_setMetadata, js_getMetadata, newVideoFrameBufferInit, setFormat, getFormat, setCodedWidth, getCodedWidth, setCodedHeight, getCodedHeight, setTimestamp, getTimestamp, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setLayout, getLayout, getLayoutUnsafe, getLayoutUnchecked, setVisibleRect, getVisibleRect, getVisibleRectUnsafe, getVisibleRectUnchecked, setRotation, getRotation, getRotationUnsafe, getRotationUnchecked, setFlip, getFlip, getFlipUnsafe, getFlipUnchecked, setDisplayWidth, getDisplayWidth, getDisplayWidthUnsafe, getDisplayWidthUnchecked, setDisplayHeight, getDisplayHeight, getDisplayHeightUnsafe, getDisplayHeightUnchecked, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, setMetadata, getMetadata, getMetadataUnsafe, getMetadataUnchecked, VideoFrameBufferInit(..), gTypeVideoFrameBufferInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return ({\"format\": $1, \"codedWidth\": $2, \"codedHeight\": $3, \"timestamp\": $4}); })"
+        js_newVideoFrameBufferInit :: JSVal -> Word -> Word -> JSVal -> IO VideoFrameBufferInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframebufferinit VideoFrameBufferInit specification>
+newVideoFrameBufferInit :: (MonadDOM m) => VideoPixelFormat -> Word -> Word -> Int53 -> m VideoFrameBufferInit
+newVideoFrameBufferInit format codedWidth codedHeight timestamp = liftDOM (((toJSVal format) >>= \a1' -> (toJSVal timestamp) >>= \a4' -> js_newVideoFrameBufferInit a1' (codedWidth) (codedHeight) a4'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: VideoFrameBufferInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-format VideoFrameBufferInit.format specification>
+setFormat :: (MonadDOM m) => VideoFrameBufferInit -> VideoPixelFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-format VideoFrameBufferInit.format specification>
+getFormat :: (MonadDOM m) => VideoFrameBufferInit -> m VideoPixelFormat
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codedWidth\"] = $2; })"
+        js_setCodedWidth :: VideoFrameBufferInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedwidth VideoFrameBufferInit.codedWidth specification>
+setCodedWidth :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setCodedWidth self val = liftDOM (void ((js_setCodedWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codedWidth\"]; })"
+        js_getCodedWidth :: VideoFrameBufferInit -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedwidth VideoFrameBufferInit.codedWidth specification>
+getCodedWidth :: (MonadDOM m) => VideoFrameBufferInit -> m Word
+getCodedWidth self = liftDOM ((js_getCodedWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"codedHeight\"] = $2; })"
+        js_setCodedHeight :: VideoFrameBufferInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedheight VideoFrameBufferInit.codedHeight specification>
+setCodedHeight :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setCodedHeight self val = liftDOM (void ((js_setCodedHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"codedHeight\"]; })"
+        js_getCodedHeight :: VideoFrameBufferInit -> IO Word
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedheight VideoFrameBufferInit.codedHeight specification>
+getCodedHeight :: (MonadDOM m) => VideoFrameBufferInit -> m Word
+getCodedHeight self = liftDOM ((js_getCodedHeight (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: VideoFrameBufferInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-timestamp VideoFrameBufferInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => VideoFrameBufferInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimestamp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-timestamp VideoFrameBufferInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => VideoFrameBufferInit -> m Int53
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: VideoFrameBufferInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-duration VideoFrameBufferInit.duration specification>
+setDuration :: (MonadDOM m) => VideoFrameBufferInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDuration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-duration VideoFrameBufferInit.duration specification>
+getDuration :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-duration VideoFrameBufferInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-duration VideoFrameBufferInit.duration specification>
+getDurationUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"layout\"] = $2; })"
+        js_setLayout :: VideoFrameBufferInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-layout VideoFrameBufferInit.layout specification>
+setLayout :: (MonadDOM m) => VideoFrameBufferInit -> [PlaneLayout] -> m ()
+setLayout self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLayout (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"layout\"]; })"
+        js_getLayout :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-layout VideoFrameBufferInit.layout specification>
+getLayout :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe [PlaneLayout])
+getLayout self = liftDOM (((js_getLayout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-layout VideoFrameBufferInit.layout specification>
+getLayoutUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m [PlaneLayout]
+getLayoutUnsafe self = liftDOM ((((js_getLayout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-layout VideoFrameBufferInit.layout specification>
+getLayoutUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m [PlaneLayout]
+getLayoutUnchecked self = liftDOM (((js_getLayout (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"visibleRect\"] = $2; })"
+        js_setVisibleRect :: VideoFrameBufferInit -> DOMRectInit -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-visiblerect VideoFrameBufferInit.visibleRect specification>
+setVisibleRect :: (MonadDOM m) => VideoFrameBufferInit -> DOMRectInit -> m ()
+setVisibleRect self val = liftDOM (void ((js_setVisibleRect (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visibleRect\"]; })"
+        js_getVisibleRect :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-visiblerect VideoFrameBufferInit.visibleRect specification>
+getVisibleRect :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe DOMRectInit)
+getVisibleRect self = liftDOM (((js_getVisibleRect (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-visiblerect VideoFrameBufferInit.visibleRect specification>
+getVisibleRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m DOMRectInit
+getVisibleRectUnsafe self = liftDOM ((((js_getVisibleRect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-visiblerect VideoFrameBufferInit.visibleRect specification>
+getVisibleRectUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m DOMRectInit
+getVisibleRectUnchecked self = liftDOM ((pFromJSVal <$> (js_getVisibleRect (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rotation\"] = $2; })"
+        js_setRotation :: VideoFrameBufferInit -> Double -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-rotation VideoFrameBufferInit.rotation specification>
+setRotation :: (MonadDOM m) => VideoFrameBufferInit -> Double -> m ()
+setRotation self val = liftDOM (void ((js_setRotation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rotation\"]; })"
+        js_getRotation :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-rotation VideoFrameBufferInit.rotation specification>
+getRotation :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Double)
+getRotation self = liftDOM (((js_getRotation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-rotation VideoFrameBufferInit.rotation specification>
+getRotationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Double
+getRotationUnsafe self = liftDOM ((((js_getRotation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-rotation VideoFrameBufferInit.rotation specification>
+getRotationUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m Double
+getRotationUnchecked self = liftDOM ((pFromJSVal <$> (js_getRotation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flip\"] = $2; })"
+        js_setFlip :: VideoFrameBufferInit -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-flip VideoFrameBufferInit.flip specification>
+setFlip :: (MonadDOM m) => VideoFrameBufferInit -> Bool -> m ()
+setFlip self val = liftDOM (void ((js_setFlip (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flip\"]; })"
+        js_getFlip :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-flip VideoFrameBufferInit.flip specification>
+getFlip :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Bool)
+getFlip self = liftDOM (((js_getFlip (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-flip VideoFrameBufferInit.flip specification>
+getFlipUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Bool
+getFlipUnsafe self = liftDOM ((((js_getFlip (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-flip VideoFrameBufferInit.flip specification>
+getFlipUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m Bool
+getFlipUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlip (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayWidth\"] = $2; })"
+        js_setDisplayWidth :: VideoFrameBufferInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displaywidth VideoFrameBufferInit.displayWidth specification>
+setDisplayWidth :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setDisplayWidth self val = liftDOM (void ((js_setDisplayWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayWidth\"]; })"
+        js_getDisplayWidth :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displaywidth VideoFrameBufferInit.displayWidth specification>
+getDisplayWidth :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Word)
+getDisplayWidth self = liftDOM (((js_getDisplayWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displaywidth VideoFrameBufferInit.displayWidth specification>
+getDisplayWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Word
+getDisplayWidthUnsafe self = liftDOM ((((js_getDisplayWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displaywidth VideoFrameBufferInit.displayWidth specification>
+getDisplayWidthUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m Word
+getDisplayWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayHeight\"] = $2; })"
+        js_setDisplayHeight :: VideoFrameBufferInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displayheight VideoFrameBufferInit.displayHeight specification>
+setDisplayHeight :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setDisplayHeight self val = liftDOM (void ((js_setDisplayHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayHeight\"]; })"
+        js_getDisplayHeight :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displayheight VideoFrameBufferInit.displayHeight specification>
+getDisplayHeight :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Word)
+getDisplayHeight self = liftDOM (((js_getDisplayHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displayheight VideoFrameBufferInit.displayHeight specification>
+getDisplayHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Word
+getDisplayHeightUnsafe self = liftDOM ((((js_getDisplayHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displayheight VideoFrameBufferInit.displayHeight specification>
+getDisplayHeightUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m Word
+getDisplayHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: VideoFrameBufferInit -> VideoColorSpaceInit -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-colorspace VideoFrameBufferInit.colorSpace specification>
+setColorSpace :: (MonadDOM m) => VideoFrameBufferInit -> VideoColorSpaceInit -> m ()
+setColorSpace self val = liftDOM (void ((js_setColorSpace (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-colorspace VideoFrameBufferInit.colorSpace specification>
+getColorSpace :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe VideoColorSpaceInit)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-colorspace VideoFrameBufferInit.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m VideoColorSpaceInit
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-colorspace VideoFrameBufferInit.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m VideoColorSpaceInit
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"transfer\"] = $2; })"
+        js_setTransfer :: VideoFrameBufferInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-transfer VideoFrameBufferInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => VideoFrameBufferInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTransfer (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"transfer\"]; })"
+        js_getTransfer :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-transfer VideoFrameBufferInit.transfer specification>
+getTransfer :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-transfer VideoFrameBufferInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((js_getTransfer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-transfer VideoFrameBufferInit.transfer specification>
+getTransferUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m [ArrayBuffer]
+getTransferUnchecked self = liftDOM (((js_getTransfer (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"metadata\"] = $2; })"
+        js_setMetadata :: VideoFrameBufferInit -> VideoFrameMetadata -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-metadata VideoFrameBufferInit.metadata specification>
+setMetadata :: (MonadDOM m) => VideoFrameBufferInit -> VideoFrameMetadata -> m ()
+setMetadata self val = liftDOM (void ((js_setMetadata (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"metadata\"]; })"
+        js_getMetadata :: VideoFrameBufferInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-metadata VideoFrameBufferInit.metadata specification>
+getMetadata :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe VideoFrameMetadata)
+getMetadata self = liftDOM (((js_getMetadata (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-metadata VideoFrameBufferInit.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m VideoFrameMetadata
+getMetadataUnsafe self = liftDOM ((((js_getMetadata (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-metadata VideoFrameBufferInit.metadata specification>
+getMetadataUnchecked :: (MonadDOM m) => VideoFrameBufferInit -> m VideoFrameMetadata
+getMetadataUnchecked self = liftDOM ((pFromJSVal <$> (js_getMetadata (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrameCallbackMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameCallbackMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameCallbackMetadata.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from video-rvfc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrameCallbackMetadata
+       (js_newVideoFrameCallbackMetadata, js_setPresentationTime, js_getPresentationTime, js_setExpectedDisplayTime, js_getExpectedDisplayTime, js_setWidth, js_getWidth, js_setHeight, js_getHeight, js_setMediaTime, js_getMediaTime, js_setPresentedFrames, js_getPresentedFrames, js_setProcessingDuration, js_getProcessingDuration, js_setCaptureTime, js_getCaptureTime, js_setReceiveTime, js_getReceiveTime, js_setRtpTimestamp, js_getRtpTimestamp, newVideoFrameCallbackMetadata, setPresentationTime, getPresentationTime, setExpectedDisplayTime, getExpectedDisplayTime, setWidth, getWidth, setHeight, getHeight, setMediaTime, getMediaTime, setPresentedFrames, getPresentedFrames, setProcessingDuration, getProcessingDuration, getProcessingDurationUnsafe, getProcessingDurationUnchecked, setCaptureTime, getCaptureTime, getCaptureTimeUnsafe, getCaptureTimeUnchecked, setReceiveTime, getReceiveTime, getReceiveTimeUnsafe, getReceiveTimeUnchecked, setRtpTimestamp, getRtpTimestamp, getRtpTimestampUnsafe, getRtpTimestampUnchecked, VideoFrameCallbackMetadata(..), gTypeVideoFrameCallbackMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return ({\"presentationTime\": $1, \"expectedDisplayTime\": $2, \"width\": $3, \"height\": $4, \"mediaTime\": $5, \"presentedFrames\": $6}); })"
+        js_newVideoFrameCallbackMetadata :: Double -> Double -> Word -> Word -> Double -> Word -> IO VideoFrameCallbackMetadata
+-- | <https://wicg.github.io/video-rvfc/#dictdef-videoframecallbackmetadata VideoFrameCallbackMetadata specification>
+newVideoFrameCallbackMetadata :: (MonadDOM m) => Double -> Double -> Word -> Word -> Double -> Word -> m VideoFrameCallbackMetadata
+newVideoFrameCallbackMetadata presentationTime expectedDisplayTime width height mediaTime presentedFrames = liftDOM ((js_newVideoFrameCallbackMetadata (presentationTime) (expectedDisplayTime) (width) (height) (mediaTime) (presentedFrames)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"presentationTime\"] = $2; })"
+        js_setPresentationTime :: VideoFrameCallbackMetadata -> Double -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentationtime VideoFrameCallbackMetadata.presentationTime specification>
+setPresentationTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setPresentationTime self val = liftDOM (void ((js_setPresentationTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"presentationTime\"]; })"
+        js_getPresentationTime :: VideoFrameCallbackMetadata -> IO Double
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentationtime VideoFrameCallbackMetadata.presentationTime specification>
+getPresentationTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getPresentationTime self = liftDOM ((js_getPresentationTime (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"expectedDisplayTime\"] = $2; })"
+        js_setExpectedDisplayTime :: VideoFrameCallbackMetadata -> Double -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-expecteddisplaytime VideoFrameCallbackMetadata.expectedDisplayTime specification>
+setExpectedDisplayTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setExpectedDisplayTime self val = liftDOM (void ((js_setExpectedDisplayTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"expectedDisplayTime\"]; })"
+        js_getExpectedDisplayTime :: VideoFrameCallbackMetadata -> IO Double
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-expecteddisplaytime VideoFrameCallbackMetadata.expectedDisplayTime specification>
+getExpectedDisplayTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getExpectedDisplayTime self = liftDOM ((js_getExpectedDisplayTime (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })"
+        js_setWidth :: VideoFrameCallbackMetadata -> Word -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-width VideoFrameCallbackMetadata.width specification>
+setWidth :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setWidth self val = liftDOM (void ((js_setWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: VideoFrameCallbackMetadata -> IO Word
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-width VideoFrameCallbackMetadata.width specification>
+getWidth :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Word
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: VideoFrameCallbackMetadata -> Word -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-height VideoFrameCallbackMetadata.height specification>
+setHeight :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setHeight self val = liftDOM (void ((js_setHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: VideoFrameCallbackMetadata -> IO Word
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-height VideoFrameCallbackMetadata.height specification>
+getHeight :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Word
+getHeight self = liftDOM ((js_getHeight (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"mediaTime\"] = $2; })"
+        js_setMediaTime :: VideoFrameCallbackMetadata -> Double -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-mediatime VideoFrameCallbackMetadata.mediaTime specification>
+setMediaTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setMediaTime self val = liftDOM (void ((js_setMediaTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"mediaTime\"]; })"
+        js_getMediaTime :: VideoFrameCallbackMetadata -> IO Double
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-mediatime VideoFrameCallbackMetadata.mediaTime specification>
+getMediaTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getMediaTime self = liftDOM ((js_getMediaTime (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"presentedFrames\"] = $2; })"
+        js_setPresentedFrames :: VideoFrameCallbackMetadata -> Word -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentedframes VideoFrameCallbackMetadata.presentedFrames specification>
+setPresentedFrames :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setPresentedFrames self val = liftDOM (void ((js_setPresentedFrames (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"presentedFrames\"]; })"
+        js_getPresentedFrames :: VideoFrameCallbackMetadata -> IO Word
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentedframes VideoFrameCallbackMetadata.presentedFrames specification>
+getPresentedFrames :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Word
+getPresentedFrames self = liftDOM ((js_getPresentedFrames (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"processingDuration\"] = $2; })"
+        js_setProcessingDuration :: VideoFrameCallbackMetadata -> Double -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-processingduration VideoFrameCallbackMetadata.processingDuration specification>
+setProcessingDuration :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setProcessingDuration self val = liftDOM (void ((js_setProcessingDuration (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"processingDuration\"]; })"
+        js_getProcessingDuration :: VideoFrameCallbackMetadata -> IO JSVal
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-processingduration VideoFrameCallbackMetadata.processingDuration specification>
+getProcessingDuration :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Double)
+getProcessingDuration self = liftDOM (((js_getProcessingDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-processingduration VideoFrameCallbackMetadata.processingDuration specification>
+getProcessingDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Double
+getProcessingDurationUnsafe self = liftDOM ((((js_getProcessingDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-processingduration VideoFrameCallbackMetadata.processingDuration specification>
+getProcessingDurationUnchecked :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getProcessingDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getProcessingDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"captureTime\"] = $2; })"
+        js_setCaptureTime :: VideoFrameCallbackMetadata -> Double -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-capturetime VideoFrameCallbackMetadata.captureTime specification>
+setCaptureTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setCaptureTime self val = liftDOM (void ((js_setCaptureTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"captureTime\"]; })"
+        js_getCaptureTime :: VideoFrameCallbackMetadata -> IO JSVal
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-capturetime VideoFrameCallbackMetadata.captureTime specification>
+getCaptureTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Double)
+getCaptureTime self = liftDOM (((js_getCaptureTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-capturetime VideoFrameCallbackMetadata.captureTime specification>
+getCaptureTimeUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Double
+getCaptureTimeUnsafe self = liftDOM ((((js_getCaptureTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-capturetime VideoFrameCallbackMetadata.captureTime specification>
+getCaptureTimeUnchecked :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getCaptureTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCaptureTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"receiveTime\"] = $2; })"
+        js_setReceiveTime :: VideoFrameCallbackMetadata -> Double -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-receivetime VideoFrameCallbackMetadata.receiveTime specification>
+setReceiveTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setReceiveTime self val = liftDOM (void ((js_setReceiveTime (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"receiveTime\"]; })"
+        js_getReceiveTime :: VideoFrameCallbackMetadata -> IO JSVal
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-receivetime VideoFrameCallbackMetadata.receiveTime specification>
+getReceiveTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Double)
+getReceiveTime self = liftDOM (((js_getReceiveTime (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-receivetime VideoFrameCallbackMetadata.receiveTime specification>
+getReceiveTimeUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Double
+getReceiveTimeUnsafe self = liftDOM ((((js_getReceiveTime (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-receivetime VideoFrameCallbackMetadata.receiveTime specification>
+getReceiveTimeUnchecked :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getReceiveTimeUnchecked self = liftDOM ((pFromJSVal <$> (js_getReceiveTime (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rtpTimestamp\"] = $2; })"
+        js_setRtpTimestamp :: VideoFrameCallbackMetadata -> Word -> IO ()
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-rtptimestamp VideoFrameCallbackMetadata.rtpTimestamp specification>
+setRtpTimestamp :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setRtpTimestamp self val = liftDOM (void ((js_setRtpTimestamp (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rtpTimestamp\"]; })"
+        js_getRtpTimestamp :: VideoFrameCallbackMetadata -> IO JSVal
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-rtptimestamp VideoFrameCallbackMetadata.rtpTimestamp specification>
+getRtpTimestamp :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Word)
+getRtpTimestamp self = liftDOM (((js_getRtpTimestamp (self)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-rtptimestamp VideoFrameCallbackMetadata.rtpTimestamp specification>
+getRtpTimestampUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Word
+getRtpTimestampUnsafe self = liftDOM ((((js_getRtpTimestamp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-rtptimestamp VideoFrameCallbackMetadata.rtpTimestamp specification>
+getRtpTimestampUnchecked :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Word
+getRtpTimestampUnchecked self = liftDOM ((pFromJSVal <$> (js_getRtpTimestamp (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrameCopyToOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameCopyToOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameCopyToOptions.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrameCopyToOptions
+       (js_newVideoFrameCopyToOptions, js_setRect, js_getRect, js_setLayout, js_getLayout, js_setFormat, js_getFormat, js_setColorSpace, js_getColorSpace, newVideoFrameCopyToOptions, setRect, getRect, getRectUnsafe, getRectUnchecked, setLayout, getLayout, getLayoutUnsafe, getLayoutUnchecked, setFormat, getFormat, getFormatUnsafe, getFormatUnchecked, setColorSpace, getColorSpace, getColorSpaceUnsafe, getColorSpaceUnchecked, VideoFrameCopyToOptions(..), gTypeVideoFrameCopyToOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoFrameCopyToOptions :: IO VideoFrameCopyToOptions
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframecopytooptions VideoFrameCopyToOptions specification>
+newVideoFrameCopyToOptions :: (MonadDOM m) => m VideoFrameCopyToOptions
+newVideoFrameCopyToOptions = liftDOM ((js_newVideoFrameCopyToOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rect\"] = $2; })"
+        js_setRect :: VideoFrameCopyToOptions -> DOMRectInit -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-rect VideoFrameCopyToOptions.rect specification>
+setRect :: (MonadDOM m) => VideoFrameCopyToOptions -> DOMRectInit -> m ()
+setRect self val = liftDOM (void ((js_setRect (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rect\"]; })"
+        js_getRect :: VideoFrameCopyToOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-rect VideoFrameCopyToOptions.rect specification>
+getRect :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe DOMRectInit)
+getRect self = liftDOM (((js_getRect (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-rect VideoFrameCopyToOptions.rect specification>
+getRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m DOMRectInit
+getRectUnsafe self = liftDOM ((((js_getRect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-rect VideoFrameCopyToOptions.rect specification>
+getRectUnchecked :: (MonadDOM m) => VideoFrameCopyToOptions -> m DOMRectInit
+getRectUnchecked self = liftDOM ((pFromJSVal <$> (js_getRect (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"layout\"] = $2; })"
+        js_setLayout :: VideoFrameCopyToOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-layout VideoFrameCopyToOptions.layout specification>
+setLayout :: (MonadDOM m) => VideoFrameCopyToOptions -> [PlaneLayout] -> m ()
+setLayout self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLayout (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"layout\"]; })"
+        js_getLayout :: VideoFrameCopyToOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-layout VideoFrameCopyToOptions.layout specification>
+getLayout :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe [PlaneLayout])
+getLayout self = liftDOM (((js_getLayout (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-layout VideoFrameCopyToOptions.layout specification>
+getLayoutUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m [PlaneLayout]
+getLayoutUnsafe self = liftDOM ((((js_getLayout (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-layout VideoFrameCopyToOptions.layout specification>
+getLayoutUnchecked :: (MonadDOM m) => VideoFrameCopyToOptions -> m [PlaneLayout]
+getLayoutUnchecked self = liftDOM (((js_getLayout (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: VideoFrameCopyToOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-format VideoFrameCopyToOptions.format specification>
+setFormat :: (MonadDOM m) => VideoFrameCopyToOptions -> VideoPixelFormat -> m ()
+setFormat self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setFormat (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })"
+        js_getFormat :: VideoFrameCopyToOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-format VideoFrameCopyToOptions.format specification>
+getFormat :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe VideoPixelFormat)
+getFormat self = liftDOM (((js_getFormat (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-format VideoFrameCopyToOptions.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m VideoPixelFormat
+getFormatUnsafe self = liftDOM ((((js_getFormat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-format VideoFrameCopyToOptions.format specification>
+getFormatUnchecked :: (MonadDOM m) => VideoFrameCopyToOptions -> m VideoPixelFormat
+getFormatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFormat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"colorSpace\"] = $2; })"
+        js_setColorSpace :: VideoFrameCopyToOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-colorspace VideoFrameCopyToOptions.colorSpace specification>
+setColorSpace :: (MonadDOM m) => VideoFrameCopyToOptions -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setColorSpace (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"colorSpace\"]; })"
+        js_getColorSpace :: VideoFrameCopyToOptions -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-colorspace VideoFrameCopyToOptions.colorSpace specification>
+getColorSpace :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((js_getColorSpace (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-colorspace VideoFrameCopyToOptions.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((js_getColorSpace (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-colorspace VideoFrameCopyToOptions.colorSpace specification>
+getColorSpaceUnchecked :: (MonadDOM m) => VideoFrameCopyToOptions -> m PredefinedColorSpace
+getColorSpaceUnchecked self = liftDOM ((pFromJSVal <$> (js_getColorSpace (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrameInit.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameInit.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrameInit
+       (js_newVideoFrameInit, js_setDuration, js_getDuration, js_setTimestamp, js_getTimestamp, js_setAlpha, js_getAlpha, js_setVisibleRect, js_getVisibleRect, js_setRotation, js_getRotation, js_setFlip, js_getFlip, js_setDisplayWidth, js_getDisplayWidth, js_setDisplayHeight, js_getDisplayHeight, js_setMetadata, js_getMetadata, newVideoFrameInit, setDuration, getDuration, getDurationUnsafe, getDurationUnchecked, setTimestamp, getTimestamp, getTimestampUnsafe, getTimestampUnchecked, setAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked, setVisibleRect, getVisibleRect, getVisibleRectUnsafe, getVisibleRectUnchecked, setRotation, getRotation, getRotationUnsafe, getRotationUnchecked, setFlip, getFlip, getFlipUnsafe, getFlipUnchecked, setDisplayWidth, getDisplayWidth, getDisplayWidthUnsafe, getDisplayWidthUnchecked, setDisplayHeight, getDisplayHeight, getDisplayHeightUnsafe, getDisplayHeightUnchecked, setMetadata, getMetadata, getMetadataUnsafe, getMetadataUnchecked, VideoFrameInit(..), gTypeVideoFrameInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoFrameInit :: IO VideoFrameInit
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframeinit VideoFrameInit specification>
+newVideoFrameInit :: (MonadDOM m) => m VideoFrameInit
+newVideoFrameInit = liftDOM ((js_newVideoFrameInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: VideoFrameInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-duration VideoFrameInit.duration specification>
+setDuration :: (MonadDOM m) => VideoFrameInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDuration (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })"
+        js_getDuration :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-duration VideoFrameInit.duration specification>
+getDuration :: (MonadDOM m) => VideoFrameInit -> m (Maybe Word53)
+getDuration self = liftDOM (((js_getDuration (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-duration VideoFrameInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Word53
+getDurationUnsafe self = liftDOM ((((js_getDuration (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-duration VideoFrameInit.duration specification>
+getDurationUnchecked :: (MonadDOM m) => VideoFrameInit -> m Word53
+getDurationUnchecked self = liftDOM ((pFromJSVal <$> (js_getDuration (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"timestamp\"] = $2; })"
+        js_setTimestamp :: VideoFrameInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-timestamp VideoFrameInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => VideoFrameInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setTimestamp (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-timestamp VideoFrameInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => VideoFrameInit -> m (Maybe Int53)
+getTimestamp self = liftDOM (((js_getTimestamp (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-timestamp VideoFrameInit.timestamp specification>
+getTimestampUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Int53
+getTimestampUnsafe self = liftDOM ((((js_getTimestamp (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-timestamp VideoFrameInit.timestamp specification>
+getTimestampUnchecked :: (MonadDOM m) => VideoFrameInit -> m Int53
+getTimestampUnchecked self = liftDOM ((pFromJSVal <$> (js_getTimestamp (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alpha\"] = $2; })"
+        js_setAlpha :: VideoFrameInit -> JSVal -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-alpha VideoFrameInit.alpha specification>
+setAlpha :: (MonadDOM m) => VideoFrameInit -> AlphaOption -> m ()
+setAlpha self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAlpha (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-alpha VideoFrameInit.alpha specification>
+getAlpha :: (MonadDOM m) => VideoFrameInit -> m (Maybe AlphaOption)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-alpha VideoFrameInit.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m AlphaOption
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-alpha VideoFrameInit.alpha specification>
+getAlphaUnchecked :: (MonadDOM m) => VideoFrameInit -> m AlphaOption
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"visibleRect\"] = $2; })"
+        js_setVisibleRect :: VideoFrameInit -> DOMRectInit -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-visiblerect VideoFrameInit.visibleRect specification>
+setVisibleRect :: (MonadDOM m) => VideoFrameInit -> DOMRectInit -> m ()
+setVisibleRect self val = liftDOM (void ((js_setVisibleRect (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visibleRect\"]; })"
+        js_getVisibleRect :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-visiblerect VideoFrameInit.visibleRect specification>
+getVisibleRect :: (MonadDOM m) => VideoFrameInit -> m (Maybe DOMRectInit)
+getVisibleRect self = liftDOM (((js_getVisibleRect (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-visiblerect VideoFrameInit.visibleRect specification>
+getVisibleRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m DOMRectInit
+getVisibleRectUnsafe self = liftDOM ((((js_getVisibleRect (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-visiblerect VideoFrameInit.visibleRect specification>
+getVisibleRectUnchecked :: (MonadDOM m) => VideoFrameInit -> m DOMRectInit
+getVisibleRectUnchecked self = liftDOM ((pFromJSVal <$> (js_getVisibleRect (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rotation\"] = $2; })"
+        js_setRotation :: VideoFrameInit -> Double -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-rotation VideoFrameInit.rotation specification>
+setRotation :: (MonadDOM m) => VideoFrameInit -> Double -> m ()
+setRotation self val = liftDOM (void ((js_setRotation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rotation\"]; })"
+        js_getRotation :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-rotation VideoFrameInit.rotation specification>
+getRotation :: (MonadDOM m) => VideoFrameInit -> m (Maybe Double)
+getRotation self = liftDOM (((js_getRotation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-rotation VideoFrameInit.rotation specification>
+getRotationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Double
+getRotationUnsafe self = liftDOM ((((js_getRotation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-rotation VideoFrameInit.rotation specification>
+getRotationUnchecked :: (MonadDOM m) => VideoFrameInit -> m Double
+getRotationUnchecked self = liftDOM ((pFromJSVal <$> (js_getRotation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"flip\"] = $2; })"
+        js_setFlip :: VideoFrameInit -> Bool -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-flip VideoFrameInit.flip specification>
+setFlip :: (MonadDOM m) => VideoFrameInit -> Bool -> m ()
+setFlip self val = liftDOM (void ((js_setFlip (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"flip\"]; })"
+        js_getFlip :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-flip VideoFrameInit.flip specification>
+getFlip :: (MonadDOM m) => VideoFrameInit -> m (Maybe Bool)
+getFlip self = liftDOM (((js_getFlip (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-flip VideoFrameInit.flip specification>
+getFlipUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Bool
+getFlipUnsafe self = liftDOM ((((js_getFlip (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-flip VideoFrameInit.flip specification>
+getFlipUnchecked :: (MonadDOM m) => VideoFrameInit -> m Bool
+getFlipUnchecked self = liftDOM ((pFromJSVal <$> (js_getFlip (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayWidth\"] = $2; })"
+        js_setDisplayWidth :: VideoFrameInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displaywidth VideoFrameInit.displayWidth specification>
+setDisplayWidth :: (MonadDOM m) => VideoFrameInit -> Word -> m ()
+setDisplayWidth self val = liftDOM (void ((js_setDisplayWidth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayWidth\"]; })"
+        js_getDisplayWidth :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displaywidth VideoFrameInit.displayWidth specification>
+getDisplayWidth :: (MonadDOM m) => VideoFrameInit -> m (Maybe Word)
+getDisplayWidth self = liftDOM (((js_getDisplayWidth (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displaywidth VideoFrameInit.displayWidth specification>
+getDisplayWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Word
+getDisplayWidthUnsafe self = liftDOM ((((js_getDisplayWidth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displaywidth VideoFrameInit.displayWidth specification>
+getDisplayWidthUnchecked :: (MonadDOM m) => VideoFrameInit -> m Word
+getDisplayWidthUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayWidth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"displayHeight\"] = $2; })"
+        js_setDisplayHeight :: VideoFrameInit -> Word -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displayheight VideoFrameInit.displayHeight specification>
+setDisplayHeight :: (MonadDOM m) => VideoFrameInit -> Word -> m ()
+setDisplayHeight self val = liftDOM (void ((js_setDisplayHeight (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"displayHeight\"]; })"
+        js_getDisplayHeight :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displayheight VideoFrameInit.displayHeight specification>
+getDisplayHeight :: (MonadDOM m) => VideoFrameInit -> m (Maybe Word)
+getDisplayHeight self = liftDOM (((js_getDisplayHeight (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displayheight VideoFrameInit.displayHeight specification>
+getDisplayHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Word
+getDisplayHeightUnsafe self = liftDOM ((((js_getDisplayHeight (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displayheight VideoFrameInit.displayHeight specification>
+getDisplayHeightUnchecked :: (MonadDOM m) => VideoFrameInit -> m Word
+getDisplayHeightUnchecked self = liftDOM ((pFromJSVal <$> (js_getDisplayHeight (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"metadata\"] = $2; })"
+        js_setMetadata :: VideoFrameInit -> VideoFrameMetadata -> IO ()
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-metadata VideoFrameInit.metadata specification>
+setMetadata :: (MonadDOM m) => VideoFrameInit -> VideoFrameMetadata -> m ()
+setMetadata self val = liftDOM (void ((js_setMetadata (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"metadata\"]; })"
+        js_getMetadata :: VideoFrameInit -> IO JSVal
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-metadata VideoFrameInit.metadata specification>
+getMetadata :: (MonadDOM m) => VideoFrameInit -> m (Maybe VideoFrameMetadata)
+getMetadata self = liftDOM (((js_getMetadata (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-metadata VideoFrameInit.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m VideoFrameMetadata
+getMetadataUnsafe self = liftDOM ((((js_getMetadata (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-metadata VideoFrameInit.metadata specification>
+getMetadataUnchecked :: (MonadDOM m) => VideoFrameInit -> m VideoFrameMetadata
+getMetadataUnchecked self = liftDOM ((pFromJSVal <$> (js_getMetadata (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrameMetadata.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameMetadata.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrameMetadata
+       (js_newVideoFrameMetadata, js_setSegments, js_getSegments, js_setBackgroundBlur, js_getBackgroundBlur, js_setBackgroundSegmentationMask, js_getBackgroundSegmentationMask, newVideoFrameMetadata, setSegments, getSegments, getSegmentsUnsafe, getSegmentsUnchecked, setBackgroundBlur, getBackgroundBlur, getBackgroundBlurUnsafe, getBackgroundBlurUnchecked, setBackgroundSegmentationMask, getBackgroundSegmentationMask, getBackgroundSegmentationMaskUnsafe, getBackgroundSegmentationMaskUnchecked, VideoFrameMetadata(..), gTypeVideoFrameMetadata)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newVideoFrameMetadata :: IO VideoFrameMetadata
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframemetadata VideoFrameMetadata specification>
+newVideoFrameMetadata :: (MonadDOM m) => m VideoFrameMetadata
+newVideoFrameMetadata = liftDOM ((js_newVideoFrameMetadata))
+
+foreign import javascript safe "(($1, $2) => { $1[\"segments\"] = $2; })"
+        js_setSegments :: VideoFrameMetadata -> JSVal -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-segments VideoFrameMetadata.segments specification>
+setSegments :: (MonadDOM m) => VideoFrameMetadata -> [Segment] -> m ()
+setSegments self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSegments (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"segments\"]; })"
+        js_getSegments :: VideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-segments VideoFrameMetadata.segments specification>
+getSegments :: (MonadDOM m) => VideoFrameMetadata -> m (Maybe [Segment])
+getSegments self = liftDOM (((js_getSegments (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-segments VideoFrameMetadata.segments specification>
+getSegmentsUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameMetadata -> m [Segment]
+getSegmentsUnsafe self = liftDOM ((((js_getSegments (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-segments VideoFrameMetadata.segments specification>
+getSegmentsUnchecked :: (MonadDOM m) => VideoFrameMetadata -> m [Segment]
+getSegmentsUnchecked self = liftDOM (((js_getSegments (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundBlur\"] = $2; })"
+        js_setBackgroundBlur :: VideoFrameMetadata -> BackgroundBlur -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundblur VideoFrameMetadata.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => VideoFrameMetadata -> BackgroundBlur -> m ()
+setBackgroundBlur self val = liftDOM (void ((js_setBackgroundBlur (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundBlur\"]; })"
+        js_getBackgroundBlur :: VideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundblur VideoFrameMetadata.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => VideoFrameMetadata -> m (Maybe BackgroundBlur)
+getBackgroundBlur self = liftDOM (((js_getBackgroundBlur (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundblur VideoFrameMetadata.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameMetadata -> m BackgroundBlur
+getBackgroundBlurUnsafe self = liftDOM ((((js_getBackgroundBlur (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundblur VideoFrameMetadata.backgroundBlur specification>
+getBackgroundBlurUnchecked :: (MonadDOM m) => VideoFrameMetadata -> m BackgroundBlur
+getBackgroundBlurUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundBlur (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"backgroundSegmentationMask\"] = $2; })"
+        js_setBackgroundSegmentationMask :: VideoFrameMetadata -> ImageBitmap -> IO ()
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundsegmentationmask VideoFrameMetadata.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => VideoFrameMetadata -> ImageBitmap -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void ((js_setBackgroundSegmentationMask (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"backgroundSegmentationMask\"]; })"
+        js_getBackgroundSegmentationMask :: VideoFrameMetadata -> IO JSVal
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundsegmentationmask VideoFrameMetadata.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => VideoFrameMetadata -> m (Maybe ImageBitmap)
+getBackgroundSegmentationMask self = liftDOM (((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundsegmentationmask VideoFrameMetadata.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameMetadata -> m ImageBitmap
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((js_getBackgroundSegmentationMask (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundsegmentationmask VideoFrameMetadata.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnchecked :: (MonadDOM m) => VideoFrameMetadata -> m ImageBitmap
+getBackgroundSegmentationMaskUnchecked self = liftDOM ((pFromJSVal <$> (js_getBackgroundSegmentationMask (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrameOutputCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameOutputCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrameOutputCallback
+       (newVideoFrameOutputCallback, newVideoFrameOutputCallbackSync, newVideoFrameOutputCallbackAsync, VideoFrameOutputCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newVideoFrameOutputCallback :: (MonadDOM m) => (VideoFrame -> IO ()) -> m VideoFrameOutputCallback
+newVideoFrameOutputCallback callback = liftDOM ((VideoFrameOutputCallback . coerce) <$> syncCallback1 ContinueAsync (\ output -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newVideoFrameOutputCallbackSync :: (MonadDOM m) => (VideoFrame -> IO ()) -> m VideoFrameOutputCallback
+newVideoFrameOutputCallbackSync callback = liftDOM ((VideoFrameOutputCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ output -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newVideoFrameOutputCallbackAsync :: (MonadDOM m) => (VideoFrame -> IO ()) -> m VideoFrameOutputCallback
+newVideoFrameOutputCallbackAsync callback = liftDOM ((VideoFrameOutputCallback . coerce) <$> asyncCallback1 (\ output -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoFrameRequestCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameRequestCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoFrameRequestCallback.hs
@@ -0,0 +1,32 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from video-rvfc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VideoFrameRequestCallback
+       (newVideoFrameRequestCallback, newVideoFrameRequestCallbackSync, newVideoFrameRequestCallbackAsync, VideoFrameRequestCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback2, asyncCallback2)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newVideoFrameRequestCallback :: (MonadDOM m) => (Double -> VideoFrameCallbackMetadata -> IO ()) -> m VideoFrameRequestCallback
+newVideoFrameRequestCallback callback = liftDOM ((VideoFrameRequestCallback . coerce) <$> syncCallback2 ContinueAsync (\ now metadata -> do
+          now' <- fromJSValUnchecked now
+          metadata' <- fromJSValUnchecked metadata
+          callback now' metadata'))
+
+newVideoFrameRequestCallbackSync :: (MonadDOM m) => (Double -> VideoFrameCallbackMetadata -> IO ()) -> m VideoFrameRequestCallback
+newVideoFrameRequestCallbackSync callback = liftDOM ((VideoFrameRequestCallback . coerce) <$> syncCallback2 ThrowWouldBlock (\ now metadata -> do
+          now' <- fromJSValUnchecked now
+          metadata' <- fromJSValUnchecked metadata
+          callback now' metadata'))
+
+newVideoFrameRequestCallbackAsync :: (MonadDOM m) => (Double -> VideoFrameCallbackMetadata -> IO ()) -> m VideoFrameRequestCallback
+newVideoFrameRequestCallbackAsync callback = liftDOM ((VideoFrameRequestCallback . coerce) <$> asyncCallback2 (\ now metadata -> do
+          now' <- fromJSValUnchecked now
+          metadata' <- fromJSValUnchecked metadata
+          callback now' metadata'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
@@ -1,70 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-playback-quality (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
-       (js_getCreationTime, getCreationTime, js_getTotalVideoFrames,
-        getTotalVideoFrames, js_getDroppedVideoFrames,
-        getDroppedVideoFrames, js_getCorruptedVideoFrames,
-        getCorruptedVideoFrames, js_getTotalFrameDelay, getTotalFrameDelay,
-        VideoPlaybackQuality(..), gTypeVideoPlaybackQuality)
+       (js_getCreationTime, js_getDroppedVideoFrames, js_getTotalVideoFrames, js_getCorruptedVideoFrames, getCreationTime, getDroppedVideoFrames, getTotalVideoFrames, getCorruptedVideoFrames, VideoPlaybackQuality(..), gTypeVideoPlaybackQuality)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript unsafe "(($1) => { return $1[\"creationTime\"]; })"
         js_getCreationTime :: VideoPlaybackQuality -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.creationTime Mozilla VideoPlaybackQuality.creationTime documentation> 
-getCreationTime :: (MonadIO m) => VideoPlaybackQuality -> m Double
-getCreationTime self = liftIO (js_getCreationTime self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"totalVideoFrames\"]; })"
-        js_getTotalVideoFrames :: VideoPlaybackQuality -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/creationTime MDN VideoPlaybackQuality.creationTime documentation>
+getCreationTime :: (MonadDOM m) => VideoPlaybackQuality -> m Double
+getCreationTime self = liftDOM ((js_getCreationTime (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalVideoFrames Mozilla VideoPlaybackQuality.totalVideoFrames documentation> 
-getTotalVideoFrames ::
-                    (MonadIO m) => VideoPlaybackQuality -> m Word
-getTotalVideoFrames self = liftIO (js_getTotalVideoFrames self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"droppedVideoFrames\"]; })"
         js_getDroppedVideoFrames :: VideoPlaybackQuality -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/droppedVideoFrames MDN VideoPlaybackQuality.droppedVideoFrames documentation>
+getDroppedVideoFrames :: (MonadDOM m) => VideoPlaybackQuality -> m Word
+getDroppedVideoFrames self = liftDOM ((js_getDroppedVideoFrames (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.droppedVideoFrames Mozilla VideoPlaybackQuality.droppedVideoFrames documentation> 
-getDroppedVideoFrames ::
-                      (MonadIO m) => VideoPlaybackQuality -> m Word
-getDroppedVideoFrames self = liftIO (js_getDroppedVideoFrames self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"totalVideoFrames\"]; })"
+        js_getTotalVideoFrames :: VideoPlaybackQuality -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/totalVideoFrames MDN VideoPlaybackQuality.totalVideoFrames documentation>
+getTotalVideoFrames :: (MonadDOM m) => VideoPlaybackQuality -> m Word
+getTotalVideoFrames self = liftDOM ((js_getTotalVideoFrames (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"corruptedVideoFrames\"]; })"
         js_getCorruptedVideoFrames :: VideoPlaybackQuality -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.corruptedVideoFrames Mozilla VideoPlaybackQuality.corruptedVideoFrames documentation> 
-getCorruptedVideoFrames ::
-                        (MonadIO m) => VideoPlaybackQuality -> m Word
-getCorruptedVideoFrames self
-  = liftIO (js_getCorruptedVideoFrames self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"totalFrameDelay\"]; })"
-        js_getTotalFrameDelay :: VideoPlaybackQuality -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalFrameDelay Mozilla VideoPlaybackQuality.totalFrameDelay documentation> 
-getTotalFrameDelay ::
-                   (MonadIO m) => VideoPlaybackQuality -> m Double
-getTotalFrameDelay self = liftIO (js_getTotalFrameDelay self)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/corruptedVideoFrames MDN VideoPlaybackQuality.corruptedVideoFrames documentation>
+getCorruptedVideoFrames :: (MonadDOM m) => VideoPlaybackQuality -> m Word
+getCorruptedVideoFrames self = liftDOM ((js_getCorruptedVideoFrames (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
@@ -1,98 +1,67 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.VideoTrack
-       (js_getId, getId, js_setKind, setKind, js_getKind, getKind,
-        js_getLabel, getLabel, js_setLanguage, setLanguage, js_getLanguage,
-        getLanguage, js_setSelected, setSelected, js_getSelected,
-        getSelected, js_getSourceBuffer, getSourceBuffer, VideoTrack(..),
-        gTypeVideoTrack)
+       (js_getId, js_getKind, js_getLabel, js_getLanguage, js_setSelected, js_getSelected, js_getSourceBuffer, getId, getKind, getLabel, getLanguage, setSelected, getSelected, getSourceBuffer, getSourceBufferUnsafe, getSourceBufferUnchecked, VideoTrack(..), gTypeVideoTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
-        VideoTrack -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.id Mozilla VideoTrack.id documentation> 
-getId :: (MonadIO m, FromJSString result) => VideoTrack -> m result
-getId self = liftIO (fromJSString <$> (js_getId self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
-        VideoTrack -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
-setKind :: (MonadIO m, ToJSString val) => VideoTrack -> val -> m ()
-setKind self val = liftIO (js_setKind self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
-        VideoTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })"
+        js_getId :: VideoTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/id MDN VideoTrack.id documentation>
+getId :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getId self = liftDOM ((fromJSString <$> (js_getId (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
-getKind ::
-        (MonadIO m, FromJSString result) => VideoTrack -> m result
-getKind self = liftIO (fromJSString <$> (js_getKind self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        VideoTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })"
+        js_getKind :: VideoTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/kind MDN VideoTrack.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getKind self = liftDOM ((fromJSString <$> (js_getKind (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.label Mozilla VideoTrack.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => VideoTrack -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"language\"] = $2; })"
-        js_setLanguage :: VideoTrack -> JSString -> IO ()
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })"
+        js_getLabel :: VideoTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/label MDN VideoTrack.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getLabel self = liftDOM ((fromJSString <$> (js_getLabel (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
-setLanguage ::
-            (MonadIO m, ToJSString val) => VideoTrack -> val -> m ()
-setLanguage self val
-  = liftIO (js_setLanguage self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
-        :: VideoTrack -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })"
+        js_getLanguage :: VideoTrack -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/language MDN VideoTrack.language documentation>
+getLanguage :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getLanguage self = liftDOM ((fromJSString <$> (js_getLanguage (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
-getLanguage ::
-            (MonadIO m, FromJSString result) => VideoTrack -> m result
-getLanguage self = liftIO (fromJSString <$> (js_getLanguage self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"selected\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"selected\"] = $2; })"
         js_setSelected :: VideoTrack -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/selected MDN VideoTrack.selected documentation>
+setSelected :: (MonadDOM m) => VideoTrack -> Bool -> m ()
+setSelected self val = liftDOM (void ((js_setSelected (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
-setSelected :: (MonadIO m) => VideoTrack -> Bool -> m ()
-setSelected self val = liftIO (js_setSelected self val)
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"selected\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"selected\"]; })"
         js_getSelected :: VideoTrack -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/selected MDN VideoTrack.selected documentation>
+getSelected :: (MonadDOM m) => VideoTrack -> m Bool
+getSelected self = liftDOM ((js_getSelected (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
-getSelected :: (MonadIO m) => VideoTrack -> m Bool
-getSelected self = liftIO (js_getSelected self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffer\"]; })"
-        js_getSourceBuffer :: VideoTrack -> IO SourceBuffer
+        js_getSourceBuffer :: VideoTrack -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/sourceBuffer MDN VideoTrack.sourceBuffer documentation>
+getSourceBuffer :: (MonadDOM m) => VideoTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self = liftDOM (((js_getSourceBuffer (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.sourceBuffer Mozilla VideoTrack.sourceBuffer documentation> 
-getSourceBuffer :: (MonadIO m) => VideoTrack -> m SourceBuffer
-getSourceBuffer self = liftIO (js_getSourceBuffer self)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/sourceBuffer MDN VideoTrack.sourceBuffer documentation>
+getSourceBufferUnsafe :: (MonadDOM m, HasCallStack) => VideoTrack -> m SourceBuffer
+getSourceBufferUnsafe self = liftDOM ((((js_getSourceBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/sourceBuffer MDN VideoTrack.sourceBuffer documentation>
+getSourceBufferUnchecked :: (MonadDOM m) => VideoTrack -> m SourceBuffer
+getSourceBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getSourceBuffer (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
@@ -1,81 +1,59 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.VideoTrackList
-       (js_item, item, item_, js_getTrackById, getTrackById,
-        getTrackById_, js_getLength, getLength, js_getSelectedIndex,
-        getSelectedIndex, change, addTrack, removeTrack,
-        VideoTrackList(..), gTypeVideoTrackList)
+       (js_getTrackById, js_getLength, js_getSelectedIndex, getTrackById, getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked, getLength, getSelectedIndex, change, addTrack, removeTrack, VideoTrackList(..), gTypeVideoTrackList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
-        VideoTrackList -> Word -> IO VideoTrack
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
-item :: (MonadIO m) => VideoTrackList -> Word -> m VideoTrack
-item self index = liftIO (js_item self index)
+foreign import javascript safe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: VideoTrackList -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/getTrackById MDN VideoTrackList.getTrackById documentation>
+getTrackById :: (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m (Maybe VideoTrack)
+getTrackById self id = liftDOM (((js_getTrackById (self) (toJSString id)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
-item_ :: (MonadIO m) => VideoTrackList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
-        js_getTrackById :: VideoTrackList -> JSString -> IO VideoTrack
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/getTrackById MDN VideoTrackList.getTrackById documentation>
+getTrackById_ :: (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m ()
+getTrackById_ self id = liftDOM (void ((js_getTrackById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
-getTrackById ::
-             (MonadIO m, ToJSString id) => VideoTrackList -> id -> m VideoTrack
-getTrackById self id
-  = liftIO (js_getTrackById self (toJSString id))
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/getTrackById MDN VideoTrackList.getTrackById documentation>
+getTrackByIdUnsafe :: (MonadDOM m, ToJSString id, HasCallStack) => VideoTrackList -> id -> m VideoTrack
+getTrackByIdUnsafe self id = liftDOM ((((js_getTrackById (self) (toJSString id)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
-getTrackById_ ::
-              (MonadIO m, ToJSString id) => VideoTrackList -> id -> m ()
-getTrackById_ self id
-  = liftIO (void (js_getTrackById self (toJSString id)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        VideoTrackList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/getTrackById MDN VideoTrackList.getTrackById documentation>
+getTrackByIdUnchecked :: (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m VideoTrack
+getTrackByIdUnchecked self id = liftDOM ((pFromJSVal <$> (js_getTrackById (self) (toJSString id))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.length Mozilla VideoTrackList.length documentation> 
-getLength :: (MonadIO m) => VideoTrackList -> m Word
-getLength self = liftIO (js_getLength self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: VideoTrackList -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/length MDN VideoTrackList.length documentation>
+getLength :: (MonadDOM m) => VideoTrackList -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"selectedIndex\"]; })"
         js_getSelectedIndex :: VideoTrackList -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.selectedIndex Mozilla VideoTrackList.selectedIndex documentation> 
-getSelectedIndex :: (MonadIO m) => VideoTrackList -> m Int
-getSelectedIndex self = liftIO (js_getSelectedIndex self)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/selectedIndex MDN VideoTrackList.selectedIndex documentation>
+getSelectedIndex :: (MonadDOM m) => VideoTrackList -> m Int
+getSelectedIndex self = liftDOM ((js_getSelectedIndex (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onchange Mozilla VideoTrackList.onchange documentation> 
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-tracklist-onchange change event>
 change :: EventName VideoTrackList Event
 change = unsafeEventName (toJSString "change")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onaddtrack Mozilla VideoTrackList.onaddtrack documentation> 
-addTrack :: EventName VideoTrackList Event
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-tracklist-onaddtrack addtrack event>
+addTrack :: EventName VideoTrackList TrackEvent
 addTrack = unsafeEventName (toJSString "addtrack")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onremovetrack Mozilla VideoTrackList.onremovetrack documentation> 
-removeTrack :: EventName VideoTrackList Event
+-- | <https://html.spec.whatwg.org/multipage/media.html#handler-tracklist-onremovetrack removetrack event>
+removeTrack :: EventName VideoTrackList TrackEvent
 removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ViewTimeline.hs b/src/GHCJS/DOM/JSFFI/Generated/ViewTimeline.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ViewTimeline.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ViewTimeline
+       (js_newViewTimeline, js_getSubject, js_getStartOffset, js_getEndOffset, newViewTimeline, getSubject, getStartOffset, getEndOffset, ViewTimeline(..), gTypeViewTimeline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"ViewTimeline\"]($1); })"
+        js_newViewTimeline :: ViewTimelineOptions -> IO ViewTimeline
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/ViewTimeline MDN ViewTimeline. documentation>
+newViewTimeline :: (MonadDOM m) => ViewTimelineOptions -> m ViewTimeline
+newViewTimeline options = liftDOM ((js_newViewTimeline (options)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"subject\"]; })"
+        js_getSubject :: ViewTimeline -> IO Element
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/subject MDN ViewTimeline.subject documentation>
+getSubject :: (MonadDOM m) => ViewTimeline -> m Element
+getSubject self = liftDOM ((js_getSubject (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
+        js_getStartOffset :: ViewTimeline -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/startOffset MDN ViewTimeline.startOffset documentation>
+getStartOffset :: (MonadDOM m) => ViewTimeline -> m CSSNumericValue
+getStartOffset self = liftDOM ((js_getStartOffset (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"endOffset\"]; })"
+        js_getEndOffset :: ViewTimeline -> IO CSSNumericValue
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/endOffset MDN ViewTimeline.endOffset documentation>
+getEndOffset :: (MonadDOM m) => ViewTimeline -> m CSSNumericValue
+getEndOffset self = liftDOM ((js_getEndOffset (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ViewTimelineOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/ViewTimelineOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ViewTimelineOptions.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ViewTimelineOptions
+       (js_newViewTimelineOptions, js_setSubject, js_getSubject, js_setAxis, js_getAxis, js_setInset, js_getInset, newViewTimelineOptions, setSubject, getSubject, setAxis, getAxis, getAxisUnsafe, getAxisUnchecked, setInset, getInset, getInsetUnsafe, getInsetUnchecked, ViewTimelineOptions(..), gTypeViewTimelineOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"subject\": $1}); })"
+        js_newViewTimelineOptions :: Element -> IO ViewTimelineOptions
+-- | <https://drafts.csswg.org/scroll-animations-1/#dictdef-viewtimelineoptions ViewTimelineOptions specification>
+newViewTimelineOptions :: (MonadDOM m, IsElement subject) => subject -> m ViewTimelineOptions
+newViewTimelineOptions subject = liftDOM ((js_newViewTimelineOptions (Types.toElement subject)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"subject\"] = $2; })"
+        js_setSubject :: ViewTimelineOptions -> Element -> IO ()
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-subject ViewTimelineOptions.subject specification>
+setSubject :: (MonadDOM m, IsElement val) => ViewTimelineOptions -> val -> m ()
+setSubject self val = liftDOM (void ((js_setSubject (self) (Types.toElement val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"subject\"]; })"
+        js_getSubject :: ViewTimelineOptions -> IO Element
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-subject ViewTimelineOptions.subject specification>
+getSubject :: (MonadDOM m) => ViewTimelineOptions -> m Element
+getSubject self = liftDOM ((js_getSubject (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"axis\"] = $2; })"
+        js_setAxis :: ViewTimelineOptions -> JSVal -> IO ()
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-axis ViewTimelineOptions.axis specification>
+setAxis :: (MonadDOM m) => ViewTimelineOptions -> ScrollAxis -> m ()
+setAxis self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAxis (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"axis\"]; })"
+        js_getAxis :: ViewTimelineOptions -> IO JSVal
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-axis ViewTimelineOptions.axis specification>
+getAxis :: (MonadDOM m) => ViewTimelineOptions -> m (Maybe ScrollAxis)
+getAxis self = liftDOM (((js_getAxis (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-axis ViewTimelineOptions.axis specification>
+getAxisUnsafe :: (MonadDOM m, HasCallStack) => ViewTimelineOptions -> m ScrollAxis
+getAxisUnsafe self = liftDOM ((((js_getAxis (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-axis ViewTimelineOptions.axis specification>
+getAxisUnchecked :: (MonadDOM m) => ViewTimelineOptions -> m ScrollAxis
+getAxisUnchecked self = liftDOM ((pFromJSVal <$> (js_getAxis (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"inset\"] = $2; })"
+        js_setInset :: ViewTimelineOptions -> StringOrSequenceCSSNumericValueOrCSSKeywordValue -> IO ()
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-inset ViewTimelineOptions.inset specification>
+setInset :: (MonadDOM m, IsStringOrSequenceCSSNumericValueOrCSSKeywordValue val) => ViewTimelineOptions -> val -> m ()
+setInset self val = liftDOM (void ((js_setInset (self) (Types.toStringOrSequenceCSSNumericValueOrCSSKeywordValue val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"inset\"]; })"
+        js_getInset :: ViewTimelineOptions -> IO JSVal
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-inset ViewTimelineOptions.inset specification>
+getInset :: (MonadDOM m) => ViewTimelineOptions -> m (Maybe StringOrSequenceCSSNumericValueOrCSSKeywordValue)
+getInset self = liftDOM (((js_getInset (self)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-inset ViewTimelineOptions.inset specification>
+getInsetUnsafe :: (MonadDOM m, HasCallStack) => ViewTimelineOptions -> m StringOrSequenceCSSNumericValueOrCSSKeywordValue
+getInsetUnsafe self = liftDOM ((((js_getInset (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-inset ViewTimelineOptions.inset specification>
+getInsetUnchecked :: (MonadDOM m) => ViewTimelineOptions -> m StringOrSequenceCSSNumericValueOrCSSKeywordValue
+getInsetUnchecked self = liftDOM ((pFromJSVal <$> (js_getInset (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ViewTransition.hs b/src/GHCJS/DOM/JSFFI/Generated/ViewTransition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ViewTransition.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ViewTransition
+       (js_skipTransition, js_getUpdateCallbackDone, js_getReady, js_getFinished, js_getTypes, skipTransition, getUpdateCallbackDone, getReady, getFinished, getTypes, ViewTransition(..), gTypeViewTransition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"skipTransition\"](); })"
+        js_skipTransition :: ViewTransition -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/skipTransition MDN ViewTransition.skipTransition documentation>
+skipTransition :: (MonadDOM m) => ViewTransition -> m ()
+skipTransition self = liftDOM (void ((js_skipTransition (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"updateCallbackDone\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getUpdateCallbackDone :: ViewTransition -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/updateCallbackDone MDN ViewTransition.updateCallbackDone documentation>
+getUpdateCallbackDone :: (MonadDOM m) => ViewTransition -> m ()
+getUpdateCallbackDone self = liftDOM (void (((js_getUpdateCallbackDone (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: ViewTransition -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/ready MDN ViewTransition.ready documentation>
+getReady :: (MonadDOM m) => ViewTransition -> m ()
+getReady self = liftDOM (void (((js_getReady (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"finished\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getFinished :: ViewTransition -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/finished MDN ViewTransition.finished documentation>
+getFinished :: (MonadDOM m) => ViewTransition -> m ()
+getFinished self = liftDOM (void (((js_getFinished (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })"
+        js_getTypes :: ViewTransition -> IO ViewTransitionTypeSet
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/types MDN ViewTransition.types documentation>
+getTypes :: (MonadDOM m) => ViewTransition -> m ViewTransitionTypeSet
+getTypes self = liftDOM ((js_getTypes (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ViewTransitionTypeSet.hs b/src/GHCJS/DOM/JSFFI/Generated/ViewTransitionTypeSet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ViewTransitionTypeSet.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ViewTransitionTypeSet
+       (ViewTransitionTypeSet(..), gTypeViewTransitionTypeSet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ViewTransitionUpdateCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/ViewTransitionUpdateCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ViewTransitionUpdateCallback.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.ViewTransitionUpdateCallback
+       (newViewTransitionUpdateCallback, newViewTransitionUpdateCallbackSync, newViewTransitionUpdateCallbackAsync, ViewTransitionUpdateCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback, asyncCallback)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newViewTransitionUpdateCallback :: (MonadDOM m) => (IO ()) -> m ViewTransitionUpdateCallback
+newViewTransitionUpdateCallback callback = liftDOM ((ViewTransitionUpdateCallback . coerce) <$> syncCallback ContinueAsync callback)
+
+newViewTransitionUpdateCallbackSync :: (MonadDOM m) => (IO ()) -> m ViewTransitionUpdateCallback
+newViewTransitionUpdateCallbackSync callback = liftDOM ((ViewTransitionUpdateCallback . coerce) <$> syncCallback ThrowWouldBlock callback)
+
+newViewTransitionUpdateCallbackAsync :: (MonadDOM m) => (IO ()) -> m ViewTransitionUpdateCallback
+newViewTransitionUpdateCallbackAsync callback = liftDOM ((ViewTransitionUpdateCallback . coerce) <$> asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VisualViewport.hs b/src/GHCJS/DOM/JSFFI/Generated/VisualViewport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VisualViewport.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VisualViewport
+       (js_getOffsetLeft, js_getOffsetTop, js_getPageLeft, js_getPageTop, js_getWidth, js_getHeight, js_getScale, getOffsetLeft, getOffsetTop, getPageLeft, getPageTop, getWidth, getHeight, getScale, resize, scroll, scrollend, VisualViewport(..), gTypeVisualViewport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"offsetLeft\"]; })"
+        js_getOffsetLeft :: VisualViewport -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/offsetLeft MDN VisualViewport.offsetLeft documentation>
+getOffsetLeft :: (MonadDOM m) => VisualViewport -> m Double
+getOffsetLeft self = liftDOM ((js_getOffsetLeft (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"offsetTop\"]; })"
+        js_getOffsetTop :: VisualViewport -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/offsetTop MDN VisualViewport.offsetTop documentation>
+getOffsetTop :: (MonadDOM m) => VisualViewport -> m Double
+getOffsetTop self = liftDOM ((js_getOffsetTop (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pageLeft\"]; })"
+        js_getPageLeft :: VisualViewport -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/pageLeft MDN VisualViewport.pageLeft documentation>
+getPageLeft :: (MonadDOM m) => VisualViewport -> m Double
+getPageLeft self = liftDOM ((js_getPageLeft (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pageTop\"]; })"
+        js_getPageTop :: VisualViewport -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/pageTop MDN VisualViewport.pageTop documentation>
+getPageTop :: (MonadDOM m) => VisualViewport -> m Double
+getPageTop self = liftDOM ((js_getPageTop (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })"
+        js_getWidth :: VisualViewport -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/width MDN VisualViewport.width documentation>
+getWidth :: (MonadDOM m) => VisualViewport -> m Double
+getWidth self = liftDOM ((js_getWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })"
+        js_getHeight :: VisualViewport -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/height MDN VisualViewport.height documentation>
+getHeight :: (MonadDOM m) => VisualViewport -> m Double
+getHeight self = liftDOM ((js_getHeight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scale\"]; })"
+        js_getScale :: VisualViewport -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/scale MDN VisualViewport.scale documentation>
+getScale :: (MonadDOM m) => VisualViewport -> m Double
+getScale self = liftDOM ((js_getScale (self)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-visualviewport-onresize resize event>
+resize :: EventName VisualViewport Event
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-visualviewport-onscroll scroll event>
+scroll :: EventName VisualViewport Event
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-visualviewport-onscrollend scrollend event>
+scrollend :: EventName VisualViewport Event
+scrollend = unsafeEventName (toJSString "scrollend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.VoidCallback
-       (newVoidCallback, newVoidCallbackSync, newVoidCallbackAsync,
-        VoidCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
-newVoidCallback :: (MonadIO m) => IO () -> m VoidCallback
-newVoidCallback callback
-  = liftIO (VoidCallback <$> syncCallback ThrowWouldBlock callback)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
-newVoidCallbackSync :: (MonadIO m) => IO () -> m VoidCallback
-newVoidCallbackSync callback
-  = liftIO (VoidCallback <$> syncCallback ContinueAsync callback)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
-newVoidCallbackAsync :: (MonadIO m) => IO () -> m VoidCallback
-newVoidCallbackAsync callback
-  = liftIO (VoidCallback <$> asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VoidFunction.hs b/src/GHCJS/DOM/JSFFI/Generated/VoidFunction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VoidFunction.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webidl (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.VoidFunction
+       (newVoidFunction, newVoidFunctionSync, newVoidFunctionAsync, VoidFunction)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback, asyncCallback)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newVoidFunction :: (MonadDOM m) => (IO ()) -> m VoidFunction
+newVoidFunction callback = liftDOM ((VoidFunction . coerce) <$> syncCallback ContinueAsync callback)
+
+newVoidFunctionSync :: (MonadDOM m) => (IO ()) -> m VoidFunction
+newVoidFunctionSync callback = liftDOM ((VoidFunction . coerce) <$> syncCallback ThrowWouldBlock callback)
+
+newVoidFunctionAsync :: (MonadDOM m) => (IO ()) -> m VoidFunction
+newVoidFunctionAsync callback = liftDOM ((VoidFunction . coerce) <$> asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_color_buffer_float.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_color_buffer_float.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_color_buffer_float.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_color_buffer_float (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_color_buffer_float
+       (pattern RGBA32F_EXT, pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT, pattern UNSIGNED_NORMALIZED_EXT, WEBGL_color_buffer_float(..), gTypeWEBGL_color_buffer_float)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern RGBA32F_EXT = 0x8814
+
+pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211
+
+pattern UNSIGNED_NORMALIZED_EXT = 0x8C17
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_astc.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_astc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_astc.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_astc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_astc
+       (js_getSupportedProfiles, getSupportedProfiles, getSupportedProfiles_, pattern COMPRESSED_RGBA_ASTC_4x4_KHR, pattern COMPRESSED_RGBA_ASTC_5x4_KHR, pattern COMPRESSED_RGBA_ASTC_5x5_KHR, pattern COMPRESSED_RGBA_ASTC_6x5_KHR, pattern COMPRESSED_RGBA_ASTC_6x6_KHR, pattern COMPRESSED_RGBA_ASTC_8x5_KHR, pattern COMPRESSED_RGBA_ASTC_8x6_KHR, pattern COMPRESSED_RGBA_ASTC_8x8_KHR, pattern COMPRESSED_RGBA_ASTC_10x5_KHR, pattern COMPRESSED_RGBA_ASTC_10x6_KHR, pattern COMPRESSED_RGBA_ASTC_10x8_KHR, pattern COMPRESSED_RGBA_ASTC_10x10_KHR, pattern COMPRESSED_RGBA_ASTC_12x10_KHR, pattern COMPRESSED_RGBA_ASTC_12x12_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, pattern COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, WEBGL_compressed_texture_astc(..), gTypeWEBGL_compressed_texture_astc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"getSupportedProfiles\"](); })"
+        js_getSupportedProfiles :: WEBGL_compressed_texture_astc -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_compressed_texture_astc/getSupportedProfiles MDN WEBGL_compressed_texture_astc.getSupportedProfiles documentation>
+getSupportedProfiles :: (MonadDOM m, FromJSString result) => WEBGL_compressed_texture_astc -> m [result]
+getSupportedProfiles self = liftDOM (((js_getSupportedProfiles (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_compressed_texture_astc/getSupportedProfiles MDN WEBGL_compressed_texture_astc.getSupportedProfiles documentation>
+getSupportedProfiles_ :: (MonadDOM m) => WEBGL_compressed_texture_astc -> m ()
+getSupportedProfiles_ self = liftDOM (void ((js_getSupportedProfiles (self))))
+
+pattern COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0
+
+pattern COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1
+
+pattern COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2
+
+pattern COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3
+
+pattern COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4
+
+pattern COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5
+
+pattern COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6
+
+pattern COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7
+
+pattern COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8
+
+pattern COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9
+
+pattern COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA
+
+pattern COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB
+
+pattern COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC
+
+pattern COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC
+
+pattern COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_etc.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_etc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_etc.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_etc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_etc
+       (pattern COMPRESSED_R11_EAC, pattern COMPRESSED_SIGNED_R11_EAC, pattern COMPRESSED_RG11_EAC, pattern COMPRESSED_SIGNED_RG11_EAC, pattern COMPRESSED_RGB8_ETC2, pattern COMPRESSED_SRGB8_ETC2, pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, pattern COMPRESSED_RGBA8_ETC2_EAC, pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, WEBGL_compressed_texture_etc(..), gTypeWEBGL_compressed_texture_etc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPRESSED_R11_EAC = 0x9270
+
+pattern COMPRESSED_SIGNED_R11_EAC = 0x9271
+
+pattern COMPRESSED_RG11_EAC = 0x9272
+
+pattern COMPRESSED_SIGNED_RG11_EAC = 0x9273
+
+pattern COMPRESSED_RGB8_ETC2 = 0x9274
+
+pattern COMPRESSED_SRGB8_ETC2 = 0x9275
+
+pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276
+
+pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277
+
+pattern COMPRESSED_RGBA8_ETC2_EAC = 0x9278
+
+pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_etc1.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_etc1.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_etc1.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_etc1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_etc1
+       (pattern COMPRESSED_RGB_ETC1_WEBGL, WEBGL_compressed_texture_etc1(..), gTypeWEBGL_compressed_texture_etc1)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPRESSED_RGB_ETC1_WEBGL = 0x8D64
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_pvrtc.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_pvrtc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_pvrtc.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_pvrtc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_pvrtc
+       (pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG, pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG, pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, WEBGL_compressed_texture_pvrtc(..), gTypeWEBGL_compressed_texture_pvrtc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00
+
+pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01
+
+pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02
+
+pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_s3tc.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_s3tc.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_s3tc.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_s3tc (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_s3tc
+       (pattern COMPRESSED_RGB_S3TC_DXT1_EXT, pattern COMPRESSED_RGBA_S3TC_DXT1_EXT, pattern COMPRESSED_RGBA_S3TC_DXT3_EXT, pattern COMPRESSED_RGBA_S3TC_DXT5_EXT, WEBGL_compressed_texture_s3tc(..), gTypeWEBGL_compressed_texture_s3tc)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0
+
+pattern COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1
+
+pattern COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2
+
+pattern COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_s3tc_srgb.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_s3tc_srgb.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_compressed_texture_s3tc_srgb.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_s3tc_srgb (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_compressed_texture_s3tc_srgb
+       (pattern COMPRESSED_SRGB_S3TC_DXT1_EXT, pattern COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, pattern COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, pattern COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, WEBGL_compressed_texture_s3tc_srgb(..), gTypeWEBGL_compressed_texture_s3tc_srgb)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C
+
+pattern COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D
+
+pattern COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E
+
+pattern COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_debug_renderer_info.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_debug_renderer_info.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_debug_renderer_info.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_debug_renderer_info (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_debug_renderer_info
+       (pattern UNMASKED_VENDOR_WEBGL, pattern UNMASKED_RENDERER_WEBGL, WEBGL_debug_renderer_info(..), gTypeWEBGL_debug_renderer_info)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern UNMASKED_VENDOR_WEBGL = 0x9245
+
+pattern UNMASKED_RENDERER_WEBGL = 0x9246
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_debug_shaders.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_debug_shaders.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_debug_shaders.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_debug_shaders (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_debug_shaders
+       (js_getTranslatedShaderSource, getTranslatedShaderSource, getTranslatedShaderSource_, WEBGL_debug_shaders(..), gTypeWEBGL_debug_shaders)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getTranslatedShaderSource\"]($2); })"
+        js_getTranslatedShaderSource :: WEBGL_debug_shaders -> WebGLShader -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_debug_shaders/getTranslatedShaderSource MDN WEBGL_debug_shaders.getTranslatedShaderSource documentation>
+getTranslatedShaderSource :: (MonadDOM m, FromJSString result) => WEBGL_debug_shaders -> WebGLShader -> m result
+getTranslatedShaderSource self shader = liftDOM ((fromJSString <$> (js_getTranslatedShaderSource (self) (shader))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_debug_shaders/getTranslatedShaderSource MDN WEBGL_debug_shaders.getTranslatedShaderSource documentation>
+getTranslatedShaderSource_ :: (MonadDOM m) => WEBGL_debug_shaders -> WebGLShader -> m ()
+getTranslatedShaderSource_ self shader = liftDOM (void ((js_getTranslatedShaderSource (self) (shader))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_depth_texture.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_depth_texture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_depth_texture.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_depth_texture (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_depth_texture
+       (pattern UNSIGNED_INT_24_8_WEBGL, WEBGL_depth_texture(..), gTypeWEBGL_depth_texture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+pattern UNSIGNED_INT_24_8_WEBGL = 0x84FA
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_draw_buffers.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_draw_buffers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_draw_buffers.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_draw_buffers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_draw_buffers
+       (js_drawBuffersWEBGL, drawBuffersWEBGL, pattern COLOR_ATTACHMENT0_WEBGL, pattern COLOR_ATTACHMENT1_WEBGL, pattern COLOR_ATTACHMENT2_WEBGL, pattern COLOR_ATTACHMENT3_WEBGL, pattern COLOR_ATTACHMENT4_WEBGL, pattern COLOR_ATTACHMENT5_WEBGL, pattern COLOR_ATTACHMENT6_WEBGL, pattern COLOR_ATTACHMENT7_WEBGL, pattern COLOR_ATTACHMENT8_WEBGL, pattern COLOR_ATTACHMENT9_WEBGL, pattern COLOR_ATTACHMENT10_WEBGL, pattern COLOR_ATTACHMENT11_WEBGL, pattern COLOR_ATTACHMENT12_WEBGL, pattern COLOR_ATTACHMENT13_WEBGL, pattern COLOR_ATTACHMENT14_WEBGL, pattern COLOR_ATTACHMENT15_WEBGL, pattern DRAW_BUFFER0_WEBGL, pattern DRAW_BUFFER1_WEBGL, pattern DRAW_BUFFER2_WEBGL, pattern DRAW_BUFFER3_WEBGL, pattern DRAW_BUFFER4_WEBGL, pattern DRAW_BUFFER5_WEBGL, pattern DRAW_BUFFER6_WEBGL, pattern DRAW_BUFFER7_WEBGL, pattern DRAW_BUFFER8_WEBGL, pattern DRAW_BUFFER9_WEBGL, pattern DRAW_BUFFER10_WEBGL, pattern DRAW_BUFFER11_WEBGL, pattern DRAW_BUFFER12_WEBGL, pattern DRAW_BUFFER13_WEBGL, pattern DRAW_BUFFER14_WEBGL, pattern DRAW_BUFFER15_WEBGL, pattern MAX_COLOR_ATTACHMENTS_WEBGL, pattern MAX_DRAW_BUFFERS_WEBGL, WEBGL_draw_buffers(..), gTypeWEBGL_draw_buffers)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"drawBuffersWEBGL\"]($2); })"
+        js_drawBuffersWEBGL :: WEBGL_draw_buffers -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_draw_buffers/drawBuffersWEBGL MDN WEBGL_draw_buffers.drawBuffersWEBGL documentation>
+drawBuffersWEBGL :: (MonadDOM m) => WEBGL_draw_buffers -> [Word] -> m ()
+drawBuffersWEBGL self buffers = liftDOM (void (((toJSVal buffers) >>= \a2' -> js_drawBuffersWEBGL (self) a2')))
+
+pattern COLOR_ATTACHMENT0_WEBGL = 0x8CE0
+
+pattern COLOR_ATTACHMENT1_WEBGL = 0x8CE1
+
+pattern COLOR_ATTACHMENT2_WEBGL = 0x8CE2
+
+pattern COLOR_ATTACHMENT3_WEBGL = 0x8CE3
+
+pattern COLOR_ATTACHMENT4_WEBGL = 0x8CE4
+
+pattern COLOR_ATTACHMENT5_WEBGL = 0x8CE5
+
+pattern COLOR_ATTACHMENT6_WEBGL = 0x8CE6
+
+pattern COLOR_ATTACHMENT7_WEBGL = 0x8CE7
+
+pattern COLOR_ATTACHMENT8_WEBGL = 0x8CE8
+
+pattern COLOR_ATTACHMENT9_WEBGL = 0x8CE9
+
+pattern COLOR_ATTACHMENT10_WEBGL = 0x8CEA
+
+pattern COLOR_ATTACHMENT11_WEBGL = 0x8CEB
+
+pattern COLOR_ATTACHMENT12_WEBGL = 0x8CEC
+
+pattern COLOR_ATTACHMENT13_WEBGL = 0x8CED
+
+pattern COLOR_ATTACHMENT14_WEBGL = 0x8CEE
+
+pattern COLOR_ATTACHMENT15_WEBGL = 0x8CEF
+
+pattern DRAW_BUFFER0_WEBGL = 0x8825
+
+pattern DRAW_BUFFER1_WEBGL = 0x8826
+
+pattern DRAW_BUFFER2_WEBGL = 0x8827
+
+pattern DRAW_BUFFER3_WEBGL = 0x8828
+
+pattern DRAW_BUFFER4_WEBGL = 0x8829
+
+pattern DRAW_BUFFER5_WEBGL = 0x882A
+
+pattern DRAW_BUFFER6_WEBGL = 0x882B
+
+pattern DRAW_BUFFER7_WEBGL = 0x882C
+
+pattern DRAW_BUFFER8_WEBGL = 0x882D
+
+pattern DRAW_BUFFER9_WEBGL = 0x882E
+
+pattern DRAW_BUFFER10_WEBGL = 0x882F
+
+pattern DRAW_BUFFER11_WEBGL = 0x8830
+
+pattern DRAW_BUFFER12_WEBGL = 0x8831
+
+pattern DRAW_BUFFER13_WEBGL = 0x8832
+
+pattern DRAW_BUFFER14_WEBGL = 0x8833
+
+pattern DRAW_BUFFER15_WEBGL = 0x8834
+
+pattern MAX_COLOR_ATTACHMENTS_WEBGL = 0x8CDF
+
+pattern MAX_DRAW_BUFFERS_WEBGL = 0x8824
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_lose_context.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_lose_context.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_lose_context.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_lose_context (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_lose_context
+       (js_loseContext, js_restoreContext, loseContext, restoreContext, WEBGL_lose_context(..), gTypeWEBGL_lose_context)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"loseContext\"](); })"
+        js_loseContext :: WEBGL_lose_context -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_lose_context/loseContext MDN WEBGL_lose_context.loseContext documentation>
+loseContext :: (MonadDOM m) => WEBGL_lose_context -> m ()
+loseContext self = liftDOM (void ((js_loseContext (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"restoreContext\"](); })"
+        js_restoreContext :: WEBGL_lose_context -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_lose_context/restoreContext MDN WEBGL_lose_context.restoreContext documentation>
+restoreContext :: (MonadDOM m) => WEBGL_lose_context -> m ()
+restoreContext self = liftDOM (void ((js_restoreContext (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WEBGL_multi_draw.hs b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_multi_draw.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WEBGL_multi_draw.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_multi_draw (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WEBGL_multi_draw
+       (js_multiDrawArraysInstancedWEBGL, js_multiDrawArraysWEBGL, js_multiDrawElementsInstancedWEBGL, js_multiDrawElementsWEBGL, multiDrawArraysInstancedWEBGL, multiDrawArraysWEBGL, multiDrawElementsInstancedWEBGL, multiDrawElementsWEBGL, WEBGL_multi_draw(..), gTypeWEBGL_multi_draw)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"multiDrawArraysInstancedWEBGL\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_multiDrawArraysInstancedWEBGL :: WEBGL_multi_draw -> Word -> Int32List -> JSVal -> Int32ArrayOrSequenceGLsizei -> JSVal -> Int32ArrayOrSequenceGLsizei -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_multi_draw/multiDrawArraysInstancedWEBGL MDN WEBGL_multi_draw.multiDrawArraysInstancedWEBGL documentation>
+multiDrawArraysInstancedWEBGL :: (MonadDOM m, IsInt32List firstsList, IsInt32ArrayOrSequenceGLsizei countsList, IsInt32ArrayOrSequenceGLsizei instanceCountsList) => WEBGL_multi_draw -> Word -> firstsList -> Word53 -> countsList -> Word53 -> instanceCountsList -> Word53 -> Int -> m ()
+multiDrawArraysInstancedWEBGL self mode firstsList firstsOffset countsList countsOffset instanceCountsList instanceCountsOffset drawcount = liftDOM (void (((toJSVal firstsOffset) >>= \a4' -> (toJSVal countsOffset) >>= \a6' -> (toJSVal instanceCountsOffset) >>= \a8' -> js_multiDrawArraysInstancedWEBGL (self) (mode) (Types.toInt32List firstsList) a4' (Types.toInt32ArrayOrSequenceGLsizei countsList) a6' (Types.toInt32ArrayOrSequenceGLsizei instanceCountsList) a8' (drawcount))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"multiDrawArraysWEBGL\"]($2, $3, $4, $5, $6, $7); })"
+        js_multiDrawArraysWEBGL :: WEBGL_multi_draw -> Word -> Int32List -> JSVal -> Int32ArrayOrSequenceGLsizei -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_multi_draw/multiDrawArraysWEBGL MDN WEBGL_multi_draw.multiDrawArraysWEBGL documentation>
+multiDrawArraysWEBGL :: (MonadDOM m, IsInt32List firstsList, IsInt32ArrayOrSequenceGLsizei countsList) => WEBGL_multi_draw -> Word -> firstsList -> Word53 -> countsList -> Word53 -> Int -> m ()
+multiDrawArraysWEBGL self mode firstsList firstsOffset countsList countsOffset drawcount = liftDOM (void (((toJSVal firstsOffset) >>= \a4' -> (toJSVal countsOffset) >>= \a6' -> js_multiDrawArraysWEBGL (self) (mode) (Types.toInt32List firstsList) a4' (Types.toInt32ArrayOrSequenceGLsizei countsList) a6' (drawcount))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"multiDrawElementsInstancedWEBGL\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_multiDrawElementsInstancedWEBGL :: WEBGL_multi_draw -> Word -> Int32ArrayOrSequenceGLsizei -> JSVal -> Word -> Int32ArrayOrSequenceGLsizei -> JSVal -> Int32ArrayOrSequenceGLsizei -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_multi_draw/multiDrawElementsInstancedWEBGL MDN WEBGL_multi_draw.multiDrawElementsInstancedWEBGL documentation>
+multiDrawElementsInstancedWEBGL :: (MonadDOM m, IsInt32ArrayOrSequenceGLsizei countsList, IsInt32ArrayOrSequenceGLsizei offsetsList, IsInt32ArrayOrSequenceGLsizei instanceCountsList) => WEBGL_multi_draw -> Word -> countsList -> Word53 -> Word -> offsetsList -> Word53 -> instanceCountsList -> Word53 -> Int -> m ()
+multiDrawElementsInstancedWEBGL self mode countsList countsOffset type' offsetsList offsetsOffset instanceCountsList instanceCountsOffset drawcount = liftDOM (void (((toJSVal countsOffset) >>= \a4' -> (toJSVal offsetsOffset) >>= \a7' -> (toJSVal instanceCountsOffset) >>= \a9' -> js_multiDrawElementsInstancedWEBGL (self) (mode) (Types.toInt32ArrayOrSequenceGLsizei countsList) a4' (type') (Types.toInt32ArrayOrSequenceGLsizei offsetsList) a7' (Types.toInt32ArrayOrSequenceGLsizei instanceCountsList) a9' (drawcount))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"multiDrawElementsWEBGL\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_multiDrawElementsWEBGL :: WEBGL_multi_draw -> Word -> Int32ArrayOrSequenceGLsizei -> JSVal -> Word -> Int32ArrayOrSequenceGLsizei -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WEBGL_multi_draw/multiDrawElementsWEBGL MDN WEBGL_multi_draw.multiDrawElementsWEBGL documentation>
+multiDrawElementsWEBGL :: (MonadDOM m, IsInt32ArrayOrSequenceGLsizei countsList, IsInt32ArrayOrSequenceGLsizei offsetsList) => WEBGL_multi_draw -> Word -> countsList -> Word53 -> Word -> offsetsList -> Word53 -> Int -> m ()
+multiDrawElementsWEBGL self mode countsList countsOffset type' offsetsList offsetsOffset drawcount = liftDOM (void (((toJSVal countsOffset) >>= \a4' -> (toJSVal offsetsOffset) >>= \a7' -> js_multiDrawElementsWEBGL (self) (mode) (Types.toInt32ArrayOrSequenceGLsizei countsList) a4' (type') (Types.toInt32ArrayOrSequenceGLsizei offsetsList) a7' (drawcount))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WGSLLanguageFeatures.hs b/src/GHCJS/DOM/JSFFI/Generated/WGSLLanguageFeatures.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WGSLLanguageFeatures.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WGSLLanguageFeatures
+       (WGSLLanguageFeatures(..), gTypeWGSLLanguageFeatures)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WakeLock.hs b/src/GHCJS/DOM/JSFFI/Generated/WakeLock.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WakeLock.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-wake-lock (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WakeLock
+       (js_request, request, request_, WakeLock(..), gTypeWakeLock)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"request\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_request :: WakeLock -> JSVal -> IO (JSVal, WakeLockSentinel)
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLock/request MDN WakeLock.request documentation>
+request :: (MonadDOM m) => WakeLock -> Maybe WakeLockType -> m WakeLockSentinel
+request self type' = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal type') >>= \a2' -> js_request (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLock/request MDN WakeLock.request documentation>
+request_ :: (MonadDOM m) => WakeLock -> Maybe WakeLockType -> m ()
+request_ self type' = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal type') >>= \a2' -> js_request (self) a2') >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WakeLockSentinel.hs b/src/GHCJS/DOM/JSFFI/Generated/WakeLockSentinel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WakeLockSentinel.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-wake-lock (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WakeLockSentinel
+       (js_release, js_getReleased, js_getType, release, getReleased, getType, releaseEvent, WakeLockSentinel(..), gTypeWakeLockSentinel)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"release\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_release :: WakeLockSentinel -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLockSentinel/release MDN WakeLockSentinel.release documentation>
+release :: (MonadDOM m) => WakeLockSentinel -> m ()
+release self = liftDOM (void (((js_release (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"released\"]; })"
+        js_getReleased :: WakeLockSentinel -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLockSentinel/released MDN WakeLockSentinel.released documentation>
+getReleased :: (MonadDOM m) => WakeLockSentinel -> m Bool
+getReleased self = liftDOM ((js_getReleased (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: WakeLockSentinel -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLockSentinel/type MDN WakeLockSentinel.type documentation>
+getType :: (MonadDOM m) => WakeLockSentinel -> m WakeLockType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/screen-wake-lock/#dom-wakelocksentinel-onrelease release event>
+releaseEvent :: EventName WakeLockSentinel Event
+releaseEvent = unsafeEventName (toJSString "release")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
@@ -1,60 +1,55 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WaveShaperNode
-       (js_setCurve, setCurve, js_getCurve, getCurve, js_setOversample,
-        setOversample, js_getOversample, getOversample, WaveShaperNode(..),
-        gTypeWaveShaperNode)
+       (js_newWaveShaperNode, js_setCurve, js_getCurve, js_setOversample, js_getOversample, newWaveShaperNode, setCurve, getCurve, getCurveUnsafe, getCurveUnchecked, setOversample, getOversample, WaveShaperNode(..), gTypeWaveShaperNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"curve\"] = $2; })" js_setCurve
-        :: WaveShaperNode -> Float32Array -> IO ()
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
-setCurve ::
-         (MonadIO m, IsFloat32Array val) => WaveShaperNode -> val -> m ()
-setCurve self val = liftIO (js_setCurve self (toFloat32Array val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"curve\"]; })" js_getCurve ::
-        WaveShaperNode -> IO Float32Array
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"WaveShaperNode\"]($1, $2); })"
+        js_newWaveShaperNode :: BaseAudioContext -> JSVal -> IO WaveShaperNode
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/WaveShaperNode MDN WaveShaperNode. documentation>
+newWaveShaperNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe WaveShaperOptions -> m WaveShaperNode
+newWaveShaperNode context options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newWaveShaperNode (Types.toBaseAudioContext context) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
-getCurve :: (MonadIO m) => WaveShaperNode -> m Float32Array
-getCurve self = liftIO (js_getCurve self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"oversample\"] = $2; })"
+foreign import javascript safe "(($1, $2) => { $1[\"curve\"] = $2; })"
+        js_setCurve :: WaveShaperNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/curve MDN WaveShaperNode.curve documentation>
+setCurve :: (MonadDOM m, IsFloat32Array val) => WaveShaperNode -> Maybe val -> m ()
+setCurve self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCurve (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"curve\"]; })"
+        js_getCurve :: WaveShaperNode -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/curve MDN WaveShaperNode.curve documentation>
+getCurve :: (MonadDOM m) => WaveShaperNode -> m (Maybe Float32Array)
+getCurve self = liftDOM (((js_getCurve (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/curve MDN WaveShaperNode.curve documentation>
+getCurveUnsafe :: (MonadDOM m, HasCallStack) => WaveShaperNode -> m Float32Array
+getCurveUnsafe self = liftDOM ((((js_getCurve (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/curve MDN WaveShaperNode.curve documentation>
+getCurveUnchecked :: (MonadDOM m) => WaveShaperNode -> m Float32Array
+getCurveUnchecked self = liftDOM ((pFromJSVal <$> (js_getCurve (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oversample\"] = $2; })"
         js_setOversample :: WaveShaperNode -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/oversample MDN WaveShaperNode.oversample documentation>
+setOversample :: (MonadDOM m) => WaveShaperNode -> OverSampleType -> m ()
+setOversample self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOversample (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
-setOversample ::
-              (MonadIO m) => WaveShaperNode -> OverSampleType -> m ()
-setOversample self val
-  = liftIO (js_setOversample self (pToJSVal val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"oversample\"]; })"
         js_getOversample :: WaveShaperNode -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
-getOversample :: (MonadIO m) => WaveShaperNode -> m OverSampleType
-getOversample self
-  = liftIO ((js_getOversample self) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/oversample MDN WaveShaperNode.oversample documentation>
+getOversample :: (MonadDOM m) => WaveShaperNode -> m OverSampleType
+getOversample self = liftDOM (((js_getOversample (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WaveShaperOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WaveShaperOptions
+       (js_newWaveShaperOptions, js_setCurve, js_getCurve, js_setOversample, js_getOversample, newWaveShaperOptions, setCurve, getCurve, getCurveUnsafe, getCurveUnchecked, setOversample, getOversample, getOversampleUnsafe, getOversampleUnchecked, WaveShaperOptions(..), gTypeWaveShaperOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWaveShaperOptions :: IO WaveShaperOptions
+-- | <https://webaudio.github.io/web-audio-api/#WaveShaperOptions WaveShaperOptions specification>
+newWaveShaperOptions :: (MonadDOM m) => m WaveShaperOptions
+newWaveShaperOptions = liftDOM ((js_newWaveShaperOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"curve\"] = $2; })"
+        js_setCurve :: WaveShaperOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-curve WaveShaperOptions.curve specification>
+setCurve :: (MonadDOM m) => WaveShaperOptions -> [Float] -> m ()
+setCurve self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCurve (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"curve\"]; })"
+        js_getCurve :: WaveShaperOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-curve WaveShaperOptions.curve specification>
+getCurve :: (MonadDOM m) => WaveShaperOptions -> m (Maybe [Float])
+getCurve self = liftDOM (((js_getCurve (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-curve WaveShaperOptions.curve specification>
+getCurveUnsafe :: (MonadDOM m, HasCallStack) => WaveShaperOptions -> m [Float]
+getCurveUnsafe self = liftDOM ((((js_getCurve (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-curve WaveShaperOptions.curve specification>
+getCurveUnchecked :: (MonadDOM m) => WaveShaperOptions -> m [Float]
+getCurveUnchecked self = liftDOM (((js_getCurve (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"oversample\"] = $2; })"
+        js_setOversample :: WaveShaperOptions -> JSVal -> IO ()
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-oversample WaveShaperOptions.oversample specification>
+setOversample :: (MonadDOM m) => WaveShaperOptions -> OverSampleType -> m ()
+setOversample self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOversample (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"oversample\"]; })"
+        js_getOversample :: WaveShaperOptions -> IO JSVal
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-oversample WaveShaperOptions.oversample specification>
+getOversample :: (MonadDOM m) => WaveShaperOptions -> m (Maybe OverSampleType)
+getOversample self = liftDOM (((js_getOversample (self)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-oversample WaveShaperOptions.oversample specification>
+getOversampleUnsafe :: (MonadDOM m, HasCallStack) => WaveShaperOptions -> m OverSampleType
+getOversampleUnsafe self = liftDOM ((((js_getOversample (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-oversample WaveShaperOptions.oversample specification>
+getOversampleUnchecked :: (MonadDOM m) => WaveShaperOptions -> m OverSampleType
+getOversampleUnchecked self = liftDOM ((pFromJSVal <$> (js_getOversample (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebCodecsErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/WebCodecsErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebCodecsErrorCallback.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebCodecsErrorCallback
+       (newWebCodecsErrorCallback, newWebCodecsErrorCallbackSync, newWebCodecsErrorCallbackAsync, WebCodecsErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+newWebCodecsErrorCallback :: (MonadDOM m) => (DOMException -> IO ()) -> m WebCodecsErrorCallback
+newWebCodecsErrorCallback callback = liftDOM ((WebCodecsErrorCallback . coerce) <$> syncCallback1 ContinueAsync (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newWebCodecsErrorCallbackSync :: (MonadDOM m) => (DOMException -> IO ()) -> m WebCodecsErrorCallback
+newWebCodecsErrorCallbackSync callback = liftDOM ((WebCodecsErrorCallback . coerce) <$> syncCallback1 ThrowWouldBlock (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newWebCodecsErrorCallbackAsync :: (MonadDOM m) => (DOMException -> IO ()) -> m WebCodecsErrorCallback
+newWebCodecsErrorCallbackAsync callback = liftDOM ((WebCodecsErrorCallback . coerce) <$> asyncCallback1 (\ error -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
@@ -1,2111 +1,18 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
-       (js_bufferDataPtr, bufferDataPtr, js_bufferData, bufferData,
-        js_bufferSubData, bufferSubData, js_bufferDataView, bufferDataView,
-        js_bufferSubDataView, bufferSubDataView, js_copyBufferSubData,
-        copyBufferSubData, js_getBufferSubData, getBufferSubData,
-        js_blitFramebuffer, blitFramebuffer, js_framebufferTextureLayer,
-        framebufferTextureLayer, js_getInternalformatParameter,
-        getInternalformatParameter, getInternalformatParameter_,
-        js_invalidateFramebuffer, invalidateFramebuffer,
-        js_invalidateSubFramebuffer, invalidateSubFramebuffer,
-        js_readBuffer, readBuffer, js_renderbufferStorageMultisample,
-        renderbufferStorageMultisample, js_texStorage2D, texStorage2D,
-        js_texStorage3D, texStorage3D, js_texImage3D, texImage3D,
-        js_texSubImage3DView, texSubImage3DView, js_texSubImage3D,
-        texSubImage3D, js_copyTexSubImage3D, copyTexSubImage3D,
-        js_compressedTexImage3D, compressedTexImage3D,
-        js_compressedTexSubImage3D, compressedTexSubImage3D,
-        js_getFragDataLocation, getFragDataLocation, getFragDataLocation_,
-        js_uniform1ui, uniform1ui, js_uniform2ui, uniform2ui,
-        js_uniform3ui, uniform3ui, js_uniform4ui, uniform4ui,
-        js_uniform1uiv, uniform1uiv, js_uniform2uiv, uniform2uiv,
-        js_uniform3uiv, uniform3uiv, js_uniform4uiv, uniform4uiv,
-        js_uniformMatrix2x3fv, uniformMatrix2x3fv, js_uniformMatrix3x2fv,
-        uniformMatrix3x2fv, js_uniformMatrix2x4fv, uniformMatrix2x4fv,
-        js_uniformMatrix4x2fv, uniformMatrix4x2fv, js_uniformMatrix3x4fv,
-        uniformMatrix3x4fv, js_uniformMatrix4x3fv, uniformMatrix4x3fv,
-        js_vertexAttribI4i, vertexAttribI4i, js_vertexAttribI4iv,
-        vertexAttribI4iv, js_vertexAttribI4ui, vertexAttribI4ui,
-        js_vertexAttribI4uiv, vertexAttribI4uiv, js_vertexAttribIPointer,
-        vertexAttribIPointer, js_vertexAttribDivisor, vertexAttribDivisor,
-        js_drawArraysInstanced, drawArraysInstanced,
-        js_drawElementsInstanced, drawElementsInstanced,
-        js_drawRangeElements, drawRangeElements, js_drawBuffers,
-        drawBuffers, js_clearBufferiv, clearBufferiv, js_clearBufferuiv,
-        clearBufferuiv, js_clearBufferfv, clearBufferfv, js_clearBufferfi,
-        clearBufferfi, js_createQuery, createQuery, createQuery_,
-        js_deleteQuery, deleteQuery, js_isQuery, isQuery, isQuery_,
-        js_beginQuery, beginQuery, js_endQuery, endQuery, js_getQuery,
-        getQuery, getQuery_, js_getQueryParameter, getQueryParameter,
-        getQueryParameter_, js_createSampler, createSampler,
-        createSampler_, js_deleteSampler, deleteSampler, js_isSampler,
-        isSampler, isSampler_, js_bindSampler, bindSampler,
-        js_samplerParameteri, samplerParameteri, js_samplerParameterf,
-        samplerParameterf, js_getSamplerParameter, getSamplerParameter,
-        getSamplerParameter_, js_fenceSync, fenceSync, fenceSync_,
-        js_isSync, isSync, isSync_, js_deleteSync, deleteSync,
-        js_clientWaitSync, clientWaitSync, clientWaitSync_, js_waitSync,
-        waitSync, js_getSyncParameter, getSyncParameter, getSyncParameter_,
-        js_createTransformFeedback, createTransformFeedback,
-        createTransformFeedback_, js_deleteTransformFeedback,
-        deleteTransformFeedback, js_isTransformFeedback,
-        isTransformFeedback, isTransformFeedback_,
-        js_bindTransformFeedback, bindTransformFeedback,
-        js_beginTransformFeedback, beginTransformFeedback,
-        js_endTransformFeedback, endTransformFeedback,
-        js_transformFeedbackVaryings, transformFeedbackVaryings,
-        js_getTransformFeedbackVarying, getTransformFeedbackVarying,
-        getTransformFeedbackVarying_, js_pauseTransformFeedback,
-        pauseTransformFeedback, js_resumeTransformFeedback,
-        resumeTransformFeedback, js_bindBufferBase, bindBufferBase,
-        js_bindBufferRange, bindBufferRange, js_getIndexedParameter,
-        getIndexedParameter, getIndexedParameter_, js_getUniformIndices,
-        getUniformIndices, getUniformIndices_, js_getActiveUniforms,
-        getActiveUniforms, getActiveUniforms_, js_getUniformBlockIndex,
-        getUniformBlockIndex, getUniformBlockIndex_,
-        js_getActiveUniformBlockParameter, getActiveUniformBlockParameter,
-        getActiveUniformBlockParameter_, js_getActiveUniformBlockName,
-        getActiveUniformBlockName, getActiveUniformBlockName_,
-        js_uniformBlockBinding, uniformBlockBinding, js_createVertexArray,
-        createVertexArray, createVertexArray_, js_deleteVertexArray,
-        deleteVertexArray, js_isVertexArray, isVertexArray, isVertexArray_,
-        js_bindVertexArray, bindVertexArray, pattern READ_BUFFER,
-        pattern UNPACK_ROW_LENGTH, pattern UNPACK_SKIP_ROWS,
-        pattern UNPACK_SKIP_PIXELS, pattern PACK_ROW_LENGTH,
-        pattern PACK_SKIP_ROWS, pattern PACK_SKIP_PIXELS, pattern COLOR,
-        pattern DEPTH, pattern STENCIL, pattern RED, pattern RGB8,
-        pattern RGBA8, pattern RGB10_A2, pattern TEXTURE_BINDING_3D,
-        pattern UNPACK_SKIP_IMAGES, pattern UNPACK_IMAGE_HEIGHT,
-        pattern TEXTURE_3D, pattern TEXTURE_WRAP_R,
-        pattern MAX_3D_TEXTURE_SIZE, pattern UNSIGNED_INT_2_10_10_10_REV,
-        pattern MAX_ELEMENTS_VERTICES, pattern MAX_ELEMENTS_INDICES,
-        pattern TEXTURE_MIN_LOD, pattern TEXTURE_MAX_LOD,
-        pattern TEXTURE_BASE_LEVEL, pattern TEXTURE_MAX_LEVEL, pattern MIN,
-        pattern MAX, pattern DEPTH_COMPONENT24,
-        pattern MAX_TEXTURE_LOD_BIAS, pattern TEXTURE_COMPARE_MODE,
-        pattern TEXTURE_COMPARE_FUNC, pattern CURRENT_QUERY,
-        pattern QUERY_RESULT, pattern QUERY_RESULT_AVAILABLE,
-        pattern STREAM_READ, pattern STREAM_COPY, pattern STATIC_READ,
-        pattern STATIC_COPY, pattern DYNAMIC_READ, pattern DYNAMIC_COPY,
-        pattern MAX_DRAW_BUFFERS, pattern DRAW_BUFFER0,
-        pattern DRAW_BUFFER1, pattern DRAW_BUFFER2, pattern DRAW_BUFFER3,
-        pattern DRAW_BUFFER4, pattern DRAW_BUFFER5, pattern DRAW_BUFFER6,
-        pattern DRAW_BUFFER7, pattern DRAW_BUFFER8, pattern DRAW_BUFFER9,
-        pattern DRAW_BUFFER10, pattern DRAW_BUFFER11,
-        pattern DRAW_BUFFER12, pattern DRAW_BUFFER13,
-        pattern DRAW_BUFFER14, pattern DRAW_BUFFER15,
-        pattern MAX_FRAGMENT_UNIFORM_COMPONENTS,
-        pattern MAX_VERTEX_UNIFORM_COMPONENTS, pattern SAMPLER_3D,
-        pattern SAMPLER_2D_SHADOW, pattern FRAGMENT_SHADER_DERIVATIVE_HINT,
-        pattern PIXEL_PACK_BUFFER, pattern PIXEL_UNPACK_BUFFER,
-        pattern PIXEL_PACK_BUFFER_BINDING,
-        pattern PIXEL_UNPACK_BUFFER_BINDING, pattern FLOAT_MAT2x3,
-        pattern FLOAT_MAT2x4, pattern FLOAT_MAT3x2, pattern FLOAT_MAT3x4,
-        pattern FLOAT_MAT4x2, pattern FLOAT_MAT4x3, pattern SRGB,
-        pattern SRGB8, pattern SRGB8_ALPHA8,
-        pattern COMPARE_REF_TO_TEXTURE, pattern RGBA32F, pattern RGB32F,
-        pattern RGBA16F, pattern RGB16F,
-        pattern VERTEX_ATTRIB_ARRAY_INTEGER,
-        pattern MAX_ARRAY_TEXTURE_LAYERS, pattern MIN_PROGRAM_TEXEL_OFFSET,
-        pattern MAX_PROGRAM_TEXEL_OFFSET, pattern MAX_VARYING_COMPONENTS,
-        pattern TEXTURE_2D_ARRAY, pattern TEXTURE_BINDING_2D_ARRAY,
-        pattern R11F_G11F_B10F, pattern UNSIGNED_INT_10F_11F_11F_REV,
-        pattern RGB9_E5, pattern UNSIGNED_INT_5_9_9_9_REV,
-        pattern TRANSFORM_FEEDBACK_BUFFER_MODE,
-        pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
-        pattern TRANSFORM_FEEDBACK_VARYINGS,
-        pattern TRANSFORM_FEEDBACK_BUFFER_START,
-        pattern TRANSFORM_FEEDBACK_BUFFER_SIZE,
-        pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,
-        pattern RASTERIZER_DISCARD,
-        pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
-        pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
-        pattern INTERLEAVED_ATTRIBS, pattern SEPARATE_ATTRIBS,
-        pattern TRANSFORM_FEEDBACK_BUFFER,
-        pattern TRANSFORM_FEEDBACK_BUFFER_BINDING, pattern RGBA32UI,
-        pattern RGB32UI, pattern RGBA16UI, pattern RGB16UI,
-        pattern RGBA8UI, pattern RGB8UI, pattern RGBA32I, pattern RGB32I,
-        pattern RGBA16I, pattern RGB16I, pattern RGBA8I, pattern RGB8I,
-        pattern RED_INTEGER, pattern RGB_INTEGER, pattern RGBA_INTEGER,
-        pattern SAMPLER_2D_ARRAY, pattern SAMPLER_2D_ARRAY_SHADOW,
-        pattern SAMPLER_CUBE_SHADOW, pattern UNSIGNED_INT_VEC2,
-        pattern UNSIGNED_INT_VEC3, pattern UNSIGNED_INT_VEC4,
-        pattern INT_SAMPLER_2D, pattern INT_SAMPLER_3D,
-        pattern INT_SAMPLER_CUBE, pattern INT_SAMPLER_2D_ARRAY,
-        pattern UNSIGNED_INT_SAMPLER_2D, pattern UNSIGNED_INT_SAMPLER_3D,
-        pattern UNSIGNED_INT_SAMPLER_CUBE,
-        pattern UNSIGNED_INT_SAMPLER_2D_ARRAY, pattern DEPTH_COMPONENT32F,
-        pattern DEPTH32F_STENCIL8, pattern FLOAT_32_UNSIGNED_INT_24_8_REV,
-        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,
-        pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,
-        pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE,
-        pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
-        pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
-        pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
-        pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
-        pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
-        pattern FRAMEBUFFER_DEFAULT, pattern DEPTH_STENCIL_ATTACHMENT,
-        pattern DEPTH_STENCIL, pattern UNSIGNED_INT_24_8,
-        pattern DEPTH24_STENCIL8, pattern UNSIGNED_NORMALIZED,
-        pattern DRAW_FRAMEBUFFER_BINDING, pattern READ_FRAMEBUFFER,
-        pattern DRAW_FRAMEBUFFER, pattern READ_FRAMEBUFFER_BINDING,
-        pattern RENDERBUFFER_SAMPLES,
-        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,
-        pattern MAX_COLOR_ATTACHMENTS, pattern COLOR_ATTACHMENT1,
-        pattern COLOR_ATTACHMENT2, pattern COLOR_ATTACHMENT3,
-        pattern COLOR_ATTACHMENT4, pattern COLOR_ATTACHMENT5,
-        pattern COLOR_ATTACHMENT6, pattern COLOR_ATTACHMENT7,
-        pattern COLOR_ATTACHMENT8, pattern COLOR_ATTACHMENT9,
-        pattern COLOR_ATTACHMENT10, pattern COLOR_ATTACHMENT11,
-        pattern COLOR_ATTACHMENT12, pattern COLOR_ATTACHMENT13,
-        pattern COLOR_ATTACHMENT14, pattern COLOR_ATTACHMENT15,
-        pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, pattern MAX_SAMPLES,
-        pattern HALF_FLOAT, pattern RG, pattern RG_INTEGER, pattern R8,
-        pattern RG8, pattern R16F, pattern R32F, pattern RG16F,
-        pattern RG32F, pattern R8I, pattern R8UI, pattern R16I,
-        pattern R16UI, pattern R32I, pattern R32UI, pattern RG8I,
-        pattern RG8UI, pattern RG16I, pattern RG16UI, pattern RG32I,
-        pattern RG32UI, pattern VERTEX_ARRAY_BINDING, pattern R8_SNORM,
-        pattern RG8_SNORM, pattern RGB8_SNORM, pattern RGBA8_SNORM,
-        pattern SIGNED_NORMALIZED, pattern PRIMITIVE_RESTART_FIXED_INDEX,
-        pattern COPY_READ_BUFFER, pattern COPY_WRITE_BUFFER,
-        pattern COPY_READ_BUFFER_BINDING,
-        pattern COPY_WRITE_BUFFER_BINDING, pattern UNIFORM_BUFFER,
-        pattern UNIFORM_BUFFER_BINDING, pattern UNIFORM_BUFFER_START,
-        pattern UNIFORM_BUFFER_SIZE, pattern MAX_VERTEX_UNIFORM_BLOCKS,
-        pattern MAX_FRAGMENT_UNIFORM_BLOCKS,
-        pattern MAX_COMBINED_UNIFORM_BLOCKS,
-        pattern MAX_UNIFORM_BUFFER_BINDINGS,
-        pattern MAX_UNIFORM_BLOCK_SIZE,
-        pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,
-        pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
-        pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT,
-        pattern ACTIVE_UNIFORM_BLOCKS, pattern UNIFORM_TYPE,
-        pattern UNIFORM_SIZE, pattern UNIFORM_BLOCK_INDEX,
-        pattern UNIFORM_OFFSET, pattern UNIFORM_ARRAY_STRIDE,
-        pattern UNIFORM_MATRIX_STRIDE, pattern UNIFORM_IS_ROW_MAJOR,
-        pattern UNIFORM_BLOCK_BINDING, pattern UNIFORM_BLOCK_DATA_SIZE,
-        pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS,
-        pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
-        pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,
-        pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER,
-        pattern INVALID_INDEX, pattern MAX_VERTEX_OUTPUT_COMPONENTS,
-        pattern MAX_FRAGMENT_INPUT_COMPONENTS,
-        pattern MAX_SERVER_WAIT_TIMEOUT, pattern OBJECT_TYPE,
-        pattern SYNC_CONDITION, pattern SYNC_STATUS, pattern SYNC_FLAGS,
-        pattern SYNC_FENCE, pattern SYNC_GPU_COMMANDS_COMPLETE,
-        pattern UNSIGNALED, pattern SIGNALED, pattern ALREADY_SIGNALED,
-        pattern TIMEOUT_EXPIRED, pattern CONDITION_SATISFIED,
-        pattern WAIT_FAILED, pattern SYNC_FLUSH_COMMANDS_BIT,
-        pattern VERTEX_ATTRIB_ARRAY_DIVISOR, pattern ANY_SAMPLES_PASSED,
-        pattern ANY_SAMPLES_PASSED_CONSERVATIVE, pattern SAMPLER_BINDING,
-        pattern RGB10_A2UI, pattern TEXTURE_SWIZZLE_R,
-        pattern TEXTURE_SWIZZLE_G, pattern TEXTURE_SWIZZLE_B,
-        pattern TEXTURE_SWIZZLE_A, pattern GREEN, pattern BLUE,
-        pattern INT_2_10_10_10_REV, pattern TRANSFORM_FEEDBACK,
-        pattern TRANSFORM_FEEDBACK_PAUSED,
-        pattern TRANSFORM_FEEDBACK_ACTIVE,
-        pattern TRANSFORM_FEEDBACK_BINDING, pattern COMPRESSED_R11_EAC,
-        pattern COMPRESSED_SIGNED_R11_EAC, pattern COMPRESSED_RG11_EAC,
-        pattern COMPRESSED_SIGNED_RG11_EAC, pattern COMPRESSED_RGB8_ETC2,
-        pattern COMPRESSED_SRGB8_ETC2,
-        pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
-        pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
-        pattern COMPRESSED_RGBA8_ETC2_EAC,
-        pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
-        pattern TEXTURE_IMMUTABLE_FORMAT, pattern MAX_ELEMENT_INDEX,
-        pattern NUM_SAMPLE_COUNTS, pattern TEXTURE_IMMUTABLE_LEVELS,
-        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, pattern TIMEOUT_IGNORED,
-        WebGL2RenderingContext(..), gTypeWebGL2RenderingContext)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
-        js_bufferDataPtr ::
-        WebGL2RenderingContext -> GLenum -> Double -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
-bufferDataPtr ::
-              (MonadIO m) =>
-                WebGL2RenderingContext -> GLenum -> GLsizeiptr -> GLenum -> m ()
-bufferDataPtr self target size usage
-  = liftIO (js_bufferDataPtr self target (fromIntegral size) usage)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
-        js_bufferData ::
-        WebGL2RenderingContext ->
-          GLenum -> Optional BufferDataSource -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
-bufferData ::
-           (MonadIO m, IsBufferDataSource srcData) =>
-             WebGL2RenderingContext -> GLenum -> Maybe srcData -> GLenum -> m ()
-bufferData self target srcData usage
-  = liftIO
-      (js_bufferData self target
-         (maybeToOptional (fmap toBufferDataSource srcData))
-         usage)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"bufferSubData\"]($2, $3, $4); })" js_bufferSubData ::
-        WebGL2RenderingContext ->
-          GLenum -> Double -> Optional BufferDataSource -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferSubData Mozilla WebGL2RenderingContext.bufferSubData documentation> 
-bufferSubData ::
-              (MonadIO m, IsBufferDataSource srcData) =>
-                WebGL2RenderingContext ->
-                  GLenum -> GLintptr -> Maybe srcData -> m ()
-bufferSubData self target dstByteOffset srcData
-  = liftIO
-      (js_bufferSubData self target (fromIntegral dstByteOffset)
-         (maybeToOptional (fmap toBufferDataSource srcData)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"bufferData\"]($2, $3, $4, $5,\n$6); })" js_bufferDataView ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            ArrayBufferView -> GLenum -> GLuint -> Optional GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
-bufferDataView ::
-               (MonadIO m, IsArrayBufferView data') =>
-                 WebGL2RenderingContext ->
-                   GLenum -> data' -> GLenum -> GLuint -> Maybe GLuint -> m ()
-bufferDataView self target data' usage srcOffset length
-  = liftIO
-      (js_bufferDataView self target (toArrayBufferView data') usage
-         srcOffset
-         (maybeToOptional length))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"bufferSubData\"]($2, $3, $4,\n$5, $6); })" js_bufferSubDataView
-        ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            Double -> ArrayBufferView -> GLuint -> Optional GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferSubData Mozilla WebGL2RenderingContext.bufferSubData documentation> 
-bufferSubDataView ::
-                  (MonadIO m, IsArrayBufferView srcData) =>
-                    WebGL2RenderingContext ->
-                      GLenum -> GLintptr -> srcData -> GLuint -> Maybe GLuint -> m ()
-bufferSubDataView self target dstByteOffset srcData srcOffset
-  length
-  = liftIO
-      (js_bufferSubDataView self target (fromIntegral dstByteOffset)
-         (toArrayBufferView srcData)
-         srcOffset
-         (maybeToOptional length))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"copyBufferSubData\"]($2, $3,\n$4, $5, $6); })"
-        js_copyBufferSubData ::
-        WebGL2RenderingContext ->
-          GLenum -> GLenum -> Double -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyBufferSubData Mozilla WebGL2RenderingContext.copyBufferSubData documentation> 
-copyBufferSubData ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext ->
-                      GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
-copyBufferSubData self readTarget writeTarget readOffset
-  writeOffset size
-  = liftIO
-      (js_copyBufferSubData self readTarget writeTarget
-         (fromIntegral readOffset)
-         (fromIntegral writeOffset)
-         (fromIntegral size))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"getBufferSubData\"]($2, $3,\n$4, $5, $6); })" js_getBufferSubData
-        ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            Double ->
-              ArrayBufferView -> Optional GLuint -> Optional GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getBufferSubData Mozilla WebGL2RenderingContext.getBufferSubData documentation> 
-getBufferSubData ::
-                 (MonadIO m, IsArrayBufferView dstData) =>
-                   WebGL2RenderingContext ->
-                     GLenum ->
-                       GLintptr -> dstData -> Maybe GLuint -> Maybe GLuint -> m ()
-getBufferSubData self target srcByteOffset dstData dstOffset length
-  = liftIO
-      (js_getBufferSubData self target (fromIntegral srcByteOffset)
-         (toArrayBufferView dstData)
-         (maybeToOptional dstOffset)
-         (maybeToOptional length))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"blitFramebuffer\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11); })"
-        js_blitFramebuffer ::
-        WebGL2RenderingContext ->
-          GLint ->
-            GLint ->
-              GLint ->
-                GLint ->
-                  GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.blitFramebuffer Mozilla WebGL2RenderingContext.blitFramebuffer documentation> 
-blitFramebuffer ::
-                (MonadIO m) =>
-                  WebGL2RenderingContext ->
-                    GLint ->
-                      GLint ->
-                        GLint ->
-                          GLint ->
-                            GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
-blitFramebuffer self srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1
-  dstY1 mask filter
-  = liftIO
-      (js_blitFramebuffer self srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1
-         dstY1
-         mask
-         filter)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"framebufferTextureLayer\"]($2,\n$3, $4, $5, $6); })"
-        js_framebufferTextureLayer ::
-        WebGL2RenderingContext ->
-          GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.framebufferTextureLayer Mozilla WebGL2RenderingContext.framebufferTextureLayer documentation> 
-framebufferTextureLayer ::
-                        (MonadIO m) =>
-                          WebGL2RenderingContext ->
-                            GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
-framebufferTextureLayer self target attachment texture level layer
-  = liftIO
-      (js_framebufferTextureLayer self target attachment texture level
-         layer)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"getInternalformatParameter\"]($2,\n$3, $4); })"
-        js_getInternalformatParameter ::
-        WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
-getInternalformatParameter ::
-                           (MonadIO m) =>
-                             WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m JSVal
-getInternalformatParameter self target internalformat pname
-  = liftIO
-      (js_getInternalformatParameter self target internalformat pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
-getInternalformatParameter_ ::
-                            (MonadIO m) =>
-                              WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m ()
-getInternalformatParameter_ self target internalformat pname
-  = liftIO
-      (void
-         (js_getInternalformatParameter self target internalformat pname))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"invalidateFramebuffer\"]($2,\n$3); })" js_invalidateFramebuffer
-        :: WebGL2RenderingContext -> GLenum -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateFramebuffer Mozilla WebGL2RenderingContext.invalidateFramebuffer documentation> 
-invalidateFramebuffer ::
-                      (MonadIO m) => WebGL2RenderingContext -> GLenum -> [GLenum] -> m ()
-invalidateFramebuffer self target attachments
-  = liftIO
-      (toJSVal attachments >>=
-         \ attachments' ->
-           js_invalidateFramebuffer self target attachments')
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"invalidateSubFramebuffer\"]($2,\n$3, $4, $5, $6, $7); })"
-        js_invalidateSubFramebuffer ::
-        WebGL2RenderingContext ->
-          GLenum -> JSVal -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateSubFramebuffer Mozilla WebGL2RenderingContext.invalidateSubFramebuffer documentation> 
-invalidateSubFramebuffer ::
-                         (MonadIO m) =>
-                           WebGL2RenderingContext ->
-                             GLenum -> [GLenum] -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-invalidateSubFramebuffer self target attachments x y width height
-  = liftIO
-      (toJSVal attachments >>=
-         \ attachments' ->
-           js_invalidateSubFramebuffer self target attachments'
-         x
-         y
-         width
-         height)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"readBuffer\"]($2); })"
-        js_readBuffer :: WebGL2RenderingContext -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.readBuffer Mozilla WebGL2RenderingContext.readBuffer documentation> 
-readBuffer ::
-           (MonadIO m) => WebGL2RenderingContext -> GLenum -> m ()
-readBuffer self src = liftIO (js_readBuffer self src)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"renderbufferStorageMultisample\"]($2,\n$3, $4, $5, $6); })"
-        js_renderbufferStorageMultisample ::
-        WebGL2RenderingContext ->
-          GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.renderbufferStorageMultisample Mozilla WebGL2RenderingContext.renderbufferStorageMultisample documentation> 
-renderbufferStorageMultisample ::
-                               (MonadIO m) =>
-                                 WebGL2RenderingContext ->
-                                   GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
-renderbufferStorageMultisample self target samples internalformat
-  width height
-  = liftIO
-      (js_renderbufferStorageMultisample self target samples
-         internalformat
-         width
-         height)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"texStorage2D\"]($2, $3, $4,\n$5, $6); })" js_texStorage2D ::
-        WebGL2RenderingContext ->
-          GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage2D Mozilla WebGL2RenderingContext.texStorage2D documentation> 
-texStorage2D ::
-             (MonadIO m) =>
-               WebGL2RenderingContext ->
-                 GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
-texStorage2D self target levels internalformat width height
-  = liftIO
-      (js_texStorage2D self target levels internalformat width height)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"texStorage3D\"]($2, $3, $4,\n$5, $6, $7); })" js_texStorage3D ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage3D Mozilla WebGL2RenderingContext.texStorage3D documentation> 
-texStorage3D ::
-             (MonadIO m) =>
-               WebGL2RenderingContext ->
-                 GLenum ->
-                   GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
-texStorage3D self target levels internalformat width height depth
-  = liftIO
-      (js_texStorage3D self target levels internalformat width height
-         depth)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"texImage3D\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10, $11); })"
-        js_texImage3D ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLsizei ->
-                  GLsizei ->
-                    GLsizei ->
-                      GLint -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texImage3D Mozilla WebGL2RenderingContext.texImage3D documentation> 
-texImage3D ::
-           (MonadIO m, IsArrayBufferView pixels) =>
-             WebGL2RenderingContext ->
-               GLenum ->
-                 GLint ->
-                   GLint ->
-                     GLsizei ->
-                       GLsizei ->
-                         GLsizei -> GLint -> GLenum -> GLenum -> Maybe pixels -> m ()
-texImage3D self target level internalformat width height depth
-  border format type' pixels
-  = liftIO
-      (js_texImage3D self target level internalformat width height depth
-         border
-         format
-         type'
-         (maybeToOptional (fmap toArrayBufferView pixels)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12); })"
-        js_texSubImage3DView ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLint ->
-                  GLint ->
-                    GLsizei ->
-                      GLsizei ->
-                        GLsizei -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
-texSubImage3DView ::
-                  (MonadIO m, IsArrayBufferView pixels) =>
-                    WebGL2RenderingContext ->
-                      GLenum ->
-                        GLint ->
-                          GLint ->
-                            GLint ->
-                              GLint ->
-                                GLsizei ->
-                                  GLsizei -> GLsizei -> GLenum -> GLenum -> Maybe pixels -> m ()
-texSubImage3DView self target level xoffset yoffset zoffset width
-  height depth format type' pixels
-  = liftIO
-      (js_texSubImage3DView self target level xoffset yoffset zoffset
-         width
-         height
-         depth
-         format
-         type'
-         (maybeToOptional (fmap toArrayBufferView pixels)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9); })"
-        js_texSubImage3D ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLint -> GLint -> GLenum -> GLenum -> TexImageSource -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
-texSubImage3D ::
-              (MonadIO m, IsTexImageSource source) =>
-                WebGL2RenderingContext ->
-                  GLenum ->
-                    GLint ->
-                      GLint -> GLint -> GLint -> GLenum -> GLenum -> source -> m ()
-texSubImage3D self target level xoffset yoffset zoffset format
-  type' source
-  = liftIO
-      (js_texSubImage3D self target level xoffset yoffset zoffset format
-         type'
-         (toTexImageSource source))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"copyTexSubImage3D\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10); })"
-        js_copyTexSubImage3D ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyTexSubImage3D Mozilla WebGL2RenderingContext.copyTexSubImage3D documentation> 
-copyTexSubImage3D ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext ->
-                      GLenum ->
-                        GLint ->
-                          GLint ->
-                            GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-copyTexSubImage3D self target level xoffset yoffset zoffset x y
-  width height
-  = liftIO
-      (js_copyTexSubImage3D self target level xoffset yoffset zoffset x y
-         width
-         height)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"compressedTexImage3D\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10); })"
-        js_compressedTexImage3D ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLint ->
-              GLenum ->
-                GLsizei ->
-                  GLsizei ->
-                    GLsizei -> GLint -> GLsizei -> Optional ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexImage3D Mozilla WebGL2RenderingContext.compressedTexImage3D documentation> 
-compressedTexImage3D ::
-                     (MonadIO m, IsArrayBufferView data') =>
-                       WebGL2RenderingContext ->
-                         GLenum ->
-                           GLint ->
-                             GLenum ->
-                               GLsizei ->
-                                 GLsizei -> GLsizei -> GLint -> GLsizei -> Maybe data' -> m ()
-compressedTexImage3D self target level internalformat width height
-  depth border imageSize data'
-  = liftIO
-      (js_compressedTexImage3D self target level internalformat width
-         height
-         depth
-         border
-         imageSize
-         (maybeToOptional (fmap toArrayBufferView data')))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"compressedTexSubImage3D\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10,\n$11, $12); })"
-        js_compressedTexSubImage3D ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLint ->
-                  GLint ->
-                    GLsizei ->
-                      GLsizei ->
-                        GLsizei -> GLenum -> GLsizei -> Optional ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexSubImage3D Mozilla WebGL2RenderingContext.compressedTexSubImage3D documentation> 
-compressedTexSubImage3D ::
-                        (MonadIO m, IsArrayBufferView data') =>
-                          WebGL2RenderingContext ->
-                            GLenum ->
-                              GLint ->
-                                GLint ->
-                                  GLint ->
-                                    GLint ->
-                                      GLsizei ->
-                                        GLsizei ->
-                                          GLsizei -> GLenum -> GLsizei -> Maybe data' -> m ()
-compressedTexSubImage3D self target level xoffset yoffset zoffset
-  width height depth format imageSize data'
-  = liftIO
-      (js_compressedTexSubImage3D self target level xoffset yoffset
-         zoffset
-         width
-         height
-         depth
-         format
-         imageSize
-         (maybeToOptional (fmap toArrayBufferView data')))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getFragDataLocation\"]($2,\n$3); })" js_getFragDataLocation ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> JSString -> IO GLint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFragDataLocation Mozilla WebGL2RenderingContext.getFragDataLocation documentation> 
-getFragDataLocation ::
-                    (MonadIO m, ToJSString name) =>
-                      WebGL2RenderingContext -> Maybe WebGLProgram -> name -> m GLint
-getFragDataLocation self program name
-  = liftIO
-      (js_getFragDataLocation self (maybeToOptional program)
-         (toJSString name))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFragDataLocation Mozilla WebGL2RenderingContext.getFragDataLocation documentation> 
-getFragDataLocation_ ::
-                     (MonadIO m, ToJSString name) =>
-                       WebGL2RenderingContext -> Maybe WebGLProgram -> name -> m ()
-getFragDataLocation_ self program name
-  = liftIO
-      (void
-         (js_getFragDataLocation self (maybeToOptional program)
-            (toJSString name)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1ui\"]($2, $3); })"
-        js_uniform1ui ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1ui Mozilla WebGL2RenderingContext.uniform1ui documentation> 
-uniform1ui ::
-           (MonadIO m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation -> GLuint -> m ()
-uniform1ui self location v0
-  = liftIO (js_uniform1ui self (maybeToOptional location) v0)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"uniform2ui\"]($2, $3, $4); })"
-        js_uniform2ui ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation -> GLuint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2ui Mozilla WebGL2RenderingContext.uniform2ui documentation> 
-uniform2ui ::
-           (MonadIO m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation -> GLuint -> GLuint -> m ()
-uniform2ui self location v0 v1
-  = liftIO (js_uniform2ui self (maybeToOptional location) v0 v1)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"uniform3ui\"]($2, $3, $4, $5); })" js_uniform3ui ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLuint -> GLuint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3ui Mozilla WebGL2RenderingContext.uniform3ui documentation> 
-uniform3ui ::
-           (MonadIO m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation -> GLuint -> GLuint -> GLuint -> m ()
-uniform3ui self location v0 v1 v2
-  = liftIO (js_uniform3ui self (maybeToOptional location) v0 v1 v2)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4ui\"]($2, $3, $4, $5,\n$6); })" js_uniform4ui ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLuint -> GLuint -> GLuint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4ui Mozilla WebGL2RenderingContext.uniform4ui documentation> 
-uniform4ui ::
-           (MonadIO m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation ->
-                 GLuint -> GLuint -> GLuint -> GLuint -> m ()
-uniform4ui self location v0 v1 v2 v3
-  = liftIO
-      (js_uniform4ui self (maybeToOptional location) v0 v1 v2 v3)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1uiv\"]($2, $3); })"
-        js_uniform1uiv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1uiv Mozilla WebGL2RenderingContext.uniform1uiv documentation> 
-uniform1uiv ::
-            (MonadIO m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform1uiv self location value
-  = liftIO
-      (js_uniform1uiv self (maybeToOptional location)
-         (maybeToOptional (fmap toUint32Array value)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform2uiv\"]($2, $3); })"
-        js_uniform2uiv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2uiv Mozilla WebGL2RenderingContext.uniform2uiv documentation> 
-uniform2uiv ::
-            (MonadIO m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform2uiv self location value
-  = liftIO
-      (js_uniform2uiv self (maybeToOptional location)
-         (maybeToOptional (fmap toUint32Array value)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform3uiv\"]($2, $3); })"
-        js_uniform3uiv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3uiv Mozilla WebGL2RenderingContext.uniform3uiv documentation> 
-uniform3uiv ::
-            (MonadIO m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform3uiv self location value
-  = liftIO
-      (js_uniform3uiv self (maybeToOptional location)
-         (maybeToOptional (fmap toUint32Array value)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform4uiv\"]($2, $3); })"
-        js_uniform4uiv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4uiv Mozilla WebGL2RenderingContext.uniform4uiv documentation> 
-uniform4uiv ::
-            (MonadIO m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform4uiv self location value
-  = liftIO
-      (js_uniform4uiv self (maybeToOptional location)
-         (maybeToOptional (fmap toUint32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2x3fv\"]($2, $3,\n$4); })" js_uniformMatrix2x3fv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLboolean -> Optional Float32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x3fv Mozilla WebGL2RenderingContext.uniformMatrix2x3fv documentation> 
-uniformMatrix2x3fv ::
-                   (MonadIO m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix2x3fv self location transpose value
-  = liftIO
-      (js_uniformMatrix2x3fv self (maybeToOptional location) transpose
-         (maybeToOptional (fmap toFloat32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3x2fv\"]($2, $3,\n$4); })" js_uniformMatrix3x2fv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLboolean -> Optional Float32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x2fv Mozilla WebGL2RenderingContext.uniformMatrix3x2fv documentation> 
-uniformMatrix3x2fv ::
-                   (MonadIO m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix3x2fv self location transpose value
-  = liftIO
-      (js_uniformMatrix3x2fv self (maybeToOptional location) transpose
-         (maybeToOptional (fmap toFloat32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2x4fv\"]($2, $3,\n$4); })" js_uniformMatrix2x4fv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLboolean -> Optional Float32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x4fv Mozilla WebGL2RenderingContext.uniformMatrix2x4fv documentation> 
-uniformMatrix2x4fv ::
-                   (MonadIO m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix2x4fv self location transpose value
-  = liftIO
-      (js_uniformMatrix2x4fv self (maybeToOptional location) transpose
-         (maybeToOptional (fmap toFloat32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4x2fv\"]($2, $3,\n$4); })" js_uniformMatrix4x2fv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLboolean -> Optional Float32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x2fv Mozilla WebGL2RenderingContext.uniformMatrix4x2fv documentation> 
-uniformMatrix4x2fv ::
-                   (MonadIO m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix4x2fv self location transpose value
-  = liftIO
-      (js_uniformMatrix4x2fv self (maybeToOptional location) transpose
-         (maybeToOptional (fmap toFloat32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3x4fv\"]($2, $3,\n$4); })" js_uniformMatrix3x4fv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLboolean -> Optional Float32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x4fv Mozilla WebGL2RenderingContext.uniformMatrix3x4fv documentation> 
-uniformMatrix3x4fv ::
-                   (MonadIO m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix3x4fv self location transpose value
-  = liftIO
-      (js_uniformMatrix3x4fv self (maybeToOptional location) transpose
-         (maybeToOptional (fmap toFloat32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4x3fv\"]($2, $3,\n$4); })" js_uniformMatrix4x3fv ::
-        WebGL2RenderingContext ->
-          Optional WebGLUniformLocation ->
-            GLboolean -> Optional Float32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x3fv Mozilla WebGL2RenderingContext.uniformMatrix4x3fv documentation> 
-uniformMatrix4x3fv ::
-                   (MonadIO m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix4x3fv self location transpose value
-  = liftIO
-      (js_uniformMatrix4x3fv self (maybeToOptional location) transpose
-         (maybeToOptional (fmap toFloat32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribI4i\"]($2, $3,\n$4, $5, $6); })" js_vertexAttribI4i
-        ::
-        WebGL2RenderingContext ->
-          GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4i Mozilla WebGL2RenderingContext.vertexAttribI4i documentation> 
-vertexAttribI4i ::
-                (MonadIO m) =>
-                  WebGL2RenderingContext ->
-                    GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
-vertexAttribI4i self index x y z w
-  = liftIO (js_vertexAttribI4i self index x y z w)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttribI4iv\"]($2, $3); })"
-        js_vertexAttribI4iv ::
-        WebGL2RenderingContext -> GLuint -> Optional Int32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4iv Mozilla WebGL2RenderingContext.vertexAttribI4iv documentation> 
-vertexAttribI4iv ::
-                 (MonadIO m, IsInt32Array v) =>
-                   WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
-vertexAttribI4iv self index v
-  = liftIO
-      (js_vertexAttribI4iv self index
-         (maybeToOptional (fmap toInt32Array v)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribI4ui\"]($2, $3,\n$4, $5, $6); })" js_vertexAttribI4ui
-        ::
-        WebGL2RenderingContext ->
-          GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4ui Mozilla WebGL2RenderingContext.vertexAttribI4ui documentation> 
-vertexAttribI4ui ::
-                 (MonadIO m) =>
-                   WebGL2RenderingContext ->
-                     GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
-vertexAttribI4ui self index x y z w
-  = liftIO (js_vertexAttribI4ui self index x y z w)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"vertexAttribI4uiv\"]($2, $3); })" js_vertexAttribI4uiv ::
-        WebGL2RenderingContext -> GLuint -> Optional Uint32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4uiv Mozilla WebGL2RenderingContext.vertexAttribI4uiv documentation> 
-vertexAttribI4uiv ::
-                  (MonadIO m, IsUint32Array v) =>
-                    WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
-vertexAttribI4uiv self index v
-  = liftIO
-      (js_vertexAttribI4uiv self index
-         (maybeToOptional (fmap toUint32Array v)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribIPointer\"]($2,\n$3, $4, $5, $6); })"
-        js_vertexAttribIPointer ::
-        WebGL2RenderingContext ->
-          GLuint -> GLint -> GLenum -> GLsizei -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribIPointer Mozilla WebGL2RenderingContext.vertexAttribIPointer documentation> 
-vertexAttribIPointer ::
-                     (MonadIO m) =>
-                       WebGL2RenderingContext ->
-                         GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
-vertexAttribIPointer self index size type' stride offset
-  = liftIO
-      (js_vertexAttribIPointer self index size type' stride
-         (fromIntegral offset))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"vertexAttribDivisor\"]($2,\n$3); })" js_vertexAttribDivisor ::
-        WebGL2RenderingContext -> GLuint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribDivisor Mozilla WebGL2RenderingContext.vertexAttribDivisor documentation> 
-vertexAttribDivisor ::
-                    (MonadIO m) => WebGL2RenderingContext -> GLuint -> GLuint -> m ()
-vertexAttribDivisor self index divisor
-  = liftIO (js_vertexAttribDivisor self index divisor)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"drawArraysInstanced\"]($2,\n$3, $4, $5); })"
-        js_drawArraysInstanced ::
-        WebGL2RenderingContext ->
-          GLenum -> GLint -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawArraysInstanced Mozilla WebGL2RenderingContext.drawArraysInstanced documentation> 
-drawArraysInstanced ::
-                    (MonadIO m) =>
-                      WebGL2RenderingContext ->
-                        GLenum -> GLint -> GLsizei -> GLsizei -> m ()
-drawArraysInstanced self mode first count instanceCount
-  = liftIO
-      (js_drawArraysInstanced self mode first count instanceCount)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawElementsInstanced\"]($2,\n$3, $4, $5, $6); })"
-        js_drawElementsInstanced ::
-        WebGL2RenderingContext ->
-          GLenum -> GLsizei -> GLenum -> Double -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawElementsInstanced Mozilla WebGL2RenderingContext.drawElementsInstanced documentation> 
-drawElementsInstanced ::
-                      (MonadIO m) =>
-                        WebGL2RenderingContext ->
-                          GLenum -> GLsizei -> GLenum -> GLintptr -> GLsizei -> m ()
-drawElementsInstanced self mode count type' offset instanceCount
-  = liftIO
-      (js_drawElementsInstanced self mode count type'
-         (fromIntegral offset)
-         instanceCount)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"drawRangeElements\"]($2, $3,\n$4, $5, $6, $7); })"
-        js_drawRangeElements ::
-        WebGL2RenderingContext ->
-          GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawRangeElements Mozilla WebGL2RenderingContext.drawRangeElements documentation> 
-drawRangeElements ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext ->
-                      GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> GLintptr -> m ()
-drawRangeElements self mode start end count type' offset
-  = liftIO
-      (js_drawRangeElements self mode start end count type'
-         (fromIntegral offset))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"drawBuffers\"]($2); })"
-        js_drawBuffers :: WebGL2RenderingContext -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawBuffers Mozilla WebGL2RenderingContext.drawBuffers documentation> 
-drawBuffers ::
-            (MonadIO m) => WebGL2RenderingContext -> [GLenum] -> m ()
-drawBuffers self buffers
-  = liftIO
-      (toJSVal buffers >>= \ buffers' -> js_drawBuffers self buffers')
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"clearBufferiv\"]($2, $3, $4); })" js_clearBufferiv ::
-        WebGL2RenderingContext ->
-          GLenum -> GLint -> Optional Int32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferiv Mozilla WebGL2RenderingContext.clearBufferiv documentation> 
-clearBufferiv ::
-              (MonadIO m, IsInt32Array value) =>
-                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
-clearBufferiv self buffer drawbuffer value
-  = liftIO
-      (js_clearBufferiv self buffer drawbuffer
-         (maybeToOptional (fmap toInt32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"clearBufferuiv\"]($2, $3, $4); })" js_clearBufferuiv ::
-        WebGL2RenderingContext ->
-          GLenum -> GLint -> Optional Uint32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferuiv Mozilla WebGL2RenderingContext.clearBufferuiv documentation> 
-clearBufferuiv ::
-               (MonadIO m, IsUint32Array value) =>
-                 WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
-clearBufferuiv self buffer drawbuffer value
-  = liftIO
-      (js_clearBufferuiv self buffer drawbuffer
-         (maybeToOptional (fmap toUint32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"clearBufferfv\"]($2, $3, $4); })" js_clearBufferfv ::
-        WebGL2RenderingContext ->
-          GLenum -> GLint -> Optional Float32Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfv Mozilla WebGL2RenderingContext.clearBufferfv documentation> 
-clearBufferfv ::
-              (MonadIO m, IsFloat32Array value) =>
-                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
-clearBufferfv self buffer drawbuffer value
-  = liftIO
-      (js_clearBufferfv self buffer drawbuffer
-         (maybeToOptional (fmap toFloat32Array value)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"clearBufferfi\"]($2, $3, $4,\n$5); })" js_clearBufferfi ::
-        WebGL2RenderingContext ->
-          GLenum -> GLint -> GLfloat -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfi Mozilla WebGL2RenderingContext.clearBufferfi documentation> 
-clearBufferfi ::
-              (MonadIO m) =>
-                WebGL2RenderingContext ->
-                  GLenum -> GLint -> GLfloat -> GLint -> m ()
-clearBufferfi self buffer drawbuffer depth stencil
-  = liftIO (js_clearBufferfi self buffer drawbuffer depth stencil)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createQuery\"](); })"
-        js_createQuery :: WebGL2RenderingContext -> IO WebGLQuery
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
-createQuery ::
-            (MonadIO m) => WebGL2RenderingContext -> m WebGLQuery
-createQuery self = liftIO (js_createQuery self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
-createQuery_ :: (MonadIO m) => WebGL2RenderingContext -> m ()
-createQuery_ self = liftIO (void (js_createQuery self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteQuery\"]($2); })"
-        js_deleteQuery ::
-        WebGL2RenderingContext -> Optional WebGLQuery -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteQuery Mozilla WebGL2RenderingContext.deleteQuery documentation> 
-deleteQuery ::
-            (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLQuery -> m ()
-deleteQuery self query
-  = liftIO (js_deleteQuery self (maybeToOptional query))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isQuery\"]($2); })" js_isQuery
-        :: WebGL2RenderingContext -> Optional WebGLQuery -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isQuery Mozilla WebGL2RenderingContext.isQuery documentation> 
-isQuery ::
-        (MonadIO m) =>
-          WebGL2RenderingContext -> Maybe WebGLQuery -> m GLboolean
-isQuery self query
-  = liftIO (js_isQuery self (maybeToOptional query))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isQuery Mozilla WebGL2RenderingContext.isQuery documentation> 
-isQuery_ ::
-         (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLQuery -> m ()
-isQuery_ self query
-  = liftIO (void (js_isQuery self (maybeToOptional query)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"beginQuery\"]($2, $3); })"
-        js_beginQuery ::
-        WebGL2RenderingContext -> GLenum -> Optional WebGLQuery -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginQuery Mozilla WebGL2RenderingContext.beginQuery documentation> 
-beginQuery ::
-           (MonadIO m) =>
-             WebGL2RenderingContext -> GLenum -> Maybe WebGLQuery -> m ()
-beginQuery self target query
-  = liftIO (js_beginQuery self target (maybeToOptional query))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"endQuery\"]($2); })" js_endQuery
-        :: WebGL2RenderingContext -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endQuery Mozilla WebGL2RenderingContext.endQuery documentation> 
-endQuery :: (MonadIO m) => WebGL2RenderingContext -> GLenum -> m ()
-endQuery self target = liftIO (js_endQuery self target)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getQuery\"]($2, $3); })"
-        js_getQuery ::
-        WebGL2RenderingContext -> GLenum -> GLenum -> IO WebGLQuery
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
-getQuery ::
-         (MonadIO m) =>
-           WebGL2RenderingContext -> GLenum -> GLenum -> m WebGLQuery
-getQuery self target pname = liftIO (js_getQuery self target pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
-getQuery_ ::
-          (MonadIO m) => WebGL2RenderingContext -> GLenum -> GLenum -> m ()
-getQuery_ self target pname
-  = liftIO (void (js_getQuery self target pname))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getQueryParameter\"]($2, $3); })" js_getQueryParameter ::
-        WebGL2RenderingContext -> Optional WebGLQuery -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
-getQueryParameter ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m JSVal
-getQueryParameter self query pname
-  = liftIO (js_getQueryParameter self (maybeToOptional query) pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
-getQueryParameter_ ::
-                   (MonadIO m) =>
-                     WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m ()
-getQueryParameter_ self query pname
-  = liftIO
-      (void (js_getQueryParameter self (maybeToOptional query) pname))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createSampler\"](); })"
-        js_createSampler :: WebGL2RenderingContext -> IO WebGLSampler
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
-createSampler ::
-              (MonadIO m) => WebGL2RenderingContext -> m WebGLSampler
-createSampler self = liftIO (js_createSampler self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
-createSampler_ :: (MonadIO m) => WebGL2RenderingContext -> m ()
-createSampler_ self = liftIO (void (js_createSampler self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteSampler\"]($2); })"
-        js_deleteSampler ::
-        WebGL2RenderingContext -> Optional WebGLSampler -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSampler Mozilla WebGL2RenderingContext.deleteSampler documentation> 
-deleteSampler ::
-              (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSampler -> m ()
-deleteSampler self sampler
-  = liftIO (js_deleteSampler self (maybeToOptional sampler))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isSampler\"]($2); })"
-        js_isSampler ::
-        WebGL2RenderingContext -> Optional WebGLSampler -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSampler Mozilla WebGL2RenderingContext.isSampler documentation> 
-isSampler ::
-          (MonadIO m) =>
-            WebGL2RenderingContext -> Maybe WebGLSampler -> m GLboolean
-isSampler self sampler
-  = liftIO (js_isSampler self (maybeToOptional sampler))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSampler Mozilla WebGL2RenderingContext.isSampler documentation> 
-isSampler_ ::
-           (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSampler -> m ()
-isSampler_ self sampler
-  = liftIO (void (js_isSampler self (maybeToOptional sampler)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindSampler\"]($2, $3); })"
-        js_bindSampler ::
-        WebGL2RenderingContext -> GLuint -> Optional WebGLSampler -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindSampler Mozilla WebGL2RenderingContext.bindSampler documentation> 
-bindSampler ::
-            (MonadIO m) =>
-              WebGL2RenderingContext -> GLuint -> Maybe WebGLSampler -> m ()
-bindSampler self unit sampler
-  = liftIO (js_bindSampler self unit (maybeToOptional sampler))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"samplerParameteri\"]($2, $3,\n$4); })" js_samplerParameteri ::
-        WebGL2RenderingContext ->
-          Optional WebGLSampler -> GLenum -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameteri Mozilla WebGL2RenderingContext.samplerParameteri documentation> 
-samplerParameteri ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLSampler -> GLenum -> GLint -> m ()
-samplerParameteri self sampler pname param
-  = liftIO
-      (js_samplerParameteri self (maybeToOptional sampler) pname param)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"samplerParameterf\"]($2, $3,\n$4); })" js_samplerParameterf ::
-        WebGL2RenderingContext ->
-          Optional WebGLSampler -> GLenum -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameterf Mozilla WebGL2RenderingContext.samplerParameterf documentation> 
-samplerParameterf ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLSampler -> GLenum -> GLfloat -> m ()
-samplerParameterf self sampler pname param
-  = liftIO
-      (js_samplerParameterf self (maybeToOptional sampler) pname param)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getSamplerParameter\"]($2,\n$3); })" js_getSamplerParameter ::
-        WebGL2RenderingContext ->
-          Optional WebGLSampler -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
-getSamplerParameter ::
-                    (MonadIO m) =>
-                      WebGL2RenderingContext -> Maybe WebGLSampler -> GLenum -> m JSVal
-getSamplerParameter self sampler pname
-  = liftIO
-      (js_getSamplerParameter self (maybeToOptional sampler) pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
-getSamplerParameter_ ::
-                     (MonadIO m) =>
-                       WebGL2RenderingContext -> Maybe WebGLSampler -> GLenum -> m ()
-getSamplerParameter_ self sampler pname
-  = liftIO
-      (void
-         (js_getSamplerParameter self (maybeToOptional sampler) pname))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"fenceSync\"]($2, $3); })"
-        js_fenceSync ::
-        WebGL2RenderingContext -> GLenum -> GLbitfield -> IO WebGLSync
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
-fenceSync ::
-          (MonadIO m) =>
-            WebGL2RenderingContext -> GLenum -> GLbitfield -> m WebGLSync
-fenceSync self condition flags
-  = liftIO (js_fenceSync self condition flags)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
-fenceSync_ ::
-           (MonadIO m) =>
-             WebGL2RenderingContext -> GLenum -> GLbitfield -> m ()
-fenceSync_ self condition flags
-  = liftIO (void (js_fenceSync self condition flags))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isSync\"]($2); })" js_isSync ::
-        WebGL2RenderingContext -> Optional WebGLSync -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSync Mozilla WebGL2RenderingContext.isSync documentation> 
-isSync ::
-       (MonadIO m) =>
-         WebGL2RenderingContext -> Maybe WebGLSync -> m GLboolean
-isSync self sync = liftIO (js_isSync self (maybeToOptional sync))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSync Mozilla WebGL2RenderingContext.isSync documentation> 
-isSync_ ::
-        (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSync -> m ()
-isSync_ self sync
-  = liftIO (void (js_isSync self (maybeToOptional sync)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteSync\"]($2); })"
-        js_deleteSync ::
-        WebGL2RenderingContext -> Optional WebGLSync -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSync Mozilla WebGL2RenderingContext.deleteSync documentation> 
-deleteSync ::
-           (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSync -> m ()
-deleteSync self sync
-  = liftIO (js_deleteSync self (maybeToOptional sync))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"clientWaitSync\"]($2, $3, $4); })" js_clientWaitSync ::
-        WebGL2RenderingContext ->
-          Optional WebGLSync -> GLbitfield -> Double -> IO GLenum
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clientWaitSync Mozilla WebGL2RenderingContext.clientWaitSync documentation> 
-clientWaitSync ::
-               (MonadIO m) =>
-                 WebGL2RenderingContext ->
-                   Maybe WebGLSync -> GLbitfield -> GLuint64 -> m GLenum
-clientWaitSync self sync flags timeout
-  = liftIO
-      (js_clientWaitSync self (maybeToOptional sync) flags
-         (fromIntegral timeout))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clientWaitSync Mozilla WebGL2RenderingContext.clientWaitSync documentation> 
-clientWaitSync_ ::
-                (MonadIO m) =>
-                  WebGL2RenderingContext ->
-                    Maybe WebGLSync -> GLbitfield -> GLuint64 -> m ()
-clientWaitSync_ self sync flags timeout
-  = liftIO
-      (void
-         (js_clientWaitSync self (maybeToOptional sync) flags
-            (fromIntegral timeout)))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"waitSync\"]($2, $3, $4); })"
-        js_waitSync ::
-        WebGL2RenderingContext ->
-          Optional WebGLSync -> GLbitfield -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.waitSync Mozilla WebGL2RenderingContext.waitSync documentation> 
-waitSync ::
-         (MonadIO m) =>
-           WebGL2RenderingContext ->
-             Maybe WebGLSync -> GLbitfield -> GLuint64 -> m ()
-waitSync self sync flags timeout
-  = liftIO
-      (js_waitSync self (maybeToOptional sync) flags
-         (fromIntegral timeout))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getSyncParameter\"]($2, $3); })"
-        js_getSyncParameter ::
-        WebGL2RenderingContext -> Optional WebGLSync -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
-getSyncParameter ::
-                 (MonadIO m) =>
-                   WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m JSVal
-getSyncParameter self sync pname
-  = liftIO (js_getSyncParameter self (maybeToOptional sync) pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
-getSyncParameter_ ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m ()
-getSyncParameter_ self sync pname
-  = liftIO
-      (void (js_getSyncParameter self (maybeToOptional sync) pname))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"createTransformFeedback\"](); })" js_createTransformFeedback ::
-        WebGL2RenderingContext -> IO WebGLTransformFeedback
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
-createTransformFeedback ::
-                        (MonadIO m) => WebGL2RenderingContext -> m WebGLTransformFeedback
-createTransformFeedback self
-  = liftIO (js_createTransformFeedback self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
-createTransformFeedback_ ::
-                         (MonadIO m) => WebGL2RenderingContext -> m ()
-createTransformFeedback_ self
-  = liftIO (void (js_createTransformFeedback self))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"deleteTransformFeedback\"]($2); })" js_deleteTransformFeedback ::
-        WebGL2RenderingContext -> Optional WebGLTransformFeedback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteTransformFeedback Mozilla WebGL2RenderingContext.deleteTransformFeedback documentation> 
-deleteTransformFeedback ::
-                        (MonadIO m) =>
-                          WebGL2RenderingContext -> Maybe WebGLTransformFeedback -> m ()
-deleteTransformFeedback self id
-  = liftIO (js_deleteTransformFeedback self (maybeToOptional id))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isTransformFeedback\"]($2); })"
-        js_isTransformFeedback ::
-        WebGL2RenderingContext ->
-          Optional WebGLTransformFeedback -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isTransformFeedback Mozilla WebGL2RenderingContext.isTransformFeedback documentation> 
-isTransformFeedback ::
-                    (MonadIO m) =>
-                      WebGL2RenderingContext ->
-                        Maybe WebGLTransformFeedback -> m GLboolean
-isTransformFeedback self id
-  = liftIO (js_isTransformFeedback self (maybeToOptional id))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isTransformFeedback Mozilla WebGL2RenderingContext.isTransformFeedback documentation> 
-isTransformFeedback_ ::
-                     (MonadIO m) =>
-                       WebGL2RenderingContext -> Maybe WebGLTransformFeedback -> m ()
-isTransformFeedback_ self id
-  = liftIO (void (js_isTransformFeedback self (maybeToOptional id)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"bindTransformFeedback\"]($2,\n$3); })" js_bindTransformFeedback
-        ::
-        WebGL2RenderingContext ->
-          GLenum -> Optional WebGLTransformFeedback -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindTransformFeedback Mozilla WebGL2RenderingContext.bindTransformFeedback documentation> 
-bindTransformFeedback ::
-                      (MonadIO m) =>
-                        WebGL2RenderingContext ->
-                          GLenum -> Maybe WebGLTransformFeedback -> m ()
-bindTransformFeedback self target id
-  = liftIO
-      (js_bindTransformFeedback self target (maybeToOptional id))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"beginTransformFeedback\"]($2); })" js_beginTransformFeedback ::
-        WebGL2RenderingContext -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginTransformFeedback Mozilla WebGL2RenderingContext.beginTransformFeedback documentation> 
-beginTransformFeedback ::
-                       (MonadIO m) => WebGL2RenderingContext -> GLenum -> m ()
-beginTransformFeedback self primitiveMode
-  = liftIO (js_beginTransformFeedback self primitiveMode)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endTransformFeedback\"](); })"
-        js_endTransformFeedback :: WebGL2RenderingContext -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endTransformFeedback Mozilla WebGL2RenderingContext.endTransformFeedback documentation> 
-endTransformFeedback ::
-                     (MonadIO m) => WebGL2RenderingContext -> m ()
-endTransformFeedback self = liftIO (js_endTransformFeedback self)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"transformFeedbackVaryings\"]($2,\n$3, $4); })"
-        js_transformFeedbackVaryings ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> JSVal -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.transformFeedbackVaryings Mozilla WebGL2RenderingContext.transformFeedbackVaryings documentation> 
-transformFeedbackVaryings ::
-                          (MonadIO m, ToJSString varyings) =>
-                            WebGL2RenderingContext ->
-                              Maybe WebGLProgram -> [varyings] -> GLenum -> m ()
-transformFeedbackVaryings self program varyings bufferMode
-  = liftIO
-      (toJSVal varyings >>=
-         \ varyings' ->
-           js_transformFeedbackVaryings self (maybeToOptional program)
-             varyings'
-         bufferMode)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getTransformFeedbackVarying\"]($2,\n$3); })"
-        js_getTransformFeedbackVarying ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> GLuint -> IO WebGLActiveInfo
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
-getTransformFeedbackVarying ::
-                            (MonadIO m) =>
-                              WebGL2RenderingContext ->
-                                Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
-getTransformFeedbackVarying self program index
-  = liftIO
-      (js_getTransformFeedbackVarying self (maybeToOptional program)
-         index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
-getTransformFeedbackVarying_ ::
-                             (MonadIO m) =>
-                               WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m ()
-getTransformFeedbackVarying_ self program index
-  = liftIO
-      (void
-         (js_getTransformFeedbackVarying self (maybeToOptional program)
-            index))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pauseTransformFeedback\"](); })"
-        js_pauseTransformFeedback :: WebGL2RenderingContext -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.pauseTransformFeedback Mozilla WebGL2RenderingContext.pauseTransformFeedback documentation> 
-pauseTransformFeedback ::
-                       (MonadIO m) => WebGL2RenderingContext -> m ()
-pauseTransformFeedback self
-  = liftIO (js_pauseTransformFeedback self)
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"resumeTransformFeedback\"](); })" js_resumeTransformFeedback ::
-        WebGL2RenderingContext -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.resumeTransformFeedback Mozilla WebGL2RenderingContext.resumeTransformFeedback documentation> 
-resumeTransformFeedback ::
-                        (MonadIO m) => WebGL2RenderingContext -> m ()
-resumeTransformFeedback self
-  = liftIO (js_resumeTransformFeedback self)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"bindBufferBase\"]($2, $3, $4); })" js_bindBufferBase ::
-        WebGL2RenderingContext ->
-          GLenum -> GLuint -> Optional WebGLBuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferBase Mozilla WebGL2RenderingContext.bindBufferBase documentation> 
-bindBufferBase ::
-               (MonadIO m) =>
-                 WebGL2RenderingContext ->
-                   GLenum -> GLuint -> Maybe WebGLBuffer -> m ()
-bindBufferBase self target index buffer
-  = liftIO
-      (js_bindBufferBase self target index (maybeToOptional buffer))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"bindBufferRange\"]($2, $3,\n$4, $5, $6); })" js_bindBufferRange
-        ::
-        WebGL2RenderingContext ->
-          GLenum ->
-            GLuint -> Optional WebGLBuffer -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferRange Mozilla WebGL2RenderingContext.bindBufferRange documentation> 
-bindBufferRange ::
-                (MonadIO m) =>
-                  WebGL2RenderingContext ->
-                    GLenum ->
-                      GLuint -> Maybe WebGLBuffer -> GLintptr -> GLsizeiptr -> m ()
-bindBufferRange self target index buffer offset size
-  = liftIO
-      (js_bindBufferRange self target index (maybeToOptional buffer)
-         (fromIntegral offset)
-         (fromIntegral size))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getIndexedParameter\"]($2,\n$3); })" js_getIndexedParameter ::
-        WebGL2RenderingContext -> GLenum -> GLuint -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
-getIndexedParameter ::
-                    (MonadIO m) =>
-                      WebGL2RenderingContext -> GLenum -> GLuint -> m JSVal
-getIndexedParameter self target index
-  = liftIO (js_getIndexedParameter self target index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
-getIndexedParameter_ ::
-                     (MonadIO m) => WebGL2RenderingContext -> GLenum -> GLuint -> m ()
-getIndexedParameter_ self target index
-  = liftIO (void (js_getIndexedParameter self target index))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getUniformIndices\"]($2, $3); })" js_getUniformIndices ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> JSVal -> IO Uint32Array
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
-getUniformIndices ::
-                  (MonadIO m, ToJSString uniformNames) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLProgram -> [uniformNames] -> m Uint32Array
-getUniformIndices self program uniformNames
-  = liftIO
-      (toJSVal uniformNames >>=
-         \ uniformNames' ->
-           js_getUniformIndices self (maybeToOptional program) uniformNames')
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
-getUniformIndices_ ::
-                   (MonadIO m, ToJSString uniformNames) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLProgram -> [uniformNames] -> m ()
-getUniformIndices_ self program uniformNames
-  = liftIO
-      (void
-         (toJSVal uniformNames >>=
-            \ uniformNames' ->
-              js_getUniformIndices self (maybeToOptional program) uniformNames'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"getActiveUniforms\"]($2, $3,\n$4); })" js_getActiveUniforms ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram ->
-            Optional Uint32Array -> GLenum -> IO Int32Array
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
-getActiveUniforms ::
-                  (MonadIO m, IsUint32Array uniformIndices) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLProgram ->
-                        Maybe uniformIndices -> GLenum -> m Int32Array
-getActiveUniforms self program uniformIndices pname
-  = liftIO
-      (js_getActiveUniforms self (maybeToOptional program)
-         (maybeToOptional (fmap toUint32Array uniformIndices))
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
-getActiveUniforms_ ::
-                   (MonadIO m, IsUint32Array uniformIndices) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLProgram -> Maybe uniformIndices -> GLenum -> m ()
-getActiveUniforms_ self program uniformIndices pname
-  = liftIO
-      (void
-         (js_getActiveUniforms self (maybeToOptional program)
-            (maybeToOptional (fmap toUint32Array uniformIndices))
-            pname))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getUniformBlockIndex\"]($2,\n$3); })" js_getUniformBlockIndex ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> JSString -> IO GLuint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformBlockIndex Mozilla WebGL2RenderingContext.getUniformBlockIndex documentation> 
-getUniformBlockIndex ::
-                     (MonadIO m, ToJSString uniformBlockName) =>
-                       WebGL2RenderingContext ->
-                         Maybe WebGLProgram -> uniformBlockName -> m GLuint
-getUniformBlockIndex self program uniformBlockName
-  = liftIO
-      (js_getUniformBlockIndex self (maybeToOptional program)
-         (toJSString uniformBlockName))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformBlockIndex Mozilla WebGL2RenderingContext.getUniformBlockIndex documentation> 
-getUniformBlockIndex_ ::
-                      (MonadIO m, ToJSString uniformBlockName) =>
-                        WebGL2RenderingContext ->
-                          Maybe WebGLProgram -> uniformBlockName -> m ()
-getUniformBlockIndex_ self program uniformBlockName
-  = liftIO
-      (void
-         (js_getUniformBlockIndex self (maybeToOptional program)
-            (toJSString uniformBlockName)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"getActiveUniformBlockParameter\"]($2,\n$3, $4); })"
-        js_getActiveUniformBlockParameter ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> GLuint -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
-getActiveUniformBlockParameter ::
-                               (MonadIO m) =>
-                                 WebGL2RenderingContext ->
-                                   Maybe WebGLProgram -> GLuint -> GLenum -> m JSVal
-getActiveUniformBlockParameter self program uniformBlockIndex pname
-  = liftIO
-      (js_getActiveUniformBlockParameter self (maybeToOptional program)
-         uniformBlockIndex
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
-getActiveUniformBlockParameter_ ::
-                                (MonadIO m) =>
-                                  WebGL2RenderingContext ->
-                                    Maybe WebGLProgram -> GLuint -> GLenum -> m ()
-getActiveUniformBlockParameter_ self program uniformBlockIndex
-  pname
-  = liftIO
-      (void
-         (js_getActiveUniformBlockParameter self (maybeToOptional program)
-            uniformBlockIndex
-            pname))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getActiveUniformBlockName\"]($2,\n$3); })"
-        js_getActiveUniformBlockName ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> GLuint -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
-getActiveUniformBlockName ::
-                          (MonadIO m) =>
-                            WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m JSVal
-getActiveUniformBlockName self program uniformBlockIndex
-  = liftIO
-      (js_getActiveUniformBlockName self (maybeToOptional program)
-         uniformBlockIndex)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
-getActiveUniformBlockName_ ::
-                           (MonadIO m) =>
-                             WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m ()
-getActiveUniformBlockName_ self program uniformBlockIndex
-  = liftIO
-      (void
-         (js_getActiveUniformBlockName self (maybeToOptional program)
-            uniformBlockIndex))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformBlockBinding\"]($2,\n$3, $4); })" js_uniformBlockBinding
-        ::
-        WebGL2RenderingContext ->
-          Optional WebGLProgram -> GLuint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformBlockBinding Mozilla WebGL2RenderingContext.uniformBlockBinding documentation> 
-uniformBlockBinding ::
-                    (MonadIO m) =>
-                      WebGL2RenderingContext ->
-                        Maybe WebGLProgram -> GLuint -> GLuint -> m ()
-uniformBlockBinding self program uniformBlockIndex
-  uniformBlockBinding
-  = liftIO
-      (js_uniformBlockBinding self (maybeToOptional program)
-         uniformBlockIndex
-         uniformBlockBinding)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createVertexArray\"](); })"
-        js_createVertexArray ::
-        WebGL2RenderingContext -> IO WebGLVertexArrayObject
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
-createVertexArray ::
-                  (MonadIO m) => WebGL2RenderingContext -> m WebGLVertexArrayObject
-createVertexArray self = liftIO (js_createVertexArray self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
-createVertexArray_ :: (MonadIO m) => WebGL2RenderingContext -> m ()
-createVertexArray_ self = liftIO (void (js_createVertexArray self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteVertexArray\"]($2); })"
-        js_deleteVertexArray ::
-        WebGL2RenderingContext -> Optional WebGLVertexArrayObject -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteVertexArray Mozilla WebGL2RenderingContext.deleteVertexArray documentation> 
-deleteVertexArray ::
-                  (MonadIO m) =>
-                    WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
-deleteVertexArray self vertexArray
-  = liftIO (js_deleteVertexArray self (maybeToOptional vertexArray))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isVertexArray\"]($2); })"
-        js_isVertexArray ::
-        WebGL2RenderingContext ->
-          Optional WebGLVertexArrayObject -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isVertexArray Mozilla WebGL2RenderingContext.isVertexArray documentation> 
-isVertexArray ::
-              (MonadIO m) =>
-                WebGL2RenderingContext ->
-                  Maybe WebGLVertexArrayObject -> m GLboolean
-isVertexArray self vertexArray
-  = liftIO (js_isVertexArray self (maybeToOptional vertexArray))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isVertexArray Mozilla WebGL2RenderingContext.isVertexArray documentation> 
-isVertexArray_ ::
-               (MonadIO m) =>
-                 WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
-isVertexArray_ self vertexArray
-  = liftIO
-      (void (js_isVertexArray self (maybeToOptional vertexArray)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"bindVertexArray\"]($2); })"
-        js_bindVertexArray ::
-        WebGL2RenderingContext -> Optional WebGLVertexArrayObject -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindVertexArray Mozilla WebGL2RenderingContext.bindVertexArray documentation> 
-bindVertexArray ::
-                (MonadIO m) =>
-                  WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
-bindVertexArray self vertexArray
-  = liftIO (js_bindVertexArray self (maybeToOptional vertexArray))
-pattern READ_BUFFER = 3074
-pattern UNPACK_ROW_LENGTH = 3314
-pattern UNPACK_SKIP_ROWS = 3315
-pattern UNPACK_SKIP_PIXELS = 3316
-pattern PACK_ROW_LENGTH = 3330
-pattern PACK_SKIP_ROWS = 3331
-pattern PACK_SKIP_PIXELS = 3332
-pattern COLOR = 6144
-pattern DEPTH = 6145
-pattern STENCIL = 6146
-pattern RED = 6403
-pattern RGB8 = 32849
-pattern RGBA8 = 32856
-pattern RGB10_A2 = 32857
-pattern TEXTURE_BINDING_3D = 32874
-pattern UNPACK_SKIP_IMAGES = 32877
-pattern UNPACK_IMAGE_HEIGHT = 32878
-pattern TEXTURE_3D = 32879
-pattern TEXTURE_WRAP_R = 32882
-pattern MAX_3D_TEXTURE_SIZE = 32883
-pattern UNSIGNED_INT_2_10_10_10_REV = 33640
-pattern MAX_ELEMENTS_VERTICES = 33000
-pattern MAX_ELEMENTS_INDICES = 33001
-pattern TEXTURE_MIN_LOD = 33082
-pattern TEXTURE_MAX_LOD = 33083
-pattern TEXTURE_BASE_LEVEL = 33084
-pattern TEXTURE_MAX_LEVEL = 33085
-pattern MIN = 32775
-pattern MAX = 32776
-pattern DEPTH_COMPONENT24 = 33190
-pattern MAX_TEXTURE_LOD_BIAS = 34045
-pattern TEXTURE_COMPARE_MODE = 34892
-pattern TEXTURE_COMPARE_FUNC = 34893
-pattern CURRENT_QUERY = 34917
-pattern QUERY_RESULT = 34918
-pattern QUERY_RESULT_AVAILABLE = 34919
-pattern STREAM_READ = 35041
-pattern STREAM_COPY = 35042
-pattern STATIC_READ = 35045
-pattern STATIC_COPY = 35046
-pattern DYNAMIC_READ = 35049
-pattern DYNAMIC_COPY = 35050
-pattern MAX_DRAW_BUFFERS = 34852
-pattern DRAW_BUFFER0 = 34853
-pattern DRAW_BUFFER1 = 34854
-pattern DRAW_BUFFER2 = 34855
-pattern DRAW_BUFFER3 = 34856
-pattern DRAW_BUFFER4 = 34857
-pattern DRAW_BUFFER5 = 34858
-pattern DRAW_BUFFER6 = 34859
-pattern DRAW_BUFFER7 = 34860
-pattern DRAW_BUFFER8 = 34861
-pattern DRAW_BUFFER9 = 34862
-pattern DRAW_BUFFER10 = 34863
-pattern DRAW_BUFFER11 = 34864
-pattern DRAW_BUFFER12 = 34865
-pattern DRAW_BUFFER13 = 34866
-pattern DRAW_BUFFER14 = 34867
-pattern DRAW_BUFFER15 = 34868
-pattern MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657
-pattern MAX_VERTEX_UNIFORM_COMPONENTS = 35658
-pattern SAMPLER_3D = 35679
-pattern SAMPLER_2D_SHADOW = 35682
-pattern FRAGMENT_SHADER_DERIVATIVE_HINT = 35723
-pattern PIXEL_PACK_BUFFER = 35051
-pattern PIXEL_UNPACK_BUFFER = 35052
-pattern PIXEL_PACK_BUFFER_BINDING = 35053
-pattern PIXEL_UNPACK_BUFFER_BINDING = 35055
-pattern FLOAT_MAT2x3 = 35685
-pattern FLOAT_MAT2x4 = 35686
-pattern FLOAT_MAT3x2 = 35687
-pattern FLOAT_MAT3x4 = 35688
-pattern FLOAT_MAT4x2 = 35689
-pattern FLOAT_MAT4x3 = 35690
-pattern SRGB = 35904
-pattern SRGB8 = 35905
-pattern SRGB8_ALPHA8 = 35907
-pattern COMPARE_REF_TO_TEXTURE = 34894
-pattern RGBA32F = 34836
-pattern RGB32F = 34837
-pattern RGBA16F = 34842
-pattern RGB16F = 34843
-pattern VERTEX_ATTRIB_ARRAY_INTEGER = 35069
-pattern MAX_ARRAY_TEXTURE_LAYERS = 35071
-pattern MIN_PROGRAM_TEXEL_OFFSET = 35076
-pattern MAX_PROGRAM_TEXEL_OFFSET = 35077
-pattern MAX_VARYING_COMPONENTS = 35659
-pattern TEXTURE_2D_ARRAY = 35866
-pattern TEXTURE_BINDING_2D_ARRAY = 35869
-pattern R11F_G11F_B10F = 35898
-pattern UNSIGNED_INT_10F_11F_11F_REV = 35899
-pattern RGB9_E5 = 35901
-pattern UNSIGNED_INT_5_9_9_9_REV = 35902
-pattern TRANSFORM_FEEDBACK_BUFFER_MODE = 35967
-pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968
-pattern TRANSFORM_FEEDBACK_VARYINGS = 35971
-pattern TRANSFORM_FEEDBACK_BUFFER_START = 35972
-pattern TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973
-pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976
-pattern RASTERIZER_DISCARD = 35977
-pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978
-pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979
-pattern INTERLEAVED_ATTRIBS = 35980
-pattern SEPARATE_ATTRIBS = 35981
-pattern TRANSFORM_FEEDBACK_BUFFER = 35982
-pattern TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983
-pattern RGBA32UI = 36208
-pattern RGB32UI = 36209
-pattern RGBA16UI = 36214
-pattern RGB16UI = 36215
-pattern RGBA8UI = 36220
-pattern RGB8UI = 36221
-pattern RGBA32I = 36226
-pattern RGB32I = 36227
-pattern RGBA16I = 36232
-pattern RGB16I = 36233
-pattern RGBA8I = 36238
-pattern RGB8I = 36239
-pattern RED_INTEGER = 36244
-pattern RGB_INTEGER = 36248
-pattern RGBA_INTEGER = 36249
-pattern SAMPLER_2D_ARRAY = 36289
-pattern SAMPLER_2D_ARRAY_SHADOW = 36292
-pattern SAMPLER_CUBE_SHADOW = 36293
-pattern UNSIGNED_INT_VEC2 = 36294
-pattern UNSIGNED_INT_VEC3 = 36295
-pattern UNSIGNED_INT_VEC4 = 36296
-pattern INT_SAMPLER_2D = 36298
-pattern INT_SAMPLER_3D = 36299
-pattern INT_SAMPLER_CUBE = 36300
-pattern INT_SAMPLER_2D_ARRAY = 36303
-pattern UNSIGNED_INT_SAMPLER_2D = 36306
-pattern UNSIGNED_INT_SAMPLER_3D = 36307
-pattern UNSIGNED_INT_SAMPLER_CUBE = 36308
-pattern UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311
-pattern DEPTH_COMPONENT32F = 36012
-pattern DEPTH32F_STENCIL8 = 36013
-pattern FLOAT_32_UNSIGNED_INT_24_8_REV = 36269
-pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296
-pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297
-pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298
-pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299
-pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300
-pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301
-pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302
-pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303
-pattern FRAMEBUFFER_DEFAULT = 33304
-pattern DEPTH_STENCIL_ATTACHMENT = 33306
-pattern DEPTH_STENCIL = 34041
-pattern UNSIGNED_INT_24_8 = 34042
-pattern DEPTH24_STENCIL8 = 35056
-pattern UNSIGNED_NORMALIZED = 35863
-pattern DRAW_FRAMEBUFFER_BINDING = 36006
-pattern READ_FRAMEBUFFER = 36008
-pattern DRAW_FRAMEBUFFER = 36009
-pattern READ_FRAMEBUFFER_BINDING = 36010
-pattern RENDERBUFFER_SAMPLES = 36011
-pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052
-pattern MAX_COLOR_ATTACHMENTS = 36063
-pattern COLOR_ATTACHMENT1 = 36065
-pattern COLOR_ATTACHMENT2 = 36066
-pattern COLOR_ATTACHMENT3 = 36067
-pattern COLOR_ATTACHMENT4 = 36068
-pattern COLOR_ATTACHMENT5 = 36069
-pattern COLOR_ATTACHMENT6 = 36070
-pattern COLOR_ATTACHMENT7 = 36071
-pattern COLOR_ATTACHMENT8 = 36072
-pattern COLOR_ATTACHMENT9 = 36073
-pattern COLOR_ATTACHMENT10 = 36074
-pattern COLOR_ATTACHMENT11 = 36075
-pattern COLOR_ATTACHMENT12 = 36076
-pattern COLOR_ATTACHMENT13 = 36077
-pattern COLOR_ATTACHMENT14 = 36078
-pattern COLOR_ATTACHMENT15 = 36079
-pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182
-pattern MAX_SAMPLES = 36183
-pattern HALF_FLOAT = 5131
-pattern RG = 33319
-pattern RG_INTEGER = 33320
-pattern R8 = 33321
-pattern RG8 = 33323
-pattern R16F = 33325
-pattern R32F = 33326
-pattern RG16F = 33327
-pattern RG32F = 33328
-pattern R8I = 33329
-pattern R8UI = 33330
-pattern R16I = 33331
-pattern R16UI = 33332
-pattern R32I = 33333
-pattern R32UI = 33334
-pattern RG8I = 33335
-pattern RG8UI = 33336
-pattern RG16I = 33337
-pattern RG16UI = 33338
-pattern RG32I = 33339
-pattern RG32UI = 33340
-pattern VERTEX_ARRAY_BINDING = 34229
-pattern R8_SNORM = 36756
-pattern RG8_SNORM = 36757
-pattern RGB8_SNORM = 36758
-pattern RGBA8_SNORM = 36759
-pattern SIGNED_NORMALIZED = 36764
-pattern PRIMITIVE_RESTART_FIXED_INDEX = 36201
-pattern COPY_READ_BUFFER = 36662
-pattern COPY_WRITE_BUFFER = 36663
-pattern COPY_READ_BUFFER_BINDING = 36662
-pattern COPY_WRITE_BUFFER_BINDING = 36663
-pattern UNIFORM_BUFFER = 35345
-pattern UNIFORM_BUFFER_BINDING = 35368
-pattern UNIFORM_BUFFER_START = 35369
-pattern UNIFORM_BUFFER_SIZE = 35370
-pattern MAX_VERTEX_UNIFORM_BLOCKS = 35371
-pattern MAX_FRAGMENT_UNIFORM_BLOCKS = 35373
-pattern MAX_COMBINED_UNIFORM_BLOCKS = 35374
-pattern MAX_UNIFORM_BUFFER_BINDINGS = 35375
-pattern MAX_UNIFORM_BLOCK_SIZE = 35376
-pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377
-pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379
-pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380
-pattern ACTIVE_UNIFORM_BLOCKS = 35382
-pattern UNIFORM_TYPE = 35383
-pattern UNIFORM_SIZE = 35384
-pattern UNIFORM_BLOCK_INDEX = 35386
-pattern UNIFORM_OFFSET = 35387
-pattern UNIFORM_ARRAY_STRIDE = 35388
-pattern UNIFORM_MATRIX_STRIDE = 35389
-pattern UNIFORM_IS_ROW_MAJOR = 35390
-pattern UNIFORM_BLOCK_BINDING = 35391
-pattern UNIFORM_BLOCK_DATA_SIZE = 35392
-pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394
-pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395
-pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396
-pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398
-pattern INVALID_INDEX = 4294967295
-pattern MAX_VERTEX_OUTPUT_COMPONENTS = 37154
-pattern MAX_FRAGMENT_INPUT_COMPONENTS = 37157
-pattern MAX_SERVER_WAIT_TIMEOUT = 37137
-pattern OBJECT_TYPE = 37138
-pattern SYNC_CONDITION = 37139
-pattern SYNC_STATUS = 37140
-pattern SYNC_FLAGS = 37141
-pattern SYNC_FENCE = 37142
-pattern SYNC_GPU_COMMANDS_COMPLETE = 37143
-pattern UNSIGNALED = 37144
-pattern SIGNALED = 37145
-pattern ALREADY_SIGNALED = 37146
-pattern TIMEOUT_EXPIRED = 37147
-pattern CONDITION_SATISFIED = 37148
-pattern WAIT_FAILED = 37149
-pattern SYNC_FLUSH_COMMANDS_BIT = 1
-pattern VERTEX_ATTRIB_ARRAY_DIVISOR = 35070
-pattern ANY_SAMPLES_PASSED = 35887
-pattern ANY_SAMPLES_PASSED_CONSERVATIVE = 36202
-pattern SAMPLER_BINDING = 35097
-pattern RGB10_A2UI = 36975
-pattern TEXTURE_SWIZZLE_R = 36418
-pattern TEXTURE_SWIZZLE_G = 36419
-pattern TEXTURE_SWIZZLE_B = 36420
-pattern TEXTURE_SWIZZLE_A = 36421
-pattern GREEN = 6404
-pattern BLUE = 6405
-pattern INT_2_10_10_10_REV = 36255
-pattern TRANSFORM_FEEDBACK = 36386
-pattern TRANSFORM_FEEDBACK_PAUSED = 36387
-pattern TRANSFORM_FEEDBACK_ACTIVE = 36388
-pattern TRANSFORM_FEEDBACK_BINDING = 36389
-pattern COMPRESSED_R11_EAC = 37488
-pattern COMPRESSED_SIGNED_R11_EAC = 37489
-pattern COMPRESSED_RG11_EAC = 37490
-pattern COMPRESSED_SIGNED_RG11_EAC = 37491
-pattern COMPRESSED_RGB8_ETC2 = 37492
-pattern COMPRESSED_SRGB8_ETC2 = 37493
-pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494
-pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495
-pattern COMPRESSED_RGBA8_ETC2_EAC = 37496
-pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497
-pattern TEXTURE_IMMUTABLE_FORMAT = 37167
-pattern MAX_ELEMENT_INDEX = 36203
-pattern NUM_SAMPLE_COUNTS = 37760
-pattern TEXTURE_IMMUTABLE_LEVELS = 33503
-pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 35070
-pattern TIMEOUT_IGNORED = 18446744073709551615
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
+       (WebGL2RenderingContext(..), gTypeWebGL2RenderingContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContextBase.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContextBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContextBase.hs
@@ -0,0 +1,1325 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContextBase
+       (js_beginQuery, js_beginTransformFeedback, js_bindBufferBase, js_bindBufferRange, js_bindSampler, js_bindTransformFeedback, js_bindVertexArray, js_blitFramebuffer, js_clearBufferfi, js_clearBufferfv, js_clearBufferfv', js_clearBufferiv, js_clearBufferiv', js_clearBufferuiv, js_clearBufferuiv', js_clientWaitSync, js_compressedTexImage3D, js_compressedTexImage3DSrcDataSrcOffsetSrcLengthOverride, js_compressedTexSubImage3D, js_compressedTexSubImage3DSrcDataSrcOffsetSrcLengthOverride, js_copyBufferSubData, js_copyTexSubImage3D, js_createQuery, js_createSampler, js_createTransformFeedback, js_createVertexArray, js_deleteQuery, js_deleteSampler, js_deleteSync, js_deleteTransformFeedback, js_deleteVertexArray, js_drawArraysInstanced, js_drawBuffers, js_drawElementsInstanced, js_drawRangeElements, js_endQuery, js_endTransformFeedback, js_fenceSync, js_framebufferTextureLayer, js_getActiveUniformBlockName, js_getActiveUniformBlockParameter, js_getActiveUniforms, js_getBufferSubData, js_getFragDataLocation, js_getIndexedParameter, js_getInternalformatParameter, js_getQuery, js_getQueryParameter, js_getSamplerParameter, js_getSyncParameter, js_getTransformFeedbackVarying, js_getUniformBlockIndex, js_getUniformIndices, js_invalidateFramebuffer, js_invalidateSubFramebuffer, js_isQuery, js_isSampler, js_isSync, js_isTransformFeedback, js_isVertexArray, js_pauseTransformFeedback, js_readBuffer, js_renderbufferStorageMultisample, js_resumeTransformFeedback, js_samplerParameterf, js_samplerParameteri, js_texImage3D, js_texImage3DSource, js_texImage3DSrcData, js_texImage3DSrcDataSrcOffset, js_texStorage2D, js_texStorage3D, js_texSubImage3D, js_texSubImage3DSource, js_texSubImage3DSrcDataSrcOffset, js_transformFeedbackVaryings, js_uniform1ui, js_uniform1uiv, js_uniform1uiv', js_uniform2ui, js_uniform2uiv, js_uniform2uiv', js_uniform3ui, js_uniform3uiv, js_uniform3uiv', js_uniform4ui, js_uniform4uiv, js_uniform4uiv', js_uniformBlockBinding, js_uniformMatrix2x3fv, js_uniformMatrix2x3fv', js_uniformMatrix2x4fv, js_uniformMatrix2x4fv', js_uniformMatrix3x2fv, js_uniformMatrix3x2fv', js_uniformMatrix3x4fv, js_uniformMatrix3x4fv', js_uniformMatrix4x2fv, js_uniformMatrix4x2fv', js_uniformMatrix4x3fv, js_uniformMatrix4x3fv', js_vertexAttribDivisor, js_vertexAttribI4i, js_vertexAttribI4iv, js_vertexAttribI4ui, js_vertexAttribI4uiv, js_vertexAttribIPointer, js_waitSync, beginQuery, beginTransformFeedback, bindBufferBase, bindBufferRange, bindSampler, bindTransformFeedback, bindVertexArray, blitFramebuffer, clearBufferfi, clearBufferfv, clearBufferfv', clearBufferiv, clearBufferiv', clearBufferuiv, clearBufferuiv', clientWaitSync, clientWaitSync_, compressedTexImage3D, compressedTexImage3DSrcDataSrcOffsetSrcLengthOverride, compressedTexSubImage3D, compressedTexSubImage3DSrcDataSrcOffsetSrcLengthOverride, copyBufferSubData, copyTexSubImage3D, createQuery, createQuery_, createSampler, createSampler_, createTransformFeedback, createTransformFeedback_, createVertexArray, createVertexArray_, deleteQuery, deleteSampler, deleteSync, deleteTransformFeedback, deleteVertexArray, drawArraysInstanced, drawBuffers, drawElementsInstanced, drawRangeElements, endQuery, endTransformFeedback, fenceSync, fenceSync_, fenceSyncUnsafe, fenceSyncUnchecked, framebufferTextureLayer, getActiveUniformBlockName, getActiveUniformBlockName_, getActiveUniformBlockNameUnsafe, getActiveUniformBlockNameUnchecked, getActiveUniformBlockParameter, getActiveUniformBlockParameter_, getActiveUniforms, getActiveUniforms_, getBufferSubData, getFragDataLocation, getFragDataLocation_, getIndexedParameter, getIndexedParameter_, getInternalformatParameter, getInternalformatParameter_, getQuery, getQuery_, getQueryUnsafe, getQueryUnchecked, getQueryParameter, getQueryParameter_, getSamplerParameter, getSamplerParameter_, getSyncParameter, getSyncParameter_, getTransformFeedbackVarying, getTransformFeedbackVarying_, getTransformFeedbackVaryingUnsafe, getTransformFeedbackVaryingUnchecked, getUniformBlockIndex, getUniformBlockIndex_, getUniformIndices, getUniformIndices_, getUniformIndicesUnsafe, getUniformIndicesUnchecked, invalidateFramebuffer, invalidateSubFramebuffer, isQuery, isQuery_, isSampler, isSampler_, isSync, isSync_, isTransformFeedback, isTransformFeedback_, isVertexArray, isVertexArray_, pauseTransformFeedback, readBuffer, renderbufferStorageMultisample, resumeTransformFeedback, samplerParameterf, samplerParameteri, texImage3D, texImage3DSource, texImage3DSrcData, texImage3DSrcDataSrcOffset, texStorage2D, texStorage3D, texSubImage3D, texSubImage3DSource, texSubImage3DSrcDataSrcOffset, transformFeedbackVaryings, uniform1ui, uniform1uiv, uniform1uiv', uniform2ui, uniform2uiv, uniform2uiv', uniform3ui, uniform3uiv, uniform3uiv', uniform4ui, uniform4uiv, uniform4uiv', uniformBlockBinding, uniformMatrix2x3fv, uniformMatrix2x3fv', uniformMatrix2x4fv, uniformMatrix2x4fv', uniformMatrix3x2fv, uniformMatrix3x2fv', uniformMatrix3x4fv, uniformMatrix3x4fv', uniformMatrix4x2fv, uniformMatrix4x2fv', uniformMatrix4x3fv, uniformMatrix4x3fv', vertexAttribDivisor, vertexAttribI4i, vertexAttribI4iv, vertexAttribI4ui, vertexAttribI4uiv, vertexAttribIPointer, waitSync, pattern READ_BUFFER, pattern UNPACK_ROW_LENGTH, pattern UNPACK_SKIP_ROWS, pattern UNPACK_SKIP_PIXELS, pattern PACK_ROW_LENGTH, pattern PACK_SKIP_ROWS, pattern PACK_SKIP_PIXELS, pattern COLOR, pattern DEPTH, pattern STENCIL, pattern RED, pattern RGB8, pattern RGB10_A2, pattern TEXTURE_BINDING_3D, pattern UNPACK_SKIP_IMAGES, pattern UNPACK_IMAGE_HEIGHT, pattern TEXTURE_3D, pattern TEXTURE_WRAP_R, pattern MAX_3D_TEXTURE_SIZE, pattern UNSIGNED_INT_2_10_10_10_REV, pattern MAX_ELEMENTS_VERTICES, pattern MAX_ELEMENTS_INDICES, pattern TEXTURE_MIN_LOD, pattern TEXTURE_MAX_LOD, pattern TEXTURE_BASE_LEVEL, pattern TEXTURE_MAX_LEVEL, pattern MIN, pattern MAX, pattern DEPTH_COMPONENT24, pattern MAX_TEXTURE_LOD_BIAS, pattern TEXTURE_COMPARE_MODE, pattern TEXTURE_COMPARE_FUNC, pattern CURRENT_QUERY, pattern QUERY_RESULT, pattern QUERY_RESULT_AVAILABLE, pattern STREAM_READ, pattern STREAM_COPY, pattern STATIC_READ, pattern STATIC_COPY, pattern DYNAMIC_READ, pattern DYNAMIC_COPY, pattern MAX_DRAW_BUFFERS, pattern DRAW_BUFFER0, pattern DRAW_BUFFER1, pattern DRAW_BUFFER2, pattern DRAW_BUFFER3, pattern DRAW_BUFFER4, pattern DRAW_BUFFER5, pattern DRAW_BUFFER6, pattern DRAW_BUFFER7, pattern DRAW_BUFFER8, pattern DRAW_BUFFER9, pattern DRAW_BUFFER10, pattern DRAW_BUFFER11, pattern DRAW_BUFFER12, pattern DRAW_BUFFER13, pattern DRAW_BUFFER14, pattern DRAW_BUFFER15, pattern MAX_FRAGMENT_UNIFORM_COMPONENTS, pattern MAX_VERTEX_UNIFORM_COMPONENTS, pattern SAMPLER_3D, pattern SAMPLER_2D_SHADOW, pattern FRAGMENT_SHADER_DERIVATIVE_HINT, pattern PIXEL_PACK_BUFFER, pattern PIXEL_UNPACK_BUFFER, pattern PIXEL_PACK_BUFFER_BINDING, pattern PIXEL_UNPACK_BUFFER_BINDING, pattern FLOAT_MAT2x3, pattern FLOAT_MAT2x4, pattern FLOAT_MAT3x2, pattern FLOAT_MAT3x4, pattern FLOAT_MAT4x2, pattern FLOAT_MAT4x3, pattern SRGB, pattern SRGB8, pattern SRGB8_ALPHA8, pattern COMPARE_REF_TO_TEXTURE, pattern RGBA32F, pattern RGB32F, pattern RGBA16F, pattern RGB16F, pattern VERTEX_ATTRIB_ARRAY_INTEGER, pattern MAX_ARRAY_TEXTURE_LAYERS, pattern MIN_PROGRAM_TEXEL_OFFSET, pattern MAX_PROGRAM_TEXEL_OFFSET, pattern MAX_VARYING_COMPONENTS, pattern TEXTURE_2D_ARRAY, pattern TEXTURE_BINDING_2D_ARRAY, pattern R11F_G11F_B10F, pattern UNSIGNED_INT_10F_11F_11F_REV, pattern RGB9_E5, pattern UNSIGNED_INT_5_9_9_9_REV, pattern TRANSFORM_FEEDBACK_BUFFER_MODE, pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, pattern TRANSFORM_FEEDBACK_VARYINGS, pattern TRANSFORM_FEEDBACK_BUFFER_START, pattern TRANSFORM_FEEDBACK_BUFFER_SIZE, pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, pattern RASTERIZER_DISCARD, pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, pattern INTERLEAVED_ATTRIBS, pattern SEPARATE_ATTRIBS, pattern TRANSFORM_FEEDBACK_BUFFER, pattern TRANSFORM_FEEDBACK_BUFFER_BINDING, pattern RGBA32UI, pattern RGB32UI, pattern RGBA16UI, pattern RGB16UI, pattern RGBA8UI, pattern RGB8UI, pattern RGBA32I, pattern RGB32I, pattern RGBA16I, pattern RGB16I, pattern RGBA8I, pattern RGB8I, pattern RED_INTEGER, pattern RGB_INTEGER, pattern RGBA_INTEGER, pattern SAMPLER_2D_ARRAY, pattern SAMPLER_2D_ARRAY_SHADOW, pattern SAMPLER_CUBE_SHADOW, pattern UNSIGNED_INT_VEC2, pattern UNSIGNED_INT_VEC3, pattern UNSIGNED_INT_VEC4, pattern INT_SAMPLER_2D, pattern INT_SAMPLER_3D, pattern INT_SAMPLER_CUBE, pattern INT_SAMPLER_2D_ARRAY, pattern UNSIGNED_INT_SAMPLER_2D, pattern UNSIGNED_INT_SAMPLER_3D, pattern UNSIGNED_INT_SAMPLER_CUBE, pattern UNSIGNED_INT_SAMPLER_2D_ARRAY, pattern DEPTH_COMPONENT32F, pattern DEPTH32F_STENCIL8, pattern FLOAT_32_UNSIGNED_INT_24_8_REV, pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE, pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE, pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, pattern FRAMEBUFFER_DEFAULT, pattern UNSIGNED_INT_24_8, pattern DEPTH24_STENCIL8, pattern UNSIGNED_NORMALIZED, pattern DRAW_FRAMEBUFFER_BINDING, pattern READ_FRAMEBUFFER, pattern DRAW_FRAMEBUFFER, pattern READ_FRAMEBUFFER_BINDING, pattern RENDERBUFFER_SAMPLES, pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, pattern MAX_COLOR_ATTACHMENTS, pattern COLOR_ATTACHMENT1, pattern COLOR_ATTACHMENT2, pattern COLOR_ATTACHMENT3, pattern COLOR_ATTACHMENT4, pattern COLOR_ATTACHMENT5, pattern COLOR_ATTACHMENT6, pattern COLOR_ATTACHMENT7, pattern COLOR_ATTACHMENT8, pattern COLOR_ATTACHMENT9, pattern COLOR_ATTACHMENT10, pattern COLOR_ATTACHMENT11, pattern COLOR_ATTACHMENT12, pattern COLOR_ATTACHMENT13, pattern COLOR_ATTACHMENT14, pattern COLOR_ATTACHMENT15, pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, pattern MAX_SAMPLES, pattern HALF_FLOAT, pattern RG, pattern RG_INTEGER, pattern R8, pattern RG8, pattern R16F, pattern R32F, pattern RG16F, pattern RG32F, pattern R8I, pattern R8UI, pattern R16I, pattern R16UI, pattern R32I, pattern R32UI, pattern RG8I, pattern RG8UI, pattern RG16I, pattern RG16UI, pattern RG32I, pattern RG32UI, pattern VERTEX_ARRAY_BINDING, pattern R8_SNORM, pattern RG8_SNORM, pattern RGB8_SNORM, pattern RGBA8_SNORM, pattern SIGNED_NORMALIZED, pattern COPY_READ_BUFFER, pattern COPY_WRITE_BUFFER, pattern COPY_READ_BUFFER_BINDING, pattern COPY_WRITE_BUFFER_BINDING, pattern UNIFORM_BUFFER, pattern UNIFORM_BUFFER_BINDING, pattern UNIFORM_BUFFER_START, pattern UNIFORM_BUFFER_SIZE, pattern MAX_VERTEX_UNIFORM_BLOCKS, pattern MAX_FRAGMENT_UNIFORM_BLOCKS, pattern MAX_COMBINED_UNIFORM_BLOCKS, pattern MAX_UNIFORM_BUFFER_BINDINGS, pattern MAX_UNIFORM_BLOCK_SIZE, pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT, pattern ACTIVE_UNIFORM_BLOCKS, pattern UNIFORM_TYPE, pattern UNIFORM_SIZE, pattern UNIFORM_BLOCK_INDEX, pattern UNIFORM_OFFSET, pattern UNIFORM_ARRAY_STRIDE, pattern UNIFORM_MATRIX_STRIDE, pattern UNIFORM_IS_ROW_MAJOR, pattern UNIFORM_BLOCK_BINDING, pattern UNIFORM_BLOCK_DATA_SIZE, pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS, pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER, pattern INVALID_INDEX, pattern MAX_VERTEX_OUTPUT_COMPONENTS, pattern MAX_FRAGMENT_INPUT_COMPONENTS, pattern MAX_SERVER_WAIT_TIMEOUT, pattern OBJECT_TYPE, pattern SYNC_CONDITION, pattern SYNC_STATUS, pattern SYNC_FLAGS, pattern SYNC_FENCE, pattern SYNC_GPU_COMMANDS_COMPLETE, pattern UNSIGNALED, pattern SIGNALED, pattern ALREADY_SIGNALED, pattern TIMEOUT_EXPIRED, pattern CONDITION_SATISFIED, pattern WAIT_FAILED, pattern SYNC_FLUSH_COMMANDS_BIT, pattern VERTEX_ATTRIB_ARRAY_DIVISOR, pattern ANY_SAMPLES_PASSED, pattern ANY_SAMPLES_PASSED_CONSERVATIVE, pattern SAMPLER_BINDING, pattern RGB10_A2UI, pattern INT_2_10_10_10_REV, pattern TRANSFORM_FEEDBACK, pattern TRANSFORM_FEEDBACK_PAUSED, pattern TRANSFORM_FEEDBACK_ACTIVE, pattern TRANSFORM_FEEDBACK_BINDING, pattern TEXTURE_IMMUTABLE_FORMAT, pattern MAX_ELEMENT_INDEX, pattern TEXTURE_IMMUTABLE_LEVELS, pattern TIMEOUT_IGNORED, pattern MAX_CLIENT_WAIT_TIMEOUT_WEBGL, WebGL2RenderingContextBase(..), gTypeWebGL2RenderingContextBase, IsWebGL2RenderingContextBase, toWebGL2RenderingContextBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"beginQuery\"]($2, $3); })"
+        js_beginQuery :: WebGL2RenderingContextBase -> Word -> WebGLQuery -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/beginQuery MDN WebGL2RenderingContextBase.beginQuery documentation>
+beginQuery :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> WebGLQuery -> m ()
+beginQuery self target query = liftDOM (void ((js_beginQuery ((Types.toWebGL2RenderingContextBase self)) (target) (query))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"beginTransformFeedback\"]($2); })"
+        js_beginTransformFeedback :: WebGL2RenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/beginTransformFeedback MDN WebGL2RenderingContextBase.beginTransformFeedback documentation>
+beginTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> m ()
+beginTransformFeedback self primitiveMode = liftDOM (void ((js_beginTransformFeedback ((Types.toWebGL2RenderingContextBase self)) (primitiveMode))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bindBufferBase\"]($2, $3, $4); })"
+        js_bindBufferBase :: WebGL2RenderingContextBase -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bindBufferBase MDN WebGL2RenderingContextBase.bindBufferBase documentation>
+bindBufferBase :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Maybe WebGLBuffer -> m ()
+bindBufferBase self target index buffer = liftDOM (void (((toJSVal buffer) >>= \a4' -> js_bindBufferBase ((Types.toWebGL2RenderingContextBase self)) (target) (index) a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"bindBufferRange\"]($2, $3, $4, $5, $6); })"
+        js_bindBufferRange :: WebGL2RenderingContextBase -> Word -> Word -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bindBufferRange MDN WebGL2RenderingContextBase.bindBufferRange documentation>
+bindBufferRange :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Maybe WebGLBuffer -> Int53 -> Int53 -> m ()
+bindBufferRange self target index buffer offset size = liftDOM (void (((toJSVal buffer) >>= \a4' -> (toJSVal offset) >>= \a5' -> (toJSVal size) >>= \a6' -> js_bindBufferRange ((Types.toWebGL2RenderingContextBase self)) (target) (index) a4' a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"bindSampler\"]($2, $3); })"
+        js_bindSampler :: WebGL2RenderingContextBase -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bindSampler MDN WebGL2RenderingContextBase.bindSampler documentation>
+bindSampler :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Maybe WebGLSampler -> m ()
+bindSampler self unit sampler = liftDOM (void (((toJSVal sampler) >>= \a3' -> js_bindSampler ((Types.toWebGL2RenderingContextBase self)) (unit) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"bindTransformFeedback\"]($2, $3); })"
+        js_bindTransformFeedback :: WebGL2RenderingContextBase -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bindTransformFeedback MDN WebGL2RenderingContextBase.bindTransformFeedback documentation>
+bindTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Maybe WebGLTransformFeedback -> m ()
+bindTransformFeedback self target tf = liftDOM (void (((toJSVal tf) >>= \a3' -> js_bindTransformFeedback ((Types.toWebGL2RenderingContextBase self)) (target) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"bindVertexArray\"]($2); })"
+        js_bindVertexArray :: WebGL2RenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bindVertexArray MDN WebGL2RenderingContextBase.bindVertexArray documentation>
+bindVertexArray :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLVertexArrayObject -> m ()
+bindVertexArray self array = liftDOM (void (((toJSVal array) >>= \a2' -> js_bindVertexArray ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"blitFramebuffer\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_blitFramebuffer :: WebGL2RenderingContextBase -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/blitFramebuffer MDN WebGL2RenderingContextBase.blitFramebuffer documentation>
+blitFramebuffer :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> m ()
+blitFramebuffer self srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1 dstY1 mask filter = liftDOM (void ((js_blitFramebuffer ((Types.toWebGL2RenderingContextBase self)) (srcX0) (srcY0) (srcX1) (srcY1) (dstX0) (dstY0) (dstX1) (dstY1) (mask) (filter))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"clearBufferfi\"]($2, $3, $4, $5); })"
+        js_clearBufferfi :: WebGL2RenderingContextBase -> Word -> Int -> Float -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clearBuffer MDN WebGL2RenderingContextBase.clearBufferfi documentation>
+clearBufferfi :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Float -> Int -> m ()
+clearBufferfi self buffer drawbuffer depth stencil = liftDOM (void ((js_clearBufferfi ((Types.toWebGL2RenderingContextBase self)) (buffer) (drawbuffer) (depth) (stencil))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"clearBufferfv\"]($2, $3, $4); })"
+        js_clearBufferfv :: WebGL2RenderingContextBase -> Word -> Int -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clearBuffer MDN WebGL2RenderingContextBase.clearBufferfv documentation>
+clearBufferfv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List values) => self -> Word -> Int -> values -> m ()
+clearBufferfv self buffer drawbuffer values = liftDOM (void ((js_clearBufferfv ((Types.toWebGL2RenderingContextBase self)) (buffer) (drawbuffer) (Types.toFloat32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"clearBufferfv\"]($2, $3, $4, $5); })"
+        js_clearBufferfv' :: WebGL2RenderingContextBase -> Word -> Int -> Float32List -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clearBuffer MDN WebGL2RenderingContextBase.clearBufferfv documentation>
+clearBufferfv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List values) => self -> Word -> Int -> values -> Maybe Word53 -> m ()
+clearBufferfv' self buffer drawbuffer values srcOffset = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> js_clearBufferfv' ((Types.toWebGL2RenderingContextBase self)) (buffer) (drawbuffer) (Types.toFloat32List values) a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"clearBufferiv\"]($2, $3, $4); })"
+        js_clearBufferiv :: WebGL2RenderingContextBase -> Word -> Int -> Int32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clearBuffer MDN WebGL2RenderingContextBase.clearBufferiv documentation>
+clearBufferiv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsInt32List values) => self -> Word -> Int -> values -> m ()
+clearBufferiv self buffer drawbuffer values = liftDOM (void ((js_clearBufferiv ((Types.toWebGL2RenderingContextBase self)) (buffer) (drawbuffer) (Types.toInt32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"clearBufferiv\"]($2, $3, $4, $5); })"
+        js_clearBufferiv' :: WebGL2RenderingContextBase -> Word -> Int -> Int32List -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clearBuffer MDN WebGL2RenderingContextBase.clearBufferiv documentation>
+clearBufferiv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsInt32List values) => self -> Word -> Int -> values -> Maybe Word53 -> m ()
+clearBufferiv' self buffer drawbuffer values srcOffset = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> js_clearBufferiv' ((Types.toWebGL2RenderingContextBase self)) (buffer) (drawbuffer) (Types.toInt32List values) a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"clearBufferuiv\"]($2, $3, $4); })"
+        js_clearBufferuiv :: WebGL2RenderingContextBase -> Word -> Int -> Uint32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clearBuffer MDN WebGL2RenderingContextBase.clearBufferuiv documentation>
+clearBufferuiv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List values) => self -> Word -> Int -> values -> m ()
+clearBufferuiv self buffer drawbuffer values = liftDOM (void ((js_clearBufferuiv ((Types.toWebGL2RenderingContextBase self)) (buffer) (drawbuffer) (Types.toUint32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"clearBufferuiv\"]($2, $3, $4, $5); })"
+        js_clearBufferuiv' :: WebGL2RenderingContextBase -> Word -> Int -> Uint32List -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clearBuffer MDN WebGL2RenderingContextBase.clearBufferuiv documentation>
+clearBufferuiv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List values) => self -> Word -> Int -> values -> Maybe Word53 -> m ()
+clearBufferuiv' self buffer drawbuffer values srcOffset = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> js_clearBufferuiv' ((Types.toWebGL2RenderingContextBase self)) (buffer) (drawbuffer) (Types.toUint32List values) a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"clientWaitSync\"]($2, $3, $4); })"
+        js_clientWaitSync :: WebGL2RenderingContextBase -> WebGLSync -> Word -> JSVal -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clientWaitSync MDN WebGL2RenderingContextBase.clientWaitSync documentation>
+clientWaitSync :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSync -> Word -> Word53 -> m Word
+clientWaitSync self sync flags timeout = liftDOM (((toJSVal timeout) >>= \a4' -> js_clientWaitSync ((Types.toWebGL2RenderingContextBase self)) (sync) (flags) a4'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/clientWaitSync MDN WebGL2RenderingContextBase.clientWaitSync documentation>
+clientWaitSync_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSync -> Word -> Word53 -> m ()
+clientWaitSync_ self sync flags timeout = liftDOM (void (((toJSVal timeout) >>= \a4' -> js_clientWaitSync ((Types.toWebGL2RenderingContextBase self)) (sync) (flags) a4')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"compressedTexImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_compressedTexImage3D :: WebGL2RenderingContextBase -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> Int -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/compressedTexImage3D MDN WebGL2RenderingContextBase.compressedTexImage3D documentation>
+compressedTexImage3D :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> Int -> Int53 -> m ()
+compressedTexImage3D self target level internalformat width height depth border imageSize offset = liftDOM (void (((toJSVal offset) >>= \a10' -> js_compressedTexImage3D ((Types.toWebGL2RenderingContextBase self)) (target) (level) (internalformat) (width) (height) (depth) (border) (imageSize) a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"compressedTexImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_compressedTexImage3DSrcDataSrcOffsetSrcLengthOverride :: WebGL2RenderingContextBase -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> ArrayBufferView -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/compressedTexImage3D MDN WebGL2RenderingContextBase.compressedTexImage3D documentation>
+compressedTexImage3DSrcDataSrcOffsetSrcLengthOverride :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsArrayBufferView srcData) => self -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> srcData -> Maybe Word53 -> Maybe Word -> m ()
+compressedTexImage3DSrcDataSrcOffsetSrcLengthOverride self target level internalformat width height depth border srcData srcOffset srcLengthOverride = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a10' -> (P.maybe (P.return jsUndefined) toJSVal srcLengthOverride) >>= \a11' -> js_compressedTexImage3DSrcDataSrcOffsetSrcLengthOverride ((Types.toWebGL2RenderingContextBase self)) (target) (level) (internalformat) (width) (height) (depth) (border) (Types.toArrayBufferView srcData) a10' a11')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"compressedTexSubImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12); })"
+        js_compressedTexSubImage3D :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Int -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/compressedTexSubImage3D MDN WebGL2RenderingContextBase.compressedTexSubImage3D documentation>
+compressedTexSubImage3D :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Int -> Int53 -> m ()
+compressedTexSubImage3D self target level xoffset yoffset zoffset width height depth format imageSize offset = liftDOM (void (((toJSVal offset) >>= \a12' -> js_compressedTexSubImage3D ((Types.toWebGL2RenderingContextBase self)) (target) (level) (xoffset) (yoffset) (zoffset) (width) (height) (depth) (format) (imageSize) a12')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13) => { return $1[\"compressedTexSubImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13); })"
+        js_compressedTexSubImage3DSrcDataSrcOffsetSrcLengthOverride :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> ArrayBufferView -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/compressedTexSubImage3D MDN WebGL2RenderingContextBase.compressedTexSubImage3D documentation>
+compressedTexSubImage3DSrcDataSrcOffsetSrcLengthOverride :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsArrayBufferView srcData) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> srcData -> Maybe Word53 -> Maybe Word -> m ()
+compressedTexSubImage3DSrcDataSrcOffsetSrcLengthOverride self target level xoffset yoffset zoffset width height depth format srcData srcOffset srcLengthOverride = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a12' -> (P.maybe (P.return jsUndefined) toJSVal srcLengthOverride) >>= \a13' -> js_compressedTexSubImage3DSrcDataSrcOffsetSrcLengthOverride ((Types.toWebGL2RenderingContextBase self)) (target) (level) (xoffset) (yoffset) (zoffset) (width) (height) (depth) (format) (Types.toArrayBufferView srcData) a12' a13')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"copyBufferSubData\"]($2, $3, $4, $5, $6); })"
+        js_copyBufferSubData :: WebGL2RenderingContextBase -> Word -> Word -> JSVal -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/copyBufferSubData MDN WebGL2RenderingContextBase.copyBufferSubData documentation>
+copyBufferSubData :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Int53 -> Int53 -> Int53 -> m ()
+copyBufferSubData self readTarget writeTarget readOffset writeOffset size = liftDOM (void (((toJSVal readOffset) >>= \a4' -> (toJSVal writeOffset) >>= \a5' -> (toJSVal size) >>= \a6' -> js_copyBufferSubData ((Types.toWebGL2RenderingContextBase self)) (readTarget) (writeTarget) a4' a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"copyTexSubImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_copyTexSubImage3D :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/copyTexSubImage3D MDN WebGL2RenderingContextBase.copyTexSubImage3D documentation>
+copyTexSubImage3D :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> m ()
+copyTexSubImage3D self target level xoffset yoffset zoffset x y width height = liftDOM (void ((js_copyTexSubImage3D ((Types.toWebGL2RenderingContextBase self)) (target) (level) (xoffset) (yoffset) (zoffset) (x) (y) (width) (height))))
+
+foreign import javascript safe "(($1) => { return $1[\"createQuery\"](); })"
+        js_createQuery :: WebGL2RenderingContextBase -> IO WebGLQuery
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createQuery MDN WebGL2RenderingContextBase.createQuery documentation>
+createQuery :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLQuery
+createQuery self = liftDOM ((js_createQuery ((Types.toWebGL2RenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createQuery MDN WebGL2RenderingContextBase.createQuery documentation>
+createQuery_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createQuery_ self = liftDOM (void ((js_createQuery ((Types.toWebGL2RenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createSampler\"](); })"
+        js_createSampler :: WebGL2RenderingContextBase -> IO WebGLSampler
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createSampler MDN WebGL2RenderingContextBase.createSampler documentation>
+createSampler :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLSampler
+createSampler self = liftDOM ((js_createSampler ((Types.toWebGL2RenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createSampler MDN WebGL2RenderingContextBase.createSampler documentation>
+createSampler_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createSampler_ self = liftDOM (void ((js_createSampler ((Types.toWebGL2RenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createTransformFeedback\"](); })"
+        js_createTransformFeedback :: WebGL2RenderingContextBase -> IO WebGLTransformFeedback
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createTransformFeedback MDN WebGL2RenderingContextBase.createTransformFeedback documentation>
+createTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLTransformFeedback
+createTransformFeedback self = liftDOM ((js_createTransformFeedback ((Types.toWebGL2RenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createTransformFeedback MDN WebGL2RenderingContextBase.createTransformFeedback documentation>
+createTransformFeedback_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createTransformFeedback_ self = liftDOM (void ((js_createTransformFeedback ((Types.toWebGL2RenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createVertexArray\"](); })"
+        js_createVertexArray :: WebGL2RenderingContextBase -> IO WebGLVertexArrayObject
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createVertexArray MDN WebGL2RenderingContextBase.createVertexArray documentation>
+createVertexArray :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLVertexArrayObject
+createVertexArray self = liftDOM ((js_createVertexArray ((Types.toWebGL2RenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createVertexArray MDN WebGL2RenderingContextBase.createVertexArray documentation>
+createVertexArray_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createVertexArray_ self = liftDOM (void ((js_createVertexArray ((Types.toWebGL2RenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteQuery\"]($2); })"
+        js_deleteQuery :: WebGL2RenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/deleteQuery MDN WebGL2RenderingContextBase.deleteQuery documentation>
+deleteQuery :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLQuery -> m ()
+deleteQuery self query = liftDOM (void (((toJSVal query) >>= \a2' -> js_deleteQuery ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteSampler\"]($2); })"
+        js_deleteSampler :: WebGL2RenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/deleteSampler MDN WebGL2RenderingContextBase.deleteSampler documentation>
+deleteSampler :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLSampler -> m ()
+deleteSampler self sampler = liftDOM (void (((toJSVal sampler) >>= \a2' -> js_deleteSampler ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteSync\"]($2); })"
+        js_deleteSync :: WebGL2RenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/deleteSync MDN WebGL2RenderingContextBase.deleteSync documentation>
+deleteSync :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLSync -> m ()
+deleteSync self sync = liftDOM (void (((toJSVal sync) >>= \a2' -> js_deleteSync ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteTransformFeedback\"]($2); })"
+        js_deleteTransformFeedback :: WebGL2RenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/deleteTransformFeedback MDN WebGL2RenderingContextBase.deleteTransformFeedback documentation>
+deleteTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLTransformFeedback -> m ()
+deleteTransformFeedback self tf = liftDOM (void (((toJSVal tf) >>= \a2' -> js_deleteTransformFeedback ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteVertexArray\"]($2); })"
+        js_deleteVertexArray :: WebGL2RenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/deleteVertexArray MDN WebGL2RenderingContextBase.deleteVertexArray documentation>
+deleteVertexArray :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLVertexArrayObject -> m ()
+deleteVertexArray self vertexArray = liftDOM (void (((toJSVal vertexArray) >>= \a2' -> js_deleteVertexArray ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"drawArraysInstanced\"]($2, $3, $4, $5); })"
+        js_drawArraysInstanced :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/drawArraysInstanced MDN WebGL2RenderingContextBase.drawArraysInstanced documentation>
+drawArraysInstanced :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Int -> Int -> m ()
+drawArraysInstanced self mode first count instanceCount = liftDOM (void ((js_drawArraysInstanced ((Types.toWebGL2RenderingContextBase self)) (mode) (first) (count) (instanceCount))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"drawBuffers\"]($2); })"
+        js_drawBuffers :: WebGL2RenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/drawBuffers MDN WebGL2RenderingContextBase.drawBuffers documentation>
+drawBuffers :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> [Word] -> m ()
+drawBuffers self buffers = liftDOM (void (((toJSVal buffers) >>= \a2' -> js_drawBuffers ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawElementsInstanced\"]($2, $3, $4, $5, $6); })"
+        js_drawElementsInstanced :: WebGL2RenderingContextBase -> Word -> Int -> Word -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/drawElementsInstanced MDN WebGL2RenderingContextBase.drawElementsInstanced documentation>
+drawElementsInstanced :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Word -> Int53 -> Int -> m ()
+drawElementsInstanced self mode count type' offset instanceCount = liftDOM (void (((toJSVal offset) >>= \a5' -> js_drawElementsInstanced ((Types.toWebGL2RenderingContextBase self)) (mode) (count) (type') a5' (instanceCount))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"drawRangeElements\"]($2, $3, $4, $5, $6, $7); })"
+        js_drawRangeElements :: WebGL2RenderingContextBase -> Word -> Word -> Word -> Int -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/drawRangeElements MDN WebGL2RenderingContextBase.drawRangeElements documentation>
+drawRangeElements :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Word -> Int -> Word -> Int53 -> m ()
+drawRangeElements self mode start end count type' offset = liftDOM (void (((toJSVal offset) >>= \a7' -> js_drawRangeElements ((Types.toWebGL2RenderingContextBase self)) (mode) (start) (end) (count) (type') a7')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"endQuery\"]($2); })"
+        js_endQuery :: WebGL2RenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/endQuery MDN WebGL2RenderingContextBase.endQuery documentation>
+endQuery :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> m ()
+endQuery self target = liftDOM (void ((js_endQuery ((Types.toWebGL2RenderingContextBase self)) (target))))
+
+foreign import javascript safe "(($1) => { return $1[\"endTransformFeedback\"](); })"
+        js_endTransformFeedback :: WebGL2RenderingContextBase -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/endTransformFeedback MDN WebGL2RenderingContextBase.endTransformFeedback documentation>
+endTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+endTransformFeedback self = liftDOM (void ((js_endTransformFeedback ((Types.toWebGL2RenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"fenceSync\"]($2, $3); })"
+        js_fenceSync :: WebGL2RenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/fenceSync MDN WebGL2RenderingContextBase.fenceSync documentation>
+fenceSync :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m (Maybe WebGLSync)
+fenceSync self condition flags = liftDOM (((js_fenceSync ((Types.toWebGL2RenderingContextBase self)) (condition) (flags)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/fenceSync MDN WebGL2RenderingContextBase.fenceSync documentation>
+fenceSync_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m ()
+fenceSync_ self condition flags = liftDOM (void ((js_fenceSync ((Types.toWebGL2RenderingContextBase self)) (condition) (flags))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/fenceSync MDN WebGL2RenderingContextBase.fenceSync documentation>
+fenceSyncUnsafe :: (MonadDOM m, IsWebGL2RenderingContextBase self, HasCallStack) => self -> Word -> Word -> m WebGLSync
+fenceSyncUnsafe self condition flags = liftDOM ((((js_fenceSync ((Types.toWebGL2RenderingContextBase self)) (condition) (flags)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/fenceSync MDN WebGL2RenderingContextBase.fenceSync documentation>
+fenceSyncUnchecked :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m WebGLSync
+fenceSyncUnchecked self condition flags = liftDOM ((pFromJSVal <$> (js_fenceSync ((Types.toWebGL2RenderingContextBase self)) (condition) (flags))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"framebufferTextureLayer\"]($2, $3, $4, $5, $6); })"
+        js_framebufferTextureLayer :: WebGL2RenderingContextBase -> Word -> Word -> JSVal -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/framebufferTextureLayer MDN WebGL2RenderingContextBase.framebufferTextureLayer documentation>
+framebufferTextureLayer :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Maybe WebGLTexture -> Int -> Int -> m ()
+framebufferTextureLayer self target attachment texture level layer = liftDOM (void (((toJSVal texture) >>= \a4' -> js_framebufferTextureLayer ((Types.toWebGL2RenderingContextBase self)) (target) (attachment) a4' (level) (layer))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getActiveUniformBlockName\"]($2, $3); })"
+        js_getActiveUniformBlockName :: WebGL2RenderingContextBase -> WebGLProgram -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockName MDN WebGL2RenderingContextBase.getActiveUniformBlockName documentation>
+getActiveUniformBlockName :: (MonadDOM m, IsWebGL2RenderingContextBase self, FromJSString result) => self -> WebGLProgram -> Word -> m (Maybe result)
+getActiveUniformBlockName self program uniformBlockIndex = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getActiveUniformBlockName ((Types.toWebGL2RenderingContextBase self)) (program) (uniformBlockIndex))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockName MDN WebGL2RenderingContextBase.getActiveUniformBlockName documentation>
+getActiveUniformBlockName_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> Word -> m ()
+getActiveUniformBlockName_ self program uniformBlockIndex = liftDOM (void ((js_getActiveUniformBlockName ((Types.toWebGL2RenderingContextBase self)) (program) (uniformBlockIndex))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockName MDN WebGL2RenderingContextBase.getActiveUniformBlockName documentation>
+getActiveUniformBlockNameUnsafe :: (MonadDOM m, IsWebGL2RenderingContextBase self, HasCallStack, FromJSString result) => self -> WebGLProgram -> Word -> m result
+getActiveUniformBlockNameUnsafe self program uniformBlockIndex = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getActiveUniformBlockName ((Types.toWebGL2RenderingContextBase self)) (program) (uniformBlockIndex))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockName MDN WebGL2RenderingContextBase.getActiveUniformBlockName documentation>
+getActiveUniformBlockNameUnchecked :: (MonadDOM m, IsWebGL2RenderingContextBase self, FromJSString result) => self -> WebGLProgram -> Word -> m result
+getActiveUniformBlockNameUnchecked self program uniformBlockIndex = liftDOM ((pFromJSVal <$> (js_getActiveUniformBlockName ((Types.toWebGL2RenderingContextBase self)) (program) (uniformBlockIndex))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getActiveUniformBlockParameter\"]($2, $3, $4); })"
+        js_getActiveUniformBlockParameter :: WebGL2RenderingContextBase -> WebGLProgram -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter MDN WebGL2RenderingContextBase.getActiveUniformBlockParameter documentation>
+getActiveUniformBlockParameter :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> Word -> Word -> m JSVal
+getActiveUniformBlockParameter self program uniformBlockIndex pname = liftDOM ((js_getActiveUniformBlockParameter ((Types.toWebGL2RenderingContextBase self)) (program) (uniformBlockIndex) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter MDN WebGL2RenderingContextBase.getActiveUniformBlockParameter documentation>
+getActiveUniformBlockParameter_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> Word -> Word -> m ()
+getActiveUniformBlockParameter_ self program uniformBlockIndex pname = liftDOM (void ((js_getActiveUniformBlockParameter ((Types.toWebGL2RenderingContextBase self)) (program) (uniformBlockIndex) (pname))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getActiveUniforms\"]($2, $3, $4); })"
+        js_getActiveUniforms :: WebGL2RenderingContextBase -> WebGLProgram -> JSVal -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms MDN WebGL2RenderingContextBase.getActiveUniforms documentation>
+getActiveUniforms :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> [Word] -> Word -> m JSVal
+getActiveUniforms self program uniformIndices pname = liftDOM (((toJSVal uniformIndices) >>= \a3' -> js_getActiveUniforms ((Types.toWebGL2RenderingContextBase self)) (program) a3' (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getActiveUniforms MDN WebGL2RenderingContextBase.getActiveUniforms documentation>
+getActiveUniforms_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> [Word] -> Word -> m ()
+getActiveUniforms_ self program uniformIndices pname = liftDOM (void (((toJSVal uniformIndices) >>= \a3' -> js_getActiveUniforms ((Types.toWebGL2RenderingContextBase self)) (program) a3' (pname))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"getBufferSubData\"]($2, $3, $4, $5, $6); })"
+        js_getBufferSubData :: WebGL2RenderingContextBase -> Word -> JSVal -> ArrayBufferView -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getBufferSubData MDN WebGL2RenderingContextBase.getBufferSubData documentation>
+getBufferSubData :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsArrayBufferView dstBuffer) => self -> Word -> Int53 -> dstBuffer -> Maybe Word53 -> Maybe Word -> m ()
+getBufferSubData self target srcByteOffset dstBuffer dstOffset length = liftDOM (void (((toJSVal srcByteOffset) >>= \a3' -> (P.maybe (P.return jsUndefined) toJSVal dstOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal length) >>= \a6' -> js_getBufferSubData ((Types.toWebGL2RenderingContextBase self)) (target) a3' (Types.toArrayBufferView dstBuffer) a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getFragDataLocation\"]($2, $3); })"
+        js_getFragDataLocation :: WebGL2RenderingContextBase -> WebGLProgram -> JSString -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getFragDataLocation MDN WebGL2RenderingContextBase.getFragDataLocation documentation>
+getFragDataLocation :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m Int
+getFragDataLocation self program name = liftDOM ((js_getFragDataLocation ((Types.toWebGL2RenderingContextBase self)) (program) (toJSString name)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getFragDataLocation MDN WebGL2RenderingContextBase.getFragDataLocation documentation>
+getFragDataLocation_ :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m ()
+getFragDataLocation_ self program name = liftDOM (void ((js_getFragDataLocation ((Types.toWebGL2RenderingContextBase self)) (program) (toJSString name))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getIndexedParameter\"]($2, $3); })"
+        js_getIndexedParameter :: WebGL2RenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getIndexedParameter MDN WebGL2RenderingContextBase.getIndexedParameter documentation>
+getIndexedParameter :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m JSVal
+getIndexedParameter self target index = liftDOM ((js_getIndexedParameter ((Types.toWebGL2RenderingContextBase self)) (target) (index)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getIndexedParameter MDN WebGL2RenderingContextBase.getIndexedParameter documentation>
+getIndexedParameter_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m ()
+getIndexedParameter_ self target index = liftDOM (void ((js_getIndexedParameter ((Types.toWebGL2RenderingContextBase self)) (target) (index))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getInternalformatParameter\"]($2, $3, $4); })"
+        js_getInternalformatParameter :: WebGL2RenderingContextBase -> Word -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getInternalformatParameter MDN WebGL2RenderingContextBase.getInternalformatParameter documentation>
+getInternalformatParameter :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Word -> m JSVal
+getInternalformatParameter self target internalformat pname = liftDOM ((js_getInternalformatParameter ((Types.toWebGL2RenderingContextBase self)) (target) (internalformat) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getInternalformatParameter MDN WebGL2RenderingContextBase.getInternalformatParameter documentation>
+getInternalformatParameter_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Word -> m ()
+getInternalformatParameter_ self target internalformat pname = liftDOM (void ((js_getInternalformatParameter ((Types.toWebGL2RenderingContextBase self)) (target) (internalformat) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getQuery\"]($2, $3); })"
+        js_getQuery :: WebGL2RenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getQuery MDN WebGL2RenderingContextBase.getQuery documentation>
+getQuery :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m (Maybe WebGLQuery)
+getQuery self target pname = liftDOM (((js_getQuery ((Types.toWebGL2RenderingContextBase self)) (target) (pname)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getQuery MDN WebGL2RenderingContextBase.getQuery documentation>
+getQuery_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m ()
+getQuery_ self target pname = liftDOM (void ((js_getQuery ((Types.toWebGL2RenderingContextBase self)) (target) (pname))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getQuery MDN WebGL2RenderingContextBase.getQuery documentation>
+getQueryUnsafe :: (MonadDOM m, IsWebGL2RenderingContextBase self, HasCallStack) => self -> Word -> Word -> m WebGLQuery
+getQueryUnsafe self target pname = liftDOM ((((js_getQuery ((Types.toWebGL2RenderingContextBase self)) (target) (pname)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getQuery MDN WebGL2RenderingContextBase.getQuery documentation>
+getQueryUnchecked :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m WebGLQuery
+getQueryUnchecked self target pname = liftDOM ((pFromJSVal <$> (js_getQuery ((Types.toWebGL2RenderingContextBase self)) (target) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getQueryParameter\"]($2, $3); })"
+        js_getQueryParameter :: WebGL2RenderingContextBase -> WebGLQuery -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getQueryParameter MDN WebGL2RenderingContextBase.getQueryParameter documentation>
+getQueryParameter :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLQuery -> Word -> m JSVal
+getQueryParameter self query pname = liftDOM ((js_getQueryParameter ((Types.toWebGL2RenderingContextBase self)) (query) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getQueryParameter MDN WebGL2RenderingContextBase.getQueryParameter documentation>
+getQueryParameter_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLQuery -> Word -> m ()
+getQueryParameter_ self query pname = liftDOM (void ((js_getQueryParameter ((Types.toWebGL2RenderingContextBase self)) (query) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getSamplerParameter\"]($2, $3); })"
+        js_getSamplerParameter :: WebGL2RenderingContextBase -> WebGLSampler -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getSamplerParameter MDN WebGL2RenderingContextBase.getSamplerParameter documentation>
+getSamplerParameter :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSampler -> Word -> m JSVal
+getSamplerParameter self sampler pname = liftDOM ((js_getSamplerParameter ((Types.toWebGL2RenderingContextBase self)) (sampler) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getSamplerParameter MDN WebGL2RenderingContextBase.getSamplerParameter documentation>
+getSamplerParameter_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSampler -> Word -> m ()
+getSamplerParameter_ self sampler pname = liftDOM (void ((js_getSamplerParameter ((Types.toWebGL2RenderingContextBase self)) (sampler) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getSyncParameter\"]($2, $3); })"
+        js_getSyncParameter :: WebGL2RenderingContextBase -> WebGLSync -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getSyncParameter MDN WebGL2RenderingContextBase.getSyncParameter documentation>
+getSyncParameter :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSync -> Word -> m JSVal
+getSyncParameter self sync pname = liftDOM ((js_getSyncParameter ((Types.toWebGL2RenderingContextBase self)) (sync) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getSyncParameter MDN WebGL2RenderingContextBase.getSyncParameter documentation>
+getSyncParameter_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSync -> Word -> m ()
+getSyncParameter_ self sync pname = liftDOM (void ((js_getSyncParameter ((Types.toWebGL2RenderingContextBase self)) (sync) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getTransformFeedbackVarying\"]($2, $3); })"
+        js_getTransformFeedbackVarying :: WebGL2RenderingContextBase -> WebGLProgram -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getTransformFeedbackVarying MDN WebGL2RenderingContextBase.getTransformFeedbackVarying documentation>
+getTransformFeedbackVarying :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> Word -> m (Maybe WebGLActiveInfo)
+getTransformFeedbackVarying self program index = liftDOM (((js_getTransformFeedbackVarying ((Types.toWebGL2RenderingContextBase self)) (program) (index)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getTransformFeedbackVarying MDN WebGL2RenderingContextBase.getTransformFeedbackVarying documentation>
+getTransformFeedbackVarying_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> Word -> m ()
+getTransformFeedbackVarying_ self program index = liftDOM (void ((js_getTransformFeedbackVarying ((Types.toWebGL2RenderingContextBase self)) (program) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getTransformFeedbackVarying MDN WebGL2RenderingContextBase.getTransformFeedbackVarying documentation>
+getTransformFeedbackVaryingUnsafe :: (MonadDOM m, IsWebGL2RenderingContextBase self, HasCallStack) => self -> WebGLProgram -> Word -> m WebGLActiveInfo
+getTransformFeedbackVaryingUnsafe self program index = liftDOM ((((js_getTransformFeedbackVarying ((Types.toWebGL2RenderingContextBase self)) (program) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getTransformFeedbackVarying MDN WebGL2RenderingContextBase.getTransformFeedbackVarying documentation>
+getTransformFeedbackVaryingUnchecked :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> Word -> m WebGLActiveInfo
+getTransformFeedbackVaryingUnchecked self program index = liftDOM ((pFromJSVal <$> (js_getTransformFeedbackVarying ((Types.toWebGL2RenderingContextBase self)) (program) (index))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getUniformBlockIndex\"]($2, $3); })"
+        js_getUniformBlockIndex :: WebGL2RenderingContextBase -> WebGLProgram -> JSString -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformBlockIndex MDN WebGL2RenderingContextBase.getUniformBlockIndex documentation>
+getUniformBlockIndex :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString uniformBlockName) => self -> WebGLProgram -> uniformBlockName -> m Word
+getUniformBlockIndex self program uniformBlockName = liftDOM ((js_getUniformBlockIndex ((Types.toWebGL2RenderingContextBase self)) (program) (toJSString uniformBlockName)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformBlockIndex MDN WebGL2RenderingContextBase.getUniformBlockIndex documentation>
+getUniformBlockIndex_ :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString uniformBlockName) => self -> WebGLProgram -> uniformBlockName -> m ()
+getUniformBlockIndex_ self program uniformBlockName = liftDOM (void ((js_getUniformBlockIndex ((Types.toWebGL2RenderingContextBase self)) (program) (toJSString uniformBlockName))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getUniformIndices\"]($2, $3); })"
+        js_getUniformIndices :: WebGL2RenderingContextBase -> WebGLProgram -> JSVal -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices MDN WebGL2RenderingContextBase.getUniformIndices documentation>
+getUniformIndices :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString uniformNames) => self -> WebGLProgram -> [uniformNames] -> m (Maybe [Word])
+getUniformIndices self program uniformNames = liftDOM ((((toJSVal uniformNames) >>= \a3' -> js_getUniformIndices ((Types.toWebGL2RenderingContextBase self)) (program) a3') >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices MDN WebGL2RenderingContextBase.getUniformIndices documentation>
+getUniformIndices_ :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString uniformNames) => self -> WebGLProgram -> [uniformNames] -> m ()
+getUniformIndices_ self program uniformNames = liftDOM (void (((toJSVal uniformNames) >>= \a3' -> js_getUniformIndices ((Types.toWebGL2RenderingContextBase self)) (program) a3')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices MDN WebGL2RenderingContextBase.getUniformIndices documentation>
+getUniformIndicesUnsafe :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString uniformNames, HasCallStack) => self -> WebGLProgram -> [uniformNames] -> m [Word]
+getUniformIndicesUnsafe self program uniformNames = liftDOM (((((toJSVal uniformNames) >>= \a3' -> js_getUniformIndices ((Types.toWebGL2RenderingContextBase self)) (program) a3') >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/getUniformIndices MDN WebGL2RenderingContextBase.getUniformIndices documentation>
+getUniformIndicesUnchecked :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString uniformNames) => self -> WebGLProgram -> [uniformNames] -> m [Word]
+getUniformIndicesUnchecked self program uniformNames = liftDOM ((((toJSVal uniformNames) >>= \a3' -> js_getUniformIndices ((Types.toWebGL2RenderingContextBase self)) (program) a3') >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"invalidateFramebuffer\"]($2, $3); })"
+        js_invalidateFramebuffer :: WebGL2RenderingContextBase -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateFramebuffer MDN WebGL2RenderingContextBase.invalidateFramebuffer documentation>
+invalidateFramebuffer :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> [Word] -> m ()
+invalidateFramebuffer self target attachments = liftDOM (void (((toJSVal attachments) >>= \a3' -> js_invalidateFramebuffer ((Types.toWebGL2RenderingContextBase self)) (target) a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"invalidateSubFramebuffer\"]($2, $3, $4, $5, $6, $7); })"
+        js_invalidateSubFramebuffer :: WebGL2RenderingContextBase -> Word -> JSVal -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/invalidateSubFramebuffer MDN WebGL2RenderingContextBase.invalidateSubFramebuffer documentation>
+invalidateSubFramebuffer :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> [Word] -> Int -> Int -> Int -> Int -> m ()
+invalidateSubFramebuffer self target attachments x y width height = liftDOM (void (((toJSVal attachments) >>= \a3' -> js_invalidateSubFramebuffer ((Types.toWebGL2RenderingContextBase self)) (target) a3' (x) (y) (width) (height))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isQuery\"]($2); })"
+        js_isQuery :: WebGL2RenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isQuery MDN WebGL2RenderingContextBase.isQuery documentation>
+isQuery :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLQuery -> m Bool
+isQuery self query = liftDOM (((toJSVal query) >>= \a2' -> js_isQuery ((Types.toWebGL2RenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isQuery MDN WebGL2RenderingContextBase.isQuery documentation>
+isQuery_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLQuery -> m ()
+isQuery_ self query = liftDOM (void (((toJSVal query) >>= \a2' -> js_isQuery ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isSampler\"]($2); })"
+        js_isSampler :: WebGL2RenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isSampler MDN WebGL2RenderingContextBase.isSampler documentation>
+isSampler :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLSampler -> m Bool
+isSampler self sampler = liftDOM (((toJSVal sampler) >>= \a2' -> js_isSampler ((Types.toWebGL2RenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isSampler MDN WebGL2RenderingContextBase.isSampler documentation>
+isSampler_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLSampler -> m ()
+isSampler_ self sampler = liftDOM (void (((toJSVal sampler) >>= \a2' -> js_isSampler ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isSync\"]($2); })"
+        js_isSync :: WebGL2RenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isSync MDN WebGL2RenderingContextBase.isSync documentation>
+isSync :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLSync -> m Bool
+isSync self sync = liftDOM (((toJSVal sync) >>= \a2' -> js_isSync ((Types.toWebGL2RenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isSync MDN WebGL2RenderingContextBase.isSync documentation>
+isSync_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLSync -> m ()
+isSync_ self sync = liftDOM (void (((toJSVal sync) >>= \a2' -> js_isSync ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isTransformFeedback\"]($2); })"
+        js_isTransformFeedback :: WebGL2RenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isTransformFeedback MDN WebGL2RenderingContextBase.isTransformFeedback documentation>
+isTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLTransformFeedback -> m Bool
+isTransformFeedback self tf = liftDOM (((toJSVal tf) >>= \a2' -> js_isTransformFeedback ((Types.toWebGL2RenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isTransformFeedback MDN WebGL2RenderingContextBase.isTransformFeedback documentation>
+isTransformFeedback_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLTransformFeedback -> m ()
+isTransformFeedback_ self tf = liftDOM (void (((toJSVal tf) >>= \a2' -> js_isTransformFeedback ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isVertexArray\"]($2); })"
+        js_isVertexArray :: WebGL2RenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isVertexArray MDN WebGL2RenderingContextBase.isVertexArray documentation>
+isVertexArray :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLVertexArrayObject -> m Bool
+isVertexArray self vertexArray = liftDOM (((toJSVal vertexArray) >>= \a2' -> js_isVertexArray ((Types.toWebGL2RenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/isVertexArray MDN WebGL2RenderingContextBase.isVertexArray documentation>
+isVertexArray_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLVertexArrayObject -> m ()
+isVertexArray_ self vertexArray = liftDOM (void (((toJSVal vertexArray) >>= \a2' -> js_isVertexArray ((Types.toWebGL2RenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"pauseTransformFeedback\"](); })"
+        js_pauseTransformFeedback :: WebGL2RenderingContextBase -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/pauseTransformFeedback MDN WebGL2RenderingContextBase.pauseTransformFeedback documentation>
+pauseTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+pauseTransformFeedback self = liftDOM (void ((js_pauseTransformFeedback ((Types.toWebGL2RenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"readBuffer\"]($2); })"
+        js_readBuffer :: WebGL2RenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/readBuffer MDN WebGL2RenderingContextBase.readBuffer documentation>
+readBuffer :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> m ()
+readBuffer self src = liftDOM (void ((js_readBuffer ((Types.toWebGL2RenderingContextBase self)) (src))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"renderbufferStorageMultisample\"]($2, $3, $4, $5, $6); })"
+        js_renderbufferStorageMultisample :: WebGL2RenderingContextBase -> Word -> Int -> Word -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/renderbufferStorageMultisample MDN WebGL2RenderingContextBase.renderbufferStorageMultisample documentation>
+renderbufferStorageMultisample :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Word -> Int -> Int -> m ()
+renderbufferStorageMultisample self target samples internalformat width height = liftDOM (void ((js_renderbufferStorageMultisample ((Types.toWebGL2RenderingContextBase self)) (target) (samples) (internalformat) (width) (height))))
+
+foreign import javascript safe "(($1) => { return $1[\"resumeTransformFeedback\"](); })"
+        js_resumeTransformFeedback :: WebGL2RenderingContextBase -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/resumeTransformFeedback MDN WebGL2RenderingContextBase.resumeTransformFeedback documentation>
+resumeTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+resumeTransformFeedback self = liftDOM (void ((js_resumeTransformFeedback ((Types.toWebGL2RenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"samplerParameterf\"]($2, $3, $4); })"
+        js_samplerParameterf :: WebGL2RenderingContextBase -> WebGLSampler -> Word -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/samplerParameter MDN WebGL2RenderingContextBase.samplerParameterf documentation>
+samplerParameterf :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSampler -> Word -> Float -> m ()
+samplerParameterf self sampler pname param = liftDOM (void ((js_samplerParameterf ((Types.toWebGL2RenderingContextBase self)) (sampler) (pname) (param))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"samplerParameteri\"]($2, $3, $4); })"
+        js_samplerParameteri :: WebGL2RenderingContextBase -> WebGLSampler -> Word -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/samplerParameter MDN WebGL2RenderingContextBase.samplerParameteri documentation>
+samplerParameteri :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSampler -> Word -> Int -> m ()
+samplerParameteri self sampler pname param = liftDOM (void ((js_samplerParameteri ((Types.toWebGL2RenderingContextBase self)) (sampler) (pname) (param))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"texImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_texImage3D :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texImage3D MDN WebGL2RenderingContextBase.texImage3D documentation>
+texImage3D :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Int53 -> m ()
+texImage3D self target level internalformat width height depth border format type' pboOffset = liftDOM (void (((toJSVal pboOffset) >>= \a11' -> js_texImage3D ((Types.toWebGL2RenderingContextBase self)) (target) (level) (internalformat) (width) (height) (depth) (border) (format) (type') a11')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"texImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_texImage3DSource :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texImage3D MDN WebGL2RenderingContextBase.texImage3D documentation>
+texImage3DSource :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsTexImageSource source) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> source -> m ()
+texImage3DSource self target level internalformat width height depth border format type' source = liftDOM (void ((js_texImage3DSource ((Types.toWebGL2RenderingContextBase self)) (target) (level) (internalformat) (width) (height) (depth) (border) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"texImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_texImage3DSrcData :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texImage3D MDN WebGL2RenderingContextBase.texImage3D documentation>
+texImage3DSrcData :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsArrayBufferView srcData) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe srcData -> m ()
+texImage3DSrcData self target level internalformat width height depth border format type' srcData = liftDOM (void (((toJSVal srcData) >>= \a11' -> js_texImage3DSrcData ((Types.toWebGL2RenderingContextBase self)) (target) (level) (internalformat) (width) (height) (depth) (border) (format) (type') a11')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"texImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12); })"
+        js_texImage3DSrcDataSrcOffset :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> ArrayBufferView -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texImage3D MDN WebGL2RenderingContextBase.texImage3D documentation>
+texImage3DSrcDataSrcOffset :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsArrayBufferView srcData) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> srcData -> Word53 -> m ()
+texImage3DSrcDataSrcOffset self target level internalformat width height depth border format type' srcData srcOffset = liftDOM (void (((toJSVal srcOffset) >>= \a12' -> js_texImage3DSrcDataSrcOffset ((Types.toWebGL2RenderingContextBase self)) (target) (level) (internalformat) (width) (height) (depth) (border) (format) (type') (Types.toArrayBufferView srcData) a12')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"texStorage2D\"]($2, $3, $4, $5, $6); })"
+        js_texStorage2D :: WebGL2RenderingContextBase -> Word -> Int -> Word -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texStorage2D MDN WebGL2RenderingContextBase.texStorage2D documentation>
+texStorage2D :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Word -> Int -> Int -> m ()
+texStorage2D self target levels internalformat width height = liftDOM (void ((js_texStorage2D ((Types.toWebGL2RenderingContextBase self)) (target) (levels) (internalformat) (width) (height))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"texStorage3D\"]($2, $3, $4, $5, $6, $7); })"
+        js_texStorage3D :: WebGL2RenderingContextBase -> Word -> Int -> Word -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texStorage3D MDN WebGL2RenderingContextBase.texStorage3D documentation>
+texStorage3D :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Word -> Int -> Int -> Int -> m ()
+texStorage3D self target levels internalformat width height depth = liftDOM (void ((js_texStorage3D ((Types.toWebGL2RenderingContextBase self)) (target) (levels) (internalformat) (width) (height) (depth))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"texSubImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12); })"
+        js_texSubImage3D :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texSubImage3D MDN WebGL2RenderingContextBase.texSubImage3D documentation>
+texSubImage3D :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Int53 -> m ()
+texSubImage3D self target level xoffset yoffset zoffset width height depth format type' pboOffset = liftDOM (void (((toJSVal pboOffset) >>= \a12' -> js_texSubImage3D ((Types.toWebGL2RenderingContextBase self)) (target) (level) (xoffset) (yoffset) (zoffset) (width) (height) (depth) (format) (type') a12')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"texSubImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12); })"
+        js_texSubImage3DSource :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texSubImage3D MDN WebGL2RenderingContextBase.texSubImage3D documentation>
+texSubImage3DSource :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsTexImageSource source) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> source -> m ()
+texSubImage3DSource self target level xoffset yoffset zoffset width height depth format type' source = liftDOM (void ((js_texSubImage3DSource ((Types.toWebGL2RenderingContextBase self)) (target) (level) (xoffset) (yoffset) (zoffset) (width) (height) (depth) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13) => { return $1[\"texSubImage3D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13); })"
+        js_texSubImage3DSrcDataSrcOffset :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/texSubImage3D MDN WebGL2RenderingContextBase.texSubImage3D documentation>
+texSubImage3DSrcDataSrcOffset :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsArrayBufferView srcData) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe srcData -> Maybe Word53 -> m ()
+texSubImage3DSrcDataSrcOffset self target level xoffset yoffset zoffset width height depth format type' srcData srcOffset = liftDOM (void (((toJSVal srcData) >>= \a12' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a13' -> js_texSubImage3DSrcDataSrcOffset ((Types.toWebGL2RenderingContextBase self)) (target) (level) (xoffset) (yoffset) (zoffset) (width) (height) (depth) (format) (type') a12' a13')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"transformFeedbackVaryings\"]($2, $3, $4); })"
+        js_transformFeedbackVaryings :: WebGL2RenderingContextBase -> WebGLProgram -> JSVal -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/transformFeedbackVaryings MDN WebGL2RenderingContextBase.transformFeedbackVaryings documentation>
+transformFeedbackVaryings :: (MonadDOM m, IsWebGL2RenderingContextBase self, ToJSString varyings) => self -> WebGLProgram -> [varyings] -> Word -> m ()
+transformFeedbackVaryings self program varyings bufferMode = liftDOM (void (((toJSVal varyings) >>= \a3' -> js_transformFeedbackVaryings ((Types.toWebGL2RenderingContextBase self)) (program) a3' (bufferMode))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform1ui\"]($2, $3); })"
+        js_uniform1ui :: WebGL2RenderingContextBase -> JSVal -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform1ui documentation>
+uniform1ui :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Word -> m ()
+uniform1ui self location v0 = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform1ui ((Types.toWebGL2RenderingContextBase self)) a2' (v0))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform1uiv\"]($2, $3); })"
+        js_uniform1uiv :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform1uiv documentation>
+uniform1uiv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> m ()
+uniform1uiv self location data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform1uiv ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform1uiv\"]($2, $3, $4, $5); })"
+        js_uniform1uiv' :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform1uiv documentation>
+uniform1uiv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform1uiv' self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform1uiv' ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniform2ui\"]($2, $3, $4); })"
+        js_uniform2ui :: WebGL2RenderingContextBase -> JSVal -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform2ui documentation>
+uniform2ui :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Word -> Word -> m ()
+uniform2ui self location v0 v1 = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform2ui ((Types.toWebGL2RenderingContextBase self)) a2' (v0) (v1))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform2uiv\"]($2, $3); })"
+        js_uniform2uiv :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform2uiv documentation>
+uniform2uiv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> m ()
+uniform2uiv self location data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform2uiv ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform2uiv\"]($2, $3, $4, $5); })"
+        js_uniform2uiv' :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform2uiv documentation>
+uniform2uiv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform2uiv' self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform2uiv' ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform3ui\"]($2, $3, $4, $5); })"
+        js_uniform3ui :: WebGL2RenderingContextBase -> JSVal -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform3ui documentation>
+uniform3ui :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Word -> Word -> Word -> m ()
+uniform3ui self location v0 v1 v2 = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform3ui ((Types.toWebGL2RenderingContextBase self)) a2' (v0) (v1) (v2))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform3uiv\"]($2, $3); })"
+        js_uniform3uiv :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform3uiv documentation>
+uniform3uiv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> m ()
+uniform3uiv self location data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform3uiv ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform3uiv\"]($2, $3, $4, $5); })"
+        js_uniform3uiv' :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform3uiv documentation>
+uniform3uiv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform3uiv' self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform3uiv' ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4ui\"]($2, $3, $4, $5, $6); })"
+        js_uniform4ui :: WebGL2RenderingContextBase -> JSVal -> Word -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform4ui documentation>
+uniform4ui :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Word -> Word -> Word -> Word -> m ()
+uniform4ui self location v0 v1 v2 v3 = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform4ui ((Types.toWebGL2RenderingContextBase self)) a2' (v0) (v1) (v2) (v3))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform4uiv\"]($2, $3); })"
+        js_uniform4uiv :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform4uiv documentation>
+uniform4uiv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> m ()
+uniform4uiv self location data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform4uiv ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform4uiv\"]($2, $3, $4, $5); })"
+        js_uniform4uiv' :: WebGL2RenderingContextBase -> JSVal -> Uint32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniform MDN WebGL2RenderingContextBase.uniform4uiv documentation>
+uniform4uiv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform4uiv' self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform4uiv' ((Types.toWebGL2RenderingContextBase self)) a2' (Types.toUint32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformBlockBinding\"]($2, $3, $4); })"
+        js_uniformBlockBinding :: WebGL2RenderingContextBase -> WebGLProgram -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformBlockBinding MDN WebGL2RenderingContextBase.uniformBlockBinding documentation>
+uniformBlockBinding :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLProgram -> Word -> Word -> m ()
+uniformBlockBinding self program uniformBlockIndex uniformBlockBinding = liftDOM (void ((js_uniformBlockBinding ((Types.toWebGL2RenderingContextBase self)) (program) (uniformBlockIndex) (uniformBlockBinding))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2x3fv\"]($2, $3, $4); })"
+        js_uniformMatrix2x3fv :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix2x3fv documentation>
+uniformMatrix2x3fv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> m ()
+uniformMatrix2x3fv self location transpose data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix2x3fv ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix2x3fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix2x3fv' :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix2x3fv documentation>
+uniformMatrix2x3fv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix2x3fv' self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix2x3fv' ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2x4fv\"]($2, $3, $4); })"
+        js_uniformMatrix2x4fv :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix2x4fv documentation>
+uniformMatrix2x4fv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> m ()
+uniformMatrix2x4fv self location transpose data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix2x4fv ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix2x4fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix2x4fv' :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix2x4fv documentation>
+uniformMatrix2x4fv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix2x4fv' self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix2x4fv' ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3x2fv\"]($2, $3, $4); })"
+        js_uniformMatrix3x2fv :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix3x2fv documentation>
+uniformMatrix3x2fv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> m ()
+uniformMatrix3x2fv self location transpose data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix3x2fv ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix3x2fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix3x2fv' :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix3x2fv documentation>
+uniformMatrix3x2fv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix3x2fv' self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix3x2fv' ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3x4fv\"]($2, $3, $4); })"
+        js_uniformMatrix3x4fv :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix3x4fv documentation>
+uniformMatrix3x4fv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> m ()
+uniformMatrix3x4fv self location transpose data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix3x4fv ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix3x4fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix3x4fv' :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix3x4fv documentation>
+uniformMatrix3x4fv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix3x4fv' self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix3x4fv' ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4x2fv\"]($2, $3, $4); })"
+        js_uniformMatrix4x2fv :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix4x2fv documentation>
+uniformMatrix4x2fv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> m ()
+uniformMatrix4x2fv self location transpose data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix4x2fv ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix4x2fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix4x2fv' :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix4x2fv documentation>
+uniformMatrix4x2fv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix4x2fv' self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix4x2fv' ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4x3fv\"]($2, $3, $4); })"
+        js_uniformMatrix4x3fv :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix4x3fv documentation>
+uniformMatrix4x3fv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> m ()
+uniformMatrix4x3fv self location transpose data' = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix4x3fv ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix4x3fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix4x3fv' :: WebGL2RenderingContextBase -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextBase.uniformMatrix4x3fv documentation>
+uniformMatrix4x3fv' :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix4x3fv' self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix4x3fv' ((Types.toWebGL2RenderingContextBase self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttribDivisor\"]($2, $3); })"
+        js_vertexAttribDivisor :: WebGL2RenderingContextBase -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/vertexAttribDivisor MDN WebGL2RenderingContextBase.vertexAttribDivisor documentation>
+vertexAttribDivisor :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> m ()
+vertexAttribDivisor self index divisor = liftDOM (void ((js_vertexAttribDivisor ((Types.toWebGL2RenderingContextBase self)) (index) (divisor))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribI4i\"]($2, $3, $4, $5, $6); })"
+        js_vertexAttribI4i :: WebGL2RenderingContextBase -> Word -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/vertexAttribI MDN WebGL2RenderingContextBase.vertexAttribI4i documentation>
+vertexAttribI4i :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Int -> Int -> Int -> m ()
+vertexAttribI4i self index x y z w = liftDOM (void ((js_vertexAttribI4i ((Types.toWebGL2RenderingContextBase self)) (index) (x) (y) (z) (w))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttribI4iv\"]($2, $3); })"
+        js_vertexAttribI4iv :: WebGL2RenderingContextBase -> Word -> Int32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/vertexAttribI MDN WebGL2RenderingContextBase.vertexAttribI4iv documentation>
+vertexAttribI4iv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsInt32List values) => self -> Word -> values -> m ()
+vertexAttribI4iv self index values = liftDOM (void ((js_vertexAttribI4iv ((Types.toWebGL2RenderingContextBase self)) (index) (Types.toInt32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribI4ui\"]($2, $3, $4, $5, $6); })"
+        js_vertexAttribI4ui :: WebGL2RenderingContextBase -> Word -> Word -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/vertexAttribI MDN WebGL2RenderingContextBase.vertexAttribI4ui documentation>
+vertexAttribI4ui :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Word -> Word -> Word -> Word -> m ()
+vertexAttribI4ui self index x y z w = liftDOM (void ((js_vertexAttribI4ui ((Types.toWebGL2RenderingContextBase self)) (index) (x) (y) (z) (w))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttribI4uiv\"]($2, $3); })"
+        js_vertexAttribI4uiv :: WebGL2RenderingContextBase -> Word -> Uint32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/vertexAttribI MDN WebGL2RenderingContextBase.vertexAttribI4uiv documentation>
+vertexAttribI4uiv :: (MonadDOM m, IsWebGL2RenderingContextBase self, IsUint32List values) => self -> Word -> values -> m ()
+vertexAttribI4uiv self index values = liftDOM (void ((js_vertexAttribI4uiv ((Types.toWebGL2RenderingContextBase self)) (index) (Types.toUint32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribIPointer\"]($2, $3, $4, $5, $6); })"
+        js_vertexAttribIPointer :: WebGL2RenderingContextBase -> Word -> Int -> Word -> Int -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/vertexAttribIPointer MDN WebGL2RenderingContextBase.vertexAttribIPointer documentation>
+vertexAttribIPointer :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> Word -> Int -> Word -> Int -> Int53 -> m ()
+vertexAttribIPointer self index size type' stride offset = liftDOM (void (((toJSVal offset) >>= \a6' -> js_vertexAttribIPointer ((Types.toWebGL2RenderingContextBase self)) (index) (size) (type') (stride) a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"waitSync\"]($2, $3, $4); })"
+        js_waitSync :: WebGL2RenderingContextBase -> WebGLSync -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/waitSync MDN WebGL2RenderingContextBase.waitSync documentation>
+waitSync :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> WebGLSync -> Word -> Int53 -> m ()
+waitSync self sync flags timeout = liftDOM (void (((toJSVal timeout) >>= \a4' -> js_waitSync ((Types.toWebGL2RenderingContextBase self)) (sync) (flags) a4')))
+
+pattern READ_BUFFER = 0x0C02
+
+pattern UNPACK_ROW_LENGTH = 0x0CF2
+
+pattern UNPACK_SKIP_ROWS = 0x0CF3
+
+pattern UNPACK_SKIP_PIXELS = 0x0CF4
+
+pattern PACK_ROW_LENGTH = 0x0D02
+
+pattern PACK_SKIP_ROWS = 0x0D03
+
+pattern PACK_SKIP_PIXELS = 0x0D04
+
+pattern COLOR = 0x1800
+
+pattern DEPTH = 0x1801
+
+pattern STENCIL = 0x1802
+
+pattern RED = 0x1903
+
+pattern RGB8 = 0x8051
+
+pattern RGB10_A2 = 0x8059
+
+pattern TEXTURE_BINDING_3D = 0x806A
+
+pattern UNPACK_SKIP_IMAGES = 0x806D
+
+pattern UNPACK_IMAGE_HEIGHT = 0x806E
+
+pattern TEXTURE_3D = 0x806F
+
+pattern TEXTURE_WRAP_R = 0x8072
+
+pattern MAX_3D_TEXTURE_SIZE = 0x8073
+
+pattern UNSIGNED_INT_2_10_10_10_REV = 0x8368
+
+pattern MAX_ELEMENTS_VERTICES = 0x80E8
+
+pattern MAX_ELEMENTS_INDICES = 0x80E9
+
+pattern TEXTURE_MIN_LOD = 0x813A
+
+pattern TEXTURE_MAX_LOD = 0x813B
+
+pattern TEXTURE_BASE_LEVEL = 0x813C
+
+pattern TEXTURE_MAX_LEVEL = 0x813D
+
+pattern MIN = 0x8007
+
+pattern MAX = 0x8008
+
+pattern DEPTH_COMPONENT24 = 0x81A6
+
+pattern MAX_TEXTURE_LOD_BIAS = 0x84FD
+
+pattern TEXTURE_COMPARE_MODE = 0x884C
+
+pattern TEXTURE_COMPARE_FUNC = 0x884D
+
+pattern CURRENT_QUERY = 0x8865
+
+pattern QUERY_RESULT = 0x8866
+
+pattern QUERY_RESULT_AVAILABLE = 0x8867
+
+pattern STREAM_READ = 0x88E1
+
+pattern STREAM_COPY = 0x88E2
+
+pattern STATIC_READ = 0x88E5
+
+pattern STATIC_COPY = 0x88E6
+
+pattern DYNAMIC_READ = 0x88E9
+
+pattern DYNAMIC_COPY = 0x88EA
+
+pattern MAX_DRAW_BUFFERS = 0x8824
+
+pattern DRAW_BUFFER0 = 0x8825
+
+pattern DRAW_BUFFER1 = 0x8826
+
+pattern DRAW_BUFFER2 = 0x8827
+
+pattern DRAW_BUFFER3 = 0x8828
+
+pattern DRAW_BUFFER4 = 0x8829
+
+pattern DRAW_BUFFER5 = 0x882A
+
+pattern DRAW_BUFFER6 = 0x882B
+
+pattern DRAW_BUFFER7 = 0x882C
+
+pattern DRAW_BUFFER8 = 0x882D
+
+pattern DRAW_BUFFER9 = 0x882E
+
+pattern DRAW_BUFFER10 = 0x882F
+
+pattern DRAW_BUFFER11 = 0x8830
+
+pattern DRAW_BUFFER12 = 0x8831
+
+pattern DRAW_BUFFER13 = 0x8832
+
+pattern DRAW_BUFFER14 = 0x8833
+
+pattern DRAW_BUFFER15 = 0x8834
+
+pattern MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49
+
+pattern MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A
+
+pattern SAMPLER_3D = 0x8B5F
+
+pattern SAMPLER_2D_SHADOW = 0x8B62
+
+pattern FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B
+
+pattern PIXEL_PACK_BUFFER = 0x88EB
+
+pattern PIXEL_UNPACK_BUFFER = 0x88EC
+
+pattern PIXEL_PACK_BUFFER_BINDING = 0x88ED
+
+pattern PIXEL_UNPACK_BUFFER_BINDING = 0x88EF
+
+pattern FLOAT_MAT2x3 = 0x8B65
+
+pattern FLOAT_MAT2x4 = 0x8B66
+
+pattern FLOAT_MAT3x2 = 0x8B67
+
+pattern FLOAT_MAT3x4 = 0x8B68
+
+pattern FLOAT_MAT4x2 = 0x8B69
+
+pattern FLOAT_MAT4x3 = 0x8B6A
+
+pattern SRGB = 0x8C40
+
+pattern SRGB8 = 0x8C41
+
+pattern SRGB8_ALPHA8 = 0x8C43
+
+pattern COMPARE_REF_TO_TEXTURE = 0x884E
+
+pattern RGBA32F = 0x8814
+
+pattern RGB32F = 0x8815
+
+pattern RGBA16F = 0x881A
+
+pattern RGB16F = 0x881B
+
+pattern VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD
+
+pattern MAX_ARRAY_TEXTURE_LAYERS = 0x88FF
+
+pattern MIN_PROGRAM_TEXEL_OFFSET = 0x8904
+
+pattern MAX_PROGRAM_TEXEL_OFFSET = 0x8905
+
+pattern MAX_VARYING_COMPONENTS = 0x8B4B
+
+pattern TEXTURE_2D_ARRAY = 0x8C1A
+
+pattern TEXTURE_BINDING_2D_ARRAY = 0x8C1D
+
+pattern R11F_G11F_B10F = 0x8C3A
+
+pattern UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B
+
+pattern RGB9_E5 = 0x8C3D
+
+pattern UNSIGNED_INT_5_9_9_9_REV = 0x8C3E
+
+pattern TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F
+
+pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80
+
+pattern TRANSFORM_FEEDBACK_VARYINGS = 0x8C83
+
+pattern TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84
+
+pattern TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85
+
+pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88
+
+pattern RASTERIZER_DISCARD = 0x8C89
+
+pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A
+
+pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B
+
+pattern INTERLEAVED_ATTRIBS = 0x8C8C
+
+pattern SEPARATE_ATTRIBS = 0x8C8D
+
+pattern TRANSFORM_FEEDBACK_BUFFER = 0x8C8E
+
+pattern TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F
+
+pattern RGBA32UI = 0x8D70
+
+pattern RGB32UI = 0x8D71
+
+pattern RGBA16UI = 0x8D76
+
+pattern RGB16UI = 0x8D77
+
+pattern RGBA8UI = 0x8D7C
+
+pattern RGB8UI = 0x8D7D
+
+pattern RGBA32I = 0x8D82
+
+pattern RGB32I = 0x8D83
+
+pattern RGBA16I = 0x8D88
+
+pattern RGB16I = 0x8D89
+
+pattern RGBA8I = 0x8D8E
+
+pattern RGB8I = 0x8D8F
+
+pattern RED_INTEGER = 0x8D94
+
+pattern RGB_INTEGER = 0x8D98
+
+pattern RGBA_INTEGER = 0x8D99
+
+pattern SAMPLER_2D_ARRAY = 0x8DC1
+
+pattern SAMPLER_2D_ARRAY_SHADOW = 0x8DC4
+
+pattern SAMPLER_CUBE_SHADOW = 0x8DC5
+
+pattern UNSIGNED_INT_VEC2 = 0x8DC6
+
+pattern UNSIGNED_INT_VEC3 = 0x8DC7
+
+pattern UNSIGNED_INT_VEC4 = 0x8DC8
+
+pattern INT_SAMPLER_2D = 0x8DCA
+
+pattern INT_SAMPLER_3D = 0x8DCB
+
+pattern INT_SAMPLER_CUBE = 0x8DCC
+
+pattern INT_SAMPLER_2D_ARRAY = 0x8DCF
+
+pattern UNSIGNED_INT_SAMPLER_2D = 0x8DD2
+
+pattern UNSIGNED_INT_SAMPLER_3D = 0x8DD3
+
+pattern UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4
+
+pattern UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7
+
+pattern DEPTH_COMPONENT32F = 0x8CAC
+
+pattern DEPTH32F_STENCIL8 = 0x8CAD
+
+pattern FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD
+
+pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210
+
+pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211
+
+pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212
+
+pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213
+
+pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214
+
+pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215
+
+pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216
+
+pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217
+
+pattern FRAMEBUFFER_DEFAULT = 0x8218
+
+pattern UNSIGNED_INT_24_8 = 0x84FA
+
+pattern DEPTH24_STENCIL8 = 0x88F0
+
+pattern UNSIGNED_NORMALIZED = 0x8C17
+
+pattern DRAW_FRAMEBUFFER_BINDING = 0x8CA6
+
+pattern READ_FRAMEBUFFER = 0x8CA8
+
+pattern DRAW_FRAMEBUFFER = 0x8CA9
+
+pattern READ_FRAMEBUFFER_BINDING = 0x8CAA
+
+pattern RENDERBUFFER_SAMPLES = 0x8CAB
+
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4
+
+pattern MAX_COLOR_ATTACHMENTS = 0x8CDF
+
+pattern COLOR_ATTACHMENT1 = 0x8CE1
+
+pattern COLOR_ATTACHMENT2 = 0x8CE2
+
+pattern COLOR_ATTACHMENT3 = 0x8CE3
+
+pattern COLOR_ATTACHMENT4 = 0x8CE4
+
+pattern COLOR_ATTACHMENT5 = 0x8CE5
+
+pattern COLOR_ATTACHMENT6 = 0x8CE6
+
+pattern COLOR_ATTACHMENT7 = 0x8CE7
+
+pattern COLOR_ATTACHMENT8 = 0x8CE8
+
+pattern COLOR_ATTACHMENT9 = 0x8CE9
+
+pattern COLOR_ATTACHMENT10 = 0x8CEA
+
+pattern COLOR_ATTACHMENT11 = 0x8CEB
+
+pattern COLOR_ATTACHMENT12 = 0x8CEC
+
+pattern COLOR_ATTACHMENT13 = 0x8CED
+
+pattern COLOR_ATTACHMENT14 = 0x8CEE
+
+pattern COLOR_ATTACHMENT15 = 0x8CEF
+
+pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56
+
+pattern MAX_SAMPLES = 0x8D57
+
+pattern HALF_FLOAT = 0x140B
+
+pattern RG = 0x8227
+
+pattern RG_INTEGER = 0x8228
+
+pattern R8 = 0x8229
+
+pattern RG8 = 0x822B
+
+pattern R16F = 0x822D
+
+pattern R32F = 0x822E
+
+pattern RG16F = 0x822F
+
+pattern RG32F = 0x8230
+
+pattern R8I = 0x8231
+
+pattern R8UI = 0x8232
+
+pattern R16I = 0x8233
+
+pattern R16UI = 0x8234
+
+pattern R32I = 0x8235
+
+pattern R32UI = 0x8236
+
+pattern RG8I = 0x8237
+
+pattern RG8UI = 0x8238
+
+pattern RG16I = 0x8239
+
+pattern RG16UI = 0x823A
+
+pattern RG32I = 0x823B
+
+pattern RG32UI = 0x823C
+
+pattern VERTEX_ARRAY_BINDING = 0x85B5
+
+pattern R8_SNORM = 0x8F94
+
+pattern RG8_SNORM = 0x8F95
+
+pattern RGB8_SNORM = 0x8F96
+
+pattern RGBA8_SNORM = 0x8F97
+
+pattern SIGNED_NORMALIZED = 0x8F9C
+
+pattern COPY_READ_BUFFER = 0x8F36
+
+pattern COPY_WRITE_BUFFER = 0x8F37
+
+pattern COPY_READ_BUFFER_BINDING = 0x8F36
+
+pattern COPY_WRITE_BUFFER_BINDING = 0x8F37
+
+pattern UNIFORM_BUFFER = 0x8A11
+
+pattern UNIFORM_BUFFER_BINDING = 0x8A28
+
+pattern UNIFORM_BUFFER_START = 0x8A29
+
+pattern UNIFORM_BUFFER_SIZE = 0x8A2A
+
+pattern MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B
+
+pattern MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D
+
+pattern MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E
+
+pattern MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F
+
+pattern MAX_UNIFORM_BLOCK_SIZE = 0x8A30
+
+pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31
+
+pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33
+
+pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34
+
+pattern ACTIVE_UNIFORM_BLOCKS = 0x8A36
+
+pattern UNIFORM_TYPE = 0x8A37
+
+pattern UNIFORM_SIZE = 0x8A38
+
+pattern UNIFORM_BLOCK_INDEX = 0x8A3A
+
+pattern UNIFORM_OFFSET = 0x8A3B
+
+pattern UNIFORM_ARRAY_STRIDE = 0x8A3C
+
+pattern UNIFORM_MATRIX_STRIDE = 0x8A3D
+
+pattern UNIFORM_IS_ROW_MAJOR = 0x8A3E
+
+pattern UNIFORM_BLOCK_BINDING = 0x8A3F
+
+pattern UNIFORM_BLOCK_DATA_SIZE = 0x8A40
+
+pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42
+
+pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43
+
+pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44
+
+pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46
+
+pattern INVALID_INDEX = 0xFFFFFFFF
+
+pattern MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122
+
+pattern MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125
+
+pattern MAX_SERVER_WAIT_TIMEOUT = 0x9111
+
+pattern OBJECT_TYPE = 0x9112
+
+pattern SYNC_CONDITION = 0x9113
+
+pattern SYNC_STATUS = 0x9114
+
+pattern SYNC_FLAGS = 0x9115
+
+pattern SYNC_FENCE = 0x9116
+
+pattern SYNC_GPU_COMMANDS_COMPLETE = 0x9117
+
+pattern UNSIGNALED = 0x9118
+
+pattern SIGNALED = 0x9119
+
+pattern ALREADY_SIGNALED = 0x911A
+
+pattern TIMEOUT_EXPIRED = 0x911B
+
+pattern CONDITION_SATISFIED = 0x911C
+
+pattern WAIT_FAILED = 0x911D
+
+pattern SYNC_FLUSH_COMMANDS_BIT = 0x00000001
+
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE
+
+pattern ANY_SAMPLES_PASSED = 0x8C2F
+
+pattern ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A
+
+pattern SAMPLER_BINDING = 0x8919
+
+pattern RGB10_A2UI = 0x906F
+
+pattern INT_2_10_10_10_REV = 0x8D9F
+
+pattern TRANSFORM_FEEDBACK = 0x8E22
+
+pattern TRANSFORM_FEEDBACK_PAUSED = 0x8E23
+
+pattern TRANSFORM_FEEDBACK_ACTIVE = 0x8E24
+
+pattern TRANSFORM_FEEDBACK_BINDING = 0x8E25
+
+pattern TEXTURE_IMMUTABLE_FORMAT = 0x912F
+
+pattern MAX_ELEMENT_INDEX = 0x8D6B
+
+pattern TEXTURE_IMMUTABLE_LEVELS = 0x82DF
+
+pattern TIMEOUT_IGNORED = (-1)
+
+pattern MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContextOverloads.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContextOverloads.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContextOverloads.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContextOverloads
+       (js_bufferDataPtr, js_bufferData, js_bufferDataView, js_bufferSubData, js_bufferSubDataSrcOffsetLength, js_compressedTexImage2D, js_compressedTexImage2DSrcDataSrcOffsetSrcLengthOverride, js_compressedTexSubImage2D, js_compressedTexSubImage2DSrcDataSrcOffsetSrcLengthOverride, js_readPixels, js_readPixelsOffset, js_readPixelsDstOffset, js_texImage2D, js_texImage2DSource, js_texImage2DPboOffset, js_texImage2DSource2, js_texImage2DSrcDataSrcOffset, js_texSubImage2D, js_texSubImage2DSource, js_texSubImage2DPboOffset, js_texSubImage2DSource2, js_texSubImage2DSrcDataSrcOffset, js_uniform1fv, js_uniform1iv, js_uniform2fv, js_uniform2iv, js_uniform3fv, js_uniform3iv, js_uniform4fv, js_uniform4iv, js_uniformMatrix2fv, js_uniformMatrix3fv, js_uniformMatrix4fv, bufferDataPtr, bufferData, bufferDataView, bufferSubData, bufferSubDataSrcOffsetLength, compressedTexImage2D, compressedTexImage2DSrcDataSrcOffsetSrcLengthOverride, compressedTexSubImage2D, compressedTexSubImage2DSrcDataSrcOffsetSrcLengthOverride, readPixels, readPixelsOffset, readPixelsDstOffset, texImage2D, texImage2DSource, texImage2DPboOffset, texImage2DSource2, texImage2DSrcDataSrcOffset, texSubImage2D, texSubImage2DSource, texSubImage2DPboOffset, texSubImage2DSource2, texSubImage2DSrcDataSrcOffset, uniform1fv, uniform1iv, uniform2fv, uniform2iv, uniform3fv, uniform3iv, uniform4fv, uniform4iv, uniformMatrix2fv, uniformMatrix3fv, uniformMatrix4fv, WebGL2RenderingContextOverloads(..), gTypeWebGL2RenderingContextOverloads, IsWebGL2RenderingContextOverloads, toWebGL2RenderingContextOverloads)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferDataPtr :: WebGL2RenderingContextOverloads -> Word -> JSVal -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bufferData MDN WebGL2RenderingContextOverloads.bufferData documentation>
+bufferDataPtr :: (MonadDOM m, IsWebGL2RenderingContextOverloads self) => self -> Word -> Int53 -> Word -> m ()
+bufferDataPtr self target size usage = liftDOM (void (((toJSVal size) >>= \a3' -> js_bufferDataPtr ((Types.toWebGL2RenderingContextOverloads self)) (target) a3' (usage))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferData :: WebGL2RenderingContextOverloads -> Word -> JSVal -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bufferData MDN WebGL2RenderingContextOverloads.bufferData documentation>
+bufferData :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsAllowSharedBufferSource srcData) => self -> Word -> Maybe srcData -> Word -> m ()
+bufferData self target srcData usage = liftDOM (void (((toJSVal srcData) >>= \a3' -> js_bufferData ((Types.toWebGL2RenderingContextOverloads self)) (target) a3' (usage))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"bufferData\"]($2, $3, $4, $5, $6); })"
+        js_bufferDataView :: WebGL2RenderingContextOverloads -> Word -> ArrayBufferView -> Word -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bufferData MDN WebGL2RenderingContextOverloads.bufferData documentation>
+bufferDataView :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView srcData) => self -> Word -> srcData -> Word -> Word53 -> Maybe Word -> m ()
+bufferDataView self target srcData usage srcOffset length = liftDOM (void (((toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal length) >>= \a6' -> js_bufferDataView ((Types.toWebGL2RenderingContextOverloads self)) (target) (Types.toArrayBufferView srcData) (usage) a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bufferSubData\"]($2, $3, $4); })"
+        js_bufferSubData :: WebGL2RenderingContextOverloads -> Word -> JSVal -> AllowSharedBufferSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bufferSubData MDN WebGL2RenderingContextOverloads.bufferSubData documentation>
+bufferSubData :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsAllowSharedBufferSource srcData) => self -> Word -> Int53 -> srcData -> m ()
+bufferSubData self target dstByteOffset srcData = liftDOM (void (((toJSVal dstByteOffset) >>= \a3' -> js_bufferSubData ((Types.toWebGL2RenderingContextOverloads self)) (target) a3' (Types.toAllowSharedBufferSource srcData))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"bufferSubData\"]($2, $3, $4, $5, $6); })"
+        js_bufferSubDataSrcOffsetLength :: WebGL2RenderingContextOverloads -> Word -> JSVal -> ArrayBufferView -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/bufferSubData MDN WebGL2RenderingContextOverloads.bufferSubData documentation>
+bufferSubDataSrcOffsetLength :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView srcData) => self -> Word -> Int53 -> srcData -> Word53 -> Maybe Word -> m ()
+bufferSubDataSrcOffsetLength self target dstByteOffset srcData srcOffset length = liftDOM (void (((toJSVal dstByteOffset) >>= \a3' -> (toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal length) >>= \a6' -> js_bufferSubDataSrcOffsetLength ((Types.toWebGL2RenderingContextOverloads self)) (target) a3' (Types.toArrayBufferView srcData) a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"compressedTexImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_compressedTexImage2D :: WebGL2RenderingContextOverloads -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/compressedTexImage2D MDN WebGL2RenderingContextOverloads.compressedTexImage2D documentation>
+compressedTexImage2D :: (MonadDOM m, IsWebGL2RenderingContextOverloads self) => self -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> Int53 -> m ()
+compressedTexImage2D self target level internalformat width height border imageSize offset = liftDOM (void (((toJSVal offset) >>= \a9' -> js_compressedTexImage2D ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (imageSize) a9')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"compressedTexImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_compressedTexImage2DSrcDataSrcOffsetSrcLengthOverride :: WebGL2RenderingContextOverloads -> Word -> Int -> Word -> Int -> Int -> Int -> ArrayBufferView -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/compressedTexImage2D MDN WebGL2RenderingContextOverloads.compressedTexImage2D documentation>
+compressedTexImage2DSrcDataSrcOffsetSrcLengthOverride :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView srcData) => self -> Word -> Int -> Word -> Int -> Int -> Int -> srcData -> Maybe Word53 -> Maybe Word -> m ()
+compressedTexImage2DSrcDataSrcOffsetSrcLengthOverride self target level internalformat width height border srcData srcOffset srcLengthOverride = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a9' -> (P.maybe (P.return jsUndefined) toJSVal srcLengthOverride) >>= \a10' -> js_compressedTexImage2DSrcDataSrcOffsetSrcLengthOverride ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (Types.toArrayBufferView srcData) a9' a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"compressedTexSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_compressedTexSubImage2D :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Int -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/compressedTexSubImage2D MDN WebGL2RenderingContextOverloads.compressedTexSubImage2D documentation>
+compressedTexSubImage2D :: (MonadDOM m, IsWebGL2RenderingContextOverloads self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Int -> Int53 -> m ()
+compressedTexSubImage2D self target level xoffset yoffset width height format imageSize offset = liftDOM (void (((toJSVal offset) >>= \a10' -> js_compressedTexSubImage2D ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (imageSize) a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"compressedTexSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_compressedTexSubImage2DSrcDataSrcOffsetSrcLengthOverride :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> ArrayBufferView -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/compressedTexSubImage2D MDN WebGL2RenderingContextOverloads.compressedTexSubImage2D documentation>
+compressedTexSubImage2DSrcDataSrcOffsetSrcLengthOverride :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView srcData) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> srcData -> Maybe Word53 -> Maybe Word -> m ()
+compressedTexSubImage2DSrcDataSrcOffsetSrcLengthOverride self target level xoffset yoffset width height format srcData srcOffset srcLengthOverride = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a10' -> (P.maybe (P.return jsUndefined) toJSVal srcLengthOverride) >>= \a11' -> js_compressedTexSubImage2DSrcDataSrcOffsetSrcLengthOverride ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (Types.toArrayBufferView srcData) a10' a11')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"readPixels\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_readPixels :: WebGL2RenderingContextOverloads -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/readPixels MDN WebGL2RenderingContextOverloads.readPixels documentation>
+readPixels :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView dstData) => self -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe dstData -> m ()
+readPixels self x y width height format type' dstData = liftDOM (void (((toJSVal dstData) >>= \a8' -> js_readPixels ((Types.toWebGL2RenderingContextOverloads self)) (x) (y) (width) (height) (format) (type') a8')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"readPixels\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_readPixelsOffset :: WebGL2RenderingContextOverloads -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/readPixels MDN WebGL2RenderingContextOverloads.readPixels documentation>
+readPixelsOffset :: (MonadDOM m, IsWebGL2RenderingContextOverloads self) => self -> Int -> Int -> Int -> Int -> Word -> Word -> Int53 -> m ()
+readPixelsOffset self x y width height format type' offset = liftDOM (void (((toJSVal offset) >>= \a8' -> js_readPixelsOffset ((Types.toWebGL2RenderingContextOverloads self)) (x) (y) (width) (height) (format) (type') a8')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"readPixels\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_readPixelsDstOffset :: WebGL2RenderingContextOverloads -> Int -> Int -> Int -> Int -> Word -> Word -> ArrayBufferView -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/readPixels MDN WebGL2RenderingContextOverloads.readPixels documentation>
+readPixelsDstOffset :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView dstData) => self -> Int -> Int -> Int -> Int -> Word -> Word -> dstData -> Word53 -> m ()
+readPixelsDstOffset self x y width height format type' dstData dstOffset = liftDOM (void (((toJSVal dstOffset) >>= \a9' -> js_readPixelsDstOffset ((Types.toWebGL2RenderingContextOverloads self)) (x) (y) (width) (height) (format) (type') (Types.toArrayBufferView dstData) a9')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texImage2D :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texImage2D MDN WebGL2RenderingContextOverloads.texImage2D documentation>
+texImage2D :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView pixels) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe pixels -> m ()
+texImage2D self target level internalformat width height border format type' pixels = liftDOM (void (((toJSVal pixels) >>= \a10' -> js_texImage2D ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (format) (type') a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"texImage2D\"]($2, $3, $4, $5, $6, $7); })"
+        js_texImage2DSource :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texImage2D MDN WebGL2RenderingContextOverloads.texImage2D documentation>
+texImage2DSource :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsTexImageSource source) => self -> Word -> Int -> Int -> Word -> Word -> source -> m ()
+texImage2DSource self target level internalformat format type' source = liftDOM (void ((js_texImage2DSource ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (internalformat) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texImage2DPboOffset :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texImage2D MDN WebGL2RenderingContextOverloads.texImage2D documentation>
+texImage2DPboOffset :: (MonadDOM m, IsWebGL2RenderingContextOverloads self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Int53 -> m ()
+texImage2DPboOffset self target level internalformat width height border format type' pboOffset = liftDOM (void (((toJSVal pboOffset) >>= \a10' -> js_texImage2DPboOffset ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (format) (type') a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texImage2DSource2 :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texImage2D MDN WebGL2RenderingContextOverloads.texImage2D documentation>
+texImage2DSource2 :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsTexImageSource source) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> source -> m ()
+texImage2DSource2 self target level internalformat width height border format type' source = liftDOM (void ((js_texImage2DSource2 ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"texImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_texImage2DSrcDataSrcOffset :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> ArrayBufferView -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texImage2D MDN WebGL2RenderingContextOverloads.texImage2D documentation>
+texImage2DSrcDataSrcOffset :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView srcData) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> srcData -> Word53 -> m ()
+texImage2DSrcDataSrcOffset self target level internalformat width height border format type' srcData srcOffset = liftDOM (void (((toJSVal srcOffset) >>= \a11' -> js_texImage2DSrcDataSrcOffset ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (format) (type') (Types.toArrayBufferView srcData) a11')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texSubImage2D :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texSubImage2D MDN WebGL2RenderingContextOverloads.texSubImage2D documentation>
+texSubImage2D :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView pixels) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe pixels -> m ()
+texSubImage2D self target level xoffset yoffset width height format type' pixels = liftDOM (void (((toJSVal pixels) >>= \a10' -> js_texSubImage2D ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (type') a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"texSubImage2D\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_texSubImage2DSource :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texSubImage2D MDN WebGL2RenderingContextOverloads.texSubImage2D documentation>
+texSubImage2DSource :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsTexImageSource source) => self -> Word -> Int -> Int -> Int -> Word -> Word -> source -> m ()
+texSubImage2DSource self target level xoffset yoffset format type' source = liftDOM (void ((js_texSubImage2DSource ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texSubImage2DPboOffset :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texSubImage2D MDN WebGL2RenderingContextOverloads.texSubImage2D documentation>
+texSubImage2DPboOffset :: (MonadDOM m, IsWebGL2RenderingContextOverloads self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Int53 -> m ()
+texSubImage2DPboOffset self target level xoffset yoffset width height format type' pboOffset = liftDOM (void (((toJSVal pboOffset) >>= \a10' -> js_texSubImage2DPboOffset ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (type') a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texSubImage2DSource2 :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texSubImage2D MDN WebGL2RenderingContextOverloads.texSubImage2D documentation>
+texSubImage2DSource2 :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsTexImageSource source) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> source -> m ()
+texSubImage2DSource2 self target level xoffset yoffset width height format type' source = liftDOM (void ((js_texSubImage2DSource2 ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"texSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10, $11); })"
+        js_texSubImage2DSrcDataSrcOffset :: WebGL2RenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> ArrayBufferView -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texSubImage2D MDN WebGL2RenderingContextOverloads.texSubImage2D documentation>
+texSubImage2DSrcDataSrcOffset :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsArrayBufferView srcData) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> srcData -> Word53 -> m ()
+texSubImage2DSrcDataSrcOffset self target level xoffset yoffset width height format type' srcData srcOffset = liftDOM (void (((toJSVal srcOffset) >>= \a11' -> js_texSubImage2DSrcDataSrcOffset ((Types.toWebGL2RenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (type') (Types.toArrayBufferView srcData) a11')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform1fv\"]($2, $3, $4, $5); })"
+        js_uniform1fv :: WebGL2RenderingContextOverloads -> JSVal -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform1fv documentation>
+uniform1fv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform1fv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform1fv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toFloat32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform1iv\"]($2, $3, $4, $5); })"
+        js_uniform1iv :: WebGL2RenderingContextOverloads -> JSVal -> Int32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform1iv documentation>
+uniform1iv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsInt32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform1iv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform1iv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toInt32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform2fv\"]($2, $3, $4, $5); })"
+        js_uniform2fv :: WebGL2RenderingContextOverloads -> JSVal -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform2fv documentation>
+uniform2fv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform2fv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform2fv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toFloat32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform2iv\"]($2, $3, $4, $5); })"
+        js_uniform2iv :: WebGL2RenderingContextOverloads -> JSVal -> Int32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform2iv documentation>
+uniform2iv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsInt32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform2iv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform2iv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toInt32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform3fv\"]($2, $3, $4, $5); })"
+        js_uniform3fv :: WebGL2RenderingContextOverloads -> JSVal -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform3fv documentation>
+uniform3fv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform3fv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform3fv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toFloat32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform3iv\"]($2, $3, $4, $5); })"
+        js_uniform3iv :: WebGL2RenderingContextOverloads -> JSVal -> Int32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform3iv documentation>
+uniform3iv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsInt32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform3iv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform3iv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toInt32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform4fv\"]($2, $3, $4, $5); })"
+        js_uniform4fv :: WebGL2RenderingContextOverloads -> JSVal -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform4fv documentation>
+uniform4fv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform4fv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform4fv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toFloat32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform4iv\"]($2, $3, $4, $5); })"
+        js_uniform4iv :: WebGL2RenderingContextOverloads -> JSVal -> Int32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGL2RenderingContextOverloads.uniform4iv documentation>
+uniform4iv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsInt32List data') => self -> Maybe WebGLUniformLocation -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniform4iv self location data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a5' -> js_uniform4iv ((Types.toWebGL2RenderingContextOverloads self)) a2' (Types.toInt32List data') a4' a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix2fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix2fv :: WebGL2RenderingContextOverloads -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/uniformMatrix MDN WebGL2RenderingContextOverloads.uniformMatrix2fv documentation>
+uniformMatrix2fv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix2fv self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix2fv ((Types.toWebGL2RenderingContextOverloads self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix3fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix3fv :: WebGL2RenderingContextOverloads -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniformMatrix MDN WebGL2RenderingContextOverloads.uniformMatrix3fv documentation>
+uniformMatrix3fv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix3fv self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix3fv ((Types.toWebGL2RenderingContextOverloads self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniformMatrix4fv\"]($2, $3, $4, $5, $6); })"
+        js_uniformMatrix4fv :: WebGL2RenderingContextOverloads -> JSVal -> Bool -> Float32List -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniformMatrix MDN WebGL2RenderingContextOverloads.uniformMatrix4fv documentation>
+uniformMatrix4fv :: (MonadDOM m, IsWebGL2RenderingContextOverloads self, IsFloat32List data') => self -> Maybe WebGLUniformLocation -> Bool -> data' -> Maybe Word53 -> Maybe Word -> m ()
+uniformMatrix4fv self location transpose data' srcOffset srcLength = liftDOM (void (((toJSVal location) >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal srcOffset) >>= \a5' -> (P.maybe (P.return jsUndefined) toJSVal srcLength) >>= \a6' -> js_uniformMatrix4fv ((Types.toWebGL2RenderingContextOverloads self)) a2' (transpose) (Types.toFloat32List data') a5' a6')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
@@ -1,49 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
-       (js_getSize, getSize, js_getType, getType, js_getName, getName,
-        WebGLActiveInfo(..), gTypeWebGLActiveInfo)
+       (js_getSize, js_getType, js_getName, getSize, getType, getName, WebGLActiveInfo(..), gTypeWebGLActiveInfo)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
-        WebGLActiveInfo -> IO Int
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.size Mozilla WebGLActiveInfo.size documentation> 
-getSize :: (MonadIO m) => WebGLActiveInfo -> m Int
-getSize self = liftIO (js_getSize self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
-        WebGLActiveInfo -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: WebGLActiveInfo -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLActiveInfo/size MDN WebGLActiveInfo.size documentation>
+getSize :: (MonadDOM m) => WebGLActiveInfo -> m Int
+getSize self = liftDOM ((js_getSize (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.type Mozilla WebGLActiveInfo.type documentation> 
-getType :: (MonadIO m) => WebGLActiveInfo -> m Word
-getType self = liftIO (js_getType self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        WebGLActiveInfo -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: WebGLActiveInfo -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLActiveInfo/type MDN WebGLActiveInfo.type documentation>
+getType :: (MonadDOM m) => WebGLActiveInfo -> m Word
+getType self = liftDOM ((js_getType (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.name Mozilla WebGLActiveInfo.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => WebGLActiveInfo -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: WebGLActiveInfo -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLActiveInfo/name MDN WebGLActiveInfo.name documentation>
+getName :: (MonadDOM m, FromJSString result) => WebGLActiveInfo -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLBuffer.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLBuffer
+       (WebGLBuffer(..), gTypeWebGLBuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC
-       (pattern COMPRESSED_RGB_ATC_WEBGL,
-        pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
-        pattern COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
-        WebGLCompressedTextureATC(..), gTypeWebGLCompressedTextureATC)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern COMPRESSED_RGB_ATC_WEBGL = 35986
-pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987
-pattern COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC
-       (pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
-        pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG,
-        pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
-        pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
-        WebGLCompressedTexturePVRTC(..), gTypeWebGLCompressedTexturePVRTC)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840
-pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841
-pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842
-pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC
-       (pattern COMPRESSED_RGB_S3TC_DXT1_EXT,
-        pattern COMPRESSED_RGBA_S3TC_DXT1_EXT,
-        pattern COMPRESSED_RGBA_S3TC_DXT3_EXT,
-        pattern COMPRESSED_RGBA_S3TC_DXT5_EXT,
-        WebGLCompressedTextureS3TC(..), gTypeWebGLCompressedTextureS3TC)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern COMPRESSED_RGB_S3TC_DXT1_EXT = 33776
-pattern COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777
-pattern COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778
-pattern COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLContextAttributes.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextAttributes.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLContextAttributes
+       (js_newWebGLContextAttributes, js_setAlpha, js_getAlpha, js_setDepth, js_getDepth, js_setStencil, js_getStencil, js_setAntialias, js_getAntialias, js_setPremultipliedAlpha, js_getPremultipliedAlpha, js_setPreserveDrawingBuffer, js_getPreserveDrawingBuffer, js_setPowerPreference, js_getPowerPreference, js_setFailIfMajorPerformanceCaveat, js_getFailIfMajorPerformanceCaveat, js_setDesynchronized, js_getDesynchronized, js_setXrCompatible, js_getXrCompatible, newWebGLContextAttributes, setAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked, setDepth, getDepth, getDepthUnsafe, getDepthUnchecked, setStencil, getStencil, getStencilUnsafe, getStencilUnchecked, setAntialias, getAntialias, getAntialiasUnsafe, getAntialiasUnchecked, setPremultipliedAlpha, getPremultipliedAlpha, getPremultipliedAlphaUnsafe, getPremultipliedAlphaUnchecked, setPreserveDrawingBuffer, getPreserveDrawingBuffer, getPreserveDrawingBufferUnsafe, getPreserveDrawingBufferUnchecked, setPowerPreference, getPowerPreference, getPowerPreferenceUnsafe, getPowerPreferenceUnchecked, setFailIfMajorPerformanceCaveat, getFailIfMajorPerformanceCaveat, getFailIfMajorPerformanceCaveatUnsafe, getFailIfMajorPerformanceCaveatUnchecked, setDesynchronized, getDesynchronized, getDesynchronizedUnsafe, getDesynchronizedUnchecked, setXrCompatible, getXrCompatible, getXrCompatibleUnsafe, getXrCompatibleUnchecked, WebGLContextAttributes(..), gTypeWebGLContextAttributes)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebGLContextAttributes :: IO WebGLContextAttributes
+-- | <https://registry.khronos.org/webgl/specs/latest/1.0/#WebGLContextAttributes WebGLContextAttributes specification>
+newWebGLContextAttributes :: (MonadDOM m) => m WebGLContextAttributes
+newWebGLContextAttributes = liftDOM ((js_newWebGLContextAttributes))
+
+foreign import javascript safe "(($1, $2) => { $1[\"alpha\"] = $2; })"
+        js_setAlpha :: WebGLContextAttributes -> Bool -> IO ()
+setAlpha :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setAlpha self val = liftDOM (void ((js_setAlpha (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })"
+        js_getAlpha :: WebGLContextAttributes -> IO JSVal
+getAlpha :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getAlpha self = liftDOM (((js_getAlpha (self)) >>= fromJSValUnchecked))
+
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getAlphaUnsafe self = liftDOM ((((js_getAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getAlphaUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getAlpha (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"depth\"] = $2; })"
+        js_setDepth :: WebGLContextAttributes -> Bool -> IO ()
+setDepth :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setDepth self val = liftDOM (void ((js_setDepth (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"depth\"]; })"
+        js_getDepth :: WebGLContextAttributes -> IO JSVal
+getDepth :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getDepth self = liftDOM (((js_getDepth (self)) >>= fromJSValUnchecked))
+
+getDepthUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getDepthUnsafe self = liftDOM ((((js_getDepth (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getDepthUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getDepthUnchecked self = liftDOM ((pFromJSVal <$> (js_getDepth (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"stencil\"] = $2; })"
+        js_setStencil :: WebGLContextAttributes -> Bool -> IO ()
+setStencil :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setStencil self val = liftDOM (void ((js_setStencil (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"stencil\"]; })"
+        js_getStencil :: WebGLContextAttributes -> IO JSVal
+getStencil :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getStencil self = liftDOM (((js_getStencil (self)) >>= fromJSValUnchecked))
+
+getStencilUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getStencilUnsafe self = liftDOM ((((js_getStencil (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStencilUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getStencilUnchecked self = liftDOM ((pFromJSVal <$> (js_getStencil (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"antialias\"] = $2; })"
+        js_setAntialias :: WebGLContextAttributes -> Bool -> IO ()
+setAntialias :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setAntialias self val = liftDOM (void ((js_setAntialias (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"antialias\"]; })"
+        js_getAntialias :: WebGLContextAttributes -> IO JSVal
+getAntialias :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getAntialias self = liftDOM (((js_getAntialias (self)) >>= fromJSValUnchecked))
+
+getAntialiasUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getAntialiasUnsafe self = liftDOM ((((js_getAntialias (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getAntialiasUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getAntialiasUnchecked self = liftDOM ((pFromJSVal <$> (js_getAntialias (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"premultipliedAlpha\"] = $2; })"
+        js_setPremultipliedAlpha :: WebGLContextAttributes -> Bool -> IO ()
+setPremultipliedAlpha :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setPremultipliedAlpha self val = liftDOM (void ((js_setPremultipliedAlpha (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"premultipliedAlpha\"]; })"
+        js_getPremultipliedAlpha :: WebGLContextAttributes -> IO JSVal
+getPremultipliedAlpha :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getPremultipliedAlpha self = liftDOM (((js_getPremultipliedAlpha (self)) >>= fromJSValUnchecked))
+
+getPremultipliedAlphaUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getPremultipliedAlphaUnsafe self = liftDOM ((((js_getPremultipliedAlpha (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPremultipliedAlphaUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getPremultipliedAlphaUnchecked self = liftDOM ((pFromJSVal <$> (js_getPremultipliedAlpha (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"preserveDrawingBuffer\"] = $2; })"
+        js_setPreserveDrawingBuffer :: WebGLContextAttributes -> Bool -> IO ()
+setPreserveDrawingBuffer :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setPreserveDrawingBuffer self val = liftDOM (void ((js_setPreserveDrawingBuffer (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"preserveDrawingBuffer\"]; })"
+        js_getPreserveDrawingBuffer :: WebGLContextAttributes -> IO JSVal
+getPreserveDrawingBuffer :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getPreserveDrawingBuffer self = liftDOM (((js_getPreserveDrawingBuffer (self)) >>= fromJSValUnchecked))
+
+getPreserveDrawingBufferUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getPreserveDrawingBufferUnsafe self = liftDOM ((((js_getPreserveDrawingBuffer (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPreserveDrawingBufferUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getPreserveDrawingBufferUnchecked self = liftDOM ((pFromJSVal <$> (js_getPreserveDrawingBuffer (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"powerPreference\"] = $2; })"
+        js_setPowerPreference :: WebGLContextAttributes -> JSVal -> IO ()
+setPowerPreference :: (MonadDOM m) => WebGLContextAttributes -> WebGLPowerPreference -> m ()
+setPowerPreference self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPowerPreference (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"powerPreference\"]; })"
+        js_getPowerPreference :: WebGLContextAttributes -> IO JSVal
+getPowerPreference :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe WebGLPowerPreference)
+getPowerPreference self = liftDOM (((js_getPowerPreference (self)) >>= fromJSValUnchecked))
+
+getPowerPreferenceUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m WebGLPowerPreference
+getPowerPreferenceUnsafe self = liftDOM ((((js_getPowerPreference (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPowerPreferenceUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m WebGLPowerPreference
+getPowerPreferenceUnchecked self = liftDOM ((pFromJSVal <$> (js_getPowerPreference (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"failIfMajorPerformanceCaveat\"] = $2; })"
+        js_setFailIfMajorPerformanceCaveat :: WebGLContextAttributes -> Bool -> IO ()
+setFailIfMajorPerformanceCaveat :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setFailIfMajorPerformanceCaveat self val = liftDOM (void ((js_setFailIfMajorPerformanceCaveat (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"failIfMajorPerformanceCaveat\"]; })"
+        js_getFailIfMajorPerformanceCaveat :: WebGLContextAttributes -> IO JSVal
+getFailIfMajorPerformanceCaveat :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getFailIfMajorPerformanceCaveat self = liftDOM (((js_getFailIfMajorPerformanceCaveat (self)) >>= fromJSValUnchecked))
+
+getFailIfMajorPerformanceCaveatUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getFailIfMajorPerformanceCaveatUnsafe self = liftDOM ((((js_getFailIfMajorPerformanceCaveat (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getFailIfMajorPerformanceCaveatUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getFailIfMajorPerformanceCaveatUnchecked self = liftDOM ((pFromJSVal <$> (js_getFailIfMajorPerformanceCaveat (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"desynchronized\"] = $2; })"
+        js_setDesynchronized :: WebGLContextAttributes -> Bool -> IO ()
+setDesynchronized :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setDesynchronized self val = liftDOM (void ((js_setDesynchronized (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"desynchronized\"]; })"
+        js_getDesynchronized :: WebGLContextAttributes -> IO JSVal
+getDesynchronized :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getDesynchronized self = liftDOM (((js_getDesynchronized (self)) >>= fromJSValUnchecked))
+
+getDesynchronizedUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getDesynchronizedUnsafe self = liftDOM ((((js_getDesynchronized (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getDesynchronizedUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getDesynchronizedUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesynchronized (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"xrCompatible\"] = $2; })"
+        js_setXrCompatible :: WebGLContextAttributes -> Bool -> IO ()
+-- | <https://immersive-web.github.io/webxr/#dom-webglcontextattributes-xrcompatible WebGLContextAttributes.xrCompatible specification>
+setXrCompatible :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setXrCompatible self val = liftDOM (void ((js_setXrCompatible (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"xrCompatible\"]; })"
+        js_getXrCompatible :: WebGLContextAttributes -> IO JSVal
+-- | <https://immersive-web.github.io/webxr/#dom-webglcontextattributes-xrcompatible WebGLContextAttributes.xrCompatible specification>
+getXrCompatible :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getXrCompatible self = liftDOM (((js_getXrCompatible (self)) >>= fromJSValUnchecked))
+
+-- | <https://immersive-web.github.io/webxr/#dom-webglcontextattributes-xrcompatible WebGLContextAttributes.xrCompatible specification>
+getXrCompatibleUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getXrCompatibleUnsafe self = liftDOM ((((js_getXrCompatible (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://immersive-web.github.io/webxr/#dom-webglcontextattributes-xrcompatible WebGLContextAttributes.xrCompatible specification>
+getXrCompatibleUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getXrCompatibleUnchecked self = liftDOM ((pFromJSVal <$> (js_getXrCompatible (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
@@ -1,51 +1,29 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
-       (js_newWebGLContextEvent, newWebGLContextEvent,
-        js_getStatusMessage, getStatusMessage, WebGLContextEvent(..),
-        gTypeWebGLContextEvent)
+       (js_newWebGLContextEvent, js_getStatusMessage, newWebGLContextEvent, getStatusMessage, WebGLContextEvent(..), gTypeWebGLContextEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebGLContextEvent\"]($1,\n$2); })"
-        js_newWebGLContextEvent ::
-        JSString -> Optional WebGLContextEventInit -> IO WebGLContextEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation> 
-newWebGLContextEvent ::
-                     (MonadIO m, ToJSString type') =>
-                       type' -> Maybe WebGLContextEventInit -> m WebGLContextEvent
-newWebGLContextEvent type' eventInit
-  = liftIO
-      (js_newWebGLContextEvent (toJSString type')
-         (maybeToOptional eventInit))
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"WebGLContextEvent\"]($1, $2); })"
+        js_newWebGLContextEvent :: JSString -> JSVal -> IO WebGLContextEvent
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLContextEvent/WebGLContextEvent MDN WebGLContextEvent. documentation>
+newWebGLContextEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe WebGLContextEventInit -> m WebGLContextEvent
+newWebGLContextEvent type' eventInit = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInit) >>= \a2' -> js_newWebGLContextEvent (toJSString type') a2'))
+
 foreign import javascript unsafe "(($1) => { return $1[\"statusMessage\"]; })"
         js_getStatusMessage :: WebGLContextEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent.statusMessage Mozilla WebGLContextEvent.statusMessage documentation> 
-getStatusMessage ::
-                 (MonadIO m, FromJSString result) => WebGLContextEvent -> m result
-getStatusMessage self
-  = liftIO (fromJSString <$> (js_getStatusMessage self))
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLContextEvent/statusMessage MDN WebGLContextEvent.statusMessage documentation>
+getStatusMessage :: (MonadDOM m, FromJSString result) => WebGLContextEvent -> m result
+getStatusMessage self = liftDOM ((fromJSString <$> (js_getStatusMessage (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEventInit.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLContextEventInit
+       (js_newWebGLContextEventInit, js_setStatusMessage, js_getStatusMessage, newWebGLContextEventInit, setStatusMessage, getStatusMessage, getStatusMessageUnsafe, getStatusMessageUnchecked, WebGLContextEventInit(..), gTypeWebGLContextEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebGLContextEventInit :: IO WebGLContextEventInit
+newWebGLContextEventInit :: (MonadDOM m) => m WebGLContextEventInit
+newWebGLContextEventInit = liftDOM ((js_newWebGLContextEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"statusMessage\"] = $2; })"
+        js_setStatusMessage :: WebGLContextEventInit -> JSString -> IO ()
+setStatusMessage :: (MonadDOM m, ToJSString val) => WebGLContextEventInit -> val -> m ()
+setStatusMessage self val = liftDOM (void ((js_setStatusMessage (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"statusMessage\"]; })"
+        js_getStatusMessage :: WebGLContextEventInit -> IO JSVal
+getStatusMessage :: (MonadDOM m, FromJSString result) => WebGLContextEventInit -> m (Maybe result)
+getStatusMessage self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getStatusMessage (self))))
+
+getStatusMessageUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => WebGLContextEventInit -> m result
+getStatusMessageUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getStatusMessage (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStatusMessageUnchecked :: (MonadDOM m, FromJSString result) => WebGLContextEventInit -> m result
+getStatusMessageUnchecked self = liftDOM ((pFromJSVal <$> (js_getStatusMessage (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo
-       (pattern UNMASKED_VENDOR_WEBGL, pattern UNMASKED_RENDERER_WEBGL,
-        WebGLDebugRendererInfo(..), gTypeWebGLDebugRendererInfo)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern UNMASKED_VENDOR_WEBGL = 37445
-pattern UNMASKED_RENDERER_WEBGL = 37446
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders
-       (js_getTranslatedShaderSource, getTranslatedShaderSource,
-        getTranslatedShaderSource_, getTranslatedShaderSourceUnsafe,
-        getTranslatedShaderSourceUnchecked, WebGLDebugShaders(..),
-        gTypeWebGLDebugShaders)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"getTranslatedShaderSource\"]($2); })"
-        js_getTranslatedShaderSource ::
-        WebGLDebugShaders -> Optional WebGLShader -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSource ::
-                          (MonadIO m, FromJSString result) =>
-                            WebGLDebugShaders -> Maybe WebGLShader -> m (Maybe result)
-getTranslatedShaderSource self shader
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getTranslatedShaderSource self (maybeToOptional shader)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSource_ ::
-                           (MonadIO m) => WebGLDebugShaders -> Maybe WebGLShader -> m ()
-getTranslatedShaderSource_ self shader
-  = liftIO
-      (void (js_getTranslatedShaderSource self (maybeToOptional shader)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSourceUnsafe ::
-                                (MonadIO m, HasCallStack, FromJSString result) =>
-                                  WebGLDebugShaders -> Maybe WebGLShader -> m result
-getTranslatedShaderSourceUnsafe self shader
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getTranslatedShaderSource self (maybeToOptional shader)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSourceUnchecked ::
-                                   (MonadIO m, FromJSString result) =>
-                                     WebGLDebugShaders -> Maybe WebGLShader -> m result
-getTranslatedShaderSourceUnchecked self shader
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getTranslatedShaderSource self (maybeToOptional shader)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture
-       (pattern UNSIGNED_INT_24_8_WEBGL, WebGLDepthTexture(..),
-        gTypeWebGLDepthTexture)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern UNSIGNED_INT_24_8_WEBGL = 34042
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs
+++ /dev/null
@@ -1,90 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers
-       (js_drawBuffersWEBGL, drawBuffersWEBGL,
-        pattern COLOR_ATTACHMENT0_WEBGL, pattern COLOR_ATTACHMENT1_WEBGL,
-        pattern COLOR_ATTACHMENT2_WEBGL, pattern COLOR_ATTACHMENT3_WEBGL,
-        pattern COLOR_ATTACHMENT4_WEBGL, pattern COLOR_ATTACHMENT5_WEBGL,
-        pattern COLOR_ATTACHMENT6_WEBGL, pattern COLOR_ATTACHMENT7_WEBGL,
-        pattern COLOR_ATTACHMENT8_WEBGL, pattern COLOR_ATTACHMENT9_WEBGL,
-        pattern COLOR_ATTACHMENT10_WEBGL, pattern COLOR_ATTACHMENT11_WEBGL,
-        pattern COLOR_ATTACHMENT12_WEBGL, pattern COLOR_ATTACHMENT13_WEBGL,
-        pattern COLOR_ATTACHMENT14_WEBGL, pattern COLOR_ATTACHMENT15_WEBGL,
-        pattern DRAW_BUFFER0_WEBGL, pattern DRAW_BUFFER1_WEBGL,
-        pattern DRAW_BUFFER2_WEBGL, pattern DRAW_BUFFER3_WEBGL,
-        pattern DRAW_BUFFER4_WEBGL, pattern DRAW_BUFFER5_WEBGL,
-        pattern DRAW_BUFFER6_WEBGL, pattern DRAW_BUFFER7_WEBGL,
-        pattern DRAW_BUFFER8_WEBGL, pattern DRAW_BUFFER9_WEBGL,
-        pattern DRAW_BUFFER10_WEBGL, pattern DRAW_BUFFER11_WEBGL,
-        pattern DRAW_BUFFER12_WEBGL, pattern DRAW_BUFFER13_WEBGL,
-        pattern DRAW_BUFFER14_WEBGL, pattern DRAW_BUFFER15_WEBGL,
-        pattern MAX_COLOR_ATTACHMENTS_WEBGL,
-        pattern MAX_DRAW_BUFFERS_WEBGL, WebGLDrawBuffers(..),
-        gTypeWebGLDrawBuffers)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"drawBuffersWEBGL\"]($2); })"
-        js_drawBuffersWEBGL :: WebGLDrawBuffers -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers.drawBuffersWEBGL Mozilla WebGLDrawBuffers.drawBuffersWEBGL documentation> 
-drawBuffersWEBGL ::
-                 (MonadIO m) => WebGLDrawBuffers -> [GLenum] -> m ()
-drawBuffersWEBGL self buffers
-  = liftIO
-      (toJSVal buffers >>=
-         \ buffers' -> js_drawBuffersWEBGL self buffers')
-pattern COLOR_ATTACHMENT0_WEBGL = 36064
-pattern COLOR_ATTACHMENT1_WEBGL = 36065
-pattern COLOR_ATTACHMENT2_WEBGL = 36066
-pattern COLOR_ATTACHMENT3_WEBGL = 36067
-pattern COLOR_ATTACHMENT4_WEBGL = 36068
-pattern COLOR_ATTACHMENT5_WEBGL = 36069
-pattern COLOR_ATTACHMENT6_WEBGL = 36070
-pattern COLOR_ATTACHMENT7_WEBGL = 36071
-pattern COLOR_ATTACHMENT8_WEBGL = 36072
-pattern COLOR_ATTACHMENT9_WEBGL = 36073
-pattern COLOR_ATTACHMENT10_WEBGL = 36074
-pattern COLOR_ATTACHMENT11_WEBGL = 36075
-pattern COLOR_ATTACHMENT12_WEBGL = 36076
-pattern COLOR_ATTACHMENT13_WEBGL = 36077
-pattern COLOR_ATTACHMENT14_WEBGL = 36078
-pattern COLOR_ATTACHMENT15_WEBGL = 36079
-pattern DRAW_BUFFER0_WEBGL = 34853
-pattern DRAW_BUFFER1_WEBGL = 34854
-pattern DRAW_BUFFER2_WEBGL = 34855
-pattern DRAW_BUFFER3_WEBGL = 34856
-pattern DRAW_BUFFER4_WEBGL = 34857
-pattern DRAW_BUFFER5_WEBGL = 34858
-pattern DRAW_BUFFER6_WEBGL = 34859
-pattern DRAW_BUFFER7_WEBGL = 34860
-pattern DRAW_BUFFER8_WEBGL = 34861
-pattern DRAW_BUFFER9_WEBGL = 34862
-pattern DRAW_BUFFER10_WEBGL = 34863
-pattern DRAW_BUFFER11_WEBGL = 34864
-pattern DRAW_BUFFER12_WEBGL = 34865
-pattern DRAW_BUFFER13_WEBGL = 34866
-pattern DRAW_BUFFER14_WEBGL = 34867
-pattern DRAW_BUFFER15_WEBGL = 34868
-pattern MAX_COLOR_ATTACHMENTS_WEBGL = 36063
-pattern MAX_DRAW_BUFFERS_WEBGL = 34852
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLFramebuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLFramebuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLFramebuffer.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLFramebuffer
+       (WebGLFramebuffer(..), gTypeWebGLFramebuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLLoseContext
-       (js_loseContext, loseContext, js_restoreContext, restoreContext,
-        WebGLLoseContext(..), gTypeWebGLLoseContext)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"loseContext\"](); })"
-        js_loseContext :: WebGLLoseContext -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.loseContext Mozilla WebGLLoseContext.loseContext documentation> 
-loseContext :: (MonadIO m) => WebGLLoseContext -> m ()
-loseContext self = liftIO (js_loseContext self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"restoreContext\"](); })"
-        js_restoreContext :: WebGLLoseContext -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.restoreContext Mozilla WebGLLoseContext.restoreContext documentation> 
-restoreContext :: (MonadIO m) => WebGLLoseContext -> m ()
-restoreContext self = liftIO (js_restoreContext self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLObject.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLObject.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLObject.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLObject
+       (WebGLObject(..), gTypeWebGLObject, IsWebGLObject, toWebGLObject)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLProgram.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLProgram.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLProgram.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLProgram
+       (WebGLProgram(..), gTypeWebGLProgram)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLQuery.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLQuery.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLQuery.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLQuery
+       (WebGLQuery(..), gTypeWebGLQuery)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderbuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderbuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderbuffer.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLRenderbuffer
+       (WebGLRenderbuffer(..), gTypeWebGLRenderbuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContext.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLRenderingContext
+       (WebGLRenderingContext(..), gTypeWebGLRenderingContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
@@ -1,3112 +1,1609 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
-       (js_activeTexture, activeTexture, js_attachShader, attachShader,
-        js_bindAttribLocation, bindAttribLocation, js_bindBuffer,
-        bindBuffer, js_bindFramebuffer, bindFramebuffer,
-        js_bindRenderbuffer, bindRenderbuffer, js_bindTexture, bindTexture,
-        js_blendColor, blendColor, js_blendEquation, blendEquation,
-        js_blendEquationSeparate, blendEquationSeparate, js_blendFunc,
-        blendFunc, js_blendFuncSeparate, blendFuncSeparate, js_bufferData,
-        bufferData, js_bufferDataPtr, bufferDataPtr, js_bufferSubData,
-        bufferSubData, js_checkFramebufferStatus, checkFramebufferStatus,
-        checkFramebufferStatus_, js_clear, clear, js_clearColor,
-        clearColor, js_clearDepth, clearDepth, js_clearStencil,
-        clearStencil, js_colorMask, colorMask, js_compileShader,
-        compileShader, js_compressedTexImage2D, compressedTexImage2D,
-        js_compressedTexSubImage2D, compressedTexSubImage2D,
-        js_copyTexImage2D, copyTexImage2D, js_copyTexSubImage2D,
-        copyTexSubImage2D, js_createBuffer, createBuffer, createBuffer_,
-        js_createFramebuffer, createFramebuffer, createFramebuffer_,
-        js_createProgram, createProgram, createProgram_,
-        js_createRenderbuffer, createRenderbuffer, createRenderbuffer_,
-        js_createShader, createShader, createShader_, js_createTexture,
-        createTexture, createTexture_, js_cullFace, cullFace,
-        js_deleteBuffer, deleteBuffer, js_deleteFramebuffer,
-        deleteFramebuffer, js_deleteProgram, deleteProgram,
-        js_deleteRenderbuffer, deleteRenderbuffer, js_deleteShader,
-        deleteShader, js_deleteTexture, deleteTexture, js_depthFunc,
-        depthFunc, js_depthMask, depthMask, js_depthRange, depthRange,
-        js_detachShader, detachShader, js_disable, disable,
-        js_disableVertexAttribArray, disableVertexAttribArray,
-        js_drawArrays, drawArrays, js_drawElements, drawElements,
-        js_enable, enable, js_enableVertexAttribArray,
-        enableVertexAttribArray, js_finish, finish, js_flush, flush,
-        js_framebufferRenderbuffer, framebufferRenderbuffer,
-        js_framebufferTexture2D, framebufferTexture2D, js_frontFace,
-        frontFace, js_generateMipmap, generateMipmap, js_getActiveAttrib,
-        getActiveAttrib, getActiveAttrib_, js_getActiveUniform,
-        getActiveUniform, getActiveUniform_, js_getAttachedShaders,
-        getAttachedShaders, getAttachedShaders_, js_getAttribLocation,
-        getAttribLocation, getAttribLocation_, js_getBufferParameter,
-        getBufferParameter, getBufferParameter_, js_getContextAttributes,
-        getContextAttributes, getContextAttributes_,
-        getContextAttributesUnsafe, getContextAttributesUnchecked,
-        js_getError, getError, getError_, js_getSupportedExtensions,
-        getSupportedExtensions, getSupportedExtensions_, js_getExtension,
-        getExtension, getExtension_, getExtensionUnsafe,
-        getExtensionUnchecked, js_getFramebufferAttachmentParameter,
-        getFramebufferAttachmentParameter,
-        getFramebufferAttachmentParameter_, js_getParameter, getParameter,
-        getParameter_, js_getProgramParameter, getProgramParameter,
-        getProgramParameter_, js_getProgramInfoLog, getProgramInfoLog,
-        getProgramInfoLog_, getProgramInfoLogUnsafe,
-        getProgramInfoLogUnchecked, js_getRenderbufferParameter,
-        getRenderbufferParameter, getRenderbufferParameter_,
-        js_getShaderParameter, getShaderParameter, getShaderParameter_,
-        js_getShaderInfoLog, getShaderInfoLog, getShaderInfoLog_,
-        getShaderInfoLogUnsafe, getShaderInfoLogUnchecked,
-        js_getShaderPrecisionFormat, getShaderPrecisionFormat,
-        getShaderPrecisionFormat_, js_getShaderSource, getShaderSource,
-        getShaderSource_, getShaderSourceUnsafe, getShaderSourceUnchecked,
-        js_getTexParameter, getTexParameter, getTexParameter_,
-        js_getUniform, getUniform, getUniform_, js_getUniformLocation,
-        getUniformLocation, getUniformLocation_, js_getVertexAttrib,
-        getVertexAttrib, getVertexAttrib_, js_getVertexAttribOffset,
-        getVertexAttribOffset, getVertexAttribOffset_, js_hint, hint,
-        js_isBuffer, isBuffer, isBuffer_, js_isContextLost, isContextLost,
-        isContextLost_, js_isEnabled, isEnabled, isEnabled_,
-        js_isFramebuffer, isFramebuffer, isFramebuffer_, js_isProgram,
-        isProgram, isProgram_, js_isRenderbuffer, isRenderbuffer,
-        isRenderbuffer_, js_isShader, isShader, isShader_, js_isTexture,
-        isTexture, isTexture_, js_lineWidth, lineWidth, js_linkProgram,
-        linkProgram, js_pixelStorei, pixelStorei, js_polygonOffset,
-        polygonOffset, js_readPixels, readPixels, js_releaseShaderCompiler,
-        releaseShaderCompiler, js_renderbufferStorage, renderbufferStorage,
-        js_sampleCoverage, sampleCoverage, js_scissor, scissor,
-        js_shaderSource, shaderSource, js_stencilFunc, stencilFunc,
-        js_stencilFuncSeparate, stencilFuncSeparate, js_stencilMask,
-        stencilMask, js_stencilMaskSeparate, stencilMaskSeparate,
-        js_stencilOp, stencilOp, js_stencilOpSeparate, stencilOpSeparate,
-        js_texParameterf, texParameterf, js_texParameteri, texParameteri,
-        js_texImage2DView, texImage2DView, js_texImage2D, texImage2D,
-        js_texSubImage2DView, texSubImage2DView, js_texSubImage2D,
-        texSubImage2D, js_uniform1f, uniform1f, js_uniform2f, uniform2f,
-        js_uniform3f, uniform3f, js_uniform4f, uniform4f, js_uniform1i,
-        uniform1i, js_uniform2i, uniform2i, js_uniform3i, uniform3i,
-        js_uniform4i, uniform4i, js_uniform1fv, uniform1fv, js_uniform2fv,
-        uniform2fv, js_uniform3fv, uniform3fv, js_uniform4fv, uniform4fv,
-        js_uniform1iv, uniform1iv, js_uniform2iv, uniform2iv,
-        js_uniform3iv, uniform3iv, js_uniform4iv, uniform4iv,
-        js_uniformMatrix2fv, uniformMatrix2fv, js_uniformMatrix3fv,
-        uniformMatrix3fv, js_uniformMatrix4fv, uniformMatrix4fv,
-        js_useProgram, useProgram, js_validateProgram, validateProgram,
-        js_vertexAttrib1f, vertexAttrib1f, js_vertexAttrib2f,
-        vertexAttrib2f, js_vertexAttrib3f, vertexAttrib3f,
-        js_vertexAttrib4f, vertexAttrib4f, js_vertexAttrib1fv,
-        vertexAttrib1fv, js_vertexAttrib2fv, vertexAttrib2fv,
-        js_vertexAttrib3fv, vertexAttrib3fv, js_vertexAttrib4fv,
-        vertexAttrib4fv, js_vertexAttribPointer, vertexAttribPointer,
-        js_viewport, viewport, pattern DEPTH_BUFFER_BIT,
-        pattern STENCIL_BUFFER_BIT, pattern COLOR_BUFFER_BIT,
-        pattern POINTS, pattern LINES, pattern LINE_LOOP,
-        pattern LINE_STRIP, pattern TRIANGLES, pattern TRIANGLE_STRIP,
-        pattern TRIANGLE_FAN, pattern ZERO, pattern ONE, pattern SRC_COLOR,
-        pattern ONE_MINUS_SRC_COLOR, pattern SRC_ALPHA,
-        pattern ONE_MINUS_SRC_ALPHA, pattern DST_ALPHA,
-        pattern ONE_MINUS_DST_ALPHA, pattern DST_COLOR,
-        pattern ONE_MINUS_DST_COLOR, pattern SRC_ALPHA_SATURATE,
-        pattern FUNC_ADD, pattern BLEND_EQUATION,
-        pattern BLEND_EQUATION_RGB, pattern BLEND_EQUATION_ALPHA,
-        pattern FUNC_SUBTRACT, pattern FUNC_REVERSE_SUBTRACT,
-        pattern BLEND_DST_RGB, pattern BLEND_SRC_RGB,
-        pattern BLEND_DST_ALPHA, pattern BLEND_SRC_ALPHA,
-        pattern CONSTANT_COLOR, pattern ONE_MINUS_CONSTANT_COLOR,
-        pattern CONSTANT_ALPHA, pattern ONE_MINUS_CONSTANT_ALPHA,
-        pattern BLEND_COLOR, pattern ARRAY_BUFFER,
-        pattern ELEMENT_ARRAY_BUFFER, pattern ARRAY_BUFFER_BINDING,
-        pattern ELEMENT_ARRAY_BUFFER_BINDING, pattern STREAM_DRAW,
-        pattern STATIC_DRAW, pattern DYNAMIC_DRAW, pattern BUFFER_SIZE,
-        pattern BUFFER_USAGE, pattern CURRENT_VERTEX_ATTRIB, pattern FRONT,
-        pattern BACK, pattern FRONT_AND_BACK, pattern TEXTURE_2D,
-        pattern CULL_FACE, pattern BLEND, pattern DITHER,
-        pattern STENCIL_TEST, pattern DEPTH_TEST, pattern SCISSOR_TEST,
-        pattern POLYGON_OFFSET_FILL, pattern SAMPLE_ALPHA_TO_COVERAGE,
-        pattern SAMPLE_COVERAGE, pattern NO_ERROR, pattern INVALID_ENUM,
-        pattern INVALID_VALUE, pattern INVALID_OPERATION,
-        pattern OUT_OF_MEMORY, pattern CW, pattern CCW, pattern LINE_WIDTH,
-        pattern ALIASED_POINT_SIZE_RANGE, pattern ALIASED_LINE_WIDTH_RANGE,
-        pattern CULL_FACE_MODE, pattern FRONT_FACE, pattern DEPTH_RANGE,
-        pattern DEPTH_WRITEMASK, pattern DEPTH_CLEAR_VALUE,
-        pattern DEPTH_FUNC, pattern STENCIL_CLEAR_VALUE,
-        pattern STENCIL_FUNC, pattern STENCIL_FAIL,
-        pattern STENCIL_PASS_DEPTH_FAIL, pattern STENCIL_PASS_DEPTH_PASS,
-        pattern STENCIL_REF, pattern STENCIL_VALUE_MASK,
-        pattern STENCIL_WRITEMASK, pattern STENCIL_BACK_FUNC,
-        pattern STENCIL_BACK_FAIL, pattern STENCIL_BACK_PASS_DEPTH_FAIL,
-        pattern STENCIL_BACK_PASS_DEPTH_PASS, pattern STENCIL_BACK_REF,
-        pattern STENCIL_BACK_VALUE_MASK, pattern STENCIL_BACK_WRITEMASK,
-        pattern VIEWPORT, pattern SCISSOR_BOX, pattern COLOR_CLEAR_VALUE,
-        pattern COLOR_WRITEMASK, pattern UNPACK_ALIGNMENT,
-        pattern PACK_ALIGNMENT, pattern MAX_TEXTURE_SIZE,
-        pattern MAX_VIEWPORT_DIMS, pattern SUBPIXEL_BITS, pattern RED_BITS,
-        pattern GREEN_BITS, pattern BLUE_BITS, pattern ALPHA_BITS,
-        pattern DEPTH_BITS, pattern STENCIL_BITS,
-        pattern POLYGON_OFFSET_UNITS, pattern POLYGON_OFFSET_FACTOR,
-        pattern TEXTURE_BINDING_2D, pattern SAMPLE_BUFFERS,
-        pattern SAMPLES, pattern SAMPLE_COVERAGE_VALUE,
-        pattern SAMPLE_COVERAGE_INVERT, pattern COMPRESSED_TEXTURE_FORMATS,
-        pattern DONT_CARE, pattern FASTEST, pattern NICEST,
-        pattern GENERATE_MIPMAP_HINT, pattern BYTE, pattern UNSIGNED_BYTE,
-        pattern SHORT, pattern UNSIGNED_SHORT, pattern INT,
-        pattern UNSIGNED_INT, pattern FLOAT, pattern DEPTH_COMPONENT,
-        pattern ALPHA, pattern RGB, pattern RGBA, pattern LUMINANCE,
-        pattern LUMINANCE_ALPHA, pattern UNSIGNED_SHORT_4_4_4_4,
-        pattern UNSIGNED_SHORT_5_5_5_1, pattern UNSIGNED_SHORT_5_6_5,
-        pattern FRAGMENT_SHADER, pattern VERTEX_SHADER,
-        pattern MAX_VERTEX_ATTRIBS, pattern MAX_VERTEX_UNIFORM_VECTORS,
-        pattern MAX_VARYING_VECTORS,
-        pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS,
-        pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS,
-        pattern MAX_TEXTURE_IMAGE_UNITS,
-        pattern MAX_FRAGMENT_UNIFORM_VECTORS, pattern SHADER_TYPE,
-        pattern DELETE_STATUS, pattern LINK_STATUS,
-        pattern VALIDATE_STATUS, pattern ATTACHED_SHADERS,
-        pattern ACTIVE_UNIFORMS, pattern ACTIVE_ATTRIBUTES,
-        pattern SHADING_LANGUAGE_VERSION, pattern CURRENT_PROGRAM,
-        pattern NEVER, pattern LESS, pattern EQUAL, pattern LEQUAL,
-        pattern GREATER, pattern NOTEQUAL, pattern GEQUAL, pattern ALWAYS,
-        pattern KEEP, pattern REPLACE, pattern INCR, pattern DECR,
-        pattern INVERT, pattern INCR_WRAP, pattern DECR_WRAP,
-        pattern VENDOR, pattern RENDERER, pattern VERSION, pattern NEAREST,
-        pattern LINEAR, pattern NEAREST_MIPMAP_NEAREST,
-        pattern LINEAR_MIPMAP_NEAREST, pattern NEAREST_MIPMAP_LINEAR,
-        pattern LINEAR_MIPMAP_LINEAR, pattern TEXTURE_MAG_FILTER,
-        pattern TEXTURE_MIN_FILTER, pattern TEXTURE_WRAP_S,
-        pattern TEXTURE_WRAP_T, pattern TEXTURE, pattern TEXTURE_CUBE_MAP,
-        pattern TEXTURE_BINDING_CUBE_MAP,
-        pattern TEXTURE_CUBE_MAP_POSITIVE_X,
-        pattern TEXTURE_CUBE_MAP_NEGATIVE_X,
-        pattern TEXTURE_CUBE_MAP_POSITIVE_Y,
-        pattern TEXTURE_CUBE_MAP_NEGATIVE_Y,
-        pattern TEXTURE_CUBE_MAP_POSITIVE_Z,
-        pattern TEXTURE_CUBE_MAP_NEGATIVE_Z,
-        pattern MAX_CUBE_MAP_TEXTURE_SIZE, pattern TEXTURE0,
-        pattern TEXTURE1, pattern TEXTURE2, pattern TEXTURE3,
-        pattern TEXTURE4, pattern TEXTURE5, pattern TEXTURE6,
-        pattern TEXTURE7, pattern TEXTURE8, pattern TEXTURE9,
-        pattern TEXTURE10, pattern TEXTURE11, pattern TEXTURE12,
-        pattern TEXTURE13, pattern TEXTURE14, pattern TEXTURE15,
-        pattern TEXTURE16, pattern TEXTURE17, pattern TEXTURE18,
-        pattern TEXTURE19, pattern TEXTURE20, pattern TEXTURE21,
-        pattern TEXTURE22, pattern TEXTURE23, pattern TEXTURE24,
-        pattern TEXTURE25, pattern TEXTURE26, pattern TEXTURE27,
-        pattern TEXTURE28, pattern TEXTURE29, pattern TEXTURE30,
-        pattern TEXTURE31, pattern ACTIVE_TEXTURE, pattern REPEAT,
-        pattern CLAMP_TO_EDGE, pattern MIRRORED_REPEAT, pattern FLOAT_VEC2,
-        pattern FLOAT_VEC3, pattern FLOAT_VEC4, pattern INT_VEC2,
-        pattern INT_VEC3, pattern INT_VEC4, pattern BOOL,
-        pattern BOOL_VEC2, pattern BOOL_VEC3, pattern BOOL_VEC4,
-        pattern FLOAT_MAT2, pattern FLOAT_MAT3, pattern FLOAT_MAT4,
-        pattern SAMPLER_2D, pattern SAMPLER_CUBE,
-        pattern VERTEX_ATTRIB_ARRAY_ENABLED,
-        pattern VERTEX_ATTRIB_ARRAY_SIZE,
-        pattern VERTEX_ATTRIB_ARRAY_STRIDE,
-        pattern VERTEX_ATTRIB_ARRAY_TYPE,
-        pattern VERTEX_ATTRIB_ARRAY_NORMALIZED,
-        pattern VERTEX_ATTRIB_ARRAY_POINTER,
-        pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
-        pattern IMPLEMENTATION_COLOR_READ_TYPE,
-        pattern IMPLEMENTATION_COLOR_READ_FORMAT, pattern COMPILE_STATUS,
-        pattern LOW_FLOAT, pattern MEDIUM_FLOAT, pattern HIGH_FLOAT,
-        pattern LOW_INT, pattern MEDIUM_INT, pattern HIGH_INT,
-        pattern FRAMEBUFFER, pattern RENDERBUFFER, pattern RGBA4,
-        pattern RGB5_A1, pattern RGB565, pattern DEPTH_COMPONENT16,
-        pattern STENCIL_INDEX, pattern STENCIL_INDEX8,
-        pattern DEPTH_STENCIL, pattern RENDERBUFFER_WIDTH,
-        pattern RENDERBUFFER_HEIGHT, pattern RENDERBUFFER_INTERNAL_FORMAT,
-        pattern RENDERBUFFER_RED_SIZE, pattern RENDERBUFFER_GREEN_SIZE,
-        pattern RENDERBUFFER_BLUE_SIZE, pattern RENDERBUFFER_ALPHA_SIZE,
-        pattern RENDERBUFFER_DEPTH_SIZE, pattern RENDERBUFFER_STENCIL_SIZE,
-        pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
-        pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
-        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,
-        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,
-        pattern COLOR_ATTACHMENT0, pattern DEPTH_ATTACHMENT,
-        pattern STENCIL_ATTACHMENT, pattern DEPTH_STENCIL_ATTACHMENT,
-        pattern NONE, pattern FRAMEBUFFER_COMPLETE,
-        pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
-        pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,
-        pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
-        pattern FRAMEBUFFER_UNSUPPORTED, pattern FRAMEBUFFER_BINDING,
-        pattern RENDERBUFFER_BINDING, pattern MAX_RENDERBUFFER_SIZE,
-        pattern INVALID_FRAMEBUFFER_OPERATION, pattern UNPACK_FLIP_Y_WEBGL,
-        pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL, pattern CONTEXT_LOST_WEBGL,
-        pattern UNPACK_COLORSPACE_CONVERSION_WEBGL,
-        pattern BROWSER_DEFAULT_WEBGL, js_getCanvas, getCanvas,
-        js_getDrawingBufferWidth, getDrawingBufferWidth,
-        js_getDrawingBufferHeight, getDrawingBufferHeight,
-        WebGLRenderingContextBase(..), gTypeWebGLRenderingContextBase,
-        IsWebGLRenderingContextBase, toWebGLRenderingContextBase)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"activeTexture\"]($2); })"
-        js_activeTexture :: WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.activeTexture Mozilla WebGLRenderingContextBase.activeTexture documentation> 
-activeTexture ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-activeTexture self texture
-  = liftIO
-      (js_activeTexture (toWebGLRenderingContextBase self) texture)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"attachShader\"]($2, $3); })"
-        js_attachShader ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> Optional WebGLShader -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.attachShader Mozilla WebGLRenderingContextBase.attachShader documentation> 
-attachShader ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
-attachShader self program shader
-  = liftIO
-      (js_attachShader (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         (maybeToOptional shader))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"bindAttribLocation\"]($2, $3,\n$4); })" js_bindAttribLocation ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> GLuint -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindAttribLocation Mozilla WebGLRenderingContextBase.bindAttribLocation documentation> 
-bindAttribLocation ::
-                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                     self -> Maybe WebGLProgram -> GLuint -> name -> m ()
-bindAttribLocation self program index name
-  = liftIO
-      (js_bindAttribLocation (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         index
-         (toJSString name))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindBuffer\"]($2, $3); })"
-        js_bindBuffer ::
-        WebGLRenderingContextBase ->
-          GLenum -> Optional WebGLBuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindBuffer Mozilla WebGLRenderingContextBase.bindBuffer documentation> 
-bindBuffer ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> GLenum -> Maybe WebGLBuffer -> m ()
-bindBuffer self target buffer
-  = liftIO
-      (js_bindBuffer (toWebGLRenderingContextBase self) target
-         (maybeToOptional buffer))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindFramebuffer\"]($2, $3); })"
-        js_bindFramebuffer ::
-        WebGLRenderingContextBase ->
-          GLenum -> Optional WebGLFramebuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindFramebuffer Mozilla WebGLRenderingContextBase.bindFramebuffer documentation> 
-bindFramebuffer ::
-                (MonadIO m, IsWebGLRenderingContextBase self) =>
-                  self -> GLenum -> Maybe WebGLFramebuffer -> m ()
-bindFramebuffer self target framebuffer
-  = liftIO
-      (js_bindFramebuffer (toWebGLRenderingContextBase self) target
-         (maybeToOptional framebuffer))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindRenderbuffer\"]($2, $3); })"
-        js_bindRenderbuffer ::
-        WebGLRenderingContextBase ->
-          GLenum -> Optional WebGLRenderbuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindRenderbuffer Mozilla WebGLRenderingContextBase.bindRenderbuffer documentation> 
-bindRenderbuffer ::
-                 (MonadIO m, IsWebGLRenderingContextBase self) =>
-                   self -> GLenum -> Maybe WebGLRenderbuffer -> m ()
-bindRenderbuffer self target renderbuffer
-  = liftIO
-      (js_bindRenderbuffer (toWebGLRenderingContextBase self) target
-         (maybeToOptional renderbuffer))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindTexture\"]($2, $3); })"
-        js_bindTexture ::
-        WebGLRenderingContextBase ->
-          GLenum -> Optional WebGLTexture -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindTexture Mozilla WebGLRenderingContextBase.bindTexture documentation> 
-bindTexture ::
-            (MonadIO m, IsWebGLRenderingContextBase self) =>
-              self -> GLenum -> Maybe WebGLTexture -> m ()
-bindTexture self target texture
-  = liftIO
-      (js_bindTexture (toWebGLRenderingContextBase self) target
-         (maybeToOptional texture))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"blendColor\"]($2, $3, $4, $5); })" js_blendColor ::
-        WebGLRenderingContextBase ->
-          GLclampf -> GLclampf -> GLclampf -> GLclampf -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendColor Mozilla WebGLRenderingContextBase.blendColor documentation> 
-blendColor ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
-blendColor self red green blue alpha
-  = liftIO
-      (js_blendColor (toWebGLRenderingContextBase self) red green blue
-         alpha)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"blendEquation\"]($2); })"
-        js_blendEquation :: WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquation Mozilla WebGLRenderingContextBase.blendEquation documentation> 
-blendEquation ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-blendEquation self mode
-  = liftIO (js_blendEquation (toWebGLRenderingContextBase self) mode)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"blendEquationSeparate\"]($2,\n$3); })" js_blendEquationSeparate
-        :: WebGLRenderingContextBase -> GLenum -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquationSeparate Mozilla WebGLRenderingContextBase.blendEquationSeparate documentation> 
-blendEquationSeparate ::
-                      (MonadIO m, IsWebGLRenderingContextBase self) =>
-                        self -> GLenum -> GLenum -> m ()
-blendEquationSeparate self modeRGB modeAlpha
-  = liftIO
-      (js_blendEquationSeparate (toWebGLRenderingContextBase self)
-         modeRGB
-         modeAlpha)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"blendFunc\"]($2, $3); })"
-        js_blendFunc ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFunc Mozilla WebGLRenderingContextBase.blendFunc documentation> 
-blendFunc ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> GLenum -> m ()
-blendFunc self sfactor dfactor
-  = liftIO
-      (js_blendFunc (toWebGLRenderingContextBase self) sfactor dfactor)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"blendFuncSeparate\"]($2, $3,\n$4, $5); })" js_blendFuncSeparate
-        ::
-        WebGLRenderingContextBase ->
-          GLenum -> GLenum -> GLenum -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFuncSeparate Mozilla WebGLRenderingContextBase.blendFuncSeparate documentation> 
-blendFuncSeparate ::
-                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
-blendFuncSeparate self srcRGB dstRGB srcAlpha dstAlpha
-  = liftIO
-      (js_blendFuncSeparate (toWebGLRenderingContextBase self) srcRGB
-         dstRGB
-         srcAlpha
-         dstAlpha)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
-        js_bufferData ::
-        WebGLRenderingContextBase ->
-          GLenum -> Optional BufferDataSource -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
-bufferData ::
-           (MonadIO m, IsWebGLRenderingContextBase self,
-            IsBufferDataSource data') =>
-             self -> GLenum -> Maybe data' -> GLenum -> m ()
-bufferData self target data' usage
-  = liftIO
-      (js_bufferData (toWebGLRenderingContextBase self) target
-         (maybeToOptional (fmap toBufferDataSource data'))
-         usage)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
-        js_bufferDataPtr ::
-        WebGLRenderingContextBase -> GLenum -> Double -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
-bufferDataPtr ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> GLsizeiptr -> GLenum -> m ()
-bufferDataPtr self target size usage
-  = liftIO
-      (js_bufferDataPtr (toWebGLRenderingContextBase self) target
-         (fromIntegral size)
-         usage)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"bufferSubData\"]($2, $3, $4); })" js_bufferSubData ::
-        WebGLRenderingContextBase ->
-          GLenum -> Double -> Optional BufferDataSource -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferSubData Mozilla WebGLRenderingContextBase.bufferSubData documentation> 
-bufferSubData ::
-              (MonadIO m, IsWebGLRenderingContextBase self,
-               IsBufferDataSource data') =>
-                self -> GLenum -> GLintptr -> Maybe data' -> m ()
-bufferSubData self target offset data'
-  = liftIO
-      (js_bufferSubData (toWebGLRenderingContextBase self) target
-         (fromIntegral offset)
-         (maybeToOptional (fmap toBufferDataSource data')))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"checkFramebufferStatus\"]($2); })" js_checkFramebufferStatus ::
-        WebGLRenderingContextBase -> GLenum -> IO GLenum
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.checkFramebufferStatus Mozilla WebGLRenderingContextBase.checkFramebufferStatus documentation> 
-checkFramebufferStatus ::
-                       (MonadIO m, IsWebGLRenderingContextBase self) =>
-                         self -> GLenum -> m GLenum
-checkFramebufferStatus self target
-  = liftIO
-      (js_checkFramebufferStatus (toWebGLRenderingContextBase self)
-         target)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.checkFramebufferStatus Mozilla WebGLRenderingContextBase.checkFramebufferStatus documentation> 
-checkFramebufferStatus_ ::
-                        (MonadIO m, IsWebGLRenderingContextBase self) =>
-                          self -> GLenum -> m ()
-checkFramebufferStatus_ self target
-  = liftIO
-      (void
-         (js_checkFramebufferStatus (toWebGLRenderingContextBase self)
-            target))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clear\"]($2); })" js_clear ::
-        WebGLRenderingContextBase -> GLbitfield -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clear Mozilla WebGLRenderingContextBase.clear documentation> 
-clear ::
-      (MonadIO m, IsWebGLRenderingContextBase self) =>
-        self -> GLbitfield -> m ()
-clear self mask
-  = liftIO (js_clear (toWebGLRenderingContextBase self) mask)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"clearColor\"]($2, $3, $4, $5); })" js_clearColor ::
-        WebGLRenderingContextBase ->
-          GLclampf -> GLclampf -> GLclampf -> GLclampf -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearColor Mozilla WebGLRenderingContextBase.clearColor documentation> 
-clearColor ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
-clearColor self red green blue alpha
-  = liftIO
-      (js_clearColor (toWebGLRenderingContextBase self) red green blue
-         alpha)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearDepth\"]($2); })"
-        js_clearDepth :: WebGLRenderingContextBase -> GLclampf -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearDepth Mozilla WebGLRenderingContextBase.clearDepth documentation> 
-clearDepth ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> m ()
-clearDepth self depth
-  = liftIO (js_clearDepth (toWebGLRenderingContextBase self) depth)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearStencil\"]($2); })"
-        js_clearStencil :: WebGLRenderingContextBase -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearStencil Mozilla WebGLRenderingContextBase.clearStencil documentation> 
-clearStencil ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> GLint -> m ()
-clearStencil self s
-  = liftIO (js_clearStencil (toWebGLRenderingContextBase self) s)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"colorMask\"]($2, $3, $4, $5); })" js_colorMask ::
-        WebGLRenderingContextBase ->
-          GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.colorMask Mozilla WebGLRenderingContextBase.colorMask documentation> 
-colorMask ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
-colorMask self red green blue alpha
-  = liftIO
-      (js_colorMask (toWebGLRenderingContextBase self) red green blue
-         alpha)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"compileShader\"]($2); })"
-        js_compileShader ::
-        WebGLRenderingContextBase -> Optional WebGLShader -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compileShader Mozilla WebGLRenderingContextBase.compileShader documentation> 
-compileShader ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLShader -> m ()
-compileShader self shader
-  = liftIO
-      (js_compileShader (toWebGLRenderingContextBase self)
-         (maybeToOptional shader))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"compressedTexImage2D\"]($2,\n$3, $4, $5, $6, $7, $8); })"
-        js_compressedTexImage2D ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLenum -> GLsizei -> GLsizei -> GLint -> ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexImage2D Mozilla WebGLRenderingContextBase.compressedTexImage2D documentation> 
-compressedTexImage2D ::
-                     (MonadIO m, IsWebGLRenderingContextBase self,
-                      IsArrayBufferView data') =>
-                       self ->
-                         GLenum ->
-                           GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> data' -> m ()
-compressedTexImage2D self target level internalformat width height
-  border data'
-  = liftIO
-      (js_compressedTexImage2D (toWebGLRenderingContextBase self) target
-         level
-         internalformat
-         width
-         height
-         border
-         (toArrayBufferView data'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"compressedTexSubImage2D\"]($2,\n$3, $4, $5, $6, $7, $8, $9); })"
-        js_compressedTexSubImage2D ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLint -> GLsizei -> GLsizei -> GLenum -> ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexSubImage2D Mozilla WebGLRenderingContextBase.compressedTexSubImage2D documentation> 
-compressedTexSubImage2D ::
-                        (MonadIO m, IsWebGLRenderingContextBase self,
-                         IsArrayBufferView data') =>
-                          self ->
-                            GLenum ->
-                              GLint ->
-                                GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> data' -> m ()
-compressedTexSubImage2D self target level xoffset yoffset width
-  height format data'
-  = liftIO
-      (js_compressedTexSubImage2D (toWebGLRenderingContextBase self)
-         target
-         level
-         xoffset
-         yoffset
-         width
-         height
-         format
-         (toArrayBufferView data'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"copyTexImage2D\"]($2, $3, $4,\n$5, $6, $7, $8, $9); })"
-        js_copyTexImage2D ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexImage2D Mozilla WebGLRenderingContextBase.copyTexImage2D documentation> 
-copyTexImage2D ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self ->
-                   GLenum ->
-                     GLint ->
-                       GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
-copyTexImage2D self target level internalformat x y width height
-  border
-  = liftIO
-      (js_copyTexImage2D (toWebGLRenderingContextBase self) target level
-         internalformat
-         x
-         y
-         width
-         height
-         border)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"copyTexSubImage2D\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
-        js_copyTexSubImage2D ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexSubImage2D Mozilla WebGLRenderingContextBase.copyTexSubImage2D documentation> 
-copyTexSubImage2D ::
-                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                    self ->
-                      GLenum ->
-                        GLint ->
-                          GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-copyTexSubImage2D self target level xoffset yoffset x y width
-  height
-  = liftIO
-      (js_copyTexSubImage2D (toWebGLRenderingContextBase self) target
-         level
-         xoffset
-         yoffset
-         x
-         y
-         width
-         height)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createBuffer\"](); })"
-        js_createBuffer :: WebGLRenderingContextBase -> IO WebGLBuffer
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
-createBuffer ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> m WebGLBuffer
-createBuffer self
-  = liftIO (js_createBuffer (toWebGLRenderingContextBase self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
-createBuffer_ ::
-              (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-createBuffer_ self
-  = liftIO
-      (void (js_createBuffer (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createFramebuffer\"](); })"
-        js_createFramebuffer ::
-        WebGLRenderingContextBase -> IO WebGLFramebuffer
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
-createFramebuffer ::
-                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                    self -> m WebGLFramebuffer
-createFramebuffer self
-  = liftIO (js_createFramebuffer (toWebGLRenderingContextBase self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
-createFramebuffer_ ::
-                   (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-createFramebuffer_ self
-  = liftIO
-      (void (js_createFramebuffer (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createProgram\"](); })"
-        js_createProgram :: WebGLRenderingContextBase -> IO WebGLProgram
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
-createProgram ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> m WebGLProgram
-createProgram self
-  = liftIO (js_createProgram (toWebGLRenderingContextBase self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
-createProgram_ ::
-               (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-createProgram_ self
-  = liftIO
-      (void (js_createProgram (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createRenderbuffer\"](); })"
-        js_createRenderbuffer ::
-        WebGLRenderingContextBase -> IO WebGLRenderbuffer
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
-createRenderbuffer ::
-                   (MonadIO m, IsWebGLRenderingContextBase self) =>
-                     self -> m WebGLRenderbuffer
-createRenderbuffer self
-  = liftIO (js_createRenderbuffer (toWebGLRenderingContextBase self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
-createRenderbuffer_ ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-createRenderbuffer_ self
-  = liftIO
-      (void (js_createRenderbuffer (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createShader\"]($2); })"
-        js_createShader ::
-        WebGLRenderingContextBase -> GLenum -> IO WebGLShader
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
-createShader ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> GLenum -> m WebGLShader
-createShader self type'
-  = liftIO (js_createShader (toWebGLRenderingContextBase self) type')
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
-createShader_ ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-createShader_ self type'
-  = liftIO
-      (void (js_createShader (toWebGLRenderingContextBase self) type'))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createTexture\"](); })"
-        js_createTexture :: WebGLRenderingContextBase -> IO WebGLTexture
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
-createTexture ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> m WebGLTexture
-createTexture self
-  = liftIO (js_createTexture (toWebGLRenderingContextBase self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
-createTexture_ ::
-               (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-createTexture_ self
-  = liftIO
-      (void (js_createTexture (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"cullFace\"]($2); })" js_cullFace
-        :: WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.cullFace Mozilla WebGLRenderingContextBase.cullFace documentation> 
-cullFace ::
-         (MonadIO m, IsWebGLRenderingContextBase self) =>
-           self -> GLenum -> m ()
-cullFace self mode
-  = liftIO (js_cullFace (toWebGLRenderingContextBase self) mode)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteBuffer\"]($2); })"
-        js_deleteBuffer ::
-        WebGLRenderingContextBase -> Optional WebGLBuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteBuffer Mozilla WebGLRenderingContextBase.deleteBuffer documentation> 
-deleteBuffer ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLBuffer -> m ()
-deleteBuffer self buffer
-  = liftIO
-      (js_deleteBuffer (toWebGLRenderingContextBase self)
-         (maybeToOptional buffer))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteFramebuffer\"]($2); })"
-        js_deleteFramebuffer ::
-        WebGLRenderingContextBase -> Optional WebGLFramebuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteFramebuffer Mozilla WebGLRenderingContextBase.deleteFramebuffer documentation> 
-deleteFramebuffer ::
-                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                    self -> Maybe WebGLFramebuffer -> m ()
-deleteFramebuffer self framebuffer
-  = liftIO
-      (js_deleteFramebuffer (toWebGLRenderingContextBase self)
-         (maybeToOptional framebuffer))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteProgram\"]($2); })"
-        js_deleteProgram ::
-        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteProgram Mozilla WebGLRenderingContextBase.deleteProgram documentation> 
-deleteProgram ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLProgram -> m ()
-deleteProgram self program
-  = liftIO
-      (js_deleteProgram (toWebGLRenderingContextBase self)
-         (maybeToOptional program))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteRenderbuffer\"]($2); })"
-        js_deleteRenderbuffer ::
-        WebGLRenderingContextBase -> Optional WebGLRenderbuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteRenderbuffer Mozilla WebGLRenderingContextBase.deleteRenderbuffer documentation> 
-deleteRenderbuffer ::
-                   (MonadIO m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLRenderbuffer -> m ()
-deleteRenderbuffer self renderbuffer
-  = liftIO
-      (js_deleteRenderbuffer (toWebGLRenderingContextBase self)
-         (maybeToOptional renderbuffer))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteShader\"]($2); })"
-        js_deleteShader ::
-        WebGLRenderingContextBase -> Optional WebGLShader -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteShader Mozilla WebGLRenderingContextBase.deleteShader documentation> 
-deleteShader ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLShader -> m ()
-deleteShader self shader
-  = liftIO
-      (js_deleteShader (toWebGLRenderingContextBase self)
-         (maybeToOptional shader))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteTexture\"]($2); })"
-        js_deleteTexture ::
-        WebGLRenderingContextBase -> Optional WebGLTexture -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteTexture Mozilla WebGLRenderingContextBase.deleteTexture documentation> 
-deleteTexture ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLTexture -> m ()
-deleteTexture self texture
-  = liftIO
-      (js_deleteTexture (toWebGLRenderingContextBase self)
-         (maybeToOptional texture))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"depthFunc\"]($2); })"
-        js_depthFunc :: WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthFunc Mozilla WebGLRenderingContextBase.depthFunc documentation> 
-depthFunc ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> m ()
-depthFunc self func
-  = liftIO (js_depthFunc (toWebGLRenderingContextBase self) func)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"depthMask\"]($2); })"
-        js_depthMask :: WebGLRenderingContextBase -> GLboolean -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthMask Mozilla WebGLRenderingContextBase.depthMask documentation> 
-depthMask ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLboolean -> m ()
-depthMask self flag
-  = liftIO (js_depthMask (toWebGLRenderingContextBase self) flag)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"depthRange\"]($2, $3); })"
-        js_depthRange ::
-        WebGLRenderingContextBase -> GLclampf -> GLclampf -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthRange Mozilla WebGLRenderingContextBase.depthRange documentation> 
-depthRange ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> GLclampf -> m ()
-depthRange self zNear zFar
-  = liftIO
-      (js_depthRange (toWebGLRenderingContextBase self) zNear zFar)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"detachShader\"]($2, $3); })"
-        js_detachShader ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> Optional WebGLShader -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.detachShader Mozilla WebGLRenderingContextBase.detachShader documentation> 
-detachShader ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
-detachShader self program shader
-  = liftIO
-      (js_detachShader (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         (maybeToOptional shader))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"disable\"]($2); })" js_disable
-        :: WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disable Mozilla WebGLRenderingContextBase.disable documentation> 
-disable ::
-        (MonadIO m, IsWebGLRenderingContextBase self) =>
-          self -> GLenum -> m ()
-disable self cap
-  = liftIO (js_disable (toWebGLRenderingContextBase self) cap)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"disableVertexAttribArray\"]($2); })" js_disableVertexAttribArray
-        :: WebGLRenderingContextBase -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disableVertexAttribArray Mozilla WebGLRenderingContextBase.disableVertexAttribArray documentation> 
-disableVertexAttribArray ::
-                         (MonadIO m, IsWebGLRenderingContextBase self) =>
-                           self -> GLuint -> m ()
-disableVertexAttribArray self index
-  = liftIO
-      (js_disableVertexAttribArray (toWebGLRenderingContextBase self)
-         index)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"drawArrays\"]($2, $3, $4); })"
-        js_drawArrays ::
-        WebGLRenderingContextBase -> GLenum -> GLint -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawArrays Mozilla WebGLRenderingContextBase.drawArrays documentation> 
-drawArrays ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> GLenum -> GLint -> GLsizei -> m ()
-drawArrays self mode first count
-  = liftIO
-      (js_drawArrays (toWebGLRenderingContextBase self) mode first count)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"drawElements\"]($2, $3, $4,\n$5); })" js_drawElements ::
-        WebGLRenderingContextBase ->
-          GLenum -> GLsizei -> GLenum -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawElements Mozilla WebGLRenderingContextBase.drawElements documentation> 
-drawElements ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> GLenum -> GLsizei -> GLenum -> GLintptr -> m ()
-drawElements self mode count type' offset
-  = liftIO
-      (js_drawElements (toWebGLRenderingContextBase self) mode count
-         type'
-         (fromIntegral offset))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"enable\"]($2); })" js_enable ::
-        WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enable Mozilla WebGLRenderingContextBase.enable documentation> 
-enable ::
-       (MonadIO m, IsWebGLRenderingContextBase self) =>
-         self -> GLenum -> m ()
-enable self cap
-  = liftIO (js_enable (toWebGLRenderingContextBase self) cap)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"enableVertexAttribArray\"]($2); })" js_enableVertexAttribArray ::
-        WebGLRenderingContextBase -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enableVertexAttribArray Mozilla WebGLRenderingContextBase.enableVertexAttribArray documentation> 
-enableVertexAttribArray ::
-                        (MonadIO m, IsWebGLRenderingContextBase self) =>
-                          self -> GLuint -> m ()
-enableVertexAttribArray self index
-  = liftIO
-      (js_enableVertexAttribArray (toWebGLRenderingContextBase self)
-         index)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"finish\"](); })" js_finish ::
-        WebGLRenderingContextBase -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.finish Mozilla WebGLRenderingContextBase.finish documentation> 
-finish ::
-       (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-finish self = liftIO (js_finish (toWebGLRenderingContextBase self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"flush\"](); })" js_flush ::
-        WebGLRenderingContextBase -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.flush Mozilla WebGLRenderingContextBase.flush documentation> 
-flush ::
-      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-flush self = liftIO (js_flush (toWebGLRenderingContextBase self))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"framebufferRenderbuffer\"]($2,\n$3, $4, $5); })"
-        js_framebufferRenderbuffer ::
-        WebGLRenderingContextBase ->
-          GLenum -> GLenum -> GLenum -> Optional WebGLRenderbuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferRenderbuffer Mozilla WebGLRenderingContextBase.framebufferRenderbuffer documentation> 
-framebufferRenderbuffer ::
-                        (MonadIO m, IsWebGLRenderingContextBase self) =>
-                          self ->
-                            GLenum -> GLenum -> GLenum -> Maybe WebGLRenderbuffer -> m ()
-framebufferRenderbuffer self target attachment renderbuffertarget
-  renderbuffer
-  = liftIO
-      (js_framebufferRenderbuffer (toWebGLRenderingContextBase self)
-         target
-         attachment
-         renderbuffertarget
-         (maybeToOptional renderbuffer))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"framebufferTexture2D\"]($2,\n$3, $4, $5, $6); })"
-        js_framebufferTexture2D ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLenum -> GLenum -> Optional WebGLTexture -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferTexture2D Mozilla WebGLRenderingContextBase.framebufferTexture2D documentation> 
-framebufferTexture2D ::
-                     (MonadIO m, IsWebGLRenderingContextBase self) =>
-                       self ->
-                         GLenum -> GLenum -> GLenum -> Maybe WebGLTexture -> GLint -> m ()
-framebufferTexture2D self target attachment textarget texture level
-  = liftIO
-      (js_framebufferTexture2D (toWebGLRenderingContextBase self) target
-         attachment
-         textarget
-         (maybeToOptional texture)
-         level)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"frontFace\"]($2); })"
-        js_frontFace :: WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.frontFace Mozilla WebGLRenderingContextBase.frontFace documentation> 
-frontFace ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> m ()
-frontFace self mode
-  = liftIO (js_frontFace (toWebGLRenderingContextBase self) mode)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"generateMipmap\"]($2); })"
-        js_generateMipmap :: WebGLRenderingContextBase -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.generateMipmap Mozilla WebGLRenderingContextBase.generateMipmap documentation> 
-generateMipmap ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> GLenum -> m ()
-generateMipmap self target
-  = liftIO
-      (js_generateMipmap (toWebGLRenderingContextBase self) target)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getActiveAttrib\"]($2, $3); })"
-        js_getActiveAttrib ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> GLuint -> IO WebGLActiveInfo
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
-getActiveAttrib ::
-                (MonadIO m, IsWebGLRenderingContextBase self) =>
-                  self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
-getActiveAttrib self program index
-  = liftIO
-      (js_getActiveAttrib (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
-getActiveAttrib_ ::
-                 (MonadIO m, IsWebGLRenderingContextBase self) =>
-                   self -> Maybe WebGLProgram -> GLuint -> m ()
-getActiveAttrib_ self program index
-  = liftIO
-      (void
-         (js_getActiveAttrib (toWebGLRenderingContextBase self)
-            (maybeToOptional program)
-            index))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getActiveUniform\"]($2, $3); })"
-        js_getActiveUniform ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> GLuint -> IO WebGLActiveInfo
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
-getActiveUniform ::
-                 (MonadIO m, IsWebGLRenderingContextBase self) =>
-                   self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
-getActiveUniform self program index
-  = liftIO
-      (js_getActiveUniform (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
-getActiveUniform_ ::
-                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                    self -> Maybe WebGLProgram -> GLuint -> m ()
-getActiveUniform_ self program index
-  = liftIO
-      (void
-         (js_getActiveUniform (toWebGLRenderingContextBase self)
-            (maybeToOptional program)
-            index))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getAttachedShaders\"]($2); })"
-        js_getAttachedShaders ::
-        WebGLRenderingContextBase -> Optional WebGLProgram -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttachedShaders Mozilla WebGLRenderingContextBase.getAttachedShaders documentation> 
-getAttachedShaders ::
-                   (MonadIO m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLProgram -> m (Maybe [WebGLShader])
-getAttachedShaders self program
-  = liftIO
-      ((js_getAttachedShaders (toWebGLRenderingContextBase self)
-          (maybeToOptional program))
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttachedShaders Mozilla WebGLRenderingContextBase.getAttachedShaders documentation> 
-getAttachedShaders_ ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self -> Maybe WebGLProgram -> m ()
-getAttachedShaders_ self program
-  = liftIO
-      (void
-         (js_getAttachedShaders (toWebGLRenderingContextBase self)
-            (maybeToOptional program)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getAttribLocation\"]($2, $3); })" js_getAttribLocation ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> JSString -> IO GLint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttribLocation Mozilla WebGLRenderingContextBase.getAttribLocation documentation> 
-getAttribLocation ::
-                  (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                    self -> Maybe WebGLProgram -> name -> m GLint
-getAttribLocation self program name
-  = liftIO
-      (js_getAttribLocation (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         (toJSString name))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttribLocation Mozilla WebGLRenderingContextBase.getAttribLocation documentation> 
-getAttribLocation_ ::
-                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                     self -> Maybe WebGLProgram -> name -> m ()
-getAttribLocation_ self program name
-  = liftIO
-      (void
-         (js_getAttribLocation (toWebGLRenderingContextBase self)
-            (maybeToOptional program)
-            (toJSString name)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getBufferParameter\"]($2, $3); })" js_getBufferParameter ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
-getBufferParameter ::
-                   (MonadIO m, IsWebGLRenderingContextBase self) =>
-                     self -> GLenum -> GLenum -> m JSVal
-getBufferParameter self target pname
-  = liftIO
-      (js_getBufferParameter (toWebGLRenderingContextBase self) target
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
-getBufferParameter_ ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLenum -> m ()
-getBufferParameter_ self target pname
-  = liftIO
-      (void
-         (js_getBufferParameter (toWebGLRenderingContextBase self) target
-            pname))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getContextAttributes\"](); })"
-        js_getContextAttributes ::
-        WebGLRenderingContextBase -> IO (Nullable WebGLContextAttributes)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributes ::
-                     (MonadIO m, IsWebGLRenderingContextBase self) =>
-                       self -> m (Maybe WebGLContextAttributes)
-getContextAttributes self
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getContextAttributes (toWebGLRenderingContextBase self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributes_ ::
-                      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-getContextAttributes_ self
-  = liftIO
-      (void (js_getContextAttributes (toWebGLRenderingContextBase self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributesUnsafe ::
-                           (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack) =>
-                             self -> m WebGLContextAttributes
-getContextAttributesUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getContextAttributes (toWebGLRenderingContextBase self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributesUnchecked ::
-                              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                                self -> m WebGLContextAttributes
-getContextAttributesUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getContextAttributes (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getError\"](); })" js_getError
-        :: WebGLRenderingContextBase -> IO GLenum
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getError Mozilla WebGLRenderingContextBase.getError documentation> 
-getError ::
-         (MonadIO m, IsWebGLRenderingContextBase self) => self -> m GLenum
-getError self
-  = liftIO (js_getError (toWebGLRenderingContextBase self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getError Mozilla WebGLRenderingContextBase.getError documentation> 
-getError_ ::
-          (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-getError_ self
-  = liftIO (void (js_getError (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getSupportedExtensions\"](); })"
-        js_getSupportedExtensions :: WebGLRenderingContextBase -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getSupportedExtensions Mozilla WebGLRenderingContextBase.getSupportedExtensions documentation> 
-getSupportedExtensions ::
-                       (MonadIO m, IsWebGLRenderingContextBase self,
-                        FromJSString result) =>
-                         self -> m (Maybe [result])
-getSupportedExtensions self
-  = liftIO
-      ((js_getSupportedExtensions (toWebGLRenderingContextBase self)) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getSupportedExtensions Mozilla WebGLRenderingContextBase.getSupportedExtensions documentation> 
-getSupportedExtensions_ ::
-                        (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-getSupportedExtensions_ self
-  = liftIO
-      (void
-         (js_getSupportedExtensions (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getExtension\"]($2); })"
-        js_getExtension ::
-        WebGLRenderingContextBase -> JSString -> IO (Nullable GObject)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtension ::
-             (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-               self -> name -> m (Maybe GObject)
-getExtension self name
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getExtension (toWebGLRenderingContextBase self)
-            (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtension_ ::
-              (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                self -> name -> m ()
-getExtension_ self name
-  = liftIO
-      (void
-         (js_getExtension (toWebGLRenderingContextBase self)
-            (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtensionUnsafe ::
-                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name,
-                    HasCallStack) =>
-                     self -> name -> m GObject
-getExtensionUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getExtension (toWebGLRenderingContextBase self)
-             (toJSString name)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtensionUnchecked ::
-                      (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                        self -> name -> m GObject
-getExtensionUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getExtension (toWebGLRenderingContextBase self)
-            (toJSString name)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"getFramebufferAttachmentParameter\"]($2,\n$3, $4); })"
-        js_getFramebufferAttachmentParameter ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getFramebufferAttachmentParameter Mozilla WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation> 
-getFramebufferAttachmentParameter ::
-                                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                                    self -> GLenum -> GLenum -> GLenum -> m JSVal
-getFramebufferAttachmentParameter self target attachment pname
-  = liftIO
-      (js_getFramebufferAttachmentParameter
-         (toWebGLRenderingContextBase self)
-         target
-         attachment
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getFramebufferAttachmentParameter Mozilla WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation> 
-getFramebufferAttachmentParameter_ ::
-                                   (MonadIO m, IsWebGLRenderingContextBase self) =>
-                                     self -> GLenum -> GLenum -> GLenum -> m ()
-getFramebufferAttachmentParameter_ self target attachment pname
-  = liftIO
-      (void
-         (js_getFramebufferAttachmentParameter
-            (toWebGLRenderingContextBase self)
-            target
-            attachment
-            pname))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getParameter\"]($2); })"
-        js_getParameter :: WebGLRenderingContextBase -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
-getParameter ::
-             (MonadIO m, IsWebGLRenderingContextBase self) =>
-               self -> GLenum -> m JSVal
-getParameter self pname
-  = liftIO (js_getParameter (toWebGLRenderingContextBase self) pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
-getParameter_ ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-getParameter_ self pname
-  = liftIO
-      (void (js_getParameter (toWebGLRenderingContextBase self) pname))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getProgramParameter\"]($2,\n$3); })" js_getProgramParameter ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramParameter Mozilla WebGLRenderingContextBase.getProgramParameter documentation> 
-getProgramParameter ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self -> Maybe WebGLProgram -> GLenum -> m JSVal
-getProgramParameter self program pname
-  = liftIO
-      (js_getProgramParameter (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramParameter Mozilla WebGLRenderingContextBase.getProgramParameter documentation> 
-getProgramParameter_ ::
-                     (MonadIO m, IsWebGLRenderingContextBase self) =>
-                       self -> Maybe WebGLProgram -> GLenum -> m ()
-getProgramParameter_ self program pname
-  = liftIO
-      (void
-         (js_getProgramParameter (toWebGLRenderingContextBase self)
-            (maybeToOptional program)
-            pname))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getProgramInfoLog\"]($2); })"
-        js_getProgramInfoLog ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLog ::
-                  (MonadIO m, IsWebGLRenderingContextBase self,
-                   FromJSString result) =>
-                    self -> Maybe WebGLProgram -> m (Maybe result)
-getProgramInfoLog self program
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getProgramInfoLog (toWebGLRenderingContextBase self)
-            (maybeToOptional program)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLog_ ::
-                   (MonadIO m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLProgram -> m ()
-getProgramInfoLog_ self program
-  = liftIO
-      (void
-         (js_getProgramInfoLog (toWebGLRenderingContextBase self)
-            (maybeToOptional program)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLogUnsafe ::
-                        (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack,
-                         FromJSString result) =>
-                          self -> Maybe WebGLProgram -> m result
-getProgramInfoLogUnsafe self program
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getProgramInfoLog (toWebGLRenderingContextBase self)
-             (maybeToOptional program)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLogUnchecked ::
-                           (MonadIO m, IsWebGLRenderingContextBase self,
-                            FromJSString result) =>
-                             self -> Maybe WebGLProgram -> m result
-getProgramInfoLogUnchecked self program
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getProgramInfoLog (toWebGLRenderingContextBase self)
-            (maybeToOptional program)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getRenderbufferParameter\"]($2,\n$3); })"
-        js_getRenderbufferParameter ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
-getRenderbufferParameter ::
-                         (MonadIO m, IsWebGLRenderingContextBase self) =>
-                           self -> GLenum -> GLenum -> m JSVal
-getRenderbufferParameter self target pname
-  = liftIO
-      (js_getRenderbufferParameter (toWebGLRenderingContextBase self)
-         target
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
-getRenderbufferParameter_ ::
-                          (MonadIO m, IsWebGLRenderingContextBase self) =>
-                            self -> GLenum -> GLenum -> m ()
-getRenderbufferParameter_ self target pname
-  = liftIO
-      (void
-         (js_getRenderbufferParameter (toWebGLRenderingContextBase self)
-            target
-            pname))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getShaderParameter\"]($2, $3); })" js_getShaderParameter ::
-        WebGLRenderingContextBase ->
-          Optional WebGLShader -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderParameter Mozilla WebGLRenderingContextBase.getShaderParameter documentation> 
-getShaderParameter ::
-                   (MonadIO m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLShader -> GLenum -> m JSVal
-getShaderParameter self shader pname
-  = liftIO
-      (js_getShaderParameter (toWebGLRenderingContextBase self)
-         (maybeToOptional shader)
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderParameter Mozilla WebGLRenderingContextBase.getShaderParameter documentation> 
-getShaderParameter_ ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self -> Maybe WebGLShader -> GLenum -> m ()
-getShaderParameter_ self shader pname
-  = liftIO
-      (void
-         (js_getShaderParameter (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)
-            pname))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getShaderInfoLog\"]($2); })"
-        js_getShaderInfoLog ::
-        WebGLRenderingContextBase ->
-          Optional WebGLShader -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLog ::
-                 (MonadIO m, IsWebGLRenderingContextBase self,
-                  FromJSString result) =>
-                   self -> Maybe WebGLShader -> m (Maybe result)
-getShaderInfoLog self shader
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getShaderInfoLog (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLog_ ::
-                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                    self -> Maybe WebGLShader -> m ()
-getShaderInfoLog_ self shader
-  = liftIO
-      (void
-         (js_getShaderInfoLog (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLogUnsafe ::
-                       (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack,
-                        FromJSString result) =>
-                         self -> Maybe WebGLShader -> m result
-getShaderInfoLogUnsafe self shader
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getShaderInfoLog (toWebGLRenderingContextBase self)
-             (maybeToOptional shader)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLogUnchecked ::
-                          (MonadIO m, IsWebGLRenderingContextBase self,
-                           FromJSString result) =>
-                            self -> Maybe WebGLShader -> m result
-getShaderInfoLogUnchecked self shader
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getShaderInfoLog (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getShaderPrecisionFormat\"]($2,\n$3); })"
-        js_getShaderPrecisionFormat ::
-        WebGLRenderingContextBase ->
-          GLenum -> GLenum -> IO WebGLShaderPrecisionFormat
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
-getShaderPrecisionFormat ::
-                         (MonadIO m, IsWebGLRenderingContextBase self) =>
-                           self -> GLenum -> GLenum -> m WebGLShaderPrecisionFormat
-getShaderPrecisionFormat self shadertype precisiontype
-  = liftIO
-      (js_getShaderPrecisionFormat (toWebGLRenderingContextBase self)
-         shadertype
-         precisiontype)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
-getShaderPrecisionFormat_ ::
-                          (MonadIO m, IsWebGLRenderingContextBase self) =>
-                            self -> GLenum -> GLenum -> m ()
-getShaderPrecisionFormat_ self shadertype precisiontype
-  = liftIO
-      (void
-         (js_getShaderPrecisionFormat (toWebGLRenderingContextBase self)
-            shadertype
-            precisiontype))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getShaderSource\"]($2); })"
-        js_getShaderSource ::
-        WebGLRenderingContextBase ->
-          Optional WebGLShader -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSource ::
-                (MonadIO m, IsWebGLRenderingContextBase self,
-                 FromJSString result) =>
-                  self -> Maybe WebGLShader -> m (Maybe result)
-getShaderSource self shader
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getShaderSource (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSource_ ::
-                 (MonadIO m, IsWebGLRenderingContextBase self) =>
-                   self -> Maybe WebGLShader -> m ()
-getShaderSource_ self shader
-  = liftIO
-      (void
-         (js_getShaderSource (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSourceUnsafe ::
-                      (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack,
-                       FromJSString result) =>
-                        self -> Maybe WebGLShader -> m result
-getShaderSourceUnsafe self shader
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getShaderSource (toWebGLRenderingContextBase self)
-             (maybeToOptional shader)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSourceUnchecked ::
-                         (MonadIO m, IsWebGLRenderingContextBase self,
-                          FromJSString result) =>
-                           self -> Maybe WebGLShader -> m result
-getShaderSourceUnchecked self shader
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getShaderSource (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getTexParameter\"]($2, $3); })"
-        js_getTexParameter ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
-getTexParameter ::
-                (MonadIO m, IsWebGLRenderingContextBase self) =>
-                  self -> GLenum -> GLenum -> m JSVal
-getTexParameter self target pname
-  = liftIO
-      (js_getTexParameter (toWebGLRenderingContextBase self) target
-         pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
-getTexParameter_ ::
-                 (MonadIO m, IsWebGLRenderingContextBase self) =>
-                   self -> GLenum -> GLenum -> m ()
-getTexParameter_ self target pname
-  = liftIO
-      (void
-         (js_getTexParameter (toWebGLRenderingContextBase self) target
-            pname))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getUniform\"]($2, $3); })"
-        js_getUniform ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> Optional WebGLUniformLocation -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniform Mozilla WebGLRenderingContextBase.getUniform documentation> 
-getUniform ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m JSVal
-getUniform self program location
-  = liftIO
-      (js_getUniform (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         (maybeToOptional location))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniform Mozilla WebGLRenderingContextBase.getUniform documentation> 
-getUniform_ ::
-            (MonadIO m, IsWebGLRenderingContextBase self) =>
-              self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m ()
-getUniform_ self program location
-  = liftIO
-      (void
-         (js_getUniform (toWebGLRenderingContextBase self)
-            (maybeToOptional program)
-            (maybeToOptional location)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getUniformLocation\"]($2, $3); })" js_getUniformLocation ::
-        WebGLRenderingContextBase ->
-          Optional WebGLProgram -> JSString -> IO WebGLUniformLocation
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
-getUniformLocation ::
-                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                     self -> Maybe WebGLProgram -> name -> m WebGLUniformLocation
-getUniformLocation self program name
-  = liftIO
-      (js_getUniformLocation (toWebGLRenderingContextBase self)
-         (maybeToOptional program)
-         (toJSString name))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
-getUniformLocation_ ::
-                    (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                      self -> Maybe WebGLProgram -> name -> m ()
-getUniformLocation_ self program name
-  = liftIO
-      (void
-         (js_getUniformLocation (toWebGLRenderingContextBase self)
-            (maybeToOptional program)
-            (toJSString name)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getVertexAttrib\"]($2, $3); })"
-        js_getVertexAttrib ::
-        WebGLRenderingContextBase -> GLuint -> GLenum -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
-getVertexAttrib ::
-                (MonadIO m, IsWebGLRenderingContextBase self) =>
-                  self -> GLuint -> GLenum -> m JSVal
-getVertexAttrib self index pname
-  = liftIO
-      (js_getVertexAttrib (toWebGLRenderingContextBase self) index pname)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
-getVertexAttrib_ ::
-                 (MonadIO m, IsWebGLRenderingContextBase self) =>
-                   self -> GLuint -> GLenum -> m ()
-getVertexAttrib_ self index pname
-  = liftIO
-      (void
-         (js_getVertexAttrib (toWebGLRenderingContextBase self) index
-            pname))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getVertexAttribOffset\"]($2,\n$3); })" js_getVertexAttribOffset
-        :: WebGLRenderingContextBase -> GLuint -> GLenum -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttribOffset Mozilla WebGLRenderingContextBase.getVertexAttribOffset documentation> 
-getVertexAttribOffset ::
-                      (MonadIO m, IsWebGLRenderingContextBase self) =>
-                        self -> GLuint -> GLenum -> m GLsizeiptr
-getVertexAttribOffset self index pname
-  = liftIO
-      (round <$>
-         (js_getVertexAttribOffset (toWebGLRenderingContextBase self) index
-            pname))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttribOffset Mozilla WebGLRenderingContextBase.getVertexAttribOffset documentation> 
-getVertexAttribOffset_ ::
-                       (MonadIO m, IsWebGLRenderingContextBase self) =>
-                         self -> GLuint -> GLenum -> m ()
-getVertexAttribOffset_ self index pname
-  = liftIO
-      (void
-         (js_getVertexAttribOffset (toWebGLRenderingContextBase self) index
-            pname))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"hint\"]($2, $3); })" js_hint ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.hint Mozilla WebGLRenderingContextBase.hint documentation> 
-hint ::
-     (MonadIO m, IsWebGLRenderingContextBase self) =>
-       self -> GLenum -> GLenum -> m ()
-hint self target mode
-  = liftIO (js_hint (toWebGLRenderingContextBase self) target mode)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isBuffer\"]($2); })" js_isBuffer
-        ::
-        WebGLRenderingContextBase -> Optional WebGLBuffer -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isBuffer Mozilla WebGLRenderingContextBase.isBuffer documentation> 
-isBuffer ::
-         (MonadIO m, IsWebGLRenderingContextBase self) =>
-           self -> Maybe WebGLBuffer -> m GLboolean
-isBuffer self buffer
-  = liftIO
-      (js_isBuffer (toWebGLRenderingContextBase self)
-         (maybeToOptional buffer))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isBuffer Mozilla WebGLRenderingContextBase.isBuffer documentation> 
-isBuffer_ ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLBuffer -> m ()
-isBuffer_ self buffer
-  = liftIO
-      (void
-         (js_isBuffer (toWebGLRenderingContextBase self)
-            (maybeToOptional buffer)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"isContextLost\"](); })"
-        js_isContextLost :: WebGLRenderingContextBase -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isContextLost Mozilla WebGLRenderingContextBase.isContextLost documentation> 
-isContextLost ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> m GLboolean
-isContextLost self
-  = liftIO (js_isContextLost (toWebGLRenderingContextBase self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isContextLost Mozilla WebGLRenderingContextBase.isContextLost documentation> 
-isContextLost_ ::
-               (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-isContextLost_ self
-  = liftIO
-      (void (js_isContextLost (toWebGLRenderingContextBase self)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isEnabled\"]($2); })"
-        js_isEnabled :: WebGLRenderingContextBase -> GLenum -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isEnabled Mozilla WebGLRenderingContextBase.isEnabled documentation> 
-isEnabled ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> m GLboolean
-isEnabled self cap
-  = liftIO (js_isEnabled (toWebGLRenderingContextBase self) cap)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isEnabled Mozilla WebGLRenderingContextBase.isEnabled documentation> 
-isEnabled_ ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> GLenum -> m ()
-isEnabled_ self cap
-  = liftIO
-      (void (js_isEnabled (toWebGLRenderingContextBase self) cap))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isFramebuffer\"]($2); })"
-        js_isFramebuffer ::
-        WebGLRenderingContextBase ->
-          Optional WebGLFramebuffer -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isFramebuffer Mozilla WebGLRenderingContextBase.isFramebuffer documentation> 
-isFramebuffer ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLFramebuffer -> m GLboolean
-isFramebuffer self framebuffer
-  = liftIO
-      (js_isFramebuffer (toWebGLRenderingContextBase self)
-         (maybeToOptional framebuffer))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isFramebuffer Mozilla WebGLRenderingContextBase.isFramebuffer documentation> 
-isFramebuffer_ ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> Maybe WebGLFramebuffer -> m ()
-isFramebuffer_ self framebuffer
-  = liftIO
-      (void
-         (js_isFramebuffer (toWebGLRenderingContextBase self)
-            (maybeToOptional framebuffer)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isProgram\"]($2); })"
-        js_isProgram ::
-        WebGLRenderingContextBase -> Optional WebGLProgram -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isProgram Mozilla WebGLRenderingContextBase.isProgram documentation> 
-isProgram ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLProgram -> m GLboolean
-isProgram self program
-  = liftIO
-      (js_isProgram (toWebGLRenderingContextBase self)
-         (maybeToOptional program))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isProgram Mozilla WebGLRenderingContextBase.isProgram documentation> 
-isProgram_ ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLProgram -> m ()
-isProgram_ self program
-  = liftIO
-      (void
-         (js_isProgram (toWebGLRenderingContextBase self)
-            (maybeToOptional program)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isRenderbuffer\"]($2); })"
-        js_isRenderbuffer ::
-        WebGLRenderingContextBase ->
-          Optional WebGLRenderbuffer -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isRenderbuffer Mozilla WebGLRenderingContextBase.isRenderbuffer documentation> 
-isRenderbuffer ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> Maybe WebGLRenderbuffer -> m GLboolean
-isRenderbuffer self renderbuffer
-  = liftIO
-      (js_isRenderbuffer (toWebGLRenderingContextBase self)
-         (maybeToOptional renderbuffer))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isRenderbuffer Mozilla WebGLRenderingContextBase.isRenderbuffer documentation> 
-isRenderbuffer_ ::
-                (MonadIO m, IsWebGLRenderingContextBase self) =>
-                  self -> Maybe WebGLRenderbuffer -> m ()
-isRenderbuffer_ self renderbuffer
-  = liftIO
-      (void
-         (js_isRenderbuffer (toWebGLRenderingContextBase self)
-            (maybeToOptional renderbuffer)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isShader\"]($2); })" js_isShader
-        ::
-        WebGLRenderingContextBase -> Optional WebGLShader -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isShader Mozilla WebGLRenderingContextBase.isShader documentation> 
-isShader ::
-         (MonadIO m, IsWebGLRenderingContextBase self) =>
-           self -> Maybe WebGLShader -> m GLboolean
-isShader self shader
-  = liftIO
-      (js_isShader (toWebGLRenderingContextBase self)
-         (maybeToOptional shader))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isShader Mozilla WebGLRenderingContextBase.isShader documentation> 
-isShader_ ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLShader -> m ()
-isShader_ self shader
-  = liftIO
-      (void
-         (js_isShader (toWebGLRenderingContextBase self)
-            (maybeToOptional shader)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"isTexture\"]($2); })"
-        js_isTexture ::
-        WebGLRenderingContextBase -> Optional WebGLTexture -> IO GLboolean
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isTexture Mozilla WebGLRenderingContextBase.isTexture documentation> 
-isTexture ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLTexture -> m GLboolean
-isTexture self texture
-  = liftIO
-      (js_isTexture (toWebGLRenderingContextBase self)
-         (maybeToOptional texture))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isTexture Mozilla WebGLRenderingContextBase.isTexture documentation> 
-isTexture_ ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLTexture -> m ()
-isTexture_ self texture
-  = liftIO
-      (void
-         (js_isTexture (toWebGLRenderingContextBase self)
-            (maybeToOptional texture)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"lineWidth\"]($2); })"
-        js_lineWidth :: WebGLRenderingContextBase -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.lineWidth Mozilla WebGLRenderingContextBase.lineWidth documentation> 
-lineWidth ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLfloat -> m ()
-lineWidth self width
-  = liftIO (js_lineWidth (toWebGLRenderingContextBase self) width)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"linkProgram\"]($2); })"
-        js_linkProgram ::
-        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.linkProgram Mozilla WebGLRenderingContextBase.linkProgram documentation> 
-linkProgram ::
-            (MonadIO m, IsWebGLRenderingContextBase self) =>
-              self -> Maybe WebGLProgram -> m ()
-linkProgram self program
-  = liftIO
-      (js_linkProgram (toWebGLRenderingContextBase self)
-         (maybeToOptional program))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"pixelStorei\"]($2, $3); })"
-        js_pixelStorei ::
-        WebGLRenderingContextBase -> GLenum -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.pixelStorei Mozilla WebGLRenderingContextBase.pixelStorei documentation> 
-pixelStorei ::
-            (MonadIO m, IsWebGLRenderingContextBase self) =>
-              self -> GLenum -> GLint -> m ()
-pixelStorei self pname param
-  = liftIO
-      (js_pixelStorei (toWebGLRenderingContextBase self) pname param)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"polygonOffset\"]($2, $3); })"
-        js_polygonOffset ::
-        WebGLRenderingContextBase -> GLfloat -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.polygonOffset Mozilla WebGLRenderingContextBase.polygonOffset documentation> 
-polygonOffset ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLfloat -> GLfloat -> m ()
-polygonOffset self factor units
-  = liftIO
-      (js_polygonOffset (toWebGLRenderingContextBase self) factor units)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"readPixels\"]($2, $3, $4, $5,\n$6, $7, $8); })" js_readPixels ::
-        WebGLRenderingContextBase ->
-          GLint ->
-            GLint ->
-              GLsizei -> GLsizei -> GLenum -> GLenum -> ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.readPixels Mozilla WebGLRenderingContextBase.readPixels documentation> 
-readPixels ::
-           (MonadIO m, IsWebGLRenderingContextBase self,
-            IsArrayBufferView pixels) =>
-             self ->
-               GLint ->
-                 GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> pixels -> m ()
-readPixels self x y width height format type' pixels
-  = liftIO
-      (js_readPixels (toWebGLRenderingContextBase self) x y width height
-         format
-         type'
-         (toArrayBufferView pixels))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"releaseShaderCompiler\"](); })"
-        js_releaseShaderCompiler :: WebGLRenderingContextBase -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.releaseShaderCompiler Mozilla WebGLRenderingContextBase.releaseShaderCompiler documentation> 
-releaseShaderCompiler ::
-                      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
-releaseShaderCompiler self
-  = liftIO
-      (js_releaseShaderCompiler (toWebGLRenderingContextBase self))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"renderbufferStorage\"]($2,\n$3, $4, $5); })"
-        js_renderbufferStorage ::
-        WebGLRenderingContextBase ->
-          GLenum -> GLenum -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.renderbufferStorage Mozilla WebGLRenderingContextBase.renderbufferStorage documentation> 
-renderbufferStorage ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
-renderbufferStorage self target internalformat width height
-  = liftIO
-      (js_renderbufferStorage (toWebGLRenderingContextBase self) target
-         internalformat
-         width
-         height)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"sampleCoverage\"]($2, $3); })"
-        js_sampleCoverage ::
-        WebGLRenderingContextBase -> GLclampf -> GLboolean -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.sampleCoverage Mozilla WebGLRenderingContextBase.sampleCoverage documentation> 
-sampleCoverage ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> GLclampf -> GLboolean -> m ()
-sampleCoverage self value invert
-  = liftIO
-      (js_sampleCoverage (toWebGLRenderingContextBase self) value invert)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"scissor\"]($2, $3, $4, $5); })"
-        js_scissor ::
-        WebGLRenderingContextBase ->
-          GLint -> GLint -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.scissor Mozilla WebGLRenderingContextBase.scissor documentation> 
-scissor ::
-        (MonadIO m, IsWebGLRenderingContextBase self) =>
-          self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-scissor self x y width height
-  = liftIO
-      (js_scissor (toWebGLRenderingContextBase self) x y width height)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"shaderSource\"]($2, $3); })"
-        js_shaderSource ::
-        WebGLRenderingContextBase ->
-          Optional WebGLShader -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.shaderSource Mozilla WebGLRenderingContextBase.shaderSource documentation> 
-shaderSource ::
-             (MonadIO m, IsWebGLRenderingContextBase self, ToJSString string) =>
-               self -> Maybe WebGLShader -> string -> m ()
-shaderSource self shader string
-  = liftIO
-      (js_shaderSource (toWebGLRenderingContextBase self)
-         (maybeToOptional shader)
-         (toJSString string))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"stencilFunc\"]($2, $3, $4); })"
-        js_stencilFunc ::
-        WebGLRenderingContextBase -> GLenum -> GLint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFunc Mozilla WebGLRenderingContextBase.stencilFunc documentation> 
-stencilFunc ::
-            (MonadIO m, IsWebGLRenderingContextBase self) =>
-              self -> GLenum -> GLint -> GLuint -> m ()
-stencilFunc self func ref mask
-  = liftIO
-      (js_stencilFunc (toWebGLRenderingContextBase self) func ref mask)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"stencilFuncSeparate\"]($2,\n$3, $4, $5); })"
-        js_stencilFuncSeparate ::
-        WebGLRenderingContextBase ->
-          GLenum -> GLenum -> GLint -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFuncSeparate Mozilla WebGLRenderingContextBase.stencilFuncSeparate documentation> 
-stencilFuncSeparate ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLenum -> GLint -> GLuint -> m ()
-stencilFuncSeparate self face func ref mask
-  = liftIO
-      (js_stencilFuncSeparate (toWebGLRenderingContextBase self) face
-         func
-         ref
-         mask)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"stencilMask\"]($2); })"
-        js_stencilMask :: WebGLRenderingContextBase -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMask Mozilla WebGLRenderingContextBase.stencilMask documentation> 
-stencilMask ::
-            (MonadIO m, IsWebGLRenderingContextBase self) =>
-              self -> GLuint -> m ()
-stencilMask self mask
-  = liftIO (js_stencilMask (toWebGLRenderingContextBase self) mask)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"stencilMaskSeparate\"]($2,\n$3); })" js_stencilMaskSeparate ::
-        WebGLRenderingContextBase -> GLenum -> GLuint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMaskSeparate Mozilla WebGLRenderingContextBase.stencilMaskSeparate documentation> 
-stencilMaskSeparate ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLuint -> m ()
-stencilMaskSeparate self face mask
-  = liftIO
-      (js_stencilMaskSeparate (toWebGLRenderingContextBase self) face
-         mask)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"stencilOp\"]($2, $3, $4); })"
-        js_stencilOp ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOp Mozilla WebGLRenderingContextBase.stencilOp documentation> 
-stencilOp ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> GLenum -> GLenum -> m ()
-stencilOp self fail zfail zpass
-  = liftIO
-      (js_stencilOp (toWebGLRenderingContextBase self) fail zfail zpass)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"stencilOpSeparate\"]($2, $3,\n$4, $5); })" js_stencilOpSeparate
-        ::
-        WebGLRenderingContextBase ->
-          GLenum -> GLenum -> GLenum -> GLenum -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOpSeparate Mozilla WebGLRenderingContextBase.stencilOpSeparate documentation> 
-stencilOpSeparate ::
-                  (MonadIO m, IsWebGLRenderingContextBase self) =>
-                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
-stencilOpSeparate self face fail zfail zpass
-  = liftIO
-      (js_stencilOpSeparate (toWebGLRenderingContextBase self) face fail
-         zfail
-         zpass)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"texParameterf\"]($2, $3, $4); })" js_texParameterf ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameterf Mozilla WebGLRenderingContextBase.texParameterf documentation> 
-texParameterf ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> GLenum -> GLfloat -> m ()
-texParameterf self target pname param
-  = liftIO
-      (js_texParameterf (toWebGLRenderingContextBase self) target pname
-         param)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"texParameteri\"]($2, $3, $4); })" js_texParameteri ::
-        WebGLRenderingContextBase -> GLenum -> GLenum -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameteri Mozilla WebGLRenderingContextBase.texParameteri documentation> 
-texParameteri ::
-              (MonadIO m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> GLenum -> GLint -> m ()
-texParameteri self target pname param
-  = liftIO
-      (js_texParameteri (toWebGLRenderingContextBase self) target pname
-         param)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10); })"
-        js_texImage2DView ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLenum ->
-                GLsizei ->
-                  GLsizei ->
-                    GLint -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
-texImage2DView ::
-               (MonadIO m, IsWebGLRenderingContextBase self,
-                IsArrayBufferView pixels) =>
-                 self ->
-                   GLenum ->
-                     GLint ->
-                       GLenum ->
-                         GLsizei ->
-                           GLsizei -> GLint -> GLenum -> GLenum -> Maybe pixels -> m ()
-texImage2DView self target level internalformat width height border
-  format type' pixels
-  = liftIO
-      (js_texImage2DView (toWebGLRenderingContextBase self) target level
-         internalformat
-         width
-         height
-         border
-         format
-         type'
-         (maybeToOptional (fmap toArrayBufferView pixels)))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7); })" js_texImage2D ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLenum -> GLenum -> GLenum -> Optional TexImageSource -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
-texImage2D ::
-           (MonadIO m, IsWebGLRenderingContextBase self,
-            IsTexImageSource source) =>
-             self ->
-               GLenum ->
-                 GLint -> GLenum -> GLenum -> GLenum -> Maybe source -> m ()
-texImage2D self target level internalformat format type' source
-  = liftIO
-      (js_texImage2D (toWebGLRenderingContextBase self) target level
-         internalformat
-         format
-         type'
-         (maybeToOptional (fmap toTexImageSource source)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10); })"
-        js_texSubImage2DView ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLint ->
-                  GLsizei ->
-                    GLsizei -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
-texSubImage2DView ::
-                  (MonadIO m, IsWebGLRenderingContextBase self,
-                   IsArrayBufferView pixels) =>
-                    self ->
-                      GLenum ->
-                        GLint ->
-                          GLint ->
-                            GLint ->
-                              GLsizei -> GLsizei -> GLenum -> GLenum -> Maybe pixels -> m ()
-texSubImage2DView self target level xoffset yoffset width height
-  format type' pixels
-  = liftIO
-      (js_texSubImage2DView (toWebGLRenderingContextBase self) target
-         level
-         xoffset
-         yoffset
-         width
-         height
-         format
-         type'
-         (maybeToOptional (fmap toArrayBufferView pixels)))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8); })"
-        js_texSubImage2D ::
-        WebGLRenderingContextBase ->
-          GLenum ->
-            GLint ->
-              GLint ->
-                GLint -> GLenum -> GLenum -> Optional TexImageSource -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
-texSubImage2D ::
-              (MonadIO m, IsWebGLRenderingContextBase self,
-               IsTexImageSource source) =>
-                self ->
-                  GLenum ->
-                    GLint -> GLint -> GLint -> GLenum -> GLenum -> Maybe source -> m ()
-texSubImage2D self target level xoffset yoffset format type' source
-  = liftIO
-      (js_texSubImage2D (toWebGLRenderingContextBase self) target level
-         xoffset
-         yoffset
-         format
-         type'
-         (maybeToOptional (fmap toTexImageSource source)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1f\"]($2, $3); })"
-        js_uniform1f ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1f Mozilla WebGLRenderingContextBase.uniform1f documentation> 
-uniform1f ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLfloat -> m ()
-uniform1f self location x
-  = liftIO
-      (js_uniform1f (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"uniform2f\"]($2, $3, $4); })"
-        js_uniform2f ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLfloat -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2f Mozilla WebGLRenderingContextBase.uniform2f documentation> 
-uniform2f ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> m ()
-uniform2f self location x y
-  = liftIO
-      (js_uniform2f (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x
-         y)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"uniform3f\"]($2, $3, $4, $5); })" js_uniform3f ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation ->
-            GLfloat -> GLfloat -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3f Mozilla WebGLRenderingContextBase.uniform3f documentation> 
-uniform3f ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> GLfloat -> m ()
-uniform3f self location x y z
-  = liftIO
-      (js_uniform3f (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x
-         y
-         z)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4f\"]($2, $3, $4, $5,\n$6); })" js_uniform4f ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation ->
-            GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4f Mozilla WebGLRenderingContextBase.uniform4f documentation> 
-uniform4f ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation ->
-                GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
-uniform4f self location x y z w
-  = liftIO
-      (js_uniform4f (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x
-         y
-         z
-         w)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1i\"]($2, $3); })"
-        js_uniform1i ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1i Mozilla WebGLRenderingContextBase.uniform1i documentation> 
-uniform1i ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLint -> m ()
-uniform1i self location x
-  = liftIO
-      (js_uniform1i (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"uniform2i\"]($2, $3, $4); })"
-        js_uniform2i ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLint -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2i Mozilla WebGLRenderingContextBase.uniform2i documentation> 
-uniform2i ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLint -> GLint -> m ()
-uniform2i self location x y
-  = liftIO
-      (js_uniform2i (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x
-         y)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"uniform3i\"]($2, $3, $4, $5); })" js_uniform3i ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLint -> GLint -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3i Mozilla WebGLRenderingContextBase.uniform3i documentation> 
-uniform3i ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation -> GLint -> GLint -> GLint -> m ()
-uniform3i self location x y z
-  = liftIO
-      (js_uniform3i (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x
-         y
-         z)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4i\"]($2, $3, $4, $5,\n$6); })" js_uniform4i ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation ->
-            GLint -> GLint -> GLint -> GLint -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4i Mozilla WebGLRenderingContextBase.uniform4i documentation> 
-uniform4i ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation ->
-                GLint -> GLint -> GLint -> GLint -> m ()
-uniform4i self location x y z w
-  = liftIO
-      (js_uniform4i (toWebGLRenderingContextBase self)
-         (maybeToOptional location)
-         x
-         y
-         z
-         w)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1fv\"]($2, $3); })"
-        js_uniform1fv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1fv Mozilla WebGLRenderingContextBase.uniform1fv documentation> 
-uniform1fv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform1fv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform1fv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Float32List v'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform2fv\"]($2, $3); })"
-        js_uniform2fv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2fv Mozilla WebGLRenderingContextBase.uniform2fv documentation> 
-uniform2fv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform2fv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform2fv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Float32List v'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform3fv\"]($2, $3); })"
-        js_uniform3fv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3fv Mozilla WebGLRenderingContextBase.uniform3fv documentation> 
-uniform3fv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform3fv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform3fv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Float32List v'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform4fv\"]($2, $3); })"
-        js_uniform4fv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4fv Mozilla WebGLRenderingContextBase.uniform4fv documentation> 
-uniform4fv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform4fv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform4fv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Float32List v'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1iv\"]($2, $3); })"
-        js_uniform1iv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Int32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1iv Mozilla WebGLRenderingContextBase.uniform1iv documentation> 
-uniform1iv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform1iv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform1iv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Int32List v'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform2iv\"]($2, $3); })"
-        js_uniform2iv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Int32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2iv Mozilla WebGLRenderingContextBase.uniform2iv documentation> 
-uniform2iv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform2iv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform2iv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Int32List v'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform3iv\"]($2, $3); })"
-        js_uniform3iv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Int32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3iv Mozilla WebGLRenderingContextBase.uniform3iv documentation> 
-uniform3iv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform3iv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform3iv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Int32List v'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform4iv\"]($2, $3); })"
-        js_uniform4iv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> Int32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4iv Mozilla WebGLRenderingContextBase.uniform4iv documentation> 
-uniform4iv ::
-           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform4iv self location v
-  = liftIO
-      (toJSVal v >>=
-         \ v' ->
-           js_uniform4iv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             (Int32List v'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2fv\"]($2, $3,\n$4); })" js_uniformMatrix2fv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLboolean -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix2fv Mozilla WebGLRenderingContextBase.uniformMatrix2fv documentation> 
-uniformMatrix2fv ::
-                 (MonadIO m, IsWebGLRenderingContextBase self,
-                  IsFloat32List array) =>
-                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
-uniformMatrix2fv self location transpose array
-  = liftIO
-      (toJSVal array >>=
-         \ array' ->
-           js_uniformMatrix2fv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             transpose
-             (Float32List array'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3fv\"]($2, $3,\n$4); })" js_uniformMatrix3fv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLboolean -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix3fv Mozilla WebGLRenderingContextBase.uniformMatrix3fv documentation> 
-uniformMatrix3fv ::
-                 (MonadIO m, IsWebGLRenderingContextBase self,
-                  IsFloat32List array) =>
-                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
-uniformMatrix3fv self location transpose array
-  = liftIO
-      (toJSVal array >>=
-         \ array' ->
-           js_uniformMatrix3fv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             transpose
-             (Float32List array'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4fv\"]($2, $3,\n$4); })" js_uniformMatrix4fv ::
-        WebGLRenderingContextBase ->
-          Optional WebGLUniformLocation -> GLboolean -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix4fv Mozilla WebGLRenderingContextBase.uniformMatrix4fv documentation> 
-uniformMatrix4fv ::
-                 (MonadIO m, IsWebGLRenderingContextBase self,
-                  IsFloat32List array) =>
-                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
-uniformMatrix4fv self location transpose array
-  = liftIO
-      (toJSVal array >>=
-         \ array' ->
-           js_uniformMatrix4fv (toWebGLRenderingContextBase self)
-             (maybeToOptional location)
-             transpose
-             (Float32List array'))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"useProgram\"]($2); })"
-        js_useProgram ::
-        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.useProgram Mozilla WebGLRenderingContextBase.useProgram documentation> 
-useProgram ::
-           (MonadIO m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLProgram -> m ()
-useProgram self program
-  = liftIO
-      (js_useProgram (toWebGLRenderingContextBase self)
-         (maybeToOptional program))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"validateProgram\"]($2); })"
-        js_validateProgram ::
-        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.validateProgram Mozilla WebGLRenderingContextBase.validateProgram documentation> 
-validateProgram ::
-                (MonadIO m, IsWebGLRenderingContextBase self) =>
-                  self -> Maybe WebGLProgram -> m ()
-validateProgram self program
-  = liftIO
-      (js_validateProgram (toWebGLRenderingContextBase self)
-         (maybeToOptional program))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib1f\"]($2, $3); })"
-        js_vertexAttrib1f ::
-        WebGLRenderingContextBase -> GLuint -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1f Mozilla WebGLRenderingContextBase.vertexAttrib1f documentation> 
-vertexAttrib1f ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> m ()
-vertexAttrib1f self index x
-  = liftIO
-      (js_vertexAttrib1f (toWebGLRenderingContextBase self) index x)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"vertexAttrib2f\"]($2, $3, $4); })" js_vertexAttrib2f ::
-        WebGLRenderingContextBase -> GLuint -> GLfloat -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2f Mozilla WebGLRenderingContextBase.vertexAttrib2f documentation> 
-vertexAttrib2f ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> GLfloat -> m ()
-vertexAttrib2f self index x y
-  = liftIO
-      (js_vertexAttrib2f (toWebGLRenderingContextBase self) index x y)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"vertexAttrib3f\"]($2, $3, $4,\n$5); })" js_vertexAttrib3f ::
-        WebGLRenderingContextBase ->
-          GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3f Mozilla WebGLRenderingContextBase.vertexAttrib3f documentation> 
-vertexAttrib3f ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
-vertexAttrib3f self index x y z
-  = liftIO
-      (js_vertexAttrib3f (toWebGLRenderingContextBase self) index x y z)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttrib4f\"]($2, $3, $4,\n$5, $6); })" js_vertexAttrib4f ::
-        WebGLRenderingContextBase ->
-          GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4f Mozilla WebGLRenderingContextBase.vertexAttrib4f documentation> 
-vertexAttrib4f ::
-               (MonadIO m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
-vertexAttrib4f self index x y z w
-  = liftIO
-      (js_vertexAttrib4f (toWebGLRenderingContextBase self) index x y z
-         w)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib1fv\"]($2, $3); })"
-        js_vertexAttrib1fv ::
-        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1fv Mozilla WebGLRenderingContextBase.vertexAttrib1fv documentation> 
-vertexAttrib1fv ::
-                (MonadIO m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib1fv self index values
-  = liftIO
-      (toJSVal values >>=
-         \ values' ->
-           js_vertexAttrib1fv (toWebGLRenderingContextBase self) index
-             (Float32List values'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib2fv\"]($2, $3); })"
-        js_vertexAttrib2fv ::
-        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2fv Mozilla WebGLRenderingContextBase.vertexAttrib2fv documentation> 
-vertexAttrib2fv ::
-                (MonadIO m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib2fv self index values
-  = liftIO
-      (toJSVal values >>=
-         \ values' ->
-           js_vertexAttrib2fv (toWebGLRenderingContextBase self) index
-             (Float32List values'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib3fv\"]($2, $3); })"
-        js_vertexAttrib3fv ::
-        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3fv Mozilla WebGLRenderingContextBase.vertexAttrib3fv documentation> 
-vertexAttrib3fv ::
-                (MonadIO m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib3fv self index values
-  = liftIO
-      (toJSVal values >>=
-         \ values' ->
-           js_vertexAttrib3fv (toWebGLRenderingContextBase self) index
-             (Float32List values'))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib4fv\"]($2, $3); })"
-        js_vertexAttrib4fv ::
-        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4fv Mozilla WebGLRenderingContextBase.vertexAttrib4fv documentation> 
-vertexAttrib4fv ::
-                (MonadIO m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib4fv self index values
-  = liftIO
-      (toJSVal values >>=
-         \ values' ->
-           js_vertexAttrib4fv (toWebGLRenderingContextBase self) index
-             (Float32List values'))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"vertexAttribPointer\"]($2,\n$3, $4, $5, $6, $7); })"
-        js_vertexAttribPointer ::
-        WebGLRenderingContextBase ->
-          GLuint ->
-            GLint -> GLenum -> GLboolean -> GLsizei -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttribPointer Mozilla WebGLRenderingContextBase.vertexAttribPointer documentation> 
-vertexAttribPointer ::
-                    (MonadIO m, IsWebGLRenderingContextBase self) =>
-                      self ->
-                        GLuint ->
-                          GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> m ()
-vertexAttribPointer self indx size type' normalized stride offset
-  = liftIO
-      (js_vertexAttribPointer (toWebGLRenderingContextBase self) indx
-         size
-         type'
-         normalized
-         stride
-         (fromIntegral offset))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"viewport\"]($2, $3, $4, $5); })"
-        js_viewport ::
-        WebGLRenderingContextBase ->
-          GLint -> GLint -> GLsizei -> GLsizei -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.viewport Mozilla WebGLRenderingContextBase.viewport documentation> 
-viewport ::
-         (MonadIO m, IsWebGLRenderingContextBase self) =>
-           self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-viewport self x y width height
-  = liftIO
-      (js_viewport (toWebGLRenderingContextBase self) x y width height)
-pattern DEPTH_BUFFER_BIT = 256
-pattern STENCIL_BUFFER_BIT = 1024
-pattern COLOR_BUFFER_BIT = 16384
-pattern POINTS = 0
-pattern LINES = 1
-pattern LINE_LOOP = 2
-pattern LINE_STRIP = 3
-pattern TRIANGLES = 4
-pattern TRIANGLE_STRIP = 5
-pattern TRIANGLE_FAN = 6
-pattern ZERO = 0
-pattern ONE = 1
-pattern SRC_COLOR = 768
-pattern ONE_MINUS_SRC_COLOR = 769
-pattern SRC_ALPHA = 770
-pattern ONE_MINUS_SRC_ALPHA = 771
-pattern DST_ALPHA = 772
-pattern ONE_MINUS_DST_ALPHA = 773
-pattern DST_COLOR = 774
-pattern ONE_MINUS_DST_COLOR = 775
-pattern SRC_ALPHA_SATURATE = 776
-pattern FUNC_ADD = 32774
-pattern BLEND_EQUATION = 32777
-pattern BLEND_EQUATION_RGB = 32777
-pattern BLEND_EQUATION_ALPHA = 34877
-pattern FUNC_SUBTRACT = 32778
-pattern FUNC_REVERSE_SUBTRACT = 32779
-pattern BLEND_DST_RGB = 32968
-pattern BLEND_SRC_RGB = 32969
-pattern BLEND_DST_ALPHA = 32970
-pattern BLEND_SRC_ALPHA = 32971
-pattern CONSTANT_COLOR = 32769
-pattern ONE_MINUS_CONSTANT_COLOR = 32770
-pattern CONSTANT_ALPHA = 32771
-pattern ONE_MINUS_CONSTANT_ALPHA = 32772
-pattern BLEND_COLOR = 32773
-pattern ARRAY_BUFFER = 34962
-pattern ELEMENT_ARRAY_BUFFER = 34963
-pattern ARRAY_BUFFER_BINDING = 34964
-pattern ELEMENT_ARRAY_BUFFER_BINDING = 34965
-pattern STREAM_DRAW = 35040
-pattern STATIC_DRAW = 35044
-pattern DYNAMIC_DRAW = 35048
-pattern BUFFER_SIZE = 34660
-pattern BUFFER_USAGE = 34661
-pattern CURRENT_VERTEX_ATTRIB = 34342
-pattern FRONT = 1028
-pattern BACK = 1029
-pattern FRONT_AND_BACK = 1032
-pattern TEXTURE_2D = 3553
-pattern CULL_FACE = 2884
-pattern BLEND = 3042
-pattern DITHER = 3024
-pattern STENCIL_TEST = 2960
-pattern DEPTH_TEST = 2929
-pattern SCISSOR_TEST = 3089
-pattern POLYGON_OFFSET_FILL = 32823
-pattern SAMPLE_ALPHA_TO_COVERAGE = 32926
-pattern SAMPLE_COVERAGE = 32928
-pattern NO_ERROR = 0
-pattern INVALID_ENUM = 1280
-pattern INVALID_VALUE = 1281
-pattern INVALID_OPERATION = 1282
-pattern OUT_OF_MEMORY = 1285
-pattern CW = 2304
-pattern CCW = 2305
-pattern LINE_WIDTH = 2849
-pattern ALIASED_POINT_SIZE_RANGE = 33901
-pattern ALIASED_LINE_WIDTH_RANGE = 33902
-pattern CULL_FACE_MODE = 2885
-pattern FRONT_FACE = 2886
-pattern DEPTH_RANGE = 2928
-pattern DEPTH_WRITEMASK = 2930
-pattern DEPTH_CLEAR_VALUE = 2931
-pattern DEPTH_FUNC = 2932
-pattern STENCIL_CLEAR_VALUE = 2961
-pattern STENCIL_FUNC = 2962
-pattern STENCIL_FAIL = 2964
-pattern STENCIL_PASS_DEPTH_FAIL = 2965
-pattern STENCIL_PASS_DEPTH_PASS = 2966
-pattern STENCIL_REF = 2967
-pattern STENCIL_VALUE_MASK = 2963
-pattern STENCIL_WRITEMASK = 2968
-pattern STENCIL_BACK_FUNC = 34816
-pattern STENCIL_BACK_FAIL = 34817
-pattern STENCIL_BACK_PASS_DEPTH_FAIL = 34818
-pattern STENCIL_BACK_PASS_DEPTH_PASS = 34819
-pattern STENCIL_BACK_REF = 36003
-pattern STENCIL_BACK_VALUE_MASK = 36004
-pattern STENCIL_BACK_WRITEMASK = 36005
-pattern VIEWPORT = 2978
-pattern SCISSOR_BOX = 3088
-pattern COLOR_CLEAR_VALUE = 3106
-pattern COLOR_WRITEMASK = 3107
-pattern UNPACK_ALIGNMENT = 3317
-pattern PACK_ALIGNMENT = 3333
-pattern MAX_TEXTURE_SIZE = 3379
-pattern MAX_VIEWPORT_DIMS = 3386
-pattern SUBPIXEL_BITS = 3408
-pattern RED_BITS = 3410
-pattern GREEN_BITS = 3411
-pattern BLUE_BITS = 3412
-pattern ALPHA_BITS = 3413
-pattern DEPTH_BITS = 3414
-pattern STENCIL_BITS = 3415
-pattern POLYGON_OFFSET_UNITS = 10752
-pattern POLYGON_OFFSET_FACTOR = 32824
-pattern TEXTURE_BINDING_2D = 32873
-pattern SAMPLE_BUFFERS = 32936
-pattern SAMPLES = 32937
-pattern SAMPLE_COVERAGE_VALUE = 32938
-pattern SAMPLE_COVERAGE_INVERT = 32939
-pattern COMPRESSED_TEXTURE_FORMATS = 34467
-pattern DONT_CARE = 4352
-pattern FASTEST = 4353
-pattern NICEST = 4354
-pattern GENERATE_MIPMAP_HINT = 33170
-pattern BYTE = 5120
-pattern UNSIGNED_BYTE = 5121
-pattern SHORT = 5122
-pattern UNSIGNED_SHORT = 5123
-pattern INT = 5124
-pattern UNSIGNED_INT = 5125
-pattern FLOAT = 5126
-pattern DEPTH_COMPONENT = 6402
-pattern ALPHA = 6406
-pattern RGB = 6407
-pattern RGBA = 6408
-pattern LUMINANCE = 6409
-pattern LUMINANCE_ALPHA = 6410
-pattern UNSIGNED_SHORT_4_4_4_4 = 32819
-pattern UNSIGNED_SHORT_5_5_5_1 = 32820
-pattern UNSIGNED_SHORT_5_6_5 = 33635
-pattern FRAGMENT_SHADER = 35632
-pattern VERTEX_SHADER = 35633
-pattern MAX_VERTEX_ATTRIBS = 34921
-pattern MAX_VERTEX_UNIFORM_VECTORS = 36347
-pattern MAX_VARYING_VECTORS = 36348
-pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661
-pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660
-pattern MAX_TEXTURE_IMAGE_UNITS = 34930
-pattern MAX_FRAGMENT_UNIFORM_VECTORS = 36349
-pattern SHADER_TYPE = 35663
-pattern DELETE_STATUS = 35712
-pattern LINK_STATUS = 35714
-pattern VALIDATE_STATUS = 35715
-pattern ATTACHED_SHADERS = 35717
-pattern ACTIVE_UNIFORMS = 35718
-pattern ACTIVE_ATTRIBUTES = 35721
-pattern SHADING_LANGUAGE_VERSION = 35724
-pattern CURRENT_PROGRAM = 35725
-pattern NEVER = 512
-pattern LESS = 513
-pattern EQUAL = 514
-pattern LEQUAL = 515
-pattern GREATER = 516
-pattern NOTEQUAL = 517
-pattern GEQUAL = 518
-pattern ALWAYS = 519
-pattern KEEP = 7680
-pattern REPLACE = 7681
-pattern INCR = 7682
-pattern DECR = 7683
-pattern INVERT = 5386
-pattern INCR_WRAP = 34055
-pattern DECR_WRAP = 34056
-pattern VENDOR = 7936
-pattern RENDERER = 7937
-pattern VERSION = 7938
-pattern NEAREST = 9728
-pattern LINEAR = 9729
-pattern NEAREST_MIPMAP_NEAREST = 9984
-pattern LINEAR_MIPMAP_NEAREST = 9985
-pattern NEAREST_MIPMAP_LINEAR = 9986
-pattern LINEAR_MIPMAP_LINEAR = 9987
-pattern TEXTURE_MAG_FILTER = 10240
-pattern TEXTURE_MIN_FILTER = 10241
-pattern TEXTURE_WRAP_S = 10242
-pattern TEXTURE_WRAP_T = 10243
-pattern TEXTURE = 5890
-pattern TEXTURE_CUBE_MAP = 34067
-pattern TEXTURE_BINDING_CUBE_MAP = 34068
-pattern TEXTURE_CUBE_MAP_POSITIVE_X = 34069
-pattern TEXTURE_CUBE_MAP_NEGATIVE_X = 34070
-pattern TEXTURE_CUBE_MAP_POSITIVE_Y = 34071
-pattern TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072
-pattern TEXTURE_CUBE_MAP_POSITIVE_Z = 34073
-pattern TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074
-pattern MAX_CUBE_MAP_TEXTURE_SIZE = 34076
-pattern TEXTURE0 = 33984
-pattern TEXTURE1 = 33985
-pattern TEXTURE2 = 33986
-pattern TEXTURE3 = 33987
-pattern TEXTURE4 = 33988
-pattern TEXTURE5 = 33989
-pattern TEXTURE6 = 33990
-pattern TEXTURE7 = 33991
-pattern TEXTURE8 = 33992
-pattern TEXTURE9 = 33993
-pattern TEXTURE10 = 33994
-pattern TEXTURE11 = 33995
-pattern TEXTURE12 = 33996
-pattern TEXTURE13 = 33997
-pattern TEXTURE14 = 33998
-pattern TEXTURE15 = 33999
-pattern TEXTURE16 = 34000
-pattern TEXTURE17 = 34001
-pattern TEXTURE18 = 34002
-pattern TEXTURE19 = 34003
-pattern TEXTURE20 = 34004
-pattern TEXTURE21 = 34005
-pattern TEXTURE22 = 34006
-pattern TEXTURE23 = 34007
-pattern TEXTURE24 = 34008
-pattern TEXTURE25 = 34009
-pattern TEXTURE26 = 34010
-pattern TEXTURE27 = 34011
-pattern TEXTURE28 = 34012
-pattern TEXTURE29 = 34013
-pattern TEXTURE30 = 34014
-pattern TEXTURE31 = 34015
-pattern ACTIVE_TEXTURE = 34016
-pattern REPEAT = 10497
-pattern CLAMP_TO_EDGE = 33071
-pattern MIRRORED_REPEAT = 33648
-pattern FLOAT_VEC2 = 35664
-pattern FLOAT_VEC3 = 35665
-pattern FLOAT_VEC4 = 35666
-pattern INT_VEC2 = 35667
-pattern INT_VEC3 = 35668
-pattern INT_VEC4 = 35669
-pattern BOOL = 35670
-pattern BOOL_VEC2 = 35671
-pattern BOOL_VEC3 = 35672
-pattern BOOL_VEC4 = 35673
-pattern FLOAT_MAT2 = 35674
-pattern FLOAT_MAT3 = 35675
-pattern FLOAT_MAT4 = 35676
-pattern SAMPLER_2D = 35678
-pattern SAMPLER_CUBE = 35680
-pattern VERTEX_ATTRIB_ARRAY_ENABLED = 34338
-pattern VERTEX_ATTRIB_ARRAY_SIZE = 34339
-pattern VERTEX_ATTRIB_ARRAY_STRIDE = 34340
-pattern VERTEX_ATTRIB_ARRAY_TYPE = 34341
-pattern VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922
-pattern VERTEX_ATTRIB_ARRAY_POINTER = 34373
-pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975
-pattern IMPLEMENTATION_COLOR_READ_TYPE = 35738
-pattern IMPLEMENTATION_COLOR_READ_FORMAT = 35739
-pattern COMPILE_STATUS = 35713
-pattern LOW_FLOAT = 36336
-pattern MEDIUM_FLOAT = 36337
-pattern HIGH_FLOAT = 36338
-pattern LOW_INT = 36339
-pattern MEDIUM_INT = 36340
-pattern HIGH_INT = 36341
-pattern FRAMEBUFFER = 36160
-pattern RENDERBUFFER = 36161
-pattern RGBA4 = 32854
-pattern RGB5_A1 = 32855
-pattern RGB565 = 36194
-pattern DEPTH_COMPONENT16 = 33189
-pattern STENCIL_INDEX = 6401
-pattern STENCIL_INDEX8 = 36168
-pattern DEPTH_STENCIL = 34041
-pattern RENDERBUFFER_WIDTH = 36162
-pattern RENDERBUFFER_HEIGHT = 36163
-pattern RENDERBUFFER_INTERNAL_FORMAT = 36164
-pattern RENDERBUFFER_RED_SIZE = 36176
-pattern RENDERBUFFER_GREEN_SIZE = 36177
-pattern RENDERBUFFER_BLUE_SIZE = 36178
-pattern RENDERBUFFER_ALPHA_SIZE = 36179
-pattern RENDERBUFFER_DEPTH_SIZE = 36180
-pattern RENDERBUFFER_STENCIL_SIZE = 36181
-pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048
-pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049
-pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050
-pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051
-pattern COLOR_ATTACHMENT0 = 36064
-pattern DEPTH_ATTACHMENT = 36096
-pattern STENCIL_ATTACHMENT = 36128
-pattern DEPTH_STENCIL_ATTACHMENT = 33306
-pattern NONE = 0
-pattern FRAMEBUFFER_COMPLETE = 36053
-pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054
-pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055
-pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057
-pattern FRAMEBUFFER_UNSUPPORTED = 36061
-pattern FRAMEBUFFER_BINDING = 36006
-pattern RENDERBUFFER_BINDING = 36007
-pattern MAX_RENDERBUFFER_SIZE = 34024
-pattern INVALID_FRAMEBUFFER_OPERATION = 1286
-pattern UNPACK_FLIP_Y_WEBGL = 37440
-pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441
-pattern CONTEXT_LOST_WEBGL = 37442
-pattern UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443
-pattern BROWSER_DEFAULT_WEBGL = 37444
- 
-foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })" js_getCanvas ::
-        WebGLRenderingContextBase -> IO HTMLCanvasElement
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.canvas Mozilla WebGLRenderingContextBase.canvas documentation> 
-getCanvas ::
-          (MonadIO m, IsWebGLRenderingContextBase self) =>
-            self -> m HTMLCanvasElement
-getCanvas self
-  = liftIO (js_getCanvas (toWebGLRenderingContextBase self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"drawingBufferWidth\"]; })"
-        js_getDrawingBufferWidth :: WebGLRenderingContextBase -> IO GLsizei
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferWidth Mozilla WebGLRenderingContextBase.drawingBufferWidth documentation> 
-getDrawingBufferWidth ::
-                      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m GLsizei
-getDrawingBufferWidth self
-  = liftIO
-      (js_getDrawingBufferWidth (toWebGLRenderingContextBase self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"drawingBufferHeight\"]; })"
-        js_getDrawingBufferHeight ::
-        WebGLRenderingContextBase -> IO GLsizei
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferHeight Mozilla WebGLRenderingContextBase.drawingBufferHeight documentation> 
-getDrawingBufferHeight ::
-                       (MonadIO m, IsWebGLRenderingContextBase self) => self -> m GLsizei
-getDrawingBufferHeight self
-  = liftIO
-      (js_getDrawingBufferHeight (toWebGLRenderingContextBase self))
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
+       (js_activeTexture, js_attachShader, js_bindAttribLocation, js_bindBuffer, js_bindFramebuffer, js_bindRenderbuffer, js_bindTexture, js_blendColor, js_blendEquation, js_blendEquationSeparate, js_blendFunc, js_blendFuncSeparate, js_checkFramebufferStatus, js_clear, js_clearColor, js_clearDepth, js_clearStencil, js_colorMask, js_compileShader, js_copyTexImage2D, js_copyTexSubImage2D, js_createBuffer, js_createFramebuffer, js_createProgram, js_createRenderbuffer, js_createShader, js_createTexture, js_cullFace, js_deleteBuffer, js_deleteFramebuffer, js_deleteProgram, js_deleteRenderbuffer, js_deleteShader, js_deleteTexture, js_depthFunc, js_depthMask, js_depthRange, js_detachShader, js_disable, js_disableVertexAttribArray, js_drawArrays, js_drawElements, js_enable, js_enableVertexAttribArray, js_finish, js_flush, js_framebufferRenderbuffer, js_framebufferTexture2D, js_frontFace, js_generateMipmap, js_getActiveAttrib, js_getActiveUniform, js_getAttachedShaders, js_getAttribLocation, js_getBufferParameter, js_getContextAttributes, js_getError, js_getExtension, js_getFramebufferAttachmentParameter, js_getParameter, js_getProgramInfoLog, js_getProgramParameter, js_getRenderbufferParameter, js_getShaderInfoLog, js_getShaderParameter, js_getShaderPrecisionFormat, js_getShaderSource, js_getSupportedExtensions, js_getTexParameter, js_getUniform, js_getUniformLocation, js_getVertexAttrib, js_getVertexAttribOffset, js_hint, js_isBuffer, js_isContextLost, js_isEnabled, js_isFramebuffer, js_isProgram, js_isRenderbuffer, js_isShader, js_isTexture, js_lineWidth, js_linkProgram, js_pixelStorei, js_polygonOffset, js_renderbufferStorage, js_sampleCoverage, js_scissor, js_shaderSource, js_stencilFunc, js_stencilFuncSeparate, js_stencilMask, js_stencilMaskSeparate, js_stencilOp, js_stencilOpSeparate, js_texParameterf, js_texParameteri, js_uniform1f, js_uniform1i, js_uniform2f, js_uniform2i, js_uniform3f, js_uniform3i, js_uniform4f, js_uniform4i, js_useProgram, js_validateProgram, js_vertexAttrib1f, js_vertexAttrib1fv, js_vertexAttrib2f, js_vertexAttrib2fv, js_vertexAttrib3f, js_vertexAttrib3fv, js_vertexAttrib4f, js_vertexAttrib4fv, js_vertexAttribPointer, js_viewport, js_getCanvas, js_getDrawingBufferWidth, js_getDrawingBufferHeight, js_setDrawingBufferColorSpace, js_getDrawingBufferColorSpace, js_setUnpackColorSpace, js_getUnpackColorSpace, activeTexture, attachShader, bindAttribLocation, bindBuffer, bindFramebuffer, bindRenderbuffer, bindTexture, blendColor, blendEquation, blendEquationSeparate, blendFunc, blendFuncSeparate, checkFramebufferStatus, checkFramebufferStatus_, clear, clearColor, clearDepth, clearStencil, colorMask, compileShader, copyTexImage2D, copyTexSubImage2D, createBuffer, createBuffer_, createFramebuffer, createFramebuffer_, createProgram, createProgram_, createRenderbuffer, createRenderbuffer_, createShader, createShader_, createShaderUnsafe, createShaderUnchecked, createTexture, createTexture_, cullFace, deleteBuffer, deleteFramebuffer, deleteProgram, deleteRenderbuffer, deleteShader, deleteTexture, depthFunc, depthMask, depthRange, detachShader, disable, disableVertexAttribArray, drawArrays, drawElements, enable, enableVertexAttribArray, finish, flush, framebufferRenderbuffer, framebufferTexture2D, frontFace, generateMipmap, getActiveAttrib, getActiveAttrib_, getActiveAttribUnsafe, getActiveAttribUnchecked, getActiveUniform, getActiveUniform_, getActiveUniformUnsafe, getActiveUniformUnchecked, getAttachedShaders, getAttachedShaders_, getAttachedShadersUnsafe, getAttachedShadersUnchecked, getAttribLocation, getAttribLocation_, getBufferParameter, getBufferParameter_, getContextAttributes, getContextAttributes_, getContextAttributesUnsafe, getContextAttributesUnchecked, getError, getError_, getExtension, getExtension_, getExtensionUnsafe, getExtensionUnchecked, getFramebufferAttachmentParameter, getFramebufferAttachmentParameter_, getParameter, getParameter_, getProgramInfoLog, getProgramInfoLog_, getProgramInfoLogUnsafe, getProgramInfoLogUnchecked, getProgramParameter, getProgramParameter_, getRenderbufferParameter, getRenderbufferParameter_, getShaderInfoLog, getShaderInfoLog_, getShaderInfoLogUnsafe, getShaderInfoLogUnchecked, getShaderParameter, getShaderParameter_, getShaderPrecisionFormat, getShaderPrecisionFormat_, getShaderPrecisionFormatUnsafe, getShaderPrecisionFormatUnchecked, getShaderSource, getShaderSource_, getShaderSourceUnsafe, getShaderSourceUnchecked, getSupportedExtensions, getSupportedExtensions_, getSupportedExtensionsUnsafe, getSupportedExtensionsUnchecked, getTexParameter, getTexParameter_, getUniform, getUniform_, getUniformLocation, getUniformLocation_, getUniformLocationUnsafe, getUniformLocationUnchecked, getVertexAttrib, getVertexAttrib_, getVertexAttribOffset, getVertexAttribOffset_, hint, isBuffer, isBuffer_, isContextLost, isContextLost_, isEnabled, isEnabled_, isFramebuffer, isFramebuffer_, isProgram, isProgram_, isRenderbuffer, isRenderbuffer_, isShader, isShader_, isTexture, isTexture_, lineWidth, linkProgram, pixelStorei, polygonOffset, renderbufferStorage, sampleCoverage, scissor, shaderSource, stencilFunc, stencilFuncSeparate, stencilMask, stencilMaskSeparate, stencilOp, stencilOpSeparate, texParameterf, texParameteri, uniform1f, uniform1i, uniform2f, uniform2i, uniform3f, uniform3i, uniform4f, uniform4i, useProgram, validateProgram, vertexAttrib1f, vertexAttrib1fv, vertexAttrib2f, vertexAttrib2fv, vertexAttrib3f, vertexAttrib3fv, vertexAttrib4f, vertexAttrib4fv, vertexAttribPointer, viewport, getCanvas, getDrawingBufferWidth, getDrawingBufferHeight, setDrawingBufferColorSpace, getDrawingBufferColorSpace, setUnpackColorSpace, getUnpackColorSpace, pattern DEPTH_BUFFER_BIT, pattern STENCIL_BUFFER_BIT, pattern COLOR_BUFFER_BIT, pattern POINTS, pattern LINES, pattern LINE_LOOP, pattern LINE_STRIP, pattern TRIANGLES, pattern TRIANGLE_STRIP, pattern TRIANGLE_FAN, pattern ZERO, pattern ONE, pattern SRC_COLOR, pattern ONE_MINUS_SRC_COLOR, pattern SRC_ALPHA, pattern ONE_MINUS_SRC_ALPHA, pattern DST_ALPHA, pattern ONE_MINUS_DST_ALPHA, pattern DST_COLOR, pattern ONE_MINUS_DST_COLOR, pattern SRC_ALPHA_SATURATE, pattern FUNC_ADD, pattern BLEND_EQUATION, pattern BLEND_EQUATION_RGB, pattern BLEND_EQUATION_ALPHA, pattern FUNC_SUBTRACT, pattern FUNC_REVERSE_SUBTRACT, pattern BLEND_DST_RGB, pattern BLEND_SRC_RGB, pattern BLEND_DST_ALPHA, pattern BLEND_SRC_ALPHA, pattern CONSTANT_COLOR, pattern ONE_MINUS_CONSTANT_COLOR, pattern CONSTANT_ALPHA, pattern ONE_MINUS_CONSTANT_ALPHA, pattern BLEND_COLOR, pattern ARRAY_BUFFER, pattern ELEMENT_ARRAY_BUFFER, pattern ARRAY_BUFFER_BINDING, pattern ELEMENT_ARRAY_BUFFER_BINDING, pattern STREAM_DRAW, pattern STATIC_DRAW, pattern DYNAMIC_DRAW, pattern BUFFER_SIZE, pattern BUFFER_USAGE, pattern CURRENT_VERTEX_ATTRIB, pattern FRONT, pattern BACK, pattern FRONT_AND_BACK, pattern CULL_FACE, pattern BLEND, pattern DITHER, pattern STENCIL_TEST, pattern DEPTH_TEST, pattern SCISSOR_TEST, pattern POLYGON_OFFSET_FILL, pattern SAMPLE_ALPHA_TO_COVERAGE, pattern SAMPLE_COVERAGE, pattern NO_ERROR, pattern INVALID_ENUM, pattern INVALID_VALUE, pattern INVALID_OPERATION, pattern OUT_OF_MEMORY, pattern CW, pattern CCW, pattern LINE_WIDTH, pattern ALIASED_POINT_SIZE_RANGE, pattern ALIASED_LINE_WIDTH_RANGE, pattern CULL_FACE_MODE, pattern FRONT_FACE, pattern DEPTH_RANGE, pattern DEPTH_WRITEMASK, pattern DEPTH_CLEAR_VALUE, pattern DEPTH_FUNC, pattern STENCIL_CLEAR_VALUE, pattern STENCIL_FUNC, pattern STENCIL_FAIL, pattern STENCIL_PASS_DEPTH_FAIL, pattern STENCIL_PASS_DEPTH_PASS, pattern STENCIL_REF, pattern STENCIL_VALUE_MASK, pattern STENCIL_WRITEMASK, pattern STENCIL_BACK_FUNC, pattern STENCIL_BACK_FAIL, pattern STENCIL_BACK_PASS_DEPTH_FAIL, pattern STENCIL_BACK_PASS_DEPTH_PASS, pattern STENCIL_BACK_REF, pattern STENCIL_BACK_VALUE_MASK, pattern STENCIL_BACK_WRITEMASK, pattern VIEWPORT, pattern SCISSOR_BOX, pattern COLOR_CLEAR_VALUE, pattern COLOR_WRITEMASK, pattern UNPACK_ALIGNMENT, pattern PACK_ALIGNMENT, pattern MAX_TEXTURE_SIZE, pattern MAX_VIEWPORT_DIMS, pattern SUBPIXEL_BITS, pattern RED_BITS, pattern GREEN_BITS, pattern BLUE_BITS, pattern ALPHA_BITS, pattern DEPTH_BITS, pattern STENCIL_BITS, pattern POLYGON_OFFSET_UNITS, pattern POLYGON_OFFSET_FACTOR, pattern TEXTURE_BINDING_2D, pattern SAMPLE_BUFFERS, pattern SAMPLES, pattern SAMPLE_COVERAGE_VALUE, pattern SAMPLE_COVERAGE_INVERT, pattern COMPRESSED_TEXTURE_FORMATS, pattern DONT_CARE, pattern FASTEST, pattern NICEST, pattern GENERATE_MIPMAP_HINT, pattern BYTE, pattern UNSIGNED_BYTE, pattern SHORT, pattern UNSIGNED_SHORT, pattern INT, pattern UNSIGNED_INT, pattern FLOAT, pattern DEPTH_COMPONENT, pattern ALPHA, pattern RGB, pattern RGBA, pattern LUMINANCE, pattern LUMINANCE_ALPHA, pattern UNSIGNED_SHORT_4_4_4_4, pattern UNSIGNED_SHORT_5_5_5_1, pattern UNSIGNED_SHORT_5_6_5, pattern FRAGMENT_SHADER, pattern VERTEX_SHADER, pattern MAX_VERTEX_ATTRIBS, pattern MAX_VERTEX_UNIFORM_VECTORS, pattern MAX_VARYING_VECTORS, pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS, pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS, pattern MAX_TEXTURE_IMAGE_UNITS, pattern MAX_FRAGMENT_UNIFORM_VECTORS, pattern SHADER_TYPE, pattern DELETE_STATUS, pattern LINK_STATUS, pattern VALIDATE_STATUS, pattern ATTACHED_SHADERS, pattern ACTIVE_UNIFORMS, pattern ACTIVE_ATTRIBUTES, pattern SHADING_LANGUAGE_VERSION, pattern CURRENT_PROGRAM, pattern NEVER, pattern LESS, pattern EQUAL, pattern LEQUAL, pattern GREATER, pattern NOTEQUAL, pattern GEQUAL, pattern ALWAYS, pattern KEEP, pattern REPLACE, pattern INCR, pattern DECR, pattern INVERT, pattern INCR_WRAP, pattern DECR_WRAP, pattern VENDOR, pattern RENDERER, pattern VERSION, pattern NEAREST, pattern LINEAR, pattern NEAREST_MIPMAP_NEAREST, pattern LINEAR_MIPMAP_NEAREST, pattern NEAREST_MIPMAP_LINEAR, pattern LINEAR_MIPMAP_LINEAR, pattern TEXTURE_MAG_FILTER, pattern TEXTURE_MIN_FILTER, pattern TEXTURE_WRAP_S, pattern TEXTURE_WRAP_T, pattern TEXTURE_2D, pattern TEXTURE, pattern TEXTURE_CUBE_MAP, pattern TEXTURE_BINDING_CUBE_MAP, pattern TEXTURE_CUBE_MAP_POSITIVE_X, pattern TEXTURE_CUBE_MAP_NEGATIVE_X, pattern TEXTURE_CUBE_MAP_POSITIVE_Y, pattern TEXTURE_CUBE_MAP_NEGATIVE_Y, pattern TEXTURE_CUBE_MAP_POSITIVE_Z, pattern TEXTURE_CUBE_MAP_NEGATIVE_Z, pattern MAX_CUBE_MAP_TEXTURE_SIZE, pattern TEXTURE0, pattern TEXTURE1, pattern TEXTURE2, pattern TEXTURE3, pattern TEXTURE4, pattern TEXTURE5, pattern TEXTURE6, pattern TEXTURE7, pattern TEXTURE8, pattern TEXTURE9, pattern TEXTURE10, pattern TEXTURE11, pattern TEXTURE12, pattern TEXTURE13, pattern TEXTURE14, pattern TEXTURE15, pattern TEXTURE16, pattern TEXTURE17, pattern TEXTURE18, pattern TEXTURE19, pattern TEXTURE20, pattern TEXTURE21, pattern TEXTURE22, pattern TEXTURE23, pattern TEXTURE24, pattern TEXTURE25, pattern TEXTURE26, pattern TEXTURE27, pattern TEXTURE28, pattern TEXTURE29, pattern TEXTURE30, pattern TEXTURE31, pattern ACTIVE_TEXTURE, pattern REPEAT, pattern CLAMP_TO_EDGE, pattern MIRRORED_REPEAT, pattern FLOAT_VEC2, pattern FLOAT_VEC3, pattern FLOAT_VEC4, pattern INT_VEC2, pattern INT_VEC3, pattern INT_VEC4, pattern BOOL, pattern BOOL_VEC2, pattern BOOL_VEC3, pattern BOOL_VEC4, pattern FLOAT_MAT2, pattern FLOAT_MAT3, pattern FLOAT_MAT4, pattern SAMPLER_2D, pattern SAMPLER_CUBE, pattern VERTEX_ATTRIB_ARRAY_ENABLED, pattern VERTEX_ATTRIB_ARRAY_SIZE, pattern VERTEX_ATTRIB_ARRAY_STRIDE, pattern VERTEX_ATTRIB_ARRAY_TYPE, pattern VERTEX_ATTRIB_ARRAY_NORMALIZED, pattern VERTEX_ATTRIB_ARRAY_POINTER, pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, pattern IMPLEMENTATION_COLOR_READ_TYPE, pattern IMPLEMENTATION_COLOR_READ_FORMAT, pattern COMPILE_STATUS, pattern LOW_FLOAT, pattern MEDIUM_FLOAT, pattern HIGH_FLOAT, pattern LOW_INT, pattern MEDIUM_INT, pattern HIGH_INT, pattern FRAMEBUFFER, pattern RENDERBUFFER, pattern RGBA4, pattern RGB5_A1, pattern RGBA8, pattern RGB565, pattern DEPTH_COMPONENT16, pattern STENCIL_INDEX8, pattern DEPTH_STENCIL, pattern RENDERBUFFER_WIDTH, pattern RENDERBUFFER_HEIGHT, pattern RENDERBUFFER_INTERNAL_FORMAT, pattern RENDERBUFFER_RED_SIZE, pattern RENDERBUFFER_GREEN_SIZE, pattern RENDERBUFFER_BLUE_SIZE, pattern RENDERBUFFER_ALPHA_SIZE, pattern RENDERBUFFER_DEPTH_SIZE, pattern RENDERBUFFER_STENCIL_SIZE, pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, pattern COLOR_ATTACHMENT0, pattern DEPTH_ATTACHMENT, pattern STENCIL_ATTACHMENT, pattern DEPTH_STENCIL_ATTACHMENT, pattern NONE, pattern FRAMEBUFFER_COMPLETE, pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT, pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS, pattern FRAMEBUFFER_UNSUPPORTED, pattern FRAMEBUFFER_BINDING, pattern RENDERBUFFER_BINDING, pattern MAX_RENDERBUFFER_SIZE, pattern INVALID_FRAMEBUFFER_OPERATION, pattern UNPACK_FLIP_Y_WEBGL, pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL, pattern CONTEXT_LOST_WEBGL, pattern UNPACK_COLORSPACE_CONVERSION_WEBGL, pattern BROWSER_DEFAULT_WEBGL, WebGLRenderingContextBase(..), gTypeWebGLRenderingContextBase, IsWebGLRenderingContextBase, toWebGLRenderingContextBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"activeTexture\"]($2); })"
+        js_activeTexture :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/activeTexture MDN WebGLRenderingContextBase.activeTexture documentation>
+activeTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+activeTexture self texture = liftDOM (void ((js_activeTexture ((Types.toWebGLRenderingContextBase self)) (texture))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"attachShader\"]($2, $3); })"
+        js_attachShader :: WebGLRenderingContextBase -> WebGLProgram -> WebGLShader -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/attachShader MDN WebGLRenderingContextBase.attachShader documentation>
+attachShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLShader -> m ()
+attachShader self program shader = liftDOM (void ((js_attachShader ((Types.toWebGLRenderingContextBase self)) (program) (shader))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bindAttribLocation\"]($2, $3, $4); })"
+        js_bindAttribLocation :: WebGLRenderingContextBase -> WebGLProgram -> Word -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bindAttribLocation MDN WebGLRenderingContextBase.bindAttribLocation documentation>
+bindAttribLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> Word -> name -> m ()
+bindAttribLocation self program index name = liftDOM (void ((js_bindAttribLocation ((Types.toWebGLRenderingContextBase self)) (program) (index) (toJSString name))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"bindBuffer\"]($2, $3); })"
+        js_bindBuffer :: WebGLRenderingContextBase -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bindBuffer MDN WebGLRenderingContextBase.bindBuffer documentation>
+bindBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLBuffer -> m ()
+bindBuffer self target buffer = liftDOM (void (((toJSVal buffer) >>= \a3' -> js_bindBuffer ((Types.toWebGLRenderingContextBase self)) (target) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"bindFramebuffer\"]($2, $3); })"
+        js_bindFramebuffer :: WebGLRenderingContextBase -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bindFramebuffer MDN WebGLRenderingContextBase.bindFramebuffer documentation>
+bindFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLFramebuffer -> m ()
+bindFramebuffer self target framebuffer = liftDOM (void (((toJSVal framebuffer) >>= \a3' -> js_bindFramebuffer ((Types.toWebGLRenderingContextBase self)) (target) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"bindRenderbuffer\"]($2, $3); })"
+        js_bindRenderbuffer :: WebGLRenderingContextBase -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bindRenderbuffer MDN WebGLRenderingContextBase.bindRenderbuffer documentation>
+bindRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLRenderbuffer -> m ()
+bindRenderbuffer self target renderbuffer = liftDOM (void (((toJSVal renderbuffer) >>= \a3' -> js_bindRenderbuffer ((Types.toWebGLRenderingContextBase self)) (target) a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"bindTexture\"]($2, $3); })"
+        js_bindTexture :: WebGLRenderingContextBase -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bindTexture MDN WebGLRenderingContextBase.bindTexture documentation>
+bindTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLTexture -> m ()
+bindTexture self target texture = liftDOM (void (((toJSVal texture) >>= \a3' -> js_bindTexture ((Types.toWebGLRenderingContextBase self)) (target) a3')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"blendColor\"]($2, $3, $4, $5); })"
+        js_blendColor :: WebGLRenderingContextBase -> Float -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/blendColor MDN WebGLRenderingContextBase.blendColor documentation>
+blendColor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> Float -> Float -> m ()
+blendColor self red green blue alpha = liftDOM (void ((js_blendColor ((Types.toWebGLRenderingContextBase self)) (red) (green) (blue) (alpha))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"blendEquation\"]($2); })"
+        js_blendEquation :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/blendEquation MDN WebGLRenderingContextBase.blendEquation documentation>
+blendEquation :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+blendEquation self mode = liftDOM (void ((js_blendEquation ((Types.toWebGLRenderingContextBase self)) (mode))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"blendEquationSeparate\"]($2, $3); })"
+        js_blendEquationSeparate :: WebGLRenderingContextBase -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/blendEquationSeparate MDN WebGLRenderingContextBase.blendEquationSeparate documentation>
+blendEquationSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+blendEquationSeparate self modeRGB modeAlpha = liftDOM (void ((js_blendEquationSeparate ((Types.toWebGLRenderingContextBase self)) (modeRGB) (modeAlpha))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"blendFunc\"]($2, $3); })"
+        js_blendFunc :: WebGLRenderingContextBase -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/blendFunc MDN WebGLRenderingContextBase.blendFunc documentation>
+blendFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+blendFunc self sfactor dfactor = liftDOM (void ((js_blendFunc ((Types.toWebGLRenderingContextBase self)) (sfactor) (dfactor))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"blendFuncSeparate\"]($2, $3, $4, $5); })"
+        js_blendFuncSeparate :: WebGLRenderingContextBase -> Word -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/blendFuncSeparate MDN WebGLRenderingContextBase.blendFuncSeparate documentation>
+blendFuncSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Word -> m ()
+blendFuncSeparate self srcRGB dstRGB srcAlpha dstAlpha = liftDOM (void ((js_blendFuncSeparate ((Types.toWebGLRenderingContextBase self)) (srcRGB) (dstRGB) (srcAlpha) (dstAlpha))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"checkFramebufferStatus\"]($2); })"
+        js_checkFramebufferStatus :: WebGLRenderingContextBase -> Word -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/checkFramebufferStatus MDN WebGLRenderingContextBase.checkFramebufferStatus documentation>
+checkFramebufferStatus :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m Word
+checkFramebufferStatus self target = liftDOM ((js_checkFramebufferStatus ((Types.toWebGLRenderingContextBase self)) (target)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/checkFramebufferStatus MDN WebGLRenderingContextBase.checkFramebufferStatus documentation>
+checkFramebufferStatus_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+checkFramebufferStatus_ self target = liftDOM (void ((js_checkFramebufferStatus ((Types.toWebGLRenderingContextBase self)) (target))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"clear\"]($2); })"
+        js_clear :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/clear MDN WebGLRenderingContextBase.clear documentation>
+clear :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+clear self mask = liftDOM (void ((js_clear ((Types.toWebGLRenderingContextBase self)) (mask))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"clearColor\"]($2, $3, $4, $5); })"
+        js_clearColor :: WebGLRenderingContextBase -> Float -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/clearColor MDN WebGLRenderingContextBase.clearColor documentation>
+clearColor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> Float -> Float -> m ()
+clearColor self red green blue alpha = liftDOM (void ((js_clearColor ((Types.toWebGLRenderingContextBase self)) (red) (green) (blue) (alpha))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"clearDepth\"]($2); })"
+        js_clearDepth :: WebGLRenderingContextBase -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/clearDepth MDN WebGLRenderingContextBase.clearDepth documentation>
+clearDepth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> m ()
+clearDepth self depth = liftDOM (void ((js_clearDepth ((Types.toWebGLRenderingContextBase self)) (depth))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"clearStencil\"]($2); })"
+        js_clearStencil :: WebGLRenderingContextBase -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/clearStencil MDN WebGLRenderingContextBase.clearStencil documentation>
+clearStencil :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Int -> m ()
+clearStencil self s = liftDOM (void ((js_clearStencil ((Types.toWebGLRenderingContextBase self)) (s))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"colorMask\"]($2, $3, $4, $5); })"
+        js_colorMask :: WebGLRenderingContextBase -> Bool -> Bool -> Bool -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/colorMask MDN WebGLRenderingContextBase.colorMask documentation>
+colorMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Bool -> Bool -> Bool -> Bool -> m ()
+colorMask self red green blue alpha = liftDOM (void ((js_colorMask ((Types.toWebGLRenderingContextBase self)) (red) (green) (blue) (alpha))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"compileShader\"]($2); })"
+        js_compileShader :: WebGLRenderingContextBase -> WebGLShader -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/compileShader MDN WebGLRenderingContextBase.compileShader documentation>
+compileShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> m ()
+compileShader self shader = liftDOM (void ((js_compileShader ((Types.toWebGLRenderingContextBase self)) (shader))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"copyTexImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_copyTexImage2D :: WebGLRenderingContextBase -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/copyTexImage2D MDN WebGLRenderingContextBase.copyTexImage2D documentation>
+copyTexImage2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> Int -> m ()
+copyTexImage2D self target level internalformat x y width height border = liftDOM (void ((js_copyTexImage2D ((Types.toWebGLRenderingContextBase self)) (target) (level) (internalformat) (x) (y) (width) (height) (border))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"copyTexSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_copyTexSubImage2D :: WebGLRenderingContextBase -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/copyTexSubImage2D MDN WebGLRenderingContextBase.copyTexSubImage2D documentation>
+copyTexSubImage2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> m ()
+copyTexSubImage2D self target level xoffset yoffset x y width height = liftDOM (void ((js_copyTexSubImage2D ((Types.toWebGLRenderingContextBase self)) (target) (level) (xoffset) (yoffset) (x) (y) (width) (height))))
+
+foreign import javascript safe "(($1) => { return $1[\"createBuffer\"](); })"
+        js_createBuffer :: WebGLRenderingContextBase -> IO WebGLBuffer
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createBuffer MDN WebGLRenderingContextBase.createBuffer documentation>
+createBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLBuffer
+createBuffer self = liftDOM ((js_createBuffer ((Types.toWebGLRenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createBuffer MDN WebGLRenderingContextBase.createBuffer documentation>
+createBuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createBuffer_ self = liftDOM (void ((js_createBuffer ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createFramebuffer\"](); })"
+        js_createFramebuffer :: WebGLRenderingContextBase -> IO WebGLFramebuffer
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createFramebuffer MDN WebGLRenderingContextBase.createFramebuffer documentation>
+createFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLFramebuffer
+createFramebuffer self = liftDOM ((js_createFramebuffer ((Types.toWebGLRenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createFramebuffer MDN WebGLRenderingContextBase.createFramebuffer documentation>
+createFramebuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createFramebuffer_ self = liftDOM (void ((js_createFramebuffer ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createProgram\"](); })"
+        js_createProgram :: WebGLRenderingContextBase -> IO WebGLProgram
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createProgram MDN WebGLRenderingContextBase.createProgram documentation>
+createProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLProgram
+createProgram self = liftDOM ((js_createProgram ((Types.toWebGLRenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createProgram MDN WebGLRenderingContextBase.createProgram documentation>
+createProgram_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createProgram_ self = liftDOM (void ((js_createProgram ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"createRenderbuffer\"](); })"
+        js_createRenderbuffer :: WebGLRenderingContextBase -> IO WebGLRenderbuffer
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createRenderbuffer MDN WebGLRenderingContextBase.createRenderbuffer documentation>
+createRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLRenderbuffer
+createRenderbuffer self = liftDOM ((js_createRenderbuffer ((Types.toWebGLRenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createRenderbuffer MDN WebGLRenderingContextBase.createRenderbuffer documentation>
+createRenderbuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createRenderbuffer_ self = liftDOM (void ((js_createRenderbuffer ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createShader\"]($2); })"
+        js_createShader :: WebGLRenderingContextBase -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createShader MDN WebGLRenderingContextBase.createShader documentation>
+createShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m (Maybe WebGLShader)
+createShader self type' = liftDOM (((js_createShader ((Types.toWebGLRenderingContextBase self)) (type')) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createShader MDN WebGLRenderingContextBase.createShader documentation>
+createShader_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+createShader_ self type' = liftDOM (void ((js_createShader ((Types.toWebGLRenderingContextBase self)) (type'))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createShader MDN WebGLRenderingContextBase.createShader documentation>
+createShaderUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) => self -> Word -> m WebGLShader
+createShaderUnsafe self type' = liftDOM ((((js_createShader ((Types.toWebGLRenderingContextBase self)) (type')) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createShader MDN WebGLRenderingContextBase.createShader documentation>
+createShaderUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m WebGLShader
+createShaderUnchecked self type' = liftDOM ((pFromJSVal <$> (js_createShader ((Types.toWebGLRenderingContextBase self)) (type'))))
+
+foreign import javascript safe "(($1) => { return $1[\"createTexture\"](); })"
+        js_createTexture :: WebGLRenderingContextBase -> IO WebGLTexture
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createTexture MDN WebGLRenderingContextBase.createTexture documentation>
+createTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLTexture
+createTexture self = liftDOM ((js_createTexture ((Types.toWebGLRenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createTexture MDN WebGLRenderingContextBase.createTexture documentation>
+createTexture_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createTexture_ self = liftDOM (void ((js_createTexture ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"cullFace\"]($2); })"
+        js_cullFace :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/cullFace MDN WebGLRenderingContextBase.cullFace documentation>
+cullFace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+cullFace self mode = liftDOM (void ((js_cullFace ((Types.toWebGLRenderingContextBase self)) (mode))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteBuffer\"]($2); })"
+        js_deleteBuffer :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/deleteBuffer MDN WebGLRenderingContextBase.deleteBuffer documentation>
+deleteBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLBuffer -> m ()
+deleteBuffer self buffer = liftDOM (void (((toJSVal buffer) >>= \a2' -> js_deleteBuffer ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteFramebuffer\"]($2); })"
+        js_deleteFramebuffer :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/deleteFramebuffer MDN WebGLRenderingContextBase.deleteFramebuffer documentation>
+deleteFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLFramebuffer -> m ()
+deleteFramebuffer self framebuffer = liftDOM (void (((toJSVal framebuffer) >>= \a2' -> js_deleteFramebuffer ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteProgram\"]($2); })"
+        js_deleteProgram :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/deleteProgram MDN WebGLRenderingContextBase.deleteProgram documentation>
+deleteProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m ()
+deleteProgram self program = liftDOM (void (((toJSVal program) >>= \a2' -> js_deleteProgram ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRenderbuffer\"]($2); })"
+        js_deleteRenderbuffer :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/deleteRenderbuffer MDN WebGLRenderingContextBase.deleteRenderbuffer documentation>
+deleteRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLRenderbuffer -> m ()
+deleteRenderbuffer self renderbuffer = liftDOM (void (((toJSVal renderbuffer) >>= \a2' -> js_deleteRenderbuffer ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteShader\"]($2); })"
+        js_deleteShader :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/deleteShader MDN WebGLRenderingContextBase.deleteShader documentation>
+deleteShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m ()
+deleteShader self shader = liftDOM (void (((toJSVal shader) >>= \a2' -> js_deleteShader ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteTexture\"]($2); })"
+        js_deleteTexture :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/deleteTexture MDN WebGLRenderingContextBase.deleteTexture documentation>
+deleteTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLTexture -> m ()
+deleteTexture self texture = liftDOM (void (((toJSVal texture) >>= \a2' -> js_deleteTexture ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"depthFunc\"]($2); })"
+        js_depthFunc :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/depthFunc MDN WebGLRenderingContextBase.depthFunc documentation>
+depthFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+depthFunc self func = liftDOM (void ((js_depthFunc ((Types.toWebGLRenderingContextBase self)) (func))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"depthMask\"]($2); })"
+        js_depthMask :: WebGLRenderingContextBase -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/depthMask MDN WebGLRenderingContextBase.depthMask documentation>
+depthMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Bool -> m ()
+depthMask self flag = liftDOM (void ((js_depthMask ((Types.toWebGLRenderingContextBase self)) (flag))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"depthRange\"]($2, $3); })"
+        js_depthRange :: WebGLRenderingContextBase -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/depthRange MDN WebGLRenderingContextBase.depthRange documentation>
+depthRange :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> m ()
+depthRange self zNear zFar = liftDOM (void ((js_depthRange ((Types.toWebGLRenderingContextBase self)) (zNear) (zFar))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"detachShader\"]($2, $3); })"
+        js_detachShader :: WebGLRenderingContextBase -> WebGLProgram -> WebGLShader -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/detachShader MDN WebGLRenderingContextBase.detachShader documentation>
+detachShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLShader -> m ()
+detachShader self program shader = liftDOM (void ((js_detachShader ((Types.toWebGLRenderingContextBase self)) (program) (shader))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"disable\"]($2); })"
+        js_disable :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/disable MDN WebGLRenderingContextBase.disable documentation>
+disable :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+disable self cap = liftDOM (void ((js_disable ((Types.toWebGLRenderingContextBase self)) (cap))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"disableVertexAttribArray\"]($2); })"
+        js_disableVertexAttribArray :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/disableVertexAttribArray MDN WebGLRenderingContextBase.disableVertexAttribArray documentation>
+disableVertexAttribArray :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+disableVertexAttribArray self index = liftDOM (void ((js_disableVertexAttribArray ((Types.toWebGLRenderingContextBase self)) (index))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"drawArrays\"]($2, $3, $4); })"
+        js_drawArrays :: WebGLRenderingContextBase -> Word -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/drawArrays MDN WebGLRenderingContextBase.drawArrays documentation>
+drawArrays :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Int -> m ()
+drawArrays self mode first count = liftDOM (void ((js_drawArrays ((Types.toWebGLRenderingContextBase self)) (mode) (first) (count))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"drawElements\"]($2, $3, $4, $5); })"
+        js_drawElements :: WebGLRenderingContextBase -> Word -> Int -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/drawElements MDN WebGLRenderingContextBase.drawElements documentation>
+drawElements :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> Int53 -> m ()
+drawElements self mode count type' offset = liftDOM (void (((toJSVal offset) >>= \a5' -> js_drawElements ((Types.toWebGLRenderingContextBase self)) (mode) (count) (type') a5')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"enable\"]($2); })"
+        js_enable :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/enable MDN WebGLRenderingContextBase.enable documentation>
+enable :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+enable self cap = liftDOM (void ((js_enable ((Types.toWebGLRenderingContextBase self)) (cap))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"enableVertexAttribArray\"]($2); })"
+        js_enableVertexAttribArray :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/enableVertexAttribArray MDN WebGLRenderingContextBase.enableVertexAttribArray documentation>
+enableVertexAttribArray :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+enableVertexAttribArray self index = liftDOM (void ((js_enableVertexAttribArray ((Types.toWebGLRenderingContextBase self)) (index))))
+
+foreign import javascript safe "(($1) => { return $1[\"finish\"](); })"
+        js_finish :: WebGLRenderingContextBase -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/finish MDN WebGLRenderingContextBase.finish documentation>
+finish :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+finish self = liftDOM (void ((js_finish ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"flush\"](); })"
+        js_flush :: WebGLRenderingContextBase -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/flush MDN WebGLRenderingContextBase.flush documentation>
+flush :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+flush self = liftDOM (void ((js_flush ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"framebufferRenderbuffer\"]($2, $3, $4, $5); })"
+        js_framebufferRenderbuffer :: WebGLRenderingContextBase -> Word -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/framebufferRenderbuffer MDN WebGLRenderingContextBase.framebufferRenderbuffer documentation>
+framebufferRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Maybe WebGLRenderbuffer -> m ()
+framebufferRenderbuffer self target attachment renderbuffertarget renderbuffer = liftDOM (void (((toJSVal renderbuffer) >>= \a5' -> js_framebufferRenderbuffer ((Types.toWebGLRenderingContextBase self)) (target) (attachment) (renderbuffertarget) a5')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"framebufferTexture2D\"]($2, $3, $4, $5, $6); })"
+        js_framebufferTexture2D :: WebGLRenderingContextBase -> Word -> Word -> Word -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/framebufferTexture2D MDN WebGLRenderingContextBase.framebufferTexture2D documentation>
+framebufferTexture2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Maybe WebGLTexture -> Int -> m ()
+framebufferTexture2D self target attachment textarget texture level = liftDOM (void (((toJSVal texture) >>= \a5' -> js_framebufferTexture2D ((Types.toWebGLRenderingContextBase self)) (target) (attachment) (textarget) a5' (level))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"frontFace\"]($2); })"
+        js_frontFace :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/frontFace MDN WebGLRenderingContextBase.frontFace documentation>
+frontFace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+frontFace self mode = liftDOM (void ((js_frontFace ((Types.toWebGLRenderingContextBase self)) (mode))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"generateMipmap\"]($2); })"
+        js_generateMipmap :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/generateMipmap MDN WebGLRenderingContextBase.generateMipmap documentation>
+generateMipmap :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+generateMipmap self target = liftDOM (void ((js_generateMipmap ((Types.toWebGLRenderingContextBase self)) (target))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getActiveAttrib\"]($2, $3); })"
+        js_getActiveAttrib :: WebGLRenderingContextBase -> WebGLProgram -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveAttrib MDN WebGLRenderingContextBase.getActiveAttrib documentation>
+getActiveAttrib :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m (Maybe WebGLActiveInfo)
+getActiveAttrib self program index = liftDOM (((js_getActiveAttrib ((Types.toWebGLRenderingContextBase self)) (program) (index)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveAttrib MDN WebGLRenderingContextBase.getActiveAttrib documentation>
+getActiveAttrib_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m ()
+getActiveAttrib_ self program index = liftDOM (void ((js_getActiveAttrib ((Types.toWebGLRenderingContextBase self)) (program) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveAttrib MDN WebGLRenderingContextBase.getActiveAttrib documentation>
+getActiveAttribUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) => self -> WebGLProgram -> Word -> m WebGLActiveInfo
+getActiveAttribUnsafe self program index = liftDOM ((((js_getActiveAttrib ((Types.toWebGLRenderingContextBase self)) (program) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveAttrib MDN WebGLRenderingContextBase.getActiveAttrib documentation>
+getActiveAttribUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m WebGLActiveInfo
+getActiveAttribUnchecked self program index = liftDOM ((pFromJSVal <$> (js_getActiveAttrib ((Types.toWebGLRenderingContextBase self)) (program) (index))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getActiveUniform\"]($2, $3); })"
+        js_getActiveUniform :: WebGLRenderingContextBase -> WebGLProgram -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveUniform MDN WebGLRenderingContextBase.getActiveUniform documentation>
+getActiveUniform :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m (Maybe WebGLActiveInfo)
+getActiveUniform self program index = liftDOM (((js_getActiveUniform ((Types.toWebGLRenderingContextBase self)) (program) (index)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveUniform MDN WebGLRenderingContextBase.getActiveUniform documentation>
+getActiveUniform_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m ()
+getActiveUniform_ self program index = liftDOM (void ((js_getActiveUniform ((Types.toWebGLRenderingContextBase self)) (program) (index))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveUniform MDN WebGLRenderingContextBase.getActiveUniform documentation>
+getActiveUniformUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) => self -> WebGLProgram -> Word -> m WebGLActiveInfo
+getActiveUniformUnsafe self program index = liftDOM ((((js_getActiveUniform ((Types.toWebGLRenderingContextBase self)) (program) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getActiveUniform MDN WebGLRenderingContextBase.getActiveUniform documentation>
+getActiveUniformUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m WebGLActiveInfo
+getActiveUniformUnchecked self program index = liftDOM ((pFromJSVal <$> (js_getActiveUniform ((Types.toWebGLRenderingContextBase self)) (program) (index))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getAttachedShaders\"]($2); })"
+        js_getAttachedShaders :: WebGLRenderingContextBase -> WebGLProgram -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getAttachedShaders MDN WebGLRenderingContextBase.getAttachedShaders documentation>
+getAttachedShaders :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m (Maybe [WebGLShader])
+getAttachedShaders self program = liftDOM (((js_getAttachedShaders ((Types.toWebGLRenderingContextBase self)) (program)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getAttachedShaders MDN WebGLRenderingContextBase.getAttachedShaders documentation>
+getAttachedShaders_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()
+getAttachedShaders_ self program = liftDOM (void ((js_getAttachedShaders ((Types.toWebGLRenderingContextBase self)) (program))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getAttachedShaders MDN WebGLRenderingContextBase.getAttachedShaders documentation>
+getAttachedShadersUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) => self -> WebGLProgram -> m [WebGLShader]
+getAttachedShadersUnsafe self program = liftDOM ((((js_getAttachedShaders ((Types.toWebGLRenderingContextBase self)) (program)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getAttachedShaders MDN WebGLRenderingContextBase.getAttachedShaders documentation>
+getAttachedShadersUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m [WebGLShader]
+getAttachedShadersUnchecked self program = liftDOM (((js_getAttachedShaders ((Types.toWebGLRenderingContextBase self)) (program)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAttribLocation\"]($2, $3); })"
+        js_getAttribLocation :: WebGLRenderingContextBase -> WebGLProgram -> JSString -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getAttribLocation MDN WebGLRenderingContextBase.getAttribLocation documentation>
+getAttribLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m Int
+getAttribLocation self program name = liftDOM ((js_getAttribLocation ((Types.toWebGLRenderingContextBase self)) (program) (toJSString name)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getAttribLocation MDN WebGLRenderingContextBase.getAttribLocation documentation>
+getAttribLocation_ :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m ()
+getAttribLocation_ self program name = liftDOM (void ((js_getAttribLocation ((Types.toWebGLRenderingContextBase self)) (program) (toJSString name))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getBufferParameter\"]($2, $3); })"
+        js_getBufferParameter :: WebGLRenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getBufferParameter MDN WebGLRenderingContextBase.getBufferParameter documentation>
+getBufferParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal
+getBufferParameter self target pname = liftDOM ((js_getBufferParameter ((Types.toWebGLRenderingContextBase self)) (target) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getBufferParameter MDN WebGLRenderingContextBase.getBufferParameter documentation>
+getBufferParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+getBufferParameter_ self target pname = liftDOM (void ((js_getBufferParameter ((Types.toWebGLRenderingContextBase self)) (target) (pname))))
+
+foreign import javascript safe "(($1) => { return $1[\"getContextAttributes\"](); })"
+        js_getContextAttributes :: WebGLRenderingContextBase -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getContextAttributes MDN WebGLRenderingContextBase.getContextAttributes documentation>
+getContextAttributes :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m (Maybe WebGLContextAttributes)
+getContextAttributes self = liftDOM (((js_getContextAttributes ((Types.toWebGLRenderingContextBase self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getContextAttributes MDN WebGLRenderingContextBase.getContextAttributes documentation>
+getContextAttributes_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+getContextAttributes_ self = liftDOM (void ((js_getContextAttributes ((Types.toWebGLRenderingContextBase self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getContextAttributes MDN WebGLRenderingContextBase.getContextAttributes documentation>
+getContextAttributesUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) => self -> m WebGLContextAttributes
+getContextAttributesUnsafe self = liftDOM ((((js_getContextAttributes ((Types.toWebGLRenderingContextBase self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getContextAttributes MDN WebGLRenderingContextBase.getContextAttributes documentation>
+getContextAttributesUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLContextAttributes
+getContextAttributesUnchecked self = liftDOM ((pFromJSVal <$> (js_getContextAttributes ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1) => { return $1[\"getError\"](); })"
+        js_getError :: WebGLRenderingContextBase -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getError MDN WebGLRenderingContextBase.getError documentation>
+getError :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Word
+getError self = liftDOM ((js_getError ((Types.toWebGLRenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getError MDN WebGLRenderingContextBase.getError documentation>
+getError_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+getError_ self = liftDOM (void ((js_getError ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getExtension\"]($2); })"
+        js_getExtension :: WebGLRenderingContextBase -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getExtension MDN WebGLRenderingContextBase.getExtension documentation>
+getExtension :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> name -> m (Maybe GObject)
+getExtension self name = liftDOM (((js_getExtension ((Types.toWebGLRenderingContextBase self)) (toJSString name)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getExtension MDN WebGLRenderingContextBase.getExtension documentation>
+getExtension_ :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> name -> m ()
+getExtension_ self name = liftDOM (void ((js_getExtension ((Types.toWebGLRenderingContextBase self)) (toJSString name))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getExtension MDN WebGLRenderingContextBase.getExtension documentation>
+getExtensionUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name, HasCallStack) => self -> name -> m GObject
+getExtensionUnsafe self name = liftDOM ((((js_getExtension ((Types.toWebGLRenderingContextBase self)) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getExtension MDN WebGLRenderingContextBase.getExtension documentation>
+getExtensionUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> name -> m GObject
+getExtensionUnchecked self name = liftDOM ((pFromJSVal <$> (js_getExtension ((Types.toWebGLRenderingContextBase self)) (toJSString name))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"getFramebufferAttachmentParameter\"]($2, $3, $4); })"
+        js_getFramebufferAttachmentParameter :: WebGLRenderingContextBase -> Word -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getFramebufferAttachmentParameter MDN WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation>
+getFramebufferAttachmentParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> m JSVal
+getFramebufferAttachmentParameter self target attachment pname = liftDOM ((js_getFramebufferAttachmentParameter ((Types.toWebGLRenderingContextBase self)) (target) (attachment) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getFramebufferAttachmentParameter MDN WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation>
+getFramebufferAttachmentParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> m ()
+getFramebufferAttachmentParameter_ self target attachment pname = liftDOM (void ((js_getFramebufferAttachmentParameter ((Types.toWebGLRenderingContextBase self)) (target) (attachment) (pname))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getParameter\"]($2); })"
+        js_getParameter :: WebGLRenderingContextBase -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getParameter MDN WebGLRenderingContextBase.getParameter documentation>
+getParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m JSVal
+getParameter self pname = liftDOM ((js_getParameter ((Types.toWebGLRenderingContextBase self)) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getParameter MDN WebGLRenderingContextBase.getParameter documentation>
+getParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+getParameter_ self pname = liftDOM (void ((js_getParameter ((Types.toWebGLRenderingContextBase self)) (pname))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getProgramInfoLog\"]($2); })"
+        js_getProgramInfoLog :: WebGLRenderingContextBase -> WebGLProgram -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getProgramInfoLog MDN WebGLRenderingContextBase.getProgramInfoLog documentation>
+getProgramInfoLog :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLProgram -> m (Maybe result)
+getProgramInfoLog self program = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getProgramInfoLog ((Types.toWebGLRenderingContextBase self)) (program))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getProgramInfoLog MDN WebGLRenderingContextBase.getProgramInfoLog documentation>
+getProgramInfoLog_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()
+getProgramInfoLog_ self program = liftDOM (void ((js_getProgramInfoLog ((Types.toWebGLRenderingContextBase self)) (program))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getProgramInfoLog MDN WebGLRenderingContextBase.getProgramInfoLog documentation>
+getProgramInfoLogUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> WebGLProgram -> m result
+getProgramInfoLogUnsafe self program = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getProgramInfoLog ((Types.toWebGLRenderingContextBase self)) (program))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getProgramInfoLog MDN WebGLRenderingContextBase.getProgramInfoLog documentation>
+getProgramInfoLogUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLProgram -> m result
+getProgramInfoLogUnchecked self program = liftDOM ((pFromJSVal <$> (js_getProgramInfoLog ((Types.toWebGLRenderingContextBase self)) (program))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getProgramParameter\"]($2, $3); })"
+        js_getProgramParameter :: WebGLRenderingContextBase -> WebGLProgram -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getProgramParameter MDN WebGLRenderingContextBase.getProgramParameter documentation>
+getProgramParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m JSVal
+getProgramParameter self program pname = liftDOM ((js_getProgramParameter ((Types.toWebGLRenderingContextBase self)) (program) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getProgramParameter MDN WebGLRenderingContextBase.getProgramParameter documentation>
+getProgramParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m ()
+getProgramParameter_ self program pname = liftDOM (void ((js_getProgramParameter ((Types.toWebGLRenderingContextBase self)) (program) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getRenderbufferParameter\"]($2, $3); })"
+        js_getRenderbufferParameter :: WebGLRenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getRenderbufferParameter MDN WebGLRenderingContextBase.getRenderbufferParameter documentation>
+getRenderbufferParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal
+getRenderbufferParameter self target pname = liftDOM ((js_getRenderbufferParameter ((Types.toWebGLRenderingContextBase self)) (target) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getRenderbufferParameter MDN WebGLRenderingContextBase.getRenderbufferParameter documentation>
+getRenderbufferParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+getRenderbufferParameter_ self target pname = liftDOM (void ((js_getRenderbufferParameter ((Types.toWebGLRenderingContextBase self)) (target) (pname))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getShaderInfoLog\"]($2); })"
+        js_getShaderInfoLog :: WebGLRenderingContextBase -> WebGLShader -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderInfoLog MDN WebGLRenderingContextBase.getShaderInfoLog documentation>
+getShaderInfoLog :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m (Maybe result)
+getShaderInfoLog self shader = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getShaderInfoLog ((Types.toWebGLRenderingContextBase self)) (shader))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderInfoLog MDN WebGLRenderingContextBase.getShaderInfoLog documentation>
+getShaderInfoLog_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> m ()
+getShaderInfoLog_ self shader = liftDOM (void ((js_getShaderInfoLog ((Types.toWebGLRenderingContextBase self)) (shader))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderInfoLog MDN WebGLRenderingContextBase.getShaderInfoLog documentation>
+getShaderInfoLogUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> WebGLShader -> m result
+getShaderInfoLogUnsafe self shader = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getShaderInfoLog ((Types.toWebGLRenderingContextBase self)) (shader))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderInfoLog MDN WebGLRenderingContextBase.getShaderInfoLog documentation>
+getShaderInfoLogUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m result
+getShaderInfoLogUnchecked self shader = liftDOM ((pFromJSVal <$> (js_getShaderInfoLog ((Types.toWebGLRenderingContextBase self)) (shader))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getShaderParameter\"]($2, $3); })"
+        js_getShaderParameter :: WebGLRenderingContextBase -> WebGLShader -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderParameter MDN WebGLRenderingContextBase.getShaderParameter documentation>
+getShaderParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> Word -> m JSVal
+getShaderParameter self shader pname = liftDOM ((js_getShaderParameter ((Types.toWebGLRenderingContextBase self)) (shader) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderParameter MDN WebGLRenderingContextBase.getShaderParameter documentation>
+getShaderParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> Word -> m ()
+getShaderParameter_ self shader pname = liftDOM (void ((js_getShaderParameter ((Types.toWebGLRenderingContextBase self)) (shader) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getShaderPrecisionFormat\"]($2, $3); })"
+        js_getShaderPrecisionFormat :: WebGLRenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderPrecisionFormat MDN WebGLRenderingContextBase.getShaderPrecisionFormat documentation>
+getShaderPrecisionFormat :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m (Maybe WebGLShaderPrecisionFormat)
+getShaderPrecisionFormat self shadertype precisiontype = liftDOM (((js_getShaderPrecisionFormat ((Types.toWebGLRenderingContextBase self)) (shadertype) (precisiontype)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderPrecisionFormat MDN WebGLRenderingContextBase.getShaderPrecisionFormat documentation>
+getShaderPrecisionFormat_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+getShaderPrecisionFormat_ self shadertype precisiontype = liftDOM (void ((js_getShaderPrecisionFormat ((Types.toWebGLRenderingContextBase self)) (shadertype) (precisiontype))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderPrecisionFormat MDN WebGLRenderingContextBase.getShaderPrecisionFormat documentation>
+getShaderPrecisionFormatUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) => self -> Word -> Word -> m WebGLShaderPrecisionFormat
+getShaderPrecisionFormatUnsafe self shadertype precisiontype = liftDOM ((((js_getShaderPrecisionFormat ((Types.toWebGLRenderingContextBase self)) (shadertype) (precisiontype)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderPrecisionFormat MDN WebGLRenderingContextBase.getShaderPrecisionFormat documentation>
+getShaderPrecisionFormatUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m WebGLShaderPrecisionFormat
+getShaderPrecisionFormatUnchecked self shadertype precisiontype = liftDOM ((pFromJSVal <$> (js_getShaderPrecisionFormat ((Types.toWebGLRenderingContextBase self)) (shadertype) (precisiontype))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"getShaderSource\"]($2); })"
+        js_getShaderSource :: WebGLRenderingContextBase -> WebGLShader -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderSource MDN WebGLRenderingContextBase.getShaderSource documentation>
+getShaderSource :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m (Maybe result)
+getShaderSource self shader = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getShaderSource ((Types.toWebGLRenderingContextBase self)) (shader))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderSource MDN WebGLRenderingContextBase.getShaderSource documentation>
+getShaderSource_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> m ()
+getShaderSource_ self shader = liftDOM (void ((js_getShaderSource ((Types.toWebGLRenderingContextBase self)) (shader))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderSource MDN WebGLRenderingContextBase.getShaderSource documentation>
+getShaderSourceUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> WebGLShader -> m result
+getShaderSourceUnsafe self shader = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getShaderSource ((Types.toWebGLRenderingContextBase self)) (shader))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getShaderSource MDN WebGLRenderingContextBase.getShaderSource documentation>
+getShaderSourceUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m result
+getShaderSourceUnchecked self shader = liftDOM ((pFromJSVal <$> (js_getShaderSource ((Types.toWebGLRenderingContextBase self)) (shader))))
+
+foreign import javascript safe "(($1) => { return $1[\"getSupportedExtensions\"](); })"
+        js_getSupportedExtensions :: WebGLRenderingContextBase -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getSupportedExtensions MDN WebGLRenderingContextBase.getSupportedExtensions documentation>
+getSupportedExtensions :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> m (Maybe [result])
+getSupportedExtensions self = liftDOM (((js_getSupportedExtensions ((Types.toWebGLRenderingContextBase self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getSupportedExtensions MDN WebGLRenderingContextBase.getSupportedExtensions documentation>
+getSupportedExtensions_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+getSupportedExtensions_ self = liftDOM (void ((js_getSupportedExtensions ((Types.toWebGLRenderingContextBase self)))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getSupportedExtensions MDN WebGLRenderingContextBase.getSupportedExtensions documentation>
+getSupportedExtensionsUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> m [result]
+getSupportedExtensionsUnsafe self = liftDOM ((((js_getSupportedExtensions ((Types.toWebGLRenderingContextBase self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getSupportedExtensions MDN WebGLRenderingContextBase.getSupportedExtensions documentation>
+getSupportedExtensionsUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> m [result]
+getSupportedExtensionsUnchecked self = liftDOM (((js_getSupportedExtensions ((Types.toWebGLRenderingContextBase self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getTexParameter\"]($2, $3); })"
+        js_getTexParameter :: WebGLRenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getTexParameter MDN WebGLRenderingContextBase.getTexParameter documentation>
+getTexParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal
+getTexParameter self target pname = liftDOM ((js_getTexParameter ((Types.toWebGLRenderingContextBase self)) (target) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getTexParameter MDN WebGLRenderingContextBase.getTexParameter documentation>
+getTexParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+getTexParameter_ self target pname = liftDOM (void ((js_getTexParameter ((Types.toWebGLRenderingContextBase self)) (target) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getUniform\"]($2, $3); })"
+        js_getUniform :: WebGLRenderingContextBase -> WebGLProgram -> WebGLUniformLocation -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getUniform MDN WebGLRenderingContextBase.getUniform documentation>
+getUniform :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLUniformLocation -> m JSVal
+getUniform self program location = liftDOM ((js_getUniform ((Types.toWebGLRenderingContextBase self)) (program) (location)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getUniform MDN WebGLRenderingContextBase.getUniform documentation>
+getUniform_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLUniformLocation -> m ()
+getUniform_ self program location = liftDOM (void ((js_getUniform ((Types.toWebGLRenderingContextBase self)) (program) (location))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getUniformLocation\"]($2, $3); })"
+        js_getUniformLocation :: WebGLRenderingContextBase -> WebGLProgram -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getUniformLocation MDN WebGLRenderingContextBase.getUniformLocation documentation>
+getUniformLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m (Maybe WebGLUniformLocation)
+getUniformLocation self program name = liftDOM (((js_getUniformLocation ((Types.toWebGLRenderingContextBase self)) (program) (toJSString name)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getUniformLocation MDN WebGLRenderingContextBase.getUniformLocation documentation>
+getUniformLocation_ :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m ()
+getUniformLocation_ self program name = liftDOM (void ((js_getUniformLocation ((Types.toWebGLRenderingContextBase self)) (program) (toJSString name))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getUniformLocation MDN WebGLRenderingContextBase.getUniformLocation documentation>
+getUniformLocationUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name, HasCallStack) => self -> WebGLProgram -> name -> m WebGLUniformLocation
+getUniformLocationUnsafe self program name = liftDOM ((((js_getUniformLocation ((Types.toWebGLRenderingContextBase self)) (program) (toJSString name)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getUniformLocation MDN WebGLRenderingContextBase.getUniformLocation documentation>
+getUniformLocationUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m WebGLUniformLocation
+getUniformLocationUnchecked self program name = liftDOM ((pFromJSVal <$> (js_getUniformLocation ((Types.toWebGLRenderingContextBase self)) (program) (toJSString name))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getVertexAttrib\"]($2, $3); })"
+        js_getVertexAttrib :: WebGLRenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getVertexAttrib MDN WebGLRenderingContextBase.getVertexAttrib documentation>
+getVertexAttrib :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal
+getVertexAttrib self index pname = liftDOM ((js_getVertexAttrib ((Types.toWebGLRenderingContextBase self)) (index) (pname)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getVertexAttrib MDN WebGLRenderingContextBase.getVertexAttrib documentation>
+getVertexAttrib_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+getVertexAttrib_ self index pname = liftDOM (void ((js_getVertexAttrib ((Types.toWebGLRenderingContextBase self)) (index) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getVertexAttribOffset\"]($2, $3); })"
+        js_getVertexAttribOffset :: WebGLRenderingContextBase -> Word -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getVertexAttribOffset MDN WebGLRenderingContextBase.getVertexAttribOffset documentation>
+getVertexAttribOffset :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m Int53
+getVertexAttribOffset self index pname = liftDOM (((js_getVertexAttribOffset ((Types.toWebGLRenderingContextBase self)) (index) (pname)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getVertexAttribOffset MDN WebGLRenderingContextBase.getVertexAttribOffset documentation>
+getVertexAttribOffset_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+getVertexAttribOffset_ self index pname = liftDOM (void ((js_getVertexAttribOffset ((Types.toWebGLRenderingContextBase self)) (index) (pname))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"hint\"]($2, $3); })"
+        js_hint :: WebGLRenderingContextBase -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/hint MDN WebGLRenderingContextBase.hint documentation>
+hint :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+hint self target mode = liftDOM (void ((js_hint ((Types.toWebGLRenderingContextBase self)) (target) (mode))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isBuffer\"]($2); })"
+        js_isBuffer :: WebGLRenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isBuffer MDN WebGLRenderingContextBase.isBuffer documentation>
+isBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLBuffer -> m Bool
+isBuffer self buffer = liftDOM (((toJSVal buffer) >>= \a2' -> js_isBuffer ((Types.toWebGLRenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isBuffer MDN WebGLRenderingContextBase.isBuffer documentation>
+isBuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLBuffer -> m ()
+isBuffer_ self buffer = liftDOM (void (((toJSVal buffer) >>= \a2' -> js_isBuffer ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1) => { return $1[\"isContextLost\"](); })"
+        js_isContextLost :: WebGLRenderingContextBase -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isContextLost MDN WebGLRenderingContextBase.isContextLost documentation>
+isContextLost :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Bool
+isContextLost self = liftDOM ((js_isContextLost ((Types.toWebGLRenderingContextBase self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isContextLost MDN WebGLRenderingContextBase.isContextLost documentation>
+isContextLost_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+isContextLost_ self = liftDOM (void ((js_isContextLost ((Types.toWebGLRenderingContextBase self)))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isEnabled\"]($2); })"
+        js_isEnabled :: WebGLRenderingContextBase -> Word -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isEnabled MDN WebGLRenderingContextBase.isEnabled documentation>
+isEnabled :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m Bool
+isEnabled self cap = liftDOM ((js_isEnabled ((Types.toWebGLRenderingContextBase self)) (cap)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isEnabled MDN WebGLRenderingContextBase.isEnabled documentation>
+isEnabled_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+isEnabled_ self cap = liftDOM (void ((js_isEnabled ((Types.toWebGLRenderingContextBase self)) (cap))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isFramebuffer\"]($2); })"
+        js_isFramebuffer :: WebGLRenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isFramebuffer MDN WebGLRenderingContextBase.isFramebuffer documentation>
+isFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLFramebuffer -> m Bool
+isFramebuffer self framebuffer = liftDOM (((toJSVal framebuffer) >>= \a2' -> js_isFramebuffer ((Types.toWebGLRenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isFramebuffer MDN WebGLRenderingContextBase.isFramebuffer documentation>
+isFramebuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLFramebuffer -> m ()
+isFramebuffer_ self framebuffer = liftDOM (void (((toJSVal framebuffer) >>= \a2' -> js_isFramebuffer ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isProgram\"]($2); })"
+        js_isProgram :: WebGLRenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isProgram MDN WebGLRenderingContextBase.isProgram documentation>
+isProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m Bool
+isProgram self program = liftDOM (((toJSVal program) >>= \a2' -> js_isProgram ((Types.toWebGLRenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isProgram MDN WebGLRenderingContextBase.isProgram documentation>
+isProgram_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m ()
+isProgram_ self program = liftDOM (void (((toJSVal program) >>= \a2' -> js_isProgram ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isRenderbuffer\"]($2); })"
+        js_isRenderbuffer :: WebGLRenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isRenderbuffer MDN WebGLRenderingContextBase.isRenderbuffer documentation>
+isRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLRenderbuffer -> m Bool
+isRenderbuffer self renderbuffer = liftDOM (((toJSVal renderbuffer) >>= \a2' -> js_isRenderbuffer ((Types.toWebGLRenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isRenderbuffer MDN WebGLRenderingContextBase.isRenderbuffer documentation>
+isRenderbuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLRenderbuffer -> m ()
+isRenderbuffer_ self renderbuffer = liftDOM (void (((toJSVal renderbuffer) >>= \a2' -> js_isRenderbuffer ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isShader\"]($2); })"
+        js_isShader :: WebGLRenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isShader MDN WebGLRenderingContextBase.isShader documentation>
+isShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m Bool
+isShader self shader = liftDOM (((toJSVal shader) >>= \a2' -> js_isShader ((Types.toWebGLRenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isShader MDN WebGLRenderingContextBase.isShader documentation>
+isShader_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m ()
+isShader_ self shader = liftDOM (void (((toJSVal shader) >>= \a2' -> js_isShader ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"isTexture\"]($2); })"
+        js_isTexture :: WebGLRenderingContextBase -> JSVal -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isTexture MDN WebGLRenderingContextBase.isTexture documentation>
+isTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLTexture -> m Bool
+isTexture self texture = liftDOM (((toJSVal texture) >>= \a2' -> js_isTexture ((Types.toWebGLRenderingContextBase self)) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isTexture MDN WebGLRenderingContextBase.isTexture documentation>
+isTexture_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLTexture -> m ()
+isTexture_ self texture = liftDOM (void (((toJSVal texture) >>= \a2' -> js_isTexture ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"lineWidth\"]($2); })"
+        js_lineWidth :: WebGLRenderingContextBase -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/lineWidth MDN WebGLRenderingContextBase.lineWidth documentation>
+lineWidth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> m ()
+lineWidth self width = liftDOM (void ((js_lineWidth ((Types.toWebGLRenderingContextBase self)) (width))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"linkProgram\"]($2); })"
+        js_linkProgram :: WebGLRenderingContextBase -> WebGLProgram -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/linkProgram MDN WebGLRenderingContextBase.linkProgram documentation>
+linkProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()
+linkProgram self program = liftDOM (void ((js_linkProgram ((Types.toWebGLRenderingContextBase self)) (program))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"pixelStorei\"]($2, $3); })"
+        js_pixelStorei :: WebGLRenderingContextBase -> Word -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/pixelStorei MDN WebGLRenderingContextBase.pixelStorei documentation>
+pixelStorei :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> m ()
+pixelStorei self pname param = liftDOM (void ((js_pixelStorei ((Types.toWebGLRenderingContextBase self)) (pname) (param))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"polygonOffset\"]($2, $3); })"
+        js_polygonOffset :: WebGLRenderingContextBase -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/polygonOffset MDN WebGLRenderingContextBase.polygonOffset documentation>
+polygonOffset :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> m ()
+polygonOffset self factor units = liftDOM (void ((js_polygonOffset ((Types.toWebGLRenderingContextBase self)) (factor) (units))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"renderbufferStorage\"]($2, $3, $4, $5); })"
+        js_renderbufferStorage :: WebGLRenderingContextBase -> Word -> Word -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/renderbufferStorage MDN WebGLRenderingContextBase.renderbufferStorage documentation>
+renderbufferStorage :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Int -> Int -> m ()
+renderbufferStorage self target internalformat width height = liftDOM (void ((js_renderbufferStorage ((Types.toWebGLRenderingContextBase self)) (target) (internalformat) (width) (height))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"sampleCoverage\"]($2, $3); })"
+        js_sampleCoverage :: WebGLRenderingContextBase -> Float -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/sampleCoverage MDN WebGLRenderingContextBase.sampleCoverage documentation>
+sampleCoverage :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Bool -> m ()
+sampleCoverage self value invert = liftDOM (void ((js_sampleCoverage ((Types.toWebGLRenderingContextBase self)) (value) (invert))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"scissor\"]($2, $3, $4, $5); })"
+        js_scissor :: WebGLRenderingContextBase -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/scissor MDN WebGLRenderingContextBase.scissor documentation>
+scissor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Int -> Int -> Int -> Int -> m ()
+scissor self x y width height = liftDOM (void ((js_scissor ((Types.toWebGLRenderingContextBase self)) (x) (y) (width) (height))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"shaderSource\"]($2, $3); })"
+        js_shaderSource :: WebGLRenderingContextBase -> WebGLShader -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/shaderSource MDN WebGLRenderingContextBase.shaderSource documentation>
+shaderSource :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString source) => self -> WebGLShader -> source -> m ()
+shaderSource self shader source = liftDOM (void ((js_shaderSource ((Types.toWebGLRenderingContextBase self)) (shader) (toJSString source))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"stencilFunc\"]($2, $3, $4); })"
+        js_stencilFunc :: WebGLRenderingContextBase -> Word -> Int -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/stencilFunc MDN WebGLRenderingContextBase.stencilFunc documentation>
+stencilFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> m ()
+stencilFunc self func ref mask = liftDOM (void ((js_stencilFunc ((Types.toWebGLRenderingContextBase self)) (func) (ref) (mask))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"stencilFuncSeparate\"]($2, $3, $4, $5); })"
+        js_stencilFuncSeparate :: WebGLRenderingContextBase -> Word -> Word -> Int -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/stencilFuncSeparate MDN WebGLRenderingContextBase.stencilFuncSeparate documentation>
+stencilFuncSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Int -> Word -> m ()
+stencilFuncSeparate self face func ref mask = liftDOM (void ((js_stencilFuncSeparate ((Types.toWebGLRenderingContextBase self)) (face) (func) (ref) (mask))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"stencilMask\"]($2); })"
+        js_stencilMask :: WebGLRenderingContextBase -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/stencilMask MDN WebGLRenderingContextBase.stencilMask documentation>
+stencilMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()
+stencilMask self mask = liftDOM (void ((js_stencilMask ((Types.toWebGLRenderingContextBase self)) (mask))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"stencilMaskSeparate\"]($2, $3); })"
+        js_stencilMaskSeparate :: WebGLRenderingContextBase -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/stencilMaskSeparate MDN WebGLRenderingContextBase.stencilMaskSeparate documentation>
+stencilMaskSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()
+stencilMaskSeparate self face mask = liftDOM (void ((js_stencilMaskSeparate ((Types.toWebGLRenderingContextBase self)) (face) (mask))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"stencilOp\"]($2, $3, $4); })"
+        js_stencilOp :: WebGLRenderingContextBase -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/stencilOp MDN WebGLRenderingContextBase.stencilOp documentation>
+stencilOp :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> m ()
+stencilOp self fail zfail zpass = liftDOM (void ((js_stencilOp ((Types.toWebGLRenderingContextBase self)) (fail) (zfail) (zpass))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"stencilOpSeparate\"]($2, $3, $4, $5); })"
+        js_stencilOpSeparate :: WebGLRenderingContextBase -> Word -> Word -> Word -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/stencilOpSeparate MDN WebGLRenderingContextBase.stencilOpSeparate documentation>
+stencilOpSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Word -> m ()
+stencilOpSeparate self face fail zfail zpass = liftDOM (void ((js_stencilOpSeparate ((Types.toWebGLRenderingContextBase self)) (face) (fail) (zfail) (zpass))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"texParameterf\"]($2, $3, $4); })"
+        js_texParameterf :: WebGLRenderingContextBase -> Word -> Word -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texParameter MDN WebGLRenderingContextBase.texParameterf documentation>
+texParameterf :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Float -> m ()
+texParameterf self target pname param = liftDOM (void ((js_texParameterf ((Types.toWebGLRenderingContextBase self)) (target) (pname) (param))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"texParameteri\"]($2, $3, $4); })"
+        js_texParameteri :: WebGLRenderingContextBase -> Word -> Word -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texParameter MDN WebGLRenderingContextBase.texParameteri documentation>
+texParameteri :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Int -> m ()
+texParameteri self target pname param = liftDOM (void ((js_texParameteri ((Types.toWebGLRenderingContextBase self)) (target) (pname) (param))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform1f\"]($2, $3); })"
+        js_uniform1f :: WebGLRenderingContextBase -> JSVal -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform1f documentation>
+uniform1f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> m ()
+uniform1f self location x = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform1f ((Types.toWebGLRenderingContextBase self)) a2' (x))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform1i\"]($2, $3); })"
+        js_uniform1i :: WebGLRenderingContextBase -> JSVal -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform1i documentation>
+uniform1i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> m ()
+uniform1i self location x = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform1i ((Types.toWebGLRenderingContextBase self)) a2' (x))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniform2f\"]($2, $3, $4); })"
+        js_uniform2f :: WebGLRenderingContextBase -> JSVal -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform2f documentation>
+uniform2f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> Float -> m ()
+uniform2f self location x y = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform2f ((Types.toWebGLRenderingContextBase self)) a2' (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniform2i\"]($2, $3, $4); })"
+        js_uniform2i :: WebGLRenderingContextBase -> JSVal -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform2i documentation>
+uniform2i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> Int -> m ()
+uniform2i self location x y = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform2i ((Types.toWebGLRenderingContextBase self)) a2' (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform3f\"]($2, $3, $4, $5); })"
+        js_uniform3f :: WebGLRenderingContextBase -> JSVal -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform3f documentation>
+uniform3f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> Float -> Float -> m ()
+uniform3f self location x y z = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform3f ((Types.toWebGLRenderingContextBase self)) a2' (x) (y) (z))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"uniform3i\"]($2, $3, $4, $5); })"
+        js_uniform3i :: WebGLRenderingContextBase -> JSVal -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform3i documentation>
+uniform3i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> Int -> Int -> m ()
+uniform3i self location x y z = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform3i ((Types.toWebGLRenderingContextBase self)) a2' (x) (y) (z))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4f\"]($2, $3, $4, $5, $6); })"
+        js_uniform4f :: WebGLRenderingContextBase -> JSVal -> Float -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform4f documentation>
+uniform4f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> Float -> Float -> Float -> m ()
+uniform4f self location x y z w = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform4f ((Types.toWebGLRenderingContextBase self)) a2' (x) (y) (z) (w))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4i\"]($2, $3, $4, $5, $6); })"
+        js_uniform4i :: WebGLRenderingContextBase -> JSVal -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextBase.uniform4i documentation>
+uniform4i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> Int -> Int -> Int -> m ()
+uniform4i self location x y z w = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform4i ((Types.toWebGLRenderingContextBase self)) a2' (x) (y) (z) (w))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"useProgram\"]($2); })"
+        js_useProgram :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/useProgram MDN WebGLRenderingContextBase.useProgram documentation>
+useProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m ()
+useProgram self program = liftDOM (void (((toJSVal program) >>= \a2' -> js_useProgram ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"validateProgram\"]($2); })"
+        js_validateProgram :: WebGLRenderingContextBase -> WebGLProgram -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/validateProgram MDN WebGLRenderingContextBase.validateProgram documentation>
+validateProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()
+validateProgram self program = liftDOM (void ((js_validateProgram ((Types.toWebGLRenderingContextBase self)) (program))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttrib1f\"]($2, $3); })"
+        js_vertexAttrib1f :: WebGLRenderingContextBase -> Word -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib1f documentation>
+vertexAttrib1f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> m ()
+vertexAttrib1f self index x = liftDOM (void ((js_vertexAttrib1f ((Types.toWebGLRenderingContextBase self)) (index) (x))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttrib1fv\"]($2, $3); })"
+        js_vertexAttrib1fv :: WebGLRenderingContextBase -> Word -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib1fv documentation>
+vertexAttrib1fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()
+vertexAttrib1fv self index values = liftDOM (void ((js_vertexAttrib1fv ((Types.toWebGLRenderingContextBase self)) (index) (Types.toFloat32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"vertexAttrib2f\"]($2, $3, $4); })"
+        js_vertexAttrib2f :: WebGLRenderingContextBase -> Word -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib2f documentation>
+vertexAttrib2f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> Float -> m ()
+vertexAttrib2f self index x y = liftDOM (void ((js_vertexAttrib2f ((Types.toWebGLRenderingContextBase self)) (index) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttrib2fv\"]($2, $3); })"
+        js_vertexAttrib2fv :: WebGLRenderingContextBase -> Word -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib2fv documentation>
+vertexAttrib2fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()
+vertexAttrib2fv self index values = liftDOM (void ((js_vertexAttrib2fv ((Types.toWebGLRenderingContextBase self)) (index) (Types.toFloat32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"vertexAttrib3f\"]($2, $3, $4, $5); })"
+        js_vertexAttrib3f :: WebGLRenderingContextBase -> Word -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib3f documentation>
+vertexAttrib3f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> Float -> Float -> m ()
+vertexAttrib3f self index x y z = liftDOM (void ((js_vertexAttrib3f ((Types.toWebGLRenderingContextBase self)) (index) (x) (y) (z))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttrib3fv\"]($2, $3); })"
+        js_vertexAttrib3fv :: WebGLRenderingContextBase -> Word -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib3fv documentation>
+vertexAttrib3fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()
+vertexAttrib3fv self index values = liftDOM (void ((js_vertexAttrib3fv ((Types.toWebGLRenderingContextBase self)) (index) (Types.toFloat32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttrib4f\"]($2, $3, $4, $5, $6); })"
+        js_vertexAttrib4f :: WebGLRenderingContextBase -> Word -> Float -> Float -> Float -> Float -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib4f documentation>
+vertexAttrib4f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> Float -> Float -> Float -> m ()
+vertexAttrib4f self index x y z w = liftDOM (void ((js_vertexAttrib4f ((Types.toWebGLRenderingContextBase self)) (index) (x) (y) (z) (w))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"vertexAttrib4fv\"]($2, $3); })"
+        js_vertexAttrib4fv :: WebGLRenderingContextBase -> Word -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttrib MDN WebGLRenderingContextBase.vertexAttrib4fv documentation>
+vertexAttrib4fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()
+vertexAttrib4fv self index values = liftDOM (void ((js_vertexAttrib4fv ((Types.toWebGLRenderingContextBase self)) (index) (Types.toFloat32List values))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"vertexAttribPointer\"]($2, $3, $4, $5, $6, $7); })"
+        js_vertexAttribPointer :: WebGLRenderingContextBase -> Word -> Int -> Word -> Bool -> Int -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/vertexAttribPointer MDN WebGLRenderingContextBase.vertexAttribPointer documentation>
+vertexAttribPointer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> Bool -> Int -> Int53 -> m ()
+vertexAttribPointer self index size type' normalized stride offset = liftDOM (void (((toJSVal offset) >>= \a7' -> js_vertexAttribPointer ((Types.toWebGLRenderingContextBase self)) (index) (size) (type') (normalized) (stride) a7')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"viewport\"]($2, $3, $4, $5); })"
+        js_viewport :: WebGLRenderingContextBase -> Int -> Int -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/viewport MDN WebGLRenderingContextBase.viewport documentation>
+viewport :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Int -> Int -> Int -> Int -> m ()
+viewport self x y width height = liftDOM (void ((js_viewport ((Types.toWebGLRenderingContextBase self)) (x) (y) (width) (height))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })"
+        js_getCanvas :: WebGLRenderingContextBase -> IO HTMLCanvasElementOrOffscreenCanvas
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/canvas MDN WebGLRenderingContextBase.canvas documentation>
+getCanvas :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m HTMLCanvasElementOrOffscreenCanvas
+getCanvas self = liftDOM ((js_getCanvas ((Types.toWebGLRenderingContextBase self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"drawingBufferWidth\"]; })"
+        js_getDrawingBufferWidth :: WebGLRenderingContextBase -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/drawingBufferWidth MDN WebGLRenderingContextBase.drawingBufferWidth documentation>
+getDrawingBufferWidth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Int
+getDrawingBufferWidth self = liftDOM ((js_getDrawingBufferWidth ((Types.toWebGLRenderingContextBase self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"drawingBufferHeight\"]; })"
+        js_getDrawingBufferHeight :: WebGLRenderingContextBase -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/drawingBufferHeight MDN WebGLRenderingContextBase.drawingBufferHeight documentation>
+getDrawingBufferHeight :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Int
+getDrawingBufferHeight self = liftDOM ((js_getDrawingBufferHeight ((Types.toWebGLRenderingContextBase self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"drawingBufferColorSpace\"] = $2; })"
+        js_setDrawingBufferColorSpace :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/drawingBufferColorSpace MDN WebGLRenderingContextBase.drawingBufferColorSpace documentation>
+setDrawingBufferColorSpace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> PredefinedColorSpace -> m ()
+setDrawingBufferColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDrawingBufferColorSpace ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"drawingBufferColorSpace\"]; })"
+        js_getDrawingBufferColorSpace :: WebGLRenderingContextBase -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/drawingBufferColorSpace MDN WebGLRenderingContextBase.drawingBufferColorSpace documentation>
+getDrawingBufferColorSpace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m PredefinedColorSpace
+getDrawingBufferColorSpace self = liftDOM (((js_getDrawingBufferColorSpace ((Types.toWebGLRenderingContextBase self))) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"unpackColorSpace\"] = $2; })"
+        js_setUnpackColorSpace :: WebGLRenderingContextBase -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/unpackColorSpace MDN WebGLRenderingContextBase.unpackColorSpace documentation>
+setUnpackColorSpace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> PredefinedColorSpace -> m ()
+setUnpackColorSpace self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setUnpackColorSpace ((Types.toWebGLRenderingContextBase self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"unpackColorSpace\"]; })"
+        js_getUnpackColorSpace :: WebGLRenderingContextBase -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/unpackColorSpace MDN WebGLRenderingContextBase.unpackColorSpace documentation>
+getUnpackColorSpace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m PredefinedColorSpace
+getUnpackColorSpace self = liftDOM (((js_getUnpackColorSpace ((Types.toWebGLRenderingContextBase self))) >>= fromJSValUnchecked))
+
+pattern DEPTH_BUFFER_BIT = 0x00000100
+
+pattern STENCIL_BUFFER_BIT = 0x00000400
+
+pattern COLOR_BUFFER_BIT = 0x00004000
+
+pattern POINTS = 0x0000
+
+pattern LINES = 0x0001
+
+pattern LINE_LOOP = 0x0002
+
+pattern LINE_STRIP = 0x0003
+
+pattern TRIANGLES = 0x0004
+
+pattern TRIANGLE_STRIP = 0x0005
+
+pattern TRIANGLE_FAN = 0x0006
+
+pattern ZERO = 0
+
+pattern ONE = 1
+
+pattern SRC_COLOR = 0x0300
+
+pattern ONE_MINUS_SRC_COLOR = 0x0301
+
+pattern SRC_ALPHA = 0x0302
+
+pattern ONE_MINUS_SRC_ALPHA = 0x0303
+
+pattern DST_ALPHA = 0x0304
+
+pattern ONE_MINUS_DST_ALPHA = 0x0305
+
+pattern DST_COLOR = 0x0306
+
+pattern ONE_MINUS_DST_COLOR = 0x0307
+
+pattern SRC_ALPHA_SATURATE = 0x0308
+
+pattern FUNC_ADD = 0x8006
+
+pattern BLEND_EQUATION = 0x8009
+
+pattern BLEND_EQUATION_RGB = 0x8009
+
+pattern BLEND_EQUATION_ALPHA = 0x883D
+
+pattern FUNC_SUBTRACT = 0x800A
+
+pattern FUNC_REVERSE_SUBTRACT = 0x800B
+
+pattern BLEND_DST_RGB = 0x80C8
+
+pattern BLEND_SRC_RGB = 0x80C9
+
+pattern BLEND_DST_ALPHA = 0x80CA
+
+pattern BLEND_SRC_ALPHA = 0x80CB
+
+pattern CONSTANT_COLOR = 0x8001
+
+pattern ONE_MINUS_CONSTANT_COLOR = 0x8002
+
+pattern CONSTANT_ALPHA = 0x8003
+
+pattern ONE_MINUS_CONSTANT_ALPHA = 0x8004
+
+pattern BLEND_COLOR = 0x8005
+
+pattern ARRAY_BUFFER = 0x8892
+
+pattern ELEMENT_ARRAY_BUFFER = 0x8893
+
+pattern ARRAY_BUFFER_BINDING = 0x8894
+
+pattern ELEMENT_ARRAY_BUFFER_BINDING = 0x8895
+
+pattern STREAM_DRAW = 0x88E0
+
+pattern STATIC_DRAW = 0x88E4
+
+pattern DYNAMIC_DRAW = 0x88E8
+
+pattern BUFFER_SIZE = 0x8764
+
+pattern BUFFER_USAGE = 0x8765
+
+pattern CURRENT_VERTEX_ATTRIB = 0x8626
+
+pattern FRONT = 0x0404
+
+pattern BACK = 0x0405
+
+pattern FRONT_AND_BACK = 0x0408
+
+pattern CULL_FACE = 0x0B44
+
+pattern BLEND = 0x0BE2
+
+pattern DITHER = 0x0BD0
+
+pattern STENCIL_TEST = 0x0B90
+
+pattern DEPTH_TEST = 0x0B71
+
+pattern SCISSOR_TEST = 0x0C11
+
+pattern POLYGON_OFFSET_FILL = 0x8037
+
+pattern SAMPLE_ALPHA_TO_COVERAGE = 0x809E
+
+pattern SAMPLE_COVERAGE = 0x80A0
+
+pattern NO_ERROR = 0
+
+pattern INVALID_ENUM = 0x0500
+
+pattern INVALID_VALUE = 0x0501
+
+pattern INVALID_OPERATION = 0x0502
+
+pattern OUT_OF_MEMORY = 0x0505
+
+pattern CW = 0x0900
+
+pattern CCW = 0x0901
+
+pattern LINE_WIDTH = 0x0B21
+
+pattern ALIASED_POINT_SIZE_RANGE = 0x846D
+
+pattern ALIASED_LINE_WIDTH_RANGE = 0x846E
+
+pattern CULL_FACE_MODE = 0x0B45
+
+pattern FRONT_FACE = 0x0B46
+
+pattern DEPTH_RANGE = 0x0B70
+
+pattern DEPTH_WRITEMASK = 0x0B72
+
+pattern DEPTH_CLEAR_VALUE = 0x0B73
+
+pattern DEPTH_FUNC = 0x0B74
+
+pattern STENCIL_CLEAR_VALUE = 0x0B91
+
+pattern STENCIL_FUNC = 0x0B92
+
+pattern STENCIL_FAIL = 0x0B94
+
+pattern STENCIL_PASS_DEPTH_FAIL = 0x0B95
+
+pattern STENCIL_PASS_DEPTH_PASS = 0x0B96
+
+pattern STENCIL_REF = 0x0B97
+
+pattern STENCIL_VALUE_MASK = 0x0B93
+
+pattern STENCIL_WRITEMASK = 0x0B98
+
+pattern STENCIL_BACK_FUNC = 0x8800
+
+pattern STENCIL_BACK_FAIL = 0x8801
+
+pattern STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802
+
+pattern STENCIL_BACK_PASS_DEPTH_PASS = 0x8803
+
+pattern STENCIL_BACK_REF = 0x8CA3
+
+pattern STENCIL_BACK_VALUE_MASK = 0x8CA4
+
+pattern STENCIL_BACK_WRITEMASK = 0x8CA5
+
+pattern VIEWPORT = 0x0BA2
+
+pattern SCISSOR_BOX = 0x0C10
+
+pattern COLOR_CLEAR_VALUE = 0x0C22
+
+pattern COLOR_WRITEMASK = 0x0C23
+
+pattern UNPACK_ALIGNMENT = 0x0CF5
+
+pattern PACK_ALIGNMENT = 0x0D05
+
+pattern MAX_TEXTURE_SIZE = 0x0D33
+
+pattern MAX_VIEWPORT_DIMS = 0x0D3A
+
+pattern SUBPIXEL_BITS = 0x0D50
+
+pattern RED_BITS = 0x0D52
+
+pattern GREEN_BITS = 0x0D53
+
+pattern BLUE_BITS = 0x0D54
+
+pattern ALPHA_BITS = 0x0D55
+
+pattern DEPTH_BITS = 0x0D56
+
+pattern STENCIL_BITS = 0x0D57
+
+pattern POLYGON_OFFSET_UNITS = 0x2A00
+
+pattern POLYGON_OFFSET_FACTOR = 0x8038
+
+pattern TEXTURE_BINDING_2D = 0x8069
+
+pattern SAMPLE_BUFFERS = 0x80A8
+
+pattern SAMPLES = 0x80A9
+
+pattern SAMPLE_COVERAGE_VALUE = 0x80AA
+
+pattern SAMPLE_COVERAGE_INVERT = 0x80AB
+
+pattern COMPRESSED_TEXTURE_FORMATS = 0x86A3
+
+pattern DONT_CARE = 0x1100
+
+pattern FASTEST = 0x1101
+
+pattern NICEST = 0x1102
+
+pattern GENERATE_MIPMAP_HINT = 0x8192
+
+pattern BYTE = 0x1400
+
+pattern UNSIGNED_BYTE = 0x1401
+
+pattern SHORT = 0x1402
+
+pattern UNSIGNED_SHORT = 0x1403
+
+pattern INT = 0x1404
+
+pattern UNSIGNED_INT = 0x1405
+
+pattern FLOAT = 0x1406
+
+pattern DEPTH_COMPONENT = 0x1902
+
+pattern ALPHA = 0x1906
+
+pattern RGB = 0x1907
+
+pattern RGBA = 0x1908
+
+pattern LUMINANCE = 0x1909
+
+pattern LUMINANCE_ALPHA = 0x190A
+
+pattern UNSIGNED_SHORT_4_4_4_4 = 0x8033
+
+pattern UNSIGNED_SHORT_5_5_5_1 = 0x8034
+
+pattern UNSIGNED_SHORT_5_6_5 = 0x8363
+
+pattern FRAGMENT_SHADER = 0x8B30
+
+pattern VERTEX_SHADER = 0x8B31
+
+pattern MAX_VERTEX_ATTRIBS = 0x8869
+
+pattern MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB
+
+pattern MAX_VARYING_VECTORS = 0x8DFC
+
+pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D
+
+pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C
+
+pattern MAX_TEXTURE_IMAGE_UNITS = 0x8872
+
+pattern MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD
+
+pattern SHADER_TYPE = 0x8B4F
+
+pattern DELETE_STATUS = 0x8B80
+
+pattern LINK_STATUS = 0x8B82
+
+pattern VALIDATE_STATUS = 0x8B83
+
+pattern ATTACHED_SHADERS = 0x8B85
+
+pattern ACTIVE_UNIFORMS = 0x8B86
+
+pattern ACTIVE_ATTRIBUTES = 0x8B89
+
+pattern SHADING_LANGUAGE_VERSION = 0x8B8C
+
+pattern CURRENT_PROGRAM = 0x8B8D
+
+pattern NEVER = 0x0200
+
+pattern LESS = 0x0201
+
+pattern EQUAL = 0x0202
+
+pattern LEQUAL = 0x0203
+
+pattern GREATER = 0x0204
+
+pattern NOTEQUAL = 0x0205
+
+pattern GEQUAL = 0x0206
+
+pattern ALWAYS = 0x0207
+
+pattern KEEP = 0x1E00
+
+pattern REPLACE = 0x1E01
+
+pattern INCR = 0x1E02
+
+pattern DECR = 0x1E03
+
+pattern INVERT = 0x150A
+
+pattern INCR_WRAP = 0x8507
+
+pattern DECR_WRAP = 0x8508
+
+pattern VENDOR = 0x1F00
+
+pattern RENDERER = 0x1F01
+
+pattern VERSION = 0x1F02
+
+pattern NEAREST = 0x2600
+
+pattern LINEAR = 0x2601
+
+pattern NEAREST_MIPMAP_NEAREST = 0x2700
+
+pattern LINEAR_MIPMAP_NEAREST = 0x2701
+
+pattern NEAREST_MIPMAP_LINEAR = 0x2702
+
+pattern LINEAR_MIPMAP_LINEAR = 0x2703
+
+pattern TEXTURE_MAG_FILTER = 0x2800
+
+pattern TEXTURE_MIN_FILTER = 0x2801
+
+pattern TEXTURE_WRAP_S = 0x2802
+
+pattern TEXTURE_WRAP_T = 0x2803
+
+pattern TEXTURE_2D = 0x0DE1
+
+pattern TEXTURE = 0x1702
+
+pattern TEXTURE_CUBE_MAP = 0x8513
+
+pattern TEXTURE_BINDING_CUBE_MAP = 0x8514
+
+pattern TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515
+
+pattern TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516
+
+pattern TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517
+
+pattern TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518
+
+pattern TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519
+
+pattern TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A
+
+pattern MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C
+
+pattern TEXTURE0 = 0x84C0
+
+pattern TEXTURE1 = 0x84C1
+
+pattern TEXTURE2 = 0x84C2
+
+pattern TEXTURE3 = 0x84C3
+
+pattern TEXTURE4 = 0x84C4
+
+pattern TEXTURE5 = 0x84C5
+
+pattern TEXTURE6 = 0x84C6
+
+pattern TEXTURE7 = 0x84C7
+
+pattern TEXTURE8 = 0x84C8
+
+pattern TEXTURE9 = 0x84C9
+
+pattern TEXTURE10 = 0x84CA
+
+pattern TEXTURE11 = 0x84CB
+
+pattern TEXTURE12 = 0x84CC
+
+pattern TEXTURE13 = 0x84CD
+
+pattern TEXTURE14 = 0x84CE
+
+pattern TEXTURE15 = 0x84CF
+
+pattern TEXTURE16 = 0x84D0
+
+pattern TEXTURE17 = 0x84D1
+
+pattern TEXTURE18 = 0x84D2
+
+pattern TEXTURE19 = 0x84D3
+
+pattern TEXTURE20 = 0x84D4
+
+pattern TEXTURE21 = 0x84D5
+
+pattern TEXTURE22 = 0x84D6
+
+pattern TEXTURE23 = 0x84D7
+
+pattern TEXTURE24 = 0x84D8
+
+pattern TEXTURE25 = 0x84D9
+
+pattern TEXTURE26 = 0x84DA
+
+pattern TEXTURE27 = 0x84DB
+
+pattern TEXTURE28 = 0x84DC
+
+pattern TEXTURE29 = 0x84DD
+
+pattern TEXTURE30 = 0x84DE
+
+pattern TEXTURE31 = 0x84DF
+
+pattern ACTIVE_TEXTURE = 0x84E0
+
+pattern REPEAT = 0x2901
+
+pattern CLAMP_TO_EDGE = 0x812F
+
+pattern MIRRORED_REPEAT = 0x8370
+
+pattern FLOAT_VEC2 = 0x8B50
+
+pattern FLOAT_VEC3 = 0x8B51
+
+pattern FLOAT_VEC4 = 0x8B52
+
+pattern INT_VEC2 = 0x8B53
+
+pattern INT_VEC3 = 0x8B54
+
+pattern INT_VEC4 = 0x8B55
+
+pattern BOOL = 0x8B56
+
+pattern BOOL_VEC2 = 0x8B57
+
+pattern BOOL_VEC3 = 0x8B58
+
+pattern BOOL_VEC4 = 0x8B59
+
+pattern FLOAT_MAT2 = 0x8B5A
+
+pattern FLOAT_MAT3 = 0x8B5B
+
+pattern FLOAT_MAT4 = 0x8B5C
+
+pattern SAMPLER_2D = 0x8B5E
+
+pattern SAMPLER_CUBE = 0x8B60
+
+pattern VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622
+
+pattern VERTEX_ATTRIB_ARRAY_SIZE = 0x8623
+
+pattern VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624
+
+pattern VERTEX_ATTRIB_ARRAY_TYPE = 0x8625
+
+pattern VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A
+
+pattern VERTEX_ATTRIB_ARRAY_POINTER = 0x8645
+
+pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F
+
+pattern IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A
+
+pattern IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B
+
+pattern COMPILE_STATUS = 0x8B81
+
+pattern LOW_FLOAT = 0x8DF0
+
+pattern MEDIUM_FLOAT = 0x8DF1
+
+pattern HIGH_FLOAT = 0x8DF2
+
+pattern LOW_INT = 0x8DF3
+
+pattern MEDIUM_INT = 0x8DF4
+
+pattern HIGH_INT = 0x8DF5
+
+pattern FRAMEBUFFER = 0x8D40
+
+pattern RENDERBUFFER = 0x8D41
+
+pattern RGBA4 = 0x8056
+
+pattern RGB5_A1 = 0x8057
+
+pattern RGBA8 = 0x8058
+
+pattern RGB565 = 0x8D62
+
+pattern DEPTH_COMPONENT16 = 0x81A5
+
+pattern STENCIL_INDEX8 = 0x8D48
+
+pattern DEPTH_STENCIL = 0x84F9
+
+pattern RENDERBUFFER_WIDTH = 0x8D42
+
+pattern RENDERBUFFER_HEIGHT = 0x8D43
+
+pattern RENDERBUFFER_INTERNAL_FORMAT = 0x8D44
+
+pattern RENDERBUFFER_RED_SIZE = 0x8D50
+
+pattern RENDERBUFFER_GREEN_SIZE = 0x8D51
+
+pattern RENDERBUFFER_BLUE_SIZE = 0x8D52
+
+pattern RENDERBUFFER_ALPHA_SIZE = 0x8D53
+
+pattern RENDERBUFFER_DEPTH_SIZE = 0x8D54
+
+pattern RENDERBUFFER_STENCIL_SIZE = 0x8D55
+
+pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0
+
+pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1
+
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2
+
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3
+
+pattern COLOR_ATTACHMENT0 = 0x8CE0
+
+pattern DEPTH_ATTACHMENT = 0x8D00
+
+pattern STENCIL_ATTACHMENT = 0x8D20
+
+pattern DEPTH_STENCIL_ATTACHMENT = 0x821A
+
+pattern NONE = 0
+
+pattern FRAMEBUFFER_COMPLETE = 0x8CD5
+
+pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6
+
+pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7
+
+pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9
+
+pattern FRAMEBUFFER_UNSUPPORTED = 0x8CDD
+
+pattern FRAMEBUFFER_BINDING = 0x8CA6
+
+pattern RENDERBUFFER_BINDING = 0x8CA7
+
+pattern MAX_RENDERBUFFER_SIZE = 0x84E8
+
+pattern INVALID_FRAMEBUFFER_OPERATION = 0x0506
+
+pattern UNPACK_FLIP_Y_WEBGL = 0x9240
+
+pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241
+
+pattern CONTEXT_LOST_WEBGL = 0x9242
+
+pattern UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243
+
+pattern BROWSER_DEFAULT_WEBGL = 0x9244
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextOverloads.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextOverloads.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextOverloads.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextOverloads
+       (js_bufferData, js_bufferDataData', js_bufferSubData, js_compressedTexImage2D, js_compressedTexSubImage2D, js_readPixels, js_texImage2D, js_texImage2DSource, js_texSubImage2D, js_texSubImage2DSource, js_uniform1fv, js_uniform1iv, js_uniform2fv, js_uniform2iv, js_uniform3fv, js_uniform3iv, js_uniform4fv, js_uniform4iv, js_uniformMatrix2fv, js_uniformMatrix3fv, js_uniformMatrix4fv, bufferData, bufferDataData', bufferSubData, compressedTexImage2D, compressedTexSubImage2D, readPixels, texImage2D, texImage2DSource, texSubImage2D, texSubImage2DSource, uniform1fv, uniform1iv, uniform2fv, uniform2iv, uniform3fv, uniform3iv, uniform4fv, uniform4iv, uniformMatrix2fv, uniformMatrix3fv, uniformMatrix4fv, WebGLRenderingContextOverloads(..), gTypeWebGLRenderingContextOverloads, IsWebGLRenderingContextOverloads, toWebGLRenderingContextOverloads)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferData :: WebGLRenderingContextOverloads -> Word -> JSVal -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bufferData MDN WebGLRenderingContextOverloads.bufferData documentation>
+bufferData :: (MonadDOM m, IsWebGLRenderingContextOverloads self) => self -> Word -> Int53 -> Word -> m ()
+bufferData self target size usage = liftDOM (void (((toJSVal size) >>= \a3' -> js_bufferData ((Types.toWebGLRenderingContextOverloads self)) (target) a3' (usage))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferDataData' :: WebGLRenderingContextOverloads -> Word -> JSVal -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bufferData MDN WebGLRenderingContextOverloads.bufferData documentation>
+bufferDataData' :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsAllowSharedBufferSource data') => self -> Word -> Maybe data' -> Word -> m ()
+bufferDataData' self target data' usage = liftDOM (void (((toJSVal data') >>= \a3' -> js_bufferDataData' ((Types.toWebGLRenderingContextOverloads self)) (target) a3' (usage))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"bufferSubData\"]($2, $3, $4); })"
+        js_bufferSubData :: WebGLRenderingContextOverloads -> Word -> JSVal -> AllowSharedBufferSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bufferSubData MDN WebGLRenderingContextOverloads.bufferSubData documentation>
+bufferSubData :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsAllowSharedBufferSource data') => self -> Word -> Int53 -> data' -> m ()
+bufferSubData self target offset data' = liftDOM (void (((toJSVal offset) >>= \a3' -> js_bufferSubData ((Types.toWebGLRenderingContextOverloads self)) (target) a3' (Types.toAllowSharedBufferSource data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"compressedTexImage2D\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_compressedTexImage2D :: WebGLRenderingContextOverloads -> Word -> Int -> Word -> Int -> Int -> Int -> ArrayBufferView -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/compressedTexImage2D MDN WebGLRenderingContextOverloads.compressedTexImage2D documentation>
+compressedTexImage2D :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsArrayBufferView data') => self -> Word -> Int -> Word -> Int -> Int -> Int -> data' -> m ()
+compressedTexImage2D self target level internalformat width height border data' = liftDOM (void ((js_compressedTexImage2D ((Types.toWebGLRenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (Types.toArrayBufferView data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"compressedTexSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9); })"
+        js_compressedTexSubImage2D :: WebGLRenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> ArrayBufferView -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/compressedTexSubImage2D MDN WebGLRenderingContextOverloads.compressedTexSubImage2D documentation>
+compressedTexSubImage2D :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsArrayBufferView data') => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> data' -> m ()
+compressedTexSubImage2D self target level xoffset yoffset width height format data' = liftDOM (void ((js_compressedTexSubImage2D ((Types.toWebGLRenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (Types.toArrayBufferView data'))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"readPixels\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_readPixels :: WebGLRenderingContextOverloads -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/readPixels MDN WebGLRenderingContextOverloads.readPixels documentation>
+readPixels :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsArrayBufferView pixels) => self -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe pixels -> m ()
+readPixels self x y width height format type' pixels = liftDOM (void (((toJSVal pixels) >>= \a8' -> js_readPixels ((Types.toWebGLRenderingContextOverloads self)) (x) (y) (width) (height) (format) (type') a8')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texImage2D :: WebGLRenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texImage2D MDN WebGLRenderingContextOverloads.texImage2D documentation>
+texImage2D :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsArrayBufferView pixels) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe pixels -> m ()
+texImage2D self target level internalformat width height border format type' pixels = liftDOM (void (((toJSVal pixels) >>= \a10' -> js_texImage2D ((Types.toWebGLRenderingContextOverloads self)) (target) (level) (internalformat) (width) (height) (border) (format) (type') a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"texImage2D\"]($2, $3, $4, $5, $6, $7); })"
+        js_texImage2DSource :: WebGLRenderingContextOverloads -> Word -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texImage2D MDN WebGLRenderingContextOverloads.texImage2D documentation>
+texImage2DSource :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsTexImageSource source) => self -> Word -> Int -> Int -> Word -> Word -> source -> m ()
+texImage2DSource self target level internalformat format type' source = liftDOM (void ((js_texImage2DSource ((Types.toWebGLRenderingContextOverloads self)) (target) (level) (internalformat) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texSubImage2D\"]($2, $3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_texSubImage2D :: WebGLRenderingContextOverloads -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texSubImage2D MDN WebGLRenderingContextOverloads.texSubImage2D documentation>
+texSubImage2D :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsArrayBufferView pixels) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Word -> Word -> Maybe pixels -> m ()
+texSubImage2D self target level xoffset yoffset width height format type' pixels = liftDOM (void (((toJSVal pixels) >>= \a10' -> js_texSubImage2D ((Types.toWebGLRenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (width) (height) (format) (type') a10')))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"texSubImage2D\"]($2, $3, $4, $5, $6, $7, $8); })"
+        js_texSubImage2DSource :: WebGLRenderingContextOverloads -> Word -> Int -> Int -> Int -> Word -> Word -> TexImageSource -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/texSubImage2D MDN WebGLRenderingContextOverloads.texSubImage2D documentation>
+texSubImage2DSource :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsTexImageSource source) => self -> Word -> Int -> Int -> Int -> Word -> Word -> source -> m ()
+texSubImage2DSource self target level xoffset yoffset format type' source = liftDOM (void ((js_texSubImage2DSource ((Types.toWebGLRenderingContextOverloads self)) (target) (level) (xoffset) (yoffset) (format) (type') (Types.toTexImageSource source))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform1fv\"]($2, $3); })"
+        js_uniform1fv :: WebGLRenderingContextOverloads -> JSVal -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform1fv documentation>
+uniform1fv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsFloat32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform1fv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform1fv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toFloat32List v))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform1iv\"]($2, $3); })"
+        js_uniform1iv :: WebGLRenderingContextOverloads -> JSVal -> Int32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform1iv documentation>
+uniform1iv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsInt32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform1iv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform1iv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toInt32List v))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform2fv\"]($2, $3); })"
+        js_uniform2fv :: WebGLRenderingContextOverloads -> JSVal -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform2fv documentation>
+uniform2fv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsFloat32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform2fv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform2fv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toFloat32List v))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform2iv\"]($2, $3); })"
+        js_uniform2iv :: WebGLRenderingContextOverloads -> JSVal -> Int32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform2iv documentation>
+uniform2iv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsInt32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform2iv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform2iv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toInt32List v))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform3fv\"]($2, $3); })"
+        js_uniform3fv :: WebGLRenderingContextOverloads -> JSVal -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform3fv documentation>
+uniform3fv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsFloat32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform3fv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform3fv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toFloat32List v))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform3iv\"]($2, $3); })"
+        js_uniform3iv :: WebGLRenderingContextOverloads -> JSVal -> Int32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform3iv documentation>
+uniform3iv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsInt32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform3iv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform3iv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toInt32List v))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform4fv\"]($2, $3); })"
+        js_uniform4fv :: WebGLRenderingContextOverloads -> JSVal -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform4fv documentation>
+uniform4fv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsFloat32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform4fv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform4fv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toFloat32List v))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"uniform4iv\"]($2, $3); })"
+        js_uniform4iv :: WebGLRenderingContextOverloads -> JSVal -> Int32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniform MDN WebGLRenderingContextOverloads.uniform4iv documentation>
+uniform4iv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsInt32List v) => self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform4iv self location v = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniform4iv ((Types.toWebGLRenderingContextOverloads self)) a2' (Types.toInt32List v))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2fv\"]($2, $3, $4); })"
+        js_uniformMatrix2fv :: WebGLRenderingContextOverloads -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniformMatrix MDN WebGLRenderingContextOverloads.uniformMatrix2fv documentation>
+uniformMatrix2fv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsFloat32List value) => self -> Maybe WebGLUniformLocation -> Bool -> value -> m ()
+uniformMatrix2fv self location transpose value = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix2fv ((Types.toWebGLRenderingContextOverloads self)) a2' (transpose) (Types.toFloat32List value))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3fv\"]($2, $3, $4); })"
+        js_uniformMatrix3fv :: WebGLRenderingContextOverloads -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniformMatrix MDN WebGLRenderingContextOverloads.uniformMatrix3fv documentation>
+uniformMatrix3fv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsFloat32List value) => self -> Maybe WebGLUniformLocation -> Bool -> value -> m ()
+uniformMatrix3fv self location transpose value = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix3fv ((Types.toWebGLRenderingContextOverloads self)) a2' (transpose) (Types.toFloat32List value))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4fv\"]($2, $3, $4); })"
+        js_uniformMatrix4fv :: WebGLRenderingContextOverloads -> JSVal -> Bool -> Float32List -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/uniformMatrix MDN WebGLRenderingContextOverloads.uniformMatrix4fv documentation>
+uniformMatrix4fv :: (MonadDOM m, IsWebGLRenderingContextOverloads self, IsFloat32List value) => self -> Maybe WebGLUniformLocation -> Bool -> value -> m ()
+uniformMatrix4fv self location transpose value = liftDOM (void (((toJSVal location) >>= \a2' -> js_uniformMatrix4fv ((Types.toWebGLRenderingContextOverloads self)) a2' (transpose) (Types.toFloat32List value))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLSampler.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLSampler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLSampler.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLSampler
+       (WebGLSampler(..), gTypeWebGLSampler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLShader.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLShader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLShader.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLShader
+       (WebGLShader(..), gTypeWebGLShader)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
@@ -1,49 +1,35 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
-       (js_getRangeMin, getRangeMin, js_getRangeMax, getRangeMax,
-        js_getPrecision, getPrecision, WebGLShaderPrecisionFormat(..),
-        gTypeWebGLShaderPrecisionFormat)
+       (js_getRangeMin, js_getRangeMax, js_getPrecision, getRangeMin, getRangeMax, getPrecision, WebGLShaderPrecisionFormat(..), gTypeWebGLShaderPrecisionFormat)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rangeMin\"]; })" js_getRangeMin
-        :: WebGLShaderPrecisionFormat -> IO Int
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMin Mozilla WebGLShaderPrecisionFormat.rangeMin documentation> 
-getRangeMin :: (MonadIO m) => WebGLShaderPrecisionFormat -> m Int
-getRangeMin self = liftIO (js_getRangeMin self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"rangeMax\"]; })" js_getRangeMax
-        :: WebGLShaderPrecisionFormat -> IO Int
+foreign import javascript unsafe "(($1) => { return $1[\"rangeMin\"]; })"
+        js_getRangeMin :: WebGLShaderPrecisionFormat -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLShaderPrecisionFormat/rangeMin MDN WebGLShaderPrecisionFormat.rangeMin documentation>
+getRangeMin :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
+getRangeMin self = liftDOM ((js_getRangeMin (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMax Mozilla WebGLShaderPrecisionFormat.rangeMax documentation> 
-getRangeMax :: (MonadIO m) => WebGLShaderPrecisionFormat -> m Int
-getRangeMax self = liftIO (js_getRangeMax self)
- 
+foreign import javascript unsafe "(($1) => { return $1[\"rangeMax\"]; })"
+        js_getRangeMax :: WebGLShaderPrecisionFormat -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLShaderPrecisionFormat/rangeMax MDN WebGLShaderPrecisionFormat.rangeMax documentation>
+getRangeMax :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
+getRangeMax self = liftDOM ((js_getRangeMax (self)))
+
 foreign import javascript unsafe "(($1) => { return $1[\"precision\"]; })"
         js_getPrecision :: WebGLShaderPrecisionFormat -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.precision Mozilla WebGLShaderPrecisionFormat.precision documentation> 
-getPrecision :: (MonadIO m) => WebGLShaderPrecisionFormat -> m Int
-getPrecision self = liftIO (js_getPrecision self)
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLShaderPrecisionFormat/precision MDN WebGLShaderPrecisionFormat.precision documentation>
+getPrecision :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
+getPrecision self = liftDOM ((js_getPrecision (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLSync.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLSync.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLSync.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLSync
+       (WebGLSync(..), gTypeWebGLSync)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLTexture.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLTexture
+       (WebGLTexture(..), gTypeWebGLTexture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLTransformFeedback.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLTransformFeedback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLTransformFeedback.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLTransformFeedback
+       (WebGLTransformFeedback(..), gTypeWebGLTransformFeedback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLUniformLocation.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLUniformLocation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLUniformLocation.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLUniformLocation
+       (WebGLUniformLocation(..), gTypeWebGLUniformLocation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLVertexArrayObject.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLVertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLVertexArrayObject.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLVertexArrayObject
+       (WebGLVertexArrayObject(..), gTypeWebGLVertexArrayObject)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLVertexArrayObjectOES.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLVertexArrayObjectOES.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLVertexArrayObjectOES.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_vertex_array_object (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebGLVertexArrayObjectOES
+       (WebGLVertexArrayObjectOES(..), gTypeWebGLVertexArrayObjectOES)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUBuffer
-       (js_getLength, getLength, js_getContents, getContents,
-        WebGPUBuffer(..), gTypeWebGPUBuffer)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        WebGPUBuffer -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer.length Mozilla WebGPUBuffer.length documentation> 
-getLength :: (MonadIO m) => WebGPUBuffer -> m Word
-getLength self = liftIO (js_getLength self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"contents\"]; })" js_getContents
-        :: WebGPUBuffer -> IO ArrayBufferView
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer.contents Mozilla WebGPUBuffer.contents documentation> 
-getContents :: (MonadIO m) => WebGPUBuffer -> m ArrayBufferView
-getContents self = liftIO (js_getContents self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs
+++ /dev/null
@@ -1,101 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUCommandBuffer
-       (js_createRenderCommandEncoderWithDescriptor,
-        createRenderCommandEncoderWithDescriptor,
-        createRenderCommandEncoderWithDescriptor_,
-        js_createComputeCommandEncoder, createComputeCommandEncoder,
-        createComputeCommandEncoder_, js_commit, commit,
-        js_presentDrawable, presentDrawable, js_getCompleted, getCompleted,
-        WebGPUCommandBuffer(..), gTypeWebGPUCommandBuffer)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createRenderCommandEncoderWithDescriptor\"]($2); })"
-        js_createRenderCommandEncoderWithDescriptor ::
-        WebGPUCommandBuffer ->
-          WebGPURenderPassDescriptor -> IO WebGPURenderCommandEncoder
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
-createRenderCommandEncoderWithDescriptor ::
-                                         (MonadIO m) =>
-                                           WebGPUCommandBuffer ->
-                                             WebGPURenderPassDescriptor ->
-                                               m WebGPURenderCommandEncoder
-createRenderCommandEncoderWithDescriptor self descriptor
-  = liftIO
-      (js_createRenderCommandEncoderWithDescriptor self descriptor)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
-createRenderCommandEncoderWithDescriptor_ ::
-                                          (MonadIO m) =>
-                                            WebGPUCommandBuffer ->
-                                              WebGPURenderPassDescriptor -> m ()
-createRenderCommandEncoderWithDescriptor_ self descriptor
-  = liftIO
-      (void
-         (js_createRenderCommandEncoderWithDescriptor self descriptor))
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"createComputeCommandEncoder\"](); })"
-        js_createComputeCommandEncoder ::
-        WebGPUCommandBuffer -> IO WebGPUComputeCommandEncoder
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
-createComputeCommandEncoder ::
-                            (MonadIO m) => WebGPUCommandBuffer -> m WebGPUComputeCommandEncoder
-createComputeCommandEncoder self
-  = liftIO (js_createComputeCommandEncoder self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
-createComputeCommandEncoder_ ::
-                             (MonadIO m) => WebGPUCommandBuffer -> m ()
-createComputeCommandEncoder_ self
-  = liftIO (void (js_createComputeCommandEncoder self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"commit\"](); })" js_commit ::
-        WebGPUCommandBuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.commit Mozilla WebGPUCommandBuffer.commit documentation> 
-commit :: (MonadIO m) => WebGPUCommandBuffer -> m ()
-commit self = liftIO (js_commit self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"presentDrawable\"]($2); })"
-        js_presentDrawable ::
-        WebGPUCommandBuffer -> WebGPUDrawable -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.presentDrawable Mozilla WebGPUCommandBuffer.presentDrawable documentation> 
-presentDrawable ::
-                (MonadIO m) => WebGPUCommandBuffer -> WebGPUDrawable -> m ()
-presentDrawable self drawable
-  = liftIO (js_presentDrawable self drawable)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"completed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getCompleted :: WebGPUCommandBuffer -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.completed Mozilla WebGPUCommandBuffer.completed documentation> 
-getCompleted :: (MonadIO m) => WebGPUCommandBuffer -> m ()
-getCompleted self
-  = liftIO ((js_getCompleted self) >>= maybeThrowPromiseRejected)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs
+++ /dev/null
@@ -1,76 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUCommandQueue
-       (js_createCommandBuffer, createCommandBuffer, createCommandBuffer_,
-        createCommandBufferUnsafe, createCommandBufferUnchecked,
-        js_setLabel, setLabel, js_getLabel, getLabel,
-        WebGPUCommandQueue(..), gTypeWebGPUCommandQueue)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createCommandBuffer\"](); })"
-        js_createCommandBuffer ::
-        WebGPUCommandQueue -> IO (Nullable WebGPUCommandBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBuffer ::
-                    (MonadIO m) => WebGPUCommandQueue -> m (Maybe WebGPUCommandBuffer)
-createCommandBuffer self
-  = liftIO (nullableToMaybe <$> (js_createCommandBuffer self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBuffer_ :: (MonadIO m) => WebGPUCommandQueue -> m ()
-createCommandBuffer_ self
-  = liftIO (void (js_createCommandBuffer self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBufferUnsafe ::
-                          (MonadIO m, HasCallStack) =>
-                            WebGPUCommandQueue -> m WebGPUCommandBuffer
-createCommandBufferUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_createCommandBuffer self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBufferUnchecked ::
-                             (MonadIO m) => WebGPUCommandQueue -> m WebGPUCommandBuffer
-createCommandBufferUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_createCommandBuffer self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
-        :: WebGPUCommandQueue -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
-setLabel ::
-         (MonadIO m, ToJSString val) => WebGPUCommandQueue -> val -> m ()
-setLabel self val = liftIO (js_setLabel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        WebGPUCommandQueue -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => WebGPUCommandQueue -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs
+++ /dev/null
@@ -1,70 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUComputeCommandEncoder
-       (js_setComputePipelineState, setComputePipelineState, js_setBuffer,
-        setBuffer, js_dispatch, dispatch, js_endEncoding, endEncoding,
-        WebGPUComputeCommandEncoder(..), gTypeWebGPUComputeCommandEncoder)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"setComputePipelineState\"]($2); })" js_setComputePipelineState ::
-        WebGPUComputeCommandEncoder -> WebGPUComputePipelineState -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.setComputePipelineState Mozilla WebGPUComputeCommandEncoder.setComputePipelineState documentation> 
-setComputePipelineState ::
-                        (MonadIO m) =>
-                          WebGPUComputeCommandEncoder -> WebGPUComputePipelineState -> m ()
-setComputePipelineState self pipelineState
-  = liftIO (js_setComputePipelineState self pipelineState)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setBuffer\"]($2, $3, $4); })"
-        js_setBuffer ::
-        WebGPUComputeCommandEncoder ->
-          WebGPUBuffer -> Word -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.setBuffer Mozilla WebGPUComputeCommandEncoder.setBuffer documentation> 
-setBuffer ::
-          (MonadIO m) =>
-            WebGPUComputeCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
-setBuffer self buffer offset index
-  = liftIO (js_setBuffer self buffer offset index)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"dispatch\"]($2, $3); })"
-        js_dispatch ::
-        WebGPUComputeCommandEncoder -> WebGPUSize -> WebGPUSize -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.dispatch Mozilla WebGPUComputeCommandEncoder.dispatch documentation> 
-dispatch ::
-         (MonadIO m) =>
-           WebGPUComputeCommandEncoder -> WebGPUSize -> WebGPUSize -> m ()
-dispatch self threadgroupsPerGrid threadsPerThreadgroup
-  = liftIO
-      (js_dispatch self threadgroupsPerGrid threadsPerThreadgroup)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endEncoding\"](); })"
-        js_endEncoding :: WebGPUComputeCommandEncoder -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.endEncoding Mozilla WebGPUComputeCommandEncoder.endEncoding documentation> 
-endEncoding :: (MonadIO m) => WebGPUComputeCommandEncoder -> m ()
-endEncoding self = liftIO (js_endEncoding self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilDescriptor
-       (js_newWebGPUDepthStencilDescriptor,
-        newWebGPUDepthStencilDescriptor, js_setDepthCompareFunction,
-        setDepthCompareFunction, js_getDepthCompareFunction,
-        getDepthCompareFunction, js_setDepthWriteEnabled,
-        setDepthWriteEnabled, js_getDepthWriteEnabled,
-        getDepthWriteEnabled, WebGPUDepthStencilDescriptor(..),
-        gTypeWebGPUDepthStencilDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"WebGPUDepthStencilDescriptor\"](); })"
-        js_newWebGPUDepthStencilDescriptor ::
-        IO WebGPUDepthStencilDescriptor
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor Mozilla WebGPUDepthStencilDescriptor documentation> 
-newWebGPUDepthStencilDescriptor ::
-                                (MonadIO m) => m WebGPUDepthStencilDescriptor
-newWebGPUDepthStencilDescriptor
-  = liftIO (js_newWebGPUDepthStencilDescriptor)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"depthCompareFunction\"] = $2; })" js_setDepthCompareFunction ::
-        WebGPUDepthStencilDescriptor -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthCompareFunction Mozilla WebGPUDepthStencilDescriptor.depthCompareFunction documentation> 
-setDepthCompareFunction ::
-                        (MonadIO m) =>
-                          WebGPUDepthStencilDescriptor -> WebGPUCompareFunction -> m ()
-setDepthCompareFunction self val
-  = liftIO (js_setDepthCompareFunction self (pToJSVal val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"depthCompareFunction\"]; })"
-        js_getDepthCompareFunction ::
-        WebGPUDepthStencilDescriptor -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthCompareFunction Mozilla WebGPUDepthStencilDescriptor.depthCompareFunction documentation> 
-getDepthCompareFunction ::
-                        (MonadIO m) =>
-                          WebGPUDepthStencilDescriptor -> m WebGPUCompareFunction
-getDepthCompareFunction self
-  = liftIO ((js_getDepthCompareFunction self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"depthWriteEnabled\"] = $2; })"
-        js_setDepthWriteEnabled ::
-        WebGPUDepthStencilDescriptor -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthWriteEnabled Mozilla WebGPUDepthStencilDescriptor.depthWriteEnabled documentation> 
-setDepthWriteEnabled ::
-                     (MonadIO m) => WebGPUDepthStencilDescriptor -> Bool -> m ()
-setDepthWriteEnabled self val
-  = liftIO (js_setDepthWriteEnabled self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"depthWriteEnabled\"] ? 1 : 0); })" js_getDepthWriteEnabled ::
-        WebGPUDepthStencilDescriptor -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthWriteEnabled Mozilla WebGPUDepthStencilDescriptor.depthWriteEnabled documentation> 
-getDepthWriteEnabled ::
-                     (MonadIO m) => WebGPUDepthStencilDescriptor -> m Bool
-getDepthWriteEnabled self = liftIO (js_getDepthWriteEnabled self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilState
-       (js_setLabel, setLabel, js_getLabel, getLabel,
-        WebGPUDepthStencilState(..), gTypeWebGPUDepthStencilState)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
-        :: WebGPUDepthStencilState -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState.label Mozilla WebGPUDepthStencilState.label documentation> 
-setLabel ::
-         (MonadIO m, ToJSString val) =>
-           WebGPUDepthStencilState -> val -> m ()
-setLabel self val = liftIO (js_setLabel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        WebGPUDepthStencilState -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState.label Mozilla WebGPUDepthStencilState.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) =>
-           WebGPUDepthStencilState -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUDrawable
-       (js_getTexture, getTexture, WebGPUDrawable(..),
-        gTypeWebGPUDrawable)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"texture\"]; })" js_getTexture ::
-        WebGPUDrawable -> IO WebGPUTexture
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDrawable.texture Mozilla WebGPUDrawable.texture documentation> 
-getTexture :: (MonadIO m) => WebGPUDrawable -> m WebGPUTexture
-getTexture self = liftIO (js_getTexture self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUFunction
-       (js_getName, getName, WebGPUFunction(..), gTypeWebGPUFunction)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        WebGPUFunction -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUFunction.name Mozilla WebGPUFunction.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => WebGPUFunction -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs
+++ /dev/null
@@ -1,100 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPULibrary
-       (js_functionWithName, functionWithName, functionWithName_,
-        functionWithNameUnsafe, functionWithNameUnchecked,
-        js_getSourceCode, getSourceCode, js_setLabel, setLabel,
-        js_getLabel, getLabel, js_getFunctionNames, getFunctionNames,
-        WebGPULibrary(..), gTypeWebGPULibrary)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"functionWithName\"]($2); })"
-        js_functionWithName ::
-        WebGPULibrary -> JSString -> IO (Nullable WebGPUFunction)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithName ::
-                 (MonadIO m, ToJSString name) =>
-                   WebGPULibrary -> name -> m (Maybe WebGPUFunction)
-functionWithName self name
-  = liftIO
-      (nullableToMaybe <$> (js_functionWithName self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithName_ ::
-                  (MonadIO m, ToJSString name) => WebGPULibrary -> name -> m ()
-functionWithName_ self name
-  = liftIO (void (js_functionWithName self (toJSString name)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithNameUnsafe ::
-                       (MonadIO m, ToJSString name, HasCallStack) =>
-                         WebGPULibrary -> name -> m WebGPUFunction
-functionWithNameUnsafe self name
-  = liftIO
-      ((nullableToMaybe <$> (js_functionWithName self (toJSString name)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithNameUnchecked ::
-                          (MonadIO m, ToJSString name) =>
-                            WebGPULibrary -> name -> m WebGPUFunction
-functionWithNameUnchecked self name
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_functionWithName self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sourceCode\"]; })"
-        js_getSourceCode :: WebGPULibrary -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.sourceCode Mozilla WebGPULibrary.sourceCode documentation> 
-getSourceCode ::
-              (MonadIO m, FromJSString result) => WebGPULibrary -> m result
-getSourceCode self
-  = liftIO (fromJSString <$> (js_getSourceCode self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
-        :: WebGPULibrary -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.label Mozilla WebGPULibrary.label documentation> 
-setLabel ::
-         (MonadIO m, ToJSString val) => WebGPULibrary -> val -> m ()
-setLabel self val = liftIO (js_setLabel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        WebGPULibrary -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.label Mozilla WebGPULibrary.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) => WebGPULibrary -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"functionNames\"]; })"
-        js_getFunctionNames :: WebGPULibrary -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionNames Mozilla WebGPULibrary.functionNames documentation> 
-getFunctionNames ::
-                 (MonadIO m, FromJSString result) => WebGPULibrary -> m [result]
-getFunctionNames self
-  = liftIO ((js_getFunctionNames self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs
+++ /dev/null
@@ -1,92 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderCommandEncoder
-       (js_setRenderPipelineState, setRenderPipelineState,
-        js_setDepthStencilState, setDepthStencilState, js_setVertexBuffer,
-        setVertexBuffer, js_setFragmentBuffer, setFragmentBuffer,
-        js_drawPrimitives, drawPrimitives, js_endEncoding, endEncoding,
-        WebGPURenderCommandEncoder(..), gTypeWebGPURenderCommandEncoder)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"setRenderPipelineState\"]($2); })" js_setRenderPipelineState ::
-        WebGPURenderCommandEncoder -> WebGPURenderPipelineState -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setRenderPipelineState Mozilla WebGPURenderCommandEncoder.setRenderPipelineState documentation> 
-setRenderPipelineState ::
-                       (MonadIO m) =>
-                         WebGPURenderCommandEncoder -> WebGPURenderPipelineState -> m ()
-setRenderPipelineState self pipelineState
-  = liftIO (js_setRenderPipelineState self pipelineState)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"setDepthStencilState\"]($2); })"
-        js_setDepthStencilState ::
-        WebGPURenderCommandEncoder -> WebGPUDepthStencilState -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setDepthStencilState Mozilla WebGPURenderCommandEncoder.setDepthStencilState documentation> 
-setDepthStencilState ::
-                     (MonadIO m) =>
-                       WebGPURenderCommandEncoder -> WebGPUDepthStencilState -> m ()
-setDepthStencilState self depthStencilState
-  = liftIO (js_setDepthStencilState self depthStencilState)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"setVertexBuffer\"]($2, $3,\n$4); })" js_setVertexBuffer ::
-        WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setVertexBuffer Mozilla WebGPURenderCommandEncoder.setVertexBuffer documentation> 
-setVertexBuffer ::
-                (MonadIO m) =>
-                  WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
-setVertexBuffer self buffer offset index
-  = liftIO (js_setVertexBuffer self buffer offset index)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"setFragmentBuffer\"]($2, $3,\n$4); })" js_setFragmentBuffer ::
-        WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setFragmentBuffer Mozilla WebGPURenderCommandEncoder.setFragmentBuffer documentation> 
-setFragmentBuffer ::
-                  (MonadIO m) =>
-                    WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
-setFragmentBuffer self buffer offset index
-  = liftIO (js_setFragmentBuffer self buffer offset index)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"drawPrimitives\"]($2, $3, $4); })" js_drawPrimitives ::
-        WebGPURenderCommandEncoder -> Word -> Word -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.drawPrimitives Mozilla WebGPURenderCommandEncoder.drawPrimitives documentation> 
-drawPrimitives ::
-               (MonadIO m) =>
-                 WebGPURenderCommandEncoder -> Word -> Word -> Word -> m ()
-drawPrimitives self type' start count
-  = liftIO (js_drawPrimitives self type' start count)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"endEncoding\"](); })"
-        js_endEncoding :: WebGPURenderCommandEncoder -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.endEncoding Mozilla WebGPURenderCommandEncoder.endEncoding documentation> 
-endEncoding :: (MonadIO m) => WebGPURenderCommandEncoder -> m ()
-endEncoding self = liftIO (js_endEncoding self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassAttachmentDescriptor
-       (js_setTexture, setTexture, js_getTexture, getTexture,
-        getTextureUnsafe, getTextureUnchecked, js_setLoadAction,
-        setLoadAction, js_getLoadAction, getLoadAction, js_setStoreAction,
-        setStoreAction, js_getStoreAction, getStoreAction,
-        WebGPURenderPassAttachmentDescriptor(..),
-        gTypeWebGPURenderPassAttachmentDescriptor,
-        IsWebGPURenderPassAttachmentDescriptor,
-        toWebGPURenderPassAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"texture\"] = $2; })"
-        js_setTexture ::
-        WebGPURenderPassAttachmentDescriptor ->
-          Optional WebGPUTexture -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-setTexture ::
-           (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
-             self -> Maybe WebGPUTexture -> m ()
-setTexture self val
-  = liftIO
-      (js_setTexture (toWebGPURenderPassAttachmentDescriptor self)
-         (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"texture\"]; })" js_getTexture ::
-        WebGPURenderPassAttachmentDescriptor -> IO (Nullable WebGPUTexture)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-getTexture ::
-           (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
-             self -> m (Maybe WebGPUTexture)
-getTexture self
-  = liftIO
-      (nullableToMaybe <$>
-         (js_getTexture (toWebGPURenderPassAttachmentDescriptor self)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-getTextureUnsafe ::
-                 (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self,
-                  HasCallStack) =>
-                   self -> m WebGPUTexture
-getTextureUnsafe self
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_getTexture (toWebGPURenderPassAttachmentDescriptor self)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-getTextureUnchecked ::
-                    (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                      self -> m WebGPUTexture
-getTextureUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_getTexture (toWebGPURenderPassAttachmentDescriptor self)))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"loadAction\"] = $2; })"
-        js_setLoadAction ::
-        WebGPURenderPassAttachmentDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.loadAction Mozilla WebGPURenderPassAttachmentDescriptor.loadAction documentation> 
-setLoadAction ::
-              (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                self -> Word -> m ()
-setLoadAction self val
-  = liftIO
-      (js_setLoadAction (toWebGPURenderPassAttachmentDescriptor self)
-         val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"loadAction\"]; })"
-        js_getLoadAction :: WebGPURenderPassAttachmentDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.loadAction Mozilla WebGPURenderPassAttachmentDescriptor.loadAction documentation> 
-getLoadAction ::
-              (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                self -> m Word
-getLoadAction self
-  = liftIO
-      (js_getLoadAction (toWebGPURenderPassAttachmentDescriptor self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"storeAction\"] = $2; })"
-        js_setStoreAction ::
-        WebGPURenderPassAttachmentDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.storeAction Mozilla WebGPURenderPassAttachmentDescriptor.storeAction documentation> 
-setStoreAction ::
-               (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                 self -> Word -> m ()
-setStoreAction self val
-  = liftIO
-      (js_setStoreAction (toWebGPURenderPassAttachmentDescriptor self)
-         val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"storeAction\"]; })"
-        js_getStoreAction ::
-        WebGPURenderPassAttachmentDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.storeAction Mozilla WebGPURenderPassAttachmentDescriptor.storeAction documentation> 
-getStoreAction ::
-               (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                 self -> m Word
-getStoreAction self
-  = liftIO
-      (js_getStoreAction (toWebGPURenderPassAttachmentDescriptor self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassColorAttachmentDescriptor
-       (js_setClearColor, setClearColor, js_getClearColor, getClearColor,
-        WebGPURenderPassColorAttachmentDescriptor(..),
-        gTypeWebGPURenderPassColorAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"clearColor\"] = $2; })"
-        js_setClearColor ::
-        WebGPURenderPassColorAttachmentDescriptor -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor.clearColor Mozilla WebGPURenderPassColorAttachmentDescriptor.clearColor documentation> 
-setClearColor ::
-              (MonadIO m) =>
-                WebGPURenderPassColorAttachmentDescriptor -> [Float] -> m ()
-setClearColor self val
-  = liftIO (toJSVal val >>= \ val' -> js_setClearColor self val')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clearColor\"]; })"
-        js_getClearColor ::
-        WebGPURenderPassColorAttachmentDescriptor -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor.clearColor Mozilla WebGPURenderPassColorAttachmentDescriptor.clearColor documentation> 
-getClearColor ::
-              (MonadIO m) =>
-                WebGPURenderPassColorAttachmentDescriptor -> m [Float]
-getClearColor self
-  = liftIO ((js_getClearColor self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
+++ /dev/null
@@ -1,48 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDepthAttachmentDescriptor
-       (js_setClearDepth, setClearDepth, js_getClearDepth, getClearDepth,
-        WebGPURenderPassDepthAttachmentDescriptor(..),
-        gTypeWebGPURenderPassDepthAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"clearDepth\"] = $2; })"
-        js_setClearDepth ::
-        WebGPURenderPassDepthAttachmentDescriptor -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor.clearDepth Mozilla WebGPURenderPassDepthAttachmentDescriptor.clearDepth documentation> 
-setClearDepth ::
-              (MonadIO m) =>
-                WebGPURenderPassDepthAttachmentDescriptor -> Double -> m ()
-setClearDepth self val = liftIO (js_setClearDepth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clearDepth\"]; })"
-        js_getClearDepth ::
-        WebGPURenderPassDepthAttachmentDescriptor -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor.clearDepth Mozilla WebGPURenderPassDepthAttachmentDescriptor.clearDepth documentation> 
-getClearDepth ::
-              (MonadIO m) =>
-                WebGPURenderPassDepthAttachmentDescriptor -> m Double
-getClearDepth self = liftIO (js_getClearDepth self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs
+++ /dev/null
@@ -1,62 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDescriptor
-       (js_newWebGPURenderPassDescriptor, newWebGPURenderPassDescriptor,
-        js_getColorAttachments, getColorAttachments, js_getDepthAttachment,
-        getDepthAttachment, WebGPURenderPassDescriptor(..),
-        gTypeWebGPURenderPassDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"WebGPURenderPassDescriptor\"](); })"
-        js_newWebGPURenderPassDescriptor :: IO WebGPURenderPassDescriptor
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor Mozilla WebGPURenderPassDescriptor documentation> 
-newWebGPURenderPassDescriptor ::
-                              (MonadIO m) => m WebGPURenderPassDescriptor
-newWebGPURenderPassDescriptor
-  = liftIO (js_newWebGPURenderPassDescriptor)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"colorAttachments\"]; })"
-        js_getColorAttachments :: WebGPURenderPassDescriptor -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor.colorAttachments Mozilla WebGPURenderPassDescriptor.colorAttachments documentation> 
-getColorAttachments ::
-                    (MonadIO m) =>
-                      WebGPURenderPassDescriptor ->
-                        m [WebGPURenderPassColorAttachmentDescriptor]
-getColorAttachments self
-  = liftIO ((js_getColorAttachments self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"depthAttachment\"]; })"
-        js_getDepthAttachment ::
-        WebGPURenderPassDescriptor ->
-          IO WebGPURenderPassDepthAttachmentDescriptor
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor.depthAttachment Mozilla WebGPURenderPassDescriptor.depthAttachment documentation> 
-getDepthAttachment ::
-                   (MonadIO m) =>
-                     WebGPURenderPassDescriptor ->
-                       m WebGPURenderPassDepthAttachmentDescriptor
-getDepthAttachment self = liftIO (js_getDepthAttachment self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
+++ /dev/null
@@ -1,48 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineColorAttachmentDescriptor
-       (js_setPixelFormat, setPixelFormat, js_getPixelFormat,
-        getPixelFormat, WebGPURenderPipelineColorAttachmentDescriptor(..),
-        gTypeWebGPURenderPipelineColorAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"pixelFormat\"] = $2; })"
-        js_setPixelFormat ::
-        WebGPURenderPipelineColorAttachmentDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat Mozilla WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat documentation> 
-setPixelFormat ::
-               (MonadIO m) =>
-                 WebGPURenderPipelineColorAttachmentDescriptor -> Word -> m ()
-setPixelFormat self val = liftIO (js_setPixelFormat self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pixelFormat\"]; })"
-        js_getPixelFormat ::
-        WebGPURenderPipelineColorAttachmentDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat Mozilla WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat documentation> 
-getPixelFormat ::
-               (MonadIO m) =>
-                 WebGPURenderPipelineColorAttachmentDescriptor -> m Word
-getPixelFormat self = liftIO (js_getPixelFormat self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs
+++ /dev/null
@@ -1,165 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineDescriptor
-       (js_newWebGPURenderPipelineDescriptor,
-        newWebGPURenderPipelineDescriptor, js_reset, reset,
-        js_setVertexFunction, setVertexFunction, js_getVertexFunction,
-        getVertexFunction, getVertexFunctionUnsafe,
-        getVertexFunctionUnchecked, js_setFragmentFunction,
-        setFragmentFunction, js_getFragmentFunction, getFragmentFunction,
-        getFragmentFunctionUnsafe, getFragmentFunctionUnchecked,
-        js_getColorAttachments, getColorAttachments,
-        js_setDepthAttachmentPixelFormat, setDepthAttachmentPixelFormat,
-        js_getDepthAttachmentPixelFormat, getDepthAttachmentPixelFormat,
-        WebGPURenderPipelineDescriptor(..),
-        gTypeWebGPURenderPipelineDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(() => { return new window[\"WebGPURenderPipelineDescriptor\"](); })"
-        js_newWebGPURenderPipelineDescriptor ::
-        IO WebGPURenderPipelineDescriptor
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor Mozilla WebGPURenderPipelineDescriptor documentation> 
-newWebGPURenderPipelineDescriptor ::
-                                  (MonadIO m) => m WebGPURenderPipelineDescriptor
-newWebGPURenderPipelineDescriptor
-  = liftIO (js_newWebGPURenderPipelineDescriptor)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"reset\"](); })" js_reset ::
-        WebGPURenderPipelineDescriptor -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.reset Mozilla WebGPURenderPipelineDescriptor.reset documentation> 
-reset :: (MonadIO m) => WebGPURenderPipelineDescriptor -> m ()
-reset self = liftIO (js_reset self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"vertexFunction\"] = $2; })"
-        js_setVertexFunction ::
-        WebGPURenderPipelineDescriptor -> Optional WebGPUFunction -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-setVertexFunction ::
-                  (MonadIO m) =>
-                    WebGPURenderPipelineDescriptor -> Maybe WebGPUFunction -> m ()
-setVertexFunction self val
-  = liftIO (js_setVertexFunction self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"vertexFunction\"]; })"
-        js_getVertexFunction ::
-        WebGPURenderPipelineDescriptor -> IO (Nullable WebGPUFunction)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-getVertexFunction ::
-                  (MonadIO m) =>
-                    WebGPURenderPipelineDescriptor -> m (Maybe WebGPUFunction)
-getVertexFunction self
-  = liftIO (nullableToMaybe <$> (js_getVertexFunction self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-getVertexFunctionUnsafe ::
-                        (MonadIO m, HasCallStack) =>
-                          WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getVertexFunctionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getVertexFunction self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-getVertexFunctionUnchecked ::
-                           (MonadIO m) => WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getVertexFunctionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getVertexFunction self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"fragmentFunction\"] = $2; })"
-        js_setFragmentFunction ::
-        WebGPURenderPipelineDescriptor -> Optional WebGPUFunction -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-setFragmentFunction ::
-                    (MonadIO m) =>
-                      WebGPURenderPipelineDescriptor -> Maybe WebGPUFunction -> m ()
-setFragmentFunction self val
-  = liftIO (js_setFragmentFunction self (maybeToOptional val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"fragmentFunction\"]; })"
-        js_getFragmentFunction ::
-        WebGPURenderPipelineDescriptor -> IO (Nullable WebGPUFunction)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-getFragmentFunction ::
-                    (MonadIO m) =>
-                      WebGPURenderPipelineDescriptor -> m (Maybe WebGPUFunction)
-getFragmentFunction self
-  = liftIO (nullableToMaybe <$> (js_getFragmentFunction self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-getFragmentFunctionUnsafe ::
-                          (MonadIO m, HasCallStack) =>
-                            WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getFragmentFunctionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFragmentFunction self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-getFragmentFunctionUnchecked ::
-                             (MonadIO m) => WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getFragmentFunctionUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_getFragmentFunction self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"colorAttachments\"]; })"
-        js_getColorAttachments ::
-        WebGPURenderPipelineDescriptor -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.colorAttachments Mozilla WebGPURenderPipelineDescriptor.colorAttachments documentation> 
-getColorAttachments ::
-                    (MonadIO m) =>
-                      WebGPURenderPipelineDescriptor ->
-                        m [WebGPURenderPipelineColorAttachmentDescriptor]
-getColorAttachments self
-  = liftIO ((js_getColorAttachments self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { $1[\"depthAttachmentPixelFormat\"] = $2; })"
-        js_setDepthAttachmentPixelFormat ::
-        WebGPURenderPipelineDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat Mozilla WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat documentation> 
-setDepthAttachmentPixelFormat ::
-                              (MonadIO m) => WebGPURenderPipelineDescriptor -> Word -> m ()
-setDepthAttachmentPixelFormat self val
-  = liftIO (js_setDepthAttachmentPixelFormat self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return $1[\"depthAttachmentPixelFormat\"]; })"
-        js_getDepthAttachmentPixelFormat ::
-        WebGPURenderPipelineDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat Mozilla WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat documentation> 
-getDepthAttachmentPixelFormat ::
-                              (MonadIO m) => WebGPURenderPipelineDescriptor -> m Word
-getDepthAttachmentPixelFormat self
-  = liftIO (js_getDepthAttachmentPixelFormat self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineState
-       (js_setLabel, setLabel, js_getLabel, getLabel,
-        WebGPURenderPipelineState(..), gTypeWebGPURenderPipelineState)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
-        :: WebGPURenderPipelineState -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState.label Mozilla WebGPURenderPipelineState.label documentation> 
-setLabel ::
-         (MonadIO m, ToJSString val) =>
-           WebGPURenderPipelineState -> val -> m ()
-setLabel self val = liftIO (js_setLabel self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
-        WebGPURenderPipelineState -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState.label Mozilla WebGPURenderPipelineState.label documentation> 
-getLabel ::
-         (MonadIO m, FromJSString result) =>
-           WebGPURenderPipelineState -> m result
-getLabel self = liftIO (fromJSString <$> (js_getLabel self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs
+++ /dev/null
@@ -1,390 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPURenderingContext
-       (js_createLibrary, createLibrary, createLibrary_,
-        js_createRenderPipelineState, createRenderPipelineState,
-        createRenderPipelineState_, createRenderPipelineStateUnsafe,
-        createRenderPipelineStateUnchecked, js_createDepthStencilState,
-        createDepthStencilState, createDepthStencilState_,
-        createDepthStencilStateUnsafe, createDepthStencilStateUnchecked,
-        js_createComputePipelineState, createComputePipelineState,
-        createComputePipelineState_, createComputePipelineStateUnsafe,
-        createComputePipelineStateUnchecked, js_createCommandQueue,
-        createCommandQueue, createCommandQueue_, createCommandQueueUnsafe,
-        createCommandQueueUnchecked, js_nextDrawable, nextDrawable,
-        nextDrawable_, nextDrawableUnsafe, nextDrawableUnchecked,
-        js_createBuffer, createBuffer, createBuffer_, createBufferUnsafe,
-        createBufferUnchecked, js_createTexture, createTexture,
-        createTexture_, createTextureUnsafe, createTextureUnchecked,
-        pattern PixelFormatBGRA8Unorm, pattern PixelFormatDepth32Float,
-        pattern PixelFormatStencil8, pattern PixelFormatInvalid,
-        pattern LoadActionDontCare, pattern LoadActionLoad,
-        pattern LoadActionClear, pattern StoreActionDontCare,
-        pattern StoreActionStore, pattern StoreActionMultisampleResolve,
-        pattern PrimitiveTypePoint, pattern PrimitiveTypeLine,
-        pattern PrimitiveTypeLineStrip, pattern PrimitiveTypeTriangle,
-        pattern PrimitiveTypeTriangleStrip, pattern CompareFunctionNever,
-        pattern CompareFunctionLess, pattern CompareFunctionEqual,
-        pattern CompareFunctionLessEqual, pattern CompareFunctionGreater,
-        pattern CompareFunctionNotEqual,
-        pattern CompareFunctionGreaterEqual, pattern CompareFunctionAlways,
-        pattern TextureType1D, pattern TextureType1DArray,
-        pattern TextureType2D, pattern TextureType2DArray,
-        pattern TextureType2DMultisample, pattern TextureTypeCube,
-        pattern TextureTypeCubeArray, pattern TextureType3D,
-        pattern StorageModeShared, pattern StorageModeManaged,
-        pattern StorageModePrivate, pattern TextureUsageUnknown,
-        pattern TextureUsageShaderRead, pattern TextureUsageShaderWrite,
-        pattern TextureUsageRenderTarget,
-        pattern TextureUsagePixelFormatView, WebGPURenderingContext(..),
-        gTypeWebGPURenderingContext)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createLibrary\"]($2); })"
-        js_createLibrary ::
-        WebGPURenderingContext -> JSString -> IO WebGPULibrary
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createLibrary Mozilla WebGPURenderingContext.createLibrary documentation> 
-createLibrary ::
-              (MonadIO m, ToJSString sourceCode) =>
-                WebGPURenderingContext -> sourceCode -> m WebGPULibrary
-createLibrary self sourceCode
-  = liftIO (js_createLibrary self (toJSString sourceCode))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createLibrary Mozilla WebGPURenderingContext.createLibrary documentation> 
-createLibrary_ ::
-               (MonadIO m, ToJSString sourceCode) =>
-                 WebGPURenderingContext -> sourceCode -> m ()
-createLibrary_ self sourceCode
-  = liftIO (void (js_createLibrary self (toJSString sourceCode)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createRenderPipelineState\"]($2); })"
-        js_createRenderPipelineState ::
-        WebGPURenderingContext ->
-          WebGPURenderPipelineDescriptor ->
-            IO (Nullable WebGPURenderPipelineState)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineState ::
-                          (MonadIO m) =>
-                            WebGPURenderingContext ->
-                              WebGPURenderPipelineDescriptor ->
-                                m (Maybe WebGPURenderPipelineState)
-createRenderPipelineState self descriptor
-  = liftIO
-      (nullableToMaybe <$>
-         (js_createRenderPipelineState self descriptor))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineState_ ::
-                           (MonadIO m) =>
-                             WebGPURenderingContext -> WebGPURenderPipelineDescriptor -> m ()
-createRenderPipelineState_ self descriptor
-  = liftIO (void (js_createRenderPipelineState self descriptor))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineStateUnsafe ::
-                                (MonadIO m, HasCallStack) =>
-                                  WebGPURenderingContext ->
-                                    WebGPURenderPipelineDescriptor -> m WebGPURenderPipelineState
-createRenderPipelineStateUnsafe self descriptor
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_createRenderPipelineState self descriptor))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineStateUnchecked ::
-                                   (MonadIO m) =>
-                                     WebGPURenderingContext ->
-                                       WebGPURenderPipelineDescriptor -> m WebGPURenderPipelineState
-createRenderPipelineStateUnchecked self descriptor
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_createRenderPipelineState self descriptor))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createDepthStencilState\"]($2); })" js_createDepthStencilState ::
-        WebGPURenderingContext ->
-          WebGPUDepthStencilDescriptor ->
-            IO (Nullable WebGPUDepthStencilState)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilState ::
-                        (MonadIO m) =>
-                          WebGPURenderingContext ->
-                            WebGPUDepthStencilDescriptor -> m (Maybe WebGPUDepthStencilState)
-createDepthStencilState self descriptor
-  = liftIO
-      (nullableToMaybe <$> (js_createDepthStencilState self descriptor))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilState_ ::
-                         (MonadIO m) =>
-                           WebGPURenderingContext -> WebGPUDepthStencilDescriptor -> m ()
-createDepthStencilState_ self descriptor
-  = liftIO (void (js_createDepthStencilState self descriptor))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilStateUnsafe ::
-                              (MonadIO m, HasCallStack) =>
-                                WebGPURenderingContext ->
-                                  WebGPUDepthStencilDescriptor -> m WebGPUDepthStencilState
-createDepthStencilStateUnsafe self descriptor
-  = liftIO
-      ((nullableToMaybe <$> (js_createDepthStencilState self descriptor))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilStateUnchecked ::
-                                 (MonadIO m) =>
-                                   WebGPURenderingContext ->
-                                     WebGPUDepthStencilDescriptor -> m WebGPUDepthStencilState
-createDepthStencilStateUnchecked self descriptor
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_createDepthStencilState self descriptor))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"createComputePipelineState\"]($2); })"
-        js_createComputePipelineState ::
-        WebGPURenderingContext ->
-          WebGPUFunction -> IO (Nullable WebGPUComputePipelineState)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineState ::
-                           (MonadIO m) =>
-                             WebGPURenderingContext ->
-                               WebGPUFunction -> m (Maybe WebGPUComputePipelineState)
-createComputePipelineState self function
-  = liftIO
-      (nullableToMaybe <$> (js_createComputePipelineState self function))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineState_ ::
-                            (MonadIO m) => WebGPURenderingContext -> WebGPUFunction -> m ()
-createComputePipelineState_ self function
-  = liftIO (void (js_createComputePipelineState self function))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineStateUnsafe ::
-                                 (MonadIO m, HasCallStack) =>
-                                   WebGPURenderingContext ->
-                                     WebGPUFunction -> m WebGPUComputePipelineState
-createComputePipelineStateUnsafe self function
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_createComputePipelineState self function))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineStateUnchecked ::
-                                    (MonadIO m) =>
-                                      WebGPURenderingContext ->
-                                        WebGPUFunction -> m WebGPUComputePipelineState
-createComputePipelineStateUnchecked self function
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_createComputePipelineState self function))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"createCommandQueue\"](); })"
-        js_createCommandQueue ::
-        WebGPURenderingContext -> IO (Nullable WebGPUCommandQueue)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueue ::
-                   (MonadIO m) =>
-                     WebGPURenderingContext -> m (Maybe WebGPUCommandQueue)
-createCommandQueue self
-  = liftIO (nullableToMaybe <$> (js_createCommandQueue self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueue_ ::
-                    (MonadIO m) => WebGPURenderingContext -> m ()
-createCommandQueue_ self
-  = liftIO (void (js_createCommandQueue self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueueUnsafe ::
-                         (MonadIO m, HasCallStack) =>
-                           WebGPURenderingContext -> m WebGPUCommandQueue
-createCommandQueueUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_createCommandQueue self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueueUnchecked ::
-                            (MonadIO m) => WebGPURenderingContext -> m WebGPUCommandQueue
-createCommandQueueUnchecked self
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_createCommandQueue self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"nextDrawable\"](); })"
-        js_nextDrawable ::
-        WebGPURenderingContext -> IO (Nullable WebGPUDrawable)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawable ::
-             (MonadIO m) => WebGPURenderingContext -> m (Maybe WebGPUDrawable)
-nextDrawable self
-  = liftIO (nullableToMaybe <$> (js_nextDrawable self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawable_ :: (MonadIO m) => WebGPURenderingContext -> m ()
-nextDrawable_ self = liftIO (void (js_nextDrawable self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawableUnsafe ::
-                   (MonadIO m, HasCallStack) =>
-                     WebGPURenderingContext -> m WebGPUDrawable
-nextDrawableUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_nextDrawable self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawableUnchecked ::
-                      (MonadIO m) => WebGPURenderingContext -> m WebGPUDrawable
-nextDrawableUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_nextDrawable self))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createBuffer\"]($2); })"
-        js_createBuffer ::
-        WebGPURenderingContext ->
-          ArrayBufferView -> IO (Nullable WebGPUBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBuffer ::
-             (MonadIO m, IsArrayBufferView data') =>
-               WebGPURenderingContext -> data' -> m (Maybe WebGPUBuffer)
-createBuffer self data'
-  = liftIO
-      (nullableToMaybe <$>
-         (js_createBuffer self (toArrayBufferView data')))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBuffer_ ::
-              (MonadIO m, IsArrayBufferView data') =>
-                WebGPURenderingContext -> data' -> m ()
-createBuffer_ self data'
-  = liftIO (void (js_createBuffer self (toArrayBufferView data')))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBufferUnsafe ::
-                   (MonadIO m, IsArrayBufferView data', HasCallStack) =>
-                     WebGPURenderingContext -> data' -> m WebGPUBuffer
-createBufferUnsafe self data'
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_createBuffer self (toArrayBufferView data')))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBufferUnchecked ::
-                      (MonadIO m, IsArrayBufferView data') =>
-                        WebGPURenderingContext -> data' -> m WebGPUBuffer
-createBufferUnchecked self data'
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_createBuffer self (toArrayBufferView data')))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createTexture\"]($2); })"
-        js_createTexture ::
-        WebGPURenderingContext ->
-          WebGPUTextureDescriptor -> IO (Nullable WebGPUTexture)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTexture ::
-              (MonadIO m) =>
-                WebGPURenderingContext ->
-                  WebGPUTextureDescriptor -> m (Maybe WebGPUTexture)
-createTexture self descriptor
-  = liftIO (nullableToMaybe <$> (js_createTexture self descriptor))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTexture_ ::
-               (MonadIO m) =>
-                 WebGPURenderingContext -> WebGPUTextureDescriptor -> m ()
-createTexture_ self descriptor
-  = liftIO (void (js_createTexture self descriptor))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTextureUnsafe ::
-                    (MonadIO m, HasCallStack) =>
-                      WebGPURenderingContext ->
-                        WebGPUTextureDescriptor -> m WebGPUTexture
-createTextureUnsafe self descriptor
-  = liftIO
-      ((nullableToMaybe <$> (js_createTexture self descriptor)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTextureUnchecked ::
-                       (MonadIO m) =>
-                         WebGPURenderingContext ->
-                           WebGPUTextureDescriptor -> m WebGPUTexture
-createTextureUnchecked self descriptor
-  = liftIO
-      (fromJust . nullableToMaybe <$> (js_createTexture self descriptor))
-pattern PixelFormatBGRA8Unorm = 80
-pattern PixelFormatDepth32Float = 252
-pattern PixelFormatStencil8 = 253
-pattern PixelFormatInvalid = 0
-pattern LoadActionDontCare = 0
-pattern LoadActionLoad = 1
-pattern LoadActionClear = 2
-pattern StoreActionDontCare = 0
-pattern StoreActionStore = 1
-pattern StoreActionMultisampleResolve = 2
-pattern PrimitiveTypePoint = 0
-pattern PrimitiveTypeLine = 1
-pattern PrimitiveTypeLineStrip = 2
-pattern PrimitiveTypeTriangle = 3
-pattern PrimitiveTypeTriangleStrip = 4
-pattern CompareFunctionNever = 0
-pattern CompareFunctionLess = 1
-pattern CompareFunctionEqual = 2
-pattern CompareFunctionLessEqual = 3
-pattern CompareFunctionGreater = 4
-pattern CompareFunctionNotEqual = 5
-pattern CompareFunctionGreaterEqual = 6
-pattern CompareFunctionAlways = 7
-pattern TextureType1D = 0
-pattern TextureType1DArray = 1
-pattern TextureType2D = 2
-pattern TextureType2DArray = 3
-pattern TextureType2DMultisample = 4
-pattern TextureTypeCube = 5
-pattern TextureTypeCubeArray = 6
-pattern TextureType3D = 7
-pattern StorageModeShared = 0
-pattern StorageModeManaged = 1
-pattern StorageModePrivate = 2
-pattern TextureUsageUnknown = 0
-pattern TextureUsageShaderRead = 1
-pattern TextureUsageShaderWrite = 2
-pattern TextureUsageRenderTarget = 4
-pattern TextureUsagePixelFormatView = 16
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUTexture
-       (js_getWidth, getWidth, js_getHeight, getHeight, WebGPUTexture(..),
-        gTypeWebGPUTexture)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        WebGPUTexture -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture.width Mozilla WebGPUTexture.width documentation> 
-getWidth :: (MonadIO m) => WebGPUTexture -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        WebGPUTexture -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture.height Mozilla WebGPUTexture.height documentation> 
-getHeight :: (MonadIO m) => WebGPUTexture -> m Word
-getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs
+++ /dev/null
@@ -1,134 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebGPUTextureDescriptor
-       (js_newWebGPUTextureDescriptor, newWebGPUTextureDescriptor,
-        js_setTextureType, setTextureType, js_getTextureType,
-        getTextureType, js_setWidth, setWidth, js_getWidth, getWidth,
-        js_setHeight, setHeight, js_getHeight, getHeight,
-        js_setSampleCount, setSampleCount, js_getSampleCount,
-        getSampleCount, js_setStorageMode, setStorageMode,
-        js_getStorageMode, getStorageMode, js_setUsage, setUsage,
-        js_getUsage, getUsage, WebGPUTextureDescriptor(..),
-        gTypeWebGPUTextureDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return new window[\"WebGPUTextureDescriptor\"]($1,\n$2, $3, $4); })"
-        js_newWebGPUTextureDescriptor ::
-        Word -> Word -> Word -> Bool -> IO WebGPUTextureDescriptor
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor Mozilla WebGPUTextureDescriptor documentation> 
-newWebGPUTextureDescriptor ::
-                           (MonadIO m) =>
-                             Word -> Word -> Word -> Bool -> m WebGPUTextureDescriptor
-newWebGPUTextureDescriptor pixelFormat width height mipmapped
-  = liftIO
-      (js_newWebGPUTextureDescriptor pixelFormat width height mipmapped)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"textureType\"] = $2; })"
-        js_setTextureType :: WebGPUTextureDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
-setTextureType ::
-               (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
-setTextureType self val = liftIO (js_setTextureType self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"textureType\"]; })"
-        js_getTextureType :: WebGPUTextureDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
-getTextureType :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
-getTextureType self = liftIO (js_getTextureType self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
-        :: WebGPUTextureDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
-setWidth :: (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
-setWidth self val = liftIO (js_setWidth self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
-        WebGPUTextureDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
-getWidth :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
-getWidth self = liftIO (js_getWidth self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
-        js_setHeight :: WebGPUTextureDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
-setHeight :: (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
-setHeight self val = liftIO (js_setHeight self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
-        WebGPUTextureDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
-getHeight :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
-getHeight self = liftIO (js_getHeight self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"sampleCount\"] = $2; })"
-        js_setSampleCount :: WebGPUTextureDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
-setSampleCount ::
-               (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
-setSampleCount self val = liftIO (js_setSampleCount self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sampleCount\"]; })"
-        js_getSampleCount :: WebGPUTextureDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
-getSampleCount :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
-getSampleCount self = liftIO (js_getSampleCount self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"storageMode\"] = $2; })"
-        js_setStorageMode :: WebGPUTextureDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
-setStorageMode ::
-               (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
-setStorageMode self val = liftIO (js_setStorageMode self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"storageMode\"]; })"
-        js_getStorageMode :: WebGPUTextureDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
-getStorageMode :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
-getStorageMode self = liftIO (js_getStorageMode self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"usage\"] = $2; })" js_setUsage
-        :: WebGPUTextureDescriptor -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
-setUsage :: (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
-setUsage self val = liftIO (js_setUsage self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })" js_getUsage ::
-        WebGPUTextureDescriptor -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
-getUsage :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
-getUsage self = liftIO (js_getUsage self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent
-       (js_newWebKitAnimationEvent, newWebKitAnimationEvent,
-        js_getAnimationName, getAnimationName, js_getElapsedTime,
-        getElapsedTime, WebKitAnimationEvent(..),
-        gTypeWebKitAnimationEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebKitAnimationEvent\"]($1,\n$2); })"
-        js_newWebKitAnimationEvent ::
-        JSString ->
-          Optional WebKitAnimationEventInit -> IO WebKitAnimationEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation> 
-newWebKitAnimationEvent ::
-                        (MonadIO m, ToJSString type') =>
-                          type' -> Maybe WebKitAnimationEventInit -> m WebKitAnimationEvent
-newWebKitAnimationEvent type' eventInitDict
-  = liftIO
-      (js_newWebKitAnimationEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"animationName\"]; })"
-        js_getAnimationName :: WebKitAnimationEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.animationName Mozilla WebKitAnimationEvent.animationName documentation> 
-getAnimationName ::
-                 (MonadIO m, FromJSString result) =>
-                   WebKitAnimationEvent -> m result
-getAnimationName self
-  = liftIO (fromJSString <$> (js_getAnimationName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
-        js_getElapsedTime :: WebKitAnimationEvent -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.elapsedTime Mozilla WebKitAnimationEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadIO m) => WebKitAnimationEvent -> m Double
-getElapsedTime self = liftIO (js_getElapsedTime self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs
+++ /dev/null
@@ -1,552 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
-       (js_newWebKitCSSMatrix, newWebKitCSSMatrix, js_setMatrixValue,
-        setMatrixValue, js_multiply, multiply, multiply_, js_inverse,
-        inverse, inverse_, js_translate, translate, translate_, js_scale,
-        scale, scale_, js_rotate, rotate, rotate_, js_rotateAxisAngle,
-        rotateAxisAngle, rotateAxisAngle_, js_skewX, skewX, skewX_,
-        js_skewY, skewY, skewY_, js_toString, toString, toString_, js_setA,
-        setA, js_getA, getA, js_setB, setB, js_getB, getB, js_setC, setC,
-        js_getC, getC, js_setD, setD, js_getD, getD, js_setE, setE,
-        js_getE, getE, js_setF, setF, js_getF, getF, js_setM11, setM11,
-        js_getM11, getM11, js_setM12, setM12, js_getM12, getM12, js_setM13,
-        setM13, js_getM13, getM13, js_setM14, setM14, js_getM14, getM14,
-        js_setM21, setM21, js_getM21, getM21, js_setM22, setM22, js_getM22,
-        getM22, js_setM23, setM23, js_getM23, getM23, js_setM24, setM24,
-        js_getM24, getM24, js_setM31, setM31, js_getM31, getM31, js_setM32,
-        setM32, js_getM32, getM32, js_setM33, setM33, js_getM33, getM33,
-        js_setM34, setM34, js_getM34, getM34, js_setM41, setM41, js_getM41,
-        getM41, js_setM42, setM42, js_getM42, getM42, js_setM43, setM43,
-        js_getM43, getM43, js_setM44, setM44, js_getM44, getM44,
-        WebKitCSSMatrix(..), gTypeWebKitCSSMatrix)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1) => { return new window[\"WebKitCSSMatrix\"]($1); })" js_newWebKitCSSMatrix ::
-        Optional JSString -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation> 
-newWebKitCSSMatrix ::
-                   (MonadIO m, ToJSString cssValue) =>
-                     Maybe cssValue -> m WebKitCSSMatrix
-newWebKitCSSMatrix cssValue
-  = liftIO (js_newWebKitCSSMatrix (toOptionalJSString cssValue))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"setMatrixValue\"]($2); })"
-        js_setMatrixValue :: WebKitCSSMatrix -> Optional JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.setMatrixValue Mozilla WebKitCSSMatrix.setMatrixValue documentation> 
-setMatrixValue ::
-               (MonadIO m, ToJSString string) =>
-                 WebKitCSSMatrix -> Maybe string -> m ()
-setMatrixValue self string
-  = liftIO (js_setMatrixValue self (toOptionalJSString string))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"multiply\"]($2); })" js_multiply
-        ::
-        WebKitCSSMatrix -> Optional WebKitCSSMatrix -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
-multiply ::
-         (MonadIO m) =>
-           WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m WebKitCSSMatrix
-multiply self secondMatrix
-  = liftIO (js_multiply self (maybeToOptional secondMatrix))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
-multiply_ ::
-          (MonadIO m) => WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m ()
-multiply_ self secondMatrix
-  = liftIO (void (js_multiply self (maybeToOptional secondMatrix)))
- 
-foreign import javascript safe "(($1) => { return $1[\"inverse\"](); })" js_inverse ::
-        WebKitCSSMatrix -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
-inverse :: (MonadIO m) => WebKitCSSMatrix -> m WebKitCSSMatrix
-inverse self = liftIO (js_inverse self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
-inverse_ :: (MonadIO m) => WebKitCSSMatrix -> m ()
-inverse_ self = liftIO (void (js_inverse self))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"translate\"]($2, $3, $4); })"
-        js_translate ::
-        WebKitCSSMatrix ->
-          Optional Double ->
-            Optional Double -> Optional Double -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
-translate ::
-          (MonadIO m) =>
-            WebKitCSSMatrix ->
-              Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-translate self x y z
-  = liftIO
-      (js_translate self (maybeToOptional x) (maybeToOptional y)
-         (maybeToOptional z))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
-translate_ ::
-           (MonadIO m) =>
-             WebKitCSSMatrix ->
-               Maybe Double -> Maybe Double -> Maybe Double -> m ()
-translate_ self x y z
-  = liftIO
-      (void
-         (js_translate self (maybeToOptional x) (maybeToOptional y)
-            (maybeToOptional z)))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"scale\"]($2, $3, $4); })"
-        js_scale ::
-        WebKitCSSMatrix ->
-          Optional Double ->
-            Optional Double -> Optional Double -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
-scale ::
-      (MonadIO m) =>
-        WebKitCSSMatrix ->
-          Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-scale self scaleX scaleY scaleZ
-  = liftIO
-      (js_scale self (maybeToOptional scaleX) (maybeToOptional scaleY)
-         (maybeToOptional scaleZ))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
-scale_ ::
-       (MonadIO m) =>
-         WebKitCSSMatrix ->
-           Maybe Double -> Maybe Double -> Maybe Double -> m ()
-scale_ self scaleX scaleY scaleZ
-  = liftIO
-      (void
-         (js_scale self (maybeToOptional scaleX) (maybeToOptional scaleY)
-            (maybeToOptional scaleZ)))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"rotate\"]($2, $3, $4); })"
-        js_rotate ::
-        WebKitCSSMatrix ->
-          Optional Double ->
-            Optional Double -> Optional Double -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
-rotate ::
-       (MonadIO m) =>
-         WebKitCSSMatrix ->
-           Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-rotate self rotX rotY rotZ
-  = liftIO
-      (js_rotate self (maybeToOptional rotX) (maybeToOptional rotY)
-         (maybeToOptional rotZ))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
-rotate_ ::
-        (MonadIO m) =>
-          WebKitCSSMatrix ->
-            Maybe Double -> Maybe Double -> Maybe Double -> m ()
-rotate_ self rotX rotY rotZ
-  = liftIO
-      (void
-         (js_rotate self (maybeToOptional rotX) (maybeToOptional rotY)
-            (maybeToOptional rotZ)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5) => { return $1[\"rotateAxisAngle\"]($2, $3,\n$4, $5); })" js_rotateAxisAngle ::
-        WebKitCSSMatrix ->
-          Optional Double ->
-            Optional Double ->
-              Optional Double -> Optional Double -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
-rotateAxisAngle ::
-                (MonadIO m) =>
-                  WebKitCSSMatrix ->
-                    Maybe Double ->
-                      Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-rotateAxisAngle self x y z angle
-  = liftIO
-      (js_rotateAxisAngle self (maybeToOptional x) (maybeToOptional y)
-         (maybeToOptional z)
-         (maybeToOptional angle))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
-rotateAxisAngle_ ::
-                 (MonadIO m) =>
-                   WebKitCSSMatrix ->
-                     Maybe Double ->
-                       Maybe Double -> Maybe Double -> Maybe Double -> m ()
-rotateAxisAngle_ self x y z angle
-  = liftIO
-      (void
-         (js_rotateAxisAngle self (maybeToOptional x) (maybeToOptional y)
-            (maybeToOptional z)
-            (maybeToOptional angle)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"skewX\"]($2); })" js_skewX ::
-        WebKitCSSMatrix -> Optional Double -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
-skewX ::
-      (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m WebKitCSSMatrix
-skewX self angle = liftIO (js_skewX self (maybeToOptional angle))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
-skewX_ :: (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m ()
-skewX_ self angle
-  = liftIO (void (js_skewX self (maybeToOptional angle)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"skewY\"]($2); })" js_skewY ::
-        WebKitCSSMatrix -> Optional Double -> IO WebKitCSSMatrix
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
-skewY ::
-      (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m WebKitCSSMatrix
-skewY self angle = liftIO (js_skewY self (maybeToOptional angle))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
-skewY_ :: (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m ()
-skewY_ self angle
-  = liftIO (void (js_skewY self (maybeToOptional angle)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: WebKitCSSMatrix -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.toString Mozilla WebKitCSSMatrix.toString documentation> 
-toString ::
-         (MonadIO m, FromJSString result) => WebKitCSSMatrix -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.toString Mozilla WebKitCSSMatrix.toString documentation> 
-toString_ :: (MonadIO m) => WebKitCSSMatrix -> m ()
-toString_ self = liftIO (void (js_toString self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"a\"] = $2; })" js_setA ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
-setA :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setA self val = liftIO (js_setA self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })" js_getA ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
-getA :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getA self = liftIO (js_getA self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"b\"] = $2; })" js_setB ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
-setB :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setB self val = liftIO (js_setB self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })" js_getB ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
-getB :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getB self = liftIO (js_getB self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"c\"] = $2; })" js_setC ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
-setC :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setC self val = liftIO (js_setC self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"c\"]; })" js_getC ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
-getC :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getC self = liftIO (js_getC self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"d\"] = $2; })" js_setD ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
-setD :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setD self val = liftIO (js_setD self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })" js_getD ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
-getD :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getD self = liftIO (js_getD self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"e\"] = $2; })" js_setE ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
-setE :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setE self val = liftIO (js_setE self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })" js_getE ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
-getE :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getE self = liftIO (js_getE self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"f\"] = $2; })" js_setF ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
-setF :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setF self val = liftIO (js_setF self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"f\"]; })" js_getF ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
-getF :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getF self = liftIO (js_getF self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m11\"] = $2; })" js_setM11 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
-setM11 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM11 self val = liftIO (js_setM11 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m11\"]; })" js_getM11 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
-getM11 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM11 self = liftIO (js_getM11 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m12\"] = $2; })" js_setM12 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
-setM12 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM12 self val = liftIO (js_setM12 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m12\"]; })" js_getM12 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
-getM12 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM12 self = liftIO (js_getM12 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m13\"] = $2; })" js_setM13 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
-setM13 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM13 self val = liftIO (js_setM13 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m13\"]; })" js_getM13 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
-getM13 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM13 self = liftIO (js_getM13 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m14\"] = $2; })" js_setM14 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
-setM14 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM14 self val = liftIO (js_setM14 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m14\"]; })" js_getM14 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
-getM14 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM14 self = liftIO (js_getM14 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m21\"] = $2; })" js_setM21 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
-setM21 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM21 self val = liftIO (js_setM21 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m21\"]; })" js_getM21 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
-getM21 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM21 self = liftIO (js_getM21 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m22\"] = $2; })" js_setM22 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
-setM22 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM22 self val = liftIO (js_setM22 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m22\"]; })" js_getM22 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
-getM22 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM22 self = liftIO (js_getM22 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m23\"] = $2; })" js_setM23 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
-setM23 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM23 self val = liftIO (js_setM23 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m23\"]; })" js_getM23 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
-getM23 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM23 self = liftIO (js_getM23 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m24\"] = $2; })" js_setM24 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
-setM24 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM24 self val = liftIO (js_setM24 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m24\"]; })" js_getM24 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
-getM24 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM24 self = liftIO (js_getM24 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m31\"] = $2; })" js_setM31 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
-setM31 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM31 self val = liftIO (js_setM31 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m31\"]; })" js_getM31 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
-getM31 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM31 self = liftIO (js_getM31 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m32\"] = $2; })" js_setM32 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
-setM32 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM32 self val = liftIO (js_setM32 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m32\"]; })" js_getM32 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
-getM32 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM32 self = liftIO (js_getM32 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m33\"] = $2; })" js_setM33 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
-setM33 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM33 self val = liftIO (js_setM33 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m33\"]; })" js_getM33 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
-getM33 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM33 self = liftIO (js_getM33 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m34\"] = $2; })" js_setM34 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
-setM34 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM34 self val = liftIO (js_setM34 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m34\"]; })" js_getM34 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
-getM34 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM34 self = liftIO (js_getM34 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m41\"] = $2; })" js_setM41 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
-setM41 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM41 self val = liftIO (js_setM41 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m41\"]; })" js_getM41 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
-getM41 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM41 self = liftIO (js_getM41 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m42\"] = $2; })" js_setM42 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
-setM42 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM42 self val = liftIO (js_setM42 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m42\"]; })" js_getM42 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
-getM42 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM42 self = liftIO (js_getM42 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m43\"] = $2; })" js_setM43 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
-setM43 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM43 self val = liftIO (js_setM43 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m43\"]; })" js_getM43 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
-getM43 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM43 self = liftIO (js_getM43 self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"m44\"] = $2; })" js_setM44 ::
-        WebKitCSSMatrix -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
-setM44 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
-setM44 self val = liftIO (js_setM44 self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"m44\"]; })" js_getM44 ::
-        WebKitCSSMatrix -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
-getM44 :: (MonadIO m) => WebKitCSSMatrix -> m Double
-getM44 self = liftIO (js_getM44 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
-       (js_getCssRules, getCssRules, WebKitCSSRegionRule(..),
-        gTypeWebKitCSSRegionRule)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
-        :: WebKitCSSRegionRule -> IO CSSRuleList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
-getCssRules :: (MonadIO m) => WebKitCSSRegionRule -> m CSSRuleList
-getCssRules self = liftIO (js_getCssRules self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
-       (js_getStyle, getStyle, WebKitCSSViewportRule(..),
-        gTypeWebKitCSSViewportRule)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
-        WebKitCSSViewportRule -> IO CSSStyleDeclaration
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
-getStyle ::
-         (MonadIO m) => WebKitCSSViewportRule -> m CSSStyleDeclaration
-getStyle self = liftIO (js_getStyle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyError
-       (pattern MEDIA_KEYERR_UNKNOWN, pattern MEDIA_KEYERR_CLIENT,
-        pattern MEDIA_KEYERR_SERVICE, pattern MEDIA_KEYERR_OUTPUT,
-        pattern MEDIA_KEYERR_HARDWARECHANGE, pattern MEDIA_KEYERR_DOMAIN,
-        js_getCode, getCode, js_getSystemCode, getSystemCode,
-        WebKitMediaKeyError(..), gTypeWebKitMediaKeyError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
-pattern MEDIA_KEYERR_UNKNOWN = 1
-pattern MEDIA_KEYERR_CLIENT = 2
-pattern MEDIA_KEYERR_SERVICE = 3
-pattern MEDIA_KEYERR_OUTPUT = 4
-pattern MEDIA_KEYERR_HARDWARECHANGE = 5
-pattern MEDIA_KEYERR_DOMAIN = 6
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        WebKitMediaKeyError -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.code Mozilla WebKitMediaKeyError.code documentation> 
-getCode :: (MonadIO m) => WebKitMediaKeyError -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"systemCode\"]; })"
-        js_getSystemCode :: WebKitMediaKeyError -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.systemCode Mozilla WebKitMediaKeyError.systemCode documentation> 
-getSystemCode :: (MonadIO m) => WebKitMediaKeyError -> m Word
-getSystemCode self = liftIO (js_getSystemCode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyMessageEvent
-       (js_newWebKitMediaKeyMessageEvent, newWebKitMediaKeyMessageEvent,
-        js_getMessage, getMessage, js_getDestinationURL, getDestinationURL,
-        WebKitMediaKeyMessageEvent(..), gTypeWebKitMediaKeyMessageEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebKitMediaKeyMessageEvent\"]($1,\n$2); })"
-        js_newWebKitMediaKeyMessageEvent ::
-        JSString ->
-          Optional WebKitMediaKeyMessageEventInit ->
-            IO WebKitMediaKeyMessageEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
-newWebKitMediaKeyMessageEvent ::
-                              (MonadIO m, ToJSString type') =>
-                                type' ->
-                                  Maybe WebKitMediaKeyMessageEventInit ->
-                                    m WebKitMediaKeyMessageEvent
-newWebKitMediaKeyMessageEvent type' eventInitDict
-  = liftIO
-      (js_newWebKitMediaKeyMessageEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        WebKitMediaKeyMessageEvent -> IO Uint8Array
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
-getMessage ::
-           (MonadIO m) => WebKitMediaKeyMessageEvent -> m Uint8Array
-getMessage self = liftIO (js_getMessage self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"destinationURL\"]; })"
-        js_getDestinationURL :: WebKitMediaKeyMessageEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.destinationURL Mozilla WebKitMediaKeyMessageEvent.destinationURL documentation> 
-getDestinationURL ::
-                  (MonadIO m, FromJSString result) =>
-                    WebKitMediaKeyMessageEvent -> m result
-getDestinationURL self
-  = liftIO (fromJSString <$> (js_getDestinationURL self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs
+++ /dev/null
@@ -1,53 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyNeededEvent
-       (js_newWebKitMediaKeyNeededEvent, newWebKitMediaKeyNeededEvent,
-        js_getInitData, getInitData, WebKitMediaKeyNeededEvent(..),
-        gTypeWebKitMediaKeyNeededEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebKitMediaKeyNeededEvent\"]($1,\n$2); })"
-        js_newWebKitMediaKeyNeededEvent ::
-        JSString ->
-          Optional WebKitMediaKeyNeededEventInit ->
-            IO WebKitMediaKeyNeededEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent Mozilla WebKitMediaKeyNeededEvent documentation> 
-newWebKitMediaKeyNeededEvent ::
-                             (MonadIO m, ToJSString type') =>
-                               type' ->
-                                 Maybe WebKitMediaKeyNeededEventInit -> m WebKitMediaKeyNeededEvent
-newWebKitMediaKeyNeededEvent type' eventInitDict
-  = liftIO
-      (js_newWebKitMediaKeyNeededEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"initData\"]; })" js_getInitData
-        :: WebKitMediaKeyNeededEvent -> IO Uint8Array
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent.initData Mozilla WebKitMediaKeyNeededEvent.initData documentation> 
-getInitData ::
-            (MonadIO m) => WebKitMediaKeyNeededEvent -> m Uint8Array
-getInitData self = liftIO (js_getInitData self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs
+++ /dev/null
@@ -1,85 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeySession
-       (js_update, update, js_close, close, js_getError, getError,
-        js_getKeySystem, getKeySystem, js_getSessionId, getSessionId,
-        webKitKeyAdded, webKitKeyError, webKitKeyMessage,
-        WebKitMediaKeySession(..), gTypeWebKitMediaKeySession)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"update\"]($2); })" js_update ::
-        WebKitMediaKeySession -> Uint8Array -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
-update ::
-       (MonadIO m, IsUint8Array key) =>
-         WebKitMediaKeySession -> key -> m ()
-update self key = liftIO (js_update self (toUint8Array key))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        WebKitMediaKeySession -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.close Mozilla WebKitMediaKeySession.close documentation> 
-close :: (MonadIO m) => WebKitMediaKeySession -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
-        WebKitMediaKeySession -> IO WebKitMediaKeyError
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.error Mozilla WebKitMediaKeySession.error documentation> 
-getError ::
-         (MonadIO m) => WebKitMediaKeySession -> m WebKitMediaKeyError
-getError self = liftIO (js_getError self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keySystem\"]; })"
-        js_getKeySystem :: WebKitMediaKeySession -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keySystem Mozilla WebKitMediaKeySession.keySystem documentation> 
-getKeySystem ::
-             (MonadIO m, FromJSString result) =>
-               WebKitMediaKeySession -> m result
-getKeySystem self
-  = liftIO (fromJSString <$> (js_getKeySystem self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"sessionId\"]; })"
-        js_getSessionId :: WebKitMediaKeySession -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.sessionId Mozilla WebKitMediaKeySession.sessionId documentation> 
-getSessionId ::
-             (MonadIO m, FromJSString result) =>
-               WebKitMediaKeySession -> m result
-getSessionId self
-  = liftIO (fromJSString <$> (js_getSessionId self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyadded Mozilla WebKitMediaKeySession.onwebkitkeyadded documentation> 
-webKitKeyAdded :: EventName WebKitMediaKeySession Event
-webKitKeyAdded = unsafeEventName (toJSString "webkitkeyadded")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyerror Mozilla WebKitMediaKeySession.onwebkitkeyerror documentation> 
-webKitKeyError :: EventName WebKitMediaKeySession Event
-webKitKeyError = unsafeEventName (toJSString "webkitkeyerror")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeymessage Mozilla WebKitMediaKeySession.onwebkitkeymessage documentation> 
-webKitKeyMessage :: EventName WebKitMediaKeySession Event
-webKitKeyMessage = unsafeEventName (toJSString "webkitkeymessage")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs
+++ /dev/null
@@ -1,93 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeys
-       (js_newWebKitMediaKeys, newWebKitMediaKeys, js_createSession,
-        createSession, createSession_, js_isTypeSupported, isTypeSupported,
-        isTypeSupported_, js_getKeySystem, getKeySystem,
-        WebKitMediaKeys(..), gTypeWebKitMediaKeys)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe
-        "(($1) => { return new window[\"WebKitMediaKeys\"]($1); })" js_newWebKitMediaKeys ::
-        JSString -> IO WebKitMediaKeys
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation> 
-newWebKitMediaKeys ::
-                   (MonadIO m, ToJSString keySystem) => keySystem -> m WebKitMediaKeys
-newWebKitMediaKeys keySystem
-  = liftIO (js_newWebKitMediaKeys (toJSString keySystem))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createSession\"]($2, $3); })"
-        js_createSession ::
-        WebKitMediaKeys ->
-          JSString -> Uint8Array -> IO WebKitMediaKeySession
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession ::
-              (MonadIO m, ToJSString type', IsUint8Array initData) =>
-                WebKitMediaKeys -> type' -> initData -> m WebKitMediaKeySession
-createSession self type' initData
-  = liftIO
-      (js_createSession self (toJSString type') (toUint8Array initData))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession_ ::
-               (MonadIO m, ToJSString type', IsUint8Array initData) =>
-                 WebKitMediaKeys -> type' -> initData -> m ()
-createSession_ self type' initData
-  = liftIO
-      (void
-         (js_createSession self (toJSString type') (toUint8Array initData)))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return (window[\"WebKitMediaKeys\"][\"isTypeSupported\"]($1,\n$2) ? 1 : 0); })"
-        js_isTypeSupported :: JSString -> Optional JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
-isTypeSupported ::
-                (MonadIO m, ToJSString keySystem, ToJSString type') =>
-                  keySystem -> Maybe type' -> m Bool
-isTypeSupported keySystem type'
-  = liftIO
-      (js_isTypeSupported (toJSString keySystem)
-         (toOptionalJSString type'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
-isTypeSupported_ ::
-                 (MonadIO m, ToJSString keySystem, ToJSString type') =>
-                   keySystem -> Maybe type' -> m ()
-isTypeSupported_ keySystem type'
-  = liftIO
-      (void
-         (js_isTypeSupported (toJSString keySystem)
-            (toOptionalJSString type')))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"keySystem\"]; })"
-        js_getKeySystem :: WebKitMediaKeys -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.keySystem Mozilla WebKitMediaKeys.keySystem documentation> 
-getKeySystem ::
-             (MonadIO m, FromJSString result) => WebKitMediaKeys -> m result
-getKeySystem self
-  = liftIO (fromJSString <$> (js_getKeySystem self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs
+++ /dev/null
@@ -1,98 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
-       (js_getRegionsByContent, getRegionsByContent, getRegionsByContent_,
-        js_getRegions, getRegions, getRegions_, js_getContent, getContent,
-        getContent_, js_getName, getName, js_getOverset, getOverset,
-        js_getFirstEmptyRegionIndex, getFirstEmptyRegionIndex,
-        WebKitNamedFlow(..), gTypeWebKitNamedFlow)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getRegionsByContent\"]($2); })"
-        js_getRegionsByContent ::
-        WebKitNamedFlow -> Optional Node -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
-getRegionsByContent ::
-                    (MonadIO m, IsNode contentNode) =>
-                      WebKitNamedFlow -> Maybe contentNode -> m NodeList
-getRegionsByContent self contentNode
-  = liftIO
-      (js_getRegionsByContent self
-         (maybeToOptional (fmap toNode contentNode)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
-getRegionsByContent_ ::
-                     (MonadIO m, IsNode contentNode) =>
-                       WebKitNamedFlow -> Maybe contentNode -> m ()
-getRegionsByContent_ self contentNode
-  = liftIO
-      (void
-         (js_getRegionsByContent self
-            (maybeToOptional (fmap toNode contentNode))))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getRegions\"](); })"
-        js_getRegions :: WebKitNamedFlow -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
-getRegions :: (MonadIO m) => WebKitNamedFlow -> m NodeList
-getRegions self = liftIO (js_getRegions self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
-getRegions_ :: (MonadIO m) => WebKitNamedFlow -> m ()
-getRegions_ self = liftIO (void (js_getRegions self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getContent\"](); })"
-        js_getContent :: WebKitNamedFlow -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
-getContent :: (MonadIO m) => WebKitNamedFlow -> m NodeList
-getContent self = liftIO (js_getContent self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
-getContent_ :: (MonadIO m) => WebKitNamedFlow -> m ()
-getContent_ self = liftIO (void (js_getContent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        WebKitNamedFlow -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.name Mozilla WebKitNamedFlow.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => WebKitNamedFlow -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"overset\"] ? 1 : 0); })"
-        js_getOverset :: WebKitNamedFlow -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.overset Mozilla WebKitNamedFlow.overset documentation> 
-getOverset :: (MonadIO m) => WebKitNamedFlow -> m Bool
-getOverset self = liftIO (js_getOverset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"firstEmptyRegionIndex\"]; })"
-        js_getFirstEmptyRegionIndex :: WebKitNamedFlow -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.firstEmptyRegionIndex Mozilla WebKitNamedFlow.firstEmptyRegionIndex documentation> 
-getFirstEmptyRegionIndex :: (MonadIO m) => WebKitNamedFlow -> m Int
-getFirstEmptyRegionIndex self
-  = liftIO (js_getFirstEmptyRegionIndex self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitNamespace
-       (js_getMessageHandlers, getMessageHandlers, WebKitNamespace(..),
-        gTypeWebKitNamespace)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"messageHandlers\"]; })"
-        js_getMessageHandlers ::
-        WebKitNamespace -> IO UserMessageHandlersNamespace
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
-getMessageHandlers ::
-                   (MonadIO m) => WebKitNamespace -> m UserMessageHandlersNamespace
-getMessageHandlers self = liftIO (js_getMessageHandlers self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
-       (js_newWebKitPlaybackTargetAvailabilityEvent,
-        newWebKitPlaybackTargetAvailabilityEvent, js_getAvailability,
-        getAvailability, WebKitPlaybackTargetAvailabilityEvent(..),
-        gTypeWebKitPlaybackTargetAvailabilityEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebKitPlaybackTargetAvailabilityEvent\"]($1,\n$2); })"
-        js_newWebKitPlaybackTargetAvailabilityEvent ::
-        JSString ->
-          Optional WebKitPlaybackTargetAvailabilityEventInit ->
-            IO WebKitPlaybackTargetAvailabilityEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation> 
-newWebKitPlaybackTargetAvailabilityEvent ::
-                                         (MonadIO m, ToJSString type') =>
-                                           type' ->
-                                             Maybe WebKitPlaybackTargetAvailabilityEventInit ->
-                                               m WebKitPlaybackTargetAvailabilityEvent
-newWebKitPlaybackTargetAvailabilityEvent type' eventInitDict
-  = liftIO
-      (js_newWebKitPlaybackTargetAvailabilityEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"availability\"]; })"
-        js_getAvailability ::
-        WebKitPlaybackTargetAvailabilityEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent.availability Mozilla WebKitPlaybackTargetAvailabilityEvent.availability documentation> 
-getAvailability ::
-                (MonadIO m, FromJSString result) =>
-                  WebKitPlaybackTargetAvailabilityEvent -> m result
-getAvailability self
-  = liftIO (fromJSString <$> (js_getAvailability self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs
+++ /dev/null
@@ -1,66 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitPoint
-       (js_newWebKitPoint, newWebKitPoint, js_setX, setX, js_getX, getX,
-        js_setY, setY, js_getY, getY, WebKitPoint(..), gTypeWebKitPoint)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebKitPoint\"]($1,\n$2); })" js_newWebKitPoint ::
-        Optional Float -> Optional Float -> IO WebKitPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
-newWebKitPoint ::
-               (MonadIO m) => Maybe Float -> Maybe Float -> m WebKitPoint
-newWebKitPoint x y
-  = liftIO
-      (js_newWebKitPoint (maybeToOptional x) (maybeToOptional y))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
-        WebKitPoint -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
-setX :: (MonadIO m) => WebKitPoint -> Float -> m ()
-setX self val = liftIO (js_setX self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
-        WebKitPoint -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
-getX :: (MonadIO m) => WebKitPoint -> m Float
-getX self = liftIO (js_getX self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
-        WebKitPoint -> Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
-setY :: (MonadIO m) => WebKitPoint -> Float -> m ()
-setY self val = liftIO (js_setY self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
-        WebKitPoint -> IO Float
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
-getY :: (MonadIO m) => WebKitPoint -> m Float
-getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs
+++ /dev/null
@@ -1,358 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitSubtleCrypto
-       (js_encrypt, encrypt, encrypt_, js_decrypt, decrypt, decrypt_,
-        js_sign, sign, sign_, js_verify, verify, verify_, js_digest,
-        digest, digest_, js_generateKey, generateKey, generateKey_,
-        js_importKey, importKey, importKey_, js_exportKey, exportKey,
-        exportKey_, js_wrapKey, wrapKey, wrapKey_, js_unwrapKey, unwrapKey,
-        unwrapKey_, WebKitSubtleCrypto(..), gTypeWebKitSubtleCrypto)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"encrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_encrypt ::
-        WebKitSubtleCrypto ->
-          JSString -> CryptoKey -> JSVal -> IO (JSVal, ArrayBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt ::
-        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-          WebKitSubtleCrypto ->
-            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
-encrypt self algorithm key data'
-  = liftIO
-      ((toJSVal data' >>=
-          \ data'' -> js_encrypt self (toJSString algorithm) key data'')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt_ ::
-         (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
-encrypt_ self algorithm key data'
-  = liftIO
-      (void
-         (toJSVal data' >>=
-            \ data'' -> js_encrypt self (toJSString algorithm) key data''))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"decrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_decrypt ::
-        WebKitSubtleCrypto ->
-          JSString -> CryptoKey -> JSVal -> IO (JSVal, ArrayBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt ::
-        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-          WebKitSubtleCrypto ->
-            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
-decrypt self algorithm key data'
-  = liftIO
-      ((toJSVal data' >>=
-          \ data'' -> js_decrypt self (toJSString algorithm) key data'')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt_ ::
-         (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
-decrypt_ self algorithm key data'
-  = liftIO
-      (void
-         (toJSVal data' >>=
-            \ data'' -> js_decrypt self (toJSString algorithm) key data''))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"sign\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_sign ::
-        WebKitSubtleCrypto ->
-          JSString -> CryptoKey -> JSVal -> IO (JSVal, ArrayBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign ::
-     (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-       WebKitSubtleCrypto ->
-         algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
-sign self algorithm key data'
-  = liftIO
-      ((toJSVal data' >>=
-          \ data'' -> js_sign self (toJSString algorithm) key data'')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign_ ::
-      (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-        WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
-sign_ self algorithm key data'
-  = liftIO
-      (void
-         (toJSVal data' >>=
-            \ data'' -> js_sign self (toJSString algorithm) key data''))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $c) => { return $1[\"verify\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_verify ::
-        WebKitSubtleCrypto ->
-          JSString ->
-            CryptoKey -> CryptoOperationData -> JSVal -> IO (JSVal, Bool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify ::
-       (MonadIO m, ToJSString algorithm, IsCryptoOperationData signature,
-        IsCryptoOperationData data') =>
-         WebKitSubtleCrypto ->
-           algorithm -> CryptoKey -> signature -> [data'] -> m Bool
-verify self algorithm key signature data'
-  = liftIO
-      ((toJSVal data' >>=
-          \ data'' ->
-            js_verify self (toJSString algorithm) key
-              (toCryptoOperationData signature)
-              data'')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify_ ::
-        (MonadIO m, ToJSString algorithm, IsCryptoOperationData signature,
-         IsCryptoOperationData data') =>
-          WebKitSubtleCrypto ->
-            algorithm -> CryptoKey -> signature -> [data'] -> m ()
-verify_ self algorithm key signature data'
-  = liftIO
-      (void
-         (toJSVal data' >>=
-            \ data'' ->
-              js_verify self (toJSString algorithm) key
-                (toCryptoOperationData signature)
-                data''))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"digest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_digest ::
-        WebKitSubtleCrypto -> JSString -> JSVal -> IO (JSVal, ArrayBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest ::
-       (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-         WebKitSubtleCrypto -> algorithm -> [data'] -> m ArrayBuffer
-digest self algorithm data'
-  = liftIO
-      ((toJSVal data' >>=
-          \ data'' -> js_digest self (toJSString algorithm) data'')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest_ ::
-        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
-          WebKitSubtleCrypto -> algorithm -> [data'] -> m ()
-digest_ self algorithm data'
-  = liftIO
-      (void
-         (toJSVal data' >>=
-            \ data'' -> js_digest self (toJSString algorithm) data''))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $c) => { return $1[\"generateKey\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_generateKey ::
-        WebKitSubtleCrypto ->
-          JSString -> Bool -> JSVal -> IO (JSVal, CryptoKeyOrKeyPair)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey ::
-            (MonadIO m, ToJSString algorithm) =>
-              WebKitSubtleCrypto ->
-                algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKeyOrKeyPair
-generateKey self algorithm extractable keyUsages
-  = liftIO
-      ((toJSVal keyUsages >>=
-          \ keyUsages' ->
-            js_generateKey self (toJSString algorithm) extractable keyUsages')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey_ ::
-             (MonadIO m, ToJSString algorithm) =>
-               WebKitSubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-generateKey_ self algorithm extractable keyUsages
-  = liftIO
-      (void
-         (toJSVal keyUsages >>=
-            \ keyUsages' ->
-              js_generateKey self (toJSString algorithm) extractable keyUsages'))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"importKey\"]($2, $3, $4, $5,\n$6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_importKey ::
-        WebKitSubtleCrypto ->
-          JSString ->
-            CryptoOperationData ->
-              Optional JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey ::
-          (MonadIO m, ToJSString format, IsCryptoOperationData keyData,
-           ToJSString algorithm) =>
-            WebKitSubtleCrypto ->
-              format ->
-                keyData ->
-                  Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
-importKey self format keyData algorithm extractable keyUsages
-  = liftIO
-      ((toJSVal keyUsages >>=
-          \ keyUsages' ->
-            js_importKey self (toJSString format)
-              (toCryptoOperationData keyData)
-              (toOptionalJSString algorithm)
-              extractable
-              keyUsages')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey_ ::
-           (MonadIO m, ToJSString format, IsCryptoOperationData keyData,
-            ToJSString algorithm) =>
-             WebKitSubtleCrypto ->
-               format ->
-                 keyData -> Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-importKey_ self format keyData algorithm extractable keyUsages
-  = liftIO
-      (void
-         (toJSVal keyUsages >>=
-            \ keyUsages' ->
-              js_importKey self (toJSString format)
-                (toCryptoOperationData keyData)
-                (toOptionalJSString algorithm)
-                extractable
-                keyUsages'))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"exportKey\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_exportKey ::
-        WebKitSubtleCrypto ->
-          JSString -> CryptoKey -> IO (JSVal, ArrayBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey ::
-          (MonadIO m, ToJSString format) =>
-            WebKitSubtleCrypto -> format -> CryptoKey -> m ArrayBuffer
-exportKey self format key
-  = liftIO
-      ((js_exportKey self (toJSString format) key) >>=
-         checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey_ ::
-           (MonadIO m, ToJSString format) =>
-             WebKitSubtleCrypto -> format -> CryptoKey -> m ()
-exportKey_ self format key
-  = liftIO (void (js_exportKey self (toJSString format) key))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $c) => { return $1[\"wrapKey\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_wrapKey ::
-        WebKitSubtleCrypto ->
-          JSString ->
-            CryptoKey -> CryptoKey -> JSString -> IO (JSVal, ArrayBuffer)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey ::
-        (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
-          WebKitSubtleCrypto ->
-            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ArrayBuffer
-wrapKey self format key wrappingKey wrapAlgorithm
-  = liftIO
-      ((js_wrapKey self (toJSString format) key wrappingKey
-          (toJSString wrapAlgorithm))
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey_ ::
-         (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
-           WebKitSubtleCrypto ->
-             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
-wrapKey_ self format key wrappingKey wrapAlgorithm
-  = liftIO
-      (void
-         (js_wrapKey self (toJSString format) key wrappingKey
-            (toJSString wrapAlgorithm)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $c) => { return $1[\"unwrapKey\"]($2, $3, $4, $5,\n$6, $7, $8).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_unwrapKey ::
-        WebKitSubtleCrypto ->
-          JSString ->
-            CryptoOperationData ->
-              CryptoKey ->
-                JSString ->
-                  Optional JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey ::
-          (MonadIO m, ToJSString format, IsCryptoOperationData wrappedKey,
-           ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
-            WebKitSubtleCrypto ->
-              format ->
-                wrappedKey ->
-                  CryptoKey ->
-                    unwrapAlgorithm ->
-                      Maybe unwrappedKeyAlgorithm ->
-                        Bool -> [CryptoKeyUsage] -> m CryptoKey
-unwrapKey self format wrappedKey unwrappingKey unwrapAlgorithm
-  unwrappedKeyAlgorithm extractable keyUsages
-  = liftIO
-      ((toJSVal keyUsages >>=
-          \ keyUsages' ->
-            js_unwrapKey self (toJSString format)
-              (toCryptoOperationData wrappedKey)
-              unwrappingKey
-              (toJSString unwrapAlgorithm)
-              (toOptionalJSString unwrappedKeyAlgorithm)
-              extractable
-              keyUsages')
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey_ ::
-           (MonadIO m, ToJSString format, IsCryptoOperationData wrappedKey,
-            ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
-             WebKitSubtleCrypto ->
-               format ->
-                 wrappedKey ->
-                   CryptoKey ->
-                     unwrapAlgorithm ->
-                       Maybe unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m ()
-unwrapKey_ self format wrappedKey unwrappingKey unwrapAlgorithm
-  unwrappedKeyAlgorithm extractable keyUsages
-  = liftIO
-      (void
-         (toJSVal keyUsages >>=
-            \ keyUsages' ->
-              js_unwrapKey self (toJSString format)
-                (toCryptoOperationData wrappedKey)
-                unwrappingKey
-                (toJSString unwrapAlgorithm)
-                (toOptionalJSString unwrappedKeyAlgorithm)
-                extractable
-                keyUsages'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs
+++ /dev/null
@@ -1,71 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
-       (js_newWebKitTransitionEvent, newWebKitTransitionEvent,
-        js_getPropertyName, getPropertyName, js_getElapsedTime,
-        getElapsedTime, js_getPseudoElement, getPseudoElement,
-        WebKitTransitionEvent(..), gTypeWebKitTransitionEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WebKitTransitionEvent\"]($1,\n$2); })"
-        js_newWebKitTransitionEvent ::
-        JSString ->
-          Optional WebKitTransitionEventInit -> IO WebKitTransitionEvent
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation> 
-newWebKitTransitionEvent ::
-                         (MonadIO m, ToJSString type') =>
-                           type' -> Maybe WebKitTransitionEventInit -> m WebKitTransitionEvent
-newWebKitTransitionEvent type' eventInitDict
-  = liftIO
-      (js_newWebKitTransitionEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"propertyName\"]; })"
-        js_getPropertyName :: WebKitTransitionEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.propertyName Mozilla WebKitTransitionEvent.propertyName documentation> 
-getPropertyName ::
-                (MonadIO m, FromJSString result) =>
-                  WebKitTransitionEvent -> m result
-getPropertyName self
-  = liftIO (fromJSString <$> (js_getPropertyName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
-        js_getElapsedTime :: WebKitTransitionEvent -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.elapsedTime Mozilla WebKitTransitionEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadIO m) => WebKitTransitionEvent -> m Double
-getElapsedTime self = liftIO (js_getElapsedTime self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
-        js_getPseudoElement :: WebKitTransitionEvent -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.pseudoElement Mozilla WebKitTransitionEvent.pseudoElement documentation> 
-getPseudoElement ::
-                 (MonadIO m, FromJSString result) =>
-                   WebKitTransitionEvent -> m result
-getPseudoElement self
-  = liftIO (fromJSString <$> (js_getPseudoElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs b/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
@@ -1,209 +1,101 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from websockets (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WebSocket
-       (js_newWebSocket, newWebSocket, js_newWebSocket', newWebSocket',
-        js_send, send, js_sendView, sendView, js_sendBlob, sendBlob,
-        js_sendString, sendString, js_close, close, pattern CONNECTING,
-        pattern OPEN, pattern CLOSING, pattern CLOSED, js_getUrl, getUrl,
-        js_getReadyState, getReadyState, js_getBufferedAmount,
-        getBufferedAmount, open, message, error, closeEvent,
-        js_getProtocol, getProtocol, getProtocolUnsafe,
-        getProtocolUnchecked, js_getExtensions, getExtensions,
-        getExtensionsUnsafe, getExtensionsUnchecked, js_setBinaryType,
-        setBinaryType, js_getBinaryType, getBinaryType, WebSocket(..),
-        gTypeWebSocket)
+       (js_newWebSocket, js_close, js_send, js_getUrl, js_getReadyState, js_getBufferedAmount, js_getExtensions, js_getProtocol, js_setBinaryType, js_getBinaryType, newWebSocket, close, send, getUrl, getReadyState, getBufferedAmount, getExtensions, getProtocol, setBinaryType, getBinaryType, pattern CONNECTING, pattern OPEN, pattern CLOSING, pattern CLOSED, open, error, closeEvent, message, WebSocket(..), gTypeWebSocket)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2) => { return new window[\"WebSocket\"]($1, $2); })"
-        js_newWebSocket :: JSString -> JSVal -> IO WebSocket
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
-newWebSocket ::
-             (MonadIO m, ToJSString url, ToJSString protocols) =>
-               url -> [protocols] -> m WebSocket
-newWebSocket url protocols
-  = liftIO
-      (toJSVal protocols >>=
-         \ protocols' -> js_newWebSocket (toJSString url) protocols')
- 
-foreign import javascript safe "(($1, $2) => { return new window[\"WebSocket\"]($1, $2); })"
-        js_newWebSocket' :: JSString -> JSString -> IO WebSocket
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
-newWebSocket' ::
-              (MonadIO m, ToJSString url, ToJSString protocol) =>
-                url -> protocol -> m WebSocket
-newWebSocket' url protocol
-  = liftIO (js_newWebSocket' (toJSString url) (toJSString protocol))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_send ::
-        WebSocket -> ArrayBuffer -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-send ::
-     (MonadIO m, IsArrayBuffer data') => WebSocket -> data' -> m ()
-send self data' = liftIO (js_send self (toArrayBuffer data'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendView ::
-        WebSocket -> ArrayBufferView -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-sendView ::
-         (MonadIO m, IsArrayBufferView data') => WebSocket -> data' -> m ()
-sendView self data'
-  = liftIO (js_sendView self (toArrayBufferView data'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendBlob ::
-        WebSocket -> Blob -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"WebSocket\"]($1, $2); })"
+        js_newWebSocket :: JSString -> JSVal -> IO WebSocket
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/WebSocket MDN WebSocket. documentation>
+newWebSocket :: (MonadDOM m, ToJSString url, IsStringOrSequenceString protocols) => url -> Maybe protocols -> m WebSocket
+newWebSocket url protocols = liftDOM (((P.maybe (P.return jsUndefined) toJSVal protocols) >>= \a2' -> js_newWebSocket (toJSString url) a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-sendBlob :: (MonadIO m, IsBlob data') => WebSocket -> data' -> m ()
-sendBlob self data' = liftIO (js_sendBlob self (toBlob data'))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendString ::
-        WebSocket -> JSString -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"close\"]($2, $3); })"
+        js_close :: WebSocket -> JSVal -> (Optional JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/close MDN WebSocket.close documentation>
+close :: (MonadDOM m, ToJSString reason) => WebSocket -> Maybe Word -> Maybe reason -> m ()
+close self code reason = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal code) >>= \a2' -> js_close (self) a2' (toOptionalJSString reason))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-sendString ::
-           (MonadIO m, ToJSString data') => WebSocket -> data' -> m ()
-sendString self data'
-  = liftIO (js_sendString self (toJSString data'))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"close\"]($2, $3); })" js_close ::
-        WebSocket -> Optional Word -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })"
+        js_send :: WebSocket -> BlobPart -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/send MDN WebSocket.send documentation>
+send :: (MonadDOM m, IsBlobPart data') => WebSocket -> data' -> m ()
+send self data' = liftDOM (void ((js_send (self) (Types.toBlobPart data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.close Mozilla WebSocket.close documentation> 
-close ::
-      (MonadIO m, ToJSString reason) =>
-        WebSocket -> Maybe Word -> Maybe reason -> m ()
-close self code reason
-  = liftIO
-      (js_close self (maybeToOptional code) (toOptionalJSString reason))
-pattern CONNECTING = 0
-pattern OPEN = 1
-pattern CLOSING = 2
-pattern CLOSED = 3
- 
-foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
-        WebSocket -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })"
+        js_getUrl :: WebSocket -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/url MDN WebSocket.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => WebSocket -> m result
+getUrl self = liftDOM ((fromJSString <$> (js_getUrl (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.url Mozilla WebSocket.url documentation> 
-getUrl :: (MonadIO m, FromJSString result) => WebSocket -> m result
-getUrl self = liftIO (fromJSString <$> (js_getUrl self))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
         js_getReadyState :: WebSocket -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/readyState MDN WebSocket.readyState documentation>
+getReadyState :: (MonadDOM m) => WebSocket -> m Word
+getReadyState self = liftDOM ((js_getReadyState (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.readyState Mozilla WebSocket.readyState documentation> 
-getReadyState :: (MonadIO m) => WebSocket -> m Word
-getReadyState self = liftIO (js_getReadyState self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"bufferedAmount\"]; })"
-        js_getBufferedAmount :: WebSocket -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.bufferedAmount Mozilla WebSocket.bufferedAmount documentation> 
-getBufferedAmount :: (MonadIO m) => WebSocket -> m Word
-getBufferedAmount self = liftIO (js_getBufferedAmount self)
+        js_getBufferedAmount :: WebSocket -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/bufferedAmount MDN WebSocket.bufferedAmount documentation>
+getBufferedAmount :: (MonadDOM m) => WebSocket -> m Word53
+getBufferedAmount self = liftDOM (((js_getBufferedAmount (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onopen Mozilla WebSocket.onopen documentation> 
-open :: EventName WebSocket Event
-open = unsafeEventNameAsync (toJSString "open")
+foreign import javascript unsafe "(($1) => { return $1[\"extensions\"]; })"
+        js_getExtensions :: WebSocket -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/extensions MDN WebSocket.extensions documentation>
+getExtensions :: (MonadDOM m, FromJSString result) => WebSocket -> m result
+getExtensions self = liftDOM ((fromJSString <$> (js_getExtensions (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onmessage Mozilla WebSocket.onmessage documentation> 
-message :: EventName WebSocket MessageEvent
-message = unsafeEventNameAsync (toJSString "message")
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: WebSocket -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/protocol MDN WebSocket.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => WebSocket -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onerror Mozilla WebSocket.onerror documentation> 
-error :: EventName WebSocket UIEvent
-error = unsafeEventNameAsync (toJSString "error")
+foreign import javascript safe "(($1, $2) => { $1[\"binaryType\"] = $2; })"
+        js_setBinaryType :: WebSocket -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType MDN WebSocket.binaryType documentation>
+setBinaryType :: (MonadDOM m) => WebSocket -> BinaryType -> m ()
+setBinaryType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBinaryType (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onclose Mozilla WebSocket.onclose documentation> 
-closeEvent :: EventName WebSocket CloseEvent
-closeEvent = unsafeEventNameAsync (toJSString "close")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
-        :: WebSocket -> IO (Nullable JSString)
+foreign import javascript unsafe "(($1) => { return $1[\"binaryType\"]; })"
+        js_getBinaryType :: WebSocket -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType MDN WebSocket.binaryType documentation>
+getBinaryType :: (MonadDOM m) => WebSocket -> m BinaryType
+getBinaryType self = liftDOM (((js_getBinaryType (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
-getProtocol ::
-            (MonadIO m, FromJSString result) => WebSocket -> m (Maybe result)
-getProtocol self
-  = liftIO (fromMaybeJSString <$> (js_getProtocol self))
+pattern CONNECTING = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
-getProtocolUnsafe ::
-                  (MonadIO m, HasCallStack, FromJSString result) =>
-                    WebSocket -> m result
-getProtocolUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getProtocol self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern OPEN = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
-getProtocolUnchecked ::
-                     (MonadIO m, FromJSString result) => WebSocket -> m result
-getProtocolUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getProtocol self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"extensions\"]; })"
-        js_getExtensions :: WebSocket -> IO (Nullable JSString)
+pattern CLOSING = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
-getExtensions ::
-              (MonadIO m, FromJSString result) => WebSocket -> m (Maybe result)
-getExtensions self
-  = liftIO (fromMaybeJSString <$> (js_getExtensions self))
+pattern CLOSED = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
-getExtensionsUnsafe ::
-                    (MonadIO m, HasCallStack, FromJSString result) =>
-                      WebSocket -> m result
-getExtensionsUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getExtensions self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://websockets.spec.whatwg.org/#dom-websocket-onopen open event>
+open :: EventName WebSocket Event
+open = unsafeEventNameAsync (toJSString "open")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
-getExtensionsUnchecked ::
-                       (MonadIO m, FromJSString result) => WebSocket -> m result
-getExtensionsUnchecked self
-  = liftIO (fromJust . fromMaybeJSString <$> (js_getExtensions self))
- 
-foreign import javascript safe "(($1, $2) => { $1[\"binaryType\"] = $2; })"
-        js_setBinaryType :: WebSocket -> JSString -> IO ()
+-- | <https://websockets.spec.whatwg.org/#dom-websocket-onerror error event>
+error :: EventName WebSocket Event
+error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
-setBinaryType ::
-              (MonadIO m, ToJSString val) => WebSocket -> val -> m ()
-setBinaryType self val
-  = liftIO (js_setBinaryType self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"binaryType\"]; })"
-        js_getBinaryType :: WebSocket -> IO JSString
+-- | <https://websockets.spec.whatwg.org/#dom-websocket-onclose close event>
+closeEvent :: EventName WebSocket CloseEvent
+closeEvent = unsafeEventNameAsync (toJSString "close")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
-getBinaryType ::
-              (MonadIO m, FromJSString result) => WebSocket -> m result
-getBinaryType self
-  = liftIO (fromJSString <$> (js_getBinaryType self))
+-- | <https://websockets.spec.whatwg.org/#dom-websocket-onmessage message event>
+message :: EventName WebSocket MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransport.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransport.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransport
+       (js_newWebTransport, js_close, js_createBidirectionalStream, js_createSendGroup, js_createUnidirectionalStream, js_getStats, js_getReady, js_getReliability, js_getCongestionControl, js_setAnticipatedConcurrentIncomingUnidirectionalStreams, js_getAnticipatedConcurrentIncomingUnidirectionalStreams, js_setAnticipatedConcurrentIncomingBidirectionalStreams, js_getAnticipatedConcurrentIncomingBidirectionalStreams, js_getResponseHeaders, js_getProtocol, js_getClosed, js_getDraining, js_getDatagrams, js_getIncomingBidirectionalStreams, js_getIncomingUnidirectionalStreams, js_getSupportsReliableOnlyStatic, newWebTransport, close, createBidirectionalStream, createBidirectionalStream_, createSendGroup, createSendGroup_, createUnidirectionalStream, createUnidirectionalStream_, getStats, getStats_, getReady, getReliability, getCongestionControl, setAnticipatedConcurrentIncomingUnidirectionalStreams, getAnticipatedConcurrentIncomingUnidirectionalStreams, getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe, getAnticipatedConcurrentIncomingUnidirectionalStreamsUnchecked, setAnticipatedConcurrentIncomingBidirectionalStreams, getAnticipatedConcurrentIncomingBidirectionalStreams, getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe, getAnticipatedConcurrentIncomingBidirectionalStreamsUnchecked, getResponseHeaders, getResponseHeadersUnsafe, getResponseHeadersUnchecked, getProtocol, getClosed, getDraining, getDatagrams, getIncomingBidirectionalStreams, getIncomingUnidirectionalStreams, getSupportsReliableOnlyStatic, WebTransport(..), gTypeWebTransport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"WebTransport\"]($1, $2); })"
+        js_newWebTransport :: JSString -> JSVal -> IO WebTransport
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/WebTransport MDN WebTransport. documentation>
+newWebTransport :: (MonadDOM m, ToJSString url) => url -> Maybe WebTransportOptions -> m WebTransport
+newWebTransport url options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newWebTransport (toJSString url) a2'))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"close\"]($2); })"
+        js_close :: WebTransport -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/close MDN WebTransport.close documentation>
+close :: (MonadDOM m) => WebTransport -> Maybe WebTransportCloseInfo -> m ()
+close self closeInfo = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal closeInfo) >>= \a2' -> js_close (self) a2')))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"createBidirectionalStream\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createBidirectionalStream :: WebTransport -> JSVal -> IO (JSVal, WebTransportBidirectionalStream)
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createBidirectionalStream MDN WebTransport.createBidirectionalStream documentation>
+createBidirectionalStream :: (MonadDOM m) => WebTransport -> Maybe WebTransportSendStreamOptions -> m WebTransportBidirectionalStream
+createBidirectionalStream self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createBidirectionalStream (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createBidirectionalStream MDN WebTransport.createBidirectionalStream documentation>
+createBidirectionalStream_ :: (MonadDOM m) => WebTransport -> Maybe WebTransportSendStreamOptions -> m ()
+createBidirectionalStream_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createBidirectionalStream (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"createSendGroup\"](); })"
+        js_createSendGroup :: WebTransport -> IO WebTransportSendGroup
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createSendGroup MDN WebTransport.createSendGroup documentation>
+createSendGroup :: (MonadDOM m) => WebTransport -> m WebTransportSendGroup
+createSendGroup self = liftDOM ((js_createSendGroup (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createSendGroup MDN WebTransport.createSendGroup documentation>
+createSendGroup_ :: (MonadDOM m) => WebTransport -> m ()
+createSendGroup_ self = liftDOM (void ((js_createSendGroup (self))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"createUnidirectionalStream\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createUnidirectionalStream :: WebTransport -> JSVal -> IO (JSVal, WebTransportSendStream)
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createUnidirectionalStream MDN WebTransport.createUnidirectionalStream documentation>
+createUnidirectionalStream :: (MonadDOM m) => WebTransport -> Maybe WebTransportSendStreamOptions -> m WebTransportSendStream
+createUnidirectionalStream self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createUnidirectionalStream (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createUnidirectionalStream MDN WebTransport.createUnidirectionalStream documentation>
+createUnidirectionalStream_ :: (MonadDOM m) => WebTransport -> Maybe WebTransportSendStreamOptions -> m ()
+createUnidirectionalStream_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createUnidirectionalStream (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getStats\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats :: WebTransport -> IO (JSVal, WebTransportConnectionStats)
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/getStats MDN WebTransport.getStats documentation>
+getStats :: (MonadDOM m) => WebTransport -> m WebTransportConnectionStats
+getStats self = liftDOM (((js_getStats (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/getStats MDN WebTransport.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransport -> m ()
+getStats_ self = liftDOM (void (((js_getStats (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: WebTransport -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/ready MDN WebTransport.ready documentation>
+getReady :: (MonadDOM m) => WebTransport -> m ()
+getReady self = liftDOM (void (((js_getReady (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reliability\"]; })"
+        js_getReliability :: WebTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/reliability MDN WebTransport.reliability documentation>
+getReliability :: (MonadDOM m) => WebTransport -> m WebTransportReliabilityMode
+getReliability self = liftDOM (((js_getReliability (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"congestionControl\"]; })"
+        js_getCongestionControl :: WebTransport -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/congestionControl MDN WebTransport.congestionControl documentation>
+getCongestionControl :: (MonadDOM m) => WebTransport -> m WebTransportCongestionControl
+getCongestionControl self = liftDOM (((js_getCongestionControl (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"anticipatedConcurrentIncomingUnidirectionalStreams\"] = $2; })"
+        js_setAnticipatedConcurrentIncomingUnidirectionalStreams :: WebTransport -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingunidirectionalstreams WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+setAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransport -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingUnidirectionalStreams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAnticipatedConcurrentIncomingUnidirectionalStreams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"anticipatedConcurrentIncomingUnidirectionalStreams\"]; })"
+        js_getAnticipatedConcurrentIncomingUnidirectionalStreams :: WebTransport -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingunidirectionalstreams WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransport -> m (Maybe Word)
+getAnticipatedConcurrentIncomingUnidirectionalStreams self = liftDOM (((js_getAnticipatedConcurrentIncomingUnidirectionalStreams (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingunidirectionalstreams WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransport -> m Word
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe self = liftDOM ((((js_getAnticipatedConcurrentIncomingUnidirectionalStreams (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingunidirectionalstreams WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnchecked :: (MonadDOM m) => WebTransport -> m Word
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnticipatedConcurrentIncomingUnidirectionalStreams (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"anticipatedConcurrentIncomingBidirectionalStreams\"] = $2; })"
+        js_setAnticipatedConcurrentIncomingBidirectionalStreams :: WebTransport -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingbidirectionalstreams WebTransport.anticipatedConcurrentIncomingBidirectionalStreams specification>
+setAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransport -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingBidirectionalStreams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAnticipatedConcurrentIncomingBidirectionalStreams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"anticipatedConcurrentIncomingBidirectionalStreams\"]; })"
+        js_getAnticipatedConcurrentIncomingBidirectionalStreams :: WebTransport -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingbidirectionalstreams WebTransport.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransport -> m (Maybe Word)
+getAnticipatedConcurrentIncomingBidirectionalStreams self = liftDOM (((js_getAnticipatedConcurrentIncomingBidirectionalStreams (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingbidirectionalstreams WebTransport.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransport -> m Word
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe self = liftDOM ((((js_getAnticipatedConcurrentIncomingBidirectionalStreams (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingbidirectionalstreams WebTransport.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnchecked :: (MonadDOM m) => WebTransport -> m Word
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnticipatedConcurrentIncomingBidirectionalStreams (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"responseHeaders\"]; })"
+        js_getResponseHeaders :: WebTransport -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-responseheaders WebTransport.responseHeaders specification>
+getResponseHeaders :: (MonadDOM m) => WebTransport -> m (Maybe Headers)
+getResponseHeaders self = liftDOM (((js_getResponseHeaders (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-responseheaders WebTransport.responseHeaders specification>
+getResponseHeadersUnsafe :: (MonadDOM m, HasCallStack) => WebTransport -> m Headers
+getResponseHeadersUnsafe self = liftDOM ((((js_getResponseHeaders (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-responseheaders WebTransport.responseHeaders specification>
+getResponseHeadersUnchecked :: (MonadDOM m) => WebTransport -> m Headers
+getResponseHeadersUnchecked self = liftDOM ((pFromJSVal <$> (js_getResponseHeaders (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: WebTransport -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/protocol MDN WebTransport.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => WebTransport -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: WebTransport -> IO (JSVal, WebTransportCloseInfo)
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/closed MDN WebTransport.closed documentation>
+getClosed :: (MonadDOM m) => WebTransport -> m WebTransportCloseInfo
+getClosed self = liftDOM (((js_getClosed (self)) >>= checkPromiseResult))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"draining\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getDraining :: WebTransport -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/draining MDN WebTransport.draining documentation>
+getDraining :: (MonadDOM m) => WebTransport -> m ()
+getDraining self = liftDOM (void (((js_getDraining (self)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"datagrams\"]; })"
+        js_getDatagrams :: WebTransport -> IO WebTransportDatagramDuplexStream
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/datagrams MDN WebTransport.datagrams documentation>
+getDatagrams :: (MonadDOM m) => WebTransport -> m WebTransportDatagramDuplexStream
+getDatagrams self = liftDOM ((js_getDatagrams (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"incomingBidirectionalStreams\"]; })"
+        js_getIncomingBidirectionalStreams :: WebTransport -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/incomingBidirectionalStreams MDN WebTransport.incomingBidirectionalStreams documentation>
+getIncomingBidirectionalStreams :: (MonadDOM m) => WebTransport -> m ReadableStream
+getIncomingBidirectionalStreams self = liftDOM ((js_getIncomingBidirectionalStreams (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"incomingUnidirectionalStreams\"]; })"
+        js_getIncomingUnidirectionalStreams :: WebTransport -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/incomingUnidirectionalStreams MDN WebTransport.incomingUnidirectionalStreams documentation>
+getIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransport -> m ReadableStream
+getIncomingUnidirectionalStreams self = liftDOM ((js_getIncomingUnidirectionalStreams (self)))
+
+foreign import javascript unsafe "(() => { return globalThis[\"WebTransport\"][\"supportsReliableOnly\"]; })"
+        js_getSupportsReliableOnlyStatic :: IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/supportsReliableOnly_static MDN WebTransport.supportsReliableOnly documentation>
+getSupportsReliableOnlyStatic :: (MonadDOM m) => m Bool
+getSupportsReliableOnlyStatic = liftDOM ((js_getSupportsReliableOnlyStatic))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportBidirectionalStream.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportBidirectionalStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportBidirectionalStream.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportBidirectionalStream
+       (js_getReadable, js_getWritable, getReadable, getWritable, WebTransportBidirectionalStream(..), gTypeWebTransportBidirectionalStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: WebTransportBidirectionalStream -> IO WebTransportReceiveStream
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportBidirectionalStream/readable MDN WebTransportBidirectionalStream.readable documentation>
+getReadable :: (MonadDOM m) => WebTransportBidirectionalStream -> m WebTransportReceiveStream
+getReadable self = liftDOM ((js_getReadable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"writable\"]; })"
+        js_getWritable :: WebTransportBidirectionalStream -> IO WebTransportSendStream
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportBidirectionalStream/writable MDN WebTransportBidirectionalStream.writable documentation>
+getWritable :: (MonadDOM m) => WebTransportBidirectionalStream -> m WebTransportSendStream
+getWritable self = liftDOM ((js_getWritable (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportCloseInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportCloseInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportCloseInfo.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportCloseInfo
+       (js_newWebTransportCloseInfo, js_setCloseCode, js_getCloseCode, js_setReason, js_getReason, newWebTransportCloseInfo, setCloseCode, getCloseCode, getCloseCodeUnsafe, getCloseCodeUnchecked, setReason, getReason, getReasonUnsafe, getReasonUnchecked, WebTransportCloseInfo(..), gTypeWebTransportCloseInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportCloseInfo :: IO WebTransportCloseInfo
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportcloseinfo WebTransportCloseInfo specification>
+newWebTransportCloseInfo :: (MonadDOM m) => m WebTransportCloseInfo
+newWebTransportCloseInfo = liftDOM ((js_newWebTransportCloseInfo))
+
+foreign import javascript safe "(($1, $2) => { $1[\"closeCode\"] = $2; })"
+        js_setCloseCode :: WebTransportCloseInfo -> Word -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-closecode WebTransportCloseInfo.closeCode specification>
+setCloseCode :: (MonadDOM m) => WebTransportCloseInfo -> Word -> m ()
+setCloseCode self val = liftDOM (void ((js_setCloseCode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"closeCode\"]; })"
+        js_getCloseCode :: WebTransportCloseInfo -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-closecode WebTransportCloseInfo.closeCode specification>
+getCloseCode :: (MonadDOM m) => WebTransportCloseInfo -> m (Maybe Word)
+getCloseCode self = liftDOM (((js_getCloseCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-closecode WebTransportCloseInfo.closeCode specification>
+getCloseCodeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportCloseInfo -> m Word
+getCloseCodeUnsafe self = liftDOM ((((js_getCloseCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-closecode WebTransportCloseInfo.closeCode specification>
+getCloseCodeUnchecked :: (MonadDOM m) => WebTransportCloseInfo -> m Word
+getCloseCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getCloseCode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"reason\"] = $2; })"
+        js_setReason :: WebTransportCloseInfo -> JSString -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-reason WebTransportCloseInfo.reason specification>
+setReason :: (MonadDOM m, ToJSString val) => WebTransportCloseInfo -> val -> m ()
+setReason self val = liftDOM (void ((js_setReason (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })"
+        js_getReason :: WebTransportCloseInfo -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-reason WebTransportCloseInfo.reason specification>
+getReason :: (MonadDOM m, FromJSString result) => WebTransportCloseInfo -> m (Maybe result)
+getReason self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getReason (self))))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-reason WebTransportCloseInfo.reason specification>
+getReasonUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => WebTransportCloseInfo -> m result
+getReasonUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getReason (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-reason WebTransportCloseInfo.reason specification>
+getReasonUnchecked :: (MonadDOM m, FromJSString result) => WebTransportCloseInfo -> m result
+getReasonUnchecked self = liftDOM ((pFromJSVal <$> (js_getReason (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportConnectionStats.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportConnectionStats.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportConnectionStats.hs
@@ -0,0 +1,295 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportConnectionStats
+       (js_newWebTransportConnectionStats, js_setBytesSent, js_getBytesSent, js_setBytesSentOverhead, js_getBytesSentOverhead, js_setBytesAcknowledged, js_getBytesAcknowledged, js_setPacketsSent, js_getPacketsSent, js_setBytesLost, js_getBytesLost, js_setPacketsLost, js_getPacketsLost, js_setBytesReceived, js_getBytesReceived, js_setPacketsReceived, js_getPacketsReceived, js_setSmoothedRtt, js_getSmoothedRtt, js_setRttVariation, js_getRttVariation, js_setMinRtt, js_getMinRtt, js_setDatagrams, js_getDatagrams, js_setEstimatedSendRate, js_getEstimatedSendRate, js_setAtSendCapacity, js_getAtSendCapacity, newWebTransportConnectionStats, setBytesSent, getBytesSent, getBytesSentUnsafe, getBytesSentUnchecked, setBytesSentOverhead, getBytesSentOverhead, getBytesSentOverheadUnsafe, getBytesSentOverheadUnchecked, setBytesAcknowledged, getBytesAcknowledged, getBytesAcknowledgedUnsafe, getBytesAcknowledgedUnchecked, setPacketsSent, getPacketsSent, getPacketsSentUnsafe, getPacketsSentUnchecked, setBytesLost, getBytesLost, getBytesLostUnsafe, getBytesLostUnchecked, setPacketsLost, getPacketsLost, getPacketsLostUnsafe, getPacketsLostUnchecked, setBytesReceived, getBytesReceived, getBytesReceivedUnsafe, getBytesReceivedUnchecked, setPacketsReceived, getPacketsReceived, getPacketsReceivedUnsafe, getPacketsReceivedUnchecked, setSmoothedRtt, getSmoothedRtt, getSmoothedRttUnsafe, getSmoothedRttUnchecked, setRttVariation, getRttVariation, getRttVariationUnsafe, getRttVariationUnchecked, setMinRtt, getMinRtt, getMinRttUnsafe, getMinRttUnchecked, setDatagrams, getDatagrams, setEstimatedSendRate, getEstimatedSendRate, getEstimatedSendRateUnsafe, getEstimatedSendRateUnchecked, setAtSendCapacity, getAtSendCapacity, getAtSendCapacityUnsafe, getAtSendCapacityUnchecked, WebTransportConnectionStats(..), gTypeWebTransportConnectionStats)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"datagrams\": $1}); })"
+        js_newWebTransportConnectionStats :: WebTransportDatagramStats -> IO WebTransportConnectionStats
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportconnectionstats WebTransportConnectionStats specification>
+newWebTransportConnectionStats :: (MonadDOM m) => WebTransportDatagramStats -> m WebTransportConnectionStats
+newWebTransportConnectionStats datagrams = liftDOM ((js_newWebTransportConnectionStats (datagrams)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesSent\"] = $2; })"
+        js_setBytesSent :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessent WebTransportConnectionStats.bytesSent specification>
+setBytesSent :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesSent self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesSent (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesSent\"]; })"
+        js_getBytesSent :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessent WebTransportConnectionStats.bytesSent specification>
+getBytesSent :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesSent self = liftDOM (((js_getBytesSent (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessent WebTransportConnectionStats.bytesSent specification>
+getBytesSentUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesSentUnsafe self = liftDOM ((((js_getBytesSent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessent WebTransportConnectionStats.bytesSent specification>
+getBytesSentUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getBytesSentUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesSent (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesSentOverhead\"] = $2; })"
+        js_setBytesSentOverhead :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessentoverhead WebTransportConnectionStats.bytesSentOverhead specification>
+setBytesSentOverhead :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesSentOverhead self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesSentOverhead (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesSentOverhead\"]; })"
+        js_getBytesSentOverhead :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessentoverhead WebTransportConnectionStats.bytesSentOverhead specification>
+getBytesSentOverhead :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesSentOverhead self = liftDOM (((js_getBytesSentOverhead (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessentoverhead WebTransportConnectionStats.bytesSentOverhead specification>
+getBytesSentOverheadUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesSentOverheadUnsafe self = liftDOM ((((js_getBytesSentOverhead (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessentoverhead WebTransportConnectionStats.bytesSentOverhead specification>
+getBytesSentOverheadUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getBytesSentOverheadUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesSentOverhead (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesAcknowledged\"] = $2; })"
+        js_setBytesAcknowledged :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesacknowledged WebTransportConnectionStats.bytesAcknowledged specification>
+setBytesAcknowledged :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesAcknowledged self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesAcknowledged (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesAcknowledged\"]; })"
+        js_getBytesAcknowledged :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesacknowledged WebTransportConnectionStats.bytesAcknowledged specification>
+getBytesAcknowledged :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesAcknowledged self = liftDOM (((js_getBytesAcknowledged (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesacknowledged WebTransportConnectionStats.bytesAcknowledged specification>
+getBytesAcknowledgedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesAcknowledgedUnsafe self = liftDOM ((((js_getBytesAcknowledged (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesacknowledged WebTransportConnectionStats.bytesAcknowledged specification>
+getBytesAcknowledgedUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getBytesAcknowledgedUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesAcknowledged (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"packetsSent\"] = $2; })"
+        js_setPacketsSent :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetssent WebTransportConnectionStats.packetsSent specification>
+setPacketsSent :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setPacketsSent self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPacketsSent (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"packetsSent\"]; })"
+        js_getPacketsSent :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetssent WebTransportConnectionStats.packetsSent specification>
+getPacketsSent :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getPacketsSent self = liftDOM (((js_getPacketsSent (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetssent WebTransportConnectionStats.packetsSent specification>
+getPacketsSentUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getPacketsSentUnsafe self = liftDOM ((((js_getPacketsSent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetssent WebTransportConnectionStats.packetsSent specification>
+getPacketsSentUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getPacketsSentUnchecked self = liftDOM ((pFromJSVal <$> (js_getPacketsSent (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesLost\"] = $2; })"
+        js_setBytesLost :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-byteslost WebTransportConnectionStats.bytesLost specification>
+setBytesLost :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesLost self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesLost (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesLost\"]; })"
+        js_getBytesLost :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-byteslost WebTransportConnectionStats.bytesLost specification>
+getBytesLost :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesLost self = liftDOM (((js_getBytesLost (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-byteslost WebTransportConnectionStats.bytesLost specification>
+getBytesLostUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesLostUnsafe self = liftDOM ((((js_getBytesLost (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-byteslost WebTransportConnectionStats.bytesLost specification>
+getBytesLostUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getBytesLostUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesLost (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"packetsLost\"] = $2; })"
+        js_setPacketsLost :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetslost WebTransportConnectionStats.packetsLost specification>
+setPacketsLost :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setPacketsLost self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPacketsLost (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"packetsLost\"]; })"
+        js_getPacketsLost :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetslost WebTransportConnectionStats.packetsLost specification>
+getPacketsLost :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getPacketsLost self = liftDOM (((js_getPacketsLost (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetslost WebTransportConnectionStats.packetsLost specification>
+getPacketsLostUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getPacketsLostUnsafe self = liftDOM ((((js_getPacketsLost (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetslost WebTransportConnectionStats.packetsLost specification>
+getPacketsLostUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getPacketsLostUnchecked self = liftDOM ((pFromJSVal <$> (js_getPacketsLost (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesReceived\"] = $2; })"
+        js_setBytesReceived :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesreceived WebTransportConnectionStats.bytesReceived specification>
+setBytesReceived :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesReceived self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesReceived (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesReceived\"]; })"
+        js_getBytesReceived :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesreceived WebTransportConnectionStats.bytesReceived specification>
+getBytesReceived :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesReceived self = liftDOM (((js_getBytesReceived (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesreceived WebTransportConnectionStats.bytesReceived specification>
+getBytesReceivedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesReceivedUnsafe self = liftDOM ((((js_getBytesReceived (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesreceived WebTransportConnectionStats.bytesReceived specification>
+getBytesReceivedUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getBytesReceivedUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesReceived (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"packetsReceived\"] = $2; })"
+        js_setPacketsReceived :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetsreceived WebTransportConnectionStats.packetsReceived specification>
+setPacketsReceived :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setPacketsReceived self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPacketsReceived (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"packetsReceived\"]; })"
+        js_getPacketsReceived :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetsreceived WebTransportConnectionStats.packetsReceived specification>
+getPacketsReceived :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getPacketsReceived self = liftDOM (((js_getPacketsReceived (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetsreceived WebTransportConnectionStats.packetsReceived specification>
+getPacketsReceivedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getPacketsReceivedUnsafe self = liftDOM ((((js_getPacketsReceived (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetsreceived WebTransportConnectionStats.packetsReceived specification>
+getPacketsReceivedUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getPacketsReceivedUnchecked self = liftDOM ((pFromJSVal <$> (js_getPacketsReceived (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"smoothedRtt\"] = $2; })"
+        js_setSmoothedRtt :: WebTransportConnectionStats -> Double -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-smoothedrtt WebTransportConnectionStats.smoothedRtt specification>
+setSmoothedRtt :: (MonadDOM m) => WebTransportConnectionStats -> Double -> m ()
+setSmoothedRtt self val = liftDOM (void ((js_setSmoothedRtt (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"smoothedRtt\"]; })"
+        js_getSmoothedRtt :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-smoothedrtt WebTransportConnectionStats.smoothedRtt specification>
+getSmoothedRtt :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Double)
+getSmoothedRtt self = liftDOM (((js_getSmoothedRtt (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-smoothedrtt WebTransportConnectionStats.smoothedRtt specification>
+getSmoothedRttUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Double
+getSmoothedRttUnsafe self = liftDOM ((((js_getSmoothedRtt (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-smoothedrtt WebTransportConnectionStats.smoothedRtt specification>
+getSmoothedRttUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Double
+getSmoothedRttUnchecked self = liftDOM ((pFromJSVal <$> (js_getSmoothedRtt (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"rttVariation\"] = $2; })"
+        js_setRttVariation :: WebTransportConnectionStats -> Double -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-rttvariation WebTransportConnectionStats.rttVariation specification>
+setRttVariation :: (MonadDOM m) => WebTransportConnectionStats -> Double -> m ()
+setRttVariation self val = liftDOM (void ((js_setRttVariation (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"rttVariation\"]; })"
+        js_getRttVariation :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-rttvariation WebTransportConnectionStats.rttVariation specification>
+getRttVariation :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Double)
+getRttVariation self = liftDOM (((js_getRttVariation (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-rttvariation WebTransportConnectionStats.rttVariation specification>
+getRttVariationUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Double
+getRttVariationUnsafe self = liftDOM ((((js_getRttVariation (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-rttvariation WebTransportConnectionStats.rttVariation specification>
+getRttVariationUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Double
+getRttVariationUnchecked self = liftDOM ((pFromJSVal <$> (js_getRttVariation (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"minRtt\"] = $2; })"
+        js_setMinRtt :: WebTransportConnectionStats -> Double -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-minrtt WebTransportConnectionStats.minRtt specification>
+setMinRtt :: (MonadDOM m) => WebTransportConnectionStats -> Double -> m ()
+setMinRtt self val = liftDOM (void ((js_setMinRtt (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"minRtt\"]; })"
+        js_getMinRtt :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-minrtt WebTransportConnectionStats.minRtt specification>
+getMinRtt :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Double)
+getMinRtt self = liftDOM (((js_getMinRtt (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-minrtt WebTransportConnectionStats.minRtt specification>
+getMinRttUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Double
+getMinRttUnsafe self = liftDOM ((((js_getMinRtt (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-minrtt WebTransportConnectionStats.minRtt specification>
+getMinRttUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Double
+getMinRttUnchecked self = liftDOM ((pFromJSVal <$> (js_getMinRtt (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"datagrams\"] = $2; })"
+        js_setDatagrams :: WebTransportConnectionStats -> WebTransportDatagramStats -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-datagrams WebTransportConnectionStats.datagrams specification>
+setDatagrams :: (MonadDOM m) => WebTransportConnectionStats -> WebTransportDatagramStats -> m ()
+setDatagrams self val = liftDOM (void ((js_setDatagrams (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"datagrams\"]; })"
+        js_getDatagrams :: WebTransportConnectionStats -> IO WebTransportDatagramStats
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-datagrams WebTransportConnectionStats.datagrams specification>
+getDatagrams :: (MonadDOM m) => WebTransportConnectionStats -> m WebTransportDatagramStats
+getDatagrams self = liftDOM ((js_getDatagrams (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"estimatedSendRate\"] = $2; })"
+        js_setEstimatedSendRate :: WebTransportConnectionStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-estimatedsendrate WebTransportConnectionStats.estimatedSendRate specification>
+setEstimatedSendRate :: (MonadDOM m) => WebTransportConnectionStats -> Maybe Word53 -> m ()
+setEstimatedSendRate self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setEstimatedSendRate (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"estimatedSendRate\"]; })"
+        js_getEstimatedSendRate :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-estimatedsendrate WebTransportConnectionStats.estimatedSendRate specification>
+getEstimatedSendRate :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getEstimatedSendRate self = liftDOM (((js_getEstimatedSendRate (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-estimatedsendrate WebTransportConnectionStats.estimatedSendRate specification>
+getEstimatedSendRateUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getEstimatedSendRateUnsafe self = liftDOM ((((js_getEstimatedSendRate (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-estimatedsendrate WebTransportConnectionStats.estimatedSendRate specification>
+getEstimatedSendRateUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Word53
+getEstimatedSendRateUnchecked self = liftDOM ((pFromJSVal <$> (js_getEstimatedSendRate (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"atSendCapacity\"] = $2; })"
+        js_setAtSendCapacity :: WebTransportConnectionStats -> Bool -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-atsendcapacity WebTransportConnectionStats.atSendCapacity specification>
+setAtSendCapacity :: (MonadDOM m) => WebTransportConnectionStats -> Bool -> m ()
+setAtSendCapacity self val = liftDOM (void ((js_setAtSendCapacity (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"atSendCapacity\"]; })"
+        js_getAtSendCapacity :: WebTransportConnectionStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-atsendcapacity WebTransportConnectionStats.atSendCapacity specification>
+getAtSendCapacity :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Bool)
+getAtSendCapacity self = liftDOM (((js_getAtSendCapacity (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-atsendcapacity WebTransportConnectionStats.atSendCapacity specification>
+getAtSendCapacityUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Bool
+getAtSendCapacityUnsafe self = liftDOM ((((js_getAtSendCapacity (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-atsendcapacity WebTransportConnectionStats.atSendCapacity specification>
+getAtSendCapacityUnchecked :: (MonadDOM m) => WebTransportConnectionStats -> m Bool
+getAtSendCapacityUnchecked self = liftDOM ((pFromJSVal <$> (js_getAtSendCapacity (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramDuplexStream.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramDuplexStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramDuplexStream.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportDatagramDuplexStream
+       (js_createWritable, js_getReadable, js_getMaxDatagramSize, js_setIncomingMaxAge, js_getIncomingMaxAge, js_setOutgoingMaxAge, js_getOutgoingMaxAge, js_setIncomingMaxBufferedDatagrams, js_getIncomingMaxBufferedDatagrams, js_setOutgoingMaxBufferedDatagrams, js_getOutgoingMaxBufferedDatagrams, createWritable, createWritable_, getReadable, getMaxDatagramSize, setIncomingMaxAge, getIncomingMaxAge, getIncomingMaxAgeUnsafe, getIncomingMaxAgeUnchecked, setOutgoingMaxAge, getOutgoingMaxAge, getOutgoingMaxAgeUnsafe, getOutgoingMaxAgeUnchecked, setIncomingMaxBufferedDatagrams, getIncomingMaxBufferedDatagrams, setOutgoingMaxBufferedDatagrams, getOutgoingMaxBufferedDatagrams, WebTransportDatagramDuplexStream(..), gTypeWebTransportDatagramDuplexStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createWritable\"]($2); })"
+        js_createWritable :: WebTransportDatagramDuplexStream -> JSVal -> IO WebTransportDatagramsWritable
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/createWritable MDN WebTransportDatagramDuplexStream.createWritable documentation>
+createWritable :: (MonadDOM m, IsWebTransportSendOptions options) => WebTransportDatagramDuplexStream -> Maybe options -> m WebTransportDatagramsWritable
+createWritable self options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createWritable (self) a2'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/createWritable MDN WebTransportDatagramDuplexStream.createWritable documentation>
+createWritable_ :: (MonadDOM m, IsWebTransportSendOptions options) => WebTransportDatagramDuplexStream -> Maybe options -> m ()
+createWritable_ self options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_createWritable (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"readable\"]; })"
+        js_getReadable :: WebTransportDatagramDuplexStream -> IO ReadableStream
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/readable MDN WebTransportDatagramDuplexStream.readable documentation>
+getReadable :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m ReadableStream
+getReadable self = liftDOM ((js_getReadable (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"maxDatagramSize\"]; })"
+        js_getMaxDatagramSize :: WebTransportDatagramDuplexStream -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/maxDatagramSize MDN WebTransportDatagramDuplexStream.maxDatagramSize documentation>
+getMaxDatagramSize :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Word
+getMaxDatagramSize self = liftDOM ((js_getMaxDatagramSize (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"incomingMaxAge\"] = $2; })"
+        js_setIncomingMaxAge :: WebTransportDatagramDuplexStream -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/incomingMaxAge MDN WebTransportDatagramDuplexStream.incomingMaxAge documentation>
+setIncomingMaxAge :: (MonadDOM m) => WebTransportDatagramDuplexStream -> Maybe Double -> m ()
+setIncomingMaxAge self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setIncomingMaxAge (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"incomingMaxAge\"]; })"
+        js_getIncomingMaxAge :: WebTransportDatagramDuplexStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/incomingMaxAge MDN WebTransportDatagramDuplexStream.incomingMaxAge documentation>
+getIncomingMaxAge :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m (Maybe Double)
+getIncomingMaxAge self = liftDOM (((js_getIncomingMaxAge (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/incomingMaxAge MDN WebTransportDatagramDuplexStream.incomingMaxAge documentation>
+getIncomingMaxAgeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramDuplexStream -> m Double
+getIncomingMaxAgeUnsafe self = liftDOM ((((js_getIncomingMaxAge (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/incomingMaxAge MDN WebTransportDatagramDuplexStream.incomingMaxAge documentation>
+getIncomingMaxAgeUnchecked :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Double
+getIncomingMaxAgeUnchecked self = liftDOM ((pFromJSVal <$> (js_getIncomingMaxAge (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"outgoingMaxAge\"] = $2; })"
+        js_setOutgoingMaxAge :: WebTransportDatagramDuplexStream -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge MDN WebTransportDatagramDuplexStream.outgoingMaxAge documentation>
+setOutgoingMaxAge :: (MonadDOM m) => WebTransportDatagramDuplexStream -> Maybe Double -> m ()
+setOutgoingMaxAge self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setOutgoingMaxAge (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outgoingMaxAge\"]; })"
+        js_getOutgoingMaxAge :: WebTransportDatagramDuplexStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge MDN WebTransportDatagramDuplexStream.outgoingMaxAge documentation>
+getOutgoingMaxAge :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m (Maybe Double)
+getOutgoingMaxAge self = liftDOM (((js_getOutgoingMaxAge (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge MDN WebTransportDatagramDuplexStream.outgoingMaxAge documentation>
+getOutgoingMaxAgeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramDuplexStream -> m Double
+getOutgoingMaxAgeUnsafe self = liftDOM ((((js_getOutgoingMaxAge (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge MDN WebTransportDatagramDuplexStream.outgoingMaxAge documentation>
+getOutgoingMaxAgeUnchecked :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Double
+getOutgoingMaxAgeUnchecked self = liftDOM ((pFromJSVal <$> (js_getOutgoingMaxAge (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"incomingMaxBufferedDatagrams\"] = $2; })"
+        js_setIncomingMaxBufferedDatagrams :: WebTransportDatagramDuplexStream -> Word -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-incomingmaxbuffereddatagrams WebTransportDatagramDuplexStream.incomingMaxBufferedDatagrams specification>
+setIncomingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> Word -> m ()
+setIncomingMaxBufferedDatagrams self val = liftDOM (void ((js_setIncomingMaxBufferedDatagrams (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"incomingMaxBufferedDatagrams\"]; })"
+        js_getIncomingMaxBufferedDatagrams :: WebTransportDatagramDuplexStream -> IO Word
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-incomingmaxbuffereddatagrams WebTransportDatagramDuplexStream.incomingMaxBufferedDatagrams specification>
+getIncomingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Word
+getIncomingMaxBufferedDatagrams self = liftDOM ((js_getIncomingMaxBufferedDatagrams (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"outgoingMaxBufferedDatagrams\"] = $2; })"
+        js_setOutgoingMaxBufferedDatagrams :: WebTransportDatagramDuplexStream -> Word -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-outgoingmaxbuffereddatagrams WebTransportDatagramDuplexStream.outgoingMaxBufferedDatagrams specification>
+setOutgoingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> Word -> m ()
+setOutgoingMaxBufferedDatagrams self val = liftDOM (void ((js_setOutgoingMaxBufferedDatagrams (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outgoingMaxBufferedDatagrams\"]; })"
+        js_getOutgoingMaxBufferedDatagrams :: WebTransportDatagramDuplexStream -> IO Word
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-outgoingmaxbuffereddatagrams WebTransportDatagramDuplexStream.outgoingMaxBufferedDatagrams specification>
+getOutgoingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Word
+getOutgoingMaxBufferedDatagrams self = liftDOM ((js_getOutgoingMaxBufferedDatagrams (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramStats.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramStats.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramStats.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportDatagramStats
+       (js_newWebTransportDatagramStats, js_setDroppedIncoming, js_getDroppedIncoming, js_setExpiredIncoming, js_getExpiredIncoming, js_setExpiredOutgoing, js_getExpiredOutgoing, js_setLostOutgoing, js_getLostOutgoing, newWebTransportDatagramStats, setDroppedIncoming, getDroppedIncoming, getDroppedIncomingUnsafe, getDroppedIncomingUnchecked, setExpiredIncoming, getExpiredIncoming, getExpiredIncomingUnsafe, getExpiredIncomingUnchecked, setExpiredOutgoing, getExpiredOutgoing, getExpiredOutgoingUnsafe, getExpiredOutgoingUnchecked, setLostOutgoing, getLostOutgoing, getLostOutgoingUnsafe, getLostOutgoingUnchecked, WebTransportDatagramStats(..), gTypeWebTransportDatagramStats)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportDatagramStats :: IO WebTransportDatagramStats
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportdatagramstats WebTransportDatagramStats specification>
+newWebTransportDatagramStats :: (MonadDOM m) => m WebTransportDatagramStats
+newWebTransportDatagramStats = liftDOM ((js_newWebTransportDatagramStats))
+
+foreign import javascript safe "(($1, $2) => { $1[\"droppedIncoming\"] = $2; })"
+        js_setDroppedIncoming :: WebTransportDatagramStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-droppedincoming WebTransportDatagramStats.droppedIncoming specification>
+setDroppedIncoming :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setDroppedIncoming self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDroppedIncoming (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"droppedIncoming\"]; })"
+        js_getDroppedIncoming :: WebTransportDatagramStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-droppedincoming WebTransportDatagramStats.droppedIncoming specification>
+getDroppedIncoming :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getDroppedIncoming self = liftDOM (((js_getDroppedIncoming (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-droppedincoming WebTransportDatagramStats.droppedIncoming specification>
+getDroppedIncomingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getDroppedIncomingUnsafe self = liftDOM ((((js_getDroppedIncoming (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-droppedincoming WebTransportDatagramStats.droppedIncoming specification>
+getDroppedIncomingUnchecked :: (MonadDOM m) => WebTransportDatagramStats -> m Word53
+getDroppedIncomingUnchecked self = liftDOM ((pFromJSVal <$> (js_getDroppedIncoming (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"expiredIncoming\"] = $2; })"
+        js_setExpiredIncoming :: WebTransportDatagramStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredincoming WebTransportDatagramStats.expiredIncoming specification>
+setExpiredIncoming :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setExpiredIncoming self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExpiredIncoming (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"expiredIncoming\"]; })"
+        js_getExpiredIncoming :: WebTransportDatagramStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredincoming WebTransportDatagramStats.expiredIncoming specification>
+getExpiredIncoming :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getExpiredIncoming self = liftDOM (((js_getExpiredIncoming (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredincoming WebTransportDatagramStats.expiredIncoming specification>
+getExpiredIncomingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getExpiredIncomingUnsafe self = liftDOM ((((js_getExpiredIncoming (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredincoming WebTransportDatagramStats.expiredIncoming specification>
+getExpiredIncomingUnchecked :: (MonadDOM m) => WebTransportDatagramStats -> m Word53
+getExpiredIncomingUnchecked self = liftDOM ((pFromJSVal <$> (js_getExpiredIncoming (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"expiredOutgoing\"] = $2; })"
+        js_setExpiredOutgoing :: WebTransportDatagramStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredoutgoing WebTransportDatagramStats.expiredOutgoing specification>
+setExpiredOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setExpiredOutgoing self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setExpiredOutgoing (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"expiredOutgoing\"]; })"
+        js_getExpiredOutgoing :: WebTransportDatagramStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredoutgoing WebTransportDatagramStats.expiredOutgoing specification>
+getExpiredOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getExpiredOutgoing self = liftDOM (((js_getExpiredOutgoing (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredoutgoing WebTransportDatagramStats.expiredOutgoing specification>
+getExpiredOutgoingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getExpiredOutgoingUnsafe self = liftDOM ((((js_getExpiredOutgoing (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredoutgoing WebTransportDatagramStats.expiredOutgoing specification>
+getExpiredOutgoingUnchecked :: (MonadDOM m) => WebTransportDatagramStats -> m Word53
+getExpiredOutgoingUnchecked self = liftDOM ((pFromJSVal <$> (js_getExpiredOutgoing (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"lostOutgoing\"] = $2; })"
+        js_setLostOutgoing :: WebTransportDatagramStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-lostoutgoing WebTransportDatagramStats.lostOutgoing specification>
+setLostOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setLostOutgoing self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setLostOutgoing (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"lostOutgoing\"]; })"
+        js_getLostOutgoing :: WebTransportDatagramStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-lostoutgoing WebTransportDatagramStats.lostOutgoing specification>
+getLostOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getLostOutgoing self = liftDOM (((js_getLostOutgoing (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-lostoutgoing WebTransportDatagramStats.lostOutgoing specification>
+getLostOutgoingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getLostOutgoingUnsafe self = liftDOM ((((js_getLostOutgoing (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-lostoutgoing WebTransportDatagramStats.lostOutgoing specification>
+getLostOutgoingUnchecked :: (MonadDOM m) => WebTransportDatagramStats -> m Word53
+getLostOutgoingUnchecked self = liftDOM ((pFromJSVal <$> (js_getLostOutgoing (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramsWritable.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramsWritable.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportDatagramsWritable.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportDatagramsWritable
+       (js_setSendGroup, js_getSendGroup, js_setSendOrder, js_getSendOrder, setSendGroup, getSendGroup, getSendGroupUnsafe, getSendGroupUnchecked, setSendOrder, getSendOrder, WebTransportDatagramsWritable(..), gTypeWebTransportDatagramsWritable)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { $1[\"sendGroup\"] = $2; })"
+        js_setSendGroup :: WebTransportDatagramsWritable -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendGroup MDN WebTransportDatagramsWritable.sendGroup documentation>
+setSendGroup :: (MonadDOM m) => WebTransportDatagramsWritable -> Maybe WebTransportSendGroup -> m ()
+setSendGroup self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSendGroup (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sendGroup\"]; })"
+        js_getSendGroup :: WebTransportDatagramsWritable -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendGroup MDN WebTransportDatagramsWritable.sendGroup documentation>
+getSendGroup :: (MonadDOM m) => WebTransportDatagramsWritable -> m (Maybe WebTransportSendGroup)
+getSendGroup self = liftDOM (((js_getSendGroup (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendGroup MDN WebTransportDatagramsWritable.sendGroup documentation>
+getSendGroupUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramsWritable -> m WebTransportSendGroup
+getSendGroupUnsafe self = liftDOM ((((js_getSendGroup (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendGroup MDN WebTransportDatagramsWritable.sendGroup documentation>
+getSendGroupUnchecked :: (MonadDOM m) => WebTransportDatagramsWritable -> m WebTransportSendGroup
+getSendGroupUnchecked self = liftDOM ((pFromJSVal <$> (js_getSendGroup (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sendOrder\"] = $2; })"
+        js_setSendOrder :: WebTransportDatagramsWritable -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendOrder MDN WebTransportDatagramsWritable.sendOrder documentation>
+setSendOrder :: (MonadDOM m) => WebTransportDatagramsWritable -> Int53 -> m ()
+setSendOrder self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSendOrder (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sendOrder\"]; })"
+        js_getSendOrder :: WebTransportDatagramsWritable -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendOrder MDN WebTransportDatagramsWritable.sendOrder documentation>
+getSendOrder :: (MonadDOM m) => WebTransportDatagramsWritable -> m Int53
+getSendOrder self = liftDOM (((js_getSendOrder (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportError.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportError.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportError
+       (js_newWebTransportError, js_getSource, js_getStreamErrorCode, newWebTransportError, getSource, getStreamErrorCode, getStreamErrorCodeUnsafe, getStreamErrorCodeUnchecked, WebTransportError(..), gTypeWebTransportError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"WebTransportError\"]($1, $2); })"
+        js_newWebTransportError :: (Optional JSString) -> JSVal -> IO WebTransportError
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/WebTransportError MDN WebTransportError. documentation>
+newWebTransportError :: (MonadDOM m, ToJSString message) => Maybe message -> Maybe WebTransportErrorOptions -> m WebTransportError
+newWebTransportError message options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newWebTransportError (toOptionalJSString message) a2'))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: WebTransportError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/source MDN WebTransportError.source documentation>
+getSource :: (MonadDOM m) => WebTransportError -> m WebTransportErrorSource
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"streamErrorCode\"]; })"
+        js_getStreamErrorCode :: WebTransportError -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/streamErrorCode MDN WebTransportError.streamErrorCode documentation>
+getStreamErrorCode :: (MonadDOM m) => WebTransportError -> m (Maybe Word)
+getStreamErrorCode self = liftDOM (((js_getStreamErrorCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/streamErrorCode MDN WebTransportError.streamErrorCode documentation>
+getStreamErrorCodeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportError -> m Word
+getStreamErrorCodeUnsafe self = liftDOM ((((js_getStreamErrorCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/streamErrorCode MDN WebTransportError.streamErrorCode documentation>
+getStreamErrorCodeUnchecked :: (MonadDOM m) => WebTransportError -> m Word
+getStreamErrorCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStreamErrorCode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportErrorOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportErrorOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportErrorOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportErrorOptions
+       (js_newWebTransportErrorOptions, js_setSource, js_getSource, js_setStreamErrorCode, js_getStreamErrorCode, newWebTransportErrorOptions, setSource, getSource, getSourceUnsafe, getSourceUnchecked, setStreamErrorCode, getStreamErrorCode, getStreamErrorCodeUnsafe, getStreamErrorCodeUnchecked, WebTransportErrorOptions(..), gTypeWebTransportErrorOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportErrorOptions :: IO WebTransportErrorOptions
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransporterroroptions WebTransportErrorOptions specification>
+newWebTransportErrorOptions :: (MonadDOM m) => m WebTransportErrorOptions
+newWebTransportErrorOptions = liftDOM ((js_newWebTransportErrorOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"source\"] = $2; })"
+        js_setSource :: WebTransportErrorOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-source WebTransportErrorOptions.source specification>
+setSource :: (MonadDOM m) => WebTransportErrorOptions -> WebTransportErrorSource -> m ()
+setSource self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSource (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })"
+        js_getSource :: WebTransportErrorOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-source WebTransportErrorOptions.source specification>
+getSource :: (MonadDOM m) => WebTransportErrorOptions -> m (Maybe WebTransportErrorSource)
+getSource self = liftDOM (((js_getSource (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-source WebTransportErrorOptions.source specification>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => WebTransportErrorOptions -> m WebTransportErrorSource
+getSourceUnsafe self = liftDOM ((((js_getSource (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-source WebTransportErrorOptions.source specification>
+getSourceUnchecked :: (MonadDOM m) => WebTransportErrorOptions -> m WebTransportErrorSource
+getSourceUnchecked self = liftDOM ((pFromJSVal <$> (js_getSource (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"streamErrorCode\"] = $2; })"
+        js_setStreamErrorCode :: WebTransportErrorOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-streamerrorcode WebTransportErrorOptions.streamErrorCode specification>
+setStreamErrorCode :: (MonadDOM m) => WebTransportErrorOptions -> Maybe Word -> m ()
+setStreamErrorCode self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setStreamErrorCode (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"streamErrorCode\"]; })"
+        js_getStreamErrorCode :: WebTransportErrorOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-streamerrorcode WebTransportErrorOptions.streamErrorCode specification>
+getStreamErrorCode :: (MonadDOM m) => WebTransportErrorOptions -> m (Maybe Word)
+getStreamErrorCode self = liftDOM (((js_getStreamErrorCode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-streamerrorcode WebTransportErrorOptions.streamErrorCode specification>
+getStreamErrorCodeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportErrorOptions -> m Word
+getStreamErrorCodeUnsafe self = liftDOM ((((js_getStreamErrorCode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-streamerrorcode WebTransportErrorOptions.streamErrorCode specification>
+getStreamErrorCodeUnchecked :: (MonadDOM m) => WebTransportErrorOptions -> m Word
+getStreamErrorCodeUnchecked self = liftDOM ((pFromJSVal <$> (js_getStreamErrorCode (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportHash.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportHash.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportHash.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportHash
+       (js_newWebTransportHash, js_setAlgorithm, js_getAlgorithm, js_setValue, js_getValue, newWebTransportHash, setAlgorithm, getAlgorithm, setValue, getValue, WebTransportHash(..), gTypeWebTransportHash)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return ({\"algorithm\": $1, \"value\": $2}); })"
+        js_newWebTransportHash :: JSString -> BufferSource -> IO WebTransportHash
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransporthash WebTransportHash specification>
+newWebTransportHash :: (MonadDOM m, ToJSString algorithm, IsBufferSource value) => algorithm -> value -> m WebTransportHash
+newWebTransportHash algorithm value = liftDOM ((js_newWebTransportHash (toJSString algorithm) (Types.toBufferSource value)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"algorithm\"] = $2; })"
+        js_setAlgorithm :: WebTransportHash -> JSString -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-algorithm WebTransportHash.algorithm specification>
+setAlgorithm :: (MonadDOM m, ToJSString val) => WebTransportHash -> val -> m ()
+setAlgorithm self val = liftDOM (void ((js_setAlgorithm (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"algorithm\"]; })"
+        js_getAlgorithm :: WebTransportHash -> IO JSString
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-algorithm WebTransportHash.algorithm specification>
+getAlgorithm :: (MonadDOM m, FromJSString result) => WebTransportHash -> m result
+getAlgorithm self = liftDOM ((fromJSString <$> (js_getAlgorithm (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })"
+        js_setValue :: WebTransportHash -> BufferSource -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-value WebTransportHash.value specification>
+setValue :: (MonadDOM m, IsBufferSource val) => WebTransportHash -> val -> m ()
+setValue self val = liftDOM (void ((js_setValue (self) (Types.toBufferSource val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })"
+        js_getValue :: WebTransportHash -> IO BufferSource
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-value WebTransportHash.value specification>
+getValue :: (MonadDOM m) => WebTransportHash -> m BufferSource
+getValue self = liftDOM ((js_getValue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportOptions.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportOptions
+       (js_newWebTransportOptions, js_setAllowPooling, js_getAllowPooling, js_setRequireUnreliable, js_getRequireUnreliable, js_setHeaders, js_getHeaders, js_setServerCertificateHashes, js_getServerCertificateHashes, js_setCongestionControl, js_getCongestionControl, js_setAnticipatedConcurrentIncomingUnidirectionalStreams, js_getAnticipatedConcurrentIncomingUnidirectionalStreams, js_setAnticipatedConcurrentIncomingBidirectionalStreams, js_getAnticipatedConcurrentIncomingBidirectionalStreams, js_setProtocols, js_getProtocols, js_setDatagramsReadableType, js_getDatagramsReadableType, newWebTransportOptions, setAllowPooling, getAllowPooling, getAllowPoolingUnsafe, getAllowPoolingUnchecked, setRequireUnreliable, getRequireUnreliable, getRequireUnreliableUnsafe, getRequireUnreliableUnchecked, setHeaders, getHeaders, getHeadersUnsafe, getHeadersUnchecked, setServerCertificateHashes, getServerCertificateHashes, getServerCertificateHashesUnsafe, getServerCertificateHashesUnchecked, setCongestionControl, getCongestionControl, getCongestionControlUnsafe, getCongestionControlUnchecked, setAnticipatedConcurrentIncomingUnidirectionalStreams, getAnticipatedConcurrentIncomingUnidirectionalStreams, getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe, getAnticipatedConcurrentIncomingUnidirectionalStreamsUnchecked, setAnticipatedConcurrentIncomingBidirectionalStreams, getAnticipatedConcurrentIncomingBidirectionalStreams, getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe, getAnticipatedConcurrentIncomingBidirectionalStreamsUnchecked, setProtocols, getProtocols, getProtocolsUnsafe, getProtocolsUnchecked, setDatagramsReadableType, getDatagramsReadableType, getDatagramsReadableTypeUnsafe, getDatagramsReadableTypeUnchecked, WebTransportOptions(..), gTypeWebTransportOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportOptions :: IO WebTransportOptions
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportoptions WebTransportOptions specification>
+newWebTransportOptions :: (MonadDOM m) => m WebTransportOptions
+newWebTransportOptions = liftDOM ((js_newWebTransportOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"allowPooling\"] = $2; })"
+        js_setAllowPooling :: WebTransportOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-allowpooling WebTransportOptions.allowPooling specification>
+setAllowPooling :: (MonadDOM m) => WebTransportOptions -> Bool -> m ()
+setAllowPooling self val = liftDOM (void ((js_setAllowPooling (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"allowPooling\"]; })"
+        js_getAllowPooling :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-allowpooling WebTransportOptions.allowPooling specification>
+getAllowPooling :: (MonadDOM m) => WebTransportOptions -> m (Maybe Bool)
+getAllowPooling self = liftDOM (((js_getAllowPooling (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-allowpooling WebTransportOptions.allowPooling specification>
+getAllowPoolingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Bool
+getAllowPoolingUnsafe self = liftDOM ((((js_getAllowPooling (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-allowpooling WebTransportOptions.allowPooling specification>
+getAllowPoolingUnchecked :: (MonadDOM m) => WebTransportOptions -> m Bool
+getAllowPoolingUnchecked self = liftDOM ((pFromJSVal <$> (js_getAllowPooling (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"requireUnreliable\"] = $2; })"
+        js_setRequireUnreliable :: WebTransportOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-requireunreliable WebTransportOptions.requireUnreliable specification>
+setRequireUnreliable :: (MonadDOM m) => WebTransportOptions -> Bool -> m ()
+setRequireUnreliable self val = liftDOM (void ((js_setRequireUnreliable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"requireUnreliable\"]; })"
+        js_getRequireUnreliable :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-requireunreliable WebTransportOptions.requireUnreliable specification>
+getRequireUnreliable :: (MonadDOM m) => WebTransportOptions -> m (Maybe Bool)
+getRequireUnreliable self = liftDOM (((js_getRequireUnreliable (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-requireunreliable WebTransportOptions.requireUnreliable specification>
+getRequireUnreliableUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Bool
+getRequireUnreliableUnsafe self = liftDOM ((((js_getRequireUnreliable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-requireunreliable WebTransportOptions.requireUnreliable specification>
+getRequireUnreliableUnchecked :: (MonadDOM m) => WebTransportOptions -> m Bool
+getRequireUnreliableUnchecked self = liftDOM ((pFromJSVal <$> (js_getRequireUnreliable (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"headers\"] = $2; })"
+        js_setHeaders :: WebTransportOptions -> HeadersInit -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-headers WebTransportOptions.headers specification>
+setHeaders :: (MonadDOM m, IsHeadersInit val) => WebTransportOptions -> val -> m ()
+setHeaders self val = liftDOM (void ((js_setHeaders (self) (Types.toHeadersInit val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })"
+        js_getHeaders :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-headers WebTransportOptions.headers specification>
+getHeaders :: (MonadDOM m) => WebTransportOptions -> m (Maybe HeadersInit)
+getHeaders self = liftDOM (((js_getHeaders (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-headers WebTransportOptions.headers specification>
+getHeadersUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m HeadersInit
+getHeadersUnsafe self = liftDOM ((((js_getHeaders (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-headers WebTransportOptions.headers specification>
+getHeadersUnchecked :: (MonadDOM m) => WebTransportOptions -> m HeadersInit
+getHeadersUnchecked self = liftDOM ((pFromJSVal <$> (js_getHeaders (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"serverCertificateHashes\"] = $2; })"
+        js_setServerCertificateHashes :: WebTransportOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-servercertificatehashes WebTransportOptions.serverCertificateHashes specification>
+setServerCertificateHashes :: (MonadDOM m) => WebTransportOptions -> [WebTransportHash] -> m ()
+setServerCertificateHashes self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setServerCertificateHashes (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serverCertificateHashes\"]; })"
+        js_getServerCertificateHashes :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-servercertificatehashes WebTransportOptions.serverCertificateHashes specification>
+getServerCertificateHashes :: (MonadDOM m) => WebTransportOptions -> m (Maybe [WebTransportHash])
+getServerCertificateHashes self = liftDOM (((js_getServerCertificateHashes (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-servercertificatehashes WebTransportOptions.serverCertificateHashes specification>
+getServerCertificateHashesUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m [WebTransportHash]
+getServerCertificateHashesUnsafe self = liftDOM ((((js_getServerCertificateHashes (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-servercertificatehashes WebTransportOptions.serverCertificateHashes specification>
+getServerCertificateHashesUnchecked :: (MonadDOM m) => WebTransportOptions -> m [WebTransportHash]
+getServerCertificateHashesUnchecked self = liftDOM (((js_getServerCertificateHashes (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"congestionControl\"] = $2; })"
+        js_setCongestionControl :: WebTransportOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-congestioncontrol WebTransportOptions.congestionControl specification>
+setCongestionControl :: (MonadDOM m) => WebTransportOptions -> WebTransportCongestionControl -> m ()
+setCongestionControl self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCongestionControl (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"congestionControl\"]; })"
+        js_getCongestionControl :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-congestioncontrol WebTransportOptions.congestionControl specification>
+getCongestionControl :: (MonadDOM m) => WebTransportOptions -> m (Maybe WebTransportCongestionControl)
+getCongestionControl self = liftDOM (((js_getCongestionControl (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-congestioncontrol WebTransportOptions.congestionControl specification>
+getCongestionControlUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m WebTransportCongestionControl
+getCongestionControlUnsafe self = liftDOM ((((js_getCongestionControl (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-congestioncontrol WebTransportOptions.congestionControl specification>
+getCongestionControlUnchecked :: (MonadDOM m) => WebTransportOptions -> m WebTransportCongestionControl
+getCongestionControlUnchecked self = liftDOM ((pFromJSVal <$> (js_getCongestionControl (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"anticipatedConcurrentIncomingUnidirectionalStreams\"] = $2; })"
+        js_setAnticipatedConcurrentIncomingUnidirectionalStreams :: WebTransportOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingunidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+setAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingUnidirectionalStreams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAnticipatedConcurrentIncomingUnidirectionalStreams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"anticipatedConcurrentIncomingUnidirectionalStreams\"]; })"
+        js_getAnticipatedConcurrentIncomingUnidirectionalStreams :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingunidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> m (Maybe Word)
+getAnticipatedConcurrentIncomingUnidirectionalStreams self = liftDOM (((js_getAnticipatedConcurrentIncomingUnidirectionalStreams (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingunidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Word
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe self = liftDOM ((((js_getAnticipatedConcurrentIncomingUnidirectionalStreams (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingunidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnchecked :: (MonadDOM m) => WebTransportOptions -> m Word
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnticipatedConcurrentIncomingUnidirectionalStreams (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"anticipatedConcurrentIncomingBidirectionalStreams\"] = $2; })"
+        js_setAnticipatedConcurrentIncomingBidirectionalStreams :: WebTransportOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingbidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingBidirectionalStreams specification>
+setAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingBidirectionalStreams self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setAnticipatedConcurrentIncomingBidirectionalStreams (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"anticipatedConcurrentIncomingBidirectionalStreams\"]; })"
+        js_getAnticipatedConcurrentIncomingBidirectionalStreams :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingbidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> m (Maybe Word)
+getAnticipatedConcurrentIncomingBidirectionalStreams self = liftDOM (((js_getAnticipatedConcurrentIncomingBidirectionalStreams (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingbidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Word
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe self = liftDOM ((((js_getAnticipatedConcurrentIncomingBidirectionalStreams (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingbidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnchecked :: (MonadDOM m) => WebTransportOptions -> m Word
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnchecked self = liftDOM ((pFromJSVal <$> (js_getAnticipatedConcurrentIncomingBidirectionalStreams (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"protocols\"] = $2; })"
+        js_setProtocols :: WebTransportOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-protocols WebTransportOptions.protocols specification>
+setProtocols :: (MonadDOM m, ToJSString val) => WebTransportOptions -> [val] -> m ()
+setProtocols self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setProtocols (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"protocols\"]; })"
+        js_getProtocols :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-protocols WebTransportOptions.protocols specification>
+getProtocols :: (MonadDOM m, FromJSString result) => WebTransportOptions -> m (Maybe [result])
+getProtocols self = liftDOM (((js_getProtocols (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-protocols WebTransportOptions.protocols specification>
+getProtocolsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => WebTransportOptions -> m [result]
+getProtocolsUnsafe self = liftDOM ((((js_getProtocols (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-protocols WebTransportOptions.protocols specification>
+getProtocolsUnchecked :: (MonadDOM m, FromJSString result) => WebTransportOptions -> m [result]
+getProtocolsUnchecked self = liftDOM (((js_getProtocols (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"datagramsReadableType\"] = $2; })"
+        js_setDatagramsReadableType :: WebTransportOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-datagramsreadabletype WebTransportOptions.datagramsReadableType specification>
+setDatagramsReadableType :: (MonadDOM m) => WebTransportOptions -> ReadableStreamType -> m ()
+setDatagramsReadableType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setDatagramsReadableType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"datagramsReadableType\"]; })"
+        js_getDatagramsReadableType :: WebTransportOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-datagramsreadabletype WebTransportOptions.datagramsReadableType specification>
+getDatagramsReadableType :: (MonadDOM m) => WebTransportOptions -> m (Maybe ReadableStreamType)
+getDatagramsReadableType self = liftDOM (((js_getDatagramsReadableType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-datagramsreadabletype WebTransportOptions.datagramsReadableType specification>
+getDatagramsReadableTypeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m ReadableStreamType
+getDatagramsReadableTypeUnsafe self = liftDOM ((((js_getDatagramsReadableType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-datagramsreadabletype WebTransportOptions.datagramsReadableType specification>
+getDatagramsReadableTypeUnchecked :: (MonadDOM m) => WebTransportOptions -> m ReadableStreamType
+getDatagramsReadableTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDatagramsReadableType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportReceiveStream.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportReceiveStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportReceiveStream.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportReceiveStream
+       (js_getStats, getStats, getStats_, WebTransportReceiveStream(..), gTypeWebTransportReceiveStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getStats\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats :: WebTransportReceiveStream -> IO (JSVal, WebTransportReceiveStreamStats)
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportReceiveStream/getStats MDN WebTransportReceiveStream.getStats documentation>
+getStats :: (MonadDOM m) => WebTransportReceiveStream -> m WebTransportReceiveStreamStats
+getStats self = liftDOM (((js_getStats (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportReceiveStream/getStats MDN WebTransportReceiveStream.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransportReceiveStream -> m ()
+getStats_ self = liftDOM (void (((js_getStats (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportReceiveStreamStats.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportReceiveStreamStats.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportReceiveStreamStats.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportReceiveStreamStats
+       (js_newWebTransportReceiveStreamStats, js_setBytesReceived, js_getBytesReceived, js_setBytesRead, js_getBytesRead, newWebTransportReceiveStreamStats, setBytesReceived, getBytesReceived, getBytesReceivedUnsafe, getBytesReceivedUnchecked, setBytesRead, getBytesRead, getBytesReadUnsafe, getBytesReadUnchecked, WebTransportReceiveStreamStats(..), gTypeWebTransportReceiveStreamStats)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportReceiveStreamStats :: IO WebTransportReceiveStreamStats
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportreceivestreamstats WebTransportReceiveStreamStats specification>
+newWebTransportReceiveStreamStats :: (MonadDOM m) => m WebTransportReceiveStreamStats
+newWebTransportReceiveStreamStats = liftDOM ((js_newWebTransportReceiveStreamStats))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesReceived\"] = $2; })"
+        js_setBytesReceived :: WebTransportReceiveStreamStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesreceived WebTransportReceiveStreamStats.bytesReceived specification>
+setBytesReceived :: (MonadDOM m) => WebTransportReceiveStreamStats -> Word53 -> m ()
+setBytesReceived self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesReceived (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesReceived\"]; })"
+        js_getBytesReceived :: WebTransportReceiveStreamStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesreceived WebTransportReceiveStreamStats.bytesReceived specification>
+getBytesReceived :: (MonadDOM m) => WebTransportReceiveStreamStats -> m (Maybe Word53)
+getBytesReceived self = liftDOM (((js_getBytesReceived (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesreceived WebTransportReceiveStreamStats.bytesReceived specification>
+getBytesReceivedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportReceiveStreamStats -> m Word53
+getBytesReceivedUnsafe self = liftDOM ((((js_getBytesReceived (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesreceived WebTransportReceiveStreamStats.bytesReceived specification>
+getBytesReceivedUnchecked :: (MonadDOM m) => WebTransportReceiveStreamStats -> m Word53
+getBytesReceivedUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesReceived (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesRead\"] = $2; })"
+        js_setBytesRead :: WebTransportReceiveStreamStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesread WebTransportReceiveStreamStats.bytesRead specification>
+setBytesRead :: (MonadDOM m) => WebTransportReceiveStreamStats -> Word53 -> m ()
+setBytesRead self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesRead (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesRead\"]; })"
+        js_getBytesRead :: WebTransportReceiveStreamStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesread WebTransportReceiveStreamStats.bytesRead specification>
+getBytesRead :: (MonadDOM m) => WebTransportReceiveStreamStats -> m (Maybe Word53)
+getBytesRead self = liftDOM (((js_getBytesRead (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesread WebTransportReceiveStreamStats.bytesRead specification>
+getBytesReadUnsafe :: (MonadDOM m, HasCallStack) => WebTransportReceiveStreamStats -> m Word53
+getBytesReadUnsafe self = liftDOM ((((js_getBytesRead (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesread WebTransportReceiveStreamStats.bytesRead specification>
+getBytesReadUnchecked :: (MonadDOM m) => WebTransportReceiveStreamStats -> m Word53
+getBytesReadUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesRead (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendGroup.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendGroup.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendGroup.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportSendGroup
+       (js_getStats, getStats, getStats_, WebTransportSendGroup(..), gTypeWebTransportSendGroup)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getStats\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats :: WebTransportSendGroup -> IO (JSVal, WebTransportSendStreamStats)
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendGroup/getStats MDN WebTransportSendGroup.getStats documentation>
+getStats :: (MonadDOM m) => WebTransportSendGroup -> m WebTransportSendStreamStats
+getStats self = liftDOM (((js_getStats (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendGroup/getStats MDN WebTransportSendGroup.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransportSendGroup -> m ()
+getStats_ self = liftDOM (void (((js_getStats (self)) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendOptions.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportSendOptions
+       (js_newWebTransportSendOptions, js_setSendGroup, js_getSendGroup, js_setSendOrder, js_getSendOrder, newWebTransportSendOptions, setSendGroup, getSendGroup, getSendGroupUnsafe, getSendGroupUnchecked, setSendOrder, getSendOrder, getSendOrderUnsafe, getSendOrderUnchecked, WebTransportSendOptions(..), gTypeWebTransportSendOptions, IsWebTransportSendOptions, toWebTransportSendOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportSendOptions :: IO WebTransportSendOptions
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportsendoptions WebTransportSendOptions specification>
+newWebTransportSendOptions :: (MonadDOM m) => m WebTransportSendOptions
+newWebTransportSendOptions = liftDOM ((js_newWebTransportSendOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sendGroup\"] = $2; })"
+        js_setSendGroup :: WebTransportSendOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendgroup WebTransportSendOptions.sendGroup specification>
+setSendGroup :: (MonadDOM m, IsWebTransportSendOptions self) => self -> Maybe WebTransportSendGroup -> m ()
+setSendGroup self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSendGroup ((Types.toWebTransportSendOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sendGroup\"]; })"
+        js_getSendGroup :: WebTransportSendOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendgroup WebTransportSendOptions.sendGroup specification>
+getSendGroup :: (MonadDOM m, IsWebTransportSendOptions self) => self -> m (Maybe WebTransportSendGroup)
+getSendGroup self = liftDOM (((js_getSendGroup ((Types.toWebTransportSendOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendgroup WebTransportSendOptions.sendGroup specification>
+getSendGroupUnsafe :: (MonadDOM m, IsWebTransportSendOptions self, HasCallStack) => self -> m WebTransportSendGroup
+getSendGroupUnsafe self = liftDOM ((((js_getSendGroup ((Types.toWebTransportSendOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendgroup WebTransportSendOptions.sendGroup specification>
+getSendGroupUnchecked :: (MonadDOM m, IsWebTransportSendOptions self) => self -> m WebTransportSendGroup
+getSendGroupUnchecked self = liftDOM ((pFromJSVal <$> (js_getSendGroup ((Types.toWebTransportSendOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sendOrder\"] = $2; })"
+        js_setSendOrder :: WebTransportSendOptions -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendorder WebTransportSendOptions.sendOrder specification>
+setSendOrder :: (MonadDOM m, IsWebTransportSendOptions self) => self -> Int53 -> m ()
+setSendOrder self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSendOrder ((Types.toWebTransportSendOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sendOrder\"]; })"
+        js_getSendOrder :: WebTransportSendOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendorder WebTransportSendOptions.sendOrder specification>
+getSendOrder :: (MonadDOM m, IsWebTransportSendOptions self) => self -> m (Maybe Int53)
+getSendOrder self = liftDOM (((js_getSendOrder ((Types.toWebTransportSendOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendorder WebTransportSendOptions.sendOrder specification>
+getSendOrderUnsafe :: (MonadDOM m, IsWebTransportSendOptions self, HasCallStack) => self -> m Int53
+getSendOrderUnsafe self = liftDOM ((((js_getSendOrder ((Types.toWebTransportSendOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendorder WebTransportSendOptions.sendOrder specification>
+getSendOrderUnchecked :: (MonadDOM m, IsWebTransportSendOptions self) => self -> m Int53
+getSendOrderUnchecked self = liftDOM ((pFromJSVal <$> (js_getSendOrder ((Types.toWebTransportSendOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStream.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStream.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportSendStream
+       (js_getStats, js_getWriter, js_setSendGroup, js_getSendGroup, js_setSendOrder, js_getSendOrder, getStats, getStats_, getWriter, getWriter_, setSendGroup, getSendGroup, getSendGroupUnsafe, getSendGroupUnchecked, setSendOrder, getSendOrder, WebTransportSendStream(..), gTypeWebTransportSendStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"getStats\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats :: WebTransportSendStream -> IO (JSVal, WebTransportSendStreamStats)
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getStats MDN WebTransportSendStream.getStats documentation>
+getStats :: (MonadDOM m) => WebTransportSendStream -> m WebTransportSendStreamStats
+getStats self = liftDOM (((js_getStats (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getStats MDN WebTransportSendStream.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransportSendStream -> m ()
+getStats_ self = liftDOM (void (((js_getStats (self)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"getWriter\"](); })"
+        js_getWriter :: WebTransportSendStream -> IO WebTransportWriter
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getWriter MDN WebTransportSendStream.getWriter documentation>
+getWriter :: (MonadDOM m) => WebTransportSendStream -> m WebTransportWriter
+getWriter self = liftDOM ((js_getWriter (self)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getWriter MDN WebTransportSendStream.getWriter documentation>
+getWriter_ :: (MonadDOM m) => WebTransportSendStream -> m ()
+getWriter_ self = liftDOM (void ((js_getWriter (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sendGroup\"] = $2; })"
+        js_setSendGroup :: WebTransportSendStream -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendGroup MDN WebTransportSendStream.sendGroup documentation>
+setSendGroup :: (MonadDOM m) => WebTransportSendStream -> Maybe WebTransportSendGroup -> m ()
+setSendGroup self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSendGroup (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sendGroup\"]; })"
+        js_getSendGroup :: WebTransportSendStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendGroup MDN WebTransportSendStream.sendGroup documentation>
+getSendGroup :: (MonadDOM m) => WebTransportSendStream -> m (Maybe WebTransportSendGroup)
+getSendGroup self = liftDOM (((js_getSendGroup (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendGroup MDN WebTransportSendStream.sendGroup documentation>
+getSendGroupUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStream -> m WebTransportSendGroup
+getSendGroupUnsafe self = liftDOM ((((js_getSendGroup (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendGroup MDN WebTransportSendStream.sendGroup documentation>
+getSendGroupUnchecked :: (MonadDOM m) => WebTransportSendStream -> m WebTransportSendGroup
+getSendGroupUnchecked self = liftDOM ((pFromJSVal <$> (js_getSendGroup (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"sendOrder\"] = $2; })"
+        js_setSendOrder :: WebTransportSendStream -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendOrder MDN WebTransportSendStream.sendOrder documentation>
+setSendOrder :: (MonadDOM m) => WebTransportSendStream -> Int53 -> m ()
+setSendOrder self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSendOrder (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"sendOrder\"]; })"
+        js_getSendOrder :: WebTransportSendStream -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendOrder MDN WebTransportSendStream.sendOrder documentation>
+getSendOrder :: (MonadDOM m) => WebTransportSendStream -> m Int53
+getSendOrder self = liftDOM (((js_getSendOrder (self)) >>= fromJSValUnchecked))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStreamOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStreamOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStreamOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportSendStreamOptions
+       (js_newWebTransportSendStreamOptions, js_setWaitUntilAvailable, js_getWaitUntilAvailable, newWebTransportSendStreamOptions, setWaitUntilAvailable, getWaitUntilAvailable, getWaitUntilAvailableUnsafe, getWaitUntilAvailableUnchecked, WebTransportSendStreamOptions(..), gTypeWebTransportSendStreamOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportSendStreamOptions :: IO WebTransportSendStreamOptions
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportsendstreamoptions WebTransportSendStreamOptions specification>
+newWebTransportSendStreamOptions :: (MonadDOM m) => m WebTransportSendStreamOptions
+newWebTransportSendStreamOptions = liftDOM ((js_newWebTransportSendStreamOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"waitUntilAvailable\"] = $2; })"
+        js_setWaitUntilAvailable :: WebTransportSendStreamOptions -> Bool -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamoptions-waituntilavailable WebTransportSendStreamOptions.waitUntilAvailable specification>
+setWaitUntilAvailable :: (MonadDOM m) => WebTransportSendStreamOptions -> Bool -> m ()
+setWaitUntilAvailable self val = liftDOM (void ((js_setWaitUntilAvailable (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"waitUntilAvailable\"]; })"
+        js_getWaitUntilAvailable :: WebTransportSendStreamOptions -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamoptions-waituntilavailable WebTransportSendStreamOptions.waitUntilAvailable specification>
+getWaitUntilAvailable :: (MonadDOM m) => WebTransportSendStreamOptions -> m (Maybe Bool)
+getWaitUntilAvailable self = liftDOM (((js_getWaitUntilAvailable (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamoptions-waituntilavailable WebTransportSendStreamOptions.waitUntilAvailable specification>
+getWaitUntilAvailableUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamOptions -> m Bool
+getWaitUntilAvailableUnsafe self = liftDOM ((((js_getWaitUntilAvailable (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamoptions-waituntilavailable WebTransportSendStreamOptions.waitUntilAvailable specification>
+getWaitUntilAvailableUnchecked :: (MonadDOM m) => WebTransportSendStreamOptions -> m Bool
+getWaitUntilAvailableUnchecked self = liftDOM ((pFromJSVal <$> (js_getWaitUntilAvailable (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStreamStats.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStreamStats.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportSendStreamStats.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportSendStreamStats
+       (js_newWebTransportSendStreamStats, js_setBytesWritten, js_getBytesWritten, js_setBytesSent, js_getBytesSent, js_setBytesAcknowledged, js_getBytesAcknowledged, newWebTransportSendStreamStats, setBytesWritten, getBytesWritten, getBytesWrittenUnsafe, getBytesWrittenUnchecked, setBytesSent, getBytesSent, getBytesSentUnsafe, getBytesSentUnchecked, setBytesAcknowledged, getBytesAcknowledged, getBytesAcknowledgedUnsafe, getBytesAcknowledgedUnchecked, WebTransportSendStreamStats(..), gTypeWebTransportSendStreamStats)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWebTransportSendStreamStats :: IO WebTransportSendStreamStats
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportsendstreamstats WebTransportSendStreamStats specification>
+newWebTransportSendStreamStats :: (MonadDOM m) => m WebTransportSendStreamStats
+newWebTransportSendStreamStats = liftDOM ((js_newWebTransportSendStreamStats))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesWritten\"] = $2; })"
+        js_setBytesWritten :: WebTransportSendStreamStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-byteswritten WebTransportSendStreamStats.bytesWritten specification>
+setBytesWritten :: (MonadDOM m) => WebTransportSendStreamStats -> Word53 -> m ()
+setBytesWritten self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesWritten (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesWritten\"]; })"
+        js_getBytesWritten :: WebTransportSendStreamStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-byteswritten WebTransportSendStreamStats.bytesWritten specification>
+getBytesWritten :: (MonadDOM m) => WebTransportSendStreamStats -> m (Maybe Word53)
+getBytesWritten self = liftDOM (((js_getBytesWritten (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-byteswritten WebTransportSendStreamStats.bytesWritten specification>
+getBytesWrittenUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamStats -> m Word53
+getBytesWrittenUnsafe self = liftDOM ((((js_getBytesWritten (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-byteswritten WebTransportSendStreamStats.bytesWritten specification>
+getBytesWrittenUnchecked :: (MonadDOM m) => WebTransportSendStreamStats -> m Word53
+getBytesWrittenUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesWritten (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesSent\"] = $2; })"
+        js_setBytesSent :: WebTransportSendStreamStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytessent WebTransportSendStreamStats.bytesSent specification>
+setBytesSent :: (MonadDOM m) => WebTransportSendStreamStats -> Word53 -> m ()
+setBytesSent self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesSent (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesSent\"]; })"
+        js_getBytesSent :: WebTransportSendStreamStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytessent WebTransportSendStreamStats.bytesSent specification>
+getBytesSent :: (MonadDOM m) => WebTransportSendStreamStats -> m (Maybe Word53)
+getBytesSent self = liftDOM (((js_getBytesSent (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytessent WebTransportSendStreamStats.bytesSent specification>
+getBytesSentUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamStats -> m Word53
+getBytesSentUnsafe self = liftDOM ((((js_getBytesSent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytessent WebTransportSendStreamStats.bytesSent specification>
+getBytesSentUnchecked :: (MonadDOM m) => WebTransportSendStreamStats -> m Word53
+getBytesSentUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesSent (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"bytesAcknowledged\"] = $2; })"
+        js_setBytesAcknowledged :: WebTransportSendStreamStats -> JSVal -> IO ()
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytesacknowledged WebTransportSendStreamStats.bytesAcknowledged specification>
+setBytesAcknowledged :: (MonadDOM m) => WebTransportSendStreamStats -> Word53 -> m ()
+setBytesAcknowledged self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setBytesAcknowledged (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"bytesAcknowledged\"]; })"
+        js_getBytesAcknowledged :: WebTransportSendStreamStats -> IO JSVal
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytesacknowledged WebTransportSendStreamStats.bytesAcknowledged specification>
+getBytesAcknowledged :: (MonadDOM m) => WebTransportSendStreamStats -> m (Maybe Word53)
+getBytesAcknowledged self = liftDOM (((js_getBytesAcknowledged (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytesacknowledged WebTransportSendStreamStats.bytesAcknowledged specification>
+getBytesAcknowledgedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamStats -> m Word53
+getBytesAcknowledgedUnsafe self = liftDOM ((((js_getBytesAcknowledged (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytesacknowledged WebTransportSendStreamStats.bytesAcknowledged specification>
+getBytesAcknowledgedUnchecked :: (MonadDOM m) => WebTransportSendStreamStats -> m Word53
+getBytesAcknowledgedUnchecked self = liftDOM ((pFromJSVal <$> (js_getBytesAcknowledged (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebTransportWriter.hs b/src/GHCJS/DOM/JSFFI/Generated/WebTransportWriter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebTransportWriter.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WebTransportWriter
+       (WebTransportWriter(..), gTypeWebTransportWriter)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
@@ -1,146 +1,53 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WheelEvent
-       (js_newWheelEvent, newWheelEvent, js_initWebKitWheelEvent,
-        initWebKitWheelEvent, pattern DOM_DELTA_PIXEL,
-        pattern DOM_DELTA_LINE, pattern DOM_DELTA_PAGE, js_getDeltaX,
-        getDeltaX, js_getDeltaY, getDeltaY, js_getDeltaZ, getDeltaZ,
-        js_getDeltaMode, getDeltaMode, js_getWheelDeltaX, getWheelDeltaX,
-        js_getWheelDeltaY, getWheelDeltaY, js_getWheelDelta, getWheelDelta,
-        js_getWebkitDirectionInvertedFromDevice,
-        getWebkitDirectionInvertedFromDevice, WheelEvent(..),
-        gTypeWheelEvent)
+       (js_newWheelEvent, js_getDeltaX, js_getDeltaY, js_getDeltaZ, js_getDeltaMode, newWheelEvent, getDeltaX, getDeltaY, getDeltaZ, getDeltaMode, pattern DOM_DELTA_PIXEL, pattern DOM_DELTA_LINE, pattern DOM_DELTA_PAGE, WheelEvent(..), gTypeWheelEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return new window[\"WheelEvent\"]($1, $2); })" js_newWheelEvent ::
-        JSString -> Optional WheelEventInit -> IO WheelEvent
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation> 
-newWheelEvent ::
-              (MonadIO m, ToJSString type') =>
-                type' -> Maybe WheelEventInit -> m WheelEvent
-newWheelEvent type' eventInitDict
-  = liftIO
-      (js_newWheelEvent (toJSString type')
-         (maybeToOptional eventInitDict))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"initWebKitWheelEvent\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10,\n$11, $12); })"
-        js_initWebKitWheelEvent ::
-        WheelEvent ->
-          Optional Int ->
-            Optional Int ->
-              Optional Window ->
-                Optional Int ->
-                  Optional Int ->
-                    Optional Int ->
-                      Optional Int -> Bool -> Bool -> Bool -> Bool -> IO ()
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"WheelEvent\"]($1, $2); })"
+        js_newWheelEvent :: JSString -> JSVal -> IO WheelEvent
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/WheelEvent MDN WheelEvent. documentation>
+newWheelEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe WheelEventInit -> m WheelEvent
+newWheelEvent type' eventInitDict = liftDOM (((P.maybe (P.return jsUndefined) toJSVal eventInitDict) >>= \a2' -> js_newWheelEvent (toJSString type') a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.initWebKitWheelEvent Mozilla WheelEvent.initWebKitWheelEvent documentation> 
-initWebKitWheelEvent ::
-                     (MonadIO m) =>
-                       WheelEvent ->
-                         Maybe Int ->
-                           Maybe Int ->
-                             Maybe Window ->
-                               Maybe Int ->
-                                 Maybe Int ->
-                                   Maybe Int -> Maybe Int -> Bool -> Bool -> Bool -> Bool -> m ()
-initWebKitWheelEvent self wheelDeltaX wheelDeltaY view screenX
-  screenY clientX clientY ctrlKey altKey shiftKey metaKey
-  = liftIO
-      (js_initWebKitWheelEvent self (maybeToOptional wheelDeltaX)
-         (maybeToOptional wheelDeltaY)
-         (maybeToOptional view)
-         (maybeToOptional screenX)
-         (maybeToOptional screenY)
-         (maybeToOptional clientX)
-         (maybeToOptional clientY)
-         ctrlKey
-         altKey
-         shiftKey
-         metaKey)
-pattern DOM_DELTA_PIXEL = 0
-pattern DOM_DELTA_LINE = 1
-pattern DOM_DELTA_PAGE = 2
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deltaX\"]; })" js_getDeltaX ::
-        WheelEvent -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"deltaX\"]; })"
+        js_getDeltaX :: WheelEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaX MDN WheelEvent.deltaX documentation>
+getDeltaX :: (MonadDOM m) => WheelEvent -> m Double
+getDeltaX self = liftDOM ((js_getDeltaX (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaX Mozilla WheelEvent.deltaX documentation> 
-getDeltaX :: (MonadIO m) => WheelEvent -> m Double
-getDeltaX self = liftIO (js_getDeltaX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deltaY\"]; })" js_getDeltaY ::
-        WheelEvent -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"deltaY\"]; })"
+        js_getDeltaY :: WheelEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaY MDN WheelEvent.deltaY documentation>
+getDeltaY :: (MonadDOM m) => WheelEvent -> m Double
+getDeltaY self = liftDOM ((js_getDeltaY (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaY Mozilla WheelEvent.deltaY documentation> 
-getDeltaY :: (MonadIO m) => WheelEvent -> m Double
-getDeltaY self = liftIO (js_getDeltaY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"deltaZ\"]; })" js_getDeltaZ ::
-        WheelEvent -> IO Double
+foreign import javascript unsafe "(($1) => { return $1[\"deltaZ\"]; })"
+        js_getDeltaZ :: WheelEvent -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaZ MDN WheelEvent.deltaZ documentation>
+getDeltaZ :: (MonadDOM m) => WheelEvent -> m Double
+getDeltaZ self = liftDOM ((js_getDeltaZ (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaZ Mozilla WheelEvent.deltaZ documentation> 
-getDeltaZ :: (MonadIO m) => WheelEvent -> m Double
-getDeltaZ self = liftIO (js_getDeltaZ self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"deltaMode\"]; })"
         js_getDeltaMode :: WheelEvent -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaMode Mozilla WheelEvent.deltaMode documentation> 
-getDeltaMode :: (MonadIO m) => WheelEvent -> m Word
-getDeltaMode self = liftIO (js_getDeltaMode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"wheelDeltaX\"]; })"
-        js_getWheelDeltaX :: WheelEvent -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaX Mozilla WheelEvent.wheelDeltaX documentation> 
-getWheelDeltaX :: (MonadIO m) => WheelEvent -> m Int
-getWheelDeltaX self = liftIO (js_getWheelDeltaX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"wheelDeltaY\"]; })"
-        js_getWheelDeltaY :: WheelEvent -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaMode MDN WheelEvent.deltaMode documentation>
+getDeltaMode :: (MonadDOM m) => WheelEvent -> m Word
+getDeltaMode self = liftDOM ((js_getDeltaMode (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaY Mozilla WheelEvent.wheelDeltaY documentation> 
-getWheelDeltaY :: (MonadIO m) => WheelEvent -> m Int
-getWheelDeltaY self = liftIO (js_getWheelDeltaY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"wheelDelta\"]; })"
-        js_getWheelDelta :: WheelEvent -> IO Int
+pattern DOM_DELTA_PIXEL = 0x00
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDelta Mozilla WheelEvent.wheelDelta documentation> 
-getWheelDelta :: (MonadIO m) => WheelEvent -> m Int
-getWheelDelta self = liftIO (js_getWheelDelta self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"webkitDirectionInvertedFromDevice\"] ? 1 : 0); })"
-        js_getWebkitDirectionInvertedFromDevice :: WheelEvent -> IO Bool
+pattern DOM_DELTA_LINE = 0x01
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.webkitDirectionInvertedFromDevice Mozilla WheelEvent.webkitDirectionInvertedFromDevice documentation> 
-getWebkitDirectionInvertedFromDevice ::
-                                     (MonadIO m) => WheelEvent -> m Bool
-getWebkitDirectionInvertedFromDevice self
-  = liftIO (js_getWebkitDirectionInvertedFromDevice self)
+pattern DOM_DELTA_PAGE = 0x02
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WheelEventInit.hs b/src/GHCJS/DOM/JSFFI/Generated/WheelEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WheelEventInit.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WheelEventInit
+       (js_newWheelEventInit, js_setDeltaX, js_getDeltaX, js_setDeltaY, js_getDeltaY, js_setDeltaZ, js_getDeltaZ, js_setDeltaMode, js_getDeltaMode, js_setMomentum, js_getMomentum, newWheelEventInit, setDeltaX, getDeltaX, getDeltaXUnsafe, getDeltaXUnchecked, setDeltaY, getDeltaY, getDeltaYUnsafe, getDeltaYUnchecked, setDeltaZ, getDeltaZ, getDeltaZUnsafe, getDeltaZUnchecked, setDeltaMode, getDeltaMode, getDeltaModeUnsafe, getDeltaModeUnchecked, setMomentum, getMomentum, getMomentumUnsafe, getMomentumUnchecked, WheelEventInit(..), gTypeWheelEventInit)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWheelEventInit :: IO WheelEventInit
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit WheelEventInit specification>
+newWheelEventInit :: (MonadDOM m) => m WheelEventInit
+newWheelEventInit = liftDOM ((js_newWheelEventInit))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deltaX\"] = $2; })"
+        js_setDeltaX :: WheelEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltax WheelEventInit.deltaX specification>
+setDeltaX :: (MonadDOM m) => WheelEventInit -> Double -> m ()
+setDeltaX self val = liftDOM (void ((js_setDeltaX (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deltaX\"]; })"
+        js_getDeltaX :: WheelEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltax WheelEventInit.deltaX specification>
+getDeltaX :: (MonadDOM m) => WheelEventInit -> m (Maybe Double)
+getDeltaX self = liftDOM (((js_getDeltaX (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltax WheelEventInit.deltaX specification>
+getDeltaXUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Double
+getDeltaXUnsafe self = liftDOM ((((js_getDeltaX (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltax WheelEventInit.deltaX specification>
+getDeltaXUnchecked :: (MonadDOM m) => WheelEventInit -> m Double
+getDeltaXUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeltaX (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deltaY\"] = $2; })"
+        js_setDeltaY :: WheelEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltay WheelEventInit.deltaY specification>
+setDeltaY :: (MonadDOM m) => WheelEventInit -> Double -> m ()
+setDeltaY self val = liftDOM (void ((js_setDeltaY (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deltaY\"]; })"
+        js_getDeltaY :: WheelEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltay WheelEventInit.deltaY specification>
+getDeltaY :: (MonadDOM m) => WheelEventInit -> m (Maybe Double)
+getDeltaY self = liftDOM (((js_getDeltaY (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltay WheelEventInit.deltaY specification>
+getDeltaYUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Double
+getDeltaYUnsafe self = liftDOM ((((js_getDeltaY (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltay WheelEventInit.deltaY specification>
+getDeltaYUnchecked :: (MonadDOM m) => WheelEventInit -> m Double
+getDeltaYUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeltaY (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deltaZ\"] = $2; })"
+        js_setDeltaZ :: WheelEventInit -> Double -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltaz WheelEventInit.deltaZ specification>
+setDeltaZ :: (MonadDOM m) => WheelEventInit -> Double -> m ()
+setDeltaZ self val = liftDOM (void ((js_setDeltaZ (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deltaZ\"]; })"
+        js_getDeltaZ :: WheelEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltaz WheelEventInit.deltaZ specification>
+getDeltaZ :: (MonadDOM m) => WheelEventInit -> m (Maybe Double)
+getDeltaZ self = liftDOM (((js_getDeltaZ (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltaz WheelEventInit.deltaZ specification>
+getDeltaZUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Double
+getDeltaZUnsafe self = liftDOM ((((js_getDeltaZ (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltaz WheelEventInit.deltaZ specification>
+getDeltaZUnchecked :: (MonadDOM m) => WheelEventInit -> m Double
+getDeltaZUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeltaZ (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"deltaMode\"] = $2; })"
+        js_setDeltaMode :: WheelEventInit -> Word -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltamode WheelEventInit.deltaMode specification>
+setDeltaMode :: (MonadDOM m) => WheelEventInit -> Word -> m ()
+setDeltaMode self val = liftDOM (void ((js_setDeltaMode (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"deltaMode\"]; })"
+        js_getDeltaMode :: WheelEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltamode WheelEventInit.deltaMode specification>
+getDeltaMode :: (MonadDOM m) => WheelEventInit -> m (Maybe Word)
+getDeltaMode self = liftDOM (((js_getDeltaMode (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltamode WheelEventInit.deltaMode specification>
+getDeltaModeUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Word
+getDeltaModeUnsafe self = liftDOM ((((js_getDeltaMode (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltamode WheelEventInit.deltaMode specification>
+getDeltaModeUnchecked :: (MonadDOM m) => WheelEventInit -> m Word
+getDeltaModeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDeltaMode (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"momentum\"] = $2; })"
+        js_setMomentum :: WheelEventInit -> Bool -> IO ()
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-momentum WheelEventInit.momentum specification>
+setMomentum :: (MonadDOM m) => WheelEventInit -> Bool -> m ()
+setMomentum self val = liftDOM (void ((js_setMomentum (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"momentum\"]; })"
+        js_getMomentum :: WheelEventInit -> IO JSVal
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-momentum WheelEventInit.momentum specification>
+getMomentum :: (MonadDOM m) => WheelEventInit -> m (Maybe Bool)
+getMomentum self = liftDOM (((js_getMomentum (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-momentum WheelEventInit.momentum specification>
+getMomentumUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Bool
+getMomentumUnsafe self = liftDOM ((((js_getMomentum (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-momentum WheelEventInit.momentum specification>
+getMomentumUnchecked :: (MonadDOM m) => WheelEventInit -> m Bool
+getMomentumUnchecked self = liftDOM ((pFromJSVal <$> (js_getMomentum (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Window.hs b/src/GHCJS/DOM/JSFFI/Generated/Window.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Window.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Window.hs
@@ -1,1369 +1,603 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.Window
-       (js_decodeURI, decodeURI, decodeURI_, js_decodeURIComponent,
-        decodeURIComponent, decodeURIComponent_, js_encodeURI, encodeURI,
-        encodeURI_, js_encodeURIComponent, encodeURIComponent,
-        encodeURIComponent_, js_fetch, fetch, fetch_, js_openDatabase,
-        openDatabase, openDatabase_, openDatabaseUnsafe,
-        openDatabaseUnchecked, js_close, close, js_stop, stop, js_focus,
-        focus, js_blur, blur, js_open, open, open_, openUnsafe,
-        openUnchecked, js_alertNoMessage, alertNoMessage, js_alert, alert,
-        js_confirm, confirm, confirm_, js_prompt, prompt, prompt_,
-        promptUnsafe, promptUnchecked, js_print, print,
-        js_requestAnimationFrame, requestAnimationFrame,
-        requestAnimationFrame_, js_cancelAnimationFrame,
-        cancelAnimationFrame, js_postMessage, postMessage,
-        js_captureEvents, captureEvents, js_releaseEvents, releaseEvents,
-        js_getComputedStyle, getComputedStyle, getComputedStyle_,
-        js_matchMedia, matchMedia, matchMedia_, js_moveTo, moveTo,
-        js_moveBy, moveBy, js_resizeTo, resizeTo, js_resizeBy, resizeBy,
-        js_scrollOpt, scrollOpt, js_scroll, scroll, js_scrollToOpt,
-        scrollToOpt, js_scrollTo, scrollTo, js_scrollByOpt, scrollByOpt,
-        js_scrollBy, scrollBy, js_getSelection, getSelection,
-        getSelection_, getSelectionUnsafe, getSelectionUnchecked, js_find,
-        find, find_, js_webkitRequestAnimationFrame,
-        webkitRequestAnimationFrame, webkitRequestAnimationFrame_,
-        js_webkitCancelAnimationFrame, webkitCancelAnimationFrame,
-        js_webkitCancelRequestAnimationFrame,
-        webkitCancelRequestAnimationFrame, js_getMatchedCSSRules,
-        getMatchedCSSRules, getMatchedCSSRules_, js_showModalDialog,
-        showModalDialog, showModalDialog_,
-        js_webkitConvertPointFromPageToNode,
-        webkitConvertPointFromPageToNode,
-        webkitConvertPointFromPageToNode_,
-        js_webkitConvertPointFromNodeToPage,
-        webkitConvertPointFromNodeToPage,
-        webkitConvertPointFromNodeToPage_,
-        js_collectMatchingElementsInFlatTree,
-        collectMatchingElementsInFlatTree,
-        collectMatchingElementsInFlatTree_, js_matchingElementInFlatTree,
-        matchingElementInFlatTree, matchingElementInFlatTree_,
-        matchingElementInFlatTreeUnsafe,
-        matchingElementInFlatTreeUnchecked, js_getIndexedDB, getIndexedDB,
-        js_getWebkitIndexedDB, getWebkitIndexedDB, js_getWebkitStorageInfo,
-        getWebkitStorageInfo, js_getSpeechSynthesis, getSpeechSynthesis,
-        js_getWindow, getWindow, js_getSelf, getSelf, js_getDocument,
-        getDocument, js_setName, setName, js_getName, getName,
-        js_getLocation, getLocation, js_getHistory, getHistory,
-        js_getCustomElements, getCustomElements, js_getLocationbar,
-        getLocationbar, js_getMenubar, getMenubar, js_getPersonalbar,
-        getPersonalbar, js_getScrollbars, getScrollbars, js_getStatusbar,
-        getStatusbar, js_getToolbar, getToolbar, js_setStatus, setStatus,
-        js_getStatus, getStatus, js_getClosed, getClosed, js_getFrames,
-        getFrames, js_getLength, getLength, js_getTop, getTop,
-        getTopUnsafe, getTopUnchecked, js_getOpener, getOpener,
-        getOpenerUnsafe, getOpenerUnchecked, js_getParent, getParent,
-        getParentUnsafe, getParentUnchecked, js_getFrameElement,
-        getFrameElement, getFrameElementUnsafe, getFrameElementUnchecked,
-        js_getNavigator, getNavigator, js_getApplicationCache,
-        getApplicationCache, js_getSessionStorage, getSessionStorage,
-        js_getLocalStorage, getLocalStorage, js_getScreen, getScreen,
-        js_getInnerHeight, getInnerHeight, js_getInnerWidth, getInnerWidth,
-        js_getScrollX, getScrollX, js_getPageXOffset, getPageXOffset,
-        js_getScrollY, getScrollY, js_getPageYOffset, getPageYOffset,
-        js_getScreenX, getScreenX, js_getScreenY, getScreenY,
-        js_getOuterWidth, getOuterWidth, js_getOuterHeight, getOuterHeight,
-        js_getDevicePixelRatio, getDevicePixelRatio, js_getOrientation,
-        getOrientation, js_getEvent, getEvent, js_setDefaultStatus,
-        setDefaultStatus, js_getDefaultStatus, getDefaultStatus,
-        js_setDefaultstatus, setDefaultstatus, js_getDefaultstatus,
-        getDefaultstatus, js_getOffscreenBuffering, getOffscreenBuffering,
-        js_getScreenLeft, getScreenLeft, js_getScreenTop, getScreenTop,
-        js_getClientInformation, getClientInformation, js_getStyleMedia,
-        getStyleMedia, gestureChange, gestureEnd, gestureStart,
-        deviceMotion, deviceOrientation, webKitDeviceProximity,
-        webKitAnimationEnd, webKitAnimationIteration, webKitAnimationStart,
-        webKitTransitionEnd, Window(..), gTypeWindow)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"decodeURI\"]($2); })"
-        js_decodeURI :: Window -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURI Mozilla Window.decodeURI documentation> 
-decodeURI ::
-          (MonadIO m, ToJSString uri, FromJSString result) =>
-            Window -> uri -> m result
-decodeURI self uri
-  = liftIO (fromJSString <$> (js_decodeURI self (toJSString uri)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURI Mozilla Window.decodeURI documentation> 
-decodeURI_ :: (MonadIO m, ToJSString uri) => Window -> uri -> m ()
-decodeURI_ self uri
-  = liftIO (void (js_decodeURI self (toJSString uri)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"decodeURIComponent\"]($2); })"
-        js_decodeURIComponent :: Window -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURIComponent Mozilla Window.decodeURIComponent documentation> 
-decodeURIComponent ::
-                   (MonadIO m, ToJSString uri, FromJSString result) =>
-                     Window -> uri -> m result
-decodeURIComponent self uri
-  = liftIO
-      (fromJSString <$> (js_decodeURIComponent self (toJSString uri)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURIComponent Mozilla Window.decodeURIComponent documentation> 
-decodeURIComponent_ ::
-                    (MonadIO m, ToJSString uri) => Window -> uri -> m ()
-decodeURIComponent_ self uri
-  = liftIO (void (js_decodeURIComponent self (toJSString uri)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"encodeURI\"]($2); })"
-        js_encodeURI :: Window -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURI Mozilla Window.encodeURI documentation> 
-encodeURI ::
-          (MonadIO m, ToJSString uri, FromJSString result) =>
-            Window -> uri -> m result
-encodeURI self uri
-  = liftIO (fromJSString <$> (js_encodeURI self (toJSString uri)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURI Mozilla Window.encodeURI documentation> 
-encodeURI_ :: (MonadIO m, ToJSString uri) => Window -> uri -> m ()
-encodeURI_ self uri
-  = liftIO (void (js_encodeURI self (toJSString uri)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"encodeURIComponent\"]($2); })"
-        js_encodeURIComponent :: Window -> JSString -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURIComponent Mozilla Window.encodeURIComponent documentation> 
-encodeURIComponent ::
-                   (MonadIO m, ToJSString uri, FromJSString result) =>
-                     Window -> uri -> m result
-encodeURIComponent self uri
-  = liftIO
-      (fromJSString <$> (js_encodeURIComponent self (toJSString uri)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURIComponent Mozilla Window.encodeURIComponent documentation> 
-encodeURIComponent_ ::
-                    (MonadIO m, ToJSString uri) => Window -> uri -> m ()
-encodeURIComponent_ self uri
-  = liftIO (void (js_encodeURIComponent self (toJSString uri)))
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"fetch\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_fetch ::
-        Window -> JSVal -> Optional RequestInit -> IO (JSVal, Response)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.fetch Mozilla Window.fetch documentation> 
-fetch ::
-      (MonadIO m, ToJSVal input) =>
-        Window -> input -> Maybe RequestInit -> m Response
-fetch self input init
-  = liftIO
-      ((toJSVal input >>= \ input' -> js_fetch self input'
-          (maybeToOptional init))
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.fetch Mozilla Window.fetch documentation> 
-fetch_ ::
-       (MonadIO m, ToJSVal input) =>
-         Window -> input -> Maybe RequestInit -> m ()
-fetch_ self input init
-  = liftIO
-      (void
-         (toJSVal input >>= \ input' -> js_fetch self input'
-            (maybeToOptional init)))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"openDatabase\"]($2, $3, $4,\n$5, $6); })" js_openDatabase ::
-        Window ->
-          JSString ->
-            JSString ->
-              JSString ->
-                Word -> Optional DatabaseCallback -> IO (Nullable Database)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabase ::
-             (MonadIO m, ToJSString name, ToJSString version,
-              ToJSString displayName) =>
-               Window ->
-                 name ->
-                   version ->
-                     displayName -> Word -> Maybe DatabaseCallback -> m (Maybe Database)
-openDatabase self name version displayName estimatedSize
-  creationCallback
-  = liftIO
-      (nullableToMaybe <$>
-         (js_openDatabase self (toJSString name) (toJSString version)
-            (toJSString displayName)
-            estimatedSize
-            (maybeToOptional creationCallback)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabase_ ::
-              (MonadIO m, ToJSString name, ToJSString version,
-               ToJSString displayName) =>
-                Window ->
-                  name ->
-                    version -> displayName -> Word -> Maybe DatabaseCallback -> m ()
-openDatabase_ self name version displayName estimatedSize
-  creationCallback
-  = liftIO
-      (void
-         (js_openDatabase self (toJSString name) (toJSString version)
-            (toJSString displayName)
-            estimatedSize
-            (maybeToOptional creationCallback)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabaseUnsafe ::
-                   (MonadIO m, ToJSString name, ToJSString version,
-                    ToJSString displayName, HasCallStack) =>
-                     Window ->
-                       name ->
-                         version ->
-                           displayName -> Word -> Maybe DatabaseCallback -> m Database
-openDatabaseUnsafe self name version displayName estimatedSize
-  creationCallback
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_openDatabase self (toJSString name) (toJSString version)
-             (toJSString displayName)
-             estimatedSize
-             (maybeToOptional creationCallback)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabaseUnchecked ::
-                      (MonadIO m, ToJSString name, ToJSString version,
-                       ToJSString displayName) =>
-                        Window ->
-                          name ->
-                            version ->
-                              displayName -> Word -> Maybe DatabaseCallback -> m Database
-openDatabaseUnchecked self name version displayName estimatedSize
-  creationCallback
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_openDatabase self (toJSString name) (toJSString version)
-            (toJSString displayName)
-            estimatedSize
-            (maybeToOptional creationCallback)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.close Mozilla Window.close documentation> 
-close :: (MonadIO m) => Window -> m ()
-close self = liftIO (js_close self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
-        Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.stop Mozilla Window.stop documentation> 
-stop :: (MonadIO m) => Window -> m ()
-stop self = liftIO (js_stop self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"focus\"](); })" js_focus ::
-        Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.focus Mozilla Window.focus documentation> 
-focus :: (MonadIO m) => Window -> m ()
-focus self = liftIO (js_focus self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"blur\"](); })" js_blur ::
-        Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.blur Mozilla Window.blur documentation> 
-blur :: (MonadIO m) => Window -> m ()
-blur self = liftIO (js_blur self)
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"open\"]($2, $3, $4); })" js_open
-        ::
-        Window ->
-          Optional JSString ->
-            Optional JSString -> Optional JSString -> IO (Nullable Window)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
-open ::
-     (MonadIO m, ToJSString url, ToJSString target,
-      ToJSString features) =>
-       Window ->
-         Maybe url -> Maybe target -> Maybe features -> m (Maybe Window)
-open self url target features
-  = liftIO
-      (nullableToMaybe <$>
-         (js_open self (toOptionalJSString url) (toOptionalJSString target)
-            (toOptionalJSString features)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
-open_ ::
-      (MonadIO m, ToJSString url, ToJSString target,
-       ToJSString features) =>
-        Window -> Maybe url -> Maybe target -> Maybe features -> m ()
-open_ self url target features
-  = liftIO
-      (void
-         (js_open self (toOptionalJSString url) (toOptionalJSString target)
-            (toOptionalJSString features)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
-openUnsafe ::
-           (MonadIO m, ToJSString url, ToJSString target, ToJSString features,
-            HasCallStack) =>
-             Window -> Maybe url -> Maybe target -> Maybe features -> m Window
-openUnsafe self url target features
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_open self (toOptionalJSString url) (toOptionalJSString target)
-             (toOptionalJSString features)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
-openUnchecked ::
-              (MonadIO m, ToJSString url, ToJSString target,
-               ToJSString features) =>
-                Window -> Maybe url -> Maybe target -> Maybe features -> m Window
-openUnchecked self url target features
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_open self (toOptionalJSString url) (toOptionalJSString target)
-            (toOptionalJSString features)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"alert\"](); })"
-        js_alertNoMessage :: Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.alert Mozilla Window.alert documentation> 
-alertNoMessage :: (MonadIO m) => Window -> m ()
-alertNoMessage self = liftIO (js_alertNoMessage self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"alert\"]($2); })" js_alert ::
-        Window -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.alert Mozilla Window.alert documentation> 
-alert ::
-      (MonadIO m, ToJSString message) => Window -> message -> m ()
-alert self message = liftIO (js_alert self (toJSString message))
- 
-foreign import javascript unsafe "(($1, $2) => { return ($1[\"confirm\"]($2) ? 1 : 0); })"
-        js_confirm :: Window -> Optional JSString -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
-confirm ::
-        (MonadIO m, ToJSString message) =>
-          Window -> Maybe message -> m Bool
-confirm self message
-  = liftIO (js_confirm self (toOptionalJSString message))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
-confirm_ ::
-         (MonadIO m, ToJSString message) => Window -> Maybe message -> m ()
-confirm_ self message
-  = liftIO (void (js_confirm self (toOptionalJSString message)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"prompt\"]($2, $3); })" js_prompt
-        ::
-        Window ->
-          Optional JSString -> Optional JSString -> IO (Nullable JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-prompt ::
-       (MonadIO m, ToJSString message, ToJSString defaultValue,
-        FromJSString result) =>
-         Window -> Maybe message -> Maybe defaultValue -> m (Maybe result)
-prompt self message defaultValue
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_prompt self (toOptionalJSString message)
-            (toOptionalJSString defaultValue)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-prompt_ ::
-        (MonadIO m, ToJSString message, ToJSString defaultValue) =>
-          Window -> Maybe message -> Maybe defaultValue -> m ()
-prompt_ self message defaultValue
-  = liftIO
-      (void
-         (js_prompt self (toOptionalJSString message)
-            (toOptionalJSString defaultValue)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-promptUnsafe ::
-             (MonadIO m, ToJSString message, ToJSString defaultValue,
-              HasCallStack, FromJSString result) =>
-               Window -> Maybe message -> Maybe defaultValue -> m result
-promptUnsafe self message defaultValue
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_prompt self (toOptionalJSString message)
-             (toOptionalJSString defaultValue)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-promptUnchecked ::
-                (MonadIO m, ToJSString message, ToJSString defaultValue,
-                 FromJSString result) =>
-                  Window -> Maybe message -> Maybe defaultValue -> m result
-promptUnchecked self message defaultValue
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_prompt self (toOptionalJSString message)
-            (toOptionalJSString defaultValue)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"print\"](); })" js_print ::
-        Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.print Mozilla Window.print documentation> 
-print :: (MonadIO m) => Window -> m ()
-print self = liftIO (js_print self)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"requestAnimationFrame\"]($2); })" js_requestAnimationFrame ::
-        Window -> RequestAnimationFrameCallback -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
-requestAnimationFrame ::
-                      (MonadIO m) => Window -> RequestAnimationFrameCallback -> m Int
-requestAnimationFrame self callback
-  = liftIO (js_requestAnimationFrame self callback)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
-requestAnimationFrame_ ::
-                       (MonadIO m) => Window -> RequestAnimationFrameCallback -> m ()
-requestAnimationFrame_ self callback
-  = liftIO (void (js_requestAnimationFrame self callback))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"cancelAnimationFrame\"]($2); })"
-        js_cancelAnimationFrame :: Window -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.cancelAnimationFrame Mozilla Window.cancelAnimationFrame documentation> 
-cancelAnimationFrame :: (MonadIO m) => Window -> Int -> m ()
-cancelAnimationFrame self handle
-  = liftIO (js_cancelAnimationFrame self handle)
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"postMessage\"]($2, $3, $4); })"
-        js_postMessage :: Window -> JSVal -> JSString -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage Mozilla Window.postMessage documentation> 
-postMessage ::
-            (MonadIO m, ToJSVal message, ToJSString targetOrigin,
-             IsGObject transfer) =>
-              Window -> message -> targetOrigin -> [transfer] -> m ()
-postMessage self message targetOrigin transfer
-  = liftIO
-      (toJSVal transfer >>=
-         \ transfer' ->
-           toJSVal message >>= \ message' -> js_postMessage self message'
-             (toJSString targetOrigin)
-             transfer')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"captureEvents\"](); })"
-        js_captureEvents :: Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.captureEvents Mozilla Window.captureEvents documentation> 
-captureEvents :: (MonadIO m) => Window -> m ()
-captureEvents self = liftIO (js_captureEvents self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"releaseEvents\"](); })"
-        js_releaseEvents :: Window -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.releaseEvents Mozilla Window.releaseEvents documentation> 
-releaseEvents :: (MonadIO m) => Window -> m ()
-releaseEvents self = liftIO (js_releaseEvents self)
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getComputedStyle\"]($2, $3); })"
-        js_getComputedStyle ::
-        Window -> Element -> Optional JSString -> IO CSSStyleDeclaration
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
-getComputedStyle ::
-                 (MonadIO m, IsElement element, ToJSString pseudoElement) =>
-                   Window -> element -> Maybe pseudoElement -> m CSSStyleDeclaration
-getComputedStyle self element pseudoElement
-  = liftIO
-      (js_getComputedStyle self (toElement element)
-         (toOptionalJSString pseudoElement))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
-getComputedStyle_ ::
-                  (MonadIO m, IsElement element, ToJSString pseudoElement) =>
-                    Window -> element -> Maybe pseudoElement -> m ()
-getComputedStyle_ self element pseudoElement
-  = liftIO
-      (void
-         (js_getComputedStyle self (toElement element)
-            (toOptionalJSString pseudoElement)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"matchMedia\"]($2); })"
-        js_matchMedia :: Window -> JSString -> IO MediaQueryList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
-matchMedia ::
-           (MonadIO m, ToJSString query) =>
-             Window -> query -> m MediaQueryList
-matchMedia self query
-  = liftIO (js_matchMedia self (toJSString query))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
-matchMedia_ ::
-            (MonadIO m, ToJSString query) => Window -> query -> m ()
-matchMedia_ self query
-  = liftIO (void (js_matchMedia self (toJSString query)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveTo\"]($2, $3); })" js_moveTo
-        :: Window -> Optional Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveTo Mozilla Window.moveTo documentation> 
-moveTo ::
-       (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
-moveTo self x y
-  = liftIO (js_moveTo self (maybeToOptional x) (maybeToOptional y))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveBy\"]($2, $3); })" js_moveBy
-        :: Window -> Optional Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveBy Mozilla Window.moveBy documentation> 
-moveBy ::
-       (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
-moveBy self x y
-  = liftIO (js_moveBy self (maybeToOptional x) (maybeToOptional y))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"resizeTo\"]($2, $3); })"
-        js_resizeTo :: Window -> Optional Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeTo Mozilla Window.resizeTo documentation> 
-resizeTo ::
-         (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
-resizeTo self width height
-  = liftIO
-      (js_resizeTo self (maybeToOptional width) (maybeToOptional height))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"resizeBy\"]($2, $3); })"
-        js_resizeBy :: Window -> Optional Float -> Optional Float -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeBy Mozilla Window.resizeBy documentation> 
-resizeBy ::
-         (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
-resizeBy self x y
-  = liftIO (js_resizeBy self (maybeToOptional x) (maybeToOptional y))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"scroll\"]($2); })" js_scrollOpt
-        :: Window -> Optional ScrollToOptions -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
-scrollOpt :: (MonadIO m) => Window -> Maybe ScrollToOptions -> m ()
-scrollOpt self options
-  = liftIO (js_scrollOpt self (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scroll\"]($2, $3); })" js_scroll
-        :: Window -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
-scroll :: (MonadIO m) => Window -> Double -> Double -> m ()
-scroll self x y = liftIO (js_scroll self x y)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollTo\"]($2); })"
-        js_scrollToOpt :: Window -> Optional ScrollToOptions -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
-scrollToOpt ::
-            (MonadIO m) => Window -> Maybe ScrollToOptions -> m ()
-scrollToOpt self options
-  = liftIO (js_scrollToOpt self (maybeToOptional options))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollTo\"]($2, $3); })"
-        js_scrollTo :: Window -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
-scrollTo :: (MonadIO m) => Window -> Double -> Double -> m ()
-scrollTo self x y = liftIO (js_scrollTo self x y)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollBy\"]($2); })"
-        js_scrollByOpt :: Window -> Optional ScrollToOptions -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
-scrollByOpt ::
-            (MonadIO m) => Window -> Maybe ScrollToOptions -> m ()
-scrollByOpt self option
-  = liftIO (js_scrollByOpt self (maybeToOptional option))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollBy\"]($2, $3); })"
-        js_scrollBy :: Window -> Double -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
-scrollBy :: (MonadIO m) => Window -> Double -> Double -> m ()
-scrollBy self x y = liftIO (js_scrollBy self x y)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getSelection\"](); })"
-        js_getSelection :: Window -> IO (Nullable Selection)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelection :: (MonadIO m) => Window -> m (Maybe Selection)
-getSelection self
-  = liftIO (nullableToMaybe <$> (js_getSelection self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelection_ :: (MonadIO m) => Window -> m ()
-getSelection_ self = liftIO (void (js_getSelection self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelectionUnsafe ::
-                   (MonadIO m, HasCallStack) => Window -> m Selection
-getSelectionUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getSelection self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelectionUnchecked :: (MonadIO m) => Window -> m Selection
-getSelectionUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getSelection self))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return ($1[\"find\"]($2, $3, $4, $5, $6,\n$7, $8) ? 1 : 0); })" js_find ::
-        Window ->
-          Optional JSString ->
-            Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.find Mozilla Window.find documentation> 
-find ::
-     (MonadIO m, ToJSString string) =>
-       Window ->
-         Maybe string ->
-           Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m Bool
-find self string caseSensitive backwards wrap wholeWord
-  searchInFrames showDialog
-  = liftIO
-      (js_find self (toOptionalJSString string) caseSensitive backwards
-         wrap
-         wholeWord
-         searchInFrames
-         showDialog)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.find Mozilla Window.find documentation> 
-find_ ::
-      (MonadIO m, ToJSString string) =>
-        Window ->
-          Maybe string ->
-            Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()
-find_ self string caseSensitive backwards wrap wholeWord
-  searchInFrames showDialog
-  = liftIO
-      (void
-         (js_find self (toOptionalJSString string) caseSensitive backwards
-            wrap
-            wholeWord
-            searchInFrames
-            showDialog))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"webkitRequestAnimationFrame\"]($2); })"
-        js_webkitRequestAnimationFrame ::
-        Window -> RequestAnimationFrameCallback -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
-webkitRequestAnimationFrame ::
-                            (MonadIO m) => Window -> RequestAnimationFrameCallback -> m Int
-webkitRequestAnimationFrame self callback
-  = liftIO (js_webkitRequestAnimationFrame self callback)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
-webkitRequestAnimationFrame_ ::
-                             (MonadIO m) => Window -> RequestAnimationFrameCallback -> m ()
-webkitRequestAnimationFrame_ self callback
-  = liftIO (void (js_webkitRequestAnimationFrame self callback))
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"webkitCancelAnimationFrame\"]($2); })"
-        js_webkitCancelAnimationFrame :: Window -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelAnimationFrame Mozilla Window.webkitCancelAnimationFrame documentation> 
-webkitCancelAnimationFrame :: (MonadIO m) => Window -> Int -> m ()
-webkitCancelAnimationFrame self id
-  = liftIO (js_webkitCancelAnimationFrame self id)
- 
-foreign import javascript unsafe
-        "(($1, $2) => { return $1[\"webkitCancelRequestAnimationFrame\"]($2); })"
-        js_webkitCancelRequestAnimationFrame :: Window -> Int -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelRequestAnimationFrame Mozilla Window.webkitCancelRequestAnimationFrame documentation> 
-webkitCancelRequestAnimationFrame ::
-                                  (MonadIO m) => Window -> Int -> m ()
-webkitCancelRequestAnimationFrame self id
-  = liftIO (js_webkitCancelRequestAnimationFrame self id)
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"getMatchedCSSRules\"]($2, $3); })" js_getMatchedCSSRules ::
-        Window -> Optional Element -> Optional JSString -> IO CSSRuleList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
-getMatchedCSSRules ::
-                   (MonadIO m, IsElement element, ToJSString pseudoElement) =>
-                     Window -> Maybe element -> Maybe pseudoElement -> m CSSRuleList
-getMatchedCSSRules self element pseudoElement
-  = liftIO
-      (js_getMatchedCSSRules self
-         (maybeToOptional (fmap toElement element))
-         (toOptionalJSString pseudoElement))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
-getMatchedCSSRules_ ::
-                    (MonadIO m, IsElement element, ToJSString pseudoElement) =>
-                      Window -> Maybe element -> Maybe pseudoElement -> m ()
-getMatchedCSSRules_ self element pseudoElement
-  = liftIO
-      (void
-         (js_getMatchedCSSRules self
-            (maybeToOptional (fmap toElement element))
-            (toOptionalJSString pseudoElement)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3, $4) => { return $1[\"showModalDialog\"]($2, $3,\n$4); })" js_showModalDialog ::
-        Window ->
-          JSString -> Optional JSVal -> Optional JSString -> IO JSVal
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
-showModalDialog ::
-                (MonadIO m, ToJSString url, ToJSVal dialogArgs,
-                 ToJSString featureArgs) =>
-                  Window -> url -> Maybe dialogArgs -> Maybe featureArgs -> m JSVal
-showModalDialog self url dialogArgs featureArgs
-  = liftIO
-      (mapM toJSVal dialogArgs >>=
-         \ dialogArgs' ->
-           js_showModalDialog self (toJSString url)
-             (maybeToOptional dialogArgs')
-         (toOptionalJSString featureArgs))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
-showModalDialog_ ::
-                 (MonadIO m, ToJSString url, ToJSVal dialogArgs,
-                  ToJSString featureArgs) =>
-                   Window -> url -> Maybe dialogArgs -> Maybe featureArgs -> m ()
-showModalDialog_ self url dialogArgs featureArgs
-  = liftIO
-      (void
-         (mapM toJSVal dialogArgs >>=
-            \ dialogArgs' ->
-              js_showModalDialog self (toJSString url)
-                (maybeToOptional dialogArgs')
-            (toOptionalJSString featureArgs)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"webkitConvertPointFromPageToNode\"]($2,\n$3); })"
-        js_webkitConvertPointFromPageToNode ::
-        Window -> Optional Node -> Optional WebKitPoint -> IO WebKitPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
-webkitConvertPointFromPageToNode ::
-                                 (MonadIO m, IsNode node) =>
-                                   Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
-webkitConvertPointFromPageToNode self node p
-  = liftIO
-      (js_webkitConvertPointFromPageToNode self
-         (maybeToOptional (fmap toNode node))
-         (maybeToOptional p))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
-webkitConvertPointFromPageToNode_ ::
-                                  (MonadIO m, IsNode node) =>
-                                    Window -> Maybe node -> Maybe WebKitPoint -> m ()
-webkitConvertPointFromPageToNode_ self node p
-  = liftIO
-      (void
-         (js_webkitConvertPointFromPageToNode self
-            (maybeToOptional (fmap toNode node))
-            (maybeToOptional p)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"webkitConvertPointFromNodeToPage\"]($2,\n$3); })"
-        js_webkitConvertPointFromNodeToPage ::
-        Window -> Optional Node -> Optional WebKitPoint -> IO WebKitPoint
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
-webkitConvertPointFromNodeToPage ::
-                                 (MonadIO m, IsNode node) =>
-                                   Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
-webkitConvertPointFromNodeToPage self node p
-  = liftIO
-      (js_webkitConvertPointFromNodeToPage self
-         (maybeToOptional (fmap toNode node))
-         (maybeToOptional p))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
-webkitConvertPointFromNodeToPage_ ::
-                                  (MonadIO m, IsNode node) =>
-                                    Window -> Maybe node -> Maybe WebKitPoint -> m ()
-webkitConvertPointFromNodeToPage_ self node p
-  = liftIO
-      (void
-         (js_webkitConvertPointFromNodeToPage self
-            (maybeToOptional (fmap toNode node))
-            (maybeToOptional p)))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"collectMatchingElementsInFlatTree\"]($2,\n$3); })"
-        js_collectMatchingElementsInFlatTree ::
-        Window -> Node -> JSString -> IO NodeList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.collectMatchingElementsInFlatTree Mozilla Window.collectMatchingElementsInFlatTree documentation> 
-collectMatchingElementsInFlatTree ::
-                                  (MonadIO m, IsNode scope, ToJSString selectors) =>
-                                    Window -> scope -> selectors -> m NodeList
-collectMatchingElementsInFlatTree self scope selectors
-  = liftIO
-      (js_collectMatchingElementsInFlatTree self (toNode scope)
-         (toJSString selectors))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.collectMatchingElementsInFlatTree Mozilla Window.collectMatchingElementsInFlatTree documentation> 
-collectMatchingElementsInFlatTree_ ::
-                                   (MonadIO m, IsNode scope, ToJSString selectors) =>
-                                     Window -> scope -> selectors -> m ()
-collectMatchingElementsInFlatTree_ self scope selectors
-  = liftIO
-      (void
-         (js_collectMatchingElementsInFlatTree self (toNode scope)
-            (toJSString selectors)))
- 
-foreign import javascript safe
-        "(($1, $2, $3) => { return $1[\"matchingElementInFlatTree\"]($2,\n$3); })"
-        js_matchingElementInFlatTree ::
-        Window -> Node -> JSString -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTree ::
-                          (MonadIO m, IsNode scope, ToJSString selectors) =>
-                            Window -> scope -> selectors -> m (Maybe Element)
-matchingElementInFlatTree self scope selectors
-  = liftIO
-      (nullableToMaybe <$>
-         (js_matchingElementInFlatTree self (toNode scope)
-            (toJSString selectors)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTree_ ::
-                           (MonadIO m, IsNode scope, ToJSString selectors) =>
-                             Window -> scope -> selectors -> m ()
-matchingElementInFlatTree_ self scope selectors
-  = liftIO
-      (void
-         (js_matchingElementInFlatTree self (toNode scope)
-            (toJSString selectors)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTreeUnsafe ::
-                                (MonadIO m, IsNode scope, ToJSString selectors, HasCallStack) =>
-                                  Window -> scope -> selectors -> m Element
-matchingElementInFlatTreeUnsafe self scope selectors
-  = liftIO
-      ((nullableToMaybe <$>
-          (js_matchingElementInFlatTree self (toNode scope)
-             (toJSString selectors)))
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTreeUnchecked ::
-                                   (MonadIO m, IsNode scope, ToJSString selectors) =>
-                                     Window -> scope -> selectors -> m Element
-matchingElementInFlatTreeUnchecked self scope selectors
-  = liftIO
-      (fromJust . nullableToMaybe <$>
-         (js_matchingElementInFlatTree self (toNode scope)
-            (toJSString selectors)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"indexedDB\"]; })"
-        js_getIndexedDB :: Window -> IO IDBFactory
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.indexedDB Mozilla Window.indexedDB documentation> 
-getIndexedDB :: (MonadIO m) => Window -> m IDBFactory
-getIndexedDB self = liftIO (js_getIndexedDB self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitIndexedDB\"]; })"
-        js_getWebkitIndexedDB :: Window -> IO IDBFactory
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitIndexedDB Mozilla Window.webkitIndexedDB documentation> 
-getWebkitIndexedDB :: (MonadIO m) => Window -> m IDBFactory
-getWebkitIndexedDB self = liftIO (js_getWebkitIndexedDB self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitStorageInfo\"]; })"
-        js_getWebkitStorageInfo :: Window -> IO StorageInfo
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitStorageInfo Mozilla Window.webkitStorageInfo documentation> 
-getWebkitStorageInfo :: (MonadIO m) => Window -> m StorageInfo
-getWebkitStorageInfo self = liftIO (js_getWebkitStorageInfo self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"speechSynthesis\"]; })"
-        js_getSpeechSynthesis :: Window -> IO SpeechSynthesis
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.speechSynthesis Mozilla Window.speechSynthesis documentation> 
-getSpeechSynthesis :: (MonadIO m) => Window -> m SpeechSynthesis
-getSpeechSynthesis self = liftIO (js_getSpeechSynthesis self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"window\"]; })" js_getWindow ::
-        Window -> IO Window
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.window Mozilla Window.window documentation> 
-getWindow :: (MonadIO m) => Window -> m Window
-getWindow self = liftIO (js_getWindow self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"self\"]; })" js_getSelf ::
-        Window -> IO Window
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.self Mozilla Window.self documentation> 
-getSelf :: (MonadIO m) => Window -> m Window
-getSelf self = liftIO (js_getSelf self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"document\"]; })" js_getDocument
-        :: Window -> IO Document
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.document Mozilla Window.document documentation> 
-getDocument :: (MonadIO m) => Window -> m Document
-getDocument self = liftIO (js_getDocument self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
-        Window -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
-setName :: (MonadIO m, ToJSString val) => Window -> val -> m ()
-setName self val = liftIO (js_setName self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        Window -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
-getName :: (MonadIO m, FromJSString result) => Window -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
-        :: Window -> IO Location
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
-getLocation :: (MonadIO m) => Window -> m Location
-getLocation self = liftIO (js_getLocation self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"history\"]; })" js_getHistory ::
-        Window -> IO History
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.history Mozilla Window.history documentation> 
-getHistory :: (MonadIO m) => Window -> m History
-getHistory self = liftIO (js_getHistory self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"customElements\"]; })"
-        js_getCustomElements :: Window -> IO CustomElementRegistry
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.customElements Mozilla Window.customElements documentation> 
-getCustomElements ::
-                  (MonadIO m) => Window -> m CustomElementRegistry
-getCustomElements self = liftIO (js_getCustomElements self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"locationbar\"]; })"
-        js_getLocationbar :: Window -> IO BarProp
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.locationbar Mozilla Window.locationbar documentation> 
-getLocationbar :: (MonadIO m) => Window -> m BarProp
-getLocationbar self = liftIO (js_getLocationbar self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"menubar\"]; })" js_getMenubar ::
-        Window -> IO BarProp
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.menubar Mozilla Window.menubar documentation> 
-getMenubar :: (MonadIO m) => Window -> m BarProp
-getMenubar self = liftIO (js_getMenubar self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"personalbar\"]; })"
-        js_getPersonalbar :: Window -> IO BarProp
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.personalbar Mozilla Window.personalbar documentation> 
-getPersonalbar :: (MonadIO m) => Window -> m BarProp
-getPersonalbar self = liftIO (js_getPersonalbar self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollbars\"]; })"
-        js_getScrollbars :: Window -> IO BarProp
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollbars Mozilla Window.scrollbars documentation> 
-getScrollbars :: (MonadIO m) => Window -> m BarProp
-getScrollbars self = liftIO (js_getScrollbars self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"statusbar\"]; })"
-        js_getStatusbar :: Window -> IO BarProp
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.statusbar Mozilla Window.statusbar documentation> 
-getStatusbar :: (MonadIO m) => Window -> m BarProp
-getStatusbar self = liftIO (js_getStatusbar self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toolbar\"]; })" js_getToolbar ::
-        Window -> IO BarProp
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.toolbar Mozilla Window.toolbar documentation> 
-getToolbar :: (MonadIO m) => Window -> m BarProp
-getToolbar self = liftIO (js_getToolbar self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"status\"] = $2; })"
-        js_setStatus :: Window -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
-setStatus :: (MonadIO m, ToJSString val) => Window -> val -> m ()
-setStatus self val = liftIO (js_setStatus self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
-        Window -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
-getStatus :: (MonadIO m, FromJSString result) => Window -> m result
-getStatus self = liftIO (fromJSString <$> (js_getStatus self))
- 
-foreign import javascript unsafe "(($1) => { return ($1[\"closed\"] ? 1 : 0); })"
-        js_getClosed :: Window -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.closed Mozilla Window.closed documentation> 
-getClosed :: (MonadIO m) => Window -> m Bool
-getClosed self = liftIO (js_getClosed self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"frames\"]; })" js_getFrames ::
-        Window -> IO Window
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frames Mozilla Window.frames documentation> 
-getFrames :: (MonadIO m) => Window -> m Window
-getFrames self = liftIO (js_getFrames self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
-        Window -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.length Mozilla Window.length documentation> 
-getLength :: (MonadIO m) => Window -> m Word
-getLength self = liftIO (js_getLength self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })" js_getTop ::
-        Window -> IO (Nullable Window)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
-getTop :: (MonadIO m) => Window -> m (Maybe Window)
-getTop self = liftIO (nullableToMaybe <$> (js_getTop self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
-getTopUnsafe :: (MonadIO m, HasCallStack) => Window -> m Window
-getTopUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getTop self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
-getTopUnchecked :: (MonadIO m) => Window -> m Window
-getTopUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getTop self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"opener\"]; })" js_getOpener ::
-        Window -> IO (Nullable Window)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
-getOpener :: (MonadIO m) => Window -> m (Maybe Window)
-getOpener self = liftIO (nullableToMaybe <$> (js_getOpener self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
-getOpenerUnsafe :: (MonadIO m, HasCallStack) => Window -> m Window
-getOpenerUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getOpener self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
-getOpenerUnchecked :: (MonadIO m) => Window -> m Window
-getOpenerUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getOpener self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"parent\"]; })" js_getParent ::
-        Window -> IO (Nullable Window)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
-getParent :: (MonadIO m) => Window -> m (Maybe Window)
-getParent self = liftIO (nullableToMaybe <$> (js_getParent self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
-getParentUnsafe :: (MonadIO m, HasCallStack) => Window -> m Window
-getParentUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getParent self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
-getParentUnchecked :: (MonadIO m) => Window -> m Window
-getParentUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getParent self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"frameElement\"]; })"
-        js_getFrameElement :: Window -> IO (Nullable Element)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
-getFrameElement :: (MonadIO m) => Window -> m (Maybe Element)
-getFrameElement self
-  = liftIO (nullableToMaybe <$> (js_getFrameElement self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
-getFrameElementUnsafe ::
-                      (MonadIO m, HasCallStack) => Window -> m Element
-getFrameElementUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getFrameElement self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
-getFrameElementUnchecked :: (MonadIO m) => Window -> m Element
-getFrameElementUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getFrameElement self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"navigator\"]; })"
-        js_getNavigator :: Window -> IO Navigator
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator Mozilla Window.navigator documentation> 
-getNavigator :: (MonadIO m) => Window -> m Navigator
-getNavigator self = liftIO (js_getNavigator self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"applicationCache\"]; })"
-        js_getApplicationCache :: Window -> IO ApplicationCache
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.applicationCache Mozilla Window.applicationCache documentation> 
-getApplicationCache :: (MonadIO m) => Window -> m ApplicationCache
-getApplicationCache self = liftIO (js_getApplicationCache self)
- 
-foreign import javascript safe "(($1) => { return $1[\"sessionStorage\"]; })"
-        js_getSessionStorage :: Window -> IO Storage
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
-getSessionStorage :: (MonadIO m) => Window -> m Storage
-getSessionStorage self = liftIO (js_getSessionStorage self)
- 
-foreign import javascript safe "(($1) => { return $1[\"localStorage\"]; })"
-        js_getLocalStorage :: Window -> IO Storage
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
-getLocalStorage :: (MonadIO m) => Window -> m Storage
-getLocalStorage self = liftIO (js_getLocalStorage self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screen\"]; })" js_getScreen ::
-        Window -> IO Screen
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screen Mozilla Window.screen documentation> 
-getScreen :: (MonadIO m) => Window -> m Screen
-getScreen self = liftIO (js_getScreen self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"innerHeight\"]; })"
-        js_getInnerHeight :: Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerHeight Mozilla Window.innerHeight documentation> 
-getInnerHeight :: (MonadIO m) => Window -> m Int
-getInnerHeight self = liftIO (js_getInnerHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"innerWidth\"]; })"
-        js_getInnerWidth :: Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerWidth Mozilla Window.innerWidth documentation> 
-getInnerWidth :: (MonadIO m) => Window -> m Int
-getInnerWidth self = liftIO (js_getInnerWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollX\"]; })" js_getScrollX ::
-        Window -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollX Mozilla Window.scrollX documentation> 
-getScrollX :: (MonadIO m) => Window -> m Double
-getScrollX self = liftIO (js_getScrollX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pageXOffset\"]; })"
-        js_getPageXOffset :: Window -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageXOffset Mozilla Window.pageXOffset documentation> 
-getPageXOffset :: (MonadIO m) => Window -> m Double
-getPageXOffset self = liftIO (js_getPageXOffset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"scrollY\"]; })" js_getScrollY ::
-        Window -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY Mozilla Window.scrollY documentation> 
-getScrollY :: (MonadIO m) => Window -> m Double
-getScrollY self = liftIO (js_getScrollY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pageYOffset\"]; })"
-        js_getPageYOffset :: Window -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageYOffset Mozilla Window.pageYOffset documentation> 
-getPageYOffset :: (MonadIO m) => Window -> m Double
-getPageYOffset self = liftIO (js_getPageYOffset self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })" js_getScreenX ::
-        Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenX Mozilla Window.screenX documentation> 
-getScreenX :: (MonadIO m) => Window -> m Int
-getScreenX self = liftIO (js_getScreenX self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })" js_getScreenY ::
-        Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenY Mozilla Window.screenY documentation> 
-getScreenY :: (MonadIO m) => Window -> m Int
-getScreenY self = liftIO (js_getScreenY self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"outerWidth\"]; })"
-        js_getOuterWidth :: Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerWidth Mozilla Window.outerWidth documentation> 
-getOuterWidth :: (MonadIO m) => Window -> m Int
-getOuterWidth self = liftIO (js_getOuterWidth self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"outerHeight\"]; })"
-        js_getOuterHeight :: Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerHeight Mozilla Window.outerHeight documentation> 
-getOuterHeight :: (MonadIO m) => Window -> m Int
-getOuterHeight self = liftIO (js_getOuterHeight self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"devicePixelRatio\"]; })"
-        js_getDevicePixelRatio :: Window -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.devicePixelRatio Mozilla Window.devicePixelRatio documentation> 
-getDevicePixelRatio :: (MonadIO m) => Window -> m Double
-getDevicePixelRatio self = liftIO (js_getDevicePixelRatio self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"orientation\"]; })"
-        js_getOrientation :: Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.orientation Mozilla Window.orientation documentation> 
-getOrientation :: (MonadIO m) => Window -> m Int
-getOrientation self = liftIO (js_getOrientation self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"event\"]; })" js_getEvent ::
-        Window -> IO Event
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.event Mozilla Window.event documentation> 
-getEvent :: (MonadIO m) => Window -> m Event
-getEvent self = liftIO (js_getEvent self)
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultStatus\"] = $2; })"
-        js_setDefaultStatus :: Window -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
-setDefaultStatus ::
-                 (MonadIO m, ToJSString val) => Window -> val -> m ()
-setDefaultStatus self val
-  = liftIO (js_setDefaultStatus self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"defaultStatus\"]; })"
-        js_getDefaultStatus :: Window -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
-getDefaultStatus ::
-                 (MonadIO m, FromJSString result) => Window -> m result
-getDefaultStatus self
-  = liftIO (fromJSString <$> (js_getDefaultStatus self))
- 
-foreign import javascript unsafe "(($1, $2) => { $1[\"defaultstatus\"] = $2; })"
-        js_setDefaultstatus :: Window -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
-setDefaultstatus ::
-                 (MonadIO m, ToJSString val) => Window -> val -> m ()
-setDefaultstatus self val
-  = liftIO (js_setDefaultstatus self (toJSString val))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"defaultstatus\"]; })"
-        js_getDefaultstatus :: Window -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
-getDefaultstatus ::
-                 (MonadIO m, FromJSString result) => Window -> m result
-getDefaultstatus self
-  = liftIO (fromJSString <$> (js_getDefaultstatus self))
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"offscreenBuffering\"] ? 1 : 0); })" js_getOffscreenBuffering ::
-        Window -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.offscreenBuffering Mozilla Window.offscreenBuffering documentation> 
-getOffscreenBuffering :: (MonadIO m) => Window -> m Bool
-getOffscreenBuffering self = liftIO (js_getOffscreenBuffering self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenLeft\"]; })"
-        js_getScreenLeft :: Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenLeft Mozilla Window.screenLeft documentation> 
-getScreenLeft :: (MonadIO m) => Window -> m Int
-getScreenLeft self = liftIO (js_getScreenLeft self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"screenTop\"]; })"
-        js_getScreenTop :: Window -> IO Int
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenTop Mozilla Window.screenTop documentation> 
-getScreenTop :: (MonadIO m) => Window -> m Int
-getScreenTop self = liftIO (js_getScreenTop self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clientInformation\"]; })"
-        js_getClientInformation :: Window -> IO Navigator
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.clientInformation Mozilla Window.clientInformation documentation> 
-getClientInformation :: (MonadIO m) => Window -> m Navigator
-getClientInformation self = liftIO (js_getClientInformation self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"styleMedia\"]; })"
-        js_getStyleMedia :: Window -> IO StyleMedia
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.styleMedia Mozilla Window.styleMedia documentation> 
-getStyleMedia :: (MonadIO m) => Window -> m StyleMedia
-getStyleMedia self = liftIO (js_getStyleMedia self)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongesturechange Mozilla Window.ongesturechange documentation> 
-gestureChange :: EventName Window UIEvent
-gestureChange = unsafeEventName (toJSString "gesturechange")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongestureend Mozilla Window.ongestureend documentation> 
-gestureEnd :: EventName Window UIEvent
-gestureEnd = unsafeEventName (toJSString "gestureend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongesturestart Mozilla Window.ongesturestart documentation> 
-gestureStart :: EventName Window UIEvent
-gestureStart = unsafeEventName (toJSString "gesturestart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondevicemotion Mozilla Window.ondevicemotion documentation> 
-deviceMotion :: EventName Window DeviceMotionEvent
-deviceMotion = unsafeEventName (toJSString "devicemotion")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondeviceorientation Mozilla Window.ondeviceorientation documentation> 
-deviceOrientation :: EventName Window DeviceOrientationEvent
-deviceOrientation
-  = unsafeEventName (toJSString "deviceorientation")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitdeviceproximity Mozilla Window.onwebkitdeviceproximity documentation> 
-webKitDeviceProximity :: EventName Window DeviceProximityEvent
-webKitDeviceProximity
-  = unsafeEventName (toJSString "webkitdeviceproximity")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationend Mozilla Window.onwebkitanimationend documentation> 
-webKitAnimationEnd :: EventName Window AnimationEvent
-webKitAnimationEnd
-  = unsafeEventName (toJSString "webkitanimationend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationiteration Mozilla Window.onwebkitanimationiteration documentation> 
-webKitAnimationIteration :: EventName Window AnimationEvent
-webKitAnimationIteration
-  = unsafeEventName (toJSString "webkitanimationiteration")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationstart Mozilla Window.onwebkitanimationstart documentation> 
-webKitAnimationStart :: EventName Window AnimationEvent
-webKitAnimationStart
-  = unsafeEventName (toJSString "webkitanimationstart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkittransitionend Mozilla Window.onwebkittransitionend documentation> 
-webKitTransitionEnd :: EventName Window TransitionEvent
-webKitTransitionEnd
-  = unsafeEventName (toJSString "webkittransitionend")
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Window
+       (js_alertNoMessage, js_alert, js_blur, js_cancelIdleCallback, js_captureEvents, js_close, js_confirm, js_focus, js_getComputedStyle, js_getSelection, js_matchMedia, js_moveBy, js_moveTo, js_open, js_postMessage, js_postMessageOptions, js_print, js_prompt, js_releaseEvents, js_requestIdleCallback, js_resizeBy, js_resizeTo, js_scrollOpt, js_scroll, js_scrollByOpt, js_scrollBy, js_scrollToOpt, js_scrollTo, js_stop, js_getWindow, js_getSelf, js_getDocument, js_setName, js_getName, js_getLocation, js_getHistory, js_getNavigation, js_getCustomElements, js_getLocationbar, js_getMenubar, js_getPersonalbar, js_getScrollbars, js_getStatusbar, js_getToolbar, js_setStatus, js_getStatus, js_getClosed, js_getFrames, js_getLength, js_getTop, js_setOpener, js_getOpener, js_getParent, js_getFrameElement, js_getNavigator, js_getClientInformation, js_getOriginAgentCluster, js_getCookieStore, js_getScreen, js_getVisualViewport, js_getInnerWidth, js_getInnerHeight, js_getScrollX, js_getPageXOffset, js_getScrollY, js_getPageYOffset, js_getScreenX, js_getScreenLeft, js_getScreenY, js_getScreenTop, js_getOuterWidth, js_getOuterHeight, js_getDevicePixelRatio, js_getDocumentPictureInPicture, js_getEvent, js_getExternal, js_getSpeechSynthesis, alertNoMessage, alert, blur, cancelIdleCallback, captureEvents, close, confirm, confirm_, focus, getComputedStyle, getComputedStyle_, getSelection, getSelection_, getSelectionUnsafe, getSelectionUnchecked, matchMedia, matchMedia_, moveBy, moveTo, open, open_, openUnsafe, openUnchecked, postMessage, postMessageOptions, print, prompt, prompt_, promptUnsafe, promptUnchecked, releaseEvents, requestIdleCallback, requestIdleCallback_, resizeBy, resizeTo, scrollOpt, scrollOpt_, scroll, scroll_, scrollByOpt, scrollByOpt_, scrollBy, scrollBy_, scrollToOpt, scrollToOpt_, scrollTo, scrollTo_, stop, getWindow, getSelf, getDocument, setName, getName, getLocation, getHistory, getNavigation, getCustomElements, getLocationbar, getMenubar, getPersonalbar, getScrollbars, getStatusbar, getToolbar, setStatus, getStatus, getClosed, getFrames, getLength, getTop, getTopUnsafe, getTopUnchecked, setOpener, getOpener, getParent, getParentUnsafe, getParentUnchecked, getFrameElement, getFrameElementUnsafe, getFrameElementUnchecked, getNavigator, getClientInformation, getOriginAgentCluster, getCookieStore, getScreen, getVisualViewport, getVisualViewportUnsafe, getVisualViewportUnchecked, getInnerWidth, getInnerHeight, getScrollX, getPageXOffset, getScrollY, getPageYOffset, getScreenX, getScreenLeft, getScreenY, getScreenTop, getOuterWidth, getOuterHeight, getDevicePixelRatio, getDocumentPictureInPicture, getEvent, getExternal, getSpeechSynthesis, deviceOrientation, deviceorientationabsolute, deviceMotion, clipboardchange, Window(..), gTypeWindow)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return $1[\"alert\"](); })"
+        js_alertNoMessage :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/alert MDN Window.alert documentation>
+alertNoMessage :: (MonadDOM m) => Window -> m ()
+alertNoMessage self = liftDOM (void ((js_alertNoMessage (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"alert\"]($2); })"
+        js_alert :: Window -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/alert MDN Window.alert documentation>
+alert :: (MonadDOM m, ToJSString message) => Window -> message -> m ()
+alert self message = liftDOM (void ((js_alert (self) (toJSString message))))
+
+foreign import javascript safe "(($1) => { return $1[\"blur\"](); })"
+        js_blur :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/blur MDN Window.blur documentation>
+blur :: (MonadDOM m) => Window -> m ()
+blur self = liftDOM (void ((js_blur (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"cancelIdleCallback\"]($2); })"
+        js_cancelIdleCallback :: Window -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/cancelIdleCallback MDN Window.cancelIdleCallback documentation>
+cancelIdleCallback :: (MonadDOM m) => Window -> Word -> m ()
+cancelIdleCallback self handle = liftDOM (void ((js_cancelIdleCallback (self) (handle))))
+
+foreign import javascript safe "(($1) => { return $1[\"captureEvents\"](); })"
+        js_captureEvents :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/captureEvents MDN Window.captureEvents documentation>
+captureEvents :: (MonadDOM m) => Window -> m ()
+captureEvents self = liftDOM (void ((js_captureEvents (self))))
+
+foreign import javascript safe "(($1) => { return $1[\"close\"](); })"
+        js_close :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/close MDN Window.close documentation>
+close :: (MonadDOM m) => Window -> m ()
+close self = liftDOM (void ((js_close (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"confirm\"]($2); })"
+        js_confirm :: Window -> (Optional JSString) -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Window/confirm MDN Window.confirm documentation>
+confirm :: (MonadDOM m, ToJSString message) => Window -> Maybe message -> m Bool
+confirm self message = liftDOM ((js_confirm (self) (toOptionalJSString message)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/confirm MDN Window.confirm documentation>
+confirm_ :: (MonadDOM m, ToJSString message) => Window -> Maybe message -> m ()
+confirm_ self message = liftDOM (void ((js_confirm (self) (toOptionalJSString message))))
+
+foreign import javascript safe "(($1) => { return $1[\"focus\"](); })"
+        js_focus :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/focus MDN Window.focus documentation>
+focus :: (MonadDOM m) => Window -> m ()
+focus self = liftDOM (void ((js_focus (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getComputedStyle\"]($2, $3); })"
+        js_getComputedStyle :: Window -> Element -> (Nullable JSString) -> IO CSSStyleProperties
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getComputedStyle MDN Window.getComputedStyle documentation>
+getComputedStyle :: (MonadDOM m, IsElement elt, ToJSString pseudoElt) => Window -> elt -> Maybe pseudoElt -> m CSSStyleProperties
+getComputedStyle self elt pseudoElt = liftDOM ((js_getComputedStyle (self) (Types.toElement elt) (toMaybeJSString pseudoElt)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getComputedStyle MDN Window.getComputedStyle documentation>
+getComputedStyle_ :: (MonadDOM m, IsElement elt, ToJSString pseudoElt) => Window -> elt -> Maybe pseudoElt -> m ()
+getComputedStyle_ self elt pseudoElt = liftDOM (void ((js_getComputedStyle (self) (Types.toElement elt) (toMaybeJSString pseudoElt))))
+
+foreign import javascript safe "(($1) => { return $1[\"getSelection\"](); })"
+        js_getSelection :: Window -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getSelection MDN Window.getSelection documentation>
+getSelection :: (MonadDOM m) => Window -> m (Maybe Selection)
+getSelection self = liftDOM (((js_getSelection (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getSelection MDN Window.getSelection documentation>
+getSelection_ :: (MonadDOM m) => Window -> m ()
+getSelection_ self = liftDOM (void ((js_getSelection (self))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getSelection MDN Window.getSelection documentation>
+getSelectionUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Selection
+getSelectionUnsafe self = liftDOM ((((js_getSelection (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getSelection MDN Window.getSelection documentation>
+getSelectionUnchecked :: (MonadDOM m) => Window -> m Selection
+getSelectionUnchecked self = liftDOM ((pFromJSVal <$> (js_getSelection (self))))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"matchMedia\"]($2); })"
+        js_matchMedia :: Window -> JSString -> IO MediaQueryList
+-- | <https://developer.mozilla.org/docs/Web/API/Window/matchMedia MDN Window.matchMedia documentation>
+matchMedia :: (MonadDOM m, ToJSString query) => Window -> query -> m MediaQueryList
+matchMedia self query = liftDOM ((js_matchMedia (self) (toJSString query)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/matchMedia MDN Window.matchMedia documentation>
+matchMedia_ :: (MonadDOM m, ToJSString query) => Window -> query -> m ()
+matchMedia_ self query = liftDOM (void ((js_matchMedia (self) (toJSString query))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"moveBy\"]($2, $3); })"
+        js_moveBy :: Window -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/moveBy MDN Window.moveBy documentation>
+moveBy :: (MonadDOM m) => Window -> Int -> Int -> m ()
+moveBy self x y = liftDOM (void ((js_moveBy (self) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"moveTo\"]($2, $3); })"
+        js_moveTo :: Window -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/moveTo MDN Window.moveTo documentation>
+moveTo :: (MonadDOM m) => Window -> Int -> Int -> m ()
+moveTo self x y = liftDOM (void ((js_moveTo (self) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"open\"]($2, $3, $4); })"
+        js_open :: Window -> (Optional JSString) -> (Optional JSString) -> (Optional JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/open MDN Window.open documentation>
+open :: (MonadDOM m, ToJSString url, ToJSString target, ToJSString features) => Window -> Maybe url -> Maybe target -> Maybe features -> m (Maybe Window)
+open self url target features = liftDOM (((js_open (self) (toOptionalJSString url) (toOptionalJSString target) (toOptionalJSString features)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/open MDN Window.open documentation>
+open_ :: (MonadDOM m, ToJSString url, ToJSString target, ToJSString features) => Window -> Maybe url -> Maybe target -> Maybe features -> m ()
+open_ self url target features = liftDOM (void ((js_open (self) (toOptionalJSString url) (toOptionalJSString target) (toOptionalJSString features))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/open MDN Window.open documentation>
+openUnsafe :: (MonadDOM m, ToJSString url, ToJSString target, ToJSString features, HasCallStack) => Window -> Maybe url -> Maybe target -> Maybe features -> m Window
+openUnsafe self url target features = liftDOM ((((js_open (self) (toOptionalJSString url) (toOptionalJSString target) (toOptionalJSString features)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/open MDN Window.open documentation>
+openUnchecked :: (MonadDOM m, ToJSString url, ToJSString target, ToJSString features) => Window -> Maybe url -> Maybe target -> Maybe features -> m Window
+openUnchecked self url target features = liftDOM ((pFromJSVal <$> (js_open (self) (toOptionalJSString url) (toOptionalJSString target) (toOptionalJSString features))))
+
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"postMessage\"]($2, $3, $4); })"
+        js_postMessage :: Window -> JSVal -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/postMessage MDN Window.postMessage documentation>
+postMessage :: (MonadDOM m, ToJSString targetOrigin) => Window -> JSVal -> targetOrigin -> Maybe [GObject] -> m ()
+postMessage self message targetOrigin transfer = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal transfer) >>= \a4' -> js_postMessage (self) (message) (toJSString targetOrigin) a4')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessageOptions :: Window -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/postMessage MDN Window.postMessage documentation>
+postMessageOptions :: (MonadDOM m) => Window -> JSVal -> Maybe WindowPostMessageOptions -> m ()
+postMessageOptions self message options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postMessageOptions (self) (message) a3')))
+
+foreign import javascript safe "(($1) => { return $1[\"print\"](); })"
+        js_print :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/print MDN Window.print documentation>
+print :: (MonadDOM m) => Window -> m ()
+print self = liftDOM (void ((js_print (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"prompt\"]($2, $3); })"
+        js_prompt :: Window -> (Optional JSString) -> (Optional JSString) -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/prompt MDN Window.prompt documentation>
+prompt :: (MonadDOM m, ToJSString message, ToJSString default', FromJSString result) => Window -> Maybe message -> Maybe default' -> m (Maybe result)
+prompt self message default' = liftDOM (((fromMaybeJSString . Nullable) <$> (js_prompt (self) (toOptionalJSString message) (toOptionalJSString default'))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/prompt MDN Window.prompt documentation>
+prompt_ :: (MonadDOM m, ToJSString message, ToJSString default') => Window -> Maybe message -> Maybe default' -> m ()
+prompt_ self message default' = liftDOM (void ((js_prompt (self) (toOptionalJSString message) (toOptionalJSString default'))))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/prompt MDN Window.prompt documentation>
+promptUnsafe :: (MonadDOM m, ToJSString message, ToJSString default', HasCallStack, FromJSString result) => Window -> Maybe message -> Maybe default' -> m result
+promptUnsafe self message default' = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_prompt (self) (toOptionalJSString message) (toOptionalJSString default'))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/prompt MDN Window.prompt documentation>
+promptUnchecked :: (MonadDOM m, ToJSString message, ToJSString default', FromJSString result) => Window -> Maybe message -> Maybe default' -> m result
+promptUnchecked self message default' = liftDOM ((pFromJSVal <$> (js_prompt (self) (toOptionalJSString message) (toOptionalJSString default'))))
+
+foreign import javascript safe "(($1) => { return $1[\"releaseEvents\"](); })"
+        js_releaseEvents :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/releaseEvents MDN Window.releaseEvents documentation>
+releaseEvents :: (MonadDOM m) => Window -> m ()
+releaseEvents self = liftDOM (void ((js_releaseEvents (self))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"requestIdleCallback\"]($2, $3); })"
+        js_requestIdleCallback :: Window -> JSVal -> JSVal -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Window/requestIdleCallback MDN Window.requestIdleCallback documentation>
+requestIdleCallback :: (MonadDOM m) => Window -> IdleRequestCallback -> Maybe IdleRequestOptions -> m Word
+requestIdleCallback self callback' options = liftDOM (((toJSVal callback') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_requestIdleCallback (self) a2' a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/requestIdleCallback MDN Window.requestIdleCallback documentation>
+requestIdleCallback_ :: (MonadDOM m) => Window -> IdleRequestCallback -> Maybe IdleRequestOptions -> m ()
+requestIdleCallback_ self callback' options = liftDOM (void (((toJSVal callback') >>= \a2' -> (P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_requestIdleCallback (self) a2' a3')))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"resizeBy\"]($2, $3); })"
+        js_resizeBy :: Window -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/resizeBy MDN Window.resizeBy documentation>
+resizeBy :: (MonadDOM m) => Window -> Int -> Int -> m ()
+resizeBy self x y = liftDOM (void ((js_resizeBy (self) (x) (y))))
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"resizeTo\"]($2, $3); })"
+        js_resizeTo :: Window -> Int -> Int -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/resizeTo MDN Window.resizeTo documentation>
+resizeTo :: (MonadDOM m) => Window -> Int -> Int -> m ()
+resizeTo self width height = liftDOM (void ((js_resizeTo (self) (width) (height))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"scroll\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollOpt :: Window -> JSVal -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scroll MDN Window.scroll documentation>
+scrollOpt :: (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ScrollResult
+scrollOpt self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollOpt (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scroll MDN Window.scroll documentation>
+scrollOpt_ :: (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ()
+scrollOpt_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollOpt (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"scroll\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scroll :: Window -> Double -> Double -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scroll MDN Window.scroll documentation>
+scroll :: (MonadDOM m) => Window -> Double -> Double -> m ScrollResult
+scroll self x y = liftDOM (((js_scroll (self) (x) (y)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scroll MDN Window.scroll documentation>
+scroll_ :: (MonadDOM m) => Window -> Double -> Double -> m ()
+scroll_ self x y = liftDOM (void (((js_scroll (self) (x) (y)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"scrollBy\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollByOpt :: Window -> JSVal -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollBy MDN Window.scrollBy documentation>
+scrollByOpt :: (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ScrollResult
+scrollByOpt self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollByOpt (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollBy MDN Window.scrollBy documentation>
+scrollByOpt_ :: (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ()
+scrollByOpt_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollByOpt (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"scrollBy\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollBy :: Window -> Double -> Double -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollBy MDN Window.scrollBy documentation>
+scrollBy :: (MonadDOM m) => Window -> Double -> Double -> m ScrollResult
+scrollBy self x y = liftDOM (((js_scrollBy (self) (x) (y)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollBy MDN Window.scrollBy documentation>
+scrollBy_ :: (MonadDOM m) => Window -> Double -> Double -> m ()
+scrollBy_ self x y = liftDOM (void (((js_scrollBy (self) (x) (y)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"scrollTo\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollToOpt :: Window -> JSVal -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollTo MDN Window.scrollTo documentation>
+scrollToOpt :: (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ScrollResult
+scrollToOpt self options = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollToOpt (self) a2') >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollTo MDN Window.scrollTo documentation>
+scrollToOpt_ :: (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ()
+scrollToOpt_ self options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_scrollToOpt (self) a2') >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"scrollTo\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_scrollTo :: Window -> Double -> Double -> IO (JSVal, ScrollResult)
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollTo MDN Window.scrollTo documentation>
+scrollTo :: (MonadDOM m) => Window -> Double -> Double -> m ScrollResult
+scrollTo self x y = liftDOM (((js_scrollTo (self) (x) (y)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollTo MDN Window.scrollTo documentation>
+scrollTo_ :: (MonadDOM m) => Window -> Double -> Double -> m ()
+scrollTo_ self x y = liftDOM (void (((js_scrollTo (self) (x) (y)) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"stop\"](); })"
+        js_stop :: Window -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/stop MDN Window.stop documentation>
+stop :: (MonadDOM m) => Window -> m ()
+stop self = liftDOM (void ((js_stop (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"window\"]; })"
+        js_getWindow :: Window -> IO Window
+-- | <https://developer.mozilla.org/docs/Web/API/Window/window MDN Window.window documentation>
+getWindow :: (MonadDOM m) => Window -> m Window
+getWindow self = liftDOM ((js_getWindow (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"self\"]; })"
+        js_getSelf :: Window -> IO Window
+-- | <https://developer.mozilla.org/docs/Web/API/Window/self MDN Window.self documentation>
+getSelf :: (MonadDOM m) => Window -> m Window
+getSelf self = liftDOM ((js_getSelf (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"document\"]; })"
+        js_getDocument :: Window -> IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/Window/document MDN Window.document documentation>
+getDocument :: (MonadDOM m) => Window -> m Document
+getDocument self = liftDOM ((js_getDocument (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: Window -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/name MDN Window.name documentation>
+setName :: (MonadDOM m, ToJSString val) => Window -> val -> m ()
+setName self val = liftDOM (void ((js_setName (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: Window -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Window/name MDN Window.name documentation>
+getName :: (MonadDOM m, FromJSString result) => Window -> m result
+getName self = liftDOM ((fromJSString <$> (js_getName (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })"
+        js_getLocation :: Window -> IO Location
+-- | <https://developer.mozilla.org/docs/Web/API/Window/location MDN Window.location documentation>
+getLocation :: (MonadDOM m) => Window -> m Location
+getLocation self = liftDOM ((js_getLocation (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"history\"]; })"
+        js_getHistory :: Window -> IO History
+-- | <https://developer.mozilla.org/docs/Web/API/Window/history MDN Window.history documentation>
+getHistory :: (MonadDOM m) => Window -> m History
+getHistory self = liftDOM ((js_getHistory (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigation\"]; })"
+        js_getNavigation :: Window -> IO Navigation
+-- | <https://developer.mozilla.org/docs/Web/API/Window/navigation MDN Window.navigation documentation>
+getNavigation :: (MonadDOM m) => Window -> m Navigation
+getNavigation self = liftDOM ((js_getNavigation (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"customElements\"]; })"
+        js_getCustomElements :: Window -> IO CustomElementRegistry
+-- | <https://developer.mozilla.org/docs/Web/API/Window/customElements MDN Window.customElements documentation>
+getCustomElements :: (MonadDOM m) => Window -> m CustomElementRegistry
+getCustomElements self = liftDOM ((js_getCustomElements (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"locationbar\"]; })"
+        js_getLocationbar :: Window -> IO BarProp
+-- | <https://developer.mozilla.org/docs/Web/API/Window/locationbar MDN Window.locationbar documentation>
+getLocationbar :: (MonadDOM m) => Window -> m BarProp
+getLocationbar self = liftDOM ((js_getLocationbar (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"menubar\"]; })"
+        js_getMenubar :: Window -> IO BarProp
+-- | <https://developer.mozilla.org/docs/Web/API/Window/menubar MDN Window.menubar documentation>
+getMenubar :: (MonadDOM m) => Window -> m BarProp
+getMenubar self = liftDOM ((js_getMenubar (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"personalbar\"]; })"
+        js_getPersonalbar :: Window -> IO BarProp
+-- | <https://developer.mozilla.org/docs/Web/API/Window/personalbar MDN Window.personalbar documentation>
+getPersonalbar :: (MonadDOM m) => Window -> m BarProp
+getPersonalbar self = liftDOM ((js_getPersonalbar (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollbars\"]; })"
+        js_getScrollbars :: Window -> IO BarProp
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollbars MDN Window.scrollbars documentation>
+getScrollbars :: (MonadDOM m) => Window -> m BarProp
+getScrollbars self = liftDOM ((js_getScrollbars (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"statusbar\"]; })"
+        js_getStatusbar :: Window -> IO BarProp
+-- | <https://developer.mozilla.org/docs/Web/API/Window/statusbar MDN Window.statusbar documentation>
+getStatusbar :: (MonadDOM m) => Window -> m BarProp
+getStatusbar self = liftDOM ((js_getStatusbar (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"toolbar\"]; })"
+        js_getToolbar :: Window -> IO BarProp
+-- | <https://developer.mozilla.org/docs/Web/API/Window/toolbar MDN Window.toolbar documentation>
+getToolbar :: (MonadDOM m) => Window -> m BarProp
+getToolbar self = liftDOM ((js_getToolbar (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"status\"] = $2; })"
+        js_setStatus :: Window -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/status MDN Window.status documentation>
+setStatus :: (MonadDOM m, ToJSString val) => Window -> val -> m ()
+setStatus self val = liftDOM (void ((js_setStatus (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })"
+        js_getStatus :: Window -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/Window/status MDN Window.status documentation>
+getStatus :: (MonadDOM m, FromJSString result) => Window -> m result
+getStatus self = liftDOM ((fromJSString <$> (js_getStatus (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"closed\"]; })"
+        js_getClosed :: Window -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Window/closed MDN Window.closed documentation>
+getClosed :: (MonadDOM m) => Window -> m Bool
+getClosed self = liftDOM ((js_getClosed (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frames\"]; })"
+        js_getFrames :: Window -> IO Window
+-- | <https://developer.mozilla.org/docs/Web/API/Window/frames MDN Window.frames documentation>
+getFrames :: (MonadDOM m) => Window -> m Window
+getFrames self = liftDOM ((js_getFrames (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })"
+        js_getLength :: Window -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/Window/length MDN Window.length documentation>
+getLength :: (MonadDOM m) => Window -> m Word
+getLength self = liftDOM ((js_getLength (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })"
+        js_getTop :: Window -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/top MDN Window.top documentation>
+getTop :: (MonadDOM m) => Window -> m (Maybe Window)
+getTop self = liftDOM (((js_getTop (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/top MDN Window.top documentation>
+getTopUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getTopUnsafe self = liftDOM ((((js_getTop (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/top MDN Window.top documentation>
+getTopUnchecked :: (MonadDOM m) => Window -> m Window
+getTopUnchecked self = liftDOM ((pFromJSVal <$> (js_getTop (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"opener\"] = $2; })"
+        js_setOpener :: Window -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Window/opener MDN Window.opener documentation>
+setOpener :: (MonadDOM m) => Window -> JSVal -> m ()
+setOpener self val = liftDOM (void ((js_setOpener (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"opener\"]; })"
+        js_getOpener :: Window -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/opener MDN Window.opener documentation>
+getOpener :: (MonadDOM m) => Window -> m JSVal
+getOpener self = liftDOM ((js_getOpener (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"parent\"]; })"
+        js_getParent :: Window -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/parent MDN Window.parent documentation>
+getParent :: (MonadDOM m) => Window -> m (Maybe Window)
+getParent self = liftDOM (((js_getParent (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/parent MDN Window.parent documentation>
+getParentUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getParentUnsafe self = liftDOM ((((js_getParent (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/parent MDN Window.parent documentation>
+getParentUnchecked :: (MonadDOM m) => Window -> m Window
+getParentUnchecked self = liftDOM ((pFromJSVal <$> (js_getParent (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"frameElement\"]; })"
+        js_getFrameElement :: Window -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/frameElement MDN Window.frameElement documentation>
+getFrameElement :: (MonadDOM m) => Window -> m (Maybe Element)
+getFrameElement self = liftDOM (((js_getFrameElement (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/frameElement MDN Window.frameElement documentation>
+getFrameElementUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Element
+getFrameElementUnsafe self = liftDOM ((((js_getFrameElement (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/frameElement MDN Window.frameElement documentation>
+getFrameElementUnchecked :: (MonadDOM m) => Window -> m Element
+getFrameElementUnchecked self = liftDOM ((pFromJSVal <$> (js_getFrameElement (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"navigator\"]; })"
+        js_getNavigator :: Window -> IO Navigator
+-- | <https://developer.mozilla.org/docs/Web/API/Window/navigator MDN Window.navigator documentation>
+getNavigator :: (MonadDOM m) => Window -> m Navigator
+getNavigator self = liftDOM ((js_getNavigator (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"clientInformation\"]; })"
+        js_getClientInformation :: Window -> IO Navigator
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-clientinformation Window.clientInformation specification>
+getClientInformation :: (MonadDOM m) => Window -> m Navigator
+getClientInformation self = liftDOM ((js_getClientInformation (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"originAgentCluster\"]; })"
+        js_getOriginAgentCluster :: Window -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/Window/originAgentCluster MDN Window.originAgentCluster documentation>
+getOriginAgentCluster :: (MonadDOM m) => Window -> m Bool
+getOriginAgentCluster self = liftDOM ((js_getOriginAgentCluster (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"cookieStore\"]; })"
+        js_getCookieStore :: Window -> IO CookieStore
+-- | <https://developer.mozilla.org/docs/Web/API/Window/cookieStore MDN Window.cookieStore documentation>
+getCookieStore :: (MonadDOM m) => Window -> m CookieStore
+getCookieStore self = liftDOM ((js_getCookieStore (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screen\"]; })"
+        js_getScreen :: Window -> IO Screen
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screen MDN Window.screen documentation>
+getScreen :: (MonadDOM m) => Window -> m Screen
+getScreen self = liftDOM ((js_getScreen (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visualViewport\"]; })"
+        js_getVisualViewport :: Window -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/Window/visualViewport MDN Window.visualViewport documentation>
+getVisualViewport :: (MonadDOM m) => Window -> m (Maybe VisualViewport)
+getVisualViewport self = liftDOM (((js_getVisualViewport (self)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/visualViewport MDN Window.visualViewport documentation>
+getVisualViewportUnsafe :: (MonadDOM m, HasCallStack) => Window -> m VisualViewport
+getVisualViewportUnsafe self = liftDOM ((((js_getVisualViewport (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/visualViewport MDN Window.visualViewport documentation>
+getVisualViewportUnchecked :: (MonadDOM m) => Window -> m VisualViewport
+getVisualViewportUnchecked self = liftDOM ((pFromJSVal <$> (js_getVisualViewport (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"innerWidth\"]; })"
+        js_getInnerWidth :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/innerWidth MDN Window.innerWidth documentation>
+getInnerWidth :: (MonadDOM m) => Window -> m Int
+getInnerWidth self = liftDOM ((js_getInnerWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"innerHeight\"]; })"
+        js_getInnerHeight :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/innerHeight MDN Window.innerHeight documentation>
+getInnerHeight :: (MonadDOM m) => Window -> m Int
+getInnerHeight self = liftDOM ((js_getInnerHeight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollX\"]; })"
+        js_getScrollX :: Window -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollX MDN Window.scrollX documentation>
+getScrollX :: (MonadDOM m) => Window -> m Double
+getScrollX self = liftDOM ((js_getScrollX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pageXOffset\"]; })"
+        js_getPageXOffset :: Window -> IO Double
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-window-pagexoffset Window.pageXOffset specification>
+getPageXOffset :: (MonadDOM m) => Window -> m Double
+getPageXOffset self = liftDOM ((js_getPageXOffset (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"scrollY\"]; })"
+        js_getScrollY :: Window -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollY MDN Window.scrollY documentation>
+getScrollY :: (MonadDOM m) => Window -> m Double
+getScrollY self = liftDOM ((js_getScrollY (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"pageYOffset\"]; })"
+        js_getPageYOffset :: Window -> IO Double
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-window-pageyoffset Window.pageYOffset specification>
+getPageYOffset :: (MonadDOM m) => Window -> m Double
+getPageYOffset self = liftDOM ((js_getPageYOffset (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })"
+        js_getScreenX :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenX MDN Window.screenX documentation>
+getScreenX :: (MonadDOM m) => Window -> m Int
+getScreenX self = liftDOM ((js_getScreenX (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenLeft\"]; })"
+        js_getScreenLeft :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenLeft MDN Window.screenLeft documentation>
+getScreenLeft :: (MonadDOM m) => Window -> m Int
+getScreenLeft self = liftDOM ((js_getScreenLeft (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })"
+        js_getScreenY :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenY MDN Window.screenY documentation>
+getScreenY :: (MonadDOM m) => Window -> m Int
+getScreenY self = liftDOM ((js_getScreenY (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"screenTop\"]; })"
+        js_getScreenTop :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenTop MDN Window.screenTop documentation>
+getScreenTop :: (MonadDOM m) => Window -> m Int
+getScreenTop self = liftDOM ((js_getScreenTop (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outerWidth\"]; })"
+        js_getOuterWidth :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/outerWidth MDN Window.outerWidth documentation>
+getOuterWidth :: (MonadDOM m) => Window -> m Int
+getOuterWidth self = liftDOM ((js_getOuterWidth (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"outerHeight\"]; })"
+        js_getOuterHeight :: Window -> IO Int
+-- | <https://developer.mozilla.org/docs/Web/API/Window/outerHeight MDN Window.outerHeight documentation>
+getOuterHeight :: (MonadDOM m) => Window -> m Int
+getOuterHeight self = liftDOM ((js_getOuterHeight (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"devicePixelRatio\"]; })"
+        js_getDevicePixelRatio :: Window -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/Window/devicePixelRatio MDN Window.devicePixelRatio documentation>
+getDevicePixelRatio :: (MonadDOM m) => Window -> m Double
+getDevicePixelRatio self = liftDOM ((js_getDevicePixelRatio (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"documentPictureInPicture\"]; })"
+        js_getDocumentPictureInPicture :: Window -> IO DocumentPictureInPicture
+-- | <https://developer.mozilla.org/docs/Web/API/Window/documentPictureInPicture MDN Window.documentPictureInPicture documentation>
+getDocumentPictureInPicture :: (MonadDOM m) => Window -> m DocumentPictureInPicture
+getDocumentPictureInPicture self = liftDOM ((js_getDocumentPictureInPicture (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"event\"]; })"
+        js_getEvent :: Window -> IO EventOrUndefined
+-- | <https://developer.mozilla.org/docs/Web/API/Window/event MDN Window.event documentation>
+getEvent :: (MonadDOM m) => Window -> m EventOrUndefined
+getEvent self = liftDOM ((js_getEvent (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"external\"]; })"
+        js_getExternal :: Window -> IO External
+-- | <https://developer.mozilla.org/docs/Web/API/Window/external MDN Window.external documentation>
+getExternal :: (MonadDOM m) => Window -> m External
+getExternal self = liftDOM ((js_getExternal (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"speechSynthesis\"]; })"
+        js_getSpeechSynthesis :: Window -> IO SpeechSynthesis
+-- | <https://developer.mozilla.org/docs/Web/API/Window/speechSynthesis MDN Window.speechSynthesis documentation>
+getSpeechSynthesis :: (MonadDOM m) => Window -> m SpeechSynthesis
+getSpeechSynthesis self = liftDOM ((js_getSpeechSynthesis (self)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-window-ondeviceorientation deviceorientation event>
+deviceOrientation :: EventName Window DeviceOrientationEvent
+deviceOrientation = unsafeEventName (toJSString "deviceorientation")
+
+-- | <https://w3c.github.io/deviceorientation/#dom-window-ondeviceorientationabsolute deviceorientationabsolute event>
+deviceorientationabsolute :: EventName Window DeviceOrientationEvent
+deviceorientationabsolute = unsafeEventName (toJSString "deviceorientationabsolute")
+
+-- | <https://w3c.github.io/deviceorientation/#dom-window-ondevicemotion devicemotion event>
+deviceMotion :: EventName Window DeviceMotionEvent
+deviceMotion = unsafeEventName (toJSString "devicemotion")
+
+-- | <https://w3c.github.io/clipboard-apis/#eventdef-globaleventhandlers-clipboardchange clipboardchange event>
+clipboardchange :: EventName Window ClipboardChangeEvent
+clipboardchange = unsafeEventName (toJSString "clipboardchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowClient.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowClient.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowClient.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WindowClient
+       (js_focus, js_navigate, js_getVisibilityState, js_getFocused, focus, focus_, navigate, navigate_, navigateUnsafe, navigateUnchecked, getVisibilityState, getFocused, WindowClient(..), gTypeWindowClient)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"focus\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_focus :: WindowClient -> IO (JSVal, WindowClient)
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/focus MDN WindowClient.focus documentation>
+focus :: (MonadDOM m) => WindowClient -> m WindowClient
+focus self = liftDOM (((js_focus (self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/focus MDN WindowClient.focus documentation>
+focus_ :: (MonadDOM m) => WindowClient -> m ()
+focus_ self = liftDOM (void (((js_focus (self)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"navigate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_navigate :: WindowClient -> JSString -> IO (JSVal, JSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/navigate MDN WindowClient.navigate documentation>
+navigate :: (MonadDOM m, ToJSString url) => WindowClient -> url -> m (Maybe WindowClient)
+navigate self url = liftDOM ((((js_navigate (self) (toJSString url)) >>= checkPromiseResult) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/navigate MDN WindowClient.navigate documentation>
+navigate_ :: (MonadDOM m, ToJSString url) => WindowClient -> url -> m ()
+navigate_ self url = liftDOM (void (((js_navigate (self) (toJSString url)) >>= checkPromiseResult)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/navigate MDN WindowClient.navigate documentation>
+navigateUnsafe :: (MonadDOM m, ToJSString url, HasCallStack) => WindowClient -> url -> m WindowClient
+navigateUnsafe self url = liftDOM (((((js_navigate (self) (toJSString url)) >>= checkPromiseResult) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/navigate MDN WindowClient.navigate documentation>
+navigateUnchecked :: (MonadDOM m, ToJSString url) => WindowClient -> url -> m WindowClient
+navigateUnchecked self url = liftDOM ((pFromJSVal <$> ((js_navigate (self) (toJSString url)) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"visibilityState\"]; })"
+        js_getVisibilityState :: WindowClient -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/visibilityState MDN WindowClient.visibilityState documentation>
+getVisibilityState :: (MonadDOM m) => WindowClient -> m DocumentVisibilityState
+getVisibilityState self = liftDOM (((js_getVisibilityState (self)) >>= fromJSValUnchecked))
+
+foreign import javascript unsafe "(($1) => { return $1[\"focused\"]; })"
+        js_getFocused :: WindowClient -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/focused MDN WindowClient.focused documentation>
+getFocused :: (MonadDOM m) => WindowClient -> m Bool
+getFocused self = liftDOM ((js_getFocused (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
@@ -1,103 +1,97 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WindowEventHandlers
-       (beforeUnload, hashChange, languagechange, message, offline,
-        online, pageHide, pageShow, popState, storage, unload,
-        orientationChange, WindowEventHandlers(..),
-        gTypeWindowEventHandlers, IsWindowEventHandlers,
-        toWindowEventHandlers)
+       (afterprint, beforeprint, beforeUnload, hashChange, languagechange, message, messageerror, offline, online, pageHide, pagereveal, pageShow, pageswap, popState, rejectionhandled, storage, unhandledrejection, unload, gamepadconnected, gamepaddisconnected, WindowEventHandlers(..), gTypeWindowEventHandlers, IsWindowEventHandlers, toWindowEventHandlers)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onbeforeunload Mozilla WindowEventHandlers.onbeforeunload documentation> 
-beforeUnload ::
-             (IsWindowEventHandlers self, IsEventTarget self) =>
-               EventName self BeforeUnloadEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onafterprint afterprint event>
+afterprint :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self Event
+afterprint = unsafeEventName (toJSString "afterprint")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onbeforeprint beforeprint event>
+beforeprint :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self Event
+beforeprint = unsafeEventName (toJSString "beforeprint")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onbeforeunload beforeunload event>
+beforeUnload :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self BeforeUnloadEvent
 beforeUnload = unsafeEventName (toJSString "beforeunload")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onhashchange Mozilla WindowEventHandlers.onhashchange documentation> 
-hashChange ::
-           (IsWindowEventHandlers self, IsEventTarget self) =>
-             EventName self HashChangeEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onhashchange hashchange event>
+hashChange :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self HashChangeEvent
 hashChange = unsafeEventName (toJSString "hashchange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onlanguagechange Mozilla WindowEventHandlers.onlanguagechange documentation> 
-languagechange ::
-               (IsWindowEventHandlers self, IsEventTarget self) =>
-                 EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onlanguagechange languagechange event>
+languagechange :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self Event
 languagechange = unsafeEventName (toJSString "languagechange")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onmessage Mozilla WindowEventHandlers.onmessage documentation> 
-message ::
-        (IsWindowEventHandlers self, IsEventTarget self) =>
-          EventName self MessageEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onmessage message event>
+message :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self MessageEvent
 message = unsafeEventNameAsync (toJSString "message")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onoffline Mozilla WindowEventHandlers.onoffline documentation> 
-offline ::
-        (IsWindowEventHandlers self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onmessageerror messageerror event>
+messageerror :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self MessageEvent
+messageerror = unsafeEventName (toJSString "messageerror")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onoffline offline event>
+offline :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self Event
 offline = unsafeEventName (toJSString "offline")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.ononline Mozilla WindowEventHandlers.ononline documentation> 
-online ::
-       (IsWindowEventHandlers self, IsEventTarget self) =>
-         EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-ononline online event>
+online :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self Event
 online = unsafeEventName (toJSString "online")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onpagehide Mozilla WindowEventHandlers.onpagehide documentation> 
-pageHide ::
-         (IsWindowEventHandlers self, IsEventTarget self) =>
-           EventName self PageTransitionEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onpagehide pagehide event>
+pageHide :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self PageTransitionEvent
 pageHide = unsafeEventName (toJSString "pagehide")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onpageshow Mozilla WindowEventHandlers.onpageshow documentation> 
-pageShow ::
-         (IsWindowEventHandlers self, IsEventTarget self) =>
-           EventName self PageTransitionEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onpagereveal pagereveal event>
+pagereveal :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self PageRevealEvent
+pagereveal = unsafeEventName (toJSString "pagereveal")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onpageshow pageshow event>
+pageShow :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self PageTransitionEvent
 pageShow = unsafeEventName (toJSString "pageshow")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onpopstate Mozilla WindowEventHandlers.onpopstate documentation> 
-popState ::
-         (IsWindowEventHandlers self, IsEventTarget self) =>
-           EventName self PopStateEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onpageswap pageswap event>
+pageswap :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self PageSwapEvent
+pageswap = unsafeEventName (toJSString "pageswap")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onpopstate popstate event>
+popState :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self PopStateEvent
 popState = unsafeEventName (toJSString "popstate")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onstorage Mozilla WindowEventHandlers.onstorage documentation> 
-storage ::
-        (IsWindowEventHandlers self, IsEventTarget self) =>
-          EventName self StorageEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onrejectionhandled rejectionhandled event>
+rejectionhandled :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self PromiseRejectionEvent
+rejectionhandled = unsafeEventName (toJSString "rejectionhandled")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onstorage storage event>
+storage :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self StorageEvent
 storage = unsafeEventName (toJSString "storage")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onunload Mozilla WindowEventHandlers.onunload documentation> 
-unload ::
-       (IsWindowEventHandlers self, IsEventTarget self) =>
-         EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onunhandledrejection unhandledrejection event>
+unhandledrejection :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self PromiseRejectionEvent
+unhandledrejection = unsafeEventName (toJSString "unhandledrejection")
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#handler-window-onunload unload event>
+unload :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self Event
 unload = unsafeEventName (toJSString "unload")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onorientationchange Mozilla WindowEventHandlers.onorientationchange documentation> 
-orientationChange ::
-                  (IsWindowEventHandlers self, IsEventTarget self) =>
-                    EventName self Event
-orientationChange
-  = unsafeEventName (toJSString "orientationchange")
+-- | <https://w3c.github.io/gamepad/#dom-windoweventhandlers-ongamepadconnected gamepadconnected event>
+gamepadconnected :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self GamepadEvent
+gamepadconnected = unsafeEventName (toJSString "gamepadconnected")
+
+-- | <https://w3c.github.io/gamepad/#dom-windoweventhandlers-ongamepaddisconnected gamepaddisconnected event>
+gamepaddisconnected :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self GamepadEvent
+gamepaddisconnected = unsafeEventName (toJSString "gamepaddisconnected")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowLocalStorage.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowLocalStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowLocalStorage.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WindowLocalStorage
+       (js_getLocalStorage, getLocalStorage, WindowLocalStorage(..), gTypeWindowLocalStorage, IsWindowLocalStorage, toWindowLocalStorage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"localStorage\"]; })"
+        js_getLocalStorage :: WindowLocalStorage -> IO Storage
+-- | <https://developer.mozilla.org/docs/Web/API/Window/localStorage MDN WindowLocalStorage.localStorage documentation>
+getLocalStorage :: (MonadDOM m, IsWindowLocalStorage self) => self -> m Storage
+getLocalStorage self = liftDOM ((js_getLocalStorage ((Types.toWindowLocalStorage self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
@@ -1,168 +1,91 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope
-       (js_setTimeout, setTimeout, setTimeout_, js_clearTimeout,
-        clearTimeout, js_setInterval, setInterval, setInterval_,
-        js_clearInterval, clearInterval, js_atob, atob, atob_, js_btoa,
-        btoa, btoa_, js_getOrigin, getOrigin,
-        WindowOrWorkerGlobalScope(..), gTypeWindowOrWorkerGlobalScope,
-        IsWindowOrWorkerGlobalScope, toWindowOrWorkerGlobalScope)
+       (js_atob, js_btoa, js_clearInterval, js_clearTimeout, js_fetch, js_setInterval, js_setTimeout, js_getOrigin, js_getIndexedDB, atob, atob_, btoa, btoa_, clearInterval, clearTimeout, fetch, fetch_, setInterval, setInterval_, setTimeout, setTimeout_, getOrigin, getIndexedDB, WindowOrWorkerGlobalScope(..), gTypeWindowOrWorkerGlobalScope, IsWindowOrWorkerGlobalScope, toWindowOrWorkerGlobalScope)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setTimeout\"]($2, $3); })"
-        js_setTimeout ::
-        WindowOrWorkerGlobalScope -> JSVal -> Optional Int -> IO Int
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
-setTimeout ::
-           (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-             self -> handler -> Maybe Int -> m Int
-setTimeout self handler timeout
-  = liftIO
-      (toJSVal handler >>=
-         \ handler' ->
-           js_setTimeout (toWindowOrWorkerGlobalScope self) handler'
-         (maybeToOptional timeout))
+foreign import javascript safe "(($1, $2) => { return $1[\"atob\"]($2); })"
+        js_atob :: WindowOrWorkerGlobalScope -> JSString -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob WindowOrWorkerGlobalScope.atob specification>
+atob :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data', FromJSString result) => self -> data' -> m result
+atob self data' = liftDOM ((fromJSString <$> (js_atob ((Types.toWindowOrWorkerGlobalScope self)) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
-setTimeout_ ::
-            (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-              self -> handler -> Maybe Int -> m ()
-setTimeout_ self handler timeout
-  = liftIO
-      (void
-         (toJSVal handler >>=
-            \ handler' ->
-              js_setTimeout (toWindowOrWorkerGlobalScope self) handler'
-            (maybeToOptional timeout)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearTimeout\"]($2); })"
-        js_clearTimeout ::
-        WindowOrWorkerGlobalScope -> Optional Int -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob WindowOrWorkerGlobalScope.atob specification>
+atob_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data') => self -> data' -> m ()
+atob_ self data' = liftDOM (void ((js_atob ((Types.toWindowOrWorkerGlobalScope self)) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearTimeout Mozilla WindowOrWorkerGlobalScope.clearTimeout documentation> 
-clearTimeout ::
-             (MonadIO m, IsWindowOrWorkerGlobalScope self) =>
-               self -> Maybe Int -> m ()
-clearTimeout self handle
-  = liftIO
-      (js_clearTimeout (toWindowOrWorkerGlobalScope self)
-         (maybeToOptional handle))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setInterval\"]($2, $3); })"
-        js_setInterval ::
-        WindowOrWorkerGlobalScope -> JSVal -> Optional Int -> IO Int
+foreign import javascript safe "(($1, $2) => { return $1[\"btoa\"]($2); })"
+        js_btoa :: WindowOrWorkerGlobalScope -> JSString -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa WindowOrWorkerGlobalScope.btoa specification>
+btoa :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data', FromJSString result) => self -> data' -> m result
+btoa self data' = liftDOM ((fromJSString <$> (js_btoa ((Types.toWindowOrWorkerGlobalScope self)) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
-setInterval ::
-            (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-              self -> handler -> Maybe Int -> m Int
-setInterval self handler timeout
-  = liftIO
-      (toJSVal handler >>=
-         \ handler' ->
-           js_setInterval (toWindowOrWorkerGlobalScope self) handler'
-         (maybeToOptional timeout))
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa WindowOrWorkerGlobalScope.btoa specification>
+btoa_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data') => self -> data' -> m ()
+btoa_ self data' = liftDOM (void ((js_btoa ((Types.toWindowOrWorkerGlobalScope self)) (toJSString data'))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
-setInterval_ ::
-             (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-               self -> handler -> Maybe Int -> m ()
-setInterval_ self handler timeout
-  = liftIO
-      (void
-         (toJSVal handler >>=
-            \ handler' ->
-              js_setInterval (toWindowOrWorkerGlobalScope self) handler'
-            (maybeToOptional timeout)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"clearInterval\"]($2); })"
-        js_clearInterval ::
-        WindowOrWorkerGlobalScope -> Optional Int -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"clearInterval\"]($2); })"
+        js_clearInterval :: WindowOrWorkerGlobalScope -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-clearinterval WindowOrWorkerGlobalScope.clearInterval specification>
+clearInterval :: (MonadDOM m, IsWindowOrWorkerGlobalScope self) => self -> Maybe Int -> m ()
+clearInterval self id = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal id) >>= \a2' -> js_clearInterval ((Types.toWindowOrWorkerGlobalScope self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearInterval Mozilla WindowOrWorkerGlobalScope.clearInterval documentation> 
-clearInterval ::
-              (MonadIO m, IsWindowOrWorkerGlobalScope self) =>
-                self -> Maybe Int -> m ()
-clearInterval self handle
-  = liftIO
-      (js_clearInterval (toWindowOrWorkerGlobalScope self)
-         (maybeToOptional handle))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"atob\"]($2); })" js_atob ::
-        WindowOrWorkerGlobalScope -> JSString -> IO JSString
+foreign import javascript safe "(($1, $2) => { return $1[\"clearTimeout\"]($2); })"
+        js_clearTimeout :: WindowOrWorkerGlobalScope -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-cleartimeout WindowOrWorkerGlobalScope.clearTimeout specification>
+clearTimeout :: (MonadDOM m, IsWindowOrWorkerGlobalScope self) => self -> Maybe Int -> m ()
+clearTimeout self id = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal id) >>= \a2' -> js_clearTimeout ((Types.toWindowOrWorkerGlobalScope self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
-atob ::
-     (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string,
-      FromJSString result) =>
-       self -> string -> m result
-atob self string
-  = liftIO
-      (fromJSString <$>
-         (js_atob (toWindowOrWorkerGlobalScope self) (toJSString string)))
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"fetch\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_fetch :: WindowOrWorkerGlobalScope -> RequestInfo -> JSVal -> IO (JSVal, Response)
+-- | <https://fetch.spec.whatwg.org/#dom-global-fetch WindowOrWorkerGlobalScope.fetch specification>
+fetch :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsRequestInfo input) => self -> input -> Maybe RequestInit -> m Response
+fetch self input init = liftDOM ((((P.maybe (P.return jsUndefined) toJSVal init) >>= \a3' -> js_fetch ((Types.toWindowOrWorkerGlobalScope self)) (Types.toRequestInfo input) a3') >>= checkPromiseResult))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
-atob_ ::
-      (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string) =>
-        self -> string -> m ()
-atob_ self string
-  = liftIO
-      (void
-         (js_atob (toWindowOrWorkerGlobalScope self) (toJSString string)))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"btoa\"]($2); })" js_btoa ::
-        WindowOrWorkerGlobalScope -> JSString -> IO JSString
+-- | <https://fetch.spec.whatwg.org/#dom-global-fetch WindowOrWorkerGlobalScope.fetch specification>
+fetch_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsRequestInfo input) => self -> input -> Maybe RequestInit -> m ()
+fetch_ self input init = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal init) >>= \a3' -> js_fetch ((Types.toWindowOrWorkerGlobalScope self)) (Types.toRequestInfo input) a3') >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
-btoa ::
-     (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string,
-      FromJSString result) =>
-       self -> string -> m result
-btoa self string
-  = liftIO
-      (fromJSString <$>
-         (js_btoa (toWindowOrWorkerGlobalScope self) (toJSString string)))
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setInterval\"]($2, $3, ...$4); })"
+        js_setInterval :: WindowOrWorkerGlobalScope -> TimerHandler -> JSVal -> JSVal -> IO Int
+-- | <https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval WindowOrWorkerGlobalScope.setInterval specification>
+setInterval :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m Int
+setInterval self handler timeout arguments = liftDOM (((P.maybe (P.return jsUndefined) toJSVal timeout) >>= \a3' -> (toJSVal arguments) >>= \a4' -> js_setInterval ((Types.toWindowOrWorkerGlobalScope self)) (Types.toTimerHandler handler) a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
-btoa_ ::
-      (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string) =>
-        self -> string -> m ()
-btoa_ self string
-  = liftIO
-      (void
-         (js_btoa (toWindowOrWorkerGlobalScope self) (toJSString string)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
-        WindowOrWorkerGlobalScope -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval WindowOrWorkerGlobalScope.setInterval specification>
+setInterval_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m ()
+setInterval_ self handler timeout arguments = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal timeout) >>= \a3' -> (toJSVal arguments) >>= \a4' -> js_setInterval ((Types.toWindowOrWorkerGlobalScope self)) (Types.toTimerHandler handler) a3' a4')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.origin Mozilla WindowOrWorkerGlobalScope.origin documentation> 
-getOrigin ::
-          (MonadIO m, IsWindowOrWorkerGlobalScope self,
-           FromJSString result) =>
-            self -> m result
-getOrigin self
-  = liftIO
-      (fromJSString <$>
-         (js_getOrigin (toWindowOrWorkerGlobalScope self)))
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setTimeout\"]($2, $3, ...$4); })"
+        js_setTimeout :: WindowOrWorkerGlobalScope -> TimerHandler -> JSVal -> JSVal -> IO Int
+-- | <https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout WindowOrWorkerGlobalScope.setTimeout specification>
+setTimeout :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m Int
+setTimeout self handler timeout arguments = liftDOM (((P.maybe (P.return jsUndefined) toJSVal timeout) >>= \a3' -> (toJSVal arguments) >>= \a4' -> js_setTimeout ((Types.toWindowOrWorkerGlobalScope self)) (Types.toTimerHandler handler) a3' a4'))
+
+-- | <https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout WindowOrWorkerGlobalScope.setTimeout specification>
+setTimeout_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m ()
+setTimeout_ self handler timeout arguments = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal timeout) >>= \a3' -> (toJSVal arguments) >>= \a4' -> js_setTimeout ((Types.toWindowOrWorkerGlobalScope self)) (Types.toTimerHandler handler) a3' a4')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: WindowOrWorkerGlobalScope -> IO JSString
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#dom-origin WindowOrWorkerGlobalScope.origin specification>
+getOrigin :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, FromJSString result) => self -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin ((Types.toWindowOrWorkerGlobalScope self)))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"indexedDB\"]; })"
+        js_getIndexedDB :: WindowOrWorkerGlobalScope -> IO IDBFactory
+-- | <https://w3c.github.io/IndexedDB/#dom-windoworworkerglobalscope-indexeddb WindowOrWorkerGlobalScope.indexedDB specification>
+getIndexedDB :: (MonadDOM m, IsWindowOrWorkerGlobalScope self) => self -> m IDBFactory
+getIndexedDB self = liftDOM ((js_getIndexedDB ((Types.toWindowOrWorkerGlobalScope self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowPostMessageOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowPostMessageOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowPostMessageOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WindowPostMessageOptions
+       (js_newWindowPostMessageOptions, js_setTargetOrigin, js_getTargetOrigin, newWindowPostMessageOptions, setTargetOrigin, getTargetOrigin, getTargetOriginUnsafe, getTargetOriginUnchecked, WindowPostMessageOptions(..), gTypeWindowPostMessageOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWindowPostMessageOptions :: IO WindowPostMessageOptions
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#windowpostmessageoptions WindowPostMessageOptions specification>
+newWindowPostMessageOptions :: (MonadDOM m) => m WindowPostMessageOptions
+newWindowPostMessageOptions = liftDOM ((js_newWindowPostMessageOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"targetOrigin\"] = $2; })"
+        js_setTargetOrigin :: WindowPostMessageOptions -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-windowpostmessageoptions-targetorigin WindowPostMessageOptions.targetOrigin specification>
+setTargetOrigin :: (MonadDOM m, ToJSString val) => WindowPostMessageOptions -> val -> m ()
+setTargetOrigin self val = liftDOM (void ((js_setTargetOrigin (self) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"targetOrigin\"]; })"
+        js_getTargetOrigin :: WindowPostMessageOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-windowpostmessageoptions-targetorigin WindowPostMessageOptions.targetOrigin specification>
+getTargetOrigin :: (MonadDOM m, FromJSString result) => WindowPostMessageOptions -> m (Maybe result)
+getTargetOrigin self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getTargetOrigin (self))))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-windowpostmessageoptions-targetorigin WindowPostMessageOptions.targetOrigin specification>
+getTargetOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => WindowPostMessageOptions -> m result
+getTargetOriginUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getTargetOrigin (self))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-windowpostmessageoptions-targetorigin WindowPostMessageOptions.targetOrigin specification>
+getTargetOriginUnchecked :: (MonadDOM m, FromJSString result) => WindowPostMessageOptions -> m result
+getTargetOriginUnchecked self = liftDOM ((pFromJSVal <$> (js_getTargetOrigin (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowSessionStorage.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowSessionStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowSessionStorage.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WindowSessionStorage
+       (js_getSessionStorage, getSessionStorage, WindowSessionStorage(..), gTypeWindowSessionStorage, IsWindowSessionStorage, toWindowSessionStorage)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "(($1) => { return $1[\"sessionStorage\"]; })"
+        js_getSessionStorage :: WindowSessionStorage -> IO Storage
+-- | <https://developer.mozilla.org/docs/Web/API/Window/sessionStorage MDN WindowSessionStorage.sessionStorage documentation>
+getSessionStorage :: (MonadDOM m, IsWindowSessionStorage self) => self -> m Storage
+getSessionStorage self = liftDOM ((js_getSessionStorage ((Types.toWindowSessionStorage self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Worker.hs b/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
@@ -1,60 +1,47 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.Worker
-       (js_newWorker, newWorker, js_terminate, terminate, js_postMessage,
-        postMessage, message, Worker(..), gTypeWorker)
+       (js_newWorker, js_newWorker', js_postMessage, js_postMessageOptions, js_terminate, newWorker, newWorker', postMessage, postMessageOptions, terminate, Worker(..), gTypeWorker)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return new window[\"Worker\"]($1); })"
-        js_newWorker :: JSString -> IO Worker
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation> 
-newWorker ::
-          (MonadIO m, ToJSString scriptUrl) => scriptUrl -> m Worker
-newWorker scriptUrl = liftIO (js_newWorker (toJSString scriptUrl))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"terminate\"](); })" js_terminate
-        :: Worker -> IO ()
+foreign import javascript safe "(($1) => { return new globalThis[\"Worker\"]($1); })"
+        js_newWorker :: TrustedScriptURLOrString -> IO Worker
+-- | <https://developer.mozilla.org/docs/Web/API/Worker/Worker MDN Worker. documentation>
+newWorker :: (MonadDOM m, IsTrustedScriptURLOrString scriptURL) => scriptURL -> m Worker
+newWorker scriptURL = liftDOM ((js_newWorker (Types.toTrustedScriptURLOrString scriptURL)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.terminate Mozilla Worker.terminate documentation> 
-terminate :: (MonadIO m) => Worker -> m ()
-terminate self = liftIO (js_terminate self)
- 
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"Worker\"]($1, $2); })"
+        js_newWorker' :: TrustedScriptURLOrString -> JSVal -> IO Worker
+-- | <https://developer.mozilla.org/docs/Web/API/Worker/Worker MDN Worker. documentation>
+newWorker' :: (MonadDOM m, IsTrustedScriptURLOrString scriptURL, IsWorkerOptions options) => scriptURL -> Maybe options -> m Worker
+newWorker' scriptURL options = liftDOM (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a2' -> js_newWorker' (Types.toTrustedScriptURLOrString scriptURL) a2'))
+
 foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
         js_postMessage :: Worker -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Worker/postMessage MDN Worker.postMessage documentation>
+postMessage :: (MonadDOM m) => Worker -> JSVal -> [GObject] -> m ()
+postMessage self message transfer = liftDOM (void (((toJSVal transfer) >>= \a3' -> js_postMessage (self) (message) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.postMessage Mozilla Worker.postMessage documentation> 
-postMessage ::
-            (MonadIO m, ToJSVal message, IsGObject transfer) =>
-              Worker -> message -> [transfer] -> m ()
-postMessage self message transfer
-  = liftIO
-      (toJSVal transfer >>=
-         \ transfer' ->
-           toJSVal message >>= \ message' -> js_postMessage self message'
-             transfer')
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessageOptions :: Worker -> JSVal -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Worker/postMessage MDN Worker.postMessage documentation>
+postMessageOptions :: (MonadDOM m, IsStructuredSerializeOptions options) => Worker -> JSVal -> Maybe options -> m ()
+postMessageOptions self message options = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_postMessageOptions (self) (message) a3')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.onmessage Mozilla Worker.onmessage documentation> 
-message :: EventName Worker MessageEvent
-message = unsafeEventNameAsync (toJSString "message")
+foreign import javascript safe "(($1) => { return $1[\"terminate\"](); })"
+        js_terminate :: Worker -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/Worker/terminate MDN Worker.terminate documentation>
+terminate :: (MonadDOM m) => Worker -> m ()
+terminate self = liftDOM (void ((js_terminate (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerAndParameters.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerAndParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerAndParameters.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WorkerAndParameters
+       (js_newWorkerAndParameters, js_setWorker, js_getWorker, js_setType, js_getType, newWorkerAndParameters, setWorker, getWorker, setType, getType, getTypeUnsafe, getTypeUnchecked, WorkerAndParameters(..), gTypeWorkerAndParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"worker\": $1}); })"
+        js_newWorkerAndParameters :: Worker -> IO WorkerAndParameters
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-workerandparameters WorkerAndParameters specification>
+newWorkerAndParameters :: (MonadDOM m) => Worker -> m WorkerAndParameters
+newWorkerAndParameters worker = liftDOM ((js_newWorkerAndParameters (worker)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"worker\"] = $2; })"
+        js_setWorker :: WorkerAndParameters -> Worker -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-worker WorkerAndParameters.worker specification>
+setWorker :: (MonadDOM m) => WorkerAndParameters -> Worker -> m ()
+setWorker self val = liftDOM (void ((js_setWorker (self) (val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"worker\"]; })"
+        js_getWorker :: WorkerAndParameters -> IO Worker
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-worker WorkerAndParameters.worker specification>
+getWorker :: (MonadDOM m) => WorkerAndParameters -> m Worker
+getWorker self = liftDOM ((js_getWorker (self)))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: WorkerAndParameters -> JSVal -> IO ()
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-type WorkerAndParameters.type specification>
+setType :: (MonadDOM m) => WorkerAndParameters -> RTCRtpScriptTransformType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: WorkerAndParameters -> IO JSVal
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-type WorkerAndParameters.type specification>
+getType :: (MonadDOM m) => WorkerAndParameters -> m (Maybe RTCRtpScriptTransformType)
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-type WorkerAndParameters.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => WorkerAndParameters -> m RTCRtpScriptTransformType
+getTypeUnsafe self = liftDOM ((((js_getType (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-type WorkerAndParameters.type specification>
+getTypeUnchecked :: (MonadDOM m) => WorkerAndParameters -> m RTCRtpScriptTransformType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
@@ -1,131 +1,69 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
-       (js_fetch, fetch, fetch_, js_close, close, js_importScripts,
-        importScripts, js_getIndexedDB, getIndexedDB, js_getSelf, getSelf,
-        js_getLocation, getLocation, error, offline, online,
-        js_getNavigator, getNavigator, WorkerGlobalScope(..),
-        gTypeWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope)
+       (js_importScripts, js_getSelf, js_getLocation, js_getNavigator, importScripts, getSelf, getLocation, getNavigator, error, languagechange, offline, online, rejectionhandled, unhandledrejection, securitypolicyviolation, WorkerGlobalScope(..), gTypeWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript interruptible
-        "(($1, $2, $3, $c) => { return $1[\"fetch\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_fetch ::
-        WorkerGlobalScope ->
-          JSVal -> Optional RequestInit -> IO (JSVal, Response)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.fetch Mozilla WorkerGlobalScope.fetch documentation> 
-fetch ::
-      (MonadIO m, IsWorkerGlobalScope self, ToJSVal input) =>
-        self -> input -> Maybe RequestInit -> m Response
-fetch self input init
-  = liftIO
-      ((toJSVal input >>=
-          \ input' -> js_fetch (toWorkerGlobalScope self) input'
-          (maybeToOptional init))
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.fetch Mozilla WorkerGlobalScope.fetch documentation> 
-fetch_ ::
-       (MonadIO m, IsWorkerGlobalScope self, ToJSVal input) =>
-         self -> input -> Maybe RequestInit -> m ()
-fetch_ self input init
-  = liftIO
-      (void
-         (toJSVal input >>=
-            \ input' -> js_fetch (toWorkerGlobalScope self) input'
-            (maybeToOptional init)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
-        WorkerGlobalScope -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.close Mozilla WorkerGlobalScope.close documentation> 
-close :: (MonadIO m, IsWorkerGlobalScope self) => self -> m ()
-close self = liftIO (js_close (toWorkerGlobalScope self))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"importScripts\"]($2); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"importScripts\"](...$2); })"
         js_importScripts :: WorkerGlobalScope -> JSVal -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.importScripts Mozilla WorkerGlobalScope.importScripts documentation> 
-importScripts ::
-              (MonadIO m, IsWorkerGlobalScope self, ToJSString urls) =>
-                self -> [urls] -> m ()
-importScripts self urls
-  = liftIO
-      (toJSVal urls >>=
-         \ urls' -> js_importScripts (toWorkerGlobalScope self) urls')
- 
-foreign import javascript unsafe "(($1) => { return $1[\"indexedDB\"]; })"
-        js_getIndexedDB :: WorkerGlobalScope -> IO IDBFactory
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerGlobalScope/importScripts MDN WorkerGlobalScope.importScripts documentation>
+importScripts :: (MonadDOM m, IsWorkerGlobalScope self, IsTrustedScriptURLOrString urls) => self -> [urls] -> m ()
+importScripts self urls = liftDOM (void (((toJSVal urls) >>= \a2' -> js_importScripts ((Types.toWorkerGlobalScope self)) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.indexedDB Mozilla WorkerGlobalScope.indexedDB documentation> 
-getIndexedDB ::
-             (MonadIO m, IsWorkerGlobalScope self) => self -> m IDBFactory
-getIndexedDB self
-  = liftIO (js_getIndexedDB (toWorkerGlobalScope self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"self\"]; })" js_getSelf ::
-        WorkerGlobalScope -> IO WorkerGlobalScope
+foreign import javascript unsafe "(($1) => { return $1[\"self\"]; })"
+        js_getSelf :: WorkerGlobalScope -> IO WorkerGlobalScope
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerGlobalScope/self MDN WorkerGlobalScope.self documentation>
+getSelf :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerGlobalScope
+getSelf self = liftDOM ((js_getSelf ((Types.toWorkerGlobalScope self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.self Mozilla WorkerGlobalScope.self documentation> 
-getSelf ::
-        (MonadIO m, IsWorkerGlobalScope self) =>
-          self -> m WorkerGlobalScope
-getSelf self = liftIO (js_getSelf (toWorkerGlobalScope self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
-        :: WorkerGlobalScope -> IO WorkerLocation
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })"
+        js_getLocation :: WorkerGlobalScope -> IO WorkerLocation
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerGlobalScope/location MDN WorkerGlobalScope.location documentation>
+getLocation :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerLocation
+getLocation self = liftDOM ((js_getLocation ((Types.toWorkerGlobalScope self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.location Mozilla WorkerGlobalScope.location documentation> 
-getLocation ::
-            (MonadIO m, IsWorkerGlobalScope self) => self -> m WorkerLocation
-getLocation self
-  = liftIO (js_getLocation (toWorkerGlobalScope self))
+foreign import javascript unsafe "(($1) => { return $1[\"navigator\"]; })"
+        js_getNavigator :: WorkerGlobalScope -> IO WorkerNavigator
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerGlobalScope/navigator MDN WorkerGlobalScope.navigator documentation>
+getNavigator :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerNavigator
+getNavigator self = liftDOM ((js_getNavigator ((Types.toWorkerGlobalScope self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.onerror Mozilla WorkerGlobalScope.onerror documentation> 
-error ::
-      (IsWorkerGlobalScope self, IsEventTarget self) =>
-        EventName self UIEvent
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-workerglobalscope-onerror error event>
+error :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self Event
 error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.onoffline Mozilla WorkerGlobalScope.onoffline documentation> 
-offline ::
-        (IsWorkerGlobalScope self, IsEventTarget self) =>
-          EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-workerglobalscope-onlanguagechange languagechange event>
+languagechange :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self Event
+languagechange = unsafeEventName (toJSString "languagechange")
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-workerglobalscope-onoffline offline event>
+offline :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self Event
 offline = unsafeEventName (toJSString "offline")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.ononline Mozilla WorkerGlobalScope.ononline documentation> 
-online ::
-       (IsWorkerGlobalScope self, IsEventTarget self) =>
-         EventName self Event
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-workerglobalscope-ononline online event>
+online :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self Event
 online = unsafeEventName (toJSString "online")
- 
-foreign import javascript unsafe "(($1) => { return $1[\"navigator\"]; })"
-        js_getNavigator :: WorkerGlobalScope -> IO WorkerNavigator
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.navigator Mozilla WorkerGlobalScope.navigator documentation> 
-getNavigator ::
-             (MonadIO m, IsWorkerGlobalScope self) => self -> m WorkerNavigator
-getNavigator self
-  = liftIO (js_getNavigator (toWorkerGlobalScope self))
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-workerglobalscope-onrejectionhandled rejectionhandled event>
+rejectionhandled :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self PromiseRejectionEvent
+rejectionhandled = unsafeEventName (toJSString "rejectionhandled")
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#handler-workerglobalscope-onunhandledrejection unhandledrejection event>
+unhandledrejection :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self PromiseRejectionEvent
+unhandledrejection = unsafeEventName (toJSString "unhandledrejection")
+
+-- | <https://w3c.github.io/webappsec-csp/#eventdef-globaleventhandlers-securitypolicyviolation securitypolicyviolation event>
+securitypolicyviolation :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self SecurityPolicyViolationEvent
+securitypolicyviolation = unsafeEventName (toJSString "securitypolicyviolation")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
@@ -1,102 +1,71 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WorkerLocation
-       (js_getHref, getHref, js_getProtocol, getProtocol, js_getHost,
-        getHost, js_getHostname, getHostname, js_getPort, getPort,
-        js_getPathname, getPathname, js_getSearch, getSearch, js_getHash,
-        getHash, js_getOrigin, getOrigin, WorkerLocation(..),
-        gTypeWorkerLocation)
+       (js_getHref, js_getOrigin, js_getProtocol, js_getHost, js_getHostname, js_getPort, js_getPathname, js_getSearch, js_getHash, getHref, getOrigin, getProtocol, getHost, getHostname, getPort, getPathname, getSearch, getHash, WorkerLocation(..), gTypeWorkerLocation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
-        WorkerLocation -> IO JSString
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.href Mozilla WorkerLocation.href documentation> 
-getHref ::
-        (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getHref self = liftIO (fromJSString <$> (js_getHref self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
-        :: WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })"
+        js_getHref :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/href MDN WorkerLocation.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHref self = liftDOM ((fromJSString <$> (js_getHref (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.protocol Mozilla WorkerLocation.protocol documentation> 
-getProtocol ::
-            (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
-        WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })"
+        js_getOrigin :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/origin MDN WorkerLocation.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getOrigin self = liftDOM ((fromJSString <$> (js_getOrigin (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.host Mozilla WorkerLocation.host documentation> 
-getHost ::
-        (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getHost self = liftIO (fromJSString <$> (js_getHost self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
-        :: WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })"
+        js_getProtocol :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/protocol MDN WorkerLocation.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getProtocol self = liftDOM ((fromJSString <$> (js_getProtocol (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hostname Mozilla WorkerLocation.hostname documentation> 
-getHostname ::
-            (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getHostname self = liftIO (fromJSString <$> (js_getHostname self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
-        WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })"
+        js_getHost :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/host MDN WorkerLocation.host documentation>
+getHost :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHost self = liftDOM ((fromJSString <$> (js_getHost (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.port Mozilla WorkerLocation.port documentation> 
-getPort ::
-        (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getPort self = liftIO (fromJSString <$> (js_getPort self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
-        :: WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })"
+        js_getHostname :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/hostname MDN WorkerLocation.hostname documentation>
+getHostname :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHostname self = liftDOM ((fromJSString <$> (js_getHostname (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.pathname Mozilla WorkerLocation.pathname documentation> 
-getPathname ::
-            (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getPathname self = liftIO (fromJSString <$> (js_getPathname self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
-        WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })"
+        js_getPort :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/port MDN WorkerLocation.port documentation>
+getPort :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getPort self = liftDOM ((fromJSString <$> (js_getPort (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.search Mozilla WorkerLocation.search documentation> 
-getSearch ::
-          (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getSearch self = liftIO (fromJSString <$> (js_getSearch self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
-        WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })"
+        js_getPathname :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/pathname MDN WorkerLocation.pathname documentation>
+getPathname :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getPathname self = liftDOM ((fromJSString <$> (js_getPathname (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hash Mozilla WorkerLocation.hash documentation> 
-getHash ::
-        (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getHash self = liftIO (fromJSString <$> (js_getHash self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
-        WorkerLocation -> IO JSString
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })"
+        js_getSearch :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/search MDN WorkerLocation.search documentation>
+getSearch :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getSearch self = liftDOM ((fromJSString <$> (js_getSearch (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.origin Mozilla WorkerLocation.origin documentation> 
-getOrigin ::
-          (MonadIO m, FromJSString result) => WorkerLocation -> m result
-getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })"
+        js_getHash :: WorkerLocation -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/hash MDN WorkerLocation.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHash self = liftDOM ((fromJSString <$> (js_getHash (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
@@ -1,46 +1,41 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WorkerNavigator
-       (js_getWebkitTemporaryStorage, getWebkitTemporaryStorage,
-        js_getWebkitPersistentStorage, getWebkitPersistentStorage,
-        WorkerNavigator(..), gTypeWorkerNavigator)
+       (js_getMediaCapabilities, js_getPermissions, js_getSerial, js_getServiceWorker, getMediaCapabilities, getPermissions, getSerial, getServiceWorker, WorkerNavigator(..), gTypeWorkerNavigator)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitTemporaryStorage\"]; })"
-        js_getWebkitTemporaryStorage :: WorkerNavigator -> IO StorageQuota
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
-getWebkitTemporaryStorage ::
-                          (MonadIO m) => WorkerNavigator -> m StorageQuota
-getWebkitTemporaryStorage self
-  = liftIO (js_getWebkitTemporaryStorage self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"webkitPersistentStorage\"]; })"
-        js_getWebkitPersistentStorage :: WorkerNavigator -> IO StorageQuota
+foreign import javascript unsafe "(($1) => { return $1[\"mediaCapabilities\"]; })"
+        js_getMediaCapabilities :: WorkerNavigator -> IO MediaCapabilities
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/mediaCapabilities MDN WorkerNavigator.mediaCapabilities documentation>
+getMediaCapabilities :: (MonadDOM m) => WorkerNavigator -> m MediaCapabilities
+getMediaCapabilities self = liftDOM ((js_getMediaCapabilities (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitPersistentStorage Mozilla WorkerNavigator.webkitPersistentStorage documentation> 
-getWebkitPersistentStorage ::
-                           (MonadIO m) => WorkerNavigator -> m StorageQuota
-getWebkitPersistentStorage self
-  = liftIO (js_getWebkitPersistentStorage self)
+foreign import javascript unsafe "(($1) => { return $1[\"permissions\"]; })"
+        js_getPermissions :: WorkerNavigator -> IO Permissions
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/permissions MDN WorkerNavigator.permissions documentation>
+getPermissions :: (MonadDOM m) => WorkerNavigator -> m Permissions
+getPermissions self = liftDOM ((js_getPermissions (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serial\"]; })"
+        js_getSerial :: WorkerNavigator -> IO Serial
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/serial MDN WorkerNavigator.serial documentation>
+getSerial :: (MonadDOM m) => WorkerNavigator -> m Serial
+getSerial self = liftDOM ((js_getSerial (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"serviceWorker\"]; })"
+        js_getServiceWorker :: WorkerNavigator -> IO ServiceWorkerContainer
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/serviceWorker MDN WorkerNavigator.serviceWorker documentation>
+getServiceWorker :: (MonadDOM m) => WorkerNavigator -> m ServiceWorkerContainer
+getServiceWorker self = liftDOM ((js_getServiceWorker (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerOptions.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WorkerOptions
+       (js_newWorkerOptions, js_setName, js_getName, js_setType, js_getType, js_setCredentials, js_getCredentials, newWorkerOptions, setName, getName, getNameUnsafe, getNameUnchecked, setType, getType, getTypeUnsafe, getTypeUnchecked, setCredentials, getCredentials, getCredentialsUnsafe, getCredentialsUnchecked, WorkerOptions(..), gTypeWorkerOptions, IsWorkerOptions, toWorkerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWorkerOptions :: IO WorkerOptions
+-- | <https://html.spec.whatwg.org/multipage/workers.html#workeroptions WorkerOptions specification>
+newWorkerOptions :: (MonadDOM m) => m WorkerOptions
+newWorkerOptions = liftDOM ((js_newWorkerOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })"
+        js_setName :: WorkerOptions -> JSString -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-name WorkerOptions.name specification>
+setName :: (MonadDOM m, IsWorkerOptions self, ToJSString val) => self -> val -> m ()
+setName self val = liftDOM (void ((js_setName ((Types.toWorkerOptions self)) (toJSString val))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })"
+        js_getName :: WorkerOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-name WorkerOptions.name specification>
+getName :: (MonadDOM m, IsWorkerOptions self, FromJSString result) => self -> m (Maybe result)
+getName self = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getName ((Types.toWorkerOptions self)))))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-name WorkerOptions.name specification>
+getNameUnsafe :: (MonadDOM m, IsWorkerOptions self, HasCallStack, FromJSString result) => self -> m result
+getNameUnsafe self = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getName ((Types.toWorkerOptions self)))) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-name WorkerOptions.name specification>
+getNameUnchecked :: (MonadDOM m, IsWorkerOptions self, FromJSString result) => self -> m result
+getNameUnchecked self = liftDOM ((pFromJSVal <$> (js_getName ((Types.toWorkerOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: WorkerOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-type WorkerOptions.type specification>
+setType :: (MonadDOM m, IsWorkerOptions self) => self -> WorkerType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType ((Types.toWorkerOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: WorkerOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-type WorkerOptions.type specification>
+getType :: (MonadDOM m, IsWorkerOptions self) => self -> m (Maybe WorkerType)
+getType self = liftDOM (((js_getType ((Types.toWorkerOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-type WorkerOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, IsWorkerOptions self, HasCallStack) => self -> m WorkerType
+getTypeUnsafe self = liftDOM ((((js_getType ((Types.toWorkerOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-type WorkerOptions.type specification>
+getTypeUnchecked :: (MonadDOM m, IsWorkerOptions self) => self -> m WorkerType
+getTypeUnchecked self = liftDOM ((pFromJSVal <$> (js_getType ((Types.toWorkerOptions self)))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credentials\"] = $2; })"
+        js_setCredentials :: WorkerOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-credentials WorkerOptions.credentials specification>
+setCredentials :: (MonadDOM m, IsWorkerOptions self) => self -> RequestCredentials -> m ()
+setCredentials self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCredentials ((Types.toWorkerOptions self)) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credentials\"]; })"
+        js_getCredentials :: WorkerOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-credentials WorkerOptions.credentials specification>
+getCredentials :: (MonadDOM m, IsWorkerOptions self) => self -> m (Maybe RequestCredentials)
+getCredentials self = liftDOM (((js_getCredentials ((Types.toWorkerOptions self))) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-credentials WorkerOptions.credentials specification>
+getCredentialsUnsafe :: (MonadDOM m, IsWorkerOptions self, HasCallStack) => self -> m RequestCredentials
+getCredentialsUnsafe self = liftDOM ((((js_getCredentials ((Types.toWorkerOptions self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-workeroptions-credentials WorkerOptions.credentials specification>
+getCredentialsUnchecked :: (MonadDOM m, IsWorkerOptions self) => self -> m RequestCredentials
+getCredentialsUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredentials ((Types.toWorkerOptions self)))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Worklet.hs b/src/GHCJS/DOM/JSFFI/Generated/Worklet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Worklet.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.Worklet
+       (js_addModule, addModule, Worklet(..), gTypeWorklet, IsWorklet, toWorklet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript interruptible "(($1, $2, $3, $c) => { return $1[\"addModule\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_addModule :: Worklet -> JSString -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/Worklet/addModule MDN Worklet.addModule documentation>
+addModule :: (MonadDOM m, IsWorklet self, ToJSString moduleURL) => self -> moduleURL -> Maybe WorkletOptions -> m ()
+addModule self moduleURL options = liftDOM (void ((((P.maybe (P.return jsUndefined) toJSVal options) >>= \a3' -> js_addModule ((Types.toWorklet self)) (toJSString moduleURL) a3') >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkletGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkletGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkletGlobalScope.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WorkletGlobalScope
+       (WorkletGlobalScope(..), gTypeWorkletGlobalScope, IsWorkletGlobalScope, toWorkletGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkletOptions.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkletOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkletOptions.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WorkletOptions
+       (js_newWorkletOptions, js_setCredentials, js_getCredentials, newWorkletOptions, setCredentials, getCredentials, getCredentialsUnsafe, getCredentialsUnchecked, WorkletOptions(..), gTypeWorkletOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(() => { return ({}); })"
+        js_newWorkletOptions :: IO WorkletOptions
+-- | <https://html.spec.whatwg.org/multipage/worklets.html#workletoptions WorkletOptions specification>
+newWorkletOptions :: (MonadDOM m) => m WorkletOptions
+newWorkletOptions = liftDOM ((js_newWorkletOptions))
+
+foreign import javascript safe "(($1, $2) => { $1[\"credentials\"] = $2; })"
+        js_setCredentials :: WorkletOptions -> JSVal -> IO ()
+-- | <https://html.spec.whatwg.org/multipage/worklets.html#dom-workletoptions-credentials WorkletOptions.credentials specification>
+setCredentials :: (MonadDOM m) => WorkletOptions -> RequestCredentials -> m ()
+setCredentials self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setCredentials (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"credentials\"]; })"
+        js_getCredentials :: WorkletOptions -> IO JSVal
+-- | <https://html.spec.whatwg.org/multipage/worklets.html#dom-workletoptions-credentials WorkletOptions.credentials specification>
+getCredentials :: (MonadDOM m) => WorkletOptions -> m (Maybe RequestCredentials)
+getCredentials self = liftDOM (((js_getCredentials (self)) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/worklets.html#dom-workletoptions-credentials WorkletOptions.credentials specification>
+getCredentialsUnsafe :: (MonadDOM m, HasCallStack) => WorkletOptions -> m RequestCredentials
+getCredentialsUnsafe self = liftDOM ((((js_getCredentials (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://html.spec.whatwg.org/multipage/worklets.html#dom-workletoptions-credentials WorkletOptions.credentials specification>
+getCredentialsUnchecked :: (MonadDOM m) => WorkletOptions -> m RequestCredentials
+getCredentialsUnchecked self = liftDOM ((pFromJSVal <$> (js_getCredentials (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs b/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
@@ -1,116 +1,57 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.WritableStream
-       (js_newWritableStream, newWritableStream, js_abort, abort, abort_,
-        js_close, close, close_, js_write, write, write_, js_getClosed,
-        getClosed, js_getReady, getReady, js_getState, getState,
-        WritableStream(..), gTypeWritableStream)
+       (js_newWritableStream, js_newWritableStream', js_abort, js_close, js_getWriter, js_getLocked, newWritableStream, newWritableStream', abort, close, getWriter, getWriter_, getLocked, WritableStream(..), gTypeWritableStream, IsWritableStream, toWritableStream)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"WritableStream\"](); })"
-        js_newWritableStream :: IO WritableStream
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream Mozilla WritableStream documentation> 
-newWritableStream :: (MonadIO m) => m WritableStream
-newWritableStream = liftIO (js_newWritableStream)
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"abort\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_abort :: WritableStream -> Optional JSVal -> IO (JSVal, JSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.abort Mozilla WritableStream.abort documentation> 
-abort ::
-      (MonadIO m, ToJSVal reason) =>
-        WritableStream -> Maybe reason -> m JSVal
-abort self reason
-  = liftIO
-      ((mapM toJSVal reason >>=
-          \ reason' -> js_abort self (maybeToOptional reason'))
-         >>= checkPromiseResult)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.abort Mozilla WritableStream.abort documentation> 
-abort_ ::
-       (MonadIO m, ToJSVal reason) =>
-         WritableStream -> Maybe reason -> m ()
-abort_ self reason
-  = liftIO
-      (void
-         (mapM toJSVal reason >>=
-            \ reason' -> js_abort self (maybeToOptional reason')))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_close :: WritableStream -> IO (JSVal, JSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.close Mozilla WritableStream.close documentation> 
-close :: (MonadIO m) => WritableStream -> m JSVal
-close self = liftIO ((js_close self) >>= checkPromiseResult)
+foreign import javascript safe "(() => { return new globalThis[\"WritableStream\"](); })"
+        js_newWritableStream :: IO WritableStream
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/WritableStream MDN WritableStream. documentation>
+newWritableStream :: (MonadDOM m) => m WritableStream
+newWritableStream = liftDOM ((js_newWritableStream))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.close Mozilla WritableStream.close documentation> 
-close_ :: (MonadIO m) => WritableStream -> m ()
-close_ self = liftIO (void (js_close self))
- 
-foreign import javascript interruptible
-        "(($1, $2, $c) => { return $1[\"write\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_write :: WritableStream -> JSVal -> IO (JSVal, JSVal)
+foreign import javascript safe "(($1, $2) => { return new globalThis[\"WritableStream\"]($1, $2); })"
+        js_newWritableStream' :: JSVal -> JSVal -> IO WritableStream
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/WritableStream MDN WritableStream. documentation>
+newWritableStream' :: (MonadDOM m) => Maybe GObject -> Maybe QueuingStrategy -> m WritableStream
+newWritableStream' underlyingSink strategy = liftDOM (((P.maybe (P.return jsUndefined) toJSVal underlyingSink) >>= \a1' -> (P.maybe (P.return jsUndefined) toJSVal strategy) >>= \a2' -> js_newWritableStream' a1' a2'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.write Mozilla WritableStream.write documentation> 
-write ::
-      (MonadIO m, ToJSVal chunk) => WritableStream -> chunk -> m JSVal
-write self chunk
-  = liftIO
-      ((toJSVal chunk >>= \ chunk' -> js_write self chunk') >>=
-         checkPromiseResult)
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"abort\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_abort :: WritableStream -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/abort MDN WritableStream.abort documentation>
+abort :: (MonadDOM m, IsWritableStream self) => self -> JSVal -> m ()
+abort self reason = liftDOM (void (((js_abort ((Types.toWritableStream self)) (reason)) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.write Mozilla WritableStream.write documentation> 
-write_ ::
-       (MonadIO m, ToJSVal chunk) => WritableStream -> chunk -> m ()
-write_ self chunk
-  = liftIO
-      (void (toJSVal chunk >>= \ chunk' -> js_write self chunk'))
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getClosed :: WritableStream -> IO (JSVal, Bool)
+foreign import javascript interruptible "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: WritableStream -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/close MDN WritableStream.close documentation>
+close :: (MonadDOM m, IsWritableStream self) => self -> m ()
+close self = liftDOM (void (((js_close ((Types.toWritableStream self))) >>= checkPromiseResult)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.closed Mozilla WritableStream.closed documentation> 
-getClosed :: (MonadIO m) => WritableStream -> m Bool
-getClosed self
-  = liftIO ((js_getClosed self) >>= checkPromiseResult)
- 
-foreign import javascript interruptible
-        "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
-        js_getReady :: WritableStream -> IO (JSVal, Bool)
+foreign import javascript safe "(($1) => { return $1[\"getWriter\"](); })"
+        js_getWriter :: WritableStream -> IO WritableStreamDefaultWriter
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter MDN WritableStream.getWriter documentation>
+getWriter :: (MonadDOM m, IsWritableStream self) => self -> m WritableStreamDefaultWriter
+getWriter self = liftDOM ((js_getWriter ((Types.toWritableStream self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.ready Mozilla WritableStream.ready documentation> 
-getReady :: (MonadIO m) => WritableStream -> m Bool
-getReady self = liftIO ((js_getReady self) >>= checkPromiseResult)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
-        WritableStream -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter MDN WritableStream.getWriter documentation>
+getWriter_ :: (MonadDOM m, IsWritableStream self) => self -> m ()
+getWriter_ self = liftDOM (void ((js_getWriter ((Types.toWritableStream self)))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.state Mozilla WritableStream.state documentation> 
-getState ::
-         (MonadIO m, FromJSString result) => WritableStream -> m result
-getState self = liftIO (fromJSString <$> (js_getState self))
+foreign import javascript unsafe "(($1) => { return $1[\"locked\"]; })"
+        js_getLocked :: WritableStream -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/locked MDN WritableStream.locked documentation>
+getLocked :: (MonadDOM m, IsWritableStream self) => self -> m Bool
+getLocked self = liftDOM ((js_getLocked ((Types.toWritableStream self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WritableStreamDefaultController.hs b/src/GHCJS/DOM/JSFFI/Generated/WritableStreamDefaultController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WritableStreamDefaultController.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WritableStreamDefaultController
+       (js_error, js_getSignal, error, getSignal, WritableStreamDefaultController(..), gTypeWritableStreamDefaultController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2) => { return $1[\"error\"]($2); })"
+        js_error :: WritableStreamDefaultController -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/error MDN WritableStreamDefaultController.error documentation>
+error :: (MonadDOM m) => WritableStreamDefaultController -> JSVal -> m ()
+error self e = liftDOM (void ((js_error (self) (e))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"signal\"]; })"
+        js_getSignal :: WritableStreamDefaultController -> IO AbortSignal
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/signal MDN WritableStreamDefaultController.signal documentation>
+getSignal :: (MonadDOM m) => WritableStreamDefaultController -> m AbortSignal
+getSignal self = liftDOM ((js_getSignal (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WritableStreamDefaultWriter.hs b/src/GHCJS/DOM/JSFFI/Generated/WritableStreamDefaultWriter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WritableStreamDefaultWriter.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WritableStreamDefaultWriter
+       (js_newWritableStreamDefaultWriter, js_abort, js_close, js_releaseLock, js_write, js_getClosed, js_getDesiredSize, js_getReady, newWritableStreamDefaultWriter, abort, close, releaseLock, write, getClosed, getDesiredSize, getDesiredSizeUnsafe, getDesiredSizeUnchecked, getReady, WritableStreamDefaultWriter(..), gTypeWritableStreamDefaultWriter, IsWritableStreamDefaultWriter, toWritableStreamDefaultWriter)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return new globalThis[\"WritableStreamDefaultWriter\"]($1); })"
+        js_newWritableStreamDefaultWriter :: WritableStream -> IO WritableStreamDefaultWriter
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/WritableStreamDefaultWriter MDN WritableStreamDefaultWriter. documentation>
+newWritableStreamDefaultWriter :: (MonadDOM m, IsWritableStream stream) => stream -> m WritableStreamDefaultWriter
+newWritableStreamDefaultWriter stream = liftDOM ((js_newWritableStreamDefaultWriter (Types.toWritableStream stream)))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"abort\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_abort :: WritableStreamDefaultWriter -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/abort MDN WritableStreamDefaultWriter.abort documentation>
+abort :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> JSVal -> m ()
+abort self reason = liftDOM (void (((js_abort ((Types.toWritableStreamDefaultWriter self)) (reason)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: WritableStreamDefaultWriter -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/close MDN WritableStreamDefaultWriter.close documentation>
+close :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+close self = liftDOM (void (((js_close ((Types.toWritableStreamDefaultWriter self))) >>= checkPromiseResult)))
+
+foreign import javascript safe "(($1) => { return $1[\"releaseLock\"](); })"
+        js_releaseLock :: WritableStreamDefaultWriter -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/releaseLock MDN WritableStreamDefaultWriter.releaseLock documentation>
+releaseLock :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+releaseLock self = liftDOM (void ((js_releaseLock ((Types.toWritableStreamDefaultWriter self)))))
+
+foreign import javascript interruptible "(($1, $2, $c) => { return $1[\"write\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_write :: WritableStreamDefaultWriter -> JSVal -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/write MDN WritableStreamDefaultWriter.write documentation>
+write :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> JSVal -> m ()
+write self chunk = liftDOM (void (((js_write ((Types.toWritableStreamDefaultWriter self)) (chunk)) >>= checkPromiseResult)))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: WritableStreamDefaultWriter -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/closed MDN WritableStreamDefaultWriter.closed documentation>
+getClosed :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+getClosed self = liftDOM (void (((js_getClosed ((Types.toWritableStreamDefaultWriter self))) >>= checkPromiseResult)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"desiredSize\"]; })"
+        js_getDesiredSize :: WritableStreamDefaultWriter -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/desiredSize MDN WritableStreamDefaultWriter.desiredSize documentation>
+getDesiredSize :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m (Maybe Double)
+getDesiredSize self = liftDOM (((js_getDesiredSize ((Types.toWritableStreamDefaultWriter self))) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/desiredSize MDN WritableStreamDefaultWriter.desiredSize documentation>
+getDesiredSizeUnsafe :: (MonadDOM m, IsWritableStreamDefaultWriter self, HasCallStack) => self -> m Double
+getDesiredSizeUnsafe self = liftDOM ((((js_getDesiredSize ((Types.toWritableStreamDefaultWriter self))) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/desiredSize MDN WritableStreamDefaultWriter.desiredSize documentation>
+getDesiredSizeUnchecked :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m Double
+getDesiredSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getDesiredSize ((Types.toWritableStreamDefaultWriter self)))))
+
+foreign import javascript interruptible "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: WritableStreamDefaultWriter -> IO (JSVal, ())
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/ready MDN WritableStreamDefaultWriter.ready documentation>
+getReady :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+getReady self = liftDOM (void (((js_getReady ((Types.toWritableStreamDefaultWriter self))) >>= checkPromiseResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WriteParams.hs b/src/GHCJS/DOM/JSFFI/Generated/WriteParams.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WriteParams.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.WriteParams
+       (js_newWriteParams, js_setType, js_getType, js_setSize, js_getSize, js_setPosition, js_getPosition, js_setData, js_getData, newWriteParams, setType, getType, setSize, getSize, getSizeUnsafe, getSizeUnchecked, setPosition, getPosition, getPositionUnsafe, getPositionUnchecked, setData, getData, getDataUnsafe, getDataUnchecked, WriteParams(..), gTypeWriteParams)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1) => { return ({\"type\": $1}); })"
+        js_newWriteParams :: JSVal -> IO WriteParams
+-- | <https://fs.spec.whatwg.org/#dictdef-writeparams WriteParams specification>
+newWriteParams :: (MonadDOM m) => WriteCommandType -> m WriteParams
+newWriteParams type' = liftDOM (((toJSVal type') >>= \a1' -> js_newWriteParams a1'))
+
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })"
+        js_setType :: WriteParams -> JSVal -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-type WriteParams.type specification>
+setType :: (MonadDOM m) => WriteParams -> WriteCommandType -> m ()
+setType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setType (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })"
+        js_getType :: WriteParams -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-type WriteParams.type specification>
+getType :: (MonadDOM m) => WriteParams -> m WriteCommandType
+getType self = liftDOM (((js_getType (self)) >>= fromJSValUnchecked))
+
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })"
+        js_setSize :: WriteParams -> JSVal -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-size WriteParams.size specification>
+setSize :: (MonadDOM m) => WriteParams -> Maybe Word53 -> m ()
+setSize self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setSize (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })"
+        js_getSize :: WriteParams -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-size WriteParams.size specification>
+getSize :: (MonadDOM m) => WriteParams -> m (Maybe Word53)
+getSize self = liftDOM (((js_getSize (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-size WriteParams.size specification>
+getSizeUnsafe :: (MonadDOM m, HasCallStack) => WriteParams -> m Word53
+getSizeUnsafe self = liftDOM ((((js_getSize (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-size WriteParams.size specification>
+getSizeUnchecked :: (MonadDOM m) => WriteParams -> m Word53
+getSizeUnchecked self = liftDOM ((pFromJSVal <$> (js_getSize (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"position\"] = $2; })"
+        js_setPosition :: WriteParams -> JSVal -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-position WriteParams.position specification>
+setPosition :: (MonadDOM m) => WriteParams -> Maybe Word53 -> m ()
+setPosition self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setPosition (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })"
+        js_getPosition :: WriteParams -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-position WriteParams.position specification>
+getPosition :: (MonadDOM m) => WriteParams -> m (Maybe Word53)
+getPosition self = liftDOM (((js_getPosition (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-position WriteParams.position specification>
+getPositionUnsafe :: (MonadDOM m, HasCallStack) => WriteParams -> m Word53
+getPositionUnsafe self = liftDOM ((((js_getPosition (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-position WriteParams.position specification>
+getPositionUnchecked :: (MonadDOM m) => WriteParams -> m Word53
+getPositionUnchecked self = liftDOM ((pFromJSVal <$> (js_getPosition (self))))
+
+foreign import javascript safe "(($1, $2) => { $1[\"data\"] = $2; })"
+        js_setData :: WriteParams -> JSVal -> IO ()
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-data WriteParams.data specification>
+setData :: (MonadDOM m, IsBlobPart val) => WriteParams -> Maybe val -> m ()
+setData self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setData (self) a2')))
+
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })"
+        js_getData :: WriteParams -> IO JSVal
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-data WriteParams.data specification>
+getData :: (MonadDOM m) => WriteParams -> m (Maybe BlobPart)
+getData self = liftDOM (((js_getData (self)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-data WriteParams.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => WriteParams -> m BlobPart
+getDataUnsafe self = liftDOM ((((js_getData (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-data WriteParams.data specification>
+getDataUnchecked :: (MonadDOM m) => WriteParams -> m BlobPart
+getDataUnchecked self = liftDOM ((pFromJSVal <$> (js_getData (self))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLDocument.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLDocument.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.XMLDocument
+       (XMLDocument(..), gTypeXMLDocument)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
@@ -1,325 +1,193 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XMLHttpRequest
-       (js_newXMLHttpRequest, newXMLHttpRequest, js_openSimple,
-        openSimple, js_open, open, js_setRequestHeader, setRequestHeader,
-        js_send, send, js_abort, abort, js_getResponseHeader,
-        getResponseHeader, getResponseHeader_, getResponseHeaderUnsafe,
-        getResponseHeaderUnchecked, js_getAllResponseHeaders,
-        getAllResponseHeaders, getAllResponseHeaders_, js_overrideMimeType,
-        overrideMimeType, pattern UNSENT, pattern OPENED,
-        pattern HEADERS_RECEIVED, pattern LOADING, pattern DONE,
-        readyStateChange, js_getReadyState, getReadyState, js_setTimeout,
-        setTimeout, js_getTimeout, getTimeout, js_setWithCredentials,
-        setWithCredentials, js_getWithCredentials, getWithCredentials,
-        js_getUpload, getUpload, js_getResponseURL, getResponseURL,
-        js_getStatus, getStatus, js_getStatusText, getStatusText,
-        js_setResponseType, setResponseType, js_getResponseType,
-        getResponseType, js_getResponse, getResponse, js_getResponseText,
-        getResponseText, getResponseTextUnsafe, getResponseTextUnchecked,
-        js_getResponseXML, getResponseXML, getResponseXMLUnsafe,
-        getResponseXMLUnchecked, XMLHttpRequest(..), gTypeXMLHttpRequest)
+       (js_newXMLHttpRequest, js_abort, js_getAllResponseHeaders, js_getResponseHeader, js_openSimple, js_open, js_overrideMimeType, js_send, js_setRequestHeader, js_getReadyState, js_setTimeout, js_getTimeout, js_setWithCredentials, js_getWithCredentials, js_getUpload, js_getResponseURL, js_getStatus, js_getStatusText, js_setResponseType, js_getResponseType, js_getResponse, js_getResponseText, js_getResponseXML, newXMLHttpRequest, abort, getAllResponseHeaders, getAllResponseHeaders_, getResponseHeader, getResponseHeader_, getResponseHeaderUnsafe, getResponseHeaderUnchecked, openSimple, open, overrideMimeType, send, setRequestHeader, getReadyState, setTimeout, getTimeout, setWithCredentials, getWithCredentials, getUpload, getResponseURL, getStatus, getStatusText, setResponseType, getResponseType, getResponse, getResponseText, getResponseXML, getResponseXMLUnsafe, getResponseXMLUnchecked, pattern UNSENT, pattern OPENED, pattern HEADERS_RECEIVED, pattern LOADING, pattern DONE, readyStateChange, XMLHttpRequest(..), gTypeXMLHttpRequest)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"XMLHttpRequest\"](); })"
-        js_newXMLHttpRequest :: IO XMLHttpRequest
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation> 
-newXMLHttpRequest :: (MonadIO m) => m XMLHttpRequest
-newXMLHttpRequest = liftIO (js_newXMLHttpRequest)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"open\"]($2, $3); })" js_openSimple
-        :: XMLHttpRequest -> JSString -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
-openSimple ::
-           (MonadIO m, ToJSString method, ToJSString url) =>
-             XMLHttpRequest -> method -> url -> m ()
-openSimple self method url
-  = liftIO (js_openSimple self (toJSString method) (toJSString url))
- 
-foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"open\"]($2, $3, $4, $5, $6); })"
-        js_open ::
-        XMLHttpRequest ->
-          JSString ->
-            JSString -> Bool -> Optional JSString -> Optional JSString -> IO ()
+foreign import javascript safe "(() => { return new globalThis[\"XMLHttpRequest\"](); })"
+        js_newXMLHttpRequest :: IO XMLHttpRequest
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/XMLHttpRequest MDN XMLHttpRequest. documentation>
+newXMLHttpRequest :: (MonadDOM m) => m XMLHttpRequest
+newXMLHttpRequest = liftDOM ((js_newXMLHttpRequest))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
-open ::
-     (MonadIO m, ToJSString method, ToJSString url, ToJSString user,
-      ToJSString password) =>
-       XMLHttpRequest ->
-         method -> url -> Bool -> Maybe user -> Maybe password -> m ()
-open self method url async user password
-  = liftIO
-      (js_open self (toJSString method) (toJSString url) async
-         (toOptionalJSString user)
-         (toOptionalJSString password))
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"setRequestHeader\"]($2, $3); })"
-        js_setRequestHeader ::
-        XMLHttpRequest -> JSString -> JSString -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })"
+        js_abort :: XMLHttpRequest -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/abort MDN XMLHttpRequest.abort documentation>
+abort :: (MonadDOM m) => XMLHttpRequest -> m ()
+abort self = liftDOM (void ((js_abort (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.setRequestHeader Mozilla XMLHttpRequest.setRequestHeader documentation> 
-setRequestHeader ::
-                 (MonadIO m, ToJSString header, ToJSString value) =>
-                   XMLHttpRequest -> header -> value -> m ()
-setRequestHeader self header value
-  = liftIO
-      (js_setRequestHeader self (toJSString header) (toJSString value))
- 
-foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_send ::
-        XMLHttpRequest -> Optional XMLHttpRequestBody -> IO ()
+foreign import javascript safe "(($1) => { return $1[\"getAllResponseHeaders\"](); })"
+        js_getAllResponseHeaders :: XMLHttpRequest -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getAllResponseHeaders MDN XMLHttpRequest.getAllResponseHeaders documentation>
+getAllResponseHeaders :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getAllResponseHeaders self = liftDOM ((fromJSString <$> (js_getAllResponseHeaders (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.send Mozilla XMLHttpRequest.send documentation> 
-send ::
-     (MonadIO m, IsXMLHttpRequestBody body) =>
-       XMLHttpRequest -> Maybe body -> m ()
-send self body
-  = liftIO
-      (mapM toJSVal body >>=
-         \ body' ->
-           js_send self (maybeToOptional (fmap XMLHttpRequestBody body')))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"abort\"](); })" js_abort ::
-        XMLHttpRequest -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getAllResponseHeaders MDN XMLHttpRequest.getAllResponseHeaders documentation>
+getAllResponseHeaders_ :: (MonadDOM m) => XMLHttpRequest -> m ()
+getAllResponseHeaders_ self = liftDOM (void ((js_getAllResponseHeaders (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.abort Mozilla XMLHttpRequest.abort documentation> 
-abort :: (MonadIO m) => XMLHttpRequest -> m ()
-abort self = liftIO (js_abort self)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"getResponseHeader\"]($2); })"
-        js_getResponseHeader ::
-        XMLHttpRequest -> JSString -> IO (Nullable JSString)
+foreign import javascript safe "(($1, $2) => { return $1[\"getResponseHeader\"]($2); })"
+        js_getResponseHeader :: XMLHttpRequest -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getResponseHeader MDN XMLHttpRequest.getResponseHeader documentation>
+getResponseHeader :: (MonadDOM m, ToJSString name, FromJSString result) => XMLHttpRequest -> name -> m (Maybe result)
+getResponseHeader self name = liftDOM (((fromMaybeJSString . Nullable) <$> (js_getResponseHeader (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
-getResponseHeader ::
-                  (MonadIO m, ToJSString name, FromJSString result) =>
-                    XMLHttpRequest -> name -> m (Maybe result)
-getResponseHeader self name
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getResponseHeader self (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getResponseHeader MDN XMLHttpRequest.getResponseHeader documentation>
+getResponseHeader_ :: (MonadDOM m, ToJSString name) => XMLHttpRequest -> name -> m ()
+getResponseHeader_ self name = liftDOM (void ((js_getResponseHeader (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
-getResponseHeader_ ::
-                   (MonadIO m, ToJSString name) => XMLHttpRequest -> name -> m ()
-getResponseHeader_ self name
-  = liftIO (void (js_getResponseHeader self (toJSString name)))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getResponseHeader MDN XMLHttpRequest.getResponseHeader documentation>
+getResponseHeaderUnsafe :: (MonadDOM m, ToJSString name, HasCallStack, FromJSString result) => XMLHttpRequest -> name -> m result
+getResponseHeaderUnsafe self name = liftDOM ((((fromMaybeJSString . Nullable) <$> (js_getResponseHeader (self) (toJSString name))) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
-getResponseHeaderUnsafe ::
-                        (MonadIO m, ToJSString name, HasCallStack, FromJSString result) =>
-                          XMLHttpRequest -> name -> m result
-getResponseHeaderUnsafe self name
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getResponseHeader self (toJSString name)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getResponseHeader MDN XMLHttpRequest.getResponseHeader documentation>
+getResponseHeaderUnchecked :: (MonadDOM m, ToJSString name, FromJSString result) => XMLHttpRequest -> name -> m result
+getResponseHeaderUnchecked self name = liftDOM ((pFromJSVal <$> (js_getResponseHeader (self) (toJSString name))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
-getResponseHeaderUnchecked ::
-                           (MonadIO m, ToJSString name, FromJSString result) =>
-                             XMLHttpRequest -> name -> m result
-getResponseHeaderUnchecked self name
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getResponseHeader self (toJSString name)))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"getAllResponseHeaders\"](); })"
-        js_getAllResponseHeaders :: XMLHttpRequest -> IO JSString
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"open\"]($2, $3); })"
+        js_openSimple :: XMLHttpRequest -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/open MDN XMLHttpRequest.open documentation>
+openSimple :: (MonadDOM m, ToJSString method, ToJSString url) => XMLHttpRequest -> method -> url -> m ()
+openSimple self method url = liftDOM (void ((js_openSimple (self) (toJSString method) (toJSString url))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
-getAllResponseHeaders ::
-                      (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
-getAllResponseHeaders self
-  = liftIO (fromJSString <$> (js_getAllResponseHeaders self))
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"open\"]($2, $3, $4, $5, $6); })"
+        js_open :: XMLHttpRequest -> JSString -> JSString -> Bool -> (Nullable JSString) -> (Nullable JSString) -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/open MDN XMLHttpRequest.open documentation>
+open :: (MonadDOM m, ToJSString method, ToJSString url, ToJSString username, ToJSString password) => XMLHttpRequest -> method -> url -> Bool -> Maybe username -> Maybe password -> m ()
+open self method url async username password = liftDOM (void ((js_open (self) (toJSString method) (toJSString url) (async) (toMaybeJSString username) (toMaybeJSString password))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
-getAllResponseHeaders_ :: (MonadIO m) => XMLHttpRequest -> m ()
-getAllResponseHeaders_ self
-  = liftIO (void (js_getAllResponseHeaders self))
- 
 foreign import javascript safe "(($1, $2) => { return $1[\"overrideMimeType\"]($2); })"
         js_overrideMimeType :: XMLHttpRequest -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/overrideMimeType MDN XMLHttpRequest.overrideMimeType documentation>
+overrideMimeType :: (MonadDOM m, ToJSString mime) => XMLHttpRequest -> mime -> m ()
+overrideMimeType self mime = liftDOM (void ((js_overrideMimeType (self) (toJSString mime))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.overrideMimeType Mozilla XMLHttpRequest.overrideMimeType documentation> 
-overrideMimeType ::
-                 (MonadIO m, ToJSString mime) => XMLHttpRequest -> mime -> m ()
-overrideMimeType self mime
-  = liftIO (js_overrideMimeType self (toJSString mime))
-pattern UNSENT = 0
-pattern OPENED = 1
-pattern HEADERS_RECEIVED = 2
-pattern LOADING = 3
-pattern DONE = 4
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })"
+        js_send :: XMLHttpRequest -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/send MDN XMLHttpRequest.send documentation>
+send :: (MonadDOM m, IsDocumentOrXMLHttpRequestBodyInit body) => XMLHttpRequest -> Maybe body -> m ()
+send self body = liftDOM (void (((toJSVal body) >>= \a2' -> js_send (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onreadystatechange Mozilla XMLHttpRequest.onreadystatechange documentation> 
-readyStateChange :: EventName XMLHttpRequest Event
-readyStateChange
-  = unsafeEventNameAsync (toJSString "readystatechange")
- 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setRequestHeader\"]($2, $3); })"
+        js_setRequestHeader :: XMLHttpRequest -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/setRequestHeader MDN XMLHttpRequest.setRequestHeader documentation>
+setRequestHeader :: (MonadDOM m, ToJSString name, ToJSString value) => XMLHttpRequest -> name -> value -> m ()
+setRequestHeader self name value = liftDOM (void ((js_setRequestHeader (self) (toJSString name) (toJSString value))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
         js_getReadyState :: XMLHttpRequest -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/readyState MDN XMLHttpRequest.readyState documentation>
+getReadyState :: (MonadDOM m) => XMLHttpRequest -> m Word
+getReadyState self = liftDOM ((js_getReadyState (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.readyState Mozilla XMLHttpRequest.readyState documentation> 
-getReadyState :: (MonadIO m) => XMLHttpRequest -> m Word
-getReadyState self = liftIO (js_getReadyState self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
         js_setTimeout :: XMLHttpRequest -> Word -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/timeout MDN XMLHttpRequest.timeout documentation>
+setTimeout :: (MonadDOM m) => XMLHttpRequest -> Word -> m ()
+setTimeout self val = liftDOM (void ((js_setTimeout (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
-setTimeout :: (MonadIO m) => XMLHttpRequest -> Word -> m ()
-setTimeout self val = liftIO (js_setTimeout self val)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })" js_getTimeout ::
-        XMLHttpRequest -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })"
+        js_getTimeout :: XMLHttpRequest -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/timeout MDN XMLHttpRequest.timeout documentation>
+getTimeout :: (MonadDOM m) => XMLHttpRequest -> m Word
+getTimeout self = liftDOM ((js_getTimeout (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
-getTimeout :: (MonadIO m) => XMLHttpRequest -> m Word
-getTimeout self = liftIO (js_getTimeout self)
- 
 foreign import javascript safe "(($1, $2) => { $1[\"withCredentials\"] = $2; })"
         js_setWithCredentials :: XMLHttpRequest -> Bool -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/withCredentials MDN XMLHttpRequest.withCredentials documentation>
+setWithCredentials :: (MonadDOM m) => XMLHttpRequest -> Bool -> m ()
+setWithCredentials self val = liftDOM (void ((js_setWithCredentials (self) (val))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
-setWithCredentials :: (MonadIO m) => XMLHttpRequest -> Bool -> m ()
-setWithCredentials self val
-  = liftIO (js_setWithCredentials self val)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"withCredentials\"] ? 1 : 0); })" js_getWithCredentials ::
-        XMLHttpRequest -> IO Bool
+foreign import javascript unsafe "(($1) => { return $1[\"withCredentials\"]; })"
+        js_getWithCredentials :: XMLHttpRequest -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/withCredentials MDN XMLHttpRequest.withCredentials documentation>
+getWithCredentials :: (MonadDOM m) => XMLHttpRequest -> m Bool
+getWithCredentials self = liftDOM ((js_getWithCredentials (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
-getWithCredentials :: (MonadIO m) => XMLHttpRequest -> m Bool
-getWithCredentials self = liftIO (js_getWithCredentials self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"upload\"]; })" js_getUpload ::
-        XMLHttpRequest -> IO XMLHttpRequestUpload
+foreign import javascript unsafe "(($1) => { return $1[\"upload\"]; })"
+        js_getUpload :: XMLHttpRequest -> IO XMLHttpRequestUpload
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/upload MDN XMLHttpRequest.upload documentation>
+getUpload :: (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestUpload
+getUpload self = liftDOM ((js_getUpload (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.upload Mozilla XMLHttpRequest.upload documentation> 
-getUpload ::
-          (MonadIO m) => XMLHttpRequest -> m XMLHttpRequestUpload
-getUpload self = liftIO (js_getUpload self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"responseURL\"]; })"
         js_getResponseURL :: XMLHttpRequest -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseURL MDN XMLHttpRequest.responseURL documentation>
+getResponseURL :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getResponseURL self = liftDOM ((fromJSString <$> (js_getResponseURL (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseURL Mozilla XMLHttpRequest.responseURL documentation> 
-getResponseURL ::
-               (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
-getResponseURL self
-  = liftIO (fromJSString <$> (js_getResponseURL self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
-        XMLHttpRequest -> IO Word
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })"
+        js_getStatus :: XMLHttpRequest -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/status MDN XMLHttpRequest.status documentation>
+getStatus :: (MonadDOM m) => XMLHttpRequest -> m Word
+getStatus self = liftDOM ((js_getStatus (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.status Mozilla XMLHttpRequest.status documentation> 
-getStatus :: (MonadIO m) => XMLHttpRequest -> m Word
-getStatus self = liftIO (js_getStatus self)
- 
 foreign import javascript unsafe "(($1) => { return $1[\"statusText\"]; })"
         js_getStatusText :: XMLHttpRequest -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/statusText MDN XMLHttpRequest.statusText documentation>
+getStatusText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getStatusText self = liftDOM ((fromJSString <$> (js_getStatusText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.statusText Mozilla XMLHttpRequest.statusText documentation> 
-getStatusText ::
-              (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
-getStatusText self
-  = liftIO (fromJSString <$> (js_getStatusText self))
- 
 foreign import javascript safe "(($1, $2) => { $1[\"responseType\"] = $2; })"
         js_setResponseType :: XMLHttpRequest -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseType MDN XMLHttpRequest.responseType documentation>
+setResponseType :: (MonadDOM m) => XMLHttpRequest -> XMLHttpRequestResponseType -> m ()
+setResponseType self val = liftDOM (void (((toJSVal val) >>= \a2' -> js_setResponseType (self) a2')))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
-setResponseType ::
-                (MonadIO m) => XMLHttpRequest -> XMLHttpRequestResponseType -> m ()
-setResponseType self val
-  = liftIO (js_setResponseType self (pToJSVal val))
- 
 foreign import javascript unsafe "(($1) => { return $1[\"responseType\"]; })"
         js_getResponseType :: XMLHttpRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseType MDN XMLHttpRequest.responseType documentation>
+getResponseType :: (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestResponseType
+getResponseType self = liftDOM (((js_getResponseType (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
-getResponseType ::
-                (MonadIO m) => XMLHttpRequest -> m XMLHttpRequestResponseType
-getResponseType self
-  = liftIO ((js_getResponseType self) >>= fromJSValUnchecked)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"response\"]; })" js_getResponse
-        :: XMLHttpRequest -> IO JSVal
+foreign import javascript unsafe "(($1) => { return $1[\"response\"]; })"
+        js_getResponse :: XMLHttpRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/response MDN XMLHttpRequest.response documentation>
+getResponse :: (MonadDOM m) => XMLHttpRequest -> m JSVal
+getResponse self = liftDOM ((js_getResponse (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
-getResponse :: (MonadIO m) => XMLHttpRequest -> m JSVal
-getResponse self = liftIO (js_getResponse self)
- 
-foreign import javascript safe "(($1) => { return $1[\"responseText\"]; })"
-        js_getResponseText :: XMLHttpRequest -> IO (Nullable JSString)
+foreign import javascript unsafe "(($1) => { return $1[\"responseText\"]; })"
+        js_getResponseText :: XMLHttpRequest -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseText MDN XMLHttpRequest.responseText documentation>
+getResponseText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getResponseText self = liftDOM ((fromJSString <$> (js_getResponseText (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
-getResponseText ::
-                (MonadIO m, FromJSString result) =>
-                  XMLHttpRequest -> m (Maybe result)
-getResponseText self
-  = liftIO (fromMaybeJSString <$> (js_getResponseText self))
+foreign import javascript unsafe "(($1) => { return $1[\"responseXML\"]; })"
+        js_getResponseXML :: XMLHttpRequest -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseXML MDN XMLHttpRequest.responseXML documentation>
+getResponseXML :: (MonadDOM m) => XMLHttpRequest -> m (Maybe Document)
+getResponseXML self = liftDOM (((js_getResponseXML (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
-getResponseTextUnsafe ::
-                      (MonadIO m, HasCallStack, FromJSString result) =>
-                        XMLHttpRequest -> m result
-getResponseTextUnsafe self
-  = liftIO
-      ((fromMaybeJSString <$> (js_getResponseText self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseXML MDN XMLHttpRequest.responseXML documentation>
+getResponseXMLUnsafe :: (MonadDOM m, HasCallStack) => XMLHttpRequest -> m Document
+getResponseXMLUnsafe self = liftDOM ((((js_getResponseXML (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
-getResponseTextUnchecked ::
-                         (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
-getResponseTextUnchecked self
-  = liftIO
-      (fromJust . fromMaybeJSString <$> (js_getResponseText self))
- 
-foreign import javascript safe "(($1) => { return $1[\"responseXML\"]; })"
-        js_getResponseXML :: XMLHttpRequest -> IO (Nullable Document)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseXML MDN XMLHttpRequest.responseXML documentation>
+getResponseXMLUnchecked :: (MonadDOM m) => XMLHttpRequest -> m Document
+getResponseXMLUnchecked self = liftDOM ((pFromJSVal <$> (js_getResponseXML (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
-getResponseXML ::
-               (MonadIO m) => XMLHttpRequest -> m (Maybe Document)
-getResponseXML self
-  = liftIO (nullableToMaybe <$> (js_getResponseXML self))
+pattern UNSENT = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
-getResponseXMLUnsafe ::
-                     (MonadIO m, HasCallStack) => XMLHttpRequest -> m Document
-getResponseXMLUnsafe self
-  = liftIO
-      ((nullableToMaybe <$> (js_getResponseXML self)) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern OPENED = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
-getResponseXMLUnchecked ::
-                        (MonadIO m) => XMLHttpRequest -> m Document
-getResponseXMLUnchecked self
-  = liftIO (fromJust . nullableToMaybe <$> (js_getResponseXML self))
+pattern HEADERS_RECEIVED = 2
+
+pattern LOADING = 3
+
+pattern DONE = 4
+
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-onreadystatechange readystatechange event>
+readyStateChange :: EventName XMLHttpRequest Event
+readyStateChange = unsafeEventNameAsync (toJSString "readystatechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
@@ -1,70 +1,45 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget
-       (loadStart, progress, abortEvent, error, load, timeout, loadEnd,
-        XMLHttpRequestEventTarget(..), gTypeXMLHttpRequestEventTarget,
-        IsXMLHttpRequestEventTarget, toXMLHttpRequestEventTarget)
+       (loadStart, progress, abortEvent, error, load, timeout, loadEnd, XMLHttpRequestEventTarget(..), gTypeXMLHttpRequestEventTarget, IsXMLHttpRequestEventTarget, toXMLHttpRequestEventTarget)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onloadstart Mozilla XMLHttpRequestEventTarget.onloadstart documentation> 
-loadStart ::
-          (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
-            EventName self ProgressEvent
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-onloadstart loadstart event>
+loadStart :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent
 loadStart = unsafeEventNameAsync (toJSString "loadstart")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onprogress Mozilla XMLHttpRequestEventTarget.onprogress documentation> 
-progress ::
-         (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
-           EventName self XMLHttpRequestProgressEvent
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-onprogress progress event>
+progress :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent
 progress = unsafeEventNameAsync (toJSString "progress")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onabort Mozilla XMLHttpRequestEventTarget.onabort documentation> 
-abortEvent ::
-           (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
-             EventName self XMLHttpRequestProgressEvent
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-onabort abort event>
+abortEvent :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent
 abortEvent = unsafeEventNameAsync (toJSString "abort")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onerror Mozilla XMLHttpRequestEventTarget.onerror documentation> 
-error ::
-      (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
-        EventName self XMLHttpRequestProgressEvent
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-onerror error event>
+error :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent
 error = unsafeEventNameAsync (toJSString "error")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onload Mozilla XMLHttpRequestEventTarget.onload documentation> 
-load ::
-     (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
-       EventName self XMLHttpRequestProgressEvent
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-onload load event>
+load :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent
 load = unsafeEventNameAsync (toJSString "load")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.ontimeout Mozilla XMLHttpRequestEventTarget.ontimeout documentation> 
-timeout ::
-        (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
-          EventName self ProgressEvent
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-ontimeout timeout event>
+timeout :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent
 timeout = unsafeEventNameAsync (toJSString "timeout")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onloadend Mozilla XMLHttpRequestEventTarget.onloadend documentation> 
-loadEnd ::
-        (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
-          EventName self ProgressEvent
+-- | <https://xhr.spec.whatwg.org/#handler-xhr-onloadend loadend event>
+loadEnd :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent
 loadEnd = unsafeEventNameAsync (toJSString "loadend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
-       (js_getPosition, getPosition, js_getTotalSize, getTotalSize,
-        XMLHttpRequestProgressEvent(..), gTypeXMLHttpRequestProgressEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })" js_getPosition
-        :: XMLHttpRequestProgressEvent -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.position Mozilla XMLHttpRequestProgressEvent.position documentation> 
-getPosition ::
-            (MonadIO m) => XMLHttpRequestProgressEvent -> m Word64
-getPosition self = liftIO (round <$> (js_getPosition self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"totalSize\"]; })"
-        js_getTotalSize :: XMLHttpRequestProgressEvent -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.totalSize Mozilla XMLHttpRequestProgressEvent.totalSize documentation> 
-getTotalSize ::
-             (MonadIO m) => XMLHttpRequestProgressEvent -> m Word64
-getTotalSize self = liftIO (round <$> (js_getTotalSize self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestUpload.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestUpload.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestUpload.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload
+       (XMLHttpRequestUpload(..), gTypeXMLHttpRequestUpload)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
@@ -1,52 +1,33 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XMLSerializer
-       (js_newXMLSerializer, newXMLSerializer, js_serializeToString,
-        serializeToString, serializeToString_, XMLSerializer(..),
-        gTypeXMLSerializer)
+       (js_newXMLSerializer, js_serializeToString, newXMLSerializer, serializeToString, serializeToString_, XMLSerializer(..), gTypeXMLSerializer)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"XMLSerializer\"](); })"
+
+foreign import javascript safe "(() => { return new globalThis[\"XMLSerializer\"](); })"
         js_newXMLSerializer :: IO XMLSerializer
+-- | <https://developer.mozilla.org/docs/Web/API/XMLSerializer/XMLSerializer MDN XMLSerializer. documentation>
+newXMLSerializer :: (MonadDOM m) => m XMLSerializer
+newXMLSerializer = liftDOM ((js_newXMLSerializer))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation> 
-newXMLSerializer :: (MonadIO m) => m XMLSerializer
-newXMLSerializer = liftIO (js_newXMLSerializer)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"serializeToString\"]($2); })"
+foreign import javascript safe "(($1, $2) => { return $1[\"serializeToString\"]($2); })"
         js_serializeToString :: XMLSerializer -> Node -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer.serializeToString Mozilla XMLSerializer.serializeToString documentation> 
-serializeToString ::
-                  (MonadIO m, IsNode node, FromJSString result) =>
-                    XMLSerializer -> node -> m result
-serializeToString self node
-  = liftIO
-      (fromJSString <$> (js_serializeToString self (toNode node)))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLSerializer/serializeToString MDN XMLSerializer.serializeToString documentation>
+serializeToString :: (MonadDOM m, IsNode root, FromJSString result) => XMLSerializer -> root -> m result
+serializeToString self root = liftDOM ((fromJSString <$> (js_serializeToString (self) (Types.toNode root))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer.serializeToString Mozilla XMLSerializer.serializeToString documentation> 
-serializeToString_ ::
-                   (MonadIO m, IsNode node) => XMLSerializer -> node -> m ()
-serializeToString_ self node
-  = liftIO (void (js_serializeToString self (toNode node)))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLSerializer/serializeToString MDN XMLSerializer.serializeToString documentation>
+serializeToString_ :: (MonadDOM m, IsNode root) => XMLSerializer -> root -> m ()
+serializeToString_ self root = liftDOM (void ((js_serializeToString (self) (Types.toNode root))))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
@@ -1,124 +1,23 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XPathEvaluator
-       (js_newXPathEvaluator, newXPathEvaluator, js_createExpression,
-        createExpression, createExpression_, js_createNSResolver,
-        createNSResolver, createNSResolver_, js_evaluate, evaluate,
-        evaluate_, XPathEvaluator(..), gTypeXPathEvaluator)
+       (js_newXPathEvaluator, newXPathEvaluator, XPathEvaluator(..), gTypeXPathEvaluator)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"XPathEvaluator\"](); })"
-        js_newXPathEvaluator :: IO XPathEvaluator
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
-newXPathEvaluator :: (MonadIO m) => m XPathEvaluator
-newXPathEvaluator = liftIO (js_newXPathEvaluator)
- 
-foreign import javascript safe "(($1, $2, $3) => { return $1[\"createExpression\"]($2, $3); })"
-        js_createExpression ::
-        XPathEvaluator ->
-          Optional JSString -> Optional XPathNSResolver -> IO XPathExpression
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
-createExpression ::
-                 (MonadIO m, ToJSString expression) =>
-                   XPathEvaluator ->
-                     Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
-createExpression self expression resolver
-  = liftIO
-      (js_createExpression self (toOptionalJSString expression)
-         (maybeToOptional resolver))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
-createExpression_ ::
-                  (MonadIO m, ToJSString expression) =>
-                    XPathEvaluator -> Maybe expression -> Maybe XPathNSResolver -> m ()
-createExpression_ self expression resolver
-  = liftIO
-      (void
-         (js_createExpression self (toOptionalJSString expression)
-            (maybeToOptional resolver)))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"createNSResolver\"]($2); })"
-        js_createNSResolver ::
-        XPathEvaluator -> Optional Node -> IO XPathNSResolver
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
-createNSResolver ::
-                 (MonadIO m, IsNode nodeResolver) =>
-                   XPathEvaluator -> Maybe nodeResolver -> m XPathNSResolver
-createNSResolver self nodeResolver
-  = liftIO
-      (js_createNSResolver self
-         (maybeToOptional (fmap toNode nodeResolver)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
-createNSResolver_ ::
-                  (MonadIO m, IsNode nodeResolver) =>
-                    XPathEvaluator -> Maybe nodeResolver -> m ()
-createNSResolver_ self nodeResolver
-  = liftIO
-      (void
-         (js_createNSResolver self
-            (maybeToOptional (fmap toNode nodeResolver))))
- 
-foreign import javascript safe
-        "(($1, $2, $3, $4, $5, $6) => { return $1[\"evaluate\"]($2, $3, $4, $5,\n$6); })" js_evaluate ::
-        XPathEvaluator ->
-          Optional JSString ->
-            Optional Node ->
-              Optional XPathNSResolver ->
-                Optional Word -> Optional XPathResult -> IO XPathResult
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
-evaluate ::
-         (MonadIO m, ToJSString expression, IsNode contextNode) =>
-           XPathEvaluator ->
-             Maybe expression ->
-               Maybe contextNode ->
-                 Maybe XPathNSResolver ->
-                   Maybe Word -> Maybe XPathResult -> m XPathResult
-evaluate self expression contextNode resolver type' inResult
-  = liftIO
-      (js_evaluate self (toOptionalJSString expression)
-         (maybeToOptional (fmap toNode contextNode))
-         (maybeToOptional resolver)
-         (maybeToOptional type')
-         (maybeToOptional inResult))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
-evaluate_ ::
-          (MonadIO m, ToJSString expression, IsNode contextNode) =>
-            XPathEvaluator ->
-              Maybe expression ->
-                Maybe contextNode ->
-                  Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m ()
-evaluate_ self expression contextNode resolver type' inResult
-  = liftIO
-      (void
-         (js_evaluate self (toOptionalJSString expression)
-            (maybeToOptional (fmap toNode contextNode))
-            (maybeToOptional resolver)
-            (maybeToOptional type')
-            (maybeToOptional inResult)))
+foreign import javascript safe "(() => { return new globalThis[\"XPathEvaluator\"](); })"
+        js_newXPathEvaluator :: IO XPathEvaluator
+-- | <https://developer.mozilla.org/docs/Web/API/XPathEvaluator/XPathEvaluator MDN XPathEvaluator. documentation>
+newXPathEvaluator :: (MonadDOM m) => m XPathEvaluator
+newXPathEvaluator = liftDOM ((js_newXPathEvaluator))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluatorBase.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluatorBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluatorBase.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module GHCJS.DOM.JSFFI.Generated.XPathEvaluatorBase
+       (js_createExpression, js_createNSResolver, js_evaluate, createExpression, createExpression_, createNSResolver, createNSResolver_, evaluate, evaluate_, XPathEvaluatorBase(..), gTypeXPathEvaluatorBase, IsXPathEvaluatorBase, toXPathEvaluatorBase)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import GHCJS.DOM.Types
+import qualified GHCJS.DOM.Types as Types
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createExpression\"]($2, $3); })"
+        js_createExpression :: XPathEvaluatorBase -> JSString -> JSVal -> IO XPathExpression
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createExpression MDN XPathEvaluatorBase.createExpression documentation>
+createExpression :: (MonadDOM m, IsXPathEvaluatorBase self, ToJSString expression) => self -> expression -> Maybe XPathNSResolver -> m XPathExpression
+createExpression self expression resolver = liftDOM (((toJSVal resolver) >>= \a3' -> js_createExpression ((Types.toXPathEvaluatorBase self)) (toJSString expression) a3'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createExpression MDN XPathEvaluatorBase.createExpression documentation>
+createExpression_ :: (MonadDOM m, IsXPathEvaluatorBase self, ToJSString expression) => self -> expression -> Maybe XPathNSResolver -> m ()
+createExpression_ self expression resolver = liftDOM (void (((toJSVal resolver) >>= \a3' -> js_createExpression ((Types.toXPathEvaluatorBase self)) (toJSString expression) a3')))
+
+foreign import javascript safe "(($1, $2) => { return $1[\"createNSResolver\"]($2); })"
+        js_createNSResolver :: XPathEvaluatorBase -> Node -> IO Node
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createNSResolver MDN XPathEvaluatorBase.createNSResolver documentation>
+createNSResolver :: (MonadDOM m, IsXPathEvaluatorBase self, IsNode nodeResolver) => self -> nodeResolver -> m Node
+createNSResolver self nodeResolver = liftDOM ((js_createNSResolver ((Types.toXPathEvaluatorBase self)) (Types.toNode nodeResolver)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createNSResolver MDN XPathEvaluatorBase.createNSResolver documentation>
+createNSResolver_ :: (MonadDOM m, IsXPathEvaluatorBase self, IsNode nodeResolver) => self -> nodeResolver -> m ()
+createNSResolver_ self nodeResolver = liftDOM (void ((js_createNSResolver ((Types.toXPathEvaluatorBase self)) (Types.toNode nodeResolver))))
+
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"evaluate\"]($2, $3, $4, $5, $6); })"
+        js_evaluate :: XPathEvaluatorBase -> JSString -> Node -> JSVal -> JSVal -> JSVal -> IO XPathResult
+-- | <https://developer.mozilla.org/docs/Web/API/Document/evaluate MDN XPathEvaluatorBase.evaluate documentation>
+evaluate :: (MonadDOM m, IsXPathEvaluatorBase self, ToJSString expression, IsNode contextNode) => self -> expression -> contextNode -> Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m XPathResult
+evaluate self expression contextNode resolver type' result' = liftDOM (((toJSVal resolver) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal type') >>= \a5' -> (toJSVal result') >>= \a6' -> js_evaluate ((Types.toXPathEvaluatorBase self)) (toJSString expression) (Types.toNode contextNode) a4' a5' a6'))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/evaluate MDN XPathEvaluatorBase.evaluate documentation>
+evaluate_ :: (MonadDOM m, IsXPathEvaluatorBase self, ToJSString expression, IsNode contextNode) => self -> expression -> contextNode -> Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m ()
+evaluate_ self expression contextNode resolver type' result' = liftDOM (void (((toJSVal resolver) >>= \a4' -> (P.maybe (P.return jsUndefined) toJSVal type') >>= \a5' -> (toJSVal result') >>= \a6' -> js_evaluate ((Types.toXPathEvaluatorBase self)) (toJSString expression) (Types.toNode contextNode) a4' a5' a6')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-module GHCJS.DOM.JSFFI.Generated.XPathException
-       (js_toString, toString, toString_, pattern INVALID_EXPRESSION_ERR,
-        pattern TYPE_ERR, js_getCode, getCode, js_getName, getName,
-        js_getMessage, getMessage, XPathException(..), gTypeXPathException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
-        :: XPathException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.toString Mozilla XPathException.toString documentation> 
-toString ::
-         (MonadIO m, FromJSString result) => XPathException -> m result
-toString self = liftIO (fromJSString <$> (js_toString self))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.toString Mozilla XPathException.toString documentation> 
-toString_ :: (MonadIO m) => XPathException -> m ()
-toString_ self = liftIO (void (js_toString self))
-pattern INVALID_EXPRESSION_ERR = 51
-pattern TYPE_ERR = 52
- 
-foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
-        XPathException -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.code Mozilla XPathException.code documentation> 
-getCode :: (MonadIO m) => XPathException -> m Word
-getCode self = liftIO (js_getCode self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
-        XPathException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.name Mozilla XPathException.name documentation> 
-getName ::
-        (MonadIO m, FromJSString result) => XPathException -> m result
-getName self = liftIO (fromJSString <$> (js_getName self))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
-        XPathException -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.message Mozilla XPathException.message documentation> 
-getMessage ::
-           (MonadIO m, FromJSString result) => XPathException -> m result
-getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
@@ -1,57 +1,27 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XPathExpression
-       (js_evaluate, evaluate, evaluate_, XPathExpression(..),
-        gTypeXPathExpression)
+       (js_evaluate, evaluate, evaluate_, XPathExpression(..), gTypeXPathExpression)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"evaluate\"]($2, $3, $4); })"
-        js_evaluate ::
-        XPathExpression ->
-          Optional Node ->
-            Optional Word -> Optional XPathResult -> IO XPathResult
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
-evaluate ::
-         (MonadIO m, IsNode contextNode) =>
-           XPathExpression ->
-             Maybe contextNode ->
-               Maybe Word -> Maybe XPathResult -> m XPathResult
-evaluate self contextNode type' inResult
-  = liftIO
-      (js_evaluate self (maybeToOptional (fmap toNode contextNode))
-         (maybeToOptional type')
-         (maybeToOptional inResult))
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"evaluate\"]($2, $3, $4); })"
+        js_evaluate :: XPathExpression -> Node -> JSVal -> JSVal -> IO XPathResult
+-- | <https://developer.mozilla.org/docs/Web/API/XPathExpression/evaluate MDN XPathExpression.evaluate documentation>
+evaluate :: (MonadDOM m, IsNode contextNode) => XPathExpression -> contextNode -> Maybe Word -> Maybe XPathResult -> m XPathResult
+evaluate self contextNode type' result' = liftDOM (((P.maybe (P.return jsUndefined) toJSVal type') >>= \a3' -> (toJSVal result') >>= \a4' -> js_evaluate (self) (Types.toNode contextNode) a3' a4'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
-evaluate_ ::
-          (MonadIO m, IsNode contextNode) =>
-            XPathExpression ->
-              Maybe contextNode -> Maybe Word -> Maybe XPathResult -> m ()
-evaluate_ self contextNode type' inResult
-  = liftIO
-      (void
-         (js_evaluate self (maybeToOptional (fmap toNode contextNode))
-            (maybeToOptional type')
-            (maybeToOptional inResult)))
+-- | <https://developer.mozilla.org/docs/Web/API/XPathExpression/evaluate MDN XPathExpression.evaluate documentation>
+evaluate_ :: (MonadDOM m, IsNode contextNode) => XPathExpression -> contextNode -> Maybe Word -> Maybe XPathResult -> m ()
+evaluate_ self contextNode type' result' = liftDOM (void (((P.maybe (P.return jsUndefined) toJSVal type') >>= \a3' -> (toJSVal result') >>= \a4' -> js_evaluate (self) (Types.toNode contextNode) a3' a4')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
@@ -1,69 +1,29 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XPathNSResolver
-       (js_lookupNamespaceURI, lookupNamespaceURI, lookupNamespaceURI_,
-        lookupNamespaceURIUnsafe, lookupNamespaceURIUnchecked,
-        XPathNSResolver(..), gTypeXPathNSResolver)
+       (newXPathNSResolver, newXPathNSResolverSync, newXPathNSResolverAsync, XPathNSResolver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
+import Data.Coerce (coerce)
+import GHC.JS.Foreign.Callback (OnBlocked(..), syncCallback1, asyncCallback1)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"lookupNamespaceURI\"]($2); })"
-        js_lookupNamespaceURI ::
-        XPathNSResolver -> Optional JSString -> IO (Nullable JSString)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURI ::
-                   (MonadIO m, ToJSString prefix, FromJSString result) =>
-                     XPathNSResolver -> Maybe prefix -> m (Maybe result)
-lookupNamespaceURI self prefix
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_lookupNamespaceURI self (toOptionalJSString prefix)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURI_ ::
-                    (MonadIO m, ToJSString prefix) =>
-                      XPathNSResolver -> Maybe prefix -> m ()
-lookupNamespaceURI_ self prefix
-  = liftIO
-      (void (js_lookupNamespaceURI self (toOptionalJSString prefix)))
+newXPathNSResolver :: (MonadDOM m) => (Maybe JSString -> IO ()) -> m XPathNSResolver
+newXPathNSResolver callback = liftDOM ((XPathNSResolver . coerce) <$> syncCallback1 ContinueAsync (\ prefix -> do
+          prefix' <- fromJSValUnchecked prefix
+          callback prefix'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnsafe ::
-                         (MonadIO m, ToJSString prefix, HasCallStack,
-                          FromJSString result) =>
-                           XPathNSResolver -> Maybe prefix -> m result
-lookupNamespaceURIUnsafe self prefix
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_lookupNamespaceURI self (toOptionalJSString prefix)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+newXPathNSResolverSync :: (MonadDOM m) => (Maybe JSString -> IO ()) -> m XPathNSResolver
+newXPathNSResolverSync callback = liftDOM ((XPathNSResolver . coerce) <$> syncCallback1 ThrowWouldBlock (\ prefix -> do
+          prefix' <- fromJSValUnchecked prefix
+          callback prefix'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnchecked ::
-                            (MonadIO m, ToJSString prefix, FromJSString result) =>
-                              XPathNSResolver -> Maybe prefix -> m result
-lookupNamespaceURIUnchecked self prefix
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_lookupNamespaceURI self (toOptionalJSString prefix)))
+newXPathNSResolverAsync :: (MonadDOM m) => (Maybe JSString -> IO ()) -> m XPathNSResolver
+newXPathNSResolverAsync callback = liftDOM ((XPathNSResolver . coerce) <$> asyncCallback1 (\ prefix -> do
+          prefix' <- fromJSValUnchecked prefix
+          callback prefix'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
@@ -1,126 +1,123 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XPathResult
-       (js_iterateNext, iterateNext, iterateNext_, js_snapshotItem,
-        snapshotItem, snapshotItem_, pattern ANY_TYPE, pattern NUMBER_TYPE,
-        pattern STRING_TYPE, pattern BOOLEAN_TYPE,
-        pattern UNORDERED_NODE_ITERATOR_TYPE,
-        pattern ORDERED_NODE_ITERATOR_TYPE,
-        pattern UNORDERED_NODE_SNAPSHOT_TYPE,
-        pattern ORDERED_NODE_SNAPSHOT_TYPE,
-        pattern ANY_UNORDERED_NODE_TYPE, pattern FIRST_ORDERED_NODE_TYPE,
-        js_getResultType, getResultType, js_getNumberValue, getNumberValue,
-        js_getStringValue, getStringValue, js_getBooleanValue,
-        getBooleanValue, js_getSingleNodeValue, getSingleNodeValue,
-        js_getInvalidIteratorState, getInvalidIteratorState,
-        js_getSnapshotLength, getSnapshotLength, XPathResult(..),
-        gTypeXPathResult)
+       (js_iterateNext, js_snapshotItem, js_getResultType, js_getNumberValue, js_getStringValue, js_getBooleanValue, js_getSingleNodeValue, js_getInvalidIteratorState, js_getSnapshotLength, iterateNext, iterateNext_, iterateNextUnsafe, iterateNextUnchecked, snapshotItem, snapshotItem_, snapshotItemUnsafe, snapshotItemUnchecked, getResultType, getNumberValue, getStringValue, getBooleanValue, getSingleNodeValue, getSingleNodeValueUnsafe, getSingleNodeValueUnchecked, getInvalidIteratorState, getSnapshotLength, pattern ANY_TYPE, pattern NUMBER_TYPE, pattern STRING_TYPE, pattern BOOLEAN_TYPE, pattern UNORDERED_NODE_ITERATOR_TYPE, pattern ORDERED_NODE_ITERATOR_TYPE, pattern UNORDERED_NODE_SNAPSHOT_TYPE, pattern ORDERED_NODE_SNAPSHOT_TYPE, pattern ANY_UNORDERED_NODE_TYPE, pattern FIRST_ORDERED_NODE_TYPE, XPathResult(..), gTypeXPathResult)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
+
 foreign import javascript safe "(($1) => { return $1[\"iterateNext\"](); })"
-        js_iterateNext :: XPathResult -> IO Node
+        js_iterateNext :: XPathResult -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/iterateNext MDN XPathResult.iterateNext documentation>
+iterateNext :: (MonadDOM m) => XPathResult -> m (Maybe Node)
+iterateNext self = liftDOM (((js_iterateNext (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
-iterateNext :: (MonadIO m) => XPathResult -> m Node
-iterateNext self = liftIO (js_iterateNext self)
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/iterateNext MDN XPathResult.iterateNext documentation>
+iterateNext_ :: (MonadDOM m) => XPathResult -> m ()
+iterateNext_ self = liftDOM (void ((js_iterateNext (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
-iterateNext_ :: (MonadIO m) => XPathResult -> m ()
-iterateNext_ self = liftIO (void (js_iterateNext self))
- 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/iterateNext MDN XPathResult.iterateNext documentation>
+iterateNextUnsafe :: (MonadDOM m, HasCallStack) => XPathResult -> m Node
+iterateNextUnsafe self = liftDOM ((((js_iterateNext (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/iterateNext MDN XPathResult.iterateNext documentation>
+iterateNextUnchecked :: (MonadDOM m) => XPathResult -> m Node
+iterateNextUnchecked self = liftDOM ((pFromJSVal <$> (js_iterateNext (self))))
+
 foreign import javascript safe "(($1, $2) => { return $1[\"snapshotItem\"]($2); })"
-        js_snapshotItem :: XPathResult -> Optional Word -> IO Node
+        js_snapshotItem :: XPathResult -> Word -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/snapshotItem MDN XPathResult.snapshotItem documentation>
+snapshotItem :: (MonadDOM m) => XPathResult -> Word -> m (Maybe Node)
+snapshotItem self index = liftDOM (((js_snapshotItem (self) (index)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
-snapshotItem :: (MonadIO m) => XPathResult -> Maybe Word -> m Node
-snapshotItem self index
-  = liftIO (js_snapshotItem self (maybeToOptional index))
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/snapshotItem MDN XPathResult.snapshotItem documentation>
+snapshotItem_ :: (MonadDOM m) => XPathResult -> Word -> m ()
+snapshotItem_ self index = liftDOM (void ((js_snapshotItem (self) (index))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
-snapshotItem_ :: (MonadIO m) => XPathResult -> Maybe Word -> m ()
-snapshotItem_ self index
-  = liftIO (void (js_snapshotItem self (maybeToOptional index)))
-pattern ANY_TYPE = 0
-pattern NUMBER_TYPE = 1
-pattern STRING_TYPE = 2
-pattern BOOLEAN_TYPE = 3
-pattern UNORDERED_NODE_ITERATOR_TYPE = 4
-pattern ORDERED_NODE_ITERATOR_TYPE = 5
-pattern UNORDERED_NODE_SNAPSHOT_TYPE = 6
-pattern ORDERED_NODE_SNAPSHOT_TYPE = 7
-pattern ANY_UNORDERED_NODE_TYPE = 8
-pattern FIRST_ORDERED_NODE_TYPE = 9
- 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/snapshotItem MDN XPathResult.snapshotItem documentation>
+snapshotItemUnsafe :: (MonadDOM m, HasCallStack) => XPathResult -> Word -> m Node
+snapshotItemUnsafe self index = liftDOM ((((js_snapshotItem (self) (index)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/snapshotItem MDN XPathResult.snapshotItem documentation>
+snapshotItemUnchecked :: (MonadDOM m) => XPathResult -> Word -> m Node
+snapshotItemUnchecked self index = liftDOM ((pFromJSVal <$> (js_snapshotItem (self) (index))))
+
 foreign import javascript unsafe "(($1) => { return $1[\"resultType\"]; })"
         js_getResultType :: XPathResult -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/resultType MDN XPathResult.resultType documentation>
+getResultType :: (MonadDOM m) => XPathResult -> m Word
+getResultType self = liftDOM ((js_getResultType (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.resultType Mozilla XPathResult.resultType documentation> 
-getResultType :: (MonadIO m) => XPathResult -> m Word
-getResultType self = liftIO (js_getResultType self)
- 
-foreign import javascript safe "(($1) => { return $1[\"numberValue\"]; })"
+foreign import javascript unsafe "(($1) => { return $1[\"numberValue\"]; })"
         js_getNumberValue :: XPathResult -> IO Double
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/numberValue MDN XPathResult.numberValue documentation>
+getNumberValue :: (MonadDOM m) => XPathResult -> m Double
+getNumberValue self = liftDOM ((js_getNumberValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.numberValue Mozilla XPathResult.numberValue documentation> 
-getNumberValue :: (MonadIO m) => XPathResult -> m Double
-getNumberValue self = liftIO (js_getNumberValue self)
- 
-foreign import javascript safe "(($1) => { return $1[\"stringValue\"]; })"
+foreign import javascript unsafe "(($1) => { return $1[\"stringValue\"]; })"
         js_getStringValue :: XPathResult -> IO JSString
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/stringValue MDN XPathResult.stringValue documentation>
+getStringValue :: (MonadDOM m, FromJSString result) => XPathResult -> m result
+getStringValue self = liftDOM ((fromJSString <$> (js_getStringValue (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.stringValue Mozilla XPathResult.stringValue documentation> 
-getStringValue ::
-               (MonadIO m, FromJSString result) => XPathResult -> m result
-getStringValue self
-  = liftIO (fromJSString <$> (js_getStringValue self))
- 
-foreign import javascript safe "(($1) => { return ($1[\"booleanValue\"] ? 1 : 0); })"
+foreign import javascript unsafe "(($1) => { return $1[\"booleanValue\"]; })"
         js_getBooleanValue :: XPathResult -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/booleanValue MDN XPathResult.booleanValue documentation>
+getBooleanValue :: (MonadDOM m) => XPathResult -> m Bool
+getBooleanValue self = liftDOM ((js_getBooleanValue (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.booleanValue Mozilla XPathResult.booleanValue documentation> 
-getBooleanValue :: (MonadIO m) => XPathResult -> m Bool
-getBooleanValue self = liftIO (js_getBooleanValue self)
- 
-foreign import javascript safe "(($1) => { return $1[\"singleNodeValue\"]; })"
-        js_getSingleNodeValue :: XPathResult -> IO Node
+foreign import javascript unsafe "(($1) => { return $1[\"singleNodeValue\"]; })"
+        js_getSingleNodeValue :: XPathResult -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/singleNodeValue MDN XPathResult.singleNodeValue documentation>
+getSingleNodeValue :: (MonadDOM m) => XPathResult -> m (Maybe Node)
+getSingleNodeValue self = liftDOM (((js_getSingleNodeValue (self)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
-getSingleNodeValue :: (MonadIO m) => XPathResult -> m Node
-getSingleNodeValue self = liftIO (js_getSingleNodeValue self)
- 
-foreign import javascript unsafe
-        "(($1) => { return ($1[\"invalidIteratorState\"] ? 1 : 0); })" js_getInvalidIteratorState
-        :: XPathResult -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/singleNodeValue MDN XPathResult.singleNodeValue documentation>
+getSingleNodeValueUnsafe :: (MonadDOM m, HasCallStack) => XPathResult -> m Node
+getSingleNodeValueUnsafe self = liftDOM ((((js_getSingleNodeValue (self)) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.invalidIteratorState Mozilla XPathResult.invalidIteratorState documentation> 
-getInvalidIteratorState :: (MonadIO m) => XPathResult -> m Bool
-getInvalidIteratorState self
-  = liftIO (js_getInvalidIteratorState self)
- 
-foreign import javascript safe "(($1) => { return $1[\"snapshotLength\"]; })"
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/singleNodeValue MDN XPathResult.singleNodeValue documentation>
+getSingleNodeValueUnchecked :: (MonadDOM m) => XPathResult -> m Node
+getSingleNodeValueUnchecked self = liftDOM ((pFromJSVal <$> (js_getSingleNodeValue (self))))
+
+foreign import javascript unsafe "(($1) => { return $1[\"invalidIteratorState\"]; })"
+        js_getInvalidIteratorState :: XPathResult -> IO Bool
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/invalidIteratorState MDN XPathResult.invalidIteratorState documentation>
+getInvalidIteratorState :: (MonadDOM m) => XPathResult -> m Bool
+getInvalidIteratorState self = liftDOM ((js_getInvalidIteratorState (self)))
+
+foreign import javascript unsafe "(($1) => { return $1[\"snapshotLength\"]; })"
         js_getSnapshotLength :: XPathResult -> IO Word
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/snapshotLength MDN XPathResult.snapshotLength documentation>
+getSnapshotLength :: (MonadDOM m) => XPathResult -> m Word
+getSnapshotLength self = liftDOM ((js_getSnapshotLength (self)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotLength Mozilla XPathResult.snapshotLength documentation> 
-getSnapshotLength :: (MonadIO m) => XPathResult -> m Word
-getSnapshotLength self = liftIO (js_getSnapshotLength self)
+pattern ANY_TYPE = 0
+
+pattern NUMBER_TYPE = 1
+
+pattern STRING_TYPE = 2
+
+pattern BOOLEAN_TYPE = 3
+
+pattern UNORDERED_NODE_ITERATOR_TYPE = 4
+
+pattern ORDERED_NODE_ITERATOR_TYPE = 5
+
+pattern UNORDERED_NODE_SNAPSHOT_TYPE = 6
+
+pattern ORDERED_NODE_SNAPSHOT_TYPE = 7
+
+pattern ANY_UNORDERED_NODE_TYPE = 8
+
+pattern FIRST_ORDERED_NODE_TYPE = 9
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs b/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
@@ -1,193 +1,83 @@
 {-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
--- For HasCallStack compatibility
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module GHCJS.DOM.JSFFI.Generated.XSLTProcessor
-       (js_newXSLTProcessor, newXSLTProcessor, js_importStylesheet,
-        importStylesheet, js_transformToFragment, transformToFragment,
-        transformToFragment_, js_transformToDocument, transformToDocument,
-        transformToDocument_, js_setParameter, setParameter,
-        js_getParameter, getParameter, getParameter_, getParameterUnsafe,
-        getParameterUnchecked, js_removeParameter, removeParameter,
-        js_clearParameters, clearParameters, js_reset, reset,
-        XSLTProcessor(..), gTypeXSLTProcessor)
+       (js_newXSLTProcessor, js_clearParameters, js_getParameter, js_importStylesheet, js_removeParameter, js_reset, js_setParameter, js_transformToDocument, js_transformToFragment, newXSLTProcessor, clearParameters, getParameter, getParameter_, importStylesheet, removeParameter, reset, setParameter, transformToDocument, transformToDocument_, transformToFragment, transformToFragment_, XSLTProcessor(..), gTypeXSLTProcessor)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsUndefined, jsNull)
 import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
+import qualified GHCJS.DOM.Types as Types
 import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
- 
-foreign import javascript unsafe "(() => { return new window[\"XSLTProcessor\"](); })"
-        js_newXSLTProcessor :: IO XSLTProcessor
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation> 
-newXSLTProcessor :: (MonadIO m) => m XSLTProcessor
-newXSLTProcessor = liftIO (js_newXSLTProcessor)
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"importStylesheet\"]($2); })"
-        js_importStylesheet :: XSLTProcessor -> Optional Node -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.importStylesheet Mozilla XSLTProcessor.importStylesheet documentation> 
-importStylesheet ::
-                 (MonadIO m, IsNode stylesheet) =>
-                   XSLTProcessor -> Maybe stylesheet -> m ()
-importStylesheet self stylesheet
-  = liftIO
-      (js_importStylesheet self
-         (maybeToOptional (fmap toNode stylesheet)))
- 
-foreign import javascript unsafe
-        "(($1, $2, $3) => { return $1[\"transformToFragment\"]($2,\n$3); })" js_transformToFragment ::
-        XSLTProcessor ->
-          Optional Node -> Optional Document -> IO DocumentFragment
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
-transformToFragment ::
-                    (MonadIO m, IsNode source, IsDocument docVal) =>
-                      XSLTProcessor -> Maybe source -> Maybe docVal -> m DocumentFragment
-transformToFragment self source docVal
-  = liftIO
-      (js_transformToFragment self (maybeToOptional (fmap toNode source))
-         (maybeToOptional (fmap toDocument docVal)))
+foreign import javascript safe "(() => { return new globalThis[\"XSLTProcessor\"](); })"
+        js_newXSLTProcessor :: IO XSLTProcessor
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/XSLTProcessor MDN XSLTProcessor. documentation>
+newXSLTProcessor :: (MonadDOM m) => m XSLTProcessor
+newXSLTProcessor = liftDOM ((js_newXSLTProcessor))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
-transformToFragment_ ::
-                     (MonadIO m, IsNode source, IsDocument docVal) =>
-                       XSLTProcessor -> Maybe source -> Maybe docVal -> m ()
-transformToFragment_ self source docVal
-  = liftIO
-      (void
-         (js_transformToFragment self (maybeToOptional (fmap toNode source))
-            (maybeToOptional (fmap toDocument docVal))))
- 
-foreign import javascript unsafe "(($1, $2) => { return $1[\"transformToDocument\"]($2); })"
-        js_transformToDocument ::
-        XSLTProcessor -> Optional Node -> IO Document
+foreign import javascript safe "(($1) => { return $1[\"clearParameters\"](); })"
+        js_clearParameters :: XSLTProcessor -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/clearParameters MDN XSLTProcessor.clearParameters documentation>
+clearParameters :: (MonadDOM m) => XSLTProcessor -> m ()
+clearParameters self = liftDOM (void ((js_clearParameters (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
-transformToDocument ::
-                    (MonadIO m, IsNode source) =>
-                      XSLTProcessor -> Maybe source -> m Document
-transformToDocument self source
-  = liftIO
-      (js_transformToDocument self
-         (maybeToOptional (fmap toNode source)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getParameter\"]($2, $3); })"
+        js_getParameter :: XSLTProcessor -> JSString -> JSString -> IO JSVal
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/getParameter MDN XSLTProcessor.getParameter documentation>
+getParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> m JSVal
+getParameter self namespaceURI localName = liftDOM ((js_getParameter (self) (toJSString namespaceURI) (toJSString localName)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
-transformToDocument_ ::
-                     (MonadIO m, IsNode source) => XSLTProcessor -> Maybe source -> m ()
-transformToDocument_ self source
-  = liftIO
-      (void
-         (js_transformToDocument self
-            (maybeToOptional (fmap toNode source))))
- 
-foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setParameter\"]($2, $3, $4); })"
-        js_setParameter ::
-        XSLTProcessor ->
-          Optional JSString ->
-            Optional JSString -> Optional JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/getParameter MDN XSLTProcessor.getParameter documentation>
+getParameter_ :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> m ()
+getParameter_ self namespaceURI localName = liftDOM (void ((js_getParameter (self) (toJSString namespaceURI) (toJSString localName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.setParameter Mozilla XSLTProcessor.setParameter documentation> 
-setParameter ::
-             (MonadIO m, ToJSString namespaceURI, ToJSString localName,
-              ToJSString value) =>
-               XSLTProcessor ->
-                 Maybe namespaceURI -> Maybe localName -> Maybe value -> m ()
-setParameter self namespaceURI localName value
-  = liftIO
-      (js_setParameter self (toOptionalJSString namespaceURI)
-         (toOptionalJSString localName)
-         (toOptionalJSString value))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getParameter\"]($2, $3); })"
-        js_getParameter ::
-        XSLTProcessor ->
-          Optional JSString -> Optional JSString -> IO (Nullable JSString)
+foreign import javascript safe "(($1, $2) => { return $1[\"importStylesheet\"]($2); })"
+        js_importStylesheet :: XSLTProcessor -> Node -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/importStylesheet MDN XSLTProcessor.importStylesheet documentation>
+importStylesheet :: (MonadDOM m, IsNode style) => XSLTProcessor -> style -> m ()
+importStylesheet self style = liftDOM (void ((js_importStylesheet (self) (Types.toNode style))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameter ::
-             (MonadIO m, ToJSString namespaceURI, ToJSString localName,
-              FromJSString result) =>
-               XSLTProcessor ->
-                 Maybe namespaceURI -> Maybe localName -> m (Maybe result)
-getParameter self namespaceURI localName
-  = liftIO
-      (fromMaybeJSString <$>
-         (js_getParameter self (toOptionalJSString namespaceURI)
-            (toOptionalJSString localName)))
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"removeParameter\"]($2, $3); })"
+        js_removeParameter :: XSLTProcessor -> JSString -> JSString -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/removeParameter MDN XSLTProcessor.removeParameter documentation>
+removeParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> m ()
+removeParameter self namespaceURI localName = liftDOM (void ((js_removeParameter (self) (toJSString namespaceURI) (toJSString localName))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameter_ ::
-              (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
-                XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()
-getParameter_ self namespaceURI localName
-  = liftIO
-      (void
-         (js_getParameter self (toOptionalJSString namespaceURI)
-            (toOptionalJSString localName)))
+foreign import javascript safe "(($1) => { return $1[\"reset\"](); })"
+        js_reset :: XSLTProcessor -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/reset MDN XSLTProcessor.reset documentation>
+reset :: (MonadDOM m) => XSLTProcessor -> m ()
+reset self = liftDOM (void ((js_reset (self))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameterUnsafe ::
-                   (MonadIO m, ToJSString namespaceURI, ToJSString localName,
-                    HasCallStack, FromJSString result) =>
-                     XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m result
-getParameterUnsafe self namespaceURI localName
-  = liftIO
-      ((fromMaybeJSString <$>
-          (js_getParameter self (toOptionalJSString namespaceURI)
-             (toOptionalJSString localName)))
-         >>= maybe (Prelude.error "Nothing to return") return)
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setParameter\"]($2, $3, $4); })"
+        js_setParameter :: XSLTProcessor -> JSString -> JSString -> JSVal -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/setParameter MDN XSLTProcessor.setParameter documentation>
+setParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> JSVal -> m ()
+setParameter self namespaceURI localName value = liftDOM (void ((js_setParameter (self) (toJSString namespaceURI) (toJSString localName) (value))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameterUnchecked ::
-                      (MonadIO m, ToJSString namespaceURI, ToJSString localName,
-                       FromJSString result) =>
-                        XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m result
-getParameterUnchecked self namespaceURI localName
-  = liftIO
-      (fromJust . fromMaybeJSString <$>
-         (js_getParameter self (toOptionalJSString namespaceURI)
-            (toOptionalJSString localName)))
- 
-foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"removeParameter\"]($2, $3); })"
-        js_removeParameter ::
-        XSLTProcessor -> Optional JSString -> Optional JSString -> IO ()
+foreign import javascript safe "(($1, $2) => { return $1[\"transformToDocument\"]($2); })"
+        js_transformToDocument :: XSLTProcessor -> Node -> IO Document
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/transformToDocument MDN XSLTProcessor.transformToDocument documentation>
+transformToDocument :: (MonadDOM m, IsNode source) => XSLTProcessor -> source -> m Document
+transformToDocument self source = liftDOM ((js_transformToDocument (self) (Types.toNode source)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.removeParameter Mozilla XSLTProcessor.removeParameter documentation> 
-removeParameter ::
-                (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
-                  XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()
-removeParameter self namespaceURI localName
-  = liftIO
-      (js_removeParameter self (toOptionalJSString namespaceURI)
-         (toOptionalJSString localName))
- 
-foreign import javascript unsafe "(($1) => { return $1[\"clearParameters\"](); })"
-        js_clearParameters :: XSLTProcessor -> IO ()
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/transformToDocument MDN XSLTProcessor.transformToDocument documentation>
+transformToDocument_ :: (MonadDOM m, IsNode source) => XSLTProcessor -> source -> m ()
+transformToDocument_ self source = liftDOM (void ((js_transformToDocument (self) (Types.toNode source))))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.clearParameters Mozilla XSLTProcessor.clearParameters documentation> 
-clearParameters :: (MonadIO m) => XSLTProcessor -> m ()
-clearParameters self = liftIO (js_clearParameters self)
- 
-foreign import javascript unsafe "(($1) => { return $1[\"reset\"](); })" js_reset ::
-        XSLTProcessor -> IO ()
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"transformToFragment\"]($2, $3); })"
+        js_transformToFragment :: XSLTProcessor -> Node -> Document -> IO DocumentFragment
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/transformToFragment MDN XSLTProcessor.transformToFragment documentation>
+transformToFragment :: (MonadDOM m, IsNode source, IsDocument output) => XSLTProcessor -> source -> output -> m DocumentFragment
+transformToFragment self source output = liftDOM ((js_transformToFragment (self) (Types.toNode source) (Types.toDocument output)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.reset Mozilla XSLTProcessor.reset documentation> 
-reset :: (MonadIO m) => XSLTProcessor -> m ()
-reset self = liftIO (js_reset self)
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/transformToFragment MDN XSLTProcessor.transformToFragment documentation>
+transformToFragment_ :: (MonadDOM m, IsNode source, IsDocument output) => XSLTProcessor -> source -> output -> m ()
+transformToFragment_ self source output = liftDOM (void ((js_transformToFragment (self) (Types.toNode source) (Types.toDocument output))))
diff --git a/src/GHCJS/DOM/JSFFI/Geolocation.hs b/src/GHCJS/DOM/JSFFI/Geolocation.hs
--- a/src/GHCJS/DOM/JSFFI/Geolocation.hs
+++ b/src/GHCJS/DOM/JSFFI/Geolocation.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
-             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
 module GHCJS.DOM.JSFFI.Geolocation (
     module Generated
   , js_getCurrentPosition
@@ -7,32 +6,27 @@
   , getCurrentPosition
 ) where
 
-import GHC.Base (IO(..))
-import GHC.Prim (RealWorld, State#, ByteArray#)
-
 import Control.Monad.IO.Class (MonadIO(..))
 
-#if __GHCJS__
-import GHCJS.Prim (JSVal(..))
-#elif defined(javascript_HOST_ARCH)
-import GHC.JS.Prim (JSVal(..))
-#endif
 import GHCJS.DOM.Types
+import GHCJS.Foreign (isNull)
 
-import GHCJS.DOM.JSFFI.PositionError (throwPositionException)
+import GHCJS.DOM.JSFFI.GeolocationPositionError (throwPositionException)
 import GHCJS.DOM.JSFFI.Generated.Geolocation as Generated hiding (js_getCurrentPosition, getCurrentPosition)
 
+-- | Calls back with (error, null) or (null, position).
 foreign import javascript interruptible
-        "$1[\"getCurrentPosition\"](function(pos) { $c(true, pos); }, function(e) { $c(false, e); }, $2);" js_getCurrentPosition ::
-        Geolocation -> Nullable PositionOptions -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
+        "(($1, $2, $c) => { $1[\"getCurrentPosition\"](function(p) { $c(null, p); }, function(e) { $c(e, null); }, $2); })"
+        js_getCurrentPosition :: Geolocation -> JSVal -> IO (JSVal, JSVal)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
-getCurrentPosition' :: MonadIO m => Geolocation -> Maybe PositionOptions -> m (Either PositionError Geoposition)
-getCurrentPosition' self options = liftIO . IO $ \s# ->
-      case js_getCurrentPosition self (maybeToNullable options) s# of
-          (# s2#, False, error #) -> (# s2#, Left  (PositionError (JSVal error)) #)
-          (# s2#, True,  pos   #) -> (# s2#, Right (Geoposition   (JSVal pos  )) #)
+-- | Blocking version of
+-- <https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition Geolocation.getCurrentPosition>.
+getCurrentPosition' :: MonadIO m => Geolocation -> Maybe PositionOptions -> m (Either GeolocationPositionError GeolocationPosition)
+getCurrentPosition' self options = liftIO $ do
+    opts <- toJSVal options
+    (e, pos) <- js_getCurrentPosition self opts
+    return $ if isNull e then Right (GeolocationPosition pos) else Left (GeolocationPositionError e)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
-getCurrentPosition :: MonadIO m => Geolocation -> Maybe PositionOptions -> m Geoposition
+-- | Like 'getCurrentPosition'' but throws 'PositionException' on error.
+getCurrentPosition :: MonadIO m => Geolocation -> Maybe PositionOptions -> m GeolocationPosition
 getCurrentPosition self options = getCurrentPosition' self options >>= either throwPositionException return
diff --git a/src/GHCJS/DOM/JSFFI/GeolocationPositionError.hs b/src/GHCJS/DOM/JSFFI/GeolocationPositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/GeolocationPositionError.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE RecordWildCards #-}
+module GHCJS.DOM.JSFFI.GeolocationPositionError (
+    module Generated
+  , PositionErrorCode(..)
+  , PositionException(..)
+  , throwPositionException
+) where
+
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.DOM.Types (GeolocationPositionError)
+import GHCJS.DOM.JSFFI.Generated.GeolocationPositionError as Generated
+
+data PositionErrorCode = PositionPermissionDenied | PositionUnavailable | PositionTimeout deriving (Show, Eq, Enum)
+data PositionException = PositionException {
+        positionErrorCode    :: PositionErrorCode,
+        positionErrorMessage :: String } deriving (Show, Eq)
+
+instance Exception PositionException
+
+throwPositionException :: MonadIO m => GeolocationPositionError -> m a
+throwPositionException error = do
+    positionErrorCode    <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
+    positionErrorMessage <- getMessage error
+    liftIO $ throwIO (PositionException{..})
diff --git a/src/GHCJS/DOM/JSFFI/Navigator.hs b/src/GHCJS/DOM/JSFFI/Navigator.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Navigator.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
-             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
-module GHCJS.DOM.JSFFI.Navigator (
-    module Generated
-  , js_getUserMedia
-  , getUserMedia
-) where
-
-import GHC.Base (IO(..))
-import GHC.Prim (RealWorld, State#, ByteArray#)
-
-import Control.Monad.IO.Class (MonadIO(..))
-
-#if __GHCJS__
-import GHCJS.Prim (JSVal(..))
-#elif defined(javascript_HOST_ARCH)
-import GHC.JS.Prim (JSVal(..))
-#endif
-import GHCJS.DOM.Types
-
-import GHCJS.DOM.JSFFI.NavigatorUserMediaError (throwUserMediaException)
-import GHCJS.DOM.JSFFI.Generated.Navigator as Generated hiding (js_getUserMedia, getUserMedia)
-
-foreign import javascript interruptible
-        "$1[\"webkitGetUserMedia\"]($2, function(ms) { $c(true, ms); }, function(e) { $c(false, e); });" js_getUserMedia ::
-        Navigator -> Nullable Dictionary -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitGetUserMedia Mozilla Navigator.webkitGetUserMedia documentation>
-getUserMedia' :: MonadIO m => Navigator -> Maybe Dictionary -> m (Either NavigatorUserMediaError MediaStream)
-getUserMedia' self options = liftIO . IO $ \s# ->
-      case js_getUserMedia self (maybeToNullable options) s# of
-          (# s2#, False, error #) -> (# s2#, Left  (NavigatorUserMediaError (JSVal error)) #)
-          (# s2#, True,  ms    #) -> (# s2#, Right (MediaStream             (JSVal ms  )) #)
-
-getUserMedia :: MonadIO m => Navigator -> Maybe Dictionary -> m MediaStream
-getUserMedia self options = getUserMedia' self options >>= either throwUserMediaException return
diff --git a/src/GHCJS/DOM/JSFFI/NavigatorUserMediaError.hs b/src/GHCJS/DOM/JSFFI/NavigatorUserMediaError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/NavigatorUserMediaError.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE RecordWildCards #-}
-module GHCJS.DOM.JSFFI.NavigatorUserMediaError (
-    module Generated
-  , UserMediaException(..)
-  , throwUserMediaException
-) where
-
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import GHCJS.DOM.JSFFI.DOMError (getName)
-import GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaError as Generated
-
-data UserMediaException = UserMediaException {
-        userMediaErrorName           :: String,
-        userMediaErrorConstraintName :: String } deriving (Show, Eq)
-
-instance Exception UserMediaException
-
-throwUserMediaException :: MonadIO m => NavigatorUserMediaError -> m a
-throwUserMediaException error = do
-    userMediaErrorName           <- getName           error
-    userMediaErrorConstraintName <- getConstraintName error
-    liftIO $ throwIO (UserMediaException{..})
-
-
-
diff --git a/src/GHCJS/DOM/JSFFI/PositionError.hs b/src/GHCJS/DOM/JSFFI/PositionError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/PositionError.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE RecordWildCards #-}
-module GHCJS.DOM.JSFFI.PositionError (
-    module Generated
-  , PositionErrorCode(..)
-  , PositionException(..)
-  , throwPositionException
-) where
-
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import GHCJS.DOM.JSFFI.Generated.PositionError as Generated
-
-data PositionErrorCode = PositionPermissionDenied | PositionUnavailable | PositionTimeout deriving (Show, Eq, Enum)
-data PositionException = PositionException {
-        positionErrorCode    :: PositionErrorCode,
-        positionErrorMessage :: String } deriving (Show, Eq)
-
-instance Exception PositionException
-
-throwPositionException :: MonadIO m => PositionError -> m a
-throwPositionException error = do
-    positionErrorCode    <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
-    positionErrorMessage <- getMessage error
-    liftIO $ throwIO (PositionException{..})
-
diff --git a/src/GHCJS/DOM/JSFFI/RTCPeerConnectionError.hs b/src/GHCJS/DOM/JSFFI/RTCPeerConnectionError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/RTCPeerConnectionError.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-module GHCJS.DOM.JSFFI.RTCPeerConnectionError (
-
-) where
-
-
-
diff --git a/src/GHCJS/DOM/JSFFI/SQLError.hs b/src/GHCJS/DOM/JSFFI/SQLError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/SQLError.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE RecordWildCards #-}
-module GHCJS.DOM.JSFFI.SQLError (
-    module Generated
-  , SQLErrorCode(..)
-  , SQLException(..)
-  , throwSQLException
-) where
-
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import GHCJS.DOM.JSFFI.Generated.SQLError as Generated
-
-data SQLErrorCode = SQLErrorUnknown
-                  | SQLErrorDatabase
-                  | SQLErrorVersion
-                  | SQLErrorTooLarge
-                  | SQLErrorQuota
-                  | SQLErrorSyntax
-                  | SQLErrorConstraint
-                  | SQLErrorTimeout
-                  deriving (Show, Eq, Enum)
-data SQLException = SQLException { sqlErrorCode :: SQLErrorCode, sqlErrorMessage :: String } deriving (Show, Eq)
-
-instance Exception SQLException
-
-throwSQLException :: MonadIO m => SQLError -> m a
-throwSQLException error = do
-    sqlErrorCode <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
-    sqlErrorMessage <- getMessage error
-    liftIO $ throwIO (SQLException{..})
-
diff --git a/src/GHCJS/DOM/JSFFI/SQLTransaction.hs b/src/GHCJS/DOM/JSFFI/SQLTransaction.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/SQLTransaction.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
-             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
-module GHCJS.DOM.JSFFI.SQLTransaction (
-    module Generated
-  , js_executeSql
-  , executeSql'
-  , executeSql
-  , executeSql_
-) where
-
-import GHC.Base (IO(..))
-import GHC.Prim (RealWorld, State#, ByteArray#)
-
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-
-#if __GHCJS__
-import GHCJS.Prim (JSVal(..))
-#elif defined(javascript_HOST_ARCH)
-import GHC.JS.Prim (JSVal(..))
-#endif
-import GHCJS.Types (JSString)
-import GHCJS.DOM.Types
-
-import GHCJS.DOM.JSFFI.SQLError (throwSQLException)
-import GHCJS.DOM.JSFFI.Generated.SQLTransaction as Generated hiding (js_executeSql, executeSql)
-
-foreign import javascript interruptible
-        "$1[\"executeSql\"]($2, $3, function(tx, rs) { $c(true, rs); }, function(tx, e) { $c(false, e); });"
-        js_executeSql :: SQLTransaction -> JSString -> Nullable ObjectArray -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
-
-executeSql' :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
-              SQLTransaction -> sqlStatement -> Maybe arguments -> m (Either SQLError SQLResultSet)
-executeSql' self sqlStatement arguments = liftIO $ IO $ \s# ->
-      case js_executeSql self (toJSString sqlStatement) (maybeToNullable . fmap toObjectArray $ arguments) s# of
-          (# s2#, False, error #) -> (# s2#, Left  (SQLError     (JSVal error)) #)
-          (# s2#, True,  rs    #) -> (# s2#, Right (SQLResultSet (JSVal rs   )) #)
-
-executeSql :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
-              SQLTransaction -> sqlStatement -> Maybe arguments -> m SQLResultSet
-executeSql self sqlStatement arguments = executeSql' self sqlStatement arguments >>= either throwSQLException return
-
-executeSql_ :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
-              SQLTransaction -> sqlStatement -> Maybe arguments -> m ()
-executeSql_ self sqlStatement arguments = void $ executeSql self sqlStatement arguments
diff --git a/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs b/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs
+++ /dev/null
@@ -1,108 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
-module GHCJS.DOM.JSFFI.SpeechGrammar
-       (newSpeechGrammarList, addFromURI, addFromString,
-        getLength, getSrc, setSrc,
-        getWeight, setWeight, item, item_,
-        SpeechGrammar(..), gTypeSpeechGrammar,
-        SpeechGrammarList(..), gTypeSpeechGrammarList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
-foreign import javascript unsafe
-        "new window[\"webkitSpeechGrammarList\"]()"
-        js_newSpeechGrammarList ::
-        IO SpeechGrammarList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList Mozilla SpeechGrammarList documentation>
-newSpeechGrammarList :: (MonadIO m) => m SpeechGrammarList
-newSpeechGrammarList = liftIO (js_newSpeechGrammarList)
-
-foreign import javascript unsafe
-        "$1[\"addFromURI\"]($2,\n$3)"
-        js_speechGrammarListAddFromURI ::
-        SpeechGrammarList -> JSString
-        -> Optional Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.addFromURI Mozilla SpeechGrammarList.addFromURI documentation>
-addFromURI :: (MonadIO m, ToJSString grammarURI)
-  => SpeechGrammarList -> grammarURI -> Maybe Double -> m ()
-addFromURI self grammarURI weight
-  = liftIO (js_speechGrammarListAddFromURI self
-            (toJSString grammarURI) (maybeToOptional weight))
-
-foreign import javascript unsafe
-        "$1[\"addFromString\"]($2,\n$3)"
-        js_speechGrammarListAddFromString ::
-        SpeechGrammarList -> JSString
-        -> Optional Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.addFromString Mozilla SpeechGrammarList.addFromString documentation>
-addFromString :: (MonadIO m, ToJSString grammarStr)
-  => SpeechGrammarList -> grammarStr -> Maybe Double -> m ()
-addFromString self grammarStr weight
-  = liftIO (js_speechGrammarListAddFromString self
-            (toJSString grammarStr) (maybeToOptional weight))
-
-foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
-        SpeechGrammarList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.length Mozilla SpeechGrammarList.length documentation>
-getLength :: (MonadIO m) => SpeechGrammarList -> m Word
-getLength self = liftIO (js_getLength self)
-
-foreign import javascript unsafe "$1[$2]" js_item ::
-        SpeechGrammarList -> Word -> IO SpeechGrammar
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.item Mozilla SpeechGrammarList.item documentation>
-item :: (MonadIO m) => SpeechGrammarList -> Word -> m SpeechGrammar
-item self index = liftIO (js_item self index)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.item Mozilla SpeechGrammarList.item documentation>
-item_ :: (MonadIO m) => SpeechGrammarList -> Word -> m ()
-item_ self index = liftIO (void (js_item self index))
-
-foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
-        SpeechGrammar -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.src Mozilla SpeechGrammar.src documentation>
-setSrc ::
-       (MonadIO m, ToJSString val) => SpeechGrammar -> val -> m ()
-setSrc self val = liftIO (js_setSrc self (toJSString val))
-
-foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
-        SpeechGrammar -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.src Mozilla SpeechGrammar.src documentation>
-getSrc ::
-       (MonadIO m, FromJSString result) => SpeechGrammar -> m result
-getSrc self = liftIO (fromJSString <$> (js_getSrc self))
-
-foreign import javascript unsafe "$1[\"weight\"] = $2;"
-        js_setWeight :: SpeechGrammar -> Double -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.weight Mozilla SpeechGrammar.weight documentation>
-setWeight :: (MonadIO m) => SpeechGrammar -> Double -> m ()
-setWeight self val = liftIO (js_setWeight self val)
-
-foreign import javascript unsafe "$1[\"weight\"]" js_getWeight ::
-        SpeechGrammar -> IO Double
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.weight Mozilla SpeechGrammar.weight documentation>
-getWeight ::
-          (MonadIO m) => SpeechGrammar -> m Double
-getWeight self = liftIO (js_getWeight self)
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs
+++ /dev/null
@@ -1,225 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
-module GHCJS.DOM.JSFFI.SpeechRecognition
-       (newSpeechRecognition, getMaxAlternatives, setMaxAlternatives,
-        getGrammars, setGrammars, getLang, setLang,
-        getInterimResults, setInterimResults,
-        getContinuous, setContinuous,
-        audiostart, audioend, end, error, nomatch,
-        result, soundstart, soundend, speechstart, speechend, start,
-        abort, startRecognition, stop,
-        SpeechRecognition(..), gTypeSpeechRecognition)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
-foreign import javascript unsafe
-        "new window[\"webkitSpeechRecognition\"]()"
-        js_newSpeechRecognition :: IO SpeechRecognition
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition Mozilla SpeechRecognition documentation>
-newSpeechRecognition :: (MonadIO m) => m SpeechRecognition
-newSpeechRecognition = liftIO (js_newSpeechRecognition)
-
-foreign import javascript unsafe
-        "$1[\"maxAlternatives\"]"
-        js_speechRecognitionGetMaxAlternatives ::
-        SpeechRecognition -> IO (Word)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.maxAlternatives Mozilla SpeechRecognition.maxAlternatives documentation>
-getMaxAlternatives :: (MonadIO m)
-  => SpeechRecognition -> m Word
-getMaxAlternatives self
-  = liftIO (js_speechRecognitionGetMaxAlternatives self)
-
-foreign import javascript unsafe
-        "$1[\"maxAlternatives\"] = $2;"
-        js_speechRecognitionMaxAlternatives ::
-        SpeechRecognition -> Word -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.maxAlternatives Mozilla SpeechRecognition.maxAlternatives documentation>
-setMaxAlternatives :: (MonadIO m)
-  => SpeechRecognition -> Word -> m ()
-setMaxAlternatives self maxAlt
-  = liftIO (js_speechRecognitionMaxAlternatives self maxAlt)
-
-foreign import javascript unsafe
-        "$1[\"grammars\"]"
-        js_speechRecognitionGetGrammars ::
-        SpeechRecognition -> IO SpeechGrammarList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.grammars Mozilla SpeechRecognition.grammars documentation>
-getGrammars :: (MonadIO m)
-  => SpeechRecognition -> m (SpeechGrammarList)
-getGrammars self
-  = liftIO (js_speechRecognitionGetGrammars self)
-
-foreign import javascript unsafe
-        "$1[\"grammars\"] = $2;"
-        js_speechRecognitionSetGrammars ::
-        SpeechRecognition -> SpeechGrammarList -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.grammars Mozilla SpeechRecognition.grammars documentation>
-setGrammars :: (MonadIO m)
-  => SpeechRecognition -> SpeechGrammarList -> m ()
-setGrammars self grammars
-  = liftIO (js_speechRecognitionSetGrammars self grammars)
-
-foreign import javascript unsafe
-        "$1[\"lang\"]"
-        js_speechRecognitionGetLang ::
-        SpeechRecognition -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.lang Mozilla SpeechRecognition.lang documentation>
-getLang :: (MonadIO m, FromJSString result)
-  => SpeechRecognition -> m (result)
-getLang self
-  = liftIO (fromJSString <$> (js_speechRecognitionGetLang self))
-
-foreign import javascript unsafe
-        "$1[\"lang\"] = $2;"
-        js_speechRecognitionSetLang ::
-        SpeechRecognition -> JSString -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.lang Mozilla SpeechRecognition.lang documentation>
-setLang :: (MonadIO m, ToJSString lang)
-  => SpeechRecognition -> lang -> m ()
-setLang self lang
-  = liftIO (js_speechRecognitionSetLang self (toJSString lang))
-
-foreign import javascript unsafe
-        "$1[\"interimResults\"]"
-        js_speechRecognitionGetInterimResults ::
-        SpeechRecognition -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.interimResults Mozilla SpeechRecognition.interimResults documentation>
-getInterimResults :: (MonadIO m)
-  => SpeechRecognition -> m (Bool)
-getInterimResults self
-  = liftIO (js_speechRecognitionGetInterimResults self)
-
-foreign import javascript unsafe
-        "$1[\"interimResults\"] = $2;"
-        js_speechRecognitionSetInterimResults ::
-        SpeechRecognition -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.interimResults Mozilla SpeechRecognition.interimResults documentation>
-setInterimResults :: (MonadIO m)
-  => SpeechRecognition -> Bool -> m ()
-setInterimResults self val
-  = liftIO (js_speechRecognitionSetInterimResults self val)
-
-foreign import javascript unsafe
-        "$1[\"continuous\"]"
-        js_speechRecognitionGetContinuous ::
-        SpeechRecognition -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.continuous Mozilla SpeechRecognition.continuous documentation>
-getContinuous :: (MonadIO m)
-  => SpeechRecognition -> m (Bool)
-getContinuous self
-  = liftIO (js_speechRecognitionGetContinuous self)
-
-foreign import javascript unsafe
-        "$1[\"continuous\"] = $2;"
-        js_speechRecognitionSetContinuous ::
-        SpeechRecognition -> Bool -> IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.continuous Mozilla SpeechRecognition.continuous documentation>
-setContinuous :: (MonadIO m)
-  => SpeechRecognition -> Bool -> m ()
-setContinuous self val
-  = liftIO (js_speechRecognitionSetContinuous self val)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onaudiostart Mozilla SpeechRecognition.onaudiostart documentation>
-audiostart :: EventName SpeechRecognition Event
-audiostart = unsafeEventName (toJSString "audiostart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onaudioend Mozilla SpeechRecognition.onaudioend documentation>
-audioend :: EventName SpeechRecognition Event
-audioend = unsafeEventName (toJSString "audioend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onend Mozilla SpeechRecognition.onend documentation>
-end :: EventName SpeechRecognition Event
-end = unsafeEventName (toJSString "end")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onerror Mozilla SpeechRecognition.onerror documentation>
-error :: EventName SpeechRecognition SpeechRecognitionError
-error = unsafeEventName (toJSString "error")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onnomatch Mozilla SpeechRecognition.onnomatch documentation>
-nomatch :: EventName SpeechRecognition SpeechRecognitionEvent
-nomatch = unsafeEventName (toJSString "nomatch")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onresult Mozilla SpeechRecognition.onresult documentation>
-result :: EventName SpeechRecognition SpeechRecognitionEvent
-result = unsafeEventName (toJSString "result")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onsoundstart Mozilla SpeechRecognition.onsoundstart documentation>
-soundstart :: EventName SpeechRecognition Event
-soundstart = unsafeEventName (toJSString "soundstart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onsoundend Mozilla SpeechRecognition.onsoundend documentation>
-soundend :: EventName SpeechRecognition Event
-soundend = unsafeEventName (toJSString "soundend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onspeechstart Mozilla SpeechRecognition.onspeechstart documentation>
-speechstart :: EventName SpeechRecognition Event
-speechstart = unsafeEventName (toJSString "speechstart")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onspeechend Mozilla SpeechRecognition.onspeechend documentation>
-speechend :: EventName SpeechRecognition Event
-speechend = unsafeEventName (toJSString "speechend")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onstart Mozilla SpeechRecognition.onstart documentation>
-start :: EventName SpeechRecognition Event
-start = unsafeEventName (toJSString "start")
-
-foreign import javascript unsafe
-        "$1[\"abort\"]()"
-        js_speechRecognitionAbort ::
-        SpeechRecognition ->  IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.abort Mozilla SpeechRecognition.abort documentation>
-abort :: (MonadIO m)
-  => SpeechRecognition -> m ()
-abort self
-  = liftIO (js_speechRecognitionAbort self)
-
-foreign import javascript unsafe
-        "$1[\"start\"]()"
-        js_speechRecognitionStart ::
-        SpeechRecognition ->  IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.start Mozilla SpeechRecognition.start documentation>
-startRecognition :: (MonadIO m)
-  => SpeechRecognition -> m ()
-startRecognition self
-  = liftIO (js_speechRecognitionStart self)
-
-foreign import javascript unsafe
-        "$1[\"stop\"]()"
-        js_speechRecognitionStop ::
-        SpeechRecognition ->  IO ()
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.stop Mozilla SpeechRecognition.stop documentation>
-stop :: (MonadIO m)
-  => SpeechRecognition -> m ()
-stop self
-  = liftIO (js_speechRecognitionStop self)
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
-module GHCJS.DOM.JSFFI.SpeechRecognitionError
-       (getError, getMessage,
-        SpeechRecognitionError(..), gTypeSpeechRecognitionError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
-foreign import javascript unsafe "$1[\"error\"]" js_getSpeechRecognitionError ::
-        SpeechRecognitionError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError.error Mozilla SpeechRecognitionError.error documentation>
-getError :: (MonadIO m, FromJSString result)
-  => SpeechRecognitionError -> m (result)
-getError self
-  = liftIO (fromJSString <$> (js_getSpeechRecognitionError self))
-
-foreign import javascript unsafe "$1[\"message\"]" js_getSpeechRecognitionErrorMessage ::
-        SpeechRecognitionError -> IO JSString
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError.message Mozilla SpeechRecognitionError.message documentation>
-getMessage :: (MonadIO m, FromJSString result)
-  => SpeechRecognitionError -> m (result)
-getMessage self
-  = liftIO (fromJSString <$> (js_getSpeechRecognitionErrorMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs
+++ /dev/null
@@ -1,104 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE JavaScriptFFI #-}
-module GHCJS.DOM.JSFFI.SpeechRecognitionEvent
-       (getResultList, getResultListLength, getResultLength,
-        getResult, getAlternative, getTranscript, getConfidence,
-        getResultIsFinal, getBestAlternative,
-        SpeechRecognitionResultList(..), gTypeSpeechRecognitionResultList,
-        SpeechRecognitionResult(..), gTypeSpeechRecognitionResult,
-        SpeechRecognitionAlternative(..), gTypeSpeechRecognitionAlternative,
-        SpeechRecognitionEvent(..), gTypeSpeechRecognitionEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import GHCJS.Types (JSVal(..), JSString)
-import GHCJS.Foreign (jsNull, jsUndefined)
-import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
-import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
-import Control.Monad (void)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import Data.Maybe (fromJust)
-import Data.Traversable (mapM)
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
-import GHCJS.DOM.JSFFI.Generated.Enums
-
-foreign import javascript unsafe "$1[\"results\"]" js_getSpeechRecognitionResultList ::
-        SpeechRecognitionEvent -> IO SpeechRecognitionResultList
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionEvent.results Mozilla SpeechRecognitionEvent.results documentation>
-getResultList :: (MonadIO m)
-  => SpeechRecognitionEvent -> m SpeechRecognitionResultList
-getResultList self
-  = liftIO (js_getSpeechRecognitionResultList self)
-
-foreign import javascript unsafe "$1[\"isFinal\"]" js_getIsFinal ::
-        SpeechRecognitionResult -> IO Bool
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.isFinal Mozilla SpeechRecognitionResult.isFinal documentation>
-getResultIsFinal :: (MonadIO m) => SpeechRecognitionResult -> m Bool
-getResultIsFinal self = liftIO (js_getIsFinal self)
-
-foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
-        SpeechRecognitionResult -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.length Mozilla SpeechRecognitionResult.length documentation>
-getResultLength :: (MonadIO m) => SpeechRecognitionResult -> m Word
-getResultLength self = liftIO (js_getLength self)
-
-foreign import javascript unsafe "$1[\"length\"]" js_getLength2 ::
-        SpeechRecognitionResultList -> IO Word
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList.length Mozilla SpeechRecognitionResultList.length documentation>
-getResultListLength :: (MonadIO m) => SpeechRecognitionResultList -> m Word
-getResultListLength self = liftIO (js_getLength2 self)
-
-foreign import javascript unsafe "$1[$2]" js_getSpeechRecognitionAlternative ::
-        SpeechRecognitionResult -> Word -> IO SpeechRecognitionAlternative
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.item Mozilla SpeechRecognitionResult.item documentation>
-getAlternative :: (MonadIO m) => SpeechRecognitionResult -> Word -> m SpeechRecognitionAlternative
-getAlternative self index = liftIO (js_getSpeechRecognitionAlternative self index)
-
-foreign import javascript unsafe "$1[$2]" js_getSpeechRecognitionResult ::
-        SpeechRecognitionResultList -> Word -> IO SpeechRecognitionResult
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList.item Mozilla SpeechRecognitionResultList.item documentation>
-getResult :: (MonadIO m) => SpeechRecognitionResultList -> Word -> m SpeechRecognitionResult
-getResult self index = liftIO (js_getSpeechRecognitionResult self index)
-
-foreign import javascript unsafe
-        "$1[\"transcript\"]"
-        js_getSpeechRecognitionAlternativeTranscript ::
-        SpeechRecognitionAlternative -> IO (JSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative.transcript Mozilla SpeechRecognitionAlternative.transcript documentation>
-getTranscript :: (MonadIO m)
-  => SpeechRecognitionAlternative -> m (JSString)
-getTranscript self
-  = liftIO (js_getSpeechRecognitionAlternativeTranscript self)
-
-foreign import javascript unsafe
-        "$1[\"confidence\"]"
-        js_getSpeechRecognitionAlternativeConfidence ::
-        SpeechRecognitionAlternative -> IO (Double)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative.confidence Mozilla SpeechRecognitionAlternative.confidence documentation>
-getConfidence :: (MonadIO m)
-  => SpeechRecognitionAlternative -> m (Double)
-getConfidence self
-  = liftIO (js_getSpeechRecognitionAlternativeConfidence self)
-
-foreign import javascript unsafe
-        "$1[\"results\"][0][0]"
-        js_getBestAlternative ::
-        SpeechRecognitionEvent -> IO SpeechRecognitionAlternative
-
-getBestAlternative :: (MonadIO m)
-  => SpeechRecognitionEvent -> m SpeechRecognitionAlternative
-getBestAlternative ev =
-  liftIO (js_getBestAlternative ev)
diff --git a/src/GHCJS/DOM/JSFFI/Window.hs b/src/GHCJS/DOM/JSFFI/Window.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/JSFFI/Window.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.JSFFI.Window (
-    module Generated
-  , js_openDatabase
-  , openDatabase
-) where
-
-import Control.Monad.IO.Class (MonadIO(..))
-
-import GHCJS.Types (JSString)
-import GHCJS.DOM.Types
-
-import GHCJS.DOM.JSFFI.Generated.Window as Generated hiding (js_openDatabase, openDatabase)
-
-foreign import javascript interruptible
-        "(function(db) { if(db) $c(db) })($1[\"openDatabase\"]($2, $3, $4, $5, function(d) { $c(d) }));" js_openDatabase ::
-        Window -> JSString -> JSString -> JSString -> Word -> IO Database
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation>
-openDatabase :: (MonadIO m, ToJSString name, ToJSString version, ToJSString displayName) =>
-                Window -> name -> version -> displayName -> Word -> m Database
-openDatabase self name version displayName estimatedSize = liftIO $
-    js_openDatabase
-        self
-        (toJSString name)
-        (toJSString version)
-        (toJSString displayName)
-        estimatedSize
diff --git a/src/GHCJS/DOM/Types.hs b/src/GHCJS/DOM/Types.hs
# file too large to diff: src/GHCJS/DOM/Types.hs
